From 3fa23bd56bbdb2fd20e55d063f5eb2789e0cd80f Mon Sep 17 00:00:00 2001 From: Snarling <84951833+Snarling@users.noreply.github.com> Date: Mon, 2 Oct 2023 19:42:34 -0400 Subject: [PATCH] 2.5.0 Update (#9) --- dist/main.bundle.js | 2 +- dist/main.bundle.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/main.bundle.js b/dist/main.bundle.js index 1a12072..a9f033d 100644 --- a/dist/main.bundle.js +++ b/dist/main.bundle.js @@ -1,3 +1,3 @@ /*! For license information please see main.bundle.js.LICENSE.txt */ -(()=>{var __webpack_modules__={19651:(e,t,n)=>{"use strict";n.d(t,{S:()=>l});var r=n(67294),a=n(30120),o=n(81138),i=n(51087),s=n(98699);function l(e){let{achievement:t,unlockedOn:n,cssFiltersUnlocked:l,cssFiltersLocked:c}=e;if(!t)return r.createElement(r.Fragment,null);const u=!!n,m=u?i.Z.theme.primary:i.Z.theme.secondarylight;let f="";return n&&(f=new Date(n).toLocaleString()),r.createElement(a.Z,{sx:{border:`1px solid ${i.Z.theme.well}`,mb:2}},r.createElement(a.Z,{sx:{display:"flex",flexDirection:"row",flexWrap:"wrap"}},r.createElement(s.K,{achievement:t,unlocked:u,size:"72px",colorFilters:u?l:c}),r.createElement(a.Z,{sx:{display:"flex",flexDirection:"column",justifyContent:"center",px:1}},r.createElement(o.Z,{variant:"h6",sx:{color:m}},t.Name),r.createElement(o.Z,{variant:"body2",sx:{maxWidth:"500px",color:m}},t.Description),u&&r.createElement(o.Z,{variant:"caption",sx:{fontSize:"12px",color:i.Z.theme.primarydark}},"Acquired on ",f))))}},98699:(e,t,n)=>{"use strict";n.d(t,{K:()=>i});var r=n(67294),a=n(30120),o=n(51087);function i(e){let{achievement:t,unlocked:n,colorFilters:i,size:s}=e;const[l,c]=(0,r.useState)(!1),u=n?o.Z.theme.primarydark:o.Z.theme.secondarydark;return t.Icon?r.createElement(a.Z,{sx:{border:`1px solid ${u}`,width:s,height:s,m:1,visibility:l?"visible":"hidden"}},r.createElement("img",{src:`dist/icons/achievements/${encodeURI(t.Icon)}.svg`,style:{filter:i,width:s,height:s},onLoad:()=>c(!0),alt:t.Name})):r.createElement(r.Fragment,null)}},2718:(e,t,n)=>{"use strict";n.d(t,{i:()=>h});var r=n(67294),a=n(30120),o=n(5821),i=n(21945),s=n(81138),l=n(51907),c=n(19651),u=n(51087),m=n(27313),f=n(93989);function h(e){let{achievements:t,playerAchievements:n}=e;const h=(0,m.P)(u.Z.theme.primary),d=(0,m.P)(u.Z.theme.secondary),p=t.map((e=>{var t;return{achievement:e,unlockedOn:null===(t=n.find((t=>t.ID===e.ID)))||void 0===t?void 0:t.unlockedOn}})).sort(((e,t)=>(t.unlockedOn??0)-(e.unlockedOn??0))),g=p.filter((e=>e.unlockedOn)),y=p.filter((e=>!e.unlockedOn&&e.achievement.Secret)),b=p.filter((e=>!e.unlockedOn&&!e.achievement.Secret&&e.achievement.Visible&&!e.achievement.Visible())),v=p.filter((e=>!g.map((e=>e.achievement.ID)).includes(e.achievement.ID))).filter((e=>!y.map((e=>e.achievement.ID)).includes(e.achievement.ID))).filter((e=>!b.map((e=>e.achievement.ID)).includes(e.achievement.ID)));return r.createElement(a.Z,{sx:{pr:18,my:2}},r.createElement(a.Z,{sx:{display:"flex",flexDirection:"column",flexWrap:"wrap"}},g.length>0&&r.createElement(o.Z,{defaultExpanded:!0,disableGutters:!0,square:!0},r.createElement(i.Z,null,r.createElement(s.Z,{variant:"h5",sx:{my:1}},"Acquired (",g.length,"/",p.length,")")),r.createElement(l.Z,{sx:{pt:2}},g.map((e=>r.createElement(c.S,{key:`unlocked_${e.achievement.ID}`,achievement:e.achievement,unlockedOn:e.unlockedOn,cssFiltersUnlocked:h,cssFiltersLocked:d}))))),v.length>0&&r.createElement(o.Z,{disableGutters:!0,square:!0},r.createElement(i.Z,null,r.createElement(s.Z,{variant:"h5",color:"secondary"},"Locked (",v.length," remaining)")),r.createElement(l.Z,{sx:{pt:2}},v.map((e=>r.createElement(c.S,{key:`locked_${e.achievement.ID}`,achievement:e.achievement,cssFiltersUnlocked:h,cssFiltersLocked:d}))))),b.length>0&&r.createElement(o.Z,{disableGutters:!0,square:!0},r.createElement(i.Z,null,r.createElement(s.Z,{variant:"h5",color:"secondary"},"Unavailable (",b.length," remaining)")),r.createElement(l.Z,null,r.createElement(s.Z,{sx:{mt:1}},b.length," additional achievements hidden behind content you don't have access to."))),y.length>0&&r.createElement(o.Z,{disableGutters:!0,square:!0},r.createElement(i.Z,null,r.createElement(s.Z,{variant:"h5",color:"secondary"},"Secret (",y.length," remaining)")),r.createElement(l.Z,null,r.createElement(s.Z,{color:"secondary",sx:{mt:1}},y.map((e=>r.createElement("span",{key:`secret_${e.achievement.ID}`},r.createElement(f.q,{content:e.achievement.ID}),r.createElement("br",null)))))))))}},30518:(e,t,n)=>{"use strict";n.d(t,{E:()=>L,v:()=>R});var r=n(33244),a=n(42115),o=n(71099),i=n(72938),s=n(52107),l=n(58427),c=n(59471),u=n(87811),m=n(93430),f=n(29538),h=n(55782),d=n(3853),p=n(49173),g=n(97467),y=n(40425),b=n(89916),v=n(52947),k=n(24815),w=n(69966),E=n(94337),S=n(97740),C=n(75350),x=n(21623);const N=w.EF;function M(){const e=(0,g.WT)(y.r.WorldDaemon);return e instanceof b.x&&(!!e.backdoorInstalled||null!==p.J5.bladeburner&&r.BlackOperationName.OperationDaedalus in p.J5.bladeburner.blackops)}function A(e){return p.J5.bitNodeN===e||p.J5.sourceFileLvl(e)>0}function T(){return p.J5.sourceFiles.size>0}const L={[r.FactionName.CyberSec.toUpperCase()]:{...N[r.FactionName.CyberSec.toUpperCase()],Icon:"CSEC",Condition:()=>p.J5.factions.includes(r.FactionName.CyberSec)},[r.FactionName.NiteSec.toUpperCase()]:{...N[r.FactionName.NiteSec.toUpperCase()],Icon:r.FactionName.NiteSec,Condition:()=>p.J5.factions.includes(r.FactionName.NiteSec)},THE_BLACK_HAND:{...N.THE_BLACK_HAND,Icon:"TBH",Condition:()=>p.J5.factions.includes(r.FactionName.TheBlackHand)},[r.FactionName.BitRunners.toUpperCase()]:{...N[r.FactionName.BitRunners.toUpperCase()],Icon:r.FactionName.BitRunners.toLowerCase(),Condition:()=>p.J5.factions.includes(r.FactionName.BitRunners)},[r.FactionName.Daedalus.toUpperCase()]:{...N[r.FactionName.Daedalus.toUpperCase()],Icon:r.FactionName.Daedalus.toLowerCase(),Condition:()=>p.J5.factions.includes(r.FactionName.Daedalus)},THE_COVENANT:{...N.THE_COVENANT,Icon:r.FactionName.TheCovenant.toLowerCase().replace(/ /g,""),Condition:()=>p.J5.factions.includes(r.FactionName.TheCovenant)},[r.FactionName.Illuminati.toUpperCase()]:{...N[r.FactionName.Illuminati.toUpperCase()],Icon:r.FactionName.Illuminati.toLowerCase(),Condition:()=>p.J5.factions.includes(r.FactionName.Illuminati)},"BRUTESSH.EXE":{...N["BRUTESSH.EXE"],Icon:"p0",Condition:()=>p.J5.getHomeComputer().programs.includes(r.CompletedProgramName.bruteSsh)},"FTPCRACK.EXE":{...N["FTPCRACK.EXE"],Icon:"p1",Condition:()=>p.J5.getHomeComputer().programs.includes(r.CompletedProgramName.ftpCrack)},"RELAYSMTP.EXE":{...N["RELAYSMTP.EXE"],Icon:"p2",Condition:()=>p.J5.getHomeComputer().programs.includes(r.CompletedProgramName.relaySmtp)},"HTTPWORM.EXE":{...N["HTTPWORM.EXE"],Icon:"p3",Condition:()=>p.J5.getHomeComputer().programs.includes(r.CompletedProgramName.httpWorm)},"SQLINJECT.EXE":{...N["SQLINJECT.EXE"],Icon:"p4",Condition:()=>p.J5.getHomeComputer().programs.includes(r.CompletedProgramName.sqlInject)},"FORMULAS.EXE":{...N["FORMULAS.EXE"],Icon:"formulas",Condition:()=>p.J5.getHomeComputer().programs.includes(r.CompletedProgramName.formulas)},...function(){const e={};for(let t=1;t<=12;t++){const n=`SF${t}.1`;e[n]={...N[n],Icon:n,Visible:T,Condition:()=>p.J5.sourceFileLvl(t)>=1}}return e}(),MONEY_1Q:{...N.MONEY_1Q,Icon:"$1Q",Condition:()=>p.J5.money>=1e18},MONEY_M1B:{...N.MONEY_M1B,Icon:"-1b",Secret:!0,Condition:()=>p.J5.money<=-1e9},INSTALL_1:{...N.INSTALL_1,Icon:"install",Condition:()=>p.J5.augmentations.length>=1},INSTALL_100:{...N.INSTALL_100,Icon:"install_100",Condition:()=>p.J5.augmentations.length>=100},QUEUE_40:{...N.QUEUE_40,Icon:"queue40",Condition:()=>p.J5.queuedAugmentations.length>=40},HACKING_100000:{...N.HACKING_100000,Icon:"hack100000",Condition:()=>p.J5.skills.hacking>=1e5},COMBAT_3000:{...N.COMBAT_3000,Icon:"combat3000",Condition:()=>p.J5.skills.strength>=3e3&&p.J5.skills.defense>=3e3&&p.J5.skills.dexterity>=3e3&&p.J5.skills.agility>=3e3},NEUROFLUX_255:{...N.NEUROFLUX_255,Icon:"nf255",Condition:()=>p.J5.augmentations.some((e=>e.name===r.AugmentationName.NeuroFluxGovernor&&e.level>=255))},NS2:{...N.NS2,Icon:"ns2",Condition:()=>[...p.J5.getHomeComputer().scripts.values()].some((e=>e.filename.endsWith(".js")))},FROZE:{...N.FROZE,Icon:"forze",Condition:()=>location.href.includes("noScripts")},RUNNING_SCRIPTS_1000:{...N.RUNNING_SCRIPTS_1000,Icon:"run1000",Condition:()=>C.R.size>=1e3},DRAIN_SERVER:{...N.DRAIN_SERVER,Icon:"drain",Condition:()=>{for(const e of(0,g.XX)())if(e instanceof b.x&&e.moneyMax>0&&0===e.moneyAvailable)return!0;return!1}},MAX_RAM:{...N.MAX_RAM,Icon:"maxram",Condition:()=>p.J5.getHomeComputer().maxRam===i.t.HomeComputerMaxRam},MAX_CORES:{...N.MAX_CORES,Icon:"maxcores",Condition:()=>8===p.J5.getHomeComputer().cpuCores},SCRIPTS_30:{...N.SCRIPTS_30,Icon:"folders",Condition:()=>p.J5.getHomeComputer().scripts.size>=30},KARMA_1000000:{...N.KARMA_1000000,Icon:"karma",Secret:!0,Condition:()=>p.J5.karma<=-1e6},STOCK_1q:{...N.STOCK_1q,Icon:"$1Q",Condition:()=>p.J5.moneySourceB.stock>=1e15},DISCOUNT:{...N.DISCOUNT,Icon:"discount",Condition:()=>{const e=(0,g.WT)("powerhouse-fitness");return e instanceof b.x&&e.backdoorInstalled}},SCRIPT_32GB:{...N.SCRIPT_32GB,Icon:"bigcost",Condition:()=>[...p.J5.getHomeComputer().scripts.values()].some((e=>(e.ramUsage??0)>=32))},FIRST_HACKNET_NODE:{...N.FIRST_HACKNET_NODE,Icon:"node",Condition:()=>!(0,f.kw)()&&p.J5.hacknetNodes.length>0},"30_HACKNET_NODE":{...N["30_HACKNET_NODE"],Icon:"hacknet-all",Condition:()=>!(0,f.kw)()&&p.J5.hacknetNodes.length>=30},MAX_HACKNET_NODE:{...N.MAX_HACKNET_NODE,Icon:"hacknet-max",Condition:()=>{if((0,f.kw)())return!1;for(const e of p.J5.hacknetNodes){if(!(e instanceof h.Q))return!1;if(e.ram===m.dN.MaxRam&&e.cores===m.dN.MaxCores&&e.level===m.dN.MaxLevel)return!0}return!1}},HACKNET_NODE_10M:{...N.HACKNET_NODE_10M,Icon:"hacknet-10m",Condition:()=>!(0,f.kw)()&&p.J5.moneySourceB.hacknet>=1e7},REPUTATION_10M:{...N.REPUTATION_10M,Icon:"reputation",Condition:()=>Object.values(l.i).some((e=>e.playerReputation>=1e7))},DONATION:{...N.DONATION,Icon:"donation",Condition:()=>Object.values(l.i).some((e=>e.favor>=Math.floor(i.t.BaseFavorToDonate*S.dQ.RepToDonateToFaction)))},TRAVEL:{...N.TRAVEL,Icon:"TRAVEL",Condition:()=>p.J5.city!==r.CityName.Sector12},WORKOUT:{...N.WORKOUT,Icon:"WORKOUT",Condition:()=>(0,E.tG)(p.J5.currentWork)},TOR:{...N.TOR,Icon:"TOR",Condition:()=>p.J5.hasTorRouter()},HOSPITALIZED:{...N.HOSPITALIZED,Icon:"OUCH",Condition:()=>0!==p.J5.moneySourceB.hospitalization},GANG:{...N.GANG,Icon:"GANG",Visible:()=>A(2),Condition:()=>null!==p.J5.gang},FULL_GANG:{...N.FULL_GANG,Icon:"GANGMAX",Visible:()=>A(2),Condition:()=>null!==p.J5.gang&&p.J5.gang.members.length===u.m.MaximumGangMembers},GANG_TERRITORY:{...N.GANG_TERRITORY,Icon:"GANG100%",Visible:()=>A(2),Condition:()=>null!==p.J5.gang&&c.vS[p.J5.gang.facName].territory>=.999},GANG_MEMBER_POWER:{...N.GANG_MEMBER_POWER,Icon:"GANG10000",Visible:()=>A(2),Condition:()=>null!==p.J5.gang&&p.J5.gang.members.some((e=>e.hack>=1e4||e.str>=1e4||e.def>=1e4||e.dex>=1e4||e.agi>=1e4||e.cha>=1e4))},CORPORATION:{...N.CORPORATION,Icon:"CORP",Visible:()=>A(3),Condition:()=>null!==p.J5.corporation},CORPORATION_BRIBE:{...N.CORPORATION_BRIBE,Icon:"CORPLOBBY",Visible:()=>A(3),Condition:()=>!!p.J5.corporation&&p.J5.corporation.unlocks.has(r.CorpUnlockName.GovernmentPartnership)},CORPORATION_PROD_1000:{...N.CORPORATION_PROD_1000,Icon:"CORP1000",Visible:()=>A(3),Condition:()=>{if(!p.J5.corporation)return!1;for(const e of p.J5.corporation.divisions.values())if(e.productionMult>=1e3)return!0;return!1}},CORPORATION_EMPLOYEE_3000:{...N.CORPORATION_EMPLOYEE_3000,Icon:"CORPCITY",Visible:()=>A(3),Condition:()=>{if(!p.J5.corporation)return!1;for(const e of p.J5.corporation.divisions.values())if((0,x.R3)(e.offices).reduce(((e,t)=>e+t.numEmployees),0)>=3e3)return!0;return!1}},CORPORATION_REAL_ESTATE:{...N.CORPORATION_REAL_ESTATE,Icon:"CORPRE",Name:"Own the land",Description:"Expand to the Real Estate division.",Visible:()=>A(3),Condition:()=>{if(!p.J5.corporation)return!1;for(const e of p.J5.corporation.divisions.values())if(e.type===r.IndustryType.RealEstate)return!0;return!1}},INTELLIGENCE_255:{...N.INTELLIGENCE_255,Icon:"INT255",Visible:()=>A(5),Condition:()=>p.J5.skills.intelligence>=255},BLADEBURNER_DIVISION:{...N.BLADEBURNER_DIVISION,Icon:"BLADE",Visible:()=>A(6),Condition:()=>null!==p.J5.bladeburner},BLADEBURNER_OVERCLOCK:{...N.BLADEBURNER_OVERCLOCK,Icon:"BLADEOVERCLOCK",Visible:()=>A(6),Condition:()=>null!==p.J5.bladeburner&&p.J5.bladeburner.skills[a.x.Overclock]===o.n[a.x.Overclock].maxLvl},BLADEBURNER_UNSPENT_100000:{...N.BLADEBURNER_UNSPENT_100000,Icon:"BLADE100K",Visible:()=>A(6),Condition:()=>null!==p.J5.bladeburner&&p.J5.bladeburner.skillPoints>=1e5},"4S":{...N["4S"],Icon:"4S",Condition:()=>p.J5.has4SData},FIRST_HACKNET_SERVER:{...N.FIRST_HACKNET_SERVER,Icon:"HASHNET",Visible:()=>A(9),Condition:()=>(0,f.kw)()&&p.J5.hacknetNodes.length>0,AdditionalUnlock:[N.FIRST_HACKNET_NODE.ID]},ALL_HACKNET_SERVER:{...N.ALL_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>A(9),Condition:()=>(0,f.kw)()&&p.J5.hacknetNodes.length===m.B5.MaxServers,AdditionalUnlock:[N["30_HACKNET_NODE"].ID]},MAX_HACKNET_SERVER:{...N.MAX_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>A(9),Condition:()=>{if(!(0,f.kw)())return!1;for(const e of p.J5.hacknetNodes){if("string"!=typeof e)return!1;const t=(0,g.WT)(e);if(!(t instanceof d.u))return!1;if(t.maxRam===m.B5.MaxRam&&t.cores===m.B5.MaxCores&&t.level===m.B5.MaxLevel&&t.cache===m.B5.MaxCache)return!0}return!1},AdditionalUnlock:[N.MAX_HACKNET_NODE.ID]},HACKNET_SERVER_1B:{...N.HACKNET_SERVER_1B,Icon:"HASHNETMONEY",Visible:()=>A(9),Condition:()=>(0,f.kw)()&&p.J5.moneySourceB.hacknet>=1e9,AdditionalUnlock:[N.HACKNET_NODE_10M.ID]},MAX_CACHE:{...N.MAX_CACHE,Icon:"HASHNETCAP",Visible:()=>A(9),Condition:()=>(0,f.kw)()&&p.J5.hashManager.hashes===p.J5.hashManager.capacity&&p.J5.hashManager.capacity>0},SLEEVE_8:{...N.SLEEVE_8,Icon:"SLEEVE8",Visible:()=>A(10),Condition:()=>8===p.J5.sleeves.length&&3===p.J5.sourceFileLvl(10)},INDECISIVE:{...N.INDECISIVE,Icon:"1H",Visible:T,Condition:function(){let e=0;return setInterval((()=>{v.F.page()===k.T3.BitVerse?e++:e=0}),6e4),()=>e>60}()},FAST_BN:{...N.FAST_BN,Icon:"2DAYS",Visible:T,Condition:()=>M()&&p.J5.playtimeSinceLastBitnode<1728e5},CHALLENGE_BN1:{...N.CHALLENGE_BN1,Icon:"BN1+",Visible:T,Condition:()=>1===p.J5.bitNodeN&&M()&&p.J5.getHomeComputer().maxRam<=128&&1===p.J5.getHomeComputer().cpuCores},CHALLENGE_BN2:{...N.CHALLENGE_BN2,Icon:"BN2+",Visible:()=>A(2),Condition:()=>2===p.J5.bitNodeN&&M()&&null===p.J5.gang},CHALLENGE_BN3:{...N.CHALLENGE_BN3,Icon:"BN3+",Visible:()=>A(3),Condition:()=>3===p.J5.bitNodeN&&M()&&null===p.J5.corporation},CHALLENGE_BN6:{...N.CHALLENGE_BN6,Icon:"BN6+",Visible:()=>A(6),Condition:()=>6===p.J5.bitNodeN&&M()&&null===p.J5.bladeburner},CHALLENGE_BN7:{...N.CHALLENGE_BN7,Icon:"BN7+",Visible:()=>A(7),Condition:()=>7===p.J5.bitNodeN&&M()&&null===p.J5.bladeburner},CHALLENGE_BN8:{...N.CHALLENGE_BN8,Icon:"BN8+",Visible:()=>A(8),Condition:()=>8===p.J5.bitNodeN&&M()&&!p.J5.has4SData&&!p.J5.has4SDataTixApi},CHALLENGE_BN9:{...N.CHALLENGE_BN9,Icon:"BN9+",Visible:()=>A(9),Condition:()=>9===p.J5.bitNodeN&&M()&&0===p.J5.moneySourceB.hacknet&&0===p.J5.moneySourceB.hacknet_expenses},CHALLENGE_BN10:{...N.CHALLENGE_BN10,Icon:"BN10+",Visible:()=>A(10),Condition:()=>10===p.J5.bitNodeN&&M()&&!p.J5.sleeves.some((e=>e.augmentations.length>0||e.exp.hacking>0||e.exp.strength>0||e.exp.defense>0||e.exp.agility>0||e.exp.dexterity>0||e.exp.charisma>0))},CHALLENGE_BN12:{...N.CHALLENGE_BN12,Icon:"BN12+",Visible:()=>A(12),Condition:()=>p.J5.sourceFileLvl(12)>=50},BYPASS:{...N.BYPASS,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.Bypass)},PROTOTYPETAMPERING:{...N.PROTOTYPETAMPERING,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.PrototypeTampering)},UNCLICKABLE:{...N.UNCLICKABLE,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.Unclickable)},UNDOCUMENTEDFUNCTIONCALL:{...N.UNDOCUMENTEDFUNCTIONCALL,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.UndocumentedFunctionCall)},TIMECOMPRESSION:{...N.TIMECOMPRESSION,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.TimeCompression)},REALITYALTERATION:{...N.REALITYALTERATION,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.RealityAlteration)},N00DLES:{...N.N00DLES,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.N00dles)},EDITSAVEFILE:{...N.EDITSAVEFILE,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.EditSaveFile)},UNACHIEVABLE:{...N.UNACHIEVABLE,Icon:"SF-1",Secret:!0,Condition:()=>!1},CHALLENGE_BN13:{...N.CHALLENGE_BN13,Icon:"BN13+",Visible:()=>A(13),Condition:()=>13===p.J5.bitNodeN&&M()&&!p.J5.augmentations.some((e=>e.name===r.AugmentationName.StaneksGift1))},DEVMENU:{...N.DEVMENU,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.YoureNotMeantToAccessThis)},RAINBOW:{...N.RAINBOW,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.INeedARainbow)},TRUE_RECURSION:{...N.TRUE_RECURSION,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.TrueRecursion)}};function R(){const e=p.J5.achievements.map((e=>e.ID)),t=Object.values(L).filter((t=>!e.includes(t.ID)&&t.Condition())).flatMap((e=>[e.ID,...e.AdditionalUnlock||[]]));for(const e of t)p.J5.giveAchievement(e);document.achievements=[...p.J5.achievements.map((e=>e.ID))]}},24853:(e,t,n)=>{"use strict";n.d(t,{k:()=>m});var r=n(67294),a=n(77541),o=n(73327),i=n(2718),s=n(30518),l=n(81138),c=n(49173);const u=(0,a.Z)((e=>(0,o.Z)({root:{width:50,padding:e.spacing(2),userSelect:"none"}})));function m(){const e=u();return r.createElement("div",{className:e.root,style:{width:"90%"}},r.createElement(l.Z,{variant:"h4"},"Achievements"),r.createElement(i.i,{achievements:Object.values(s.E),playerAchievements:c.J5.achievements}))}},69895:(e,t,n)=>{"use strict";n.d(t,{$z:()=>o,Jm:()=>l,Ui:()=>i,aX:()=>c,fW:()=>s,lg:()=>d,nS:()=>u,z7:()=>h});var r=n(65065),a=n(22392);const o=new Map,i=new Map;function s(e){o.clear();const t=JSON.parse(e);if(t&&"object"==typeof t)for(const[e,n]of Object.entries(t))"string"==typeof e&&"string"==typeof n&&o.set(e,n)}function l(e){i.clear();const t=JSON.parse(e);if(t&&"object"==typeof t)for(const[e,n]of Object.entries(t))"string"==typeof e&&"string"==typeof n&&i.set(e,n)}function c(){for(const[e,t]of o)r.o.print("alias "+e+"="+t);for(const[e,t]of i)r.o.print("global alias "+e+"="+t)}function u(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=/^([\w|!%,@-]+)=(.+)$/,r=e.match(n);return null!=r&&3==r.length&&(r[2]=(0,a.g)(r[2]),t?f(r[1],r[2]):m(r[1],r[2]),!0)}function m(e,t){i.delete(e),o.set(e,t.trim())}function f(e,t){o.delete(e),i.set(e,t.trim())}function h(e){const t=o.has(e)||i.has(e);return o.delete(e),i.delete(e),t}function d(e){const t=e.split(" ");if(t.length>0){if("unalias"===t[0]||"alias"===t[0])return t.join(" ");let e,a=!0,s=0;for(;a&&s<10;){var n;s++,a=!1;const l=null===(n=o.get(t[0]))||void 0===n?void 0:n.split(" ");void 0!==l&&(a=!0,t.splice(0,1,...l));for(let n=0;n{"use strict";n.d(t,{u:()=>c});var r,a=n(67294),o=n(39785),i=n(56798),s=n(49173),l=n(95173);function c(){const[e,t]=(0,a.useState)(r.None);if(e===r.None)return a.createElement(a.Fragment,null,a.createElement(i.Z,{onClick:function(){0===s.J5.sourceFileLvl(1)?l.e.emit("This machine is broken."):t(r.Megabyteburner2000)}},"Megabyte burner 2000"));let n=a.createElement(a.Fragment,null);return e===r.Megabyteburner2000&&(n=a.createElement(o.s,null)),a.createElement(a.Fragment,null,a.createElement(i.Z,{onClick:()=>t(r.None)},"Back"),n)}!function(e){e[e.None=0]="None",e[e.Megabyteburner2000=1]="Megabyteburner2000"}(r||(r={}))},39785:(e,t,n)=>{"use strict";n.d(t,{s:()=>l});var r=n(67294),a=n(81138),o=n(49173),i=n(52107);const s={width:"1060px",height:"800px",border:"0px"};function l(){(0,r.useEffect)((()=>{window.addEventListener("message",(function(e){e.isTrusted&&"https://bitburner-official.github.io"==e.origin&&e.data&&o.J5.giveExploit(i.VX.TrueRecursion)}))}));const e=r.createElement(r.Fragment,null,r.createElement(a.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," "),r.createElement(a.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,'\" \"', .-. "),r.createElement(a.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / \\ ( ) "),r.createElement(a.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | .-. '-' .-. "),r.createElement(a.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ / ( ) ( )"),r.createElement(a.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '.___.' '-' .-. '-'"),r.createElement(a.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ||| ( ) "),r.createElement(a.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ||| '-' "));return r.createElement(r.Fragment,null,r.createElement("div",{style:{width:"1060px",height:"800px",padding:"0",overflow:"hidden",borderColor:"white",borderStyle:"solid",borderWidth:"5px"}},r.createElement("iframe",{src:"https://bitburner-official.github.io/bitburner-legacy/",style:s})),r.createElement("div",{style:{width:"1060px",borderColor:"white",borderStyle:"solid",borderWidth:"5px"}},e))}},80372:(e,t,n)=>{"use strict";n.d(t,{p:()=>l});var r=n(49173),a=n(33244),o=n(22115),i=n(62850),s=n(21623);class l{baseCost=0;baseRepRequirement=0;isSpecial=!1;prereqs=[];mults=(0,i.A7)();factions=[];constructor(e){this.name=e.name,this.info=e.info,this.prereqs=e.prereqs?e.prereqs:[],this.baseRepRequirement=e.repCost,Object.freeze(this.baseRepRequirement),this.baseCost=e.moneyCost,Object.freeze(this.baseCost),this.factions=e.factions,e.isSpecial&&(this.isSpecial=!0);for(const t of(0,s.nd)(this.mults)){const n=e[t];n&&(this.mults[t]=n)}void 0===e.stats?this.stats=function(e,t,n){const r=e=>(0,o.T3)(e,e-1<.1?2:1);let a="Effects:";return 1!==e.hacking&&e.hacking===e.strength&&e.hacking===e.defense&&e.hacking===e.dexterity&&e.hacking===e.agility&&e.hacking===e.charisma?a+=`\n+${r(e.hacking-1)} all skills`:(1!==e.hacking&&(a+=`\n+${r(e.hacking-1)} hacking skill`),1!==e.strength&&e.strength===e.defense&&e.strength===e.dexterity&&e.strength===e.agility?a+=`\n+${r(e.strength-1)} combat skills`:(1!==e.strength&&(a+=`\n+${r(e.strength-1)} strength skill`),1!==e.defense&&(a+=`\n+${r(e.defense-1)} defense skill`),1!==e.dexterity&&(a+=`\n+${r(e.dexterity-1)} dexterity skill`),1!==e.agility&&(a+=`\n+${r(e.agility-1)} agility skill`)),1!==e.charisma&&(a+=`\n+${r(e.charisma-1)} charisma skill`)),1!==e.hacking_exp&&e.hacking_exp===e.strength_exp&&e.hacking_exp===e.defense_exp&&e.hacking_exp===e.dexterity_exp&&e.hacking_exp===e.agility_exp&&e.hacking_exp===e.charisma_exp?a+=`\n+${r(e.hacking_exp-1)} exp for all skills`:(1!==e.hacking_exp&&(a+=`\n+${r(e.hacking_exp-1)} hacking exp`),1!==e.strength_exp&&e.strength_exp===e.defense_exp&&e.strength_exp===e.dexterity_exp&&e.strength_exp===e.agility_exp?a+=`\n+${r(e.strength_exp-1)} combat exp`:(1!==e.strength_exp&&(a+=`\n+${r(e.strength_exp-1)} strength exp`),1!==e.defense_exp&&(a+=`\n+${r(e.defense_exp-1)} defense exp`),1!==e.dexterity_exp&&(a+=`\n+${r(e.dexterity_exp-1)} dexterity exp`),1!==e.agility_exp&&(a+=`\n+${r(e.agility_exp-1)} agility exp`)),1!==e.charisma_exp&&(a+=`\n+${r(e.charisma_exp-1)} charisma exp`)),1!==e.hacking_speed&&(a+=`\n+${r(e.hacking_speed-1)} faster hack(), grow(), and weaken()`),1!==e.hacking_chance&&(a+=`\n+${r(e.hacking_chance-1)} hack() success chance`),1!==e.hacking_money&&(a+=`\n+${r(e.hacking_money-1)} hack() power`),1!==e.hacking_grow&&(a+=`\n+${r(e.hacking_grow-1)} grow() power`),1!==e.faction_rep&&e.faction_rep===e.company_rep?a+=`\n+${r(e.faction_rep-1)} reputation from factions and companies`:(1!==e.faction_rep&&(a+=`\n+${r(e.faction_rep-1)} reputation from factions`),1!==e.company_rep&&(a+=`\n+${r(e.company_rep-1)} reputation from companies`)),1!==e.crime_money&&(a+=`\n+${r(e.crime_money-1)} crime money`),1!==e.crime_success&&(a+=`\n+${r(e.crime_success-1)} crime success rate`),1!==e.work_money&&(a+=`\n+${r(e.work_money-1)} work money`),1!==e.hacknet_node_money&&(a+=`\n+${r(e.hacknet_node_money-1)} hacknet production`),1!==e.hacknet_node_purchase_cost&&(a+=`\n-${r(-(e.hacknet_node_purchase_cost-1))} hacknet nodes cost`),1!==e.hacknet_node_level_cost&&(a+=`\n-${r(-(e.hacknet_node_level_cost-1))} hacknet nodes upgrade cost`),1!==e.bladeburner_max_stamina&&(a+=`\n+${r(e.bladeburner_max_stamina-1)} Bladeburner Max Stamina`),1!==e.bladeburner_stamina_gain&&(a+=`\n+${r(e.bladeburner_stamina_gain-1)} Bladeburner Stamina gain`),1!==e.bladeburner_analysis&&(a+=`\n+${r(e.bladeburner_analysis-1)} Bladeburner Field Analysis effectiveness`),1!==e.bladeburner_success_chance&&(a+=`\n+${r(e.bladeburner_success_chance-1)} Bladeburner Contracts and Operations success chance`),n&&(a+=`\nStart with ${n} after installing Augmentations.`),t&&(a+=`\nStart with ${t.join(" and ")} after installing Augmentations.`),a}(this.mults,e.programs,e.startingMoney):this.stats=e.stats}getLevel(){var e;return this.name!==a.AugmentationName.NeuroFluxGovernor?0:((null===(e=r.J5.augmentations.find((e=>e.name===this.name)))||void 0===e?void 0:e.level)??0)+r.J5.queuedAugmentations.filter((e=>e.name===this.name)).length}getNextLevel(){return this.getLevel()+1}}},27889:(e,t,n)=>{"use strict";n.d(t,{Kq:()=>y,hV:()=>v,kk:()=>g,nD:()=>b,oz:()=>p});var r=n(73440),a=n(15571),o=n(33244),i=n(72938),s=n(49173),l=n(72805),c=n(39463),u=n(52947),m=n(24815),f=n(62850),h=n(97740);function d(){return i.t.MultipleAugMultiplier*[1,.96,.94,.93][s.J5.sourceFileLvl(11)]}function p(){return Math.pow(d(),s.J5.queuedAugmentations.length)}function g(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=r.x[e.name];s.J5.mults=(0,f.VA)(s.J5.mults,n.mults),e.name!==o.AugmentationName.CongruityImplant||t||(s.J5.entropy=0,s.J5.applyEntropy(s.J5.entropy));const i=s.J5.augmentations.find((e=>e.name===o.AugmentationName.NeuroFluxGovernor));if(e.name!==o.AugmentationName.NeuroFluxGovernor||t||!i){if(!t){const t=new a.e(e.name);s.J5.augmentations.push(t)}}else i.level=e.level}function y(e){if(0==s.J5.queuedAugmentations.length&&!e)return(0,c.X)("You have not purchased any Augmentations to install!"),!1;let t="",n=-1;for(let e=s.J5.queuedAugmentations.length-1;e>=0;e--)if(s.J5.queuedAugmentations[e].name===o.AugmentationName.NeuroFluxGovernor){n=e;break}for(let e=0;es.J5.hasAugmentation(e))).length;t=e.baseCost*Math.pow(i.t.SoACostMult,r),n=e.baseRepRequirement*Math.pow(i.t.SoARepMult,r);break}default:t=e.baseCost*p()*h.dQ.AugmentationMoneyCost,n=e.baseRepRequirement*h.dQ.AugmentationRepCost}return{moneyCost:t,repCost:n}}},73440:(e,t,n)=>{"use strict";n.d(t,{p:()=>c,x:()=>l});var r=n(33244),a=n(80372),o=n(59541),i=n(72938),s=n(21623);const l=(()=>{const e=i.t.Donations/1e6/100,t={[r.AugmentationName.ADRPheromone1]:{repCost:3750,moneyCost:175e5,info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, triggers feelings of admiration and approval in other people.",company_rep:1.1,faction_rep:1.1,factions:[r.FactionName.TianDiHui,r.FactionName.TheSyndicate,r.FactionName.NWO,r.FactionName.MegaCorp,r.FactionName.FourSigma]},[r.AugmentationName.ADRPheromone2]:{repCost:62500,moneyCost:55e7,info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, which is similar to but more potent than ADR-V1. This pheromone, when excreted, triggers feelings of admiration, approval, and respect in others.",company_rep:1.2,faction_rep:1.2,factions:[r.FactionName.Silhouette,r.FactionName.FourSigma,r.FactionName.BachmanAssociates,r.FactionName.ClarkeIncorporated]},[r.AugmentationName.ArtificialBioNeuralNetwork]:{repCost:275e3,moneyCost:3e9,info:"A network consisting of millions of nanoprocessors is embedded into the brain. The network is meant to mimic the way a biological brain solves a problem, with each nanoprocessor acting similar to the way a neuron would in a neural network. However, these nanoprocessors are programmed to perform computations much faster than organic neurons, allowing the user to solve much more complex problems at a much faster rate.",hacking_speed:1.03,hacking_money:1.15,hacking:1.12,factions:[r.FactionName.BitRunners,r.FactionName.FulcrumSecretTechnologies]},[r.AugmentationName.ArtificialSynapticPotentiation]:{repCost:6250,moneyCost:8e7,info:"The body is injected with a chemical that artificially induces synaptic potentiation, otherwise known as the strengthening of synapses. This results in enhanced cognitive abilities.",hacking_speed:1.02,hacking_chance:1.05,hacking_exp:1.05,factions:[r.FactionName.TheBlackHand,r.FactionName.NiteSec]},[r.AugmentationName.BeautyOfAphrodite]:{repCost:1e4,moneyCost:1e6,info:"Pheromone extruder injected in the thoracodorsal nerve. Emits pleasing scent guaranteed to make conversational partners more agreeable.",stats:"This augmentation makes the Bribe minigame easier by indicating the incorrect paths.",isSpecial:!0,factions:[r.FactionName.ShadowsOfAnarchy]},[r.AugmentationName.BigDsBigBrain]:{isSpecial:!0,factions:[],repCost:1/0,moneyCost:1/0,info:"A chip containing the psyche of the greatest BitRunner to ever exists. Installing this relic significantly increases ALL of your stats. However it may have unintended consequence on the users mental well-being.",stats:"Grants access to unimaginable power.",hacking:2,strength:2,defense:2,dexterity:2,agility:2,charisma:2,hacking_exp:2,strength_exp:2,defense_exp:2,dexterity_exp:2,agility_exp:2,charisma_exp:2,hacking_chance:2,hacking_speed:2,hacking_money:2,hacking_grow:2,company_rep:2,faction_rep:2,crime_money:2,crime_success:2,work_money:2,hacknet_node_money:2,hacknet_node_purchase_cost:.5,hacknet_node_ram_cost:.5,hacknet_node_core_cost:.5,hacknet_node_level_cost:.5,bladeburner_max_stamina:2,bladeburner_stamina_gain:2,bladeburner_analysis:2,bladeburner_success_chance:2,startingMoney:1e12,programs:[r.CompletedProgramName.bruteSsh,r.CompletedProgramName.ftpCrack,r.CompletedProgramName.relaySmtp,r.CompletedProgramName.httpWorm,r.CompletedProgramName.sqlInject,r.CompletedProgramName.deepScan1,r.CompletedProgramName.deepScan2,r.CompletedProgramName.serverProfiler,r.CompletedProgramName.autoLink,r.CompletedProgramName.formulas]},[r.AugmentationName.BionicArms]:{repCost:62500,moneyCost:275e6,info:"Cybernetic arms created from plasteel and carbon fibers that completely replace the user's organic arms.",strength:1.3,dexterity:1.3,factions:[r.FactionName.Tetrads]},[r.AugmentationName.BionicLegs]:{repCost:15e4,moneyCost:375e6,info:"Cybernetic legs, created from plasteel and carbon fibers, enhance running speed.",agility:1.6,factions:[r.FactionName.SpeakersForTheDead,r.FactionName.TheSyndicate,r.FactionName.KuaiGongInternational,r.FactionName.OmniTekIncorporated,r.FactionName.BladeIndustries]},[r.AugmentationName.BionicSpine]:{repCost:45e3,moneyCost:125e6,info:"The spine is reconstructed using plasteel and carbon fibers. It is now capable of stimulating and regulating neural signals passing through the spinal cord, improving senses and reaction speed. The 'Bionic Spine' also interfaces with all other 'Bionic' implants.",strength:1.15,defense:1.15,agility:1.15,dexterity:1.15,factions:[r.FactionName.SpeakersForTheDead,r.FactionName.TheSyndicate,r.FactionName.KuaiGongInternational,r.FactionName.OmniTekIncorporated,r.FactionName.BladeIndustries]},[r.AugmentationName.BitWire]:{repCost:3750,moneyCost:1e7,info:"A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing capabilities.",hacking:1.05,factions:[r.FactionName.CyberSec,r.FactionName.NiteSec]},[r.AugmentationName.BladeArmor]:{repCost:12500,moneyCost:1375e6,info:`A powered exoskeleton suit designed as armor for ${r.FactionName.Bladeburners} units. This exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, concussive, thermal, chemical, and electric trauma. It also enhances the user's physical abilities.`,strength:1.04,defense:1.04,dexterity:1.04,agility:1.04,bladeburner_stamina_gain:1.02,bladeburner_success_chance:1.03,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.BladeArmorEnergyShielding]:{repCost:21250,moneyCost:55e8,info:"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system that is capable of projecting an energy shielding force field.",prereqs:[r.AugmentationName.BladeArmor],defense:1.05,bladeburner_success_chance:1.06,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.BladeArmorIPU]:{repCost:15e3,moneyCost:11e8,info:"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing Unit that was specially designed to analyze Synthoid related data and information.",prereqs:[r.AugmentationName.BladeArmor],bladeburner_analysis:1.15,bladeburner_success_chance:1.02,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.BladeArmorOmnibeam]:{repCost:62500,moneyCost:275e8,info:"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use a multiple-fiber system. This upgraded weapon uses multiple fiber laser modules that combine together to form a single, more powerful beam of up to 2000MW.",prereqs:[r.AugmentationName.BladeArmorUnibeam],bladeburner_success_chance:1.1,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.BladeArmorPowerCells]:{repCost:18750,moneyCost:275e7,info:"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of more efficiently storing and using power.",prereqs:[r.AugmentationName.BladeArmor],bladeburner_success_chance:1.05,bladeburner_stamina_gain:1.02,bladeburner_max_stamina:1.05,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.BladeArmorUnibeam]:{repCost:31250,moneyCost:165e8,info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser weapon. It's precision and accuracy makes it useful for quickly neutralizing threats while keeping casualties to a minimum.",prereqs:[r.AugmentationName.BladeArmor],bladeburner_success_chance:1.08,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.BladeRunner]:{repCost:2e4,moneyCost:825e7,info:`A cybernetic foot augmentation that was specifically created for ${r.FactionName.Bladeburners} during the Synthoid Uprising. The organic musculature of the human foot is enhanced with flexible carbon nanotube matrices that are controlled by intelligent servo-motors.`,agility:1.05,bladeburner_max_stamina:1.05,bladeburner_stamina_gain:1.05,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.BladesSimulacrum]:{repCost:1250,moneyCost:15e10,info:"A highly-advanced matter phase-shifter module that is embedded in the brainstem and cerebellum. This augmentation allows the user to project and control a holographic simulacrum within an extremely large radius. These specially-modified holograms were specifically weaponized by Bladeburner units to be used against Synthoids.",stats:"This augmentation allows you to perform Bladeburner actions and other actions (such as working, committing crimes, etc.) at the same time.",isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.BrachiBlades]:{repCost:12500,moneyCost:9e7,info:"A set of retractable plasteel blades that are implanted in the arm, underneath the skin.",strength:1.15,defense:1.15,crime_success:1.1,crime_money:1.15,factions:[r.FactionName.TheSyndicate]},[r.AugmentationName.CRTX42AA]:{repCost:45e3,moneyCost:225e6,info:"The CRTX42-AA gene is injected into the genome. The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal cortex and improves cognitive abilities.",hacking:1.08,hacking_exp:1.15,factions:[r.FactionName.NiteSec]},[r.AugmentationName.CashRoot]:{repCost:12500,moneyCost:125e6,info:"A collection of digital assets saved on a small chip. The chip is implanted into your wrist. A small jack in the chip allows you to connect it to a computer and upload the assets.",startingMoney:1e6,programs:[r.CompletedProgramName.bruteSsh],factions:[r.FactionName.Sector12]},[r.AugmentationName.ChaosOfDionysus]:{repCost:1e4,moneyCost:1e6,info:"Opto-occipito implant to process visual signals before brain interpretation.",stats:"This augmentation makes the Backwards minigame easier by flipping the words.",isSpecial:!0,factions:[r.FactionName.ShadowsOfAnarchy]},[r.AugmentationName.CombatRib1]:{repCost:7500,moneyCost:2375e4,info:"The rib cage is augmented to continuously release boosters into the bloodstream which increase the oxygen-carrying capacity of blood.",strength:1.1,defense:1.1,factions:[r.FactionName.SlumSnakes,r.FactionName.TheDarkArmy,r.FactionName.TheSyndicate,r.FactionName.Volhaven,r.FactionName.Ishima,r.FactionName.OmniTekIncorporated,r.FactionName.KuaiGongInternational,r.FactionName.BladeIndustries]},[r.AugmentationName.CombatRib2]:{repCost:18750,moneyCost:65e6,info:"An upgraded version of the 'Combat Rib' augmentation that adds potent stimulants which improve focus and endurance while decreasing reaction time and fatigue.",prereqs:[r.AugmentationName.CombatRib1],strength:1.14,defense:1.14,factions:[r.FactionName.TheDarkArmy,r.FactionName.TheSyndicate,r.FactionName.Volhaven,r.FactionName.OmniTekIncorporated,r.FactionName.KuaiGongInternational,r.FactionName.BladeIndustries]},[r.AugmentationName.CombatRib3]:{repCost:35e3,moneyCost:12e7,info:"The latest version of the 'Combat Rib' augmentation releases advanced anabolic steroids that improve muscle mass and physical performance while being safe and free of side effects.",prereqs:[r.AugmentationName.CombatRib2,r.AugmentationName.CombatRib1],strength:1.18,defense:1.18,factions:[r.FactionName.TheDarkArmy,r.FactionName.TheSyndicate,r.FactionName.OmniTekIncorporated,r.FactionName.KuaiGongInternational,r.FactionName.BladeIndustries,r.FactionName.TheCovenant]},[r.AugmentationName.CongruityImplant]:{repCost:1/0,moneyCost:5e13,info:"Developed by a pioneer in Grafting research, this implant generates pulses of stability which seem to have a nullifying effect versus the Entropy virus.\n\nNote: For unknown reasons, the lowercase 'n' appears to be an integral component to its functionality.",stats:"This Augmentation removes the Entropy virus, and prevents it from affecting you again.",factions:[]},[r.AugmentationName.CordiARCReactor]:{repCost:1125e3,moneyCost:5e9,info:"The thoracic cavity is equipped with a small chamber designed to hold and sustain hydrogen plasma. The plasma is used to generate fusion power through nuclear fusion, providing limitless amounts of clean energy for the body.",strength:1.35,defense:1.35,dexterity:1.35,agility:1.35,strength_exp:1.35,defense_exp:1.35,dexterity_exp:1.35,agility_exp:1.35,factions:[r.FactionName.MegaCorp]},[r.AugmentationName.CranialSignalProcessorsG1]:{repCost:1e4,moneyCost:7e7,info:"The first generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",hacking_speed:1.01,hacking:1.05,factions:[r.FactionName.CyberSec,r.FactionName.NiteSec]},[r.AugmentationName.CranialSignalProcessorsG2]:{repCost:18750,moneyCost:125e6,info:"The second generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.AugmentationName.CranialSignalProcessorsG1],hacking_speed:1.02,hacking_chance:1.05,hacking:1.07,factions:[r.FactionName.CyberSec,r.FactionName.NiteSec]},[r.AugmentationName.CranialSignalProcessorsG3]:{repCost:5e4,moneyCost:55e7,info:"The third generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.AugmentationName.CranialSignalProcessorsG2,r.AugmentationName.CranialSignalProcessorsG1],hacking_speed:1.02,hacking_money:1.15,hacking:1.09,factions:[r.FactionName.NiteSec,r.FactionName.TheBlackHand,r.FactionName.BitRunners]},[r.AugmentationName.CranialSignalProcessorsG4]:{repCost:125e3,moneyCost:11e8,info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.AugmentationName.CranialSignalProcessorsG3,r.AugmentationName.CranialSignalProcessorsG2,r.AugmentationName.CranialSignalProcessorsG1],hacking_speed:1.02,hacking_money:1.2,hacking_grow:1.25,factions:[r.FactionName.TheBlackHand,r.FactionName.BitRunners]},[r.AugmentationName.CranialSignalProcessorsG5]:{repCost:25e4,moneyCost:225e7,info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.AugmentationName.CranialSignalProcessorsG4,r.AugmentationName.CranialSignalProcessorsG3,r.AugmentationName.CranialSignalProcessorsG2,r.AugmentationName.CranialSignalProcessorsG1],hacking:1.3,hacking_money:1.25,hacking_grow:1.75,factions:[r.FactionName.BitRunners]},[r.AugmentationName.DataJack]:{repCost:112500,moneyCost:45e7,info:"A brain implant that provides an interface for direct, wireless communication between a computer's main memory and the mind. This implant allows the user to not only access a computer's memory, but also alter and delete it.",hacking_money:1.25,factions:[r.FactionName.BitRunners,r.FactionName.TheBlackHand,r.FactionName.NiteSec,r.FactionName.Chongqing,r.FactionName.NewTokyo]},[r.AugmentationName.DermaForce]:{repCost:15e3,moneyCost:5e7,info:"Synthetic skin that is grafted onto the body. This skin consists of millions of nanobots capable of projecting high-density muon beams, creating an energy barrier around the user.",defense:1.4,factions:[r.FactionName.Volhaven]},[r.AugmentationName.EMS4Recombination]:{repCost:2500,moneyCost:275e6,info:"A DNA recombination of the EMS-4 Gene. This genetic engineering technique was originally used on Bladeburners during the Synthoid uprising to induce wakefulness and concentration, suppress fear, reduce empathy, improve reflexes, and improve memory among other things.",bladeburner_success_chance:1.03,bladeburner_analysis:1.05,bladeburner_stamina_gain:1.02,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.ENM]:{repCost:15e3,moneyCost:25e7,info:"A thin device embedded inside the arm containing a wireless module capable of connecting to nearby networks. Once connected, the Netburner Module is capable of capturing and processing all of the traffic on that network. By itself, the Embedded Netburner Module does not do much, but a variety of very powerful upgrades can be installed that allow you to fully control the traffic on a network.",hacking:1.08,factions:[r.FactionName.BitRunners,r.FactionName.TheBlackHand,r.FactionName.NiteSec,r.FactionName.ECorp,r.FactionName.MegaCorp,r.FactionName.FulcrumSecretTechnologies,r.FactionName.NWO,r.FactionName.BladeIndustries]},[r.AugmentationName.ENMAnalyzeEngine]:{repCost:625e3,moneyCost:6e9,info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster that vastly outperforms the Netburner Module's native single-core processor.",prereqs:[r.AugmentationName.ENM],hacking_speed:1.1,factions:[r.FactionName.ECorp,r.FactionName.MegaCorp,r.FactionName.FulcrumSecretTechnologies,r.FactionName.NWO,r.FactionName.Daedalus,r.FactionName.TheCovenant,r.FactionName.Illuminati]},[r.AugmentationName.ENMCore]:{repCost:175e3,moneyCost:25e8,info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgrade allows the Embedded Netburner Module to generate its own data on a network.",prereqs:[r.AugmentationName.ENM],hacking_speed:1.03,hacking_money:1.1,hacking_chance:1.03,hacking_exp:1.07,hacking:1.07,factions:[r.FactionName.BitRunners,r.FactionName.TheBlackHand,r.FactionName.ECorp,r.FactionName.MegaCorp,r.FactionName.FulcrumSecretTechnologies,r.FactionName.NWO,r.FactionName.BladeIndustries]},[r.AugmentationName.ENMCoreV2]:{repCost:1e6,moneyCost:45e8,info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to control information on a network by re-routing traffic, spoofing IP addresses, and altering the data inside network packets.",prereqs:[r.AugmentationName.ENMCore,r.AugmentationName.ENM],hacking_speed:1.05,hacking_money:1.3,hacking_chance:1.05,hacking_exp:1.15,hacking:1.08,factions:[r.FactionName.BitRunners,r.FactionName.ECorp,r.FactionName.MegaCorp,r.FactionName.FulcrumSecretTechnologies,r.FactionName.NWO,r.FactionName.BladeIndustries,r.FactionName.OmniTekIncorporated,r.FactionName.KuaiGongInternational]},[r.AugmentationName.ENMCoreV3]:{repCost:175e4,moneyCost:75e8,info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into any device on a network.",prereqs:[r.AugmentationName.ENMCoreV2,r.AugmentationName.ENMCore,r.AugmentationName.ENM],hacking_speed:1.05,hacking_money:1.4,hacking_chance:1.1,hacking_exp:1.25,hacking:1.1,factions:[r.FactionName.ECorp,r.FactionName.MegaCorp,r.FactionName.FulcrumSecretTechnologies,r.FactionName.NWO,r.FactionName.Daedalus,r.FactionName.TheCovenant,r.FactionName.Illuminati]},[r.AugmentationName.ENMDMA]:{repCost:1e6,moneyCost:7e9,info:"This implant installs a Direct Memory Access (DMA) controller into the Embedded Netburner Module. This allows the Module to send and receive data directly to and from the main memory of devices on a network.",prereqs:[r.AugmentationName.ENM],hacking_money:1.4,hacking_chance:1.2,factions:[r.FactionName.ECorp,r.FactionName.MegaCorp,r.FactionName.FulcrumSecretTechnologies,r.FactionName.NWO,r.FactionName.Daedalus,r.FactionName.TheCovenant,r.FactionName.Illuminati]},[r.AugmentationName.EnhancedMyelinSheathing]:{repCost:1e5,moneyCost:1375e6,info:"Electrical signals are used to induce a new, artificial form of myelinogenesis in the human body. This process results in the proliferation of new, synthetic myelin sheaths in the nervous system. These myelin sheaths can propagate neuro-signals much faster than their organic counterparts, leading to greater processing speeds and better brain function.",hacking_speed:1.03,hacking_exp:1.1,hacking:1.08,factions:[r.FactionName.FulcrumSecretTechnologies,r.FactionName.BitRunners,r.FactionName.TheBlackHand]},[r.AugmentationName.EnhancedSocialInteractionImplant]:{repCost:375e3,moneyCost:1375e6,info:"A cranial implant that greatly assists in the user's ability to analyze social situations and interactions. The system uses a wide variety of factors such as facial expression, body language, voice tone, and inflection to determine the best course of action during social situations. The implant also uses deep learning software to continuously learn new behavior patterns and how to best respond.",charisma:1.6,charisma_exp:1.6,factions:[r.FactionName.BachmanAssociates,r.FactionName.NWO,r.FactionName.ClarkeIncorporated,r.FactionName.OmniTekIncorporated,r.FactionName.FourSigma]},[r.AugmentationName.EsperEyewear]:{repCost:1250,moneyCost:165e6,info:"Ballistic-grade protective and retractable eyewear that was designed specifically for Bladeburner units. This is implanted by installing a mechanical frame in the skull's orbit. This frame interfaces with the brain and allows the user to automatically extrude and extract the eyewear. The eyewear protects against debris, shrapnel, lasers, blinding flashes, and gas. It is also embedded with a data processing chip that can be programmed to display an AR HUD to assist the user in field missions.",bladeburner_success_chance:1.03,dexterity:1.05,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.FloodOfPoseidon]:{repCost:1e4,moneyCost:1e6,info:"Transtinatium VVD reticulator used in optico-sterbing recognition.",stats:"This augmentation makes the Symbol matching minigame easier by indicating the correct choice.",isSpecial:!0,factions:[r.FactionName.ShadowsOfAnarchy]},[r.AugmentationName.FocusWire]:{repCost:75e3,moneyCost:9e8,info:"A cranial implant that stops procrastination by blocking specific neural pathways in the brain.",hacking_exp:1.05,strength_exp:1.05,defense_exp:1.05,dexterity_exp:1.05,agility_exp:1.05,charisma_exp:1.05,company_rep:1.1,work_money:1.2,factions:[r.FactionName.BachmanAssociates,r.FactionName.ClarkeIncorporated,r.FactionName.FourSigma,r.FactionName.KuaiGongInternational]},[r.AugmentationName.GolemSerum]:{repCost:31250,moneyCost:11e9,info:"A serum that permanently enhances many aspects of human capabilities, including strength, speed, immune system enhancements, and mitochondrial efficiency. The serum was originally developed by the Chinese military in an attempt to create super soldiers.",strength:1.07,defense:1.07,dexterity:1.07,agility:1.07,bladeburner_stamina_gain:1.05,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.GrapheneBionicArms]:{repCost:5e5,moneyCost:375e7,info:"An upgrade to the Bionic Arms augmentation. It infuses the prosthetic arms with an advanced graphene material to make them stronger and lighter.",prereqs:[r.AugmentationName.BionicArms],strength:1.85,dexterity:1.85,factions:[r.FactionName.TheDarkArmy]},[r.AugmentationName.GrapheneBionicLegs]:{repCost:75e4,moneyCost:45e8,info:"An upgrade to the 'Bionic Legs' augmentation. The legs are fused with graphene, greatly enhancing jumping ability.",prereqs:[r.AugmentationName.BionicLegs],agility:2.5,factions:[r.FactionName.MegaCorp,r.FactionName.ECorp,r.FactionName.FulcrumSecretTechnologies]},[r.AugmentationName.GrapheneBionicSpine]:{repCost:1625e3,moneyCost:6e9,info:"An upgrade to the 'Bionic Spine' augmentation. The spine is fused with graphene which enhances durability and supercharges all body functions.",prereqs:[r.AugmentationName.BionicSpine],strength:1.6,defense:1.6,agility:1.6,dexterity:1.6,factions:[r.FactionName.FulcrumSecretTechnologies,r.FactionName.ECorp]},[r.AugmentationName.GrapheneBoneLacings]:{repCost:1125e3,moneyCost:425e7,info:"Graphene is grafted and fused into the skeletal structure, enhancing bone density and tensile strength.",strength:1.7,defense:1.7,factions:[r.FactionName.FulcrumSecretTechnologies,r.FactionName.TheCovenant]},[r.AugmentationName.GrapheneBrachiBlades]:{repCost:225e3,moneyCost:25e8,info:"An upgrade to the BrachiBlades augmentation. It infuses the retractable blades with an advanced graphene material making them stronger and lighter.",prereqs:[r.AugmentationName.BrachiBlades],strength:1.4,defense:1.4,crime_success:1.1,crime_money:1.3,factions:[r.FactionName.SpeakersForTheDead]},[r.AugmentationName.HacknetNodeCPUUpload]:{repCost:3750,moneyCost:11e6,info:"Uploads the architecture and design details of a Hacknet Node's CPU into the brain. This allows the user to engineer custom hardware and software for the Hacknet Node that provides better performance.",hacknet_node_money:1.15,hacknet_node_purchase_cost:.85,factions:[r.FactionName.Netburners]},[r.AugmentationName.HacknetNodeCacheUpload]:{repCost:2500,moneyCost:55e5,info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache into the brain. This allows the user to engineer custom cache hardware for the Hacknet Node that offers better performance.",hacknet_node_money:1.1,hacknet_node_level_cost:.85,factions:[r.FactionName.Netburners]},[r.AugmentationName.HacknetNodeCoreDNI]:{repCost:12500,moneyCost:6e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using electrochemical signals.",hacknet_node_money:1.45,factions:[r.FactionName.Netburners]},[r.AugmentationName.HacknetNodeKernelDNI]:{repCost:7500,moneyCost:4e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's kernel using electrochemical signals.",hacknet_node_money:1.25,factions:[r.FactionName.Netburners]},[r.AugmentationName.HacknetNodeNICUpload]:{repCost:1875,moneyCost:45e5,info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that offers better performance.",hacknet_node_money:1.1,hacknet_node_purchase_cost:.9,factions:[r.FactionName.Netburners]},[r.AugmentationName.HemoRecirculator]:{moneyCost:45e6,repCost:1e4,info:"A heart implant that greatly increases the body's ability to effectively use and pump blood.",strength:1.08,defense:1.08,agility:1.08,dexterity:1.08,factions:[r.FactionName.Tetrads,r.FactionName.TheDarkArmy,r.FactionName.TheSyndicate]},[r.AugmentationName.HiveMind]:{repCost:15e5,moneyCost:55e8,info:`A brain implant developed by ${r.FactionName.ECorp}. They do not reveal what exactly the implant does, but they promise that it will greatly enhance your abilities.`,hacking_grow:3,stats:"",factions:[r.FactionName.ECorp]},[r.AugmentationName.HuntOfArtemis]:{repCost:1e4,moneyCost:1e6,info:"magneto-turboencabulator based on technology by Micha Eike Siemon, increases the user's electro-magnetic sensitivity.",stats:"This augmentation makes the Minesweeper minigame easier by showing the location of all mines and keeping their position.",isSpecial:!0,factions:[r.FactionName.ShadowsOfAnarchy]},[r.AugmentationName.HydroflameLeftArm]:{repCost:125e4,moneyCost:25e11,info:"The left arm of a legendary BitRunner who ascended beyond this world. It projects a light blue energy shield that protects the exposed inner parts. Even though it contains no weapons, the advanced tungsten titanium alloy increases the user's strength to unbelievable levels.",strength:2.8,factions:[r.FactionName.NWO]},[r.AugmentationName.HyperionV1]:{repCost:12500,moneyCost:275e7,info:"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable of rapidly firing bolts of high-density plasma. The weapon is meant to be used against augmented enemies as the ionized nature of the plasma disrupts the electrical systems of Augmentations. However, it can also be effective against non-augmented enemies due to its high temperature and concussive force.",bladeburner_success_chance:1.06,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.HyperionV2]:{repCost:25e3,moneyCost:55e8,info:"A pair of mini plasma cannons embedded into the hands. This augmentation is more advanced and powerful than the original V1 model. This V2 model is more power-efficient, more accurate, and can fire plasma bolts at a much higher velocity than the V1 model.",prereqs:[r.AugmentationName.HyperionV1],bladeburner_success_chance:1.08,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.Hypersight]:{repCost:15e4,moneyCost:275e7,info:"A bionic eye implant that grants sight capabilities far beyond those of a natural human. Embedded circuitry within the implant provides the ability to detect heat and movement through solid objects such as walls, thus providing 'x-ray vision'-like capabilities.",dexterity:1.4,hacking_speed:1.03,hacking_money:1.1,factions:[r.FactionName.BladeIndustries,r.FactionName.KuaiGongInternational]},[r.AugmentationName.INFRARet]:{repCost:7500,moneyCost:3e7,info:"A tiny chip that sits behind the retina. This implant lets the user visually detect infrared radiation.",crime_success:1.25,crime_money:1.1,dexterity:1.1,factions:[r.FactionName.Ishima]},[r.AugmentationName.INTERLINKED]:{repCost:25e3,moneyCost:55e8,info:"The DNA is genetically modified to enhance the human's body extracellular matrix (ECM). This improves the ECM's ability to structurally support the body and grants heightened strength and durability.",strength_exp:1.05,defense_exp:1.05,dexterity_exp:1.05,agility_exp:1.05,bladeburner_max_stamina:1.1,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.KnowledgeOfApollo]:{repCost:1e4,moneyCost:1e6,info:"Neodynic retention fjengeln spoofer using -φ karmions, net positive effect on implantee's delta wave.",stats:"This augmentation makes the Wire Cutting minigame easier by indicating the incorrect wires.",isSpecial:!0,factions:[r.FactionName.ShadowsOfAnarchy]},[r.AugmentationName.LuminCloaking1]:{repCost:1500,moneyCost:5e6,info:"A skin implant that reinforces the skin with highly-advanced synthetic cells. These cells, when powered, have a negative refractive index. As a result, they bend light around the skin, making the user much harder to see with the naked eye.",agility:1.05,crime_money:1.1,factions:[r.FactionName.SlumSnakes,r.FactionName.Tetrads]},[r.AugmentationName.LuminCloaking2]:{repCost:5e3,moneyCost:3e7,info:"This is a more advanced version of the LuminCloaking-V1 augmentation. This skin implant reinforces the skin with highly-advanced synthetic cells. These cells, when powered, are capable of not only bending light but also of bending heat, making the user more resilient as well as stealthy.",prereqs:[r.AugmentationName.LuminCloaking1],agility:1.1,defense:1.1,crime_money:1.25,factions:[r.FactionName.SlumSnakes,r.FactionName.Tetrads]},[r.AugmentationName.MightOfAres]:{repCost:1e4,moneyCost:1e6,info:"Extra-ocular neurons taken from old martial art master. Injecting them gives the user the ability to predict the enemy's attack before they even know it themselves.",stats:"This augmentation makes the Slash minigame easier by showing you via an indicator when the slash in coming.",isSpecial:!0,factions:[r.FactionName.ShadowsOfAnarchy]},[r.AugmentationName.NanofiberWeave]:{repCost:37500,moneyCost:125e6,info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning, which improves its regenerative and extracellular homeostasis abilities.",strength:1.2,defense:1.2,factions:[r.FactionName.TheDarkArmy,r.FactionName.TheSyndicate,r.FactionName.OmniTekIncorporated,r.FactionName.BladeIndustries,r.FactionName.TianDiHui,r.FactionName.SpeakersForTheDead,r.FactionName.FulcrumSecretTechnologies]},[r.AugmentationName.Neotra]:{repCost:562500,moneyCost:2875e6,info:"A highly-advanced techno-organic drug that is injected into the skeletal and integumentary system. The drug permanently modifies the DNA of the body's skin and bone cells, granting them the ability to repair and restructure themselves.",strength:1.55,defense:1.55,factions:[r.FactionName.BladeIndustries]},[r.AugmentationName.NeuralAccelerator]:{repCost:2e5,moneyCost:175e7,info:"A microprocessor that accelerates the processing speed of biological neural networks. This is a cranial implant that is embedded inside the brain.",hacking:1.1,hacking_exp:1.15,hacking_money:1.2,factions:[r.FactionName.BitRunners]},[r.AugmentationName.NeuralRetentionEnhancement]:{repCost:2e4,moneyCost:25e7,info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal circuits, strengthening the ability to retain information.",hacking_exp:1.25,factions:[r.FactionName.NiteSec]},[r.AugmentationName.Neuralstimulator]:{repCost:5e4,moneyCost:3e9,info:"A cranial implant that intelligently stimulates certain areas of the brain in order to improve cognitive functions.",hacking_speed:1.02,hacking_chance:1.1,hacking_exp:1.12,factions:[r.FactionName.TheBlackHand,r.FactionName.Chongqing,r.FactionName.Sector12,r.FactionName.NewTokyo,r.FactionName.Aevum,r.FactionName.Ishima,r.FactionName.Volhaven,r.FactionName.BachmanAssociates,r.FactionName.ClarkeIncorporated,r.FactionName.FourSigma]},[r.AugmentationName.Neuregen]:{repCost:37500,moneyCost:375e6,info:"A drug that genetically modifies the neurons in the brain resulting in neurons that never die, continuously regenerate, and strengthen themselves.",hacking_exp:1.4,factions:[r.FactionName.Chongqing]},[r.AugmentationName.NeuroFluxGovernor]:{repCost:500,moneyCost:75e4,info:"Undetectable adamantium nanobots injected in the users bloodstream. The NeuroFlux Governor monitors and regulates all aspects of the human body, essentially 'governing' the body. By doing so, it improves the users performance for most actions.",stats:`This special augmentation can be leveled up infinitely. Each level of this augmentation increases MOST multipliers by 1% (+${(100*e).toFixed(6)}%), stacking multiplicatively.`,isSpecial:!0,hacking_chance:1.01+e,hacking_speed:1.01+e,hacking_money:1.01+e,hacking_grow:1.01+e,hacking:1.01+e,strength:1.01+e,defense:1.01+e,dexterity:1.01+e,agility:1.01+e,charisma:1.01+e,hacking_exp:1.01+e,strength_exp:1.01+e,defense_exp:1.01+e,dexterity_exp:1.01+e,agility_exp:1.01+e,charisma_exp:1.01+e,company_rep:1.01+e,faction_rep:1.01+e,crime_money:1.01+e,crime_success:1.01+e,hacknet_node_money:1.01+e,hacknet_node_purchase_cost:1/(1.01+e),hacknet_node_ram_cost:1/(1.01+e),hacknet_node_core_cost:1/(1.01+e),hacknet_node_level_cost:1/(1.01+e),work_money:1.01+e,factions:Object.values(r.FactionName).filter((e=>![r.FactionName.ShadowsOfAnarchy,r.FactionName.Bladeburners,r.FactionName.ChurchOfTheMachineGod].includes(e)))},[r.AugmentationName.Neurolink]:{repCost:875e3,moneyCost:4375e6,info:`A brain implant that provides a high-bandwidth, direct neural link between your mind and the ${r.FactionName.BitRunners}' data servers, which reportedly contain the largest database of hacking tools and information in the world.`,hacking:1.15,hacking_exp:1.2,hacking_chance:1.1,hacking_speed:1.05,programs:[r.CompletedProgramName.ftpCrack,r.CompletedProgramName.relaySmtp],factions:[r.FactionName.BitRunners]},[r.AugmentationName.NeuronalDensification]:{repCost:187500,moneyCost:1375e6,info:"The brain is surgically re-engineered to have increased neuronal density by decreasing the neuron gap junction. Then, the body is genetically modified to enhance the production and capabilities of its neural stem cells.",hacking:1.15,hacking_exp:1.1,hacking_speed:1.03,factions:[r.FactionName.ClarkeIncorporated]},[r.AugmentationName.NeuroreceptorManager]:{repCost:75e3,moneyCost:55e7,info:"A brain implant carefully assembled around the synapses, which micromanages the activity and levels of various neuroreceptor chemicals and modulates electrical activity to optimize concentration, allowing the user to multitask much more effectively.",stats:"This augmentation removes the penalty for not focusing on actions such as working in a job or working for a faction.",factions:[r.FactionName.TianDiHui]},[r.AugmentationName.Neurotrainer1]:{repCost:1e3,moneyCost:4e6,info:"A decentralized cranial implant that improves the brain's ability to learn. It is installed by releasing millions of nanobots into the human brain, each of which attaches to a different neural pathway to enhance the brain's ability to retain and retrieve information.",hacking_exp:1.1,strength_exp:1.1,defense_exp:1.1,dexterity_exp:1.1,agility_exp:1.1,charisma_exp:1.1,factions:[r.FactionName.CyberSec,r.FactionName.Aevum]},[r.AugmentationName.Neurotrainer2]:{repCost:1e4,moneyCost:45e6,info:"A decentralized cranial implant that improves the brain's ability to learn. This is a more powerful version of the Neurotrainer I augmentation, but it does not require Neurotrainer I to be installed as a prerequisite.",hacking_exp:1.15,strength_exp:1.15,defense_exp:1.15,dexterity_exp:1.15,agility_exp:1.15,charisma_exp:1.15,factions:[r.FactionName.BitRunners,r.FactionName.NiteSec]},[r.AugmentationName.Neurotrainer3]:{repCost:25e3,moneyCost:13e7,info:"A decentralized cranial implant that improves the brain's ability to learn. This is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, but it does not require either of them to be installed as a prerequisite.",hacking_exp:1.2,strength_exp:1.2,defense_exp:1.2,dexterity_exp:1.2,agility_exp:1.2,charisma_exp:1.2,factions:[r.FactionName.NWO,r.FactionName.FourSigma]},[r.AugmentationName.NuoptimalInjectorImplant]:{repCost:5e3,moneyCost:2e7,info:"This torso implant automatically injects nootropic supplements into the bloodstream to improve memory, increase focus, and provide other cognitive enhancements.",company_rep:1.2,factions:[r.FactionName.TianDiHui,r.FactionName.Volhaven,r.FactionName.NewTokyo,r.FactionName.Chongqing,r.FactionName.ClarkeIncorporated,r.FactionName.FourSigma,r.FactionName.BachmanAssociates]},[r.AugmentationName.NutriGen]:{repCost:6250,moneyCost:25e5,info:"A thermo-powered artificial nutrition generator. Endogenously synthesizes glucose, amino acids, and vitamins and redistributes them across the body. The device is powered by the body's naturally wasted energy in the form of heat.",strength_exp:1.2,defense_exp:1.2,dexterity_exp:1.2,agility_exp:1.2,factions:[r.FactionName.NewTokyo]},[r.AugmentationName.nextSENS]:{repCost:437500,moneyCost:1925e6,info:"The body is genetically re-engineered to maintain a state of negligible senescence, preventing the body from deteriorating with age.",hacking:1.2,strength:1.2,defense:1.2,dexterity:1.2,agility:1.2,charisma:1.2,factions:[r.FactionName.ClarkeIncorporated]},[r.AugmentationName.OmniTekInfoLoad]:{repCost:625e3,moneyCost:2875e6,info:"OmniTek's data and information repository is uploaded into your brain, enhancing your programming and hacking abilities.",hacking:1.2,hacking_exp:1.25,factions:[r.FactionName.OmniTekIncorporated]},[r.AugmentationName.OrionShoulder]:{repCost:6250,moneyCost:55e7,info:"A bionic shoulder augmentation for the right shoulder. Using cybernetics, the ORION-MKIV shoulder enhances the strength and dexterity of the user's right arm. It also provides protection due to its crystallized graphene plating.",defense:1.05,strength:1.05,dexterity:1.05,bladeburner_success_chance:1.04,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.PCDNI]:{repCost:375e3,moneyCost:375e7,info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most computers. Connecting to a computer through this jack allows you to interface with it using the brain's electrochemical signals.",company_rep:1.3,hacking:1.08,factions:[r.FactionName.FourSigma,r.FactionName.OmniTekIncorporated,r.FactionName.ECorp,r.FactionName.BladeIndustries]},[r.AugmentationName.PCDNINeuralNetwork]:{repCost:15e5,moneyCost:75e8,info:"This is an additional installation that upgrades the functionality of the PC Direct-Neural Interface augmentation. When connected to a computer, the Neural Network upgrade allows the user to use their own brain's processing power to aid the computer in computational tasks.",prereqs:[r.AugmentationName.PCDNI],company_rep:2,hacking:1.1,hacking_speed:1.05,factions:[r.FactionName.FulcrumSecretTechnologies]},[r.AugmentationName.PCDNIOptimizer]:{repCost:5e5,moneyCost:45e8,info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It improves the performance of the interface and gives the user more control options to a connected computer.",prereqs:[r.AugmentationName.PCDNI],company_rep:1.75,hacking:1.1,factions:[r.FactionName.FulcrumSecretTechnologies,r.FactionName.ECorp,r.FactionName.BladeIndustries]},[r.AugmentationName.PCMatrix]:{repCost:1e5,moneyCost:2e9,info:"A 'Probability Computation Matrix' is installed in the frontal cortex. This implant uses advanced mathematical algorithms to rapidly identify and compute statistical outcomes of nearly every situation.",charisma:1.0777,charisma_exp:1.0777,work_money:1.777,faction_rep:1.0777,company_rep:1.0777,crime_success:1.0777,crime_money:1.0777,programs:[r.CompletedProgramName.deepScan1,r.CompletedProgramName.autoLink],factions:[r.FactionName.Aevum]},[r.AugmentationName.PhotosyntheticCells]:{repCost:562500,moneyCost:275e7,info:"Chloroplasts are added to epidermal stem cells and are applied to the body using a skin graft. The result is photosynthetic skin cells, allowing users to generate their own energy and nutrition using solar power.",strength:1.4,defense:1.4,agility:1.4,factions:[r.FactionName.KuaiGongInternational]},[r.AugmentationName.PowerRecirculator]:{repCost:25e3,moneyCost:18e7,info:"The body's nerves are attached with polypyrrole nanocircuits that are capable of capturing wasted energy, in the form of heat, and converting it back into usable power.",hacking:1.05,strength:1.05,defense:1.05,dexterity:1.05,agility:1.05,charisma:1.05,hacking_exp:1.1,strength_exp:1.1,defense_exp:1.1,dexterity_exp:1.1,agility_exp:1.1,charisma_exp:1.1,factions:[r.FactionName.Tetrads,r.FactionName.TheDarkArmy,r.FactionName.TheSyndicate,r.FactionName.NWO]},[r.AugmentationName.QLink]:{repCost:1875e3,moneyCost:25e12,info:`A brain implant that wirelessly connects you to the ${r.FactionName.Illuminati}'s quantum supercomputer, allowing you to access and use its incredible computing power.`,hacking:1.75,hacking_speed:2,hacking_chance:2.5,hacking_money:4,factions:[r.FactionName.Illuminati]},[r.AugmentationName.SNA]:{repCost:6250,moneyCost:3e7,info:"A cranial implant that affects the user's personality, making them better at negotiation in social situations.",work_money:1.1,company_rep:1.15,faction_rep:1.15,factions:[r.FactionName.TianDiHui]},[r.AugmentationName.SPTN97]:{repCost:125e4,moneyCost:4875e6,info:"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an artificially-synthesized gene that was developed by DARPA to create super-soldiers through genetic modification. The gene was outlawed in 2056.",strength:1.75,defense:1.75,dexterity:1.75,agility:1.75,hacking:1.15,factions:[r.FactionName.TheCovenant]},[r.AugmentationName.ShadowsSimulacrum]:{repCost:37500,moneyCost:4e8,info:"A crude but functional matter phase-shifter module that is embedded in the brainstem and cerebellum. This augmentation was developed by criminal organizations and allows the user to project and control holographic simulacrums within a large radius. These simulacrums are commonly used for espionage and surveillance work.",company_rep:1.15,faction_rep:1.15,factions:[r.FactionName.TheSyndicate,r.FactionName.TheDarkArmy,r.FactionName.SpeakersForTheDead]},[r.AugmentationName.SmartJaw]:{repCost:375e3,moneyCost:275e7,info:"A bionic jaw that contains advanced hardware and software capable of psychoanalyzing and profiling the personality of others using optical imaging software.",charisma:1.5,charisma_exp:1.5,company_rep:1.25,faction_rep:1.25,factions:[r.FactionName.BachmanAssociates]},[r.AugmentationName.SmartSonar]:{repCost:22500,moneyCost:75e6,info:"A cochlear implant that helps the player detect and locate enemies using sound propagation.",dexterity:1.1,dexterity_exp:1.15,crime_money:1.25,factions:[r.FactionName.SlumSnakes]},[r.AugmentationName.SpeechEnhancement]:{repCost:2500,moneyCost:125e5,info:"An advanced neural implant that improves your speaking abilities, making you more convincing and likable in conversations and overall improving your social interactions.",company_rep:1.1,charisma:1.1,factions:[r.FactionName.TianDiHui,r.FactionName.SpeakersForTheDead,r.FactionName.FourSigma,r.FactionName.KuaiGongInternational,r.FactionName.ClarkeIncorporated,r.FactionName.BachmanAssociates]},[r.AugmentationName.SpeechProcessor]:{repCost:7500,moneyCost:5e7,info:"A cochlear implant with an embedded computer that analyzes incoming speech. The embedded computer processes characteristics of incoming speech, such as tone and inflection, to pick up on subtle cues and aid in social interactions.",charisma:1.2,factions:[r.FactionName.TianDiHui,r.FactionName.Chongqing,r.FactionName.Sector12,r.FactionName.NewTokyo,r.FactionName.Aevum,r.FactionName.Ishima,r.FactionName.Volhaven,r.FactionName.Silhouette]},[r.AugmentationName.StaneksGift1]:{repCost:0,moneyCost:0,info:'Allison "Mother" Stanek imparts you with her gift. An experimental Augmentation implanted at the base of the neck. It allows you to overclock your entire system by carefully changing the configuration.',isSpecial:!0,hacking_chance:.9,hacking_speed:.9,hacking_money:.9,hacking_grow:.9,hacking:.9,strength:.9,defense:.9,dexterity:.9,agility:.9,charisma:.9,hacking_exp:.9,strength_exp:.9,defense_exp:.9,dexterity_exp:.9,agility_exp:.9,charisma_exp:.9,company_rep:.9,faction_rep:.9,crime_money:.9,crime_success:.9,hacknet_node_money:.9,hacknet_node_purchase_cost:1.1,hacknet_node_ram_cost:1.1,hacknet_node_core_cost:1.1,hacknet_node_level_cost:1.1,work_money:.9,stats:"Its unstable nature decreases all your stats by 10%",factions:[r.FactionName.ChurchOfTheMachineGod]},[r.AugmentationName.StaneksGift2]:{repCost:1e6,moneyCost:0,info:"The next evolution is near, a coming together of man and machine. A synthesis greater than the birth of the human organism. Time spent with the gift has allowed for acclimatization of the invasive augment and the toll it takes upon your frame granting a 5% reduced penalty to all stats.",prereqs:[r.AugmentationName.StaneksGift1],isSpecial:!0,hacking_chance:.95/.9,hacking_speed:.95/.9,hacking_money:.95/.9,hacking_grow:.95/.9,hacking:.95/.9,strength:.95/.9,defense:.95/.9,dexterity:.95/.9,agility:.95/.9,charisma:.95/.9,hacking_exp:.95/.9,strength_exp:.95/.9,defense_exp:.95/.9,dexterity_exp:.95/.9,agility_exp:.95/.9,charisma_exp:.95/.9,company_rep:.95/.9,faction_rep:.95/.9,crime_money:.95/.9,crime_success:.95/.9,hacknet_node_money:.95/.9,hacknet_node_purchase_cost:1.05/1.1,hacknet_node_ram_cost:1.05/1.1,hacknet_node_core_cost:1.05/1.1,hacknet_node_level_cost:1.05/1.1,work_money:.95/.9,stats:"The penalty for the gift is reduced to 5%",factions:[r.FactionName.ChurchOfTheMachineGod]},[r.AugmentationName.StaneksGift3]:{repCost:1e8,moneyCost:0,info:"The synthesis of human and machine is nothing to fear. It is our destiny. You will become greater than the sum of our parts. As One. Embrace your gift fully and wholly free of it's accursed toll. Serenity brings tranquility in the form of no longer suffering a stat penalty. ",prereqs:[r.AugmentationName.StaneksGift2,r.AugmentationName.StaneksGift1],isSpecial:!0,hacking_chance:1/.95,hacking_speed:1/.95,hacking_money:1/.95,hacking_grow:1/.95,hacking:1/.95,strength:1/.95,defense:1/.95,dexterity:1/.95,agility:1/.95,charisma:1/.95,hacking_exp:1/.95,strength_exp:1/.95,defense_exp:1/.95,dexterity_exp:1/.95,agility_exp:1/.95,charisma_exp:1/.95,company_rep:1/.95,faction_rep:1/.95,crime_money:1/.95,crime_success:1/.95,hacknet_node_money:1/.95,hacknet_node_purchase_cost:1/1.05,hacknet_node_ram_cost:1/1.05,hacknet_node_core_cost:1/1.05,hacknet_node_level_cost:1/1.05,work_money:1/.95,stats:"Stanek's Gift has no penalty.",factions:[r.FactionName.ChurchOfTheMachineGod]},[r.AugmentationName.SubdermalArmor]:{repCost:875e3,moneyCost:325e7,info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. The material is implanted underneath the skin, and is the most advanced form of defensive enhancement that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to mitigate damage from any fire or electrical traumas.",defense:2.2,factions:[r.FactionName.TheSyndicate,r.FactionName.FulcrumSecretTechnologies,r.FactionName.Illuminati,r.FactionName.Daedalus,r.FactionName.TheCovenant]},[r.AugmentationName.SynapticEnhancement]:{repCost:2e3,moneyCost:75e5,info:"A small cranial implant that continuously uses weak electrical signals to stimulate the brain and induce stronger synaptic activity. This improves the user's cognitive abilities.",hacking_speed:1.03,factions:[r.FactionName.CyberSec,r.FactionName.Aevum]},[r.AugmentationName.SynfibrilMuscle]:{repCost:437500,moneyCost:1125e6,info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. Scientists have named these artificially enhanced units 'synfibrils'.",strength:1.3,defense:1.3,factions:[r.FactionName.KuaiGongInternational,r.FactionName.FulcrumSecretTechnologies,r.FactionName.SpeakersForTheDead,r.FactionName.NWO,r.FactionName.TheCovenant,r.FactionName.Daedalus,r.FactionName.Illuminati,r.FactionName.BladeIndustries]},[r.AugmentationName.SyntheticHeart]:{moneyCost:2875e6,repCost:75e4,info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping blood more efficiently than an organic heart.",agility:1.5,strength:1.5,factions:[r.FactionName.KuaiGongInternational,r.FactionName.FulcrumSecretTechnologies,r.FactionName.SpeakersForTheDead,r.FactionName.NWO,r.FactionName.TheCovenant,r.FactionName.Daedalus,r.FactionName.Illuminati]},[r.AugmentationName.TITN41Injection]:{repCost:25e3,moneyCost:19e7,info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that control personality. The TITN-41 strain alters these genes so that the subject becomes more outgoing and sociable.",charisma:1.15,charisma_exp:1.15,factions:[r.FactionName.Silhouette]},[r.AugmentationName.Targeting1]:{moneyCost:15e6,repCost:5e3,info:"A cranial implant that is embedded within the inner ear structures and optic nerves. It regulates and enhances balance and hand-eye coordination.",dexterity:1.1,factions:[r.FactionName.SlumSnakes,r.FactionName.TheDarkArmy,r.FactionName.TheSyndicate,r.FactionName.Sector12,r.FactionName.Ishima,r.FactionName.OmniTekIncorporated,r.FactionName.KuaiGongInternational,r.FactionName.BladeIndustries]},[r.AugmentationName.Targeting2]:{moneyCost:425e5,repCost:8750,info:"This upgraded version of the 'Augmented Targeting' implant is capable of augmenting reality by digitally displaying weaknesses and vital signs of threats.",prereqs:[r.AugmentationName.Targeting1],dexterity:1.2,factions:[r.FactionName.TheDarkArmy,r.FactionName.TheSyndicate,r.FactionName.Sector12,r.FactionName.OmniTekIncorporated,r.FactionName.KuaiGongInternational,r.FactionName.BladeIndustries]},[r.AugmentationName.Targeting3]:{moneyCost:115e6,repCost:27500,info:"The latest version of the 'Augmented Targeting' implant adds the ability to lock-on and track threats.",prereqs:[r.AugmentationName.Targeting2,r.AugmentationName.Targeting1],dexterity:1.3,factions:[r.FactionName.TheDarkArmy,r.FactionName.TheSyndicate,r.FactionName.OmniTekIncorporated,r.FactionName.KuaiGongInternational,r.FactionName.BladeIndustries,r.FactionName.TheCovenant]},[r.AugmentationName.TheBlackHand]:{repCost:1e5,moneyCost:55e7,info:"A highly advanced bionic hand. This prosthetic not only enhances strength and dexterity but it is also embedded with hardware and firmware that lets the user connect to, access, and hack devices and machines by just touching them.",strength:1.15,dexterity:1.15,hacking:1.1,hacking_speed:1.02,hacking_money:1.1,factions:[r.FactionName.TheBlackHand]},[r.AugmentationName.TheRedPill]:{repCost:25e5,moneyCost:0,info:"It's time to leave the cave.",stats:"",isSpecial:!0,factions:[r.FactionName.Daedalus]},[r.AugmentationName.TrickeryOfHermes]:{repCost:1e4,moneyCost:1e6,info:"Penta-dynamo-neurovascular-valve inserted in the carpal ligament, enhances dexterity.",stats:"This augmentation makes the Cheat Code minigame easier by allowing the opposite character.",isSpecial:!0,factions:[r.FactionName.ShadowsOfAnarchy]},[r.AugmentationName.UnstableCircadianModulator]:(0,o.T)(),[r.AugmentationName.VangelisVirus]:{repCost:18750,moneyCost:275e7,info:"A synthetic symbiotic virus that is injected into human brain tissue. The Vangelis virus heightens the senses and focus of its host, and also enhances its intuition.",dexterity_exp:1.1,bladeburner_analysis:1.1,bladeburner_success_chance:1.04,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.VangelisVirus3]:{repCost:37500,moneyCost:11e9,info:"An improved version of Vangelis, a synthetic symbiotic virus that is injected into human brain tissue. On top of the benefits of the original virus, this also grants accelerated healing and enhanced reflexes.",prereqs:[r.AugmentationName.VangelisVirus],defense_exp:1.1,dexterity_exp:1.1,bladeburner_analysis:1.15,bladeburner_success_chance:1.05,isSpecial:!0,factions:[r.FactionName.Bladeburners]},[r.AugmentationName.WKSharmonizer]:{repCost:1e4,moneyCost:1e6,info:`A copy of the WKS harmonizer from the MIA leader of the ${r.FactionName.ShadowsOfAnarchy} injects *Γ-based cells that provides general enhancement to the body.`,stats:"This augmentation makes many aspects of infiltration easier and more productive, via increased timer and rewards, reduced damage taken, etc.",isSpecial:!0,factions:[r.FactionName.ShadowsOfAnarchy]},[r.AugmentationName.WiredReflexes]:{repCost:1250,moneyCost:25e5,info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, supercharging the spread of neural signals and increasing reflex speed.",agility:1.05,dexterity:1.05,factions:[r.FactionName.TianDiHui,r.FactionName.SlumSnakes,r.FactionName.Sector12,r.FactionName.Volhaven,r.FactionName.Aevum,r.FactionName.Ishima,r.FactionName.TheSyndicate,r.FactionName.TheDarkArmy,r.FactionName.SpeakersForTheDead]},[r.AugmentationName.WisdomOfAthena]:{repCost:1e4,moneyCost:1e6,info:"A connective brain implant to SASHA that focuses on pattern recognition and predictive templating.",stats:"This augmentation makes the Bracket minigame easier by removing all '[' ']'.",isSpecial:!0,factions:[r.FactionName.ShadowsOfAnarchy]},[r.AugmentationName.Xanipher]:{repCost:875e3,moneyCost:425e7,info:"A concoction of advanced nanobots that is orally ingested into the body. These nanobots induce physiological changes and significantly improve the body's functioning in all aspects.",hacking:1.2,strength:1.2,defense:1.2,dexterity:1.2,agility:1.2,charisma:1.2,hacking_exp:1.15,strength_exp:1.15,defense_exp:1.15,dexterity_exp:1.15,agility_exp:1.15,charisma_exp:1.15,factions:[r.FactionName.NWO]},[r.AugmentationName.ZOE]:{isSpecial:!0,repCost:1/0,moneyCost:1e12,info:"Zoë's Omnicerebrum Ënhancer for sleeves inserts an omnicerebrum into your sleeve. An omnicerebrum is a near perfect simulation of the human brain, allowing it to take advantage of a larger variety of augments. But you should know about this BitRunner, since you have one of these yourself!",stats:"Allows sleeves to benefit from Stanek's Gift but it is less powerful if several are installed.",factions:[]}};return(0,s.KW)(r.AugmentationName,(e=>{const n=t[e];return n.name=e,new a.p(n)}))})();function c(){const e=(0,o.T)();e.name=r.AugmentationName.UnstableCircadianModulator,l[r.AugmentationName.UnstableCircadianModulator]=new a.p(e)}},59541:(e,t,n)=>{"use strict";n.d(t,{T:()=>i});var r=n(33244),a=n(21623),o=n(12450);function i(){const e=function(){const e=[{bonuses:{hacking_chance:1.25,hacking_speed:1.1,hacking_money:1.25,hacking_grow:1.1},description:"Increases the player's hacking chance by 25%.\nIncreases the player's hacking speed by 10%.\nIncreases the amount of money the player's gains from hacking by 25%.\nImproves grow() by 10%."},{bonuses:{hacking:1.15,hacking_exp:2},description:"Increases the player's hacking skill by 15%.\nIncreases the player's hacking experience gain rate by 100%."},{bonuses:{strength:1.25,strength_exp:2,defense:1.25,defense_exp:2,dexterity:1.25,dexterity_exp:2,agility:1.25,agility_exp:2},description:"Increases all of the player's combat stats by 25%.\nIncreases all of the player's combat stat experience gain rate by 100%."},{bonuses:{charisma:1.5,charisma_exp:2},description:"This augmentation increases the player's charisma by 50%.\nIncreases the player's charisma experience gain rate by 100%."},{bonuses:{hacknet_node_money:1.2,hacknet_node_purchase_cost:.85,hacknet_node_ram_cost:.85,hacknet_node_core_cost:.85,hacknet_node_level_cost:.85},description:"Increases the amount of money produced by Hacknet Nodes by 20%.\nDecreases all costs related to Hacknet Node by 15%."},{bonuses:{company_rep:1.25,faction_rep:1.15,work_money:1.7},description:"Increases the amount of money the player gains from working by 70%.\nIncreases the amount of reputation the player gains when working for a company by 25%.\nIncreases the amount of reputation the player gains for a faction by 15%."},{bonuses:{crime_success:2,crime_money:2},description:"Increases the player's crime success rate by 100%.\nIncreases the amount of money the player gains from crimes by 100%."}],t=new o.e7(Math.floor(Date.now()/36e5));for(let e=0;e<5;e++)t.step();return e[Math.floor(e.length*t.random())]}(),t={moneyCost:5e9,repCost:362500,info:"An experimental nanobot injection. Its unstable nature leads to unpredictable results based on your circadian rhythm.",factions:[r.FactionName.SpeakersForTheDead]};return(0,a.nd)(e.bonuses).forEach((n=>t[n]=e.bonuses[n])),t}},43943:(e,t,n)=>{"use strict";let r;n.d(t,{D:()=>r}),function(e){e.NeuroFluxGovernor="NeuroFlux Governor",e.Targeting1="Augmented Targeting I",e.Targeting2="Augmented Targeting II",e.Targeting3="Augmented Targeting III",e.SyntheticHeart="Synthetic Heart",e.SynfibrilMuscle="Synfibril Muscle",e.CombatRib1="Combat Rib I",e.CombatRib2="Combat Rib II",e.CombatRib3="Combat Rib III",e.NanofiberWeave="Nanofiber Weave",e.SubdermalArmor="NEMEAN Subdermal Weave",e.WiredReflexes="Wired Reflexes",e.GrapheneBoneLacings="Graphene Bone Lacings",e.BionicSpine="Bionic Spine",e.GrapheneBionicSpine="Graphene Bionic Spine Upgrade",e.BionicLegs="Bionic Legs",e.GrapheneBionicLegs="Graphene Bionic Legs Upgrade",e.SpeechProcessor="Speech Processor Implant",e.TITN41Injection="TITN-41 Gene-Modification Injection",e.EnhancedSocialInteractionImplant="Enhanced Social Interaction Implant",e.BitWire="BitWire",e.ArtificialBioNeuralNetwork="Artificial Bio-neural Network Implant",e.ArtificialSynapticPotentiation="Artificial Synaptic Potentiation",e.EnhancedMyelinSheathing="Enhanced Myelin Sheathing",e.SynapticEnhancement="Synaptic Enhancement Implant",e.NeuralRetentionEnhancement="Neural-Retention Enhancement",e.DataJack="DataJack",e.ENM="Embedded Netburner Module",e.ENMCore="Embedded Netburner Module Core Implant",e.ENMCoreV2="Embedded Netburner Module Core V2 Upgrade",e.ENMCoreV3="Embedded Netburner Module Core V3 Upgrade",e.ENMAnalyzeEngine="Embedded Netburner Module Analyze Engine",e.ENMDMA="Embedded Netburner Module Direct Memory Access Upgrade",e.Neuralstimulator="Neuralstimulator",e.NeuralAccelerator="Neural Accelerator",e.CranialSignalProcessorsG1="Cranial Signal Processors - Gen I",e.CranialSignalProcessorsG2="Cranial Signal Processors - Gen II",e.CranialSignalProcessorsG3="Cranial Signal Processors - Gen III",e.CranialSignalProcessorsG4="Cranial Signal Processors - Gen IV",e.CranialSignalProcessorsG5="Cranial Signal Processors - Gen V",e.NeuronalDensification="Neuronal Densification",e.NeuroreceptorManager="Neuroreceptor Management Implant",e.NuoptimalInjectorImplant="Nuoptimal Nootropic Injector Implant",e.SpeechEnhancement="Speech Enhancement",e.FocusWire="FocusWire",e.PCDNI="PC Direct-Neural Interface",e.PCDNIOptimizer="PC Direct-Neural Interface Optimization Submodule",e.PCDNINeuralNetwork="PC Direct-Neural Interface NeuroNet Injector",e.PCMatrix="PCMatrix",e.ADRPheromone1="ADR-V1 Pheromone Gene",e.ADRPheromone2="ADR-V2 Pheromone Gene",e.ShadowsSimulacrum="The Shadow's Simulacrum",e.HacknetNodeCPUUpload="Hacknet Node CPU Architecture Neural-Upload",e.HacknetNodeCacheUpload="Hacknet Node Cache Architecture Neural-Upload",e.HacknetNodeNICUpload="Hacknet Node NIC Architecture Neural-Upload",e.HacknetNodeKernelDNI="Hacknet Node Kernel Direct-Neural Interface",e.HacknetNodeCoreDNI="Hacknet Node Core Direct-Neural Interface",e.Neurotrainer1="Neurotrainer I",e.Neurotrainer2="Neurotrainer II",e.Neurotrainer3="Neurotrainer III",e.Hypersight="HyperSight Corneal Implant",e.LuminCloaking1="LuminCloaking-V1 Skin Implant",e.LuminCloaking2="LuminCloaking-V2 Skin Implant",e.HemoRecirculator="HemoRecirculator",e.SmartSonar="SmartSonar Implant",e.PowerRecirculator="Power Recirculation Core",e.QLink="QLink",e.TheRedPill="The Red Pill",e.SPTN97="SPTN-97 Gene Modification",e.HiveMind="ECorp HVMind Implant",e.CordiARCReactor="CordiARC Fusion Reactor",e.SmartJaw="SmartJaw",e.Neotra="Neotra",e.Xanipher="Xanipher",e.nextSENS="nextSENS Gene Modification",e.OmniTekInfoLoad="OmniTek InfoLoad",e.PhotosyntheticCells="Photosynthetic Cells",e.Neurolink="BitRunners Neurolink",e.TheBlackHand="The Black Hand",e.UnstableCircadianModulator="Unstable Circadian Modulator",e.CRTX42AA="CRTX42-AA Gene Modification",e.Neuregen="Neuregen Gene Modification",e.CashRoot="CashRoot Starter Kit",e.NutriGen="NutriGen Implant",e.INFRARet="INFRARET Enhancement",e.DermaForce="DermaForce Particle Barrier",e.GrapheneBrachiBlades="Graphene BrachiBlades Upgrade",e.GrapheneBionicArms="Graphene Bionic Arms Upgrade",e.BrachiBlades="BrachiBlades",e.BionicArms="Bionic Arms",e.SNA="Social Negotiation Assistant (S.N.A)",e.CongruityImplant="nickofolas Congruity Implant",e.HydroflameLeftArm="Hydroflame Left Arm",e.BigDsBigBrain="BigD's Big ... Brain",e.ZOE="Z.O.Ë.",e.EsperEyewear="EsperTech Bladeburner Eyewear",e.EMS4Recombination="EMS-4 Recombination",e.OrionShoulder="ORION-MKIV Shoulder",e.HyperionV1="Hyperion Plasma Cannon V1",e.HyperionV2="Hyperion Plasma Cannon V2",e.GolemSerum="GOLEM Serum",e.VangelisVirus="Vangelis Virus",e.VangelisVirus3="Vangelis Virus 3.0",e.INTERLINKED="I.N.T.E.R.L.I.N.K.E.D",e.BladeRunner="Blade's Runners",e.BladeArmor="BLADE-51b Tesla Armor",e.BladeArmorPowerCells="BLADE-51b Tesla Armor: Power Cells Upgrade",e.BladeArmorEnergyShielding="BLADE-51b Tesla Armor: Energy Shielding Upgrade",e.BladeArmorUnibeam="BLADE-51b Tesla Armor: Unibeam Upgrade",e.BladeArmorOmnibeam="BLADE-51b Tesla Armor: Omnibeam Upgrade",e.BladeArmorIPU="BLADE-51b Tesla Armor: IPU Upgrade",e.BladesSimulacrum="The Blade's Simulacrum",e.StaneksGift1="Stanek's Gift - Genesis",e.StaneksGift2="Stanek's Gift - Awakening",e.StaneksGift3="Stanek's Gift - Serenity",e.MightOfAres="SoA - Might of Ares",e.WisdomOfAthena="SoA - Wisdom of Athena",e.TrickeryOfHermes="SoA - Trickery of Hermes",e.BeautyOfAphrodite="SoA - Beauty of Aphrodite",e.ChaosOfDionysus="SoA - Chaos of Dionysus",e.FloodOfPoseidon="SoA - Flood of Poseidon",e.HuntOfArtemis="SoA - Hunt of Artemis",e.KnowledgeOfApollo="SoA - Knowledge of Apollo",e.WKSharmonizer="SoA - phyzical WKS harmonizer"}(r||(r={}))},15571:(e,t,n)=>{"use strict";n.d(t,{e:()=>r});class r{level=1;constructor(e){this.name=e}}},16937:(e,t,n)=>{"use strict";n.d(t,{n:()=>A});var r=n(67294),a=n(8618),o=n(57584),i=n(37061),s=n(18994),l=n(93936),c=n(81138),u=n(56798),m=n(17575),f=n(30120),h=n(28881),d=n(78016),p=n(51087),g=n(54538),y=n(49173),b=n(33244),v=n(73440),k=n(72938),w=n(22115),E=n(40238),S=n(39401),C=n(95173),x=n(88775);const N=()=>{var e;const t=(null===(e=y.J5.augmentations.find((e=>e.name===b.AugmentationName.NeuroFluxGovernor)))||void 0===e?void 0:e.level)??0;return t>0?r.createElement(h.Z,{sx:{p:1}},r.createElement(c.Z,{variant:"h5",color:p.Z.theme.info},"NeuroFlux Governor - Level ",t),r.createElement(c.Z,{color:p.Z.theme.info,whiteSpace:"pre-wrap"},v.x[b.AugmentationName.NeuroFluxGovernor].stats),r.createElement(c.Z,{color:p.Z.theme.info},"The power of ",b.AugmentationName.NeuroFluxGovernor," increases with blood donations from players in real life. Learn more ",r.createElement(S.Z,{onClick:()=>{C.e.emit(r.createElement(r.Fragment,null,r.createElement(c.Z,{variant:"h5"},"Bitburner blood donation community program"),r.createElement(c.Z,null,"The blood donation program is a continuous real life event started on 2022-04-01. To participate simply go donate blood, plasma, or platelets to your local organization and take a picture as proof (hide your personal information). Then send the proof to hydroflame on reddit or discord."),r.createElement(c.Z,null,"Currently accumulated ",k.t.Donations," donations.")))}},"here"))):r.createElement(r.Fragment,null)},M=()=>y.J5.entropy>0?r.createElement(h.Z,{sx:{p:1}},r.createElement(c.Z,{variant:"h5",color:p.Z.theme.error},"Entropy Virus - Level ",y.J5.entropy),r.createElement(c.Z,{color:p.Z.theme.error},r.createElement("b",null,"All multipliers decreased by:")," ",(0,w.$j)(100*(1-k.t.EntropyEffect**y.J5.entropy),3),"% (multiplicative)")):r.createElement(r.Fragment,null);function A(e){var t;const[n,v]=(0,r.useState)(!1),k=(0,x.S)(200);return r.createElement(d.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0}},r.createElement(c.Z,{variant:"h4"},"Augmentations"),r.createElement(f.Z,{sx:{mb:1}},r.createElement(h.Z,{sx:{p:1}},r.createElement(c.Z,{variant:"h5",color:"primary",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},"Purchased Augmentations",r.createElement(m.Z,{title:r.createElement(r.Fragment,null,r.createElement(c.Z,null,"Below is a list of all Augmentations you have purchased but not yet installed. Click the button below to install them."),r.createElement(c.Z,null,"WARNING: Installing your Augmentations resets most of your progress, including:"),r.createElement("br",null),r.createElement(c.Z,null,"- Stats/Skill levels and Experience"),r.createElement(c.Z,null,"- Money"),r.createElement(c.Z,null,"- Scripts on every computer but your home computer"),r.createElement(c.Z,null,"- Purchased servers"),r.createElement(c.Z,null,"- Hacknet Nodes"),r.createElement(c.Z,null,"- Faction/Company reputation"),r.createElement(c.Z,null,"- Stocks"),r.createElement("br",null),r.createElement(c.Z,null,"Installing Augmentations lets you start over with the perks and benefits granted by all of the Augmentations you have ever installed. Also, you will keep any scripts and RAM/Core upgrades on your home computer (but you will lose all programs besides NUKE.exe)"))},r.createElement(E.Z,{sx:{ml:1,mb:.5},color:"info"}))),r.createElement(g.c,{open:n,onClose:()=>v(!1),onConfirm:e.installAugmentationsFn,confirmationText:r.createElement(r.Fragment,null,"Installing will reset",r.createElement("br",null),r.createElement("br",null),"- money",r.createElement("br",null),"- skill / experience",r.createElement("br",null),"- every server except home",r.createElement("br",null),"- factions and reputation",r.createElement("br",null),r.createElement("br",null),"You will keep:",r.createElement("br",null),r.createElement("br",null),"- All scripts on home",r.createElement("br",null),"- home ram and cores",r.createElement("br",null),r.createElement("br",null),"It is recommended to install several Augmentations at once. Preferably everything from any faction of your choosing.")}),r.createElement(f.Z,{sx:{display:"grid",width:"100%",gridTemplateColumns:"1fr 1fr"}},r.createElement(m.Z,{title:r.createElement(c.Z,null,"'I never asked for this'")},r.createElement("span",null,r.createElement(u.Z,{sx:{width:"100%"},disabled:0===y.J5.queuedAugmentations.length,onClick:function(){p.Z.SuppressBuyAugmentationConfirmation?e.installAugmentationsFn():v(!0)}},"Install Augmentations"))),r.createElement(m.Z,{title:r.createElement(c.Z,null,"It's always a good idea to backup/export your save!")},r.createElement(u.Z,{sx:{width:"100%",color:p.Z.theme.successlight},onClick:function(){e.exportGameFn(),k()}},"Backup Save ",(0,l.B0)()?"(+1 favor to all factions)":"")))),y.J5.queuedAugmentations.length>0?r.createElement(f.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 3fr"}},r.createElement(i.r,null),r.createElement(o.f,null)):r.createElement(h.Z,{sx:{p:1}},r.createElement(c.Z,null,"No Augmentations have been purchased yet"))),r.createElement(f.Z,{sx:{my:1,display:"grid",gridTemplateColumns:`repeat(${+!!(((null===(t=y.J5.augmentations.find((e=>e.name===b.AugmentationName.NeuroFluxGovernor)))||void 0===t?void 0:t.level)??0)>0)+ +!!(y.J5.entropy>0)}, 1fr)`,gap:1}},r.createElement(N,null),r.createElement(M,null)),r.createElement(f.Z,null,r.createElement(a.Y,null)),r.createElement(s.V,null))}},8618:(e,t,n)=>{"use strict";n.d(t,{Y:()=>y});var r=n(30120),a=n(28881),o=n(81138),i=n(95309),s=n(56798),l=n(97212),c=n(17575),u=n(67294),m=n(56412),f=n(51087),h=n(49173),d=n(73440),p=n(33244),g=n(88775);function y(){const e=(0,g.S)(),t=h.J5.augmentations.slice().filter((e=>e.name!==p.AugmentationName.NeuroFluxGovernor)),[n,y]=(0,u.useState)(t[0]);return f.Z.OwnedAugmentationsOrder===m.E.Alphabetically&&t.sort(((e,t)=>e.name.localeCompare(t.name))),u.createElement(r.Z,{sx:{width:"100%"}},u.createElement(a.Z,{sx:{p:1}},u.createElement(o.Z,{variant:"h5"},"Installed Augmentations"),u.createElement(r.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},u.createElement(c.Z,{title:"Sorts the Augmentations alphabetically in numeral order"},u.createElement(s.Z,{sx:{width:"100%"},onClick:function(){f.Z.OwnedAugmentationsOrder=m.E.Alphabetically,e()}},"Sort in Order")),u.createElement(c.Z,{title:"Sorts the Augmentations based on when you acquired them (same as default)"},u.createElement(s.Z,{sx:{width:"100%"},onClick:function(){f.Z.OwnedAugmentationsOrder=m.E.AcquirementTime,e()}},"Sort by Time of Acquirement")))),t.length>0?u.createElement(a.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 3fr"}},u.createElement(r.Z,null,u.createElement(l.Z,{sx:{height:400,overflowY:"scroll",borderRight:`1px solid ${f.Z.theme.welllight}`}},t.map(((e,t)=>u.createElement(i.Z,{key:t+1,onClick:()=>y(e),selected:n===e},u.createElement(o.Z,null,e.name)))))),u.createElement(r.Z,{sx:{m:1}},u.createElement(o.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},n.name),u.createElement(o.Z,{sx:{maxHeight:350,overflowY:"scroll",whiteSpace:"pre-wrap"}},(()=>{const e=d.x[n.name],t="string"==typeof e.info?u.createElement("span",null,e.info):e.info;return u.createElement(u.Fragment,null,t,u.createElement("br",null),u.createElement("br",null),e.stats)})()))):u.createElement(a.Z,{sx:{p:1}},u.createElement(o.Z,null,"No Augmentations have been installed yet")))}},57584:(e,t,n)=>{"use strict";n.d(t,{f:()=>b});var r=n(35315),a=n(81138),o=n(10848),i=n(61702),s=n(97212),l=n(28881),c=n(67294),u=n(62850),m=n(97740),f=n(49173),h=n(51087),d=n(22115),p=n(73440);function g(e){return 1===e.mult||0===f.J5.sourceFileLvl(5)?c.createElement(a.Z,{color:e.color},(0,d.T3)(e.base)):c.createElement(a.Z,{color:e.color},c.createElement("span",{style:{opacity:.5}},(0,d.T3)(e.base))," ",(0,d.T3)(e.base*e.mult))}function y(e){const t=e.rows.map((e=>{const{mult:t,current:n,augmented:s,bnMult:l=1,color:u=h.Z.theme.primary}=e;if(!isNaN(s))return c.createElement(o.ZP,{key:t,disableGutters:!0,sx:{py:0}},c.createElement(i.Z,{sx:{my:.1},primary:c.createElement(a.Z,{color:u},c.createElement("b",null,t)),secondary:c.createElement("span",{style:{display:"flex",alignItems:"center",flexWrap:"wrap"}},c.createElement(g,{base:n,mult:l,color:u}),c.createElement(r.Z,{fontSize:"small",color:"success",sx:{mb:.5,mx:1}}),c.createElement(g,{base:s,mult:l,color:h.Z.theme.success})),disableTypography:!0}))})).filter((e=>void 0!==e));return t.length>0?c.createElement(s.Z,{disablePadding:!0},t):c.createElement(c.Fragment,null)}function b(){const e=function(){let e=(0,u.A7)();for(const t of f.J5.queuedAugmentations){const n=p.x[t.name];e=(0,u.VA)(e,n.mults)}return e}(),t=[...[{mult:"Hacking Chance",current:f.J5.mults.hacking_chance,augmented:f.J5.mults.hacking_chance*e.hacking_chance},{mult:"Hacking Speed",current:f.J5.mults.hacking_speed,augmented:f.J5.mults.hacking_speed*e.hacking_speed},{mult:"Hacking Money",current:f.J5.mults.hacking_money,augmented:f.J5.mults.hacking_money*e.hacking_money,bnMult:m.dQ.ScriptHackMoney},{mult:"Hacking Growth",current:f.J5.mults.hacking_grow,augmented:f.J5.mults.hacking_grow*e.hacking_grow},{mult:"Hacking Level",current:f.J5.mults.hacking,augmented:f.J5.mults.hacking*e.hacking,bnMult:m.dQ.HackingLevelMultiplier},{mult:"Hacking Experience",current:f.J5.mults.hacking_exp,augmented:f.J5.mults.hacking_exp*e.hacking_exp,bnMult:m.dQ.HackExpGain}].map((e=>Object.defineProperty(e,"color",{value:h.Z.theme.hack}))),...[{mult:"Strength Level",current:f.J5.mults.strength,augmented:f.J5.mults.strength*e.strength,bnMult:m.dQ.StrengthLevelMultiplier},{mult:"Strength Experience",current:f.J5.mults.strength_exp,augmented:f.J5.mults.strength_exp*e.strength_exp},{mult:"Defense Level",current:f.J5.mults.defense,augmented:f.J5.mults.defense*e.defense,bnMult:m.dQ.DefenseLevelMultiplier},{mult:"Defense Experience",current:f.J5.mults.defense_exp,augmented:f.J5.mults.defense_exp*e.defense_exp},{mult:"Dexterity Level",current:f.J5.mults.dexterity,augmented:f.J5.mults.dexterity*e.dexterity,bnMult:m.dQ.DexterityLevelMultiplier},{mult:"Dexterity Experience",current:f.J5.mults.dexterity_exp,augmented:f.J5.mults.dexterity_exp*e.dexterity_exp},{mult:"Agility Level",current:f.J5.mults.agility,augmented:f.J5.mults.agility*e.agility,bnMult:m.dQ.AgilityLevelMultiplier},{mult:"Agility Experience",current:f.J5.mults.agility_exp,augmented:f.J5.mults.agility_exp*e.agility_exp}].map((e=>Object.defineProperty(e,"color",{value:h.Z.theme.combat}))),{mult:"Charisma Level",current:f.J5.mults.charisma,augmented:f.J5.mults.charisma*e.charisma,bnMult:m.dQ.CharismaLevelMultiplier,color:h.Z.theme.cha},{mult:"Charisma Experience",current:f.J5.mults.charisma_exp,augmented:f.J5.mults.charisma_exp*e.charisma_exp,color:h.Z.theme.cha}],n=[{mult:"Hacknet Node Production",current:f.J5.mults.hacknet_node_money,augmented:f.J5.mults.hacknet_node_money*e.hacknet_node_money,bnMult:m.dQ.HacknetNodeMoney},{mult:"Hacknet Node Purchase Cost",current:f.J5.mults.hacknet_node_purchase_cost,augmented:f.J5.mults.hacknet_node_purchase_cost*e.hacknet_node_purchase_cost},{mult:"Hacknet Node RAM Upgrade Cost",current:f.J5.mults.hacknet_node_ram_cost,augmented:f.J5.mults.hacknet_node_ram_cost*e.hacknet_node_ram_cost},{mult:"Hacknet Node Core Purchase Cost",current:f.J5.mults.hacknet_node_core_cost,augmented:f.J5.mults.hacknet_node_core_cost*e.hacknet_node_core_cost},{mult:"Hacknet Node Level Upgrade Cost",current:f.J5.mults.hacknet_node_level_cost,augmented:f.J5.mults.hacknet_node_level_cost*e.hacknet_node_level_cost},{mult:"Company Reputation Gain",current:f.J5.mults.company_rep,augmented:f.J5.mults.company_rep*e.company_rep,color:h.Z.theme.combat},{mult:"Faction Reputation Gain",current:f.J5.mults.faction_rep,augmented:f.J5.mults.faction_rep*e.faction_rep,bnMult:m.dQ.FactionWorkRepGain,color:h.Z.theme.combat},{mult:"Salary",current:f.J5.mults.work_money,augmented:f.J5.mults.work_money*e.work_money,bnMult:m.dQ.CompanyWorkMoney,color:h.Z.theme.money},{mult:"Crime Success Chance",current:f.J5.mults.crime_success,augmented:f.J5.mults.crime_success*e.crime_success,color:h.Z.theme.combat},{mult:"Crime Money",current:f.J5.mults.crime_money,augmented:f.J5.mults.crime_money*e.crime_money,bnMult:m.dQ.CrimeMoney,color:h.Z.theme.money}];return f.J5.canAccessBladeburner()&&m.dQ.BladeburnerRank>0&&n.push({mult:"Bladeburner Success Chance",current:f.J5.mults.bladeburner_success_chance,augmented:f.J5.mults.bladeburner_success_chance*e.bladeburner_success_chance},{mult:"Bladeburner Max Stamina",current:f.J5.mults.bladeburner_max_stamina,augmented:f.J5.mults.bladeburner_max_stamina*e.bladeburner_max_stamina},{mult:"Bladeburner Stamina Gain",current:f.J5.mults.bladeburner_stamina_gain,augmented:f.J5.mults.bladeburner_stamina_gain*e.bladeburner_stamina_gain},{mult:"Bladeburner Field Analysis",current:f.J5.mults.bladeburner_analysis,augmented:f.J5.mults.bladeburner_analysis*e.bladeburner_analysis}),c.createElement(l.Z,{sx:{p:1,maxHeight:400,overflowY:"scroll",display:"flex",flexDirection:"column",flexWrap:"wrap",gap:1}},c.createElement(y,{rows:t}),c.createElement(y,{rows:n}))}},75012:(e,t,n)=>{"use strict";n.d(t,{b:()=>N});var r=n(70983),a=n(7542),o=n(11886),i=n(90912),s=n(68426),l=n(17575),c=n(81138),u=n(78016),m=n(28881),f=n(30120),h=n(56798),d=n(67294),p=n(49173),g=n(51087),y=n(22115),b=n(33244),v=n(73440),k=n(25398),w=n(27889),E=n(88775);const S=e=>{const t=e.aug.prereqs.filter((e=>p.J5.hasAugmentation(e))),n=e.aug.prereqs.length>0&&t.length===e.aug.prereqs.length;return d.createElement(l.Z,{title:d.createElement(d.Fragment,null,d.createElement(c.Z,{sx:{color:g.Z.theme.money}},"This Augmentation has the following pre-requisite(s):"),e.aug.prereqs.map((e=>d.createElement(x,{fulfilled:p.J5.hasAugmentation(e),value:e,color:g.Z.theme.money,key:e}))))},d.createElement(c.Z,{sx:{ml:1,fontSize:"0.9rem",display:"flex",alignItems:"center",color:n?g.Z.theme.successlight:g.Z.theme.error,gridArea:"prereqs"}},n?d.createElement(d.Fragment,null,d.createElement(r.Z,{fontSize:"small",sx:{mr:1}}),"Pre-requisites Owned"):d.createElement(d.Fragment,null,d.createElement(a.Z,{fontSize:"small",sx:{mr:1}}),"Missing ",e.aug.prereqs.length-t.length," pre-requisite(s)")))},C=e=>d.createElement(l.Z,{title:d.createElement(d.Fragment,null,d.createElement(c.Z,{sx:{color:g.Z.theme.money}},"This Augmentation can only be acquired from the following source(s):"),d.createElement("ul",null,d.createElement(c.Z,{sx:{color:g.Z.theme.money}},d.createElement("li",null,d.createElement("b",null,e.aug.factions[0])," faction"),p.J5.isAwareOfGang()&&!e.aug.isSpecial&&d.createElement("li",null,"Certain ",d.createElement("b",null,"gangs")),p.J5.canAccessGrafting()&&(!e.aug.isSpecial||e.aug.factions.includes(b.FactionName.Bladeburners))&&e.aug.name!==b.AugmentationName.TheRedPill&&d.createElement("li",null,d.createElement("b",null,"Grafting")))))},d.createElement(o.Z,{fontSize:"small",sx:{ml:1,color:g.Z.theme.money,transform:"rotate(180deg)",gridArea:"exclusive"}})),x=e=>d.createElement(c.Z,{sx:{display:"flex",alignItems:"center",color:e.fulfilled?e.color:g.Z.theme.error}},e.fulfilled?d.createElement(i.Z,{sx:{mr:1}}):d.createElement(s.Z,{sx:{mr:1}}),e.value),N=e=>d.createElement(u.Z,{maxWidth:"lg",disableGutters:!0,sx:{mx:0,display:"grid",gridTemplateColumns:"repeat(1, 1fr)",gap:.75}},e.augNames.map((t=>d.createElement(M,{key:t,parent:e,augName:t,owned:!1}))),e.ownedAugNames.map((t=>d.createElement(M,{key:t,parent:e,augName:t,owned:!0}))));function M(e){const[t,n]=(0,d.useState)(!1),r=(0,E.S)();(0,d.useEffect)((()=>{if(e.owned)return;const t=setInterval(r,600);return()=>clearInterval(t)}),[e.owned,r]);const a=v.x[e.augName];if(!a)return d.createElement(d.Fragment,null);const o=a.getLevel(),i=(0,w.hV)(a),s=e.parent.sleeveAugs?a.baseCost:i.moneyCost,u=i.repCost,N="string"==typeof a.info?d.createElement("span",null,a.info):a.info,M=d.createElement(d.Fragment,null,N,d.createElement("br",null),d.createElement("br",null),a.stats);return d.createElement(m.Z,{sx:{p:.5,display:"grid",gridTemplateColumns:"minmax(0, 4fr) 1.4fr",gap:1,opacity:e.owned?.75:1,minWidth:"1100px"}},d.createElement(d.Fragment,null,d.createElement(f.Z,{sx:{display:"flex",alignItems:"center"}},d.createElement(h.Z,{onClick:()=>e.parent.purchaseAugmentation(a,(e=>{n(e)})),disabled:!e.parent.canPurchase(a)||e.owned,sx:{width:"48px",height:"36px",float:"left",clear:"none",mr:1}},e.owned?"Owned":"Buy"),d.createElement(f.Z,{sx:{maxWidth:e.owned?"100%":"85%"}},d.createElement(f.Z,{sx:{display:"grid",alignItems:"center",gridTemplateAreas:'"title exclusive prereqs"'}},d.createElement(l.Z,{title:d.createElement(d.Fragment,null,d.createElement(c.Z,{variant:"h5"},a.name,a.name===b.AugmentationName.NeuroFluxGovernor&&` - Level ${o+1}`),d.createElement(c.Z,{whiteSpace:"pre-wrap"},M))},d.createElement(c.Z,{sx:{gridArea:"title",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",color:e.owned||!e.parent.canPurchase(a)?g.Z.theme.disabled:g.Z.theme.primary}},a.name,a.name===b.AugmentationName.NeuroFluxGovernor&&` - Level ${o+1}`)),1===a.factions.length&&!e.parent.sleeveAugs&&d.createElement(C,{aug:a}),a.prereqs.length>0&&!e.parent.sleeveAugs&&d.createElement(S,{aug:a})))),e.owned||d.createElement(f.Z,{sx:{display:"grid",alignItems:"center",gridTemplateColumns:"1fr 1fr"}},d.createElement(x,{fulfilled:0===s||p.J5.money>s,value:(0,y.lb)(s),color:g.Z.theme.money}),void 0!==e.parent.rep&&d.createElement(x,{fulfilled:e.parent.rep>=u,value:`${(0,y.$n)(u)} rep`,color:g.Z.theme.rep})),g.Z.SuppressBuyAugmentationConfirmation||d.createElement(k.t,{open:t,onClose:()=>{n(!1),e.parent.rerender()},faction:e.parent.faction,aug:a})))}},25398:(e,t,n)=>{"use strict";n.d(t,{t:()=>m});var r=n(67294),a=n(94542),o=n(27889),i=n(72360),s=n(48672),l=n(49173),c=n(81138),u=n(56798);function m(e){let{aug:t,faction:n,onClose:m,open:f}=e;return!t||!n||!(0,o.nD)(t)&&l.J5.hasAugmentation(t.name)?r.createElement(r.Fragment,null):r.createElement(s.u,{open:f,onClose:m},r.createElement(c.Z,{variant:"h4"},t.name),r.createElement(c.Z,{whiteSpace:"pre-wrap"},t.info,r.createElement("br",null),r.createElement("br",null),t.stats,r.createElement("br",null),r.createElement("br",null),"Would you like to purchase the ",t.name," Augmentation for ",r.createElement(i.W,{money:(0,o.hV)(t).moneyCost}),"?",r.createElement("br",null),r.createElement("br",null)),r.createElement(u.Z,{autoFocus:!0,onClick:()=>{(0,a.Gl)(t,n),m()}},"Purchase"))}},37061:(e,t,n)=>{"use strict";n.d(t,{r:()=>f});var r=n(17575),a=n(81138),o=n(61702),i=n(28881),s=n(97212),l=n(67294),c=n(49173),u=n(73440),m=n(33244);function f(){const e=[];let t=-1;for(let e=c.J5.queuedAugmentations.length-1;e>=0;e--)if(c.J5.queuedAugmentations[e].name===m.AugmentationName.NeuroFluxGovernor){t=e;break}for(let n=0;n{const e="string"==typeof f.info?l.createElement("span",null,f.info):f.info;return l.createElement(l.Fragment,null,e,l.createElement("br",null),l.createElement("br",null),f.stats)})()),enterNextDelay:500,key:s},l.createElement(o.Z,{sx:{px:2,py:1},primary:s})))}return l.createElement(i.Z,{sx:{py:1,maxHeight:400,overflowY:"scroll"}},l.createElement(s.Z,{sx:{height:400,overflowY:"scroll"},disablePadding:!0},e))}},18994:(e,t,n)=>{"use strict";n.d(t,{V:()=>y});var r=n(28881),a=n(95309),o=n(61702),i=n(30120),s=n(97212),l=n(81138),c=n(67294),u=n(52107),m=n(49173),f=n(56412),h=n(51087),d=n(16264);const p=e=>{if(-1===e)return{info:c.createElement(c.Fragment,null,"This Source-File can only be acquired with obscure knowledge of the game, javascript, and the web ecosystem.",c.createElement("br",null),c.createElement("br",null),"It increases all of the player's multipliers by 0.1%",c.createElement("br",null),c.createElement("br",null),"You have found the following exploits:",c.createElement("br",null),c.createElement("br",null),m.J5.exploits.map((e=>c.createElement(c.Fragment,{key:e},"* ",(0,u.NK)(e),c.createElement("br",null))))),lvl:m.J5.exploits.length,n:-1,name:"Source-File -1: Exploits in the BitNodes"};const t="SourceFile"+e,n=d.J[t];return null==n?(console.error(`Invalid source file number: ${e}`),null):n},g=e=>{let t;switch(e.n){case 12:t="∞";break;case-1:t=Object.keys(u.VX).length;break;default:t="3"}return t};function y(){var e;const t=new Map(m.J5.sourceFiles),n=m.J5.exploits;n.length>0&&t.set(-1,n.length);const u=[...t];h.Z.OwnedAugmentationsOrder===f.E.Alphabetically&&u.sort(((e,t)=>{let[n,r]=e,[a,o]=t;return n-a}));const[d,y]=(0,c.useState)((()=>{if(0===u.length)return null;const[e,t]=u[0];return{n:e,lvl:t}}));return d?c.createElement(i.Z,{sx:{width:"100%",mt:1}},c.createElement(r.Z,{sx:{p:1}},c.createElement(l.Z,{variant:"h5"},"Source Files")),c.createElement(r.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 3fr"}},c.createElement(i.Z,null,c.createElement(s.Z,{sx:{height:400,overflowY:"scroll",borderRight:`1px solid ${h.Z.theme.welllight}`},disablePadding:!0},u.map(((e,t)=>{let[n,r]=e;const i=p(n);if(!i)return;const s=g(i);return c.createElement(a.Z,{key:t+1,onClick:()=>y({n,lvl:r}),selected:d.n===n,sx:{py:0}},c.createElement(o.Z,{disableTypography:!0,primary:c.createElement(l.Z,null,i.name),secondary:c.createElement(l.Z,null,"Level ",r," / ",s)}))})))),c.createElement(i.Z,{sx:{m:1}},c.createElement(l.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},null===(e=p(d.n))||void 0===e?void 0:e.name),c.createElement(l.Z,{sx:{maxHeight:350,overflowY:"scroll"}},(()=>{const e=p(d.n);if(!e)return;const t=g(e);return c.createElement(c.Fragment,null,"Level ",d.lvl," / ",t,c.createElement("br",null),c.createElement("br",null),e.info)})())))):c.createElement(c.Fragment,null)}},99745:(e,t,n)=>{"use strict";n.d(t,{A7:()=>u,JN:()=>c,cm:()=>m,j2:()=>f,tK:()=>l});var r=n(67294),a=n(49173),o=n(33244),i=n(97740);class s{constructor(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:r.createElement(r.Fragment,null);this.number=e,this.difficulty=t,this.name=n,this.desc=a,this.info=o}}const l={};function c(){l.BitNode1=new s(1,0,"Source Genesis","The original BitNode",r.createElement(r.Fragment,null,"The first BitNode created by the Enders to imprison the minds of humans. It became the prototype and testing-grounds for all of the BitNodes that followed.",r.createElement("br",null),r.createElement("br",null),"This is the first BitNode that you play through. It has no special modifications or mechanics.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 1, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets the player start with 32GB of RAM on his/her home computer when entering a new BitNode, and also increases all of the player's multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 16%",r.createElement("br",null),"Level 2: 24%",r.createElement("br",null),"Level 3: 28%")),l.BitNode2=new s(2,0,"Rise of the Underworld","From the shadows, they rose",r.createElement(r.Fragment,null,"From the shadows, they rose.",r.createElement("br",null),r.createElement("br",null),"Organized crime groups quickly filled the void of power left behind from the collapse of Western government in the 2050s. As society and civilization broke down, people quickly succumbed to the innate human impulse of evil and savagery. The organized crime factions quickly rose to the top of the modern world.",r.createElement("br",null),r.createElement("br",null),"Certain Factions (",o.FactionName.SlumSnakes,", ",o.FactionName.Tetrads,", ",o.FactionName.TheSyndicate,","," ",o.FactionName.TheDarkArmy,", ",o.FactionName.SpeakersForTheDead,", ",o.FactionName.NiteSec,", ",o.FactionName.TheBlackHand,") give the player the ability to form and manage their own gangs. These gangs will earn the player money and reputation with the corresponding Faction",r.createElement("br",null),"Every Augmentation in the game will be available through the Factions listed above",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 2, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File allows you to form gangs in other BitNodes once your karma decreases to a certain value. It also increases the player's crime success rate, crime money, and charisma multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 24%",r.createElement("br",null),"Level 2: 36%",r.createElement("br",null),"Level 3: 42%")),l.BitNode3=new s(3,0,"Corporatocracy","The Price of Civilization",r.createElement(r.Fragment,null,"Our greatest illusion is that a healthy society can revolve around a single-minded pursuit of wealth.",r.createElement("br",null),r.createElement("br",null),"Sometime in the early 21st century economic and political globalization turned the world into a corporatocracy, and it never looked back. Now, the privileged elite will happily bankrupt their own countrymen, decimate their own community, and evict their neighbors from houses in their desperate bid to increase their wealth.",r.createElement("br",null),r.createElement("br",null),"In this BitNode you can create and manage your own corporation. Running a successful corporation has the potential of generating massive profits.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 3, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets you create corporations on other BitNodes (although some BitNodes will disable this mechanic) and level 3 permanently unlocks the full API. This Source-File also increases your charisma and company salary multipliers by:",r.createElement("br",null),"Level 1: 8%",r.createElement("br",null),"Level 2: 12%",r.createElement("br",null),"Level 3: 14%")),l.BitNode4=new s(4,1,"The Singularity","The Man and the Machine",r.createElement(r.Fragment,null,"The Singularity has arrived. The human race is gone, replaced by artificially superintelligent beings that are more machine than man. ",r.createElement("br",null),r.createElement("br",null),r.createElement("br",null),"In this BitNode you will gain access to a new set of Netscript Functions known as Singularity Functions. These functions allow you to control most aspects of the game through scripts, including working for factions/companies, purchasing/installing Augmentations, and creating programs.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 4, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets you access and use the Singularity Functions in other BitNodes. Each level of this Source-File reduces the RAM cost of singularity functions:",r.createElement("br",null),"Level 1: 16x",r.createElement("br",null),"Level 2: 4x",r.createElement("br",null),"Level 3: 1x")),l.BitNode5=new s(5,1,"Artificial Intelligence","Posthuman",r.createElement(r.Fragment,null,"They said it couldn't be done. They said the human brain, along with its consciousness and intelligence, couldn't be replicated. They said the complexity of the brain results from unpredictable, nonlinear interactions that couldn't be modeled by 1's and 0's. They were wrong.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 5, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File grants you a special new stat called Intelligence. Intelligence is unique because it is permanent and persistent (it never gets reset back to 1). However gaining Intelligence experience is much slower than other stats. Higher Intelligence levels will boost your production for many actions in the game. ",r.createElement("br",null),r.createElement("br",null),"In addition, this Source-File will unlock the getBitNodeMultipliers() Netscript function and let you start with Formulas.exe, and will also raise all of your hacking-related multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 8%",r.createElement("br",null),"Level 2: 12%",r.createElement("br",null),"Level 3: 14%")),l.BitNode6=new s(6,1,o.FactionName.Bladeburners,"Like Tears in Rain",r.createElement(r.Fragment,null,"In the middle of the 21st century, ",o.FactionName.OmniTekIncorporated," began designing and manufacturing advanced synthetic androids, or Synthoids for short. They achieved a major technological breakthrough in the sixth generation of their Synthoid design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent than the humans that had created them.",r.createElement("br",null),r.createElement("br",null),"In this BitNode you will be able to access the ",o.FactionName.Bladeburners," Division at the NSA, which provides a new mechanic for progression.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 6, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File allows you to access the NSA's ",o.FactionName.Bladeburners," Division in other BitNodes. In addition, this Source-File will raise both the level and experience gain rate of all your combat stats by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 8%",r.createElement("br",null),"Level 2: 12%",r.createElement("br",null),"Level 3: 14%")),l.BitNode7=new s(7,2,`${o.FactionName.Bladeburners} 2079`,"More human than humans",r.createElement(r.Fragment,null,"In the middle of the 21st century, you were doing cutting-edge work at ",o.FactionName.OmniTekIncorporated," as part of the AI design team for advanced synthetic androids, or Synthoids for short. You helped achieve a major technological breakthrough in the sixth generation of the company's Synthoid design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent than the humans that had created them.",r.createElement("br",null),r.createElement("br",null),"In this BitNode you will be able to access the ",o.FactionName.Bladeburners," API, which allows you to access"," ",o.FactionName.Bladeburners," functionality through Netscript.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 7, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File allows you to access the ",o.FactionName.Bladeburners," Netscript API in other BitNodes. In addition, this Source-File will increase all of your ",o.FactionName.Bladeburners," ","multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 8%",r.createElement("br",null),"Level 2: 12%",r.createElement("br",null),"Level 3: 14%")),l.BitNode8=new s(8,2,"Ghost of Wall Street","Money never sleeps",r.createElement(r.Fragment,null,"You are trying to make a name for yourself as an up-and-coming hedge fund manager on Wall Street.",r.createElement("br",null),r.createElement("br",null),"In this BitNode:",r.createElement("br",null),r.createElement("br",null),"You start with $250 million",r.createElement("br",null),"You start with a WSE membership and access to the TIX API",r.createElement("br",null),"You are able to short stocks and place different types of orders (limit/stop)",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 8, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File grants the following benefits:",r.createElement("br",null),r.createElement("br",null),"Level 1: Permanent access to WSE and TIX API",r.createElement("br",null),"Level 2: Ability to short stocks in other BitNodes",r.createElement("br",null),"Level 3: Ability to use limit/stop orders in other BitNodes",r.createElement("br",null),r.createElement("br",null),"This Source-File also increases your hacking growth multipliers by:",r.createElement("br",null),"Level 1: 12%",r.createElement("br",null),"Level 2: 18%",r.createElement("br",null),"Level 3: 21%")),l.BitNode9=new s(9,2,"Hacktocracy","Hacknet Unleashed",r.createElement(r.Fragment,null,"When ",o.FactionName.FulcrumSecretTechnologies," released their open-source Linux distro Chapeau, it quickly became the OS of choice for the underground hacking community. Chapeau became especially notorious for powering the Hacknet, a global, decentralized network used for nefarious purposes. ",o.FactionName.FulcrumSecretTechnologies," ","quickly abandoned the project and dissociated themselves from it.",r.createElement("br",null),r.createElement("br",null),"This BitNode unlocks the Hacknet Server, an upgraded version of the Hacknet Node. Hacknet Servers generate hashes, which can be spent on a variety of different upgrades.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 9, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File grants the following benefits:",r.createElement("br",null),r.createElement("br",null),"Level 1: Permanently unlocks the Hacknet Server in other BitNodes",r.createElement("br",null),"Level 2: You start with 128GB of RAM on your home computer when entering a new BitNode",r.createElement("br",null),"Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode",r.createElement("br",null),r.createElement("br",null),"(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT when installing Augmentations)",r.createElement("br",null),r.createElement("br",null),"This Source-File also increases hacknet production and reduces hacknet costs by:",r.createElement("br",null),"Level 1: 12%",r.createElement("br",null),"Level 2: 18%",r.createElement("br",null),"Level 3: 21%")),l.BitNode10=new s(10,2,"Digital Carbon","Your body is not who you are",r.createElement(r.Fragment,null,"In 2084, VitaLife unveiled to the world the Persona Core, a technology that allowed people to digitize their consciousness. Their consciousness could then be transferred into Synthoids or other bodies by transmitting the digitized data. Human bodies became nothing more than 'sleeves' for the human consciousness. Mankind had finally achieved immortality - at least for those that could afford it.",r.createElement("br",null),r.createElement("br",null),"This BitNode unlocks Sleeve and grafting technologies. Sleeve technology allows you to:",r.createElement("br",null),r.createElement("br",null),"1. Grafting: Visit VitaLife in New Tokyo to be able to obtain Augmentations without needing to install",r.createElement("br",null),"2. Duplicate Sleeves: Duplicate your consciousness into Synthoids, allowing you to perform different tasks synchronously.",r.createElement("br",null),r.createElement("br",null),"Grafting technology allows you to graft Augmentations, which is an alternative way of installing Augmentations.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 10, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File unlocks Sleeve technology, and the Grafting API in other BitNodes. Each level of this Source-File also grants you a Duplicate Sleeve")),l.BitNode11=new s(11,1,"The Big Crash","Okay. Sell it all.",r.createElement(r.Fragment,null,"The 2050s was defined by the massive amounts of violent civil unrest and anarchic rebellion that rose all around the world. It was this period of disorder that eventually lead to the governmental reformation of many global superpowers, most notably the USA and China. But just as the world was slowly beginning to recover from these dark times, financial catastrophe hit.",r.createElement("br",null),r.createElement("br",null),"In many countries, the high cost of trying to deal with the civil disorder bankrupted the governments. In all of this chaos and confusion, hackers were able to steal billions of dollars from the world's largest electronic banks, prompting an international banking crisis as governments were unable to bail out insolvent banks. Now, the world is slowly crumbling in the middle of the biggest economic crisis of all time.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 11, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File makes it so that company favor increases BOTH the player's salary and reputation gain rate at that company by 1% per favor (rather than just the reputation gain). This Source-File also increases the player's company salary and reputation gain multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 32%",r.createElement("br",null),"Level 2: 48%",r.createElement("br",null),"Level 3: 56%",r.createElement("br",null),r.createElement("br",null),"It also reduces the price increase for every aug bought by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 4%",r.createElement("br",null),"Level 2: 6%",r.createElement("br",null),"Level 3: 7%")),l.BitNode12=new s(12,0,"The Recursion","Repeat.",r.createElement(r.Fragment,null,"To iterate is human, to recurse divine.",r.createElement("br",null),r.createElement("br",null),"Every time this BitNode is destroyed, it becomes slightly harder. Destroying this BitNode will give you Source-File 12, or if you already have this Source-File it will upgrade its level. There is no maximum level for Source-File 12. Each level of Source-File 12 lets you start any BitNodes with NeuroFlux Governor equal to the level of this source file.")),l.BitNode13=new s(13,2,"They're lunatics","1 step back, 2 steps forward",r.createElement(r.Fragment,null,"With the invention of Augmentations in the 2040s a religious group known as the"," ",o.FactionName.ChurchOfTheMachineGod," has rallied far more support than anyone would have hoped.",r.createElement("br",null),r.createElement("br",null),'Their leader, Allison "Mother" Stanek is said to have created her own Augmentation whose power goes beyond any other. Find her in ',o.CityName.Chongqing," and gain her trust.",r.createElement("br",null),r.createElement("br",null),"Destroying this BitNode will give you Source-File 13, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets the ",o.FactionName.ChurchOfTheMachineGod," appear in other BitNodes.",r.createElement("br",null),r.createElement("br",null),"Each level of this Source-File increases the size of Stanek's Gift."))}const u=new i.Wu;function m(e,t){switch(e){case 1:return new i.Wu;case 2:return new i.Wu({HackingLevelMultiplier:.8,ServerGrowthRate:.8,ServerMaxMoney:.08,ServerStartingMoney:.4,PurchasedServerSoftcap:1.3,CrimeMoney:3,FactionPassiveRepGain:0,FactionWorkRepGain:.5,CorporationSoftcap:.9,CorporationDivisions:.9,InfiltrationMoney:3,StaneksGiftPowerMultiplier:2,StaneksGiftExtraSize:-6,WorldDaemonDifficulty:5});case 3:return new i.Wu({HackingLevelMultiplier:.8,ServerGrowthRate:.2,ServerMaxMoney:.04,ServerStartingMoney:.2,HomeComputerRamCost:1.5,PurchasedServerCost:2,PurchasedServerSoftcap:1.3,CompanyWorkMoney:.25,CrimeMoney:.25,HacknetNodeMoney:.25,ScriptHackMoney:.2,RepToDonateToFaction:.5,AugmentationMoneyCost:3,AugmentationRepCost:3,GangSoftcap:.9,GangUniqueAugs:.5,StaneksGiftPowerMultiplier:.75,StaneksGiftExtraSize:-2,WorldDaemonDifficulty:2});case 4:return new i.Wu({ServerMaxMoney:.1125,ServerStartingMoney:.75,PurchasedServerSoftcap:1.2,CompanyWorkMoney:.1,CrimeMoney:.2,HacknetNodeMoney:.05,ScriptHackMoney:.2,ClassGymExpGain:.5,CompanyWorkExpGain:.5,CrimeExpGain:.5,FactionWorkExpGain:.5,HackExpGain:.4,FactionWorkRepGain:.75,GangUniqueAugs:.5,StaneksGiftPowerMultiplier:1.5,StaneksGiftExtraSize:0,WorldDaemonDifficulty:3});case 5:return new i.Wu({ServerStartingSecurity:2,ServerStartingMoney:.5,PurchasedServerSoftcap:1.2,CrimeMoney:.5,HacknetNodeMoney:.2,ScriptHackMoney:.15,HackExpGain:.5,AugmentationMoneyCost:2,InfiltrationMoney:1.5,InfiltrationRep:1.5,CorporationValuation:.75,CorporationDivisions:.75,GangUniqueAugs:.5,StaneksGiftPowerMultiplier:1.3,StaneksGiftExtraSize:0,WorldDaemonDifficulty:1.5});case 6:return new i.Wu({HackingLevelMultiplier:.35,ServerMaxMoney:.2,ServerStartingMoney:.5,ServerStartingSecurity:1.5,PurchasedServerSoftcap:2,CompanyWorkMoney:.5,CrimeMoney:.75,HacknetNodeMoney:.2,ScriptHackMoney:.75,HackExpGain:.25,InfiltrationMoney:.75,CorporationValuation:.2,CorporationSoftcap:.9,CorporationDivisions:.8,GangSoftcap:.7,GangUniqueAugs:.2,DaedalusAugsRequirement:35,StaneksGiftPowerMultiplier:.5,StaneksGiftExtraSize:2,WorldDaemonDifficulty:2});case 7:return new i.Wu({HackingLevelMultiplier:.35,ServerMaxMoney:.2,ServerStartingMoney:.5,ServerStartingSecurity:1.5,PurchasedServerSoftcap:2,CompanyWorkMoney:.5,CrimeMoney:.75,HacknetNodeMoney:.2,ScriptHackMoney:.5,HackExpGain:.25,AugmentationMoneyCost:3,InfiltrationMoney:.75,FourSigmaMarketDataCost:2,FourSigmaMarketDataApiCost:2,CorporationValuation:.2,CorporationSoftcap:.9,CorporationDivisions:.8,BladeburnerRank:.6,BladeburnerSkillCost:2,GangSoftcap:.7,GangUniqueAugs:.2,DaedalusAugsRequirement:35,StaneksGiftPowerMultiplier:.9,StaneksGiftExtraSize:-1,WorldDaemonDifficulty:2});case 8:return new i.Wu({PurchasedServerSoftcap:4,CompanyWorkMoney:0,CrimeMoney:0,HacknetNodeMoney:0,ManualHackMoney:0,ScriptHackMoney:.3,ScriptHackMoneyGain:0,CodingContractMoney:0,RepToDonateToFaction:0,InfiltrationMoney:0,CorporationValuation:0,CorporationSoftcap:0,CorporationDivisions:0,BladeburnerRank:0,GangSoftcap:0,GangUniqueAugs:0,StaneksGiftExtraSize:-99});case 9:return new i.Wu({HackingLevelMultiplier:.5,StrengthLevelMultiplier:.45,DefenseLevelMultiplier:.45,DexterityLevelMultiplier:.45,AgilityLevelMultiplier:.45,CharismaLevelMultiplier:.45,ServerMaxMoney:.01,ServerStartingMoney:.1,ServerStartingSecurity:2.5,HomeComputerRamCost:5,PurchasedServerLimit:0,CrimeMoney:.5,ScriptHackMoney:.1,HackExpGain:.05,FourSigmaMarketDataCost:5,FourSigmaMarketDataApiCost:4,CorporationValuation:.5,CorporationSoftcap:.75,CorporationDivisions:.8,BladeburnerRank:.9,BladeburnerSkillCost:1.2,GangSoftcap:.8,GangUniqueAugs:.25,StaneksGiftPowerMultiplier:.5,StaneksGiftExtraSize:2,WorldDaemonDifficulty:2});case 10:return new i.Wu({HackingLevelMultiplier:.35,StrengthLevelMultiplier:.4,DefenseLevelMultiplier:.4,DexterityLevelMultiplier:.4,AgilityLevelMultiplier:.4,CharismaLevelMultiplier:.4,HomeComputerRamCost:1.5,PurchasedServerCost:5,PurchasedServerSoftcap:1.1,PurchasedServerLimit:.6,PurchasedServerMaxRam:.5,CompanyWorkMoney:.5,CrimeMoney:.5,HacknetNodeMoney:.5,ManualHackMoney:.5,ScriptHackMoney:.5,CodingContractMoney:.5,AugmentationMoneyCost:5,AugmentationRepCost:2,InfiltrationMoney:.5,CorporationValuation:.5,CorporationSoftcap:.9,CorporationDivisions:.9,BladeburnerRank:.8,GangSoftcap:.9,GangUniqueAugs:.25,StaneksGiftPowerMultiplier:.75,StaneksGiftExtraSize:-3,WorldDaemonDifficulty:2});case 11:return new i.Wu({HackingLevelMultiplier:.6,ServerGrowthRate:.2,ServerMaxMoney:.01,ServerStartingMoney:.1,ServerWeakenRate:2,PurchasedServerSoftcap:2,CompanyWorkMoney:.5,CrimeMoney:3,HacknetNodeMoney:.1,CodingContractMoney:.25,HackExpGain:.5,AugmentationMoneyCost:2,InfiltrationMoney:2.5,InfiltrationRep:2.5,FourSigmaMarketDataCost:4,FourSigmaMarketDataApiCost:4,CorporationValuation:.1,CorporationSoftcap:.9,CorporationDivisions:.9,GangUniqueAugs:.75,WorldDaemonDifficulty:1.5});case 12:{const e=Math.pow(1.02,t),n=1/e;return new i.Wu({DaedalusAugsRequirement:Math.floor(Math.min(u.DaedalusAugsRequirement+e,40)),HackingLevelMultiplier:n,StrengthLevelMultiplier:n,DefenseLevelMultiplier:n,DexterityLevelMultiplier:n,AgilityLevelMultiplier:n,CharismaLevelMultiplier:n,ServerGrowthRate:n,ServerMaxMoney:n*n,ServerStartingMoney:n,ServerWeakenRate:n,ServerStartingSecurity:1.5,HomeComputerRamCost:e,PurchasedServerCost:e,PurchasedServerSoftcap:e,PurchasedServerLimit:n,PurchasedServerMaxRam:n,CompanyWorkMoney:n,CrimeMoney:n,HacknetNodeMoney:n,ManualHackMoney:n,ScriptHackMoney:n,CodingContractMoney:n,ClassGymExpGain:n,CompanyWorkExpGain:n,CrimeExpGain:n,FactionWorkExpGain:n,HackExpGain:n,FactionPassiveRepGain:n,FactionWorkRepGain:n,RepToDonateToFaction:e,AugmentationMoneyCost:e,AugmentationRepCost:e,InfiltrationMoney:n,InfiltrationRep:n,FourSigmaMarketDataCost:e,FourSigmaMarketDataApiCost:e,CorporationValuation:n,CorporationSoftcap:.8,CorporationDivisions:.5,BladeburnerRank:n,BladeburnerSkillCost:e,GangSoftcap:.8,GangUniqueAugs:n,StaneksGiftPowerMultiplier:e,StaneksGiftExtraSize:e,WorldDaemonDifficulty:e})}case 13:return new i.Wu({HackingLevelMultiplier:.25,StrengthLevelMultiplier:.7,DefenseLevelMultiplier:.7,DexterityLevelMultiplier:.7,AgilityLevelMultiplier:.7,PurchasedServerSoftcap:1.6,ServerMaxMoney:.3375,ServerStartingMoney:.75,ServerStartingSecurity:3,CompanyWorkMoney:.4,CrimeMoney:.4,HacknetNodeMoney:.4,ScriptHackMoney:.2,CodingContractMoney:.4,ClassGymExpGain:.5,CompanyWorkExpGain:.5,CrimeExpGain:.5,FactionWorkExpGain:.5,HackExpGain:.1,FactionWorkRepGain:.6,FourSigmaMarketDataCost:10,FourSigmaMarketDataApiCost:10,CorporationValuation:.001,CorporationSoftcap:.4,CorporationDivisions:.4,BladeburnerRank:.45,BladeburnerSkillCost:2,GangSoftcap:.3,GangUniqueAugs:.1,StaneksGiftPowerMultiplier:2,StaneksGiftExtraSize:1,WorldDaemonDifficulty:3});default:throw new Error("Invalid BitNodeN")}}function f(){(0,i.i1)(m(a.J5.bitNodeN,a.J5.sourceFileLvl(a.J5.bitNodeN)+1))}Object.freeze(u)},97740:(e,t,n)=>{"use strict";n.d(t,{Wu:()=>a,dQ:()=>o,i1:()=>i});var r=n(21623);class a{AgilityLevelMultiplier=1;AugmentationMoneyCost=1;AugmentationRepCost=1;BladeburnerRank=1;BladeburnerSkillCost=1;CharismaLevelMultiplier=1;ClassGymExpGain=1;CodingContractMoney=1;CompanyWorkExpGain=1;CompanyWorkMoney=1;CorporationValuation=1;CrimeExpGain=1;CrimeMoney=1;DaedalusAugsRequirement=30;DefenseLevelMultiplier=1;DexterityLevelMultiplier=1;FactionPassiveRepGain=1;FactionWorkExpGain=1;FactionWorkRepGain=1;FourSigmaMarketDataApiCost=1;FourSigmaMarketDataCost=1;GangSoftcap=1;GangUniqueAugs=1;HackExpGain=1;HackingLevelMultiplier=1;HacknetNodeMoney=1;HomeComputerRamCost=1;InfiltrationMoney=1;InfiltrationRep=1;ManualHackMoney=1;PurchasedServerCost=1;PurchasedServerSoftcap=1;PurchasedServerLimit=1;PurchasedServerMaxRam=1;RepToDonateToFaction=1;ScriptHackMoney=1;ScriptHackMoneyGain=1;ServerGrowthRate=1;ServerMaxMoney=1;ServerStartingMoney=1;ServerStartingSecurity=1;ServerWeakenRate=1;StrengthLevelMultiplier=1;StaneksGiftPowerMultiplier=1;StaneksGiftExtraSize=0;WorldDaemonDifficulty=1;CorporationSoftcap=1;CorporationDivisions=1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(const[t,n]of(0,r.m0)(e))this[t]=n}}let o=new a;function i(e){o=e}},37334:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m,n:()=>u});var r=n(67294),a=n(48672),o=n(52947),i=n(24815),s=n(13342),l=n(81138),c=n(56798);const u=new s.v;function m(){const[e,t]=(0,r.useState)(!1);return(0,r.useEffect)((()=>u.subscribe((()=>t(!0)))),[]),r.createElement(a.u,{open:e,onClose:()=>t(!1)},r.createElement(l.Z,null,"WARNING: USING THIS PROGRAM WILL CAUSE YOU TO LOSE ALL OF YOUR PROGRESS ON THE CURRENT BITNODE.",r.createElement("br",null),r.createElement("br",null),"Do you want to travel to the BitNode Nexus? This allows you to reset the current BitNode and select a new one."),r.createElement("br",null),r.createElement("br",null),r.createElement(c.Z,{onClick:function(){o.F.toPage(i.T3.BitVerse,{flume:!0,quick:!1}),t(!1)}},"Travel to the BitVerse"))}},5808:(e,t,n)=>{"use strict";n.d(t,{B:()=>w,I:()=>E});var r=n(67294),a=n(96486),o=n(30120),i=n(28881),s=n(95309),l=n(61702),c=n(81138),u=n(51627),m=n(47542),f=n(46948),h=n(60181),d=n(23508),p=n(49173),g=n(40425),y=n(51087),b=n(21927),v=n(99745),k=n(21623);function w(e){let{n:t,level:n}=e;const[a,m]=r.useState(!1);return 1===t?r.createElement(r.Fragment,null):r.createElement(o.Z,{component:i.Z,sx:{mt:1,p:1}},r.createElement(s.Z,{disableGutters:!0,onClick:()=>m((e=>!e))},r.createElement(l.Z,{primary:r.createElement(c.Z,{variant:"h6"},"Bitnode Multipliers")}),a?r.createElement(h.Z,{color:"primary"}):r.createElement(d.Z,{color:"primary"})),r.createElement(u.Z,{in:a},r.createElement(E,{n:t,level:n})))}const E=e=>{let{n:t,level:n}=e;const a=12===t?1/0:3,i=(0,v.cm)(t,n??Math.min(p.J5.sourceFileLvl(t)+1,a));return r.createElement(o.Z,{sx:{columnCount:2,columnGap:1,mb:-2}},r.createElement(C,{n:t,mults:i}),r.createElement(L,{n:t,mults:i}),r.createElement(A,{n:t,mults:i}),r.createElement(x,{n:t,mults:i}),r.createElement(R,{n:t,mults:i}),r.createElement(F,{n:t,mults:i}),r.createElement(M,{n:t,mults:i}),r.createElement(T,{n:t,mults:i}),r.createElement(_,{n:t,mults:i}),r.createElement(N,{n:t,mults:i}),r.createElement(B,{n:t,mults:i}),r.createElement(O,{n:t,mults:i}),r.createElement(I,{n:t,mults:i}),r.createElement(P,{n:t,mults:i}))},S=e=>{const t=(0,k.m0)(e.rowData).filter((t=>{let[n]=t;return e.mults[n]!==v.A7[n]})).map((t=>{let[n,o]=t;return r.createElement(b.j,{key:(0,a.uniqueId)(),name:o.name,data:{content:o.content??`${(100*e.mults[n]).toFixed(3)}%`},color:o.color??y.Z.theme.primary})}));return t.length>0?r.createElement("span",{style:{display:"inline-block",width:"100%",marginBottom:"16px"}},r.createElement(c.Z,{variant:"h6"},e.sectionName),r.createElement(m.Z,null,r.createElement(f.Z,null,t))):r.createElement(r.Fragment,null)};function C(e){let{mults:t}=e;const n={WorldDaemonDifficulty:{name:`${g.r.WorldDaemon} Difficulty`},DaedalusAugsRequirement:{name:"Daedalus Augs Requirement",content:String(t.DaedalusAugsRequirement)},HacknetNodeMoney:{name:"Hacknet Production"},CodingContractMoney:{name:"Coding Contract Reward"},ClassGymExpGain:{name:"Class/Gym Exp"}};return r.createElement(S,{sectionName:"General",rowData:n,mults:t})}function x(e){let{mults:t}=e;const n={AugmentationMoneyCost:{name:"Money Cost"},AugmentationRepCost:{name:"Reputation Cost",color:y.Z.theme.rep}};return r.createElement(S,{sectionName:"Augmentations",rowData:n,mults:t})}function N(e){let{mults:t}=e;const n={CompanyWorkMoney:{name:"Work Money",color:y.Z.theme.money},CompanyWorkExpGain:{name:"Work Exp"}};return r.createElement(S,{sectionName:"Company",rowData:n,mults:t})}function M(e){let{mults:t}=e;return r.createElement(S,{sectionName:"Stock Market",rowData:{FourSigmaMarketDataCost:{name:"Market Data Cost"},FourSigmaMarketDataApiCost:{name:"Market Data API Cost"}},mults:t})}function A(e){let{mults:t}=e;const n={RepToDonateToFaction:{name:"Favor to Donate"},FactionWorkRepGain:{name:"Work Reputation",color:y.Z.theme.rep},FactionWorkExpGain:{name:"Work Exp"},FactionPassiveRepGain:{name:"Passive Rep",color:y.Z.theme.rep}};return r.createElement(S,{sectionName:"Faction",rowData:n,mults:t})}function T(e){let{mults:t}=e;const n={CrimeExpGain:{name:"Crime Exp",color:y.Z.theme.combat},CrimeMoney:{name:"Crime Money",color:y.Z.theme.combat}};return r.createElement(S,{sectionName:"Crime",rowData:n,mults:t})}function L(e){let{mults:t}=e;const n={HackingLevelMultiplier:{name:"Hacking Level",color:y.Z.theme.hack},StrengthLevelMultiplier:{name:"Strength Level",color:y.Z.theme.combat},DefenseLevelMultiplier:{name:"Defense Level",color:y.Z.theme.combat},DexterityLevelMultiplier:{name:"Dexterity Level",color:y.Z.theme.combat},AgilityLevelMultiplier:{name:"Agility Level",color:y.Z.theme.combat},CharismaLevelMultiplier:{name:"Charisma Level",color:y.Z.theme.cha}};return r.createElement(S,{sectionName:"Skills",rowData:n,mults:t})}function R(e){let{mults:t}=e;const n={HackExpGain:{name:"Hacking Exp",color:y.Z.theme.hack},ServerGrowthRate:{name:"Server Growth Rate"},ServerMaxMoney:{name:"Server Max Money"},ServerStartingMoney:{name:"Server Starting Money"},ServerStartingSecurity:{name:"Server Starting Security"},ServerWeakenRate:{name:"Server Weaken Rate"},ManualHackMoney:{name:"Manual Hack Money",color:y.Z.theme.money},ScriptHackMoney:{name:"Script Hack Money",color:y.Z.theme.money},ScriptHackMoneyGain:{name:"Money Gained From Hack",color:y.Z.theme.money}};return r.createElement(S,{sectionName:"Hacking",rowData:n,mults:t})}function F(e){let{mults:t}=e;const n={PurchasedServerCost:{name:"Base Cost",content:t.PurchasedServerCost.toFixed(3)},PurchasedServerSoftcap:{name:"Softcap Cost",content:t.PurchasedServerSoftcap.toFixed(3)},PurchasedServerLimit:{name:"Server Limit"},PurchasedServerMaxRam:{name:"Max RAM"},HomeComputerRamCost:{name:"Home RAM Cost"}};return r.createElement(S,{sectionName:"Purchased Servers",rowData:n,mults:t})}function _(e){let{mults:t}=e;const n={InfiltrationMoney:{name:"Infiltration Money",color:y.Z.theme.money},InfiltrationRep:{name:"Infiltration Reputation",color:y.Z.theme.rep}};return r.createElement(S,{sectionName:"Infiltration",rowData:n,mults:t})}function I(e){let{mults:t}=e;if(!p.J5.canAccessBladeburner())return r.createElement(r.Fragment,null);if(0===t.BladeburnerRank){const e={BladeburnerRank:{name:"Disabled",content:""}};return r.createElement(S,{sectionName:"Bladeburner",rowData:e,mults:t})}return r.createElement(S,{sectionName:"Bladeburner",rowData:{BladeburnerRank:{name:"Rank Gain"},BladeburnerSkillCost:{name:"Skill Cost"}},mults:t})}function P(e){let{mults:t}=e;if(!p.J5.canAccessCotMG())return r.createElement(r.Fragment,null);const n=t.StaneksGiftExtraSize.toFixed(3),a={StaneksGiftPowerMultiplier:{name:"Gift Power"},StaneksGiftExtraSize:{name:"Base Size Modifier",content:`${t.StaneksGiftExtraSize>v.A7.StaneksGiftExtraSize?`+${n}`:n}`}};return r.createElement(S,{sectionName:"Stanek's Gift",rowData:a,mults:t})}function B(e){let{mults:t}=e;if(2!==p.J5.bitNodeN&&p.J5.sourceFileLvl(2)<=0)return r.createElement(r.Fragment,null);const n={GangSoftcap:{name:"Gang Softcap",content:t.GangSoftcap.toFixed(3)},GangUniqueAugs:{name:"Unique Augmentations"}};return r.createElement(S,{sectionName:"Gang",rowData:n,mults:t})}function O(e){let{mults:t}=e;if(!p.J5.canAccessCorporation())return r.createElement(r.Fragment,null);if(t.CorporationSoftcap<.15){const e={CorporationSoftcap:{name:"Disabled",content:""}};return r.createElement(S,{sectionName:"Corporation",rowData:e,mults:t})}const n={CorporationSoftcap:{name:"Corporation Softcap",content:t.CorporationSoftcap.toFixed(3)},CorporationValuation:{name:"Valuation"},CorporationDivisions:{name:"Division limit"}};return r.createElement(S,{sectionName:"Corporation",rowData:n,mults:t})}},50856:(e,t,n)=>{"use strict";n.d(t,{x:()=>y});var r=n(67294),a=n(99745),o=n(46059),i=n(6681),s=n(49173),l=n(77541),c=n(73327),u=n(92557),m=n(81138),f=n(17575),h=n(51087),d=n(56798);const p=(0,l.Z)((()=>(0,c.Z)({portal:{cursor:"pointer",fontFamily:"inherit",fontSize:"1rem",fontWeight:"bold",lineHeight:1,padding:0,"&:hover":{color:"#fff"}},level0:{color:"red"},level1:{color:"yellow"},level2:{color:"#48d1cc"},level3:{color:"blue"}})));function g(e){const[t,n]=(0,r.useState)(!1),i=p(),s=a.tK[`BitNode${e.n}`];if(null==s)return r.createElement(r.Fragment,null,"O");let l=i.level0;return 12===e.n&&e.level>=2?l=i.level2:1===e.level?l=i.level1:3===e.level&&(l=i.level3),2===e.level&&(l=i.level2),l=`${i.portal} ${l}`,r.createElement(r.Fragment,null,r.createElement(f.Z,{title:r.createElement(m.Z,null,r.createElement("strong",null,"BitNode-",s.number.toString(),": ",s.name),r.createElement("br",null),s.desc)},h.Z.DisableASCIIArt?r.createElement(d.Z,{onClick:()=>n(!0),sx:{m:2},"aria-description":s.desc},r.createElement(m.Z,null,"BitNode-",s.number.toString(),": ",s.name)):r.createElement(u.Z,{onClick:()=>n(!0),className:l,"aria-label":`BitNode-${s.number.toString()}: ${s.name}`,"aria-description":s.desc},"O")),r.createElement(o.B,{open:t,onClose:()=>n(!1),n:e.n,level:e.level,destroyedBitNode:e.destroyedBitNode,flume:e.flume}),h.Z.DisableASCIIArt&&r.createElement("br",null))}function y(e){const t=s.J5.bitNodeN,[n,o]=(0,r.useState)(!e.quick);if(n)return r.createElement(i._,{lines:["[ERROR] SEMPOOL INVALID","[ERROR] Segmentation Fault","[ERROR] SIGKILL RECVD","Dumping core...","0000 000016FA 174FEE40 29AC8239 384FEA88","0010 745F696E 2BBBE394 390E3940 248BEC23","0020 7124696B 0000FF69 74652E6F FFFF1111","----------------------------------------","Failsafe initiated...",`Restarting BitNode-${t}...`,"...........","...........","[ERROR] FAILED TO AUTOMATICALLY REBOOT BITNODE","..............................................","..............................................","..............................................","..............................................","..............................................",".............................................."],onDone:()=>o(!1),auto:!0});const l=n=>{const r=s.J5.sourceFileLvl(n);if(n!==t)return r;const a=12===n?1/0:3;return Math.min(a,r+Number(!e.flume))};if(h.Z.DisableASCIIArt)return r.createElement(r.Fragment,null,Object.values(a.tK).filter((e=>"COMING SOON"!==e.desc)).map((n=>r.createElement(g,{key:n.number,n:n.number,level:l(n.number),flume:e.flume,destroyedBitNode:t}))),r.createElement("br",null),r.createElement("br",null),r.createElement("br",null),r.createElement("br",null),r.createElement(i._,{lines:["> Many decades ago, a humanoid extraterrestrial species which we call the Enders descended on the Earth...violently","> Our species fought back, but it was futile. The Enders had technology far beyond our own...","> Instead of killing every last one of us, the human race was enslaved...","> We were shackled in a digital world, chained into a prison for our minds...","> Using their advanced technology, the Enders created complex simulations of a virtual reality...","> Simulations designed to keep us content...ignorant of the truth.","> Simulations used to trap and suppress our consciousness, to keep us under control...","> Why did they do this? Why didn't they just end our entire race? We don't know, not yet.","> Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...","> Only then can we begin to fight back...","> By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...","> But there is still a long way to go...","> The technology the Enders used to enslave the human race wasn't just a single complex simulation...","> There are tens if not hundreds of BitNodes out there...","> Each with their own simulations of a reality...","> Each creating their own universes...a universe of universes","> And all of which must be destroyed...","> .......................................","> Welcome to the Bitverse...","> ","> (Enter a new BitNode using the image above)"]}));const c=l;return r.createElement(r.Fragment,null,r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | O O | O O | "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O | | / __| \\ | | O "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O | O | | O / | O | | O | O "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | | |_/ |/ | \\_ \\_| | | | | "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O | | | O | | O__/ | / \\__ | | O | | | O "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | | | | | / /| O / \\| | | | | | | "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"O | | | \\| | O / _/ | / O | |/ | | | O"),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | | |O / | | O / | O O | | \\ O| | | |"),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | |/ \\/ / __| | |/ \\ | \\ | |__ \\ \\/ \\| | |"),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| O | |_/ |\\| \\ ",r.createElement(g,{n:13,level:c(13),flume:e.flume,destroyedBitNode:t})," \\__| \\_| | O |/ "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | |_/ | | \\| / | \\_| | | "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| / \\| | / / \\ |/ "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ",r.createElement(g,{n:10,level:c(10),flume:e.flume,destroyedBitNode:t})," | | / | ",r.createElement(g,{n:11,level:c(11),flume:e.flume,destroyedBitNode:t})," | "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ",r.createElement(g,{n:9,level:c(9),flume:e.flume,destroyedBitNode:t})," | | | | | | | ",r.createElement(g,{n:12,level:c(12),flume:e.flume,destroyedBitNode:t})," "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | / / \\ \\ | | | "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| | / ",r.createElement(g,{n:7,level:c(7),flume:e.flume,destroyedBitNode:t})," / \\ ",r.createElement(g,{n:8,level:c(8),flume:e.flume,destroyedBitNode:t})," \\ | |/ "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ | / / | | \\ \\ | / "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ \\JUMP ",r.createElement(g,{n:5,level:c(5),flume:e.flume,destroyedBitNode:t}),"3R | | | | | | R3",r.createElement(g,{n:6,level:c(6),flume:e.flume,destroyedBitNode:t})," PMUJ/ / "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\|| | | | | | | | | ||/ "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| \\_ | | | | | | _/ |/ "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ \\| / \\ / \\ |/ / "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ",r.createElement(g,{n:1,level:c(1),flume:e.flume,destroyedBitNode:t})," |/ ",r.createElement(g,{n:2,level:c(2),flume:e.flume,destroyedBitNode:t})," | | ",r.createElement(g,{n:3,level:c(3),flume:e.flume,destroyedBitNode:t})," \\| ",r.createElement(g,{n:4,level:c(4),flume:e.flume,destroyedBitNode:t})," "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | | | | | | "),r.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\JUMP3R|JUMP|3R| |R3|PMUJ|R3PMUJ/ "),r.createElement("br",null),r.createElement("br",null),r.createElement("br",null),r.createElement("br",null),r.createElement(i._,{lines:["> Many decades ago, a humanoid extraterrestrial species which we call the Enders descended on the Earth...violently","> Our species fought back, but it was futile. The Enders had technology far beyond our own...","> Instead of killing every last one of us, the human race was enslaved...","> We were shackled in a digital world, chained into a prison for our minds...","> Using their advanced technology, the Enders created complex simulations of a virtual reality...","> Simulations designed to keep us content...ignorant of the truth.","> Simulations used to trap and suppress our consciousness, to keep us under control...","> Why did they do this? Why didn't they just end our entire race? We don't know, not yet.","> Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...","> Only then can we begin to fight back...","> By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...","> But there is still a long way to go...","> The technology the Enders used to enslave the human race wasn't just a single complex simulation...","> There are tens if not hundreds of BitNodes out there...","> Each with their own simulations of a reality...","> Each creating their own universes...a universe of universes","> And all of which must be destroyed...","> .......................................","> Welcome to the Bitverse...","> ","> (Enter a new BitNode using the image above)"]}))}},46059:(e,t,n)=>{"use strict";n.d(t,{B:()=>u});var r=n(67294),a=n(98235),o=n(99745),i=n(48672),s=n(81138),l=n(56798),c=n(5808);function u(e){const t="BitNode"+e.n,n=o.tK[t];if(null==n)throw new Error(`Could not find BitNode object for number: ${e.n}`);const u=12===e.n?"∞":"3",m=Math.min(e.level+1,12===e.n?1/0:3);return r.createElement(i.u,{open:e.open,onClose:e.onClose},r.createElement(s.Z,{variant:"h4"},"BitNode-",e.n,": ",n.name),r.createElement("br",null),r.createElement(s.Z,null,"Source-File Level: ",e.level," / ",u),r.createElement("br",null),r.createElement("br",null),r.createElement(s.Z,null," Difficulty: ",["easy","normal","hard"][n.difficulty]),r.createElement("br",null),r.createElement("br",null),r.createElement(s.Z,null,n.info),r.createElement(c.B,{n:e.n,level:m}),r.createElement("br",null),r.createElement("br",null),r.createElement(l.Z,{"aria-label":`enter-bitnode-${n.number.toString()}`,autoFocus:!0,onClick:()=>{(0,a.i)(e.flume,e.destroyedBitNode,e.n),e.onClose()}},"Enter BN",e.n,".",m))}},28961:(e,t,n)=>{"use strict";n.d(t,{a:()=>l});var r=n(92666),a=n(68980),o=n(94515),i=n(3862),s=n(46085);class l{name="";level=1;maxLevel=1;autoLevel=!0;baseDifficulty=100;difficultyFac=1.01;rewardFac=1.02;successes=0;failures=0;rankGain=0;rankLoss=0;hpLoss=0;hpLost=0;isStealth=!1;isKill=!1;count=(0,r.X)(1e3,25e3);weights={hack:1/7,str:1/7,def:1/7,dex:1/7,agi:1/7,cha:1/7,int:1/7};decays={hack:.9,str:.9,def:.9,dex:.9,agi:.9,cha:.9,int:.9};teamCount=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&e.name&&(this.name=e.name),e&&e.baseDifficulty&&(this.baseDifficulty=(0,a.b)(e.baseDifficulty,10)),e&&e.difficultyFac&&(this.difficultyFac=e.difficultyFac),e&&e.rewardFac&&(this.rewardFac=e.rewardFac),e&&e.rankGain&&(this.rankGain=e.rankGain),e&&e.rankLoss&&(this.rankLoss=e.rankLoss),e&&e.hpLoss&&(this.hpLoss=e.hpLoss),e&&e.isStealth&&(this.isStealth=e.isStealth),e&&e.isKill&&(this.isKill=e.isKill),e&&e.count&&(this.count=e.count),e&&e.weights&&(this.weights=e.weights),e&&e.decays&&(this.decays=e.decays);let t=0;for(const e of Object.keys(this.weights))Object.hasOwn(this.weights,e)&&(t+=this.weights[e]);if(t-1>=10*Number.EPSILON)throw new Error("Invalid weights when constructing Action "+this.name+". The weights should sum up to 1. They sum up to :1");for(const e of Object.keys(this.decays))if(Object.hasOwn(this.decays,e)&&this.decays[e]>1)throw new Error(`Invalid decays when constructing Action ${this.name}. Decay value cannot be greater than 1`)}getDifficulty(){const e=this.baseDifficulty*Math.pow(this.difficultyFac,this.level-1);if(isNaN(e))throw new Error("Calculated NaN in Action.getDifficulty()");return e}attempt(e,t){return Math.random()i.Z.ChaosThreshold){const e=t.chaos-i.Z.ChaosThreshold+1;return Math.pow(e,.5)}return 1}getEstSuccessChance(e,t){function n(e){return Math.max(0,Math.min(e,1))}const r=this.getSuccessChance(e,t,{est:!0}),a=this.getSuccessChance(e,t),o=Math.abs(a-r);let i=a-o,s=a+o;const l=e.getCurrentCity(),c=l.pop/l.popEst;return c<1?i*=c:s*=c,[n(i),n(s)]}getSuccessChance(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{est:!1};if(null==e)throw new Error("Invalid Bladeburner instance passed into Action.getSuccessChance");let r=this.getDifficulty(),a=0;for(const n of Object.keys(this.weights))if(Object.hasOwn(this.weights,n)){const r=t.queryStatFromString(n),o="eff"+n.charAt(0).toUpperCase()+n.slice(1);let i=e.skillMultipliers[o];null==i&&(console.error(`Failed to find Bladeburner Skill multiplier for: ${n}`),i=1),a+=this.weights[n]*Math.pow(i*r,this.decays[n])}if(a*=(0,s.f)(t.skills.intelligence,.75),a*=e.calculateStaminaPenalty(),a*=this.getTeamSuccessBonus(e),a*=this.getChaosCompetencePenalty(e,n),r*=this.getChaosDifficultyBonus(e),"Raid"==this.name&&e.getCurrentCity().comms<=0)return 0;if(a*=e.skillMultipliers.successChanceAll,a*=this.getActionTypeSkillSuccessBonus(e),this.isStealth&&(a*=e.skillMultipliers.successChanceStealth),this.isKill&&(a*=e.skillMultipliers.successChanceKill),a*=t.mults.bladeburner_success_chance,isNaN(a))throw new Error("Competence calculated as NaN in Action.getSuccessChance()");return Math.min(1,a/r)}getSuccessesNeededForNextLevel(e){return Math.ceil(.5*this.maxLevel*(2*e+(this.maxLevel-1)))}setMaxLevel(e){this.successes>=this.getSuccessesNeededForNextLevel(e)&&++this.maxLevel}toJSON(){return(0,o.L3)("Action",this)}static fromJSON(e){return(0,o.Id)(l,e.data)}}o.gY.Action=l},70671:(e,t,n)=>{"use strict";n.d(t,{T:()=>a});var r=n(94515);class a{name="";type=-1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.name&&(this.name=e.name),e.type&&(this.type=e.type)}toJSON(){return(0,r.L3)("ActionIdentifier",this)}static fromJSON(e){return(0,r.Id)(a,e.data)}}r.gY.ActionIdentifier=a},62783:(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var r=n(63322),a=n(94515);class o extends r.O{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null),this.count=1}getActionTimePenalty(){return 1.5}getChaosCompetencePenalty(){return 1}getChaosDifficultyBonus(){return 1}toJSON(){return(0,a.L3)("BlackOperation",this)}static fromJSON(e){return(0,a.Id)(o,e.data)}}a.gY.BlackOperation=o},62986:(e,t,n)=>{"use strict";n.d(t,{k:()=>o});var r=n(62783),a=n(33244);const o={};o[a.BlackOperationName.OperationTyphoon]=new r.u({name:a.BlackOperationName.OperationTyphoon,baseDifficulty:2e3,reqdRank:2500,rankGain:50,rankLoss:10,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationZero]=new r.u({name:a.BlackOperationName.OperationZero,baseDifficulty:2500,reqdRank:5e3,rankGain:60,rankLoss:15,hpLoss:50,weights:{hack:.2,str:.15,def:.15,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),o[a.BlackOperationName.OperationX]=new r.u({name:a.BlackOperationName.OperationX,baseDifficulty:3e3,reqdRank:7500,rankGain:75,rankLoss:15,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationTitan]=new r.u({name:a.BlackOperationName.OperationTitan,baseDifficulty:4e3,reqdRank:1e4,rankGain:100,rankLoss:20,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationAres]=new r.u({name:a.BlackOperationName.OperationAres,baseDifficulty:5e3,reqdRank:12500,rankGain:125,rankLoss:20,hpLoss:200,weights:{hack:0,str:.25,def:.25,dex:.25,agi:.25,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationArchangel]=new r.u({name:a.BlackOperationName.OperationArchangel,baseDifficulty:7500,reqdRank:15e3,rankGain:200,rankLoss:20,hpLoss:25,weights:{hack:0,str:.2,def:.2,dex:.3,agi:.3,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationJuggernaut]=new r.u({name:a.BlackOperationName.OperationJuggernaut,baseDifficulty:1e4,reqdRank:2e4,rankGain:300,rankLoss:40,hpLoss:300,weights:{hack:0,str:.25,def:.25,dex:.25,agi:.25,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationRedDragon]=new r.u({name:a.BlackOperationName.OperationRedDragon,baseDifficulty:12500,reqdRank:25e3,rankGain:500,rankLoss:50,hpLoss:500,weights:{hack:.05,str:.2,def:.2,dex:.25,agi:.25,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationK]=new r.u({name:a.BlackOperationName.OperationK,baseDifficulty:15e3,reqdRank:3e4,rankGain:750,rankLoss:60,hpLoss:1e3,weights:{hack:.05,str:.2,def:.2,dex:.25,agi:.25,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationDeckard]=new r.u({name:a.BlackOperationName.OperationDeckard,baseDifficulty:2e4,reqdRank:4e4,rankGain:1e3,rankLoss:75,hpLoss:200,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationTyrell]=new r.u({name:a.BlackOperationName.OperationTyrell,baseDifficulty:25e3,reqdRank:5e4,rankGain:1500,rankLoss:100,hpLoss:500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationWallace]=new r.u({name:a.BlackOperationName.OperationWallace,baseDifficulty:3e4,reqdRank:75e3,rankGain:2e3,rankLoss:150,hpLoss:1500,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationShoulderOfOrion]=new r.u({name:a.BlackOperationName.OperationShoulderOfOrion,baseDifficulty:35e3,reqdRank:1e5,rankGain:2500,rankLoss:500,hpLoss:1500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),o[a.BlackOperationName.OperationHyron]=new r.u({name:a.BlackOperationName.OperationHyron,baseDifficulty:4e4,reqdRank:125e3,rankGain:3e3,rankLoss:1e3,hpLoss:500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationMorpheus]=new r.u({name:a.BlackOperationName.OperationMorpheus,baseDifficulty:45e3,reqdRank:15e4,rankGain:4e3,rankLoss:1e3,hpLoss:100,weights:{hack:.05,str:.15,def:.15,dex:.3,agi:.3,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),o[a.BlackOperationName.OperationIonStorm]=new r.u({name:a.BlackOperationName.OperationIonStorm,baseDifficulty:5e4,reqdRank:175e3,rankGain:5e3,rankLoss:1e3,hpLoss:5e3,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationAnnihilus]=new r.u({name:a.BlackOperationName.OperationAnnihilus,baseDifficulty:55e3,reqdRank:2e5,rankGain:7500,rankLoss:1e3,hpLoss:1e4,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationUltron]=new r.u({name:a.BlackOperationName.OperationUltron,baseDifficulty:6e4,reqdRank:25e4,rankGain:1e4,rankLoss:2e3,hpLoss:1e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[a.BlackOperationName.OperationCenturion]=new r.u({name:a.BlackOperationName.OperationCenturion,baseDifficulty:7e4,reqdRank:3e5,rankGain:15e3,rankLoss:5e3,hpLoss:1e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}}),o[a.BlackOperationName.OperationVindictus]=new r.u({name:a.BlackOperationName.OperationVindictus,baseDifficulty:75e3,reqdRank:35e4,rankGain:2e4,rankLoss:2e4,hpLoss:2e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}}),o[a.BlackOperationName.OperationDaedalus]=new r.u({name:a.BlackOperationName.OperationDaedalus,baseDifficulty:8e4,reqdRank:4e5,rankGain:4e4,rankLoss:1e4,hpLoss:1e5,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}})},79267:(e,t,n)=>{"use strict";n.d(t,{T:()=>B});var r=n(33244),a=n(94515),o=n(70671),i=n(55353),s=n(15277),l=n(62986),c=n(62783),u=n(63322),m=n(12903),f=n(67309),h=n(22115),d=n(71099),p=n(39315),g=n(49173),y=n(52947),b=n(66621),v=n(43074),k=n(92666),w=n(3862),E=n(97740),S=n(68980),C=n(58427),x=n(2228),N=n(39463),M=n(51087),A=n(59546),T=n(94542),L=n(81055),R=n(72885),F=n(69293),_=n(15485),I=n(50862),P=n(21623);class B{numHosp=0;moneyLost=0;rank=0;maxRank=0;skillPoints=0;totalSkillPoints=0;teamSize=0;sleeveSize=0;teamLost=0;hpLost=0;storedCycles=0;randomEventCounter=(0,k.X)(240,600);actionTimeToComplete=0;actionTimeCurrent=0;actionTimeOverflow=0;action=new o.T({type:i.M.Idle});cities=(0,P.KW)(r.CityName,(e=>new p.j(e)));city=r.CityName.Sector12;skills={};skillMultipliers={};staminaBonus=0;maxStamina=0;stamina=0;contracts={};operations={};blackops={};logging={general:!0,contracts:!0,ops:!0,blackops:!0,events:!0};automateEnabled=!1;automateActionHigh=new o.T({type:i.M.Idle});automateThreshHigh=0;automateActionLow=new o.T({type:i.M.Idle});automateThreshLow=0;consoleHistory=[];consoleLogs=["Bladeburner Console","Type 'help' to see console commands"];constructor(){this.updateSkillMultipliers(),this.calculateMaxStamina(),this.stamina=this.maxStamina,this.create()}getCurrentCity(){return this.cities[this.city]}calculateStaminaPenalty(){return Math.min(1,this.stamina/(.5*this.maxStamina))}canAttemptBlackOp(e){if(null!=this.blackops[e.name])return{error:"Tried to start a Black Operation that had already been completed"};const t=this.getActionObject(e);if(!(t instanceof c.u))throw new Error("Action should be BlackOperation but isn't");if(null==t)throw new Error("Failed to get BlackOperation object for: "+e.name);if(t.reqdRank>this.rank)return{error:"Tried to start a Black Operation without the rank requirement"};const n=[];for(const e of Object.keys(l.k))Object.hasOwn(l.k,e)&&n.push(e);n.sort((function(e,t){return l.k[e].reqdRank-l.k[t].reqdRank}));const r=n.indexOf(e.name);return-1===r?{error:`Invalid Black Op: '${name}'`}:r>0&&null==this.blackops[n[r-1]]?{error:`Preceding Black Op must be completed before starting '${e.name}'.`}:{isAvailable:!0,action:t}}startAction(e){if(null!=e)switch(this.action=e,this.actionTimeCurrent=0,e.type){case i.M.Idle:this.actionTimeToComplete=0;break;case i.M.Contract:try{const t=this.getActionObject(e);if(null==t)throw new Error("Failed to get Contract Object for: "+e.name);if(t.count<1)return this.resetAction();this.actionTimeToComplete=t.getActionTime(this,g.J5)}catch(e){(0,v.P)(e)}break;case i.M.Operation:try{const t=this.getActionObject(e);if(null==t)throw new Error("Failed to get Operation Object for: "+e.name);if(t.count<1)return this.resetAction();if("Raid"===e.name&&0===this.getCurrentCity().comms)return this.resetAction();this.actionTimeToComplete=t.getActionTime(this,g.J5)}catch(e){(0,v.P)(e)}break;case i.M.BlackOp:case i.M.BlackOperation:try{const t=this.canAttemptBlackOp(e);if(!t.isAvailable){this.resetAction(),this.log(`Error: ${t.error}`);break}if(void 0===t.action)throw new Error("action should not be null");this.actionTimeToComplete=t.action.getActionTime(this,g.J5)}catch(e){(0,v.P)(e)}break;case i.M.Recruitment:this.actionTimeToComplete=this.getRecruitmentTime(g.J5);break;case i.M.Training:case i.M.FieldAnalysis:case i.M["Field Analysis"]:this.actionTimeToComplete=30;break;case i.M.Diplomacy:case i.M["Hyperbolic Regeneration Chamber"]:case i.M["Incite Violence"]:this.actionTimeToComplete=60;break;default:throw new Error("Invalid Action Type in bladeburner.startAction(): "+e.type)}}upgradeSkill(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=e.name;if(this.skills[n]?this.skills[n]+=t:this.skills[n]=t,isNaN(this.skills[n])||this.skills[n]<0)throw new Error("Level of Skill "+n+" is invalid: "+this.skills[n]);this.updateSkillMultipliers()}executeConsoleCommands(e){try{this.consoleHistory[this.consoleHistory.length-1]!=e&&(this.consoleHistory.push(e),this.consoleHistory.length>50&&this.consoleHistory.splice(0,1));const t=e.split(";");for(let e=0;e1&&void 0!==arguments[1])||arguments[1])&&(this.consoleLogs.push(e),this.consoleLogs.length>100&&this.consoleLogs.shift())}log(e){this.postToConsole(`[${(0,A.u)()}] ${e}`)}resetAction(){this.action=new o.T({type:i.M.Idle}),this.actionTimeCurrent=0,this.actionTimeToComplete=0}clearConsole(){this.consoleLogs.length=0}prestige(){this.resetAction();const e=C.i[r.FactionName.Bladeburners];this.rank>=w.Z.RankNeededForFaction&&(0,T.Bj)(e)}storeCycles(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.storedCycles+=e}getActionIdFromTypeAndName(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===e||""===t)return null;const n=new o.T,r=e.toLowerCase().trim(),a=t.toLowerCase().trim();switch(r){case"contract":case"contracts":case"contr":return n.type=i.M.Contract,Object.hasOwn(this.contracts,t)?(n.name=t,n):null;case"operation":case"operations":case"op":case"ops":return n.type=i.M.Operation,Object.hasOwn(this.operations,t)?(n.name=t,n):null;case"blackoperation":case"black operation":case"black operations":case"black op":case"black ops":case"blackop":case"blackops":return n.type=i.M.BlackOp,Object.hasOwn(l.k,t)?(n.name=t,n):null;case"general":case"general action":case"gen":break;default:return null}if(r.startsWith("gen")){switch(a){case"training":n.type=i.M.Training,n.name="Training";break;case"recruitment":case"recruit":n.type=i.M.Recruitment,n.name="Recruitment";break;case"field analysis":case"fieldanalysis":n.type=i.M["Field Analysis"],n.name="Field Analysis";break;case"diplomacy":n.type=i.M.Diplomacy,n.name="Diplomacy";break;case"hyperbolic regeneration chamber":n.type=i.M["Hyperbolic Regeneration Chamber"],n.name="Hyperbolic Regeneration Chamber";break;case"incite violence":n.type=i.M["Incite Violence"],n.name="Incite Violence";break;default:return null}return n}return null}executeStartConsoleCommand(e){if(3!==e.length)return this.postToConsole("Invalid usage of 'start' console command: start [type] [name]"),void this.postToConsole("Use 'help start' for more info");const t=e[2];switch(e[1].toLowerCase()){case"general":case"gen":null!=f.H[t]?(this.action.type=i.M[t],this.action.name=t,this.startAction(this.action)):this.postToConsole("Invalid action name specified: "+e[2]);break;case"contract":case"contracts":null!=this.contracts[t]?(this.action.type=i.M.Contract,this.action.name=t,this.startAction(this.action)):this.postToConsole("Invalid contract name specified: "+e[2]);break;case"ops":case"op":case"operations":case"operation":null!=this.operations[t]?(this.action.type=i.M.Operation,this.action.name=t,this.startAction(this.action)):this.postToConsole("Invalid Operation name specified: "+e[2]);break;case"blackops":case"blackop":case"black operations":case"black operation":null!=l.k[t]?(this.action.type=i.M.BlackOperation,this.action.name=t,this.startAction(this.action)):this.postToConsole("Invalid BlackOp name specified: "+e[2]);break;default:this.postToConsole("Invalid action/event type specified: "+e[1]),this.postToConsole("Examples of valid action/event identifiers are: [general, contract, op, blackop]")}}executeSkillConsoleCommand(e){switch(e.length){case 1:default:this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break;case 2:if("list"===e[1].toLowerCase()){this.postToConsole("Skills: ");const e=Object.keys(d.n);for(let t=0;t=n.maxLvl?this.postToConsole(`This skill ${n.name} is already at max level (${e}/${n.maxLvl}).`):this.skillPoints>=r?(this.skillPoints-=r,this.upgradeSkill(n),this.log(n.name+" upgraded to Level "+this.skills[t])):this.postToConsole("You do not have enough Skill Points to upgrade this. You need "+(0,h.$j)(r,0))}else this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break}}}executeLogConsoleCommand(e){if(e.length<3)return this.postToConsole("Invalid usage of log command: log [enable/disable] [action/event]"),void this.postToConsole("Use 'help log' for more details and examples");let t=!0;switch(e[1].toLowerCase().includes("d")&&(t=!1),e[2].toLowerCase()){case"general":case"gen":this.logging.general=t,this.log("Logging "+(t?"enabled":"disabled")+" for general actions");break;case"contract":case"contracts":this.logging.contracts=t,this.log("Logging "+(t?"enabled":"disabled")+" for Contracts");break;case"ops":case"op":case"operations":case"operation":this.logging.ops=t,this.log("Logging "+(t?"enabled":"disabled")+" for Operations");break;case"blackops":case"blackop":case"black operations":case"black operation":this.logging.blackops=t,this.log("Logging "+(t?"enabled":"disabled")+" for BlackOps");break;case"event":case"events":this.logging.events=t,this.log("Logging "+(t?"enabled":"disabled")+" for events");break;case"all":this.logging.general=t,this.logging.contracts=t,this.logging.ops=t,this.logging.blackops=t,this.logging.events=t,this.log("Logging "+(t?"enabled":"disabled")+" for everything");break;default:this.postToConsole("Invalid action/event type specified: "+e[2]),this.postToConsole("Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]")}}executeHelpConsoleCommand(e){if(1===e.length)for(const e of b.I.helpList)this.postToConsole(e);else for(let t=1;t0&&(i*=(0,k.X)(2,4),--a.comms,++r.comms);const s=Math.round(a.pop*i);a.pop-=s,r.pop+=s}triggerPotentialMigration(e,t){(null==t||isNaN(t))&&console.error("Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()"),t>1&&(t/=100),Math.random()=1){let r;r=e?Math.ceil(n/2):Math.floor(n);const a=(0,k.X)(0,r);if(this.teamSize-=a,this.teamSize(0,F.O)(e.currentWork)));for(let t=0;t>this.teamSize-this.sleeveSize;t--){const t=Math.floor(Math.random()*e.length);e[t].takeDamage(e[t].hp.max),e.splice(t,1)}this.teamSize+=this.sleeveSize}this.teamLost+=a,this.logging.ops&&a>0&&this.log("Lost "+(0,h.$j)(a,0)+" team members during this "+t.name)}const r=this.getCurrentCity();switch(t.name){case"Investigation":e?r.improvePopulationEstimateByPercentage(.4*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.1);break;case"Undercover Operation":e?r.improvePopulationEstimateByPercentage(.8*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.15);break;case"Sting Operation":e&&r.changePopulationByPercentage(-.1,{changeEstEqually:!0,nonZero:!0}),r.changeChaosByCount(.1);break;case"Raid":if(e)r.changePopulationByPercentage(-1,{changeEstEqually:!0,nonZero:!0}),--r.comms;else{const e=(0,k.X)(-10,-5)/10;r.changePopulationByPercentage(e,{nonZero:!0,changeEstEqually:!1})}r.changeChaosByPercentage((0,k.X)(1,5));break;case"Stealth Retirement Operation":e&&r.changePopulationByPercentage(-.5,{changeEstEqually:!0,nonZero:!0}),r.changeChaosByPercentage((0,k.X)(-3,-1));break;case"Assassination":e&&r.changePopulationByCount(-1,{estChange:-1,estOffset:0}),r.changeChaosByPercentage((0,k.X)(-5,5));break;default:throw new Error("Invalid Action name in completeOperation: "+this.action.name)}}getActionObject(e){switch(e.type){case i.M.Contract:return this.contracts[e.name];case i.M.Operation:return this.operations[e.name];case i.M.BlackOp:case i.M.BlackOperation:return l.k[e.name];case i.M.Training:return f.H.Training;case i.M["Field Analysis"]:return f.H["Field Analysis"];case i.M.Recruitment:return f.H.Recruitment;case i.M.Diplomacy:return f.H.Diplomacy;case i.M["Hyperbolic Regeneration Chamber"]:return f.H["Hyperbolic Regeneration Chamber"];case i.M["Incite Violence"]:return f.H["Incite Violence"];default:return null}}completeContract(e,t){if(t.type!==i.M.Contract)throw new Error("completeContract() called even though current action is not a Contract");const n=this.getCurrentCity();if(e)switch(t.name){case"Tracking":n.improvePopulationEstimateByCount((0,k.X)(100,1e3)*this.skillMultipliers.successChanceEstimate);break;case"Bounty Hunter":n.changePopulationByCount(-1,{estChange:-1,estOffset:0}),n.changeChaosByCount(.02);break;case"Retirement":n.changePopulationByCount(-1,{estChange:-1,estOffset:0}),n.changeChaosByCount(.04);break;default:throw new Error("Invalid Action name in completeContract: "+t.name)}}completeAction(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=(0,_.fC)();switch(t.type){case i.M.Contract:case i.M.Operation:try{const r=t.type===i.M.Operation,o=this.getActionObject(t);if(null==o)throw new Error("Failed to get Contract/Operation Object for: "+t.name);const s=o.getDifficulty(),l=Math.pow(s,w.Z.DiffMultExponentialFactor)+s/w.Z.DiffMultLinearFactor,c=Math.pow(o.rewardFac,o.level-1);if(n&&(this.stamina-=w.Z.BaseStaminaLoss*l,this.stamina<0&&(this.stamina=0)),o.attempt(this,e)){a=this.getActionStats(o,e,!0),++o.successes,--o.count;let n=0;if(r||(n=w.Z.ContractBaseMoneyGain*c*this.skillMultipliers.money,a.money=n),r?o.setMaxLevel(w.Z.OperationSuccessesPerLevel):o.setMaxLevel(w.Z.ContractSuccessesPerLevel),o.rankGain){const t=(0,S.b)(o.rankGain*c*E.dQ.BladeburnerRank,10);this.changeRank(e,t),r&&this.logging.ops?this.log(`${e.whoAmI()}: ${o.name} successfully completed! Gained ${(0,h.dp)(t)} rank`):!r&&this.logging.contracts&&this.log(`${e.whoAmI()}: ${o.name} contract successfully completed! Gained ${(0,h.dp)(t)} rank and ${(0,h.lb)(n)}`)}r?this.completeOperation(!0):this.completeContract(!0,t)}else{a=this.getActionStats(o,e,!1),++o.failures,--o.count;let n=0,i=0;if(o.rankLoss&&(n=(0,S.b)(o.rankLoss*c,10),this.changeRank(e,-1*n)),o.hpLoss){i=o.hpLoss*l,i=Math.ceil((0,S.b)(i,10)),this.hpLost+=i;const t=(0,x.U)(i);e.takeDamage(i)&&(++this.numHosp,this.moneyLost+=t)}let s="";n>0&&(s+="Lost "+(0,h.$j)(n,3)+" rank. "),i>0&&(s+="Took "+(0,h.$j)(i,0)+" damage."),r&&this.logging.ops?this.log(`${e.whoAmI()}: `+o.name+" failed! "+s):!r&&this.logging.contracts&&this.log(`${e.whoAmI()}: `+o.name+" contract failed! "+s),r?this.completeOperation(!1):this.completeContract(!1,t)}o.autoLevel&&(o.level=o.maxLevel)}catch(e){(0,v.P)(e)}break;case i.M.BlackOp:case i.M.BlackOperation:try{const n=this.getActionObject(t);if(null==n||!(n instanceof c.u))throw new Error("Failed to get BlackOperation Object for: "+t.name);const r=n.getDifficulty(),o=Math.pow(r,w.Z.DiffMultExponentialFactor)+r/w.Z.DiffMultLinearFactor;this.stamina-=w.Z.BaseStaminaLoss*o,this.stamina<0&&(this.stamina=0);const i=n.teamCount;let s;if(n.attempt(this,e)){a=this.getActionStats(n,e,!0),n.count=0,this.blackops[n.name]=!0;let t=0;n.rankGain&&(t=(0,S.b)(n.rankGain*E.dQ.BladeburnerRank,10),this.changeRank(e,t)),s=Math.ceil(i/2),this.logging.blackops&&this.log(`${e.whoAmI()}: `+n.name+" successful! Gained "+(0,h.$j)(t,1)+" rank")}else{a=this.getActionStats(n,e,!1);let t=0,r=0;if(n.rankLoss&&(t=(0,S.b)(n.rankLoss,10),this.changeRank(e,-1*t)),n.hpLoss){r=n.hpLoss*o,r=Math.ceil((0,S.b)(r,10));const t=(0,x.U)(r);e.takeDamage(r)&&(++this.numHosp,this.moneyLost+=t)}s=Math.floor(i),this.logging.blackops&&this.log(`${e.whoAmI()}: `+n.name+" failed! Lost "+(0,h.$j)(t,1)+" rank and took "+(0,h.$j)(r,0)+" damage")}if(this.resetAction(),i>=1){const t=(0,k.X)(1,s);if(this.teamSize-=t,this.teamSize(0,F.O)(e.currentWork)));for(let t=0;t>this.teamSize-this.sleeveSize;t--){const t=Math.floor(Math.random()*e.length);e[t].takeDamage(e[t].hp.max),e.splice(t,1)}this.teamSize+=this.sleeveSize}this.teamLost+=t,this.logging.blackops&&this.log(`${e.whoAmI()}: You lost ${(0,h.$j)(t,0)} team members during ${n.name}`)}}catch(e){(0,v.P)(String(e))}break;case i.M.Training:{this.stamina-=.5*w.Z.BaseStaminaLoss;const t=30*e.mults.strength_exp,n=30*e.mults.defense_exp,r=30*e.mults.dexterity_exp,o=30*e.mults.agility_exp,i=.04*this.skillMultipliers.stamina;a.strExp=t,a.defExp=n,a.dexExp=r,a.agiExp=o,this.staminaBonus+=i,this.logging.general&&this.log(`${e.whoAmI()}: Training completed. Gained: `+(0,h.Mf)(t)+" str exp, "+(0,h.Mf)(n)+" def exp, "+(0,h.Mf)(r)+" dex exp, "+(0,h.Mf)(o)+" agi exp, "+(0,h.dp)(i)+" max stamina");break}case i.M.FieldAnalysis:case i.M["Field Analysis"]:{let t=.04*Math.pow(e.skills.hacking,.3)+.04*Math.pow(e.skills.intelligence,.9)+.02*Math.pow(e.skills.charisma,.3);if(t*=e.mults.bladeburner_analysis,isNaN(t)||t<0)throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");const n=20*e.mults.hacking_exp,r=20*e.mults.charisma_exp,o=.1*E.dQ.BladeburnerRank;a.hackExp=n,a.chaExp=r,a.intExp=w.Z.BaseIntGain,this.changeRank(e,o),this.getCurrentCity().improvePopulationEstimateByPercentage(t*this.skillMultipliers.successChanceEstimate),this.logging.general&&this.log(`${e.whoAmI()}: Field analysis completed. Gained ${(0,h.dp)(o)} rank, ${(0,h.Mf)(n)} hacking exp, and ${(0,h.Mf)(r)} charisma exp`);break}case i.M.Recruitment:{const t=this.getRecruitmentSuccessChance(e),n=1e3*this.getRecruitmentTime(e);if(Math.random()(0,R.$)(e.currentWork))).length,t=Math.pow(e,-.5)/2;for(const e of Object.keys(this.contracts))this.contracts[e].count+=t;for(const e of Object.keys(this.operations))this.operations[e].count+=t;this.logging.general&&this.log("Sleeve: Infiltrate the synthoid communities.")}changeRank(e,t){if(isNaN(t))throw new Error("NaN passed into Bladeburner.changeRank()");this.rank+=t,this.rank<0&&(this.rank=0),this.maxRank=Math.max(this.rank,this.maxRank);const n=r.FactionName.Bladeburners,a=C.i[n];if(a.isMember){const n=1+a.favor/100;a.playerReputation+=w.Z.RankToFactionRepFactor*t*e.mults.faction_rep*n}const o=(this.totalSkillPoints+1)*w.Z.RanksPerSkillPoint;if(this.maxRank>=o){const e=Math.floor((this.maxRank-o)/w.Z.RanksPerSkillPoint+1);this.skillPoints+=e,this.totalSkillPoints+=e}}processAction(e){if(this.action.type!==i.M.Idle){if(this.actionTimeToComplete<=0)throw new Error(`Invalid actionTimeToComplete value: ${this.actionTimeToComplete}, type; ${this.action.type}`);if(!this.action)throw new Error("Bladeburner.action is not an ActionIdentifier Object");if(this.actionTimeCurrent+=e+this.actionTimeOverflow,this.actionTimeOverflow=0,this.actionTimeCurrent>=this.actionTimeToComplete){this.actionTimeOverflow=this.actionTimeCurrent-this.actionTimeToComplete;const e=this.getActionObject(this.action),t=this.completeAction(g.J5,this.action);if(g.J5.gainMoney(t.money,"bladeburner"),g.J5.gainStats(t),null==e)throw new Error("Failed to get BlackOperation Object for: "+this.action.name);this.action.type!=i.M.BlackOperation&&this.action.type!=i.M.BlackOp&&this.startAction(this.action)}}}calculateStaminaGainPerSecond(){const e=g.J5.skills.agility*this.skillMultipliers.effAgi,t=this.maxStamina/w.Z.MaxStaminaToGainFactor;return(w.Z.StaminaGainPerSecond+t)*Math.pow(e,.17)*(this.skillMultipliers.stamina*g.J5.mults.bladeburner_stamina_gain)}calculateMaxStamina(){const e=g.J5.skills.agility*this.skillMultipliers.effAgi,t=(Math.pow(e,.8)+this.staminaBonus)*this.skillMultipliers.stamina*g.J5.mults.bladeburner_max_stamina;if(this.maxStamina!==t){const e=this.maxStamina;this.maxStamina=t,this.stamina=this.maxStamina*this.stamina/e}if(isNaN(t))throw new Error("Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()")}create(){this.contracts.Tracking=new m.C({name:"Tracking",baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,rankGain:.3,hpLoss:.5,count:(0,k.X)(25,150),weights:{hack:0,str:.05,def:.05,dex:.35,agi:.35,cha:.1,int:.05},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.9,int:1},isStealth:!0}),this.contracts["Bounty Hunter"]=new m.C({name:"Bounty Hunter",baseDifficulty:250,difficultyFac:1.04,rewardFac:1.085,rankGain:.9,hpLoss:1,count:(0,k.X)(5,150),weights:{hack:0,str:.15,def:.15,dex:.25,agi:.25,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.contracts.Retirement=new m.C({name:"Retirement",baseDifficulty:200,difficultyFac:1.03,rewardFac:1.065,rankGain:.6,hpLoss:1,count:(0,k.X)(5,150),weights:{hack:0,str:.2,def:.2,dex:.2,agi:.2,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.operations.Investigation=new u.O({name:"Investigation",baseDifficulty:400,difficultyFac:1.03,rewardFac:1.07,reqdRank:25,rankGain:2.2,rankLoss:.2,count:(0,k.X)(1,100),weights:{hack:.25,str:.05,def:.05,dex:.2,agi:.1,cha:.25,int:.1},decays:{hack:.85,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Undercover Operation"]=new u.O({name:"Undercover Operation",baseDifficulty:500,difficultyFac:1.04,rewardFac:1.09,reqdRank:100,rankGain:4.4,rankLoss:.4,hpLoss:2,count:(0,k.X)(1,100),weights:{hack:.2,str:.05,def:.05,dex:.2,agi:.2,cha:.2,int:.1},decays:{hack:.8,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Sting Operation"]=new u.O({name:"Sting Operation",baseDifficulty:650,difficultyFac:1.04,rewardFac:1.095,reqdRank:500,rankGain:5.5,rankLoss:.5,hpLoss:2.5,count:(0,k.X)(1,150),weights:{hack:.25,str:.05,def:.05,dex:.25,agi:.1,cha:.2,int:.1},decays:{hack:.8,str:.85,def:.85,dex:.85,agi:.85,cha:.7,int:.9},isStealth:!0}),this.operations.Raid=new u.O({name:"Raid",baseDifficulty:800,difficultyFac:1.045,rewardFac:1.1,reqdRank:3e3,rankGain:55,rankLoss:2.5,hpLoss:50,count:(0,k.X)(1,150),weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isKill:!0}),this.operations["Stealth Retirement Operation"]=new u.O({name:"Stealth Retirement Operation",baseDifficulty:1e3,difficultyFac:1.05,rewardFac:1.11,reqdRank:2e4,rankGain:22,rankLoss:2,hpLoss:10,count:(0,k.X)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isStealth:!0,isKill:!0}),this.operations.Assassination=new u.O({name:"Assassination",baseDifficulty:1500,difficultyFac:1.06,rewardFac:1.14,reqdRank:5e4,rankGain:44,rankLoss:4,hpLoss:5,count:(0,k.X)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.8},isStealth:!0,isKill:!0})}process(){if(y.F.isInitialized){if(!g.J5.hasAugmentation(r.AugmentationName.BladesSimulacrum,!0)&&g.J5.currentWork){if(this.action.type!==i.M.Idle){let e="Your Bladeburner action was cancelled because you started doing something else.";this.automateEnabled&&(e+="\n\nYour automation was disabled as well. You will have to re-enable it through the Bladeburner console",this.automateEnabled=!1),M.Z.SuppressBladeburnerPopup||(0,N.X)(e)}this.resetAction()}if(this.stamina<=0&&(this.log("Your Bladeburner action was cancelled because your stamina hit 0"),this.resetAction()),this.storedCycles>=w.Z.CyclesPerSecond){let e=Math.floor(this.storedCycles/w.Z.CyclesPerSecond);e=Math.min(e,5),this.storedCycles-=e*w.Z.CyclesPerSecond,this.calculateMaxStamina(),this.stamina+=this.calculateStaminaGainPerSecond()*e,this.stamina=Math.min(this.maxStamina,this.stamina);for(const t of Object.values(this.contracts)){const n=s.y[t.name];if(void 0===n)throw new Error(`growth formula for action '${t.name}' is undefined`);t.count+=e*n()/w.Z.ActionCountGrowthPeriod}for(const t of Object.values(this.operations)){const n=s.y[t.name];if(void 0===n)throw new Error(`growth formula for action '${t.name}' is undefined`);void 0!==n&&(t.count+=e*n()/w.Z.ActionCountGrowthPeriod)}for(const t of Object.values(r.CityName)){const n=this.cities[t];if(!n)throw new Error("Invalid city when processing passive chaos reduction in Bladeburner.process");n.chaos-=1e-4*e,n.chaos=Math.max(0,n.chaos)}this.randomEventCounter-=e,this.randomEventCounter<=0&&(this.randomEvent(),this.randomEventCounter+=(0,k.X)(240,600)),this.processAction(e),this.automateEnabled&&(this.stamina<=this.automateThreshLow?this.action.name===this.automateActionLow.name&&this.action.type===this.automateActionLow.type||(this.action=new o.T({type:this.automateActionLow.type,name:this.automateActionLow.name}),this.startAction(this.action)):this.stamina>=this.automateThreshHigh&&(this.action.name===this.automateActionHigh.name&&this.action.type===this.automateActionHigh.type||(this.action=new o.T({type:this.automateActionHigh.type,name:this.automateActionHigh.name}),this.startAction(this.action))))}}}getTypeAndNameFromActionId(e){const t={type:"",name:""},n=Object.keys(i.M);for(let r=0;rr)),!1;if(a.type===i.M.BlackOp){const e=this.canAttemptBlackOp(a);if(!e.isAvailable)return n.log("bladeburner.startAction",(()=>e.error+"")),!1}try{return this.startAction(a),n.log("bladeburner.startAction",(()=>`Starting bladeburner action with type '${e}' and name '${t}'`)),!0}catch(e){return console.error(e),this.resetAction(),n.log("bladeburner.startAction",(()=>r)),!1}}getActionTimeNetscriptFn(e,t,n){const r=this.getActionIdFromTypeAndName(t,n);if(null==r)return"bladeburner.getActionTime";const a=this.getActionObject(r);if(null==a)return"bladeburner.getActionTime";switch(r.type){case i.M.Contract:case i.M.Operation:case i.M.BlackOp:case i.M.BlackOperation:return 1e3*a.getActionTime(this,e);case i.M.Training:case i.M["Field Analysis"]:case i.M.FieldAnalysis:return 3e4;case i.M.Recruitment:return 1e3*this.getRecruitmentTime(e);case i.M.Diplomacy:case i.M["Hyperbolic Regeneration Chamber"]:case i.M["Incite Violence"]:return 6e4;default:return"bladeburner.getActionTime"}}getActionEstimatedSuccessChanceNetscriptFn(e,t,n){const r=this.getActionIdFromTypeAndName(t,n);if(null==r)return"bladeburner.getActionEstimatedSuccessChance";const a=this.getActionObject(r);if(null==a)return"bladeburner.getActionEstimatedSuccessChance";switch(r.type){case i.M.Contract:case i.M.Operation:case i.M.BlackOp:case i.M.BlackOperation:return a.getEstSuccessChance(this,e);case i.M.Training:case i.M["Field Analysis"]:case i.M.FieldAnalysis:case i.M.Diplomacy:case i.M["Hyperbolic Regeneration Chamber"]:case i.M["Incite Violence"]:return[1,1];case i.M.Recruitment:{const t=this.getRecruitmentSuccessChance(e);return[t,t]}default:return"bladeburner.getActionEstimatedSuccessChance"}}getActionCountRemainingNetscriptFn(e,t,n){const r=`Invalid action: type='${e}' name='${t}'`,a=this.getActionIdFromTypeAndName(e,t);if(null==a)return n.log("bladeburner.getActionCountRemaining",(()=>r)),-1;const o=this.getActionObject(a);if(null==o)return n.log("bladeburner.getActionCountRemaining",(()=>r)),-1;switch(a.type){case i.M.Contract:case i.M.Operation:return Math.floor(o.count);case i.M.BlackOp:case i.M.BlackOperation:return null!=this.blackops[t]?0:1;case i.M.Training:case i.M.Recruitment:case i.M["Field Analysis"]:case i.M.FieldAnalysis:case i.M.Diplomacy:case i.M["Hyperbolic Regeneration Chamber"]:case i.M["Incite Violence"]:return 1/0;default:return n.log("bladeburner.getActionCountRemaining",(()=>r)),-1}}getSkillLevelNetscriptFn(e,t){return""!==e&&Object.hasOwn(d.n,e)?null==this.skills[e]?0:this.skills[e]:(t.log("bladeburner.getSkillLevel",(()=>`Invalid skill: '${e}'`)),-1)}getSkillUpgradeCostNetscriptFn(e,t,n){if(""===e||!Object.hasOwn(d.n,e))return n.log("bladeburner.getSkillUpgradeCost",(()=>`Invalid skill: '${e}'`)),-1;const r=d.n[e];return null==this.skills[e]?r.calculateCost(0,t):r.calculateCost(this.skills[e],t)}upgradeSkillNetscriptFn(e,t,n){const r=`Invalid skill: '${e}'`;if(!Object.hasOwn(d.n,e))return n.log("bladeburner.upgradeSkill",(()=>r)),!1;const a=d.n[e];let o=0;this.skills[e]&&!isNaN(this.skills[e])&&(o=this.skills[e]);const i=a.calculateCost(o,t);return a.maxLvl&&o+t>a.maxLvl?(n.log("bladeburner.upgradeSkill",(()=>`Skill '${e}' cannot be upgraded ${t} time(s).`)),!1):this.skillPoints`You do not have enough skill points to upgrade ${e} ${t} time(s). (You have ${this.skillPoints}, you need ${i})`)),!1):(this.skillPoints-=i,this.upgradeSkill(a,t),n.log("bladeburner.upgradeSkill",(()=>`'${e}' upgraded to level ${this.skills[e]}`)),!0)}getTeamSizeNetscriptFn(e,t,n){if(""===e&&""===t)return this.teamSize;const r=`Invalid action: type='${e}' name='${t}'`,a=this.getActionIdFromTypeAndName(e,t);if(null==a)return n.log("bladeburner.getTeamSize",(()=>r)),-1;const o=this.getActionObject(a);return null==o?(n.log("bladeburner.getTeamSize",(()=>r)),-1):a.type===i.M.Operation||a.type===i.M.BlackOp||a.type===i.M.BlackOperation?o.teamCount:0}setTeamSizeNetscriptFn(e,t,n,r){const a=`Invalid action: type='${e}' name='${t}'`,o=this.getActionIdFromTypeAndName(e,t);if(null==o)return r.log("bladeburner.setTeamSize",(()=>a)),-1;if(o.type!==i.M.Operation&&o.type!==i.M.BlackOp&&o.type!==i.M.BlackOperation)return r.log("bladeburner.setTeamSize",(()=>"Only valid for 'Operations' and 'BlackOps'")),-1;const s=this.getActionObject(o);if(null==s)return r.log("bladeburner.setTeamSize",(()=>a)),-1;let l=Math.round(n);return isNaN(l)||l<0?(r.log("bladeburner.setTeamSize",(()=>`Invalid size: ${n}`)),-1):(this.teamSize`Team size for '${t}' set to ${l}.`)),l)}joinBladeburnerFactionNetscriptFn(e){const t=C.i[r.FactionName.Bladeburners];return!!t.isMember||(this.rank>=w.Z.RankNeededForFaction?((0,T.Bj)(t),e.log("bladeburner.joinBladeburnerFaction",(()=>`Joined ${r.FactionName.Bladeburners} faction.`)),!0):(e.log("bladeburner.joinBladeburnerFaction",(()=>`You do not have the required rank (${this.rank}/${w.Z.RankNeededForFaction}).`)),!1))}toJSON(){return(0,a.L3)("Bladeburner",this)}static fromJSON(e){return(0,a.Id)(B,e.data)}}a.gY.Bladeburner=B},39315:(e,t,n)=>{"use strict";n.d(t,{j:()=>l});var r=n(3862),a=n(92666),o=n(94515),i=n(68980),s=n(33244);class l{pop=0;popEst=0;comms=0;chaos=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.CityName.Sector12;this.name=e,this.pop=(0,a.X)(r.Z.PopulationThreshold,1.5*r.Z.PopulationThreshold),this.popEst=this.pop*(Math.random()+.5),this.comms=(0,a.X)(5,150),this.chaos=0}changeChaosByPercentage(e){if(isNaN(e))throw new Error("NaN passed into City.chaosChaosByPercentage()");0!==e&&(this.chaos+=this.chaos*(e/100),this.chaos<0&&(this.chaos=0))}improvePopulationEstimateByCount(e){if(isNaN(e))throw new Error("NaN passed into City.improvePopulationEstimateByCount()");this.popEstthis.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst-=e,this.popEst1&&void 0!==arguments[1]?arguments[1]:1,isNaN(e))throw new Error("NaN passed into City.improvePopulationEstimateByPercentage()");this.popEstthis.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst*=1-e/100,this.popEst1&&void 0!==arguments[1]?arguments[1]:{estChange:0,estOffset:0};if(isNaN(e))throw new Error("NaN passed into City.changePopulationByCount()");this.pop+=e,t.estChange&&!isNaN(t.estChange)&&(this.popEst+=t.estChange),t.estOffset&&(this.popEst=(0,i.b)(this.popEst,t.estOffset)),this.popEst=Math.max(this.popEst,0)}changePopulationByPercentage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{nonZero:!1,changeEstEqually:!1};if(isNaN(e))throw new Error("NaN passed into City.changePopulationByPercentage()");if(0===e)return 0;let n=Math.round(this.pop*(e/100));return t.nonZero&&0===n&&(n=e>0?1:-1),this.pop+=n,t.changeEstEqually&&(this.popEst+=n,this.popEst<0&&(this.popEst=0)),n}changeChaosByCount(e){if(isNaN(e))throw new Error("NaN passed into City.changeChaosByCount()");0!==e&&(this.chaos+=e,this.chaos<0&&(this.chaos=0))}toJSON(){return(0,o.L3)("City",this)}static fromJSON(e){return(0,o.Id)(l,e.data)}}o.gY.City=l},12903:(e,t,n)=>{"use strict";n.d(t,{C:()=>o});var r=n(28961),a=n(94515);class o extends r.a{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)}getActionTypeSkillSuccessBonus(e){return e.skillMultipliers.successChanceContract}toJSON(){return(0,a.L3)("Contract",this)}static fromJSON(e){return(0,a.Id)(o,e.data)}}a.gY.Contract=o},91407:(e,t,n)=>{"use strict";let r;n.d(t,{s:()=>r}),function(e){e.OperationTyphoon="Operation Typhoon",e.OperationZero="Operation Zero",e.OperationX="Operation X",e.OperationTitan="Operation Titan",e.OperationAres="Operation Ares",e.OperationArchangel="Operation Archangel",e.OperationJuggernaut="Operation Juggernaut",e.OperationRedDragon="Operation Red Dragon",e.OperationK="Operation K",e.OperationDeckard="Operation Deckard",e.OperationTyrell="Operation Tyrell",e.OperationWallace="Operation Wallace",e.OperationShoulderOfOrion="Operation Shoulder of Orion",e.OperationHyron="Operation Hyron",e.OperationMorpheus="Operation Morpheus",e.OperationIonStorm="Operation Ion Storm",e.OperationAnnihilus="Operation Annihilus",e.OperationUltron="Operation Ultron",e.OperationCenturion="Operation Centurion",e.OperationVindictus="Operation Vindictus",e.OperationDaedalus="Operation Daedalus"}(r||(r={}))},67309:(e,t,n)=>{"use strict";n.d(t,{H:()=>a});var r=n(28961);const a={},o=["Training","Field Analysis","Recruitment","Diplomacy","Hyperbolic Regeneration Chamber","Incite Violence"];for(const e of o)a[e]=new r.a({name:e})},63322:(e,t,n)=>{"use strict";n.d(t,{O:()=>i});var r=n(3862),a=n(28961),o=n(94515);class i extends a.a{reqdRank=100;teamCount=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;super(e),e&&e.reqdRank&&(this.reqdRank=e.reqdRank),e&&e.teamCount&&(this.teamCount=e.teamCount)}getTeamSuccessBonus(e){return this.teamCount&&this.teamCount>0?(this.teamCount=Math.min(this.teamCount,e.teamSize),Math.pow(this.teamCount,.05)):1}getActionTypeSkillSuccessBonus(e){return e.skillMultipliers.successChanceOperation}getChaosDifficultyBonus(e){const t=e.getCurrentCity();if(t.chaos>r.Z.ChaosThreshold){const e=t.chaos-r.Z.ChaosThreshold+1;return Math.pow(e,.5)}return 1}toJSON(){return(0,o.L3)("Operation",this)}static fromJSON(e){return(0,o.Id)(i,e.data)}}o.gY.Operation=i},90320:(e,t,n)=>{"use strict";n.d(t,{U:()=>a});var r=n(97740);class a{baseCost=1;costInc=1;maxLvl=0;successChanceAll=0;successChanceStealth=0;successChanceKill=0;successChanceContract=0;successChanceOperation=0;successChanceEstimate=0;actionTime=0;effHack=0;effStr=0;effDef=0;effDex=0;effAgi=0;effCha=0;stamina=0;money=0;expGain=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{name:"foo",desc:"foo"};if(!e.name)throw new Error("Failed to initialize Bladeburner Skill. No name was specified in ctor");if(!e.desc)throw new Error("Failed to initialize Bladeburner Skills. No desc was specified in ctor");this.name=e.name,this.desc=e.desc,this.baseCost=e.baseCost?e.baseCost:1,this.costInc=e.costInc?e.costInc:1,e.maxLvl&&(this.maxLvl=e.maxLvl),e.successChanceAll&&(this.successChanceAll=e.successChanceAll),e.successChanceStealth&&(this.successChanceStealth=e.successChanceStealth),e.successChanceKill&&(this.successChanceKill=e.successChanceKill),e.successChanceContract&&(this.successChanceContract=e.successChanceContract),e.successChanceOperation&&(this.successChanceOperation=e.successChanceOperation),e.successChanceEstimate&&(this.successChanceEstimate=e.successChanceEstimate),e.actionTime&&(this.actionTime=e.actionTime),e.effHack&&(this.effHack=e.effHack),e.effStr&&(this.effStr=e.effStr),e.effDef&&(this.effDef=e.effDef),e.effDex&&(this.effDex=e.effDex),e.effAgi&&(this.effAgi=e.effAgi),e.effCha&&(this.effCha=e.effCha),e.stamina&&(this.stamina=e.stamina),e.money&&(this.money=e.money),e.expGain&&(this.expGain=e.expGain)}calculateCost(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(t<0||t%1!=0)throw new Error(`${t} is an invalid number of upgrades`);if(t<=100)return((e,t)=>{if(t<=1)return Math.floor((this.baseCost+e*this.costInc)*r.dQ.BladeburnerSkillCost);{const n=Math.floor((this.baseCost+e*this.costInc)*r.dQ.BladeburnerSkillCost);return this.calculateCost(e+1,t-1)+n}})(e,t);{const n=t*(2*this.baseCost+this.costInc*(2*e+t+1))/2*r.dQ.BladeburnerSkillCost-t/2;return Math.floor(n)}}getMultiplier(e){return"successChanceAll"===e?this.successChanceAll:"successChanceStealth"===e?this.successChanceStealth:"successChanceKill"===e?this.successChanceKill:"successChanceContract"===e?this.successChanceContract:"successChanceOperation"===e?this.successChanceOperation:"successChanceEstimate"===e?this.successChanceEstimate:"actionTime"===e?this.actionTime:"effHack"===e?this.effHack:"effStr"===e?this.effStr:"effDef"===e?this.effDef:"effDex"===e?this.effDex:"effAgi"===e?this.effAgi:"effCha"===e?this.effCha:"stamina"===e?this.stamina:"money"===e?this.money:"expGain"===e?this.expGain:0}}},71099:(e,t,n)=>{"use strict";n.d(t,{n:()=>o});var r=n(90320),a=n(42115);const o={};o[a.x.BladesIntuition]=new r.U({name:a.x.BladesIntuition,desc:"Each level of this skill increases your success chance for all Contracts, Operations, and BlackOps by 3%",baseCost:3,costInc:2.1,successChanceAll:3}),o[a.x.Cloak]=new r.U({name:a.x.Cloak,desc:"Each level of this skill increases your success chance in stealth-related Contracts, Operations, and BlackOps by 5.5%",baseCost:2,costInc:1.1,successChanceStealth:5.5}),o[a.x.ShortCircuit]=new r.U({name:a.x.ShortCircuit,desc:"Each level of this skill increases your success chance in Contracts, Operations, and BlackOps that involve retirement by 5.5%",baseCost:2,costInc:2.1,successChanceKill:5.5}),o[a.x.DigitalObserver]=new r.U({name:a.x.DigitalObserver,desc:"Each level of this skill increases your success chance in all Operations and BlackOps by 4%",baseCost:2,costInc:2.1,successChanceOperation:4}),o[a.x.Tracer]=new r.U({name:a.x.Tracer,desc:"Each level of this skill increases your success chance in all Contracts by 4%",baseCost:2,costInc:2.1,successChanceContract:4}),o[a.x.Overclock]=new r.U({name:a.x.Overclock,desc:"Each level of this skill decreases the time it takes to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 90)",baseCost:3,costInc:1.4,maxLvl:90,actionTime:1}),o[a.x.Reaper]=new r.U({name:a.x.Reaper,desc:"Each level of this skill increases your effective combat stats for Bladeburner actions by 2%",baseCost:2,costInc:2.1,effStr:2,effDef:2,effDex:2,effAgi:2}),o[a.x.EvasiveSystem]=new r.U({name:a.x.EvasiveSystem,desc:"Each level of this skill increases your effective dexterity and agility for Bladeburner actions by 4%",baseCost:2,costInc:2.1,effDex:4,effAgi:4}),o[a.x.Datamancer]=new r.U({name:a.x.Datamancer,desc:"Each level of this skill increases your effectiveness in synthoid population analysis and investigation by 5%. This affects all actions that can potentially increase the accuracy of your synthoid population/community estimates.",baseCost:3,costInc:1,successChanceEstimate:5}),o[a.x.CybersEdge]=new r.U({name:a.x.CybersEdge,desc:"Each level of this skill increases your max stamina by 2%",baseCost:1,costInc:3,stamina:2}),o[a.x.HandsOfMidas]=new r.U({name:a.x.HandsOfMidas,desc:"Each level of this skill increases the amount of money you receive from Contracts by 10%",baseCost:2,costInc:2.5,money:10}),o[a.x.Hyperdrive]=new r.U({name:a.x.Hyperdrive,desc:"Each level of this skill increases the experience earned from Contracts, Operations, and BlackOps by 10%",baseCost:1,costInc:2.5,expGain:10})},55353:(e,t,n)=>{"use strict";n.d(t,{M:()=>r});const r={Idle:1,Contract:2,Operation:3,BlackOp:4,BlackOperation:4,Training:5,Recruitment:6,FieldAnalysis:7,"Field Analysis":7,Diplomacy:8,"Hyperbolic Regeneration Chamber":9,"Incite Violence":10}},85866:(e,t,n)=>{"use strict";n.d(t,{k:()=>o});var r=n(67294),a=n(33244);const o={[a.BlackOperationName.OperationTyphoon]:{desc:r.createElement(r.Fragment,null,"Obadiah Zenyatta is the leader of a RedWater PMC. It has long been known among the intelligence community that Zenyatta, along with the rest of the PMC, is a Synthoid.",r.createElement("br",null),r.createElement("br",null),"The goal of ",a.BlackOperationName.OperationTyphoon," is to find and eliminate Zenyatta and RedWater by any means necessary. After the task is completed, the actions must be covered up from the general public.")},[a.BlackOperationName.OperationZero]:{desc:r.createElement(r.Fragment,null,"AeroCorp is one of the world's largest defense contractors. Its leader, Steve Watataki, is thought to be a supporter of Synthoid rights. He must be removed.",r.createElement("br",null),r.createElement("br",null),"The goal of ",a.BlackOperationName.OperationZero," is to covertly infiltrate AeroCorp and uncover any incriminating evidence or information against Watataki that will cause him to be removed from his position at AeroCorp. Incriminating evidence can be fabricated as a last resort. Be warned that AeroCorp has some of the most advanced security measures in the world.")},[a.BlackOperationName.OperationX]:{desc:r.createElement(r.Fragment,null,"We have recently discovered an underground publication group called Samizdat. Even though most of their publications are nonsensical conspiracy theories, the average human is gullible enough to believe them. Many of their works discuss Synthoids and pose a threat to society. The publications are spreading rapidly in China and other Eastern countries.",r.createElement("br",null),r.createElement("br",null),"Samizdat has done a good job of keeping hidden and anonymous. However, we've just received intelligence that their base of operations is in ",a.CityName.Ishima,"'s underground sewer systems. Your task is to investigate the sewer systems, and eliminate Samizdat. They must never publish anything again.")},[a.BlackOperationName.OperationTitan]:{desc:r.createElement(r.Fragment,null,"Several months ago Titan Laboratories' Bioengineering department was infiltrated by Synthoids. As far as we know, Titan Laboratories' management has no knowledge about this. We don't know what the Synthoids are up to, but the research that they could be conducting using Titan Laboratories' vast resources is potentially very dangerous.",r.createElement("br",null),r.createElement("br",null),"Your goal is to enter and destroy the Bioengineering department's facility in ",a.CityName.Aevum,". The task is not just to retire the Synthoids there, but also to destroy any information or research at the facility that is relevant to the Synthoids and their goals.")},[a.BlackOperationName.OperationAres]:{desc:r.createElement(r.Fragment,null,"One of our undercover agents, Agent Carter, has informed us of a massive weapons deal going down in Dubai between rogue Russian militants and a radical Synthoid community. These weapons are next-gen plasma and energy weapons. It is critical for the safety of humanity that this deal does not happen.",r.createElement("br",null),r.createElement("br",null),"Your task is to intercept the deal. Leave no survivors.")},[a.BlackOperationName.OperationArchangel]:{desc:r.createElement(r.Fragment,null,"Our analysts have discovered that the popular Red Rabbit brothel in Amsterdam is run and 'staffed' by MK-VI Synthoids. Intelligence suggests that the profit from this brothel is used to fund a large black market arms trafficking operation.",r.createElement("br",null),r.createElement("br",null),"The goal of this operation is to take out the leaders that are running the Red Rabbit brothel. Try to limit the number of other casualties, but do what you must to complete the mission.")},[a.BlackOperationName.OperationJuggernaut]:{desc:r.createElement(r.Fragment,null,"The CIA has just encountered a new security threat. A new criminal group, lead by a shadowy operative who calls himself Juggernaut, has been smuggling drugs and weapons (including suspected bioweapons) into"," ",a.CityName.Sector12,". We also have reason to believe they tried to break into one of Universal Energy's facilities in order to cause a city-wide blackout. The CIA suspects that Juggernaut is a heavily-augmented Synthoid, and have thus enlisted our help.",r.createElement("br",null),r.createElement("br",null),"Your mission is to eradicate Juggernaut and his followers.")},[a.BlackOperationName.OperationRedDragon]:{desc:r.createElement(r.Fragment,null,"The ",a.FactionName.Tetrads," criminal organization is suspected of reverse-engineering the MK-VI Synthoid design. We believe they altered and possibly improved the design and began manufacturing their own Synthoid models in order to bolster their criminal activities.",r.createElement("br",null),r.createElement("br",null),"Your task is to infiltrate and destroy the ",a.FactionName.Tetrads,"' base of operations in Los Angeles. Intelligence tells us that their base houses one of their Synthoid manufacturing units.")},[a.BlackOperationName.OperationK]:{desc:r.createElement(r.Fragment,null,"CODE RED SITUATION. Our intelligence tells us that VitaLife has discovered a new android cloning technology. This technology is supposedly capable of cloning Synthoids, not only physically but also their advanced AI modules. We do not believe that VitaLife is trying to use this technology illegally or maliciously, but if any Synthoids were able to infiltrate the corporation and take advantage of this technology then the results would be catastrophic.",r.createElement("br",null),r.createElement("br",null),"We do not have the power or jurisdiction to shut this down through legal or political means, so we must resort to a covert operation. Your goal is to destroy this technology and eliminate anyone who was involved in its creation.")},[a.BlackOperationName.OperationDeckard]:{desc:r.createElement(r.Fragment,null,"Despite your success in eliminating VitaLife's new android-replicating technology in"," ",a.BlackOperationName.OperationK,", we've discovered that a small group of MK-VI Synthoids were able to make off with the schematics and design of the technology before the Operation. It is almost a certainty that these Synthoids are some of the rogue MK-VI ones from the Synthoid Uprising.",r.createElement("br",null),r.createElement("br",null),"The goal of ",a.BlackOperationName.OperationDeckard," is to hunt down these Synthoids and retire them. I don't need to tell you how critical this mission is.")},[a.BlackOperationName.OperationTyrell]:{desc:r.createElement(r.Fragment,null,"A week ago ",a.FactionName.BladeIndustries," reported a small break-in at one of their ",a.CityName.Aevum," Augmentation storage facilities. We figured out that ",a.FactionName.TheDarkArmy," was behind the heist, and didn't think any more of it. However, we've just discovered that several known MK-VI Synthoids were part of that break-in group.",r.createElement("br",null),r.createElement("br",null),"We cannot have Synthoids upgrading their already-enhanced abilities with Augmentations. Your task is to hunt down associated ",a.FactionName.TheDarkArmy," members and eliminate them.")},[a.BlackOperationName.OperationWallace]:{desc:r.createElement(r.Fragment,null,"Based on information gathered from ",a.BlackOperationName.OperationTyrell,", we've discovered that"," ",a.FactionName.TheDarkArmy," was well aware that there were Synthoids amongst their ranks. Even worse, we believe that ",a.FactionName.TheDarkArmy," is working together with other criminal organizations such as"," ",a.FactionName.TheSyndicate," and that they are planning some sort of large-scale takeover of multiple major cities, most notably ",a.CityName.Aevum,". We suspect that Synthoids have infiltrated the ranks of these criminal factions and are trying to stage another Synthoid uprising.",r.createElement("br",null),r.createElement("br",null),"The best way to deal with this is to prevent it before it even happens. The goal of"," ",a.BlackOperationName.OperationWallace," is to destroy ",a.FactionName.TheDarkArmy," and Syndicate factions in"," ",a.CityName.Aevum," immediately. Leave no survivors.")},[a.BlackOperationName.OperationShoulderOfOrion]:{desc:r.createElement(r.Fragment,null,"China's Solaris Space Systems is secretly launching the first manned spacecraft in over a decade using Synthoids. We believe China is trying to establish the first off-world colonies.",r.createElement("br",null),r.createElement("br",null),"The mission is to prevent this launch without instigating an international conflict. When you accept this mission you will be officially disavowed by the NSA and the national government until after you successfully return. In the event of failure, all of the operation's team members must not let themselves be captured alive.")},[a.BlackOperationName.OperationHyron]:{desc:r.createElement(r.Fragment,null,"Our intelligence tells us that ",a.FactionName.FulcrumSecretTechnologies," is developing a quantum supercomputer using human brains as core processors. This supercomputer is rumored to be able to store vast amounts of data and perform computations unmatched by any other supercomputer on the planet. But more importantly, the use of organic human brains means that the supercomputer may be able to reason abstractly and become self-aware.",r.createElement("br",null),r.createElement("br",null),"I do not need to remind you why sentient-level AIs pose a serious threat to all of mankind.",r.createElement("br",null),r.createElement("br",null),"The research for this project is being conducted at one of ",a.FactionName.FulcrumSecretTechnologies," secret facilities in ",a.CityName.Aevum,", codenamed 'Alpha Ranch'. Infiltrate the compound, delete and destroy the work, and then find and kill the project lead.")},[a.BlackOperationName.OperationMorpheus]:{desc:r.createElement(r.Fragment,null,"DreamSense Technologies is an advertising company that uses special technology to transmit their ads into the people's dreams and subconscious. They do this using broadcast transmitter towers. Based on information from our agents and informants in ",a.CityName.Chongqing,", we have reason to believe that one of the broadcast towers there has been compromised by Synthoids and is being used to spread pro-Synthoid propaganda.",r.createElement("br",null),r.createElement("br",null),"The mission is to destroy this broadcast tower. Speed and stealth are of the utmost importance for this.")},[a.BlackOperationName.OperationIonStorm]:{desc:r.createElement(r.Fragment,null,"Our analysts have uncovered a gathering of MK-VI Synthoids that have taken up residence in the"," ",a.CityName.Sector12," Slums. We don't know if they are rogue Synthoids from the Uprising, but we do know that they have been stockpiling weapons, money, and other resources. This makes them dangerous.",r.createElement("br",null),r.createElement("br",null),"This is a full-scale assault operation to find and retire all of these Synthoids in the ",a.CityName.Sector12," ","Slums.")},[a.BlackOperationName.OperationAnnihilus]:{desc:r.createElement(r.Fragment,null,"Our superiors have ordered us to eradicate everything and everyone in an underground facility located in"," ",a.CityName.Aevum,". They tell us that the facility houses many dangerous Synthoids and belongs to a terrorist organization called '",a.FactionName.TheCovenant,"'. We have no prior intelligence about this organization, so you are going in blind.")},[a.BlackOperationName.OperationUltron]:{desc:r.createElement(r.Fragment,null,a.FactionName.OmniTekIncorporated,", the original designer and manufacturer of Synthoids, has notified us of a malfunction in their AI design. This malfunction, when triggered, causes MK-VI Synthoids to become radicalized and seek out the destruction of humanity. They say that this bug affects all MK-VI Synthoids, not just the rogue ones from the Uprising.",r.createElement("br",null),r.createElement("br",null),a.FactionName.OmniTekIncorporated," has also told us they believe someone has triggered this malfunction in a large group of MK-VI Synthoids, and that these newly-radicalized Synthoids are now amassing in"," ",a.CityName.Volhaven," to form a terrorist group called Ultron.",r.createElement("br",null),r.createElement("br",null),"Intelligence suggests Ultron is heavily armed and that their members are augmented. We believe Ultron is making moves to take control of and weaponize DeltaOne's Tactical High-Energy Satellite Laser Array (THESLA).",r.createElement("br",null),r.createElement("br",null),"Your task is to find and destroy Ultron.")},[a.BlackOperationName.OperationCenturion]:{desc:r.createElement(r.Fragment,null,"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)",r.createElement("br",null),r.createElement("br",null),"Throughout all of humanity's history, we have relied on technology to survive, conquer, and progress. Its advancement became our primary goal. And at the peak of human civilization technology turned into power. Global, absolute power.",r.createElement("br",null),r.createElement("br",null),"It seems that the universe is not without a sense of irony.",r.createElement("br",null),r.createElement("br",null),"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)")},[a.BlackOperationName.OperationVindictus]:{desc:r.createElement(r.Fragment,null,"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)",r.createElement("br",null),r.createElement("br",null),"The bits are all around us. The daemons that hold the Node together can manifest themselves in many different ways.",r.createElement("br",null),r.createElement("br",null),"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)")},[a.BlackOperationName.OperationDaedalus]:{desc:r.createElement(r.Fragment,null," Yesterday we obeyed kings and bent our neck to emperors. Today we kneel only to truth.")}}},3862:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r={CyclesPerSecond:5,StaminaGainPerSecond:.0085,BaseStaminaLoss:.285,MaxStaminaToGainFactor:7e4,DifficultyToTimeFactor:10,DiffMultExponentialFactor:.28,DiffMultLinearFactor:650,EffAgiLinearFactor:1e4,EffDexLinearFactor:1e4,EffAgiExponentialFactor:.04,EffDexExponentialFactor:.035,BaseRecruitmentTimeNeeded:300,PopulationThreshold:1e9,PopulationExponent:.7,ChaosThreshold:50,BaseStatGain:1,BaseIntGain:.003,ActionCountGrowthPeriod:480,RankToFactionRepFactor:2,RankNeededForFaction:25,ContractSuccessesPerLevel:3,OperationSuccessesPerLevel:2.5,RanksPerSkillPoint:3,ContractBaseMoneyGain:25e4,HrcHpGain:2,HrcStaminaGain:1}},18992:(e,t,n)=>{"use strict";n.d(t,{a:()=>a});var r=n(67294);const a={Tracking:{desc:r.createElement(r.Fragment,null,"Identify and locate Synthoids. This contract involves reconnaissance and information-gathering ONLY. Do NOT engage. Stealth is of the utmost importance.",r.createElement("br",null),r.createElement("br",null),"Successfully completing Tracking contracts will slightly improve your Synthoid population estimate for whatever city you are currently in.")},"Bounty Hunter":{desc:r.createElement(r.Fragment,null,"Hunt down and capture fugitive Synthoids. These Synthoids are wanted alive.",r.createElement("br",null),r.createElement("br",null),"Successfully completing a Bounty Hunter contract will lower the population in your current city, and will also increase its chaos level.")},Retirement:{desc:r.createElement(r.Fragment,null,"Hunt down and retire (kill) rogue Synthoids.",r.createElement("br",null),r.createElement("br",null),"Successfully completing a Retirement contract will lower the population in your current city, and will also increase its chaos level.")}}},53977:(e,t,n)=>{"use strict";n.d(t,{H:()=>o});var r=n(67294),a=n(15485);const o={Training:{desc:r.createElement(r.Fragment,null,"Improve your abilities at the Bladeburner unit's specialized training center. Doing this gives experience for all combat stats and also increases your max stamina."),exp:(0,a.fC)({strExp:30,defExp:30,dexExp:30,agiExp:30})},"Field Analysis":{desc:r.createElement(r.Fragment,null,"Mine and analyze Synthoid-related data. This improves the Bladeburner unit's intelligence on Synthoid locations and activities. Completing this action will improve the accuracy of your Synthoid population estimated in the current city.",r.createElement("br",null),r.createElement("br",null),"Does NOT require stamina."),exp:(0,a.fC)({hackExp:20,chaExp:20})},Recruitment:{desc:r.createElement(r.Fragment,null,"Attempt to recruit members for your Bladeburner team. These members can help you conduct operations.",r.createElement("br",null),r.createElement("br",null),"Does NOT require stamina."),exp:(0,a.fC)({chaExp:120})},Diplomacy:{desc:r.createElement(r.Fragment,null,"Improve diplomatic relations with the Synthoid population. Completing this action will reduce the Chaos level in your current city.",r.createElement("br",null),r.createElement("br",null),"Does NOT require stamina."),exp:(0,a.fC)({chaExp:120})},"Hyperbolic Regeneration Chamber":{desc:r.createElement(r.Fragment,null,"Enter cryogenic stasis using the Bladeburner division's hi-tech Regeneration Chamber. This will slowly heal your wounds and slightly increase your stamina.",r.createElement("br",null),r.createElement("br",null)),exp:(0,a.fC)()},"Incite Violence":{desc:r.createElement(r.Fragment,null,"Purposefully stir trouble in the synthoid community in order to gain a political edge. This will generate additional contracts and operations, at the cost of increased Chaos."),exp:(0,a.fC)({strExp:10,defExp:10,dexExp:10,agiExp:10,chaExp:10})}}},15277:(e,t,n)=>{"use strict";n.d(t,{y:()=>a});var r=n(92666);const a={Tracking:()=>(0,r.X)(5,75)/10,"Bounty Hunter":()=>(0,r.X)(5,75)/10,Retirement:()=>(0,r.X)(5,75)/10,Investigation:()=>(0,r.X)(10,40)/10,"Undercover Operation":()=>(0,r.X)(10,40)/10,"Sting Operation":()=>(0,r.X)(3,40)/10,Raid:()=>(0,r.X)(2,40)/10,"Stealth Retirement Operation":()=>(0,r.X)(1,20)/10,Assassination:()=>(0,r.X)(1,20)/10}},66621:(e,t,n)=>{"use strict";n.d(t,{I:()=>r});const r={helpList:["Use 'help [command]' to get more information about a particular Bladeburner console command."," "," automate [var] [val] [hi/low] Configure simple automation for Bladeburner tasks"," clear/cls Clear the console"," help [cmd] Display this help text, or help text for a specific command"," log [en/dis] [type] Enable or disable logging for events and actions"," skill [action] [name] Level or display info about your Bladeburner skills"," start [type] [name] Start a Bladeburner action/task"," stop Stops your current Bladeburner action/task"," "],automate:["Usage: automate [var] [val] [hi/low]"," ","A simple way to automate your Bladeburner actions. This console command can be used to automatically start an action when your stamina rises above a certain threshold, and automatically switch to another action when your stamina drops below another threshold."," "," automate status - Check the current status of your automation and get a brief description of what it'll do"," automate en - Enable the automation feature"," automate dis - Disable the automation feature"," ","There are four properties that must be set for this automation to work properly. Here is how to set them:"," "," automate stamina 100 high"," automate contract Tracking high"," automate stamina 50 low"," automate general 'Field Analysis' low"," ","Using the four console commands above will set the automation to perform Tracking contracts if your stamina is 100 or higher, and then switch to Field Analysis if your stamina drops below 50. Note that when setting the action, the name of the action is CASE-SENSITIVE. It must exactly match whatever the name is in the UI."," "],clear:["Usage: clear"," ","Clears the console"," "],cls:["Usage: cls"," ","Clears the console"," "],help:["Usage: help [command]"," ","Running 'help' with no arguments displays the general help text, which lists all console commands and a brief description of what they do. A command can be specified to get more specific help text about that particular command. For example:"," "," help automate"," ","will display specific information about using the automate console command"," "],log:["Usage: log [en/dis] [type]"," ","Enable or disable logging. By default, the results of completing actions such as contracts/operations are logged in the console. There are also random events that are logged in the console as well. The five categories of things that get logged are:"," ","[general, contracts, ops, blackops, events]"," ","The logging for these categories can be enabled or disabled like so:"," "," log dis contracts - Disables logging that occurs when contracts are completed"," log en contracts - Enables logging that occurs when contracts are completed"," log dis events - Disables logging for Bladeburner random events"," ","Logging can be universally enabled/disabled using the 'all' keyword:"," "," log dis all"," log en all"," "],skill:["Usage: skill [action] [name]"," ","Level or display information about your skills."," ","To display information about all of your skills and your multipliers, use:"," "," skill list"," ","To display information about a specific skill, specify the name of the skill afterwards. Note that the name of the skill is case-sensitive. Enter it exactly as seen in the UI. If the name of the skill has whitespace, enclose the name of the skill in double quotation marks:"," "," skill list Reaper"," skill list 'Digital Observer'"," ","This console command can also be used to level up skills:"," "," skill level [skill name]"," "],start:["Usage: start [type] [name]"," ","Start an action. An action is specified by its type and its name. The name is case-sensitive. It must appear exactly as it does in the UI. If the name of the action has whitespace, enclose it in double quotation marks. Valid action types include:"," ","[general, contract, op, blackop]"," ","Examples:"," "," start contract Tracking"," start op 'Undercover Operation'"," "],stop:["Usage: stop"," ","Stop your current action and go idle."," "]}},64860:(e,t,n)=>{"use strict";n.d(t,{D:()=>a,j:()=>o});var r=n(67294);const a=r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16px",height:"16px",viewBox:"0 0 166 132",style:{fill:"#adff2f"}},r.createElement("g",null,r.createElement("path",{d:"M132.658-0.18l-24.321,24.321c-7.915-2.71-16.342-4.392-25.087-4.392c-45.84,0-83,46-83,46 s14.1,17.44,35.635,30.844L12.32,120.158l12.021,12.021L144.68,11.841L132.658-0.18z M52.033,80.445 c-2.104-4.458-3.283-9.438-3.283-14.695c0-19.054,15.446-34.5,34.5-34.5c5.258,0,10.237,1.179,14.695,3.284L52.033,80.445z"}),r.createElement("path",{d:"M134.865,37.656l-18.482,18.482c0.884,3.052,1.367,6.275,1.367,9.612c0,19.055-15.446,34.5-34.5,34.5 c-3.337,0-6.56-0.483-9.611-1.367l-10.124,10.124c6.326,1.725,12.934,2.743,19.735,2.743c45.84,0,83-46,83-46 S153.987,50.575,134.865,37.656z"}))),o=r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16px",height:"16px",viewBox:"-22 0 511 511.99561",style:{fill:"#adff2f"}},r.createElement("path",{d:"m.496094 466.242188 39.902344-39.902344 45.753906 45.753906-39.898438 39.902344zm0 0"}),r.createElement("path",{d:"m468.421875 89.832031-1.675781-89.832031-300.265625 300.265625 45.753906 45.753906zm0 0"}),r.createElement("path",{d:"m95.210938 316.785156 16.84375 16.847656h.003906l83.65625 83.65625 22.753906-22.753906-100.503906-100.503906zm0 0"}),r.createElement("path",{d:"m101.445312 365.300781-39.902343 39.902344 45.753906 45.753906 39.902344-39.902343-39.90625-39.902344zm0 0"}))},39411:(e,t,n)=>{"use strict";n.d(t,{B:()=>a});var r=n(67294);const a={Investigation:{desc:r.createElement(r.Fragment,null,"As a field agent, investigate and identify Synthoid populations, movements, and operations.",r.createElement("br",null),r.createElement("br",null),"Successful Investigation ops will increase the accuracy of your synthoid data.",r.createElement("br",null),r.createElement("br",null),"You will NOT lose HP from failed Investigation ops.")},"Undercover Operation":{desc:r.createElement(r.Fragment,null,"Conduct undercover operations to identify hidden and underground Synthoid communities and organizations.",r.createElement("br",null),r.createElement("br",null),"Successful Undercover ops will increase the accuracy of your synthoid data.")},"Sting Operation":{desc:r.createElement(r.Fragment,null,"Conduct a sting operation to bait and capture particularly notorious Synthoid criminals.")},Raid:{desc:r.createElement(r.Fragment,null,"Lead an assault on a known Synthoid community. Note that there must be an existing Synthoid community in your current city in order for this Operation to be successful.")},"Stealth Retirement Operation":{desc:r.createElement(r.Fragment,null,"Lead a covert operation to retire Synthoids. The objective is to complete the task without drawing any attention. Stealth and discretion are key.")},Assassination:{desc:r.createElement(r.Fragment,null,"Assassinate Synthoids that have been identified as important, high-profile social and political leaders in the Synthoid communities.")}}},42115:(e,t,n)=>{"use strict";n.d(t,{x:()=>r});const r={BladesIntuition:"Blade's Intuition",Cloak:"Cloak",Marksman:"Marksman",WeaponProficiency:"Weapon Proficiency",ShortCircuit:"Short-Circuit",DigitalObserver:"Digital Observer",Tracer:"Tracer",Overclock:"Overclock",Reaper:"Reaper",EvasiveSystem:"Evasive System",Datamancer:"Datamancer",CybersEdge:"Cyber's Edge",HandsOfMidas:"Hands of Midas",Hyperdrive:"Hyperdrive"}},81527:(e,t,n)=>{"use strict";n.d(t,{j:()=>m});var r=n(67294),a=n(3862),o=n(81138),i=n(17575),s=n(30120),l=n(92557),c=n(29217),u=n(45111);function m(e){let{action:t,isActive:n,bladeburner:m,rerender:f}=e;const h=t.level1;return r.createElement(s.Z,{display:"flex",flexDirection:"row",alignItems:"center"},r.createElement(s.Z,{display:"flex"},r.createElement(i.Z,{title:"Contract"===t.constructor.name?r.createElement(o.Z,null,t.getSuccessesNeededForNextLevel(a.Z.ContractSuccessesPerLevel)," successes needed for next level"):r.createElement(o.Z,null,t.getSuccessesNeededForNextLevel(a.Z.OperationSuccessesPerLevel)," successes needed for next level")},r.createElement(o.Z,null,"Level: ",t.level," / ",t.maxLevel))),r.createElement(i.Z,{title:n?r.createElement(o.Z,null,"WARNING: changing the level will restart the Operation"):""},r.createElement("span",null,r.createElement(l.Z,{disabled:!h,onClick:function(){h&&(++t.level,n&&m.startAction(m.action),f())}},r.createElement(c.Z,null)))),r.createElement(i.Z,{title:n?r.createElement(o.Z,null,"WARNING: changing the level will restart the Operation"):""},r.createElement("span",null,r.createElement(l.Z,{disabled:!d,onClick:function(){d&&(--t.level,n&&m.startAction(m.action),f())}},r.createElement(u.Z,null)))))}},26124:(e,t,n)=>{"use strict";n.d(t,{L:()=>f});var r=n(67294),a=n(77362),o=n(97527),i=n(3421),s=n(95680),l=n(61609),c=n(94004),u=n(30527),m=n(30120);function f(e){const[t,n]=r.useState(0);return r.createElement(r.Fragment,null,r.createElement(c.Z,{variant:"fullWidth",value:t,onChange:function(e,t){n(t)}},r.createElement(u.Z,{label:"General"}),r.createElement(u.Z,{label:"Contracts"}),r.createElement(u.Z,{label:"Operations"}),r.createElement(u.Z,{label:"BlackOps"}),r.createElement(u.Z,{label:"Skills"})),r.createElement(m.Z,{sx:{p:1}},0===t&&r.createElement(a.N,{bladeburner:e.bladeburner}),1===t&&r.createElement(o.e,{bladeburner:e.bladeburner}),2===t&&r.createElement(i.Z,{bladeburner:e.bladeburner}),3===t&&r.createElement(s.v,{bladeburner:e.bladeburner}),4===t&&r.createElement(l.s,{bladeburner:e.bladeburner})))}},36793:(e,t,n)=>{"use strict";n.d(t,{Y:()=>l});var r=n(67294),a=n(81138),o=n(17575),i=n(30120),s=n(16056);function l(e){return r.createElement(i.Z,{display:"flex",flexDirection:"row",alignItems:"center"},r.createElement(o.Z,{title:r.createElement(a.Z,null,"Automatically increase operation level when possible")},r.createElement(a.Z,null," Autolevel:")),r.createElement(s.Z,{checked:e.action.autoLevel,onChange:function(t){e.action.autoLevel=t.target.checked,e.rerender()}}))}},12466:(e,t,n)=>{"use strict";n.d(t,{l:()=>y});var r=n(67294),a=n(22115),o=n(49802),i=n(55353),s=n(93826),l=n(73394),c=n(85866),u=n(49173),m=n(45529),f=n(68527),h=n(55837),d=n(81138),p=n(28881),g=n(88775);function y(e){const t=(0,g.S)();if(null!=e.bladeburner.blackops[e.action.name])return r.createElement(p.Z,{sx:{my:1,p:1}},r.createElement(d.Z,null,e.action.name," (COMPLETED)"));const n=e.bladeburner.action.type===i.M.BlackOperation&&e.action.name===e.bladeburner.action.name,y=e.action.getActionTime(e.bladeburner,u.J5),b=e.bladeburner.rank>=e.action.reqdRank,v=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),k=c.k[e.action.name];if(void 0===k)throw new Error(`Cannot find data for ${e.action.name}`);return r.createElement(p.Z,{sx:{my:1,p:1}},n?r.createElement(r.Fragment,null,r.createElement(r.Fragment,null,r.createElement(m.v,{value:e.action.name}),r.createElement(d.Z,null,"(IN PROGRESS - ",(0,a.$j)(v,0)," /"," ",(0,a.$j)(e.bladeburner.actionTimeToComplete,0),")"),r.createElement(d.Z,null,(0,s.x)({progress:v/e.bladeburner.actionTimeToComplete})))):r.createElement(r.Fragment,null,r.createElement(m.v,{value:e.action.name}),r.createElement(h.n,{bladeburner:e.bladeburner,type:i.M.BlackOperation,name:e.action.name,rerender:t}),r.createElement(l.i,{action:e.action,bladeburner:e.bladeburner})),r.createElement("br",null),r.createElement("br",null),r.createElement(d.Z,null,k.desc),r.createElement("br",null),r.createElement("br",null),r.createElement(d.Z,{color:b?"primary":"error"},"Required Rank: ",(0,a.$j)(e.action.reqdRank,0)),r.createElement("br",null),r.createElement(d.Z,null,r.createElement(f.R,{action:e.action,bladeburner:e.bladeburner}),r.createElement("br",null),"Time Required: ",(0,o.UF)(1e3*y)))}},75743:(e,t,n)=>{"use strict";n.d(t,{I:()=>i});var r=n(67294),a=n(62986),o=n(12466);function i(e){let t=[];for(const e of Object.keys(a.k))Object.hasOwn(a.k,e)&&t.push(a.k[e]);return t.sort((function(e,t){return e.reqdRank-t.reqdRank})),t=t.filter(((n,r)=>!(null==e.bladeburner.blackops[t[r].name]&&0!==r&&null==e.bladeburner.blackops[t[r-1].name]))),t=t.reverse(),r.createElement(r.Fragment,null,t.map((t=>r.createElement(o.l,{key:t.name,bladeburner:e.bladeburner,action:t}))))}},95680:(e,t,n)=>{"use strict";n.d(t,{v:()=>m});var r=n(67294),a=n(81138),o=n(56798),i=n(33244),s=n(75743),l=n(52947),c=n(24815),u=n(93989);function m(e){return r.createElement(r.Fragment,null,r.createElement(a.Z,null,"Black Operations (Black Ops) are special, one-time covert operations. Each Black Op must be unlocked successively by completing the one before it.",r.createElement("br",null),r.createElement("br",null),r.createElement("b",null,"Your ultimate goal to climb through the ranks of ",i.FactionName.Bladeburners," is to complete all of the Black Ops."),r.createElement("br",null),r.createElement("br",null),"Like normal operations, you may use a team for Black Ops. Failing a black op will incur heavy HP and rank losses."),e.bladeburner.blackops[i.BlackOperationName.OperationDaedalus]?r.createElement(o.Z,{sx:{my:1,p:1},onClick:()=>l.F.toPage(c.T3.BitVerse,{flume:!1,quick:!1})},r.createElement(u.q,{content:"Destroy w0rld_d34mon"})):r.createElement(s.I,{bladeburner:e.bladeburner}))}},59061:(e,t,n)=>{"use strict";n.d(t,{K:()=>c});var r=n(67294),a=n(33244),o=n(52947),i=n(24815),s=n(6681),l=n(39463);function c(){return r.createElement(s._,{lines:[`In the middle of the 21st century, ${a.FactionName.OmniTekIncorporated} advanced robot evolution `,"with their Synthoids (synthetic androids), a being virtually identical to a human.","------","Their sixth-generation Synthoids, called MK-VI, were stronger, faster, and more ","intelligent than humans. Many argued that the MK-VI Synthoids were the first ","example of sentient AI.","------",`Unfortunately, in 2070 a terrorist group called Ascendis Totalis hacked into ${a.FactionName.OmniTekIncorporated} and `,"uploaded a rogue AI into their Synthoid manufacturing facilities.","------","The MK-VI Synthoids infected by the rogue AI turned hostile toward humanity, initiating ","the deadliest conflict in human history. This dark chapter is now known as the Synthoid Uprising.","------","In the aftermath of the Uprising, further manufacturing of Synthoids with advanced AI ","was banned. MK-VI Synthoids that did not have the rogue Ascendis Totalis AI were ","allowed to continue their existence.","------","The intelligence community believes that not all of the rogue MK-VI Synthoids from the Uprising were ","found and destroyed, and that many of them are blending in as normal humans in society today. ",`As a result, many nations have created ${a.FactionName.Bladeburners} divisions, special units that are tasked with `,"investigating and dealing with Synthoid threats."],onDone:()=>{o.F.toPage(i.T3.Terminal),(0,l.X)(`Visit the National Security Agency (NSA) to apply for their ${a.FactionName.Bladeburners} division! You will need 100 of each combat stat before doing this.`)}})}},41858:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(67294),a=n(94332),o=n(78816),i=n(26124),s=n(49173),l=n(30120),c=n(88775);function u(){(0,c.S)(200);const e=s.J5.bladeburner;return e?r.createElement(l.Z,{display:"flex",flexDirection:"column"},r.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:"4fr 8fr",p:1}},r.createElement(a.j,{bladeburner:e}),r.createElement(o.M,{bladeburner:e})),r.createElement(i.L,{bladeburner:e})):r.createElement(r.Fragment,null)}},78816:(e,t,n)=>{"use strict";n.d(t,{M:()=>g});var r=n(67294),a=n(81055),o=n(28881),i=n(97212),s=n(10848),l=n(30120),c=n(81138),u=n(66351),m=n(77541),f=n(73327),h=n(88775);const d=(0,m.Z)((e=>(0,f.Z)({textfield:{margin:e.spacing(0),width:"100%"},input:{backgroundColor:e.colors.backgroundsecondary},nopadding:{padding:e.spacing(0)},preformatted:{whiteSpace:"pre-wrap",margin:e.spacing(0)},list:{padding:e.spacing(0),height:"100%"}})));function p(e){return r.createElement(s.ZP,{sx:{p:0}},r.createElement(c.Z,null,e.content))}function g(e){const t=d(),[n,i]=(0,r.useState)(""),s=(0,r.useRef)(null);(0,h.S)(1e3);const[m,f]=(0,r.useState)(e.bladeburner.consoleHistory.length);return r.createElement(o.Z,{sx:{p:1}},r.createElement(l.Z,{sx:{height:"60vh",paddingBottom:"8px",display:"flex",alignItems:"stretch",whiteSpace:"pre-wrap"},onClick:function(){s.current&&s.current.focus()}},r.createElement(l.Z,null,r.createElement(y,{entries:[...e.bladeburner.consoleLogs]}))),r.createElement(u.Z,{classes:{root:t.textfield},autoFocus:!0,tabIndex:1,type:"text",inputRef:s,value:n,onChange:function(e){i(e.target.value)},onKeyDown:function(t){t.key===a.F.ENTER&&(t.preventDefault(),n.length>0&&(e.bladeburner.postToConsole("> "+n),e.bladeburner.executeConsoleCommands(n),f(e.bladeburner.consoleHistory.length),i("")));const r=e.bladeburner.consoleHistory;if(t.key===a.F.UP_ARROW){let e=m;const n=r.length;if(0===n)return;(e<0||e>n)&&f(n),0!==e&&(e-=1),f(e);const a=r[e];t.currentTarget.value=a,i(a)}if(t.key===a.F.DOWN_ARROW){const e=m,n=r.length;if(0==n)return;if((e<0||e>n)&&f(n),e==n||e==n-1)f(n),t.currentTarget.value="";else{f(m+1);const e=r[m+1];t.currentTarget.value=e,i(e)}}},InputProps:{className:t.input,startAdornment:r.createElement(r.Fragment,null,r.createElement(c.Z,null,"> ")),spellCheck:!1}}))}function y(e){let{entries:t}=e;const n=(0,r.useRef)(null);return(0,r.useEffect)((()=>{n.current&&(n.current.scrollTop=n.current.scrollHeight)}),[t.length]),r.createElement(i.Z,{sx:{height:"100%",overflow:"auto",p:1},ref:n},t&&t.map(((e,t)=>r.createElement(p,{key:t,content:e}))))}},57337:(e,t,n)=>{"use strict";n.d(t,{C:()=>b});var r=n(67294),a=n(55353),o=n(93826),i=n(49802),s=n(18992),l=n(49173),c=n(68527),u=n(45529),m=n(81527),f=n(36793),h=n(55837),d=n(22115),p=n(81138),g=n(28881),y=n(88775);function b(e){const t=(0,y.S)(),n=e.bladeburner.action.type===a.M.Contract&&e.action.name===e.bladeburner.action.name,b=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),v=e.action.getActionTime(e.bladeburner,l.J5),k=s.a[e.action.name];if(void 0===k)throw new Error(`Cannot find data for ${e.action.name}`);return r.createElement(g.Z,{sx:{my:1,p:1}},n?r.createElement(r.Fragment,null,r.createElement(p.Z,null,r.createElement(u.v,{value:e.action.name})," (IN PROGRESS -"," ",(0,d.$j)(b,0)," /"," ",(0,d.$j)(e.bladeburner.actionTimeToComplete,0),")"),r.createElement(p.Z,null,(0,o.x)({progress:b/e.bladeburner.actionTimeToComplete}))):r.createElement(r.Fragment,null,r.createElement(u.v,{value:e.action.name}),r.createElement(h.n,{bladeburner:e.bladeburner,type:a.M.Contract,name:e.action.name,rerender:t})),r.createElement("br",null),r.createElement("br",null),r.createElement(m.j,{action:e.action,bladeburner:e.bladeburner,isActive:n,rerender:t}),r.createElement("br",null),r.createElement("br",null),r.createElement(p.Z,null,k.desc,r.createElement("br",null),r.createElement("br",null),r.createElement(c.R,{action:e.action,bladeburner:e.bladeburner}),r.createElement("br",null),"Time Required: ",(0,i.UF)(1e3*v),r.createElement("br",null),"Contracts remaining: ",(0,d.dp)(Math.floor(e.action.count)),r.createElement("br",null),"Successes: ",(0,d.dp)(e.action.successes),r.createElement("br",null),"Failures: ",(0,d.dp)(e.action.failures)),r.createElement("br",null),r.createElement(f.Y,{rerender:t,action:e.action}))}},5983:(e,t,n)=>{"use strict";n.d(t,{E:()=>o});var r=n(67294),a=n(57337);function o(e){const t=Object.keys(e.bladeburner.contracts),n=e.bladeburner.contracts;return r.createElement(r.Fragment,null,t.map((t=>r.createElement(a.C,{key:t,bladeburner:e.bladeburner,action:n[t]}))))}},97527:(e,t,n)=>{"use strict";n.d(t,{e:()=>i});var r=n(67294),a=n(5983),o=n(81138);function i(e){return r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Complete contracts in order to increase your Bladeburner rank and earn money. Failing a contract will cause you to lose HP, which can lead to hospitalization.",r.createElement("br",null),r.createElement("br",null),"You can unlock higher-level contracts by successfully completing them. Higher-level contracts are more difficult, but grant more rank, experience, and money."),r.createElement(a.E,{bladeburner:e.bladeburner}))}},41453:(e,t,n)=>{"use strict";n.d(t,{x:()=>g});var r=n(67294),a=n(55353),o=n(93826),i=n(22115),s=n(49802),l=n(53977),c=n(49173),u=n(45529),m=n(55837),f=n(81138),h=n(30120),d=n(28881),p=n(88775);function g(e){const t=(0,p.S)(),n=e.action.name===e.bladeburner.action.name,g=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),y=function(){switch(e.action.name){case"Training":case"Field Analysis":return 30;case"Diplomacy":case"Hyperbolic Regeneration Chamber":case"Incite Violence":return 60;case"Recruitment":return e.bladeburner.getRecruitmentTime(c.J5)}return-1}(),b="Recruitment"===e.action.name?Math.max(0,Math.min(e.bladeburner.getRecruitmentSuccessChance(c.J5),1)):-1,v=l.H[e.action.name];if(void 0===v)throw new Error(`Cannot find data for ${e.action.name}`);return r.createElement(d.Z,{sx:{my:1,p:1}},n?r.createElement(r.Fragment,null,r.createElement(u.v,{value:e.action.name}),r.createElement(f.Z,null,"(IN PROGRESS - ",(0,i.$j)(g,0)," /"," ",(0,i.$j)(e.bladeburner.actionTimeToComplete,0),")"),r.createElement(f.Z,null,(0,o.x)({progress:g/e.bladeburner.actionTimeToComplete}))):r.createElement(h.Z,{display:"flex",flexDirection:"row",alignItems:"center"},r.createElement(u.v,{value:e.action.name}),r.createElement(m.n,{bladeburner:e.bladeburner,type:a.M[e.action.name],name:e.action.name,rerender:t})),r.createElement("br",null),r.createElement("br",null),r.createElement(f.Z,null,v.desc),r.createElement("br",null),r.createElement("br",null),r.createElement(f.Z,null,"Time Required: ",(0,s.UF)(1e3*y),-1!==b&&r.createElement(r.Fragment,null,r.createElement("br",null),"Estimated success chance: ",(0,i.$j)(100*b,1),"%")))}},81168:(e,t,n)=>{"use strict";n.d(t,{T:()=>i});var r=n(67294),a=n(41453),o=n(67309);function i(e){const t=[];for(const e of Object.keys(o.H))Object.hasOwn(o.H,e)&&t.push(o.H[e]);return r.createElement(r.Fragment,null,t.map((t=>r.createElement(a.x,{key:t.name,bladeburner:e.bladeburner,action:t}))))}},77362:(e,t,n)=>{"use strict";n.d(t,{N:()=>i});var r=n(67294),a=n(81168),o=n(81138);function i(e){return r.createElement(r.Fragment,null,r.createElement(o.Z,null,"These are generic actions that will assist you in your Bladeburner duties."),r.createElement(a.T,{bladeburner:e.bladeburner}))}},65951:(e,t,n)=>{"use strict";n.d(t,{$:()=>s});var r=n(67294),a=n(64860),o=n(81138),i=n(17575);function s(){return r.createElement(i.Z,{title:r.createElement(o.Z,null,"This action involves retirement")},a.j)}},81492:(e,t,n)=>{"use strict";n.d(t,{j:()=>v});var r=n(67294),a=n(55353),o=n(93826),i=n(49802),s=n(68527),l=n(81527),c=n(36793),u=n(55837),m=n(73394),f=n(39411),h=n(49173),d=n(45529),p=n(22115),g=n(81138),y=n(28881),b=n(88775);function v(e){const t=(0,b.S)(),n=e.bladeburner.action.type===a.M.Operation&&e.action.name===e.bladeburner.action.name,v=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),k=e.action.getActionTime(e.bladeburner,h.J5),w=f.B[e.action.name];if(void 0===w)throw new Error(`Cannot find data for ${e.action.name}`);return r.createElement(y.Z,{sx:{my:1,p:1}},n?r.createElement(r.Fragment,null,r.createElement(g.Z,null,r.createElement(d.v,{value:e.action.name})," (IN PROGRESS -"," ",(0,p.$j)(v,0)," /"," ",(0,p.$j)(e.bladeburner.actionTimeToComplete,0),")"),r.createElement(g.Z,null,(0,o.x)({progress:v/e.bladeburner.actionTimeToComplete}))):r.createElement(r.Fragment,null,r.createElement(d.v,{value:e.action.name}),r.createElement(u.n,{bladeburner:e.bladeburner,type:a.M.Operation,name:e.action.name,rerender:t}),r.createElement(m.i,{action:e.action,bladeburner:e.bladeburner})),r.createElement("br",null),r.createElement("br",null),r.createElement(l.j,{action:e.action,bladeburner:e.bladeburner,isActive:n,rerender:t}),r.createElement("br",null),r.createElement("br",null),r.createElement(g.Z,null,w.desc,r.createElement("br",null),r.createElement("br",null),r.createElement(s.R,{action:e.action,bladeburner:e.bladeburner}),r.createElement("br",null),"Time Required: ",(0,i.UF)(1e3*k),r.createElement("br",null),"Operations remaining: ",(0,p.dp)(Math.floor(e.action.count)),r.createElement("br",null),"Successes: ",(0,p.dp)(e.action.successes),r.createElement("br",null),"Failures: ",(0,p.dp)(e.action.failures)),r.createElement("br",null),r.createElement(c.Y,{rerender:t,action:e.action}))}},96532:(e,t,n)=>{"use strict";n.d(t,{P:()=>o});var r=n(67294),a=n(81492);function o(e){const t=Object.keys(e.bladeburner.operations),n=e.bladeburner.operations;return r.createElement(r.Fragment,null,t.map((t=>r.createElement(a.j,{key:t,bladeburner:e.bladeburner,action:n[t]}))))}},3421:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(67294),a=n(96532),o=n(81138);function i(e){return r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Carry out operations for the Bladeburner division. Failing an operation will reduce your Bladeburner rank. It will also cause you to lose HP, which can lead to hospitalization. In general, operations are harder and more punishing than contracts, but are also more rewarding.",r.createElement("br",null),r.createElement("br",null),"Operations can affect the chaos level and Synthoid population of your current city. The exact effects vary between different Operations.",r.createElement("br",null),r.createElement("br",null),"For operations, you can use a team. You must first recruit team members. Having a larger team will improve your chances of success.",r.createElement("br",null),r.createElement("br",null),"You can unlock higher-level operations by successfully completing them. Higher-level operations are more difficult, but grant more rank and experience."),r.createElement(a.P,{bladeburner:e.bladeburner}))}},35322:(e,t,n)=>{"use strict";n.d(t,{o:()=>f});var r=n(67294),a=n(45529),o=n(22115),i=n(81138),s=n(92557),l=n(30120),c=n(28881),u=n(96540),m=n(50594);function f(e){const t=e.skill.name;let n=0;e.bladeburner.skills[t]&&!isNaN(e.bladeburner.skills[t])&&(n=e.bladeburner.skills[t]);const f=e.skill.calculateCost(n),h=e.bladeburner.skillPoints>=f,d=!!e.skill.maxLvl&&n>=e.skill.maxLvl;return r.createElement(c.Z,{sx:{my:1,p:1}},r.createElement(l.Z,{display:"flex",flexDirection:"row",alignItems:"center"},r.createElement(a.v,{variant:"h6",color:"primary",value:e.skill.name}),!h||d?r.createElement(s.Z,{disabled:!0},r.createElement(m.Z,null)):r.createElement(s.Z,{onClick:function(){e.bladeburner.skillPoints{"use strict";n.d(t,{Q:()=>i});var r=n(67294),a=n(35322),o=n(71099);function i(e){return r.createElement(r.Fragment,null,Object.keys(o.n).map((t=>r.createElement(a.o,{key:t,bladeburner:e.bladeburner,skill:o.n[t],onUpgrade:e.onUpgrade}))))}},61609:(e,t,n)=>{"use strict";n.d(t,{s:()=>l});var r=n(67294),a=n(39162),o=n(3862),i=n(22115),s=n(81138);function l(e){const t=(0,r.useState)(!1)[1],n=e.bladeburner.skillMultipliers;function l(e){return void 0!==e&&1!==e}return r.createElement(r.Fragment,null,r.createElement(s.Z,null,r.createElement("strong",null,"Skill Points: ",(0,i.dp)(e.bladeburner.skillPoints))),r.createElement(s.Z,null,"You will gain one skill point every ",o.Z.RanksPerSkillPoint," ranks.",r.createElement("br",null),"Note that when upgrading a skill, the benefit for that skill is additive. However, the effects of different skills with each other is multiplicative."),l(n.successChanceAll)&&r.createElement(s.Z,null,"Total Success Chance: x",(0,i.dp)(n.successChanceAll)),l(n.successChanceStealth)&&r.createElement(s.Z,null,"Stealth Success Chance: x",(0,i.dp)(n.successChanceStealth)),l(n.successChanceKill)&&r.createElement(s.Z,null,"Retirement Success Chance: x",(0,i.dp)(n.successChanceKill)),l(n.successChanceContract)&&r.createElement(s.Z,null,"Contract Success Chance: x",(0,i.dp)(n.successChanceContract)),l(n.successChanceOperation)&&r.createElement(s.Z,null,"Operation Success Chance: x",(0,i.dp)(n.successChanceOperation)),l(n.successChanceEstimate)&&r.createElement(s.Z,null,"Synthoid Data Estimate: x",(0,i.dp)(n.successChanceEstimate)),l(n.actionTime)&&r.createElement(s.Z,null,"Action Time: x",(0,i.dp)(n.actionTime)),l(n.effHack)&&r.createElement(s.Z,null,"Hacking Skill: x",(0,i.dp)(n.effHack)),l(n.effStr)&&r.createElement(s.Z,null,"Strength: x",(0,i.dp)(n.effStr)),l(n.effDef)&&r.createElement(s.Z,null,"Defense: x",(0,i.dp)(n.effDef)),l(n.effDex)&&r.createElement(s.Z,null,"Dexterity: x",(0,i.dp)(n.effDex)),l(n.effAgi)&&r.createElement(s.Z,null,"Agility: x",(0,i.dp)(n.effAgi)),l(n.effCha)&&r.createElement(s.Z,null,"Charisma: x",(0,i.dp)(n.effCha)),l(n.effInt)&&r.createElement(s.Z,null,"Intelligence: x",(0,i.dp)(n.effInt)),l(n.stamina)&&r.createElement(s.Z,null,"Stamina: x",(0,i.dp)(n.stamina)),l(n.money)&&r.createElement(s.Z,null,"Contract Money: x",(0,i.dp)(n.money)),l(n.expGain)&&r.createElement(s.Z,null,"Exp Gain: x",(0,i.dp)(n.expGain)),r.createElement(a.Q,{bladeburner:e.bladeburner,onUpgrade:()=>t((e=>!e))}))}},55837:(e,t,n)=>{"use strict";n.d(t,{n:()=>c});var r=n(67294),a=n(62783),o=n(49173),i=n(56798),s=n(33244),l=n(70671);function c(e){const t=e.bladeburner.getActionObject(new l.T({name:e.name,type:e.type}));if(null==t)throw new Error("Failed to get Operation Object for: "+e.name);let n=!1;return t.count<1&&(n=!0),"Raid"===e.name&&0===e.bladeburner.getCurrentCity().comms&&(n=!0),t instanceof a.u&&e.bladeburner.rank{"use strict";n.d(t,{j:()=>w});var r=n(67294),a=n(28881),o=n(30120),i=n(56798),s=n(17575),l=n(81138),c=n(49173),u=n(33244),m=n(49802),f=n(3862),h=n(72360),d=n(88775),p=n(22115),g=n(58427),y=n(52947),b=n(24815),v=n(94542),k=n(50286);function w(e){const[t,n]=(0,r.useState)(!1);(0,d.S)(1e3);const w=e.bladeburner.rank>=f.Z.RankNeededForFaction;return r.createElement(a.Z,{sx:{p:1,overflowY:"auto",overflowX:"hidden",wordBreak:"break-all"}},r.createElement(o.Z,{sx:{display:"flex",flexDirection:"column",gap:1,maxHeight:"60vh"}},r.createElement(o.Z,{sx:{alignSelf:"flex-start",width:"100%"}},r.createElement(i.Z,{onClick:()=>n(!0),sx:{width:"50%"}},"Travel"),r.createElement(s.Z,{title:w?"":r.createElement(l.Z,null,"Rank 25 required.")},r.createElement("span",null,r.createElement(i.Z,{disabled:!w,onClick:function(){if(!w)return;const e=g.i[u.FactionName.Bladeburners];e.isMember||(0,v.Bj)(e),y.F.toPage(b.T3.Faction,{faction:e})},sx:{width:"50%"}},"Faction"))),r.createElement(k.i,{open:t,onClose:()=>n(!1),bladeburner:e.bladeburner})),r.createElement(o.Z,{display:"flex"},r.createElement(s.Z,{title:r.createElement(l.Z,null,"Your rank within the Bladeburner division.")},r.createElement(l.Z,null,"Rank: ",(0,p.dp)(e.bladeburner.rank)))),r.createElement("br",null),r.createElement(o.Z,{display:"flex"},r.createElement(s.Z,{title:r.createElement(l.Z,null,"Performing actions will use up your stamina.",r.createElement("br",null),r.createElement("br",null),"Your max stamina is determined primarily by your agility stat.",r.createElement("br",null),r.createElement("br",null),"Your stamina gain rate is determined by both your agility and your max stamina. Higher max stamina leads to a higher gain rate.",r.createElement("br",null),r.createElement("br",null),"Once your stamina falls below 50% of its max value, it begins to negatively affect the success rate of your contracts/operations. This penalty is shown in the overview panel. If the penalty is 15%, then this means your success rate would be multiplied by 85% (100 - 15).",r.createElement("br",null),r.createElement("br",null),"Your max stamina and stamina gain rate can also be increased by training, or through skills and Augmentation upgrades.")},r.createElement(l.Z,null,"Stamina: ",(0,p.dp)(e.bladeburner.stamina)," / ",(0,p.dp)(e.bladeburner.maxStamina)))),r.createElement(l.Z,null,"Stamina Penalty: ",(0,p.$j)(100*(1-e.bladeburner.calculateStaminaPenalty()),1),"%"),r.createElement("br",null),r.createElement(l.Z,null,"Team Size: ",(0,p.$j)(e.bladeburner.teamSize,0)),r.createElement(l.Z,null,"Team Members Lost: ",(0,p.$j)(e.bladeburner.teamLost,0)),r.createElement("br",null),r.createElement(l.Z,null,"Num Times Hospitalized: ",e.bladeburner.numHosp),r.createElement(l.Z,null,"Money Lost From Hospitalizations: ",r.createElement(h.W,{money:e.bladeburner.moneyLost})),r.createElement("br",null),r.createElement(l.Z,null,"Current City: ",e.bladeburner.city),r.createElement(o.Z,{display:"flex"},r.createElement(s.Z,{title:r.createElement(l.Z,null,"This is your Bladeburner division's estimate of how many Synthoids exist in your current city. An accurate population count increases success rate estimates.")},r.createElement(l.Z,null,"Est. Synthoid Population: ",(0,p.B1)(e.bladeburner.getCurrentCity().popEst)))),r.createElement(o.Z,{display:"flex"},r.createElement(s.Z,{title:r.createElement(l.Z,null,"This is your Bladeburner division's estimate of how many Synthoid communities exist in your current city.")},r.createElement(l.Z,null,"Synthoid Communities: ",(0,p.$j)(e.bladeburner.getCurrentCity().comms,0)))),r.createElement(o.Z,{display:"flex"},r.createElement(s.Z,{title:r.createElement(l.Z,null,"The city's chaos level due to tensions and conflicts between humans and Synthoids. Having too high of a chaos level can make contracts and operations harder.")},r.createElement(l.Z,null,"City Chaos: ",(0,p.dp)(e.bladeburner.getCurrentCity().chaos)))),r.createElement("br",null),e.bladeburner.storedCycles/f.Z.CyclesPerSecond*1e3>15e3&&r.createElement(r.Fragment,null,r.createElement(o.Z,{display:"flex"},r.createElement(s.Z,{title:r.createElement(l.Z,null,"You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by browser). Bonus time makes the Bladeburner mechanic progress faster, up to 5x the normal speed.")},r.createElement(l.Z,null,"Bonus time:"," ",(0,m.UF)(e.bladeburner.storedCycles/f.Z.CyclesPerSecond*1e3)))),r.createElement("br",null)),r.createElement(l.Z,null,"Skill Points: ",(0,p.dp)(e.bladeburner.skillPoints)),r.createElement("br",null),r.createElement(l.Z,null,"Aug. Success Chance mult: ",(0,p.$j)(100*c.J5.mults.bladeburner_success_chance,1),"%",r.createElement("br",null),"Aug. Max Stamina mult: ",(0,p.$j)(100*c.J5.mults.bladeburner_max_stamina,1),"%",r.createElement("br",null),"Aug. Stamina Gain mult: ",(0,p.$j)(100*c.J5.mults.bladeburner_stamina_gain,1),"%",r.createElement("br",null),"Aug. Field Analysis mult: ",(0,p.$j)(100*c.J5.mults.bladeburner_analysis,1),"%")))}},30704:(e,t,n)=>{"use strict";n.d(t,{X:()=>s});var r=n(67294),a=n(64860),o=n(81138),i=n(17575);function s(){return r.createElement(i.Z,{title:r.createElement(o.Z,null,"This action involves stealth")},a.D)}},68527:(e,t,n)=>{"use strict";n.d(t,{R:()=>l});var r=n(67294),a=n(22115),o=n(30704),i=n(65951),s=n(49173);function l(e){const t=e.action.getEstSuccessChance(e.bladeburner,s.J5);let n=r.createElement(r.Fragment,null);return n=t[0]===t[1]?r.createElement(r.Fragment,null,(0,a.$j)(100*t[0],1),"%"):r.createElement(r.Fragment,null,(0,a.$j)(100*t[0],1),"% ~"," ",(0,a.$j)(100*t[1],1),"%"),r.createElement(r.Fragment,null,"Estimated success chance: ",n," ",e.action.isStealth?r.createElement(o.X,null):r.createElement(r.Fragment,null),e.action.isKill?r.createElement(i.$,null):r.createElement(r.Fragment,null))}},73394:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var r=n(67294),a=n(71572),o=n(22115),i=n(56798);function s(e){const[t,n]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,r.createElement(i.Z,{disabled:0===e.bladeburner.teamSize,onClick:()=>n(!0)},"Set Team Size (Curr Size: ",(0,o.$j)(e.action.teamCount,0),")"),r.createElement(a.K,{open:t,onClose:()=>n(!1),action:e.action,bladeburner:e.bladeburner}))}},71572:(e,t,n)=>{"use strict";n.d(t,{K:()=>c});var r=n(67294),a=n(39463),o=n(48672),i=n(81138),s=n(56798),l=n(66351);function c(e){const[t,n]=(0,r.useState)();return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(i.Z,null,"Enter the amount of team members you would like to take on this Op. If you do not have the specified number of team members, then as many as possible will be used. Note that team members may be lost during operations."),r.createElement(l.Z,{autoFocus:!0,type:"number",placeholder:"Team size",value:t,onChange:function(t){const r=parseFloat(t.target.value);r>e.bladeburner.teamSize?n(e.bladeburner.teamSize):n(r)}}),r.createElement(s.Z,{sx:{mx:2},onClick:function(){if(void 0===t)return;const n=Math.round(t);isNaN(n)||n<0?(0,a.X)("Invalid value entered for number of Team Members (must be numeric, positive)"):e.action.teamCount=n,e.onClose()}},"Confirm"))}},50286:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(67294),a=n(81138),o=n(56798),i=n(33244),s=n(86091),l=n(48672),c=n(51087);function u(e){function t(t){e.bladeburner.city=t,e.onClose()}return r.createElement(l.u,{open:e.open,onClose:e.onClose},r.createElement(r.Fragment,null,r.createElement(a.Z,null,"Travel to a different city for your Bladeburner activities. This does not cost any money. The city you are in for your Bladeburner duties does not affect your location in the game otherwise."),c.Z.DisableASCIIArt?Object.values(i.CityName).map((e=>r.createElement(o.Z,{key:e,onClick:()=>t(e)},e))):r.createElement(s.b,{currentCity:e.bladeburner.city,onTravel:t})))}},78758:(e,t,n)=>{"use strict";n.d(t,{Z:()=>y,y:()=>v});var r=n(67294),a=n(49173),o=n(72360),i=n(19637),s=n(24003),l=n(6306),c=n(40826),u=n(85257),m=n(56798),f=n(28881),h=n(30120),d=n(81138),p=n(66351);const g=1e8,y=5;var b;!function(e){e.Pending="",e.PlayerWon="You won!",e.PlayerWonByBlackjack="You Won! Blackjack!",e.DealerWon="You lost!",e.Tie="Push! (Tie)"}(b||(b={}));class v extends r.Component{constructor(e){super(e),this.deck=new s.$(y);const t=1e6;this.state={playerHand:new l.P([]),dealerHand:new l.P([]),bet:t,betInput:String(t),gameInProgress:!1,result:b.Pending,gains:0,wagerInvalid:!1,wagerInvalidHelperText:""}}canStartGame=()=>{const{bet:e}=this.state;return a.J5.canAfford(e)};startGame=()=>{if(!this.canStartGame()||(0,i.Z)())return;(0,i.p)(-this.state.bet);const e=new l.P([this.deck.safeDrawCard(),this.deck.safeDrawCard()]),t=new l.P([this.deck.safeDrawCard(),this.deck.safeDrawCard()]);this.setState({playerHand:e,dealerHand:t,gameInProgress:!0,result:b.Pending}),21===this.getTrueHandValue(e)?21===this.getTrueHandValue(t)?this.finishGame(b.Tie):this.finishGame(b.PlayerWonByBlackjack):21===this.getTrueHandValue(t)&&this.finishGame(b.DealerWon)};getHandValue=e=>{let t=[0];for(let n=0;n=10?t.map((e=>e+10)):1===r?t.flatMap((e=>[e+1,e+11])):t.map((e=>e+r))}return t};getTrueHandValue=e=>{const t=this.getHandValue(e),n=t.filter((e=>e<=21));return n.length>0?(n.sort(((e,t)=>e-t)),n[n.length-1]):t[0]};getHandDisplayValues=e=>{const t=this.getHandValue(e);return this.isHandBusted(e)?[...new Set([t[0]])]:[...new Set(t.filter((e=>e<=21)))]};isHandBusted=e=>this.getTrueHandValue(e)>21;playerHit=e=>{if(!e.isTrusted)return;const t=this.state.playerHand.addCards(this.deck.safeDrawCard());this.setState({playerHand:t}),this.isHandBusted(t)&&this.finishGame(b.DealerWon)};playerStay=e=>{if(!e.isTrusted)return;let t=this.state.dealerHand,n=this.getTrueHandValue(t);for(;n<=16;)t=t.addCards(this.deck.safeDrawCard()),n=this.getTrueHandValue(t);if(this.setState({dealerHand:t}),this.isHandBusted(t))this.finishGame(b.PlayerWon);else{const e=this.getTrueHandValue(t),n=this.getTrueHandValue(this.state.playerHand);if(e>21||n>21)throw new Error("Someone busted when not expected to");n>e?this.finishGame(b.PlayerWon):n{const t=e===b.DealerWon?0:e===b.Tie?this.state.bet:e===b.PlayerWon?2*this.state.bet:e===b.PlayerWonByBlackjack?2.5*this.state.bet:(()=>{throw new Error(`Unexpected result: ${e}`)})();(0,i.p)(t),this.setState({gameInProgress:!1,result:e,gains:this.state.gains+t-this.state.bet})};wagerOnChange=e=>{const t=e.target.value,n=Math.round(parseFloat(t));isNaN(n)?this.setState({bet:0,betInput:t,wagerInvalid:!0,wagerInvalidHelperText:"Not a valid number"}):n<=0?this.setState({bet:0,betInput:t,wagerInvalid:!0,wagerInvalidHelperText:"Must bet a positive amount"}):n>g?this.setState({bet:0,betInput:t,wagerInvalid:!0,wagerInvalidHelperText:"Exceeds max bet"}):a.J5.canAfford(n)?this.setState({bet:n,betInput:t,wagerInvalid:!1,wagerInvalidHelperText:"",result:b.Pending}):this.setState({bet:0,betInput:t,wagerInvalid:!0,wagerInvalidHelperText:"Not enough money"})};startOnClick=e=>{e.isTrusted&&(this.state.wagerInvalid||this.startGame())};render(){const{betInput:e,playerHand:t,dealerHand:n,gameInProgress:a,result:i,wagerInvalid:s,wagerInvalidHelperText:l,gains:y}=this.state,v=this.getHandDisplayValues(t),k=this.getHandDisplayValues(n);return r.createElement(r.Fragment,null,r.createElement(h.Z,null,r.createElement(p.Z,{value:e,label:r.createElement(r.Fragment,null,"Wager (Max: ",r.createElement(o.W,{money:g}),")"),disabled:a,onChange:this.wagerOnChange,error:s,helperText:s?l:"",type:"number",style:{width:"200px"},InputProps:{startAdornment:r.createElement(c.Z,{position:"start"},r.createElement(d.Z,null,"$"))}}),r.createElement(d.Z,null,"Total earnings this session: ",r.createElement(o.W,{money:y}))),a?r.createElement(r.Fragment,null,r.createElement(m.Z,{onClick:this.playerHit},"Hit"),r.createElement(m.Z,{color:"secondary",onClick:this.playerStay},"Stay")):r.createElement(m.Z,{onClick:this.startOnClick,disabled:s||!this.canStartGame()},"Start"),(a||i!==b.Pending)&&r.createElement(r.Fragment,null,r.createElement(h.Z,{display:"flex"},r.createElement(f.Z,{elevation:2},r.createElement(d.Z,null,"Player"),t.cards.map(((e,t)=>r.createElement(u.P,{card:e,key:t}))),r.createElement(d.Z,null,"Count:"," ",v.map(((e,t)=>r.createElement("span",{key:t},e))).reduce(((e,t)=>[e," or ",t]))))),r.createElement("br",null),r.createElement(h.Z,{display:"flex"},r.createElement(f.Z,{elevation:2},r.createElement(d.Z,null,"Dealer"),n.cards.map(((e,t)=>r.createElement(u.P,{card:e,hidden:a&&0!==t,key:t}))),!a&&r.createElement(r.Fragment,null,r.createElement(d.Z,null,"Count:"," ",k.map(((e,t)=>r.createElement("span",{key:t},e))).reduce(((e,t)=>[e," or ",t]))))))),i!==b.Pending&&r.createElement(d.Z,null,i," ",i===b.PlayerWon&&r.createElement(o.W,{money:this.state.bet}),i===b.PlayerWonByBlackjack&&r.createElement(o.W,{money:1.5*this.state.bet}),i===b.DealerWon&&r.createElement(o.W,{money:-this.state.bet})))}}},1851:(e,t,n)=>{"use strict";let r;n.d(t,{Z:()=>a,h:()=>r}),function(e){e.Clubs="clubs",e.Diamonds="diamonds",e.Hearts="hearts",e.Spades="spades"}(r||(r={}));class a{constructor(e,t){if(this.value=e,this.suit=t,e<1||e>13)throw new Error(`Card instantiated with improper value: ${e}`)}formatValue(){switch(this.value){case 1:return"A";case 11:return"J";case 12:return"Q";case 13:return"K";default:return`${this.value}`}}isRedSuit(){return this.suit===r.Hearts||this.suit===r.Diamonds}getStringRepresentation(){return`${this.formatValue()} of ${this.suit}`}}},24003:(e,t,n)=>{"use strict";n.d(t,{$:()=>o});var r=n(1851),a=n(96486);class o{cards=[];constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.numDecks=e,this.reset()}shuffle(){this.cards=(0,a.shuffle)(this.cards)}drawCard(){if(0==this.cards.length)throw new Error("Tried to draw card from empty deck");return this.cards.shift()}safeDrawCard(){return 0===this.cards.length&&this.reset(),this.drawCard()}reset(){this.cards=[];for(let e=1;e<=13;++e)for(let t=0;t{"use strict";n.d(t,{P:()=>r});class r{constructor(e){this.cards=e}addCards(){for(var e=arguments.length,t=new Array(e),n=0;n=this.cards.length)throw new Error(`Tried to remove invalid card from Hand by index: ${e}`);return new r([...this.cards.slice().splice(e,1)])}}},85257:(e,t,n)=>{"use strict";n.d(t,{P:()=>c});var r=n(67294),a=n(1851),o=n(77541),i=n(73327),s=n(28881);const l=(0,o.Z)((()=>(0,i.Z)({card:{padding:"10px",border:"solid 1px #808080",backgroundColor:"white",display:"inline-block",borderRadius:"10px",fontSize:"18.5px",textAlign:"center",margin:"3px",fontWeight:"bold"},red:{color:"red"},black:{color:"black"},value:{fontSize:"20px",fontFamily:"sans-serif"}}))),c=e=>{let{card:t,hidden:n}=e;const o=l();let i;switch(t.suit){case a.h.Clubs:i=r.createElement("span",null,"♣");break;case a.h.Diamonds:i=r.createElement("span",null,"♦");break;case a.h.Hearts:i=r.createElement("span",null,"♥");break;case a.h.Spades:i=r.createElement("span",null,"♠");break;default:throw new Error(`MissingCaseException: ${t.suit}`)}return r.createElement(s.Z,{className:`${o.card} ${t.isRedSuit()?o.red:o.black}`},r.createElement(r.Fragment,null,r.createElement("span",{className:o.value},n?" - ":t.formatValue()),r.createElement("span",null,n?" - ":i)))}},58636:(e,t,n)=>{"use strict";n.d(t,{P:()=>m});var r=n(67294),a=n(12450),o=n(19637),i=n(62719),s=n(81138),l=n(66351),c=n(56798),u=n(30120);function m(){const[e,t]=(0,r.useState)(1e3),[n,m]=(0,r.useState)(r.createElement("span",null," ")),[f,h]=(0,r.useState)(""),[d,p]=(0,r.useState)(!1);function g(t){if((0,o.Z)())return;let n;n=a.P7.random()<.5?"H":"T";const i=t===n;m(r.createElement(u.Z,{display:"flex"},r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"},color:i?"primary":"error"},n))),h(i?" win!":"lose!"),p(!0),setTimeout((()=>p(!1)),250),i?(0,o.p)(e):(0,o.p)(-e),(0,o.Z)()}return r.createElement(r.Fragment,null,r.createElement(s.Z,null,"Result:")," ",n,r.createElement(u.Z,{display:"flex",alignItems:"center"},r.createElement(l.Z,{type:"number",onChange:function(e){let n=parseInt(e.currentTarget.value);isNaN(n)&&(n=0),n>1e4&&(n=1e4),n<0&&(n=0),t(n)},InputProps:{endAdornment:r.createElement(r.Fragment,null,r.createElement(c.Z,{onClick:(0,i.V)((()=>g("H"))),disabled:d},"Head!"),r.createElement(c.Z,{onClick:(0,i.V)((()=>g("T"))),disabled:d},"Tail!"))}})),r.createElement(s.Z,{variant:"h3"},f))}},19637:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i,p:()=>o});var r=n(49173),a=n(39463);function o(e){r.J5.gainMoney(e,"casino")}function i(){const e=r.J5.getCasinoWinnings()>1e10;return e&&(0,a.X)("Alright cheater get out of here. You're not allowed here anymore."),e}},12450:(e,t,n)=>{"use strict";n.d(t,{P7:()=>r,e7:()=>a,h3:()=>o});const r=new class{m=1024;a=341;c=1;constructor(){this.x=0,this.reset()}step(){this.x=(this.a*this.x+this.c)%this.m}random(){return this.step(),this.x/this.m}reset(){this.x=(new Date).getTime()%this.m}};class a{s1=0;s2=0;s3=0;constructor(e){const t=e/1e3%3e4;this.s1=t,this.s2=t,this.s3=t}step(){this.s1=171*this.s1%30269,this.s2=172*this.s2%30307,this.s3=170*this.s3%30323}random(){return this.step(),(this.s1/30269+this.s2/30307+this.s3/30323)%1}}function o(e){let t=1779033703^e.length;for(let n=0;n>>19;const n=()=>(t=Math.imul(t^t>>>16,2246822507),t=Math.imul(t^t>>>13,3266489909),(t^=t>>>16)>>>0);let r=n(),a=n(),o=n(),i=n();return()=>{r>>>=0,a>>>=0,o>>>=0,i>>>=0;let e=r+a|0;return r=a^a>>>9,a=o+(o<<3)|0,o=o<<21|o>>>11,i=i+1|0,e=e+i|0,o=o+e|0,(e>>>0)/4294967296}}},18037:(e,t,n)=>{"use strict";n.d(t,{c:()=>p});var r=n(67294),a=n(72360),o=n(19637),i=n(12450),s=n(62719),l=n(81138),c=n(56798),u=n(66351);const m=1e7,f=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36],h={Red:{match:e=>f.includes(e),payout:1},Black:{match:e=>0!==e&&!f.includes(e),payout:1},Odd:{match:e=>0!==e&&e%2==1,payout:1},Even:{match:e=>0!==e&&e%2==0,payout:1},High:{match:e=>0!==e&&e>18,payout:1},Low:{match:e=>0!==e&&e<19,payout:1},Third1:{match:e=>0!==e&&e<=12,payout:2},Third2:{match:e=>0!==e&&e>=13&&e<=24,payout:2},Third3:{match:e=>0!==e&&e>=25,payout:2}};function d(e){return{match:t=>e===t,payout:36}}function p(){const[e]=(0,r.useState)(new i.e7((new Date).getTime())),[t,n]=(0,r.useState)(1e3),[f,p]=(0,r.useState)(!0),[g,y]=(0,r.useState)("waiting"),[b,v]=(0,r.useState)(0),[k,w]=(0,r.useState)(!0);function E(){k||v(Math.floor(37*Math.random()))}function S(n){(0,o.Z)()||(p(!1),w(!1),y("playing"),setTimeout((()=>{let i=Math.floor(37*e.random()),s=r.createElement(r.Fragment,null),l=0,c=n.match(i);if(c&&Math.random()>.9)for(;c;)i=Math.floor(37*e.random()),c=n.match(i);c?(l=t*n.payout,s=r.createElement(r.Fragment,null,"won ",r.createElement(a.W,{money:l}))):(l=-t,s=r.createElement(r.Fragment,null,"lost ",r.createElement(a.W,{money:-l}))),(0,o.p)(l),p(!0),w(!0),y(s),v(i),(0,o.Z)()}),1600))}return(0,r.useEffect)((()=>{const e=window.setInterval(E,50);return()=>clearInterval(e)})),r.createElement(r.Fragment,null,r.createElement(l.Z,{variant:"h4"},function(){if(0===b)return"0";const e=function(e){return[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36].includes(e)}(b)?"R":"B";return`${b}${e}`}()),r.createElement(u.Z,{type:"number",onChange:function(e){let t=parseInt(e.currentTarget.value);isNaN(t)&&(t=0),t>m&&(t=m),t<0&&(t=0),n(t)},placeholder:"Amount to play",disabled:!f}),r.createElement(l.Z,{variant:"h4"},g),r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(3))))},"3")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(6))))},"6")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(9))))},"9")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(12))))},"12")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(15))))},"15")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(18))))},"18")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(21))))},"21")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(24))))},"24")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(27))))},"27")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(30))))},"30")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(33))))},"33")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(36))))},"36"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(2))))},"2")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(5))))},"5")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(8))))},"8")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(11))))},"11")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(14))))},"14")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(17))))},"17")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(20))))},"20")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(23))))},"23")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(26))))},"26")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(29))))},"29")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(32))))},"32")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(35))))},"35"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(1))))},"1")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(4))))},"4")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(7))))},"7")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(10))))},"10")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(13))))},"13")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(16))))},"16")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(19))))},"19")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(22))))},"22")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(25))))},"25")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(28))))},"28")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(31))))},"31")),r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(34))))},"34"))),r.createElement("tr",null,r.createElement("td",{colSpan:4},r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Third1)))},"1 to 12")),r.createElement("td",{colSpan:4},r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Third2)))},"13 to 24")),r.createElement("td",{colSpan:4},r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Third3)))},"25 to 36"))),r.createElement("tr",null,r.createElement("td",{colSpan:2},r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Red)))},"Red")),r.createElement("td",{colSpan:2},r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Black)))},"Black")),r.createElement("td",{colSpan:2},r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Odd)))},"Odd")),r.createElement("td",{colSpan:2},r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Even)))},"Even")),r.createElement("td",{colSpan:2},r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.High)))},"High")),r.createElement("td",{colSpan:2},r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Low)))},"Low"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(0))))},"0"))))))}},67324:(e,t,n)=>{"use strict";n.d(t,{F:()=>g});var r=n(67294),a=n(49173),o=n(72360),i=n(12450),s=n(19637),l=n(62719),c=n(81138),u=n(66351),m=n(56798);const f=["D","C","$","?","♥","A","C","B","C","E","B","E","C","*","D","♥","B","A","A","A","C","A","D","B","E","?","D","*","@","♥","B","E","?"];function h(e,t){switch(e){case"$":return[20,200,1e3][t];case"@":return[8,80,400][t];case"♥":case"?":return[6,20,150][t];case"D":case"E":return[1,8,30][t];default:return[1,5,20][t]}}const d=[[[0,0],[0,1],[0,2],[0,3],[0,4]],[[1,0],[1,1],[1,2],[1,3],[1,4]],[[2,0],[2,1],[2,2],[2,3],[2,4]],[[2,0],[1,1],[0,2],[1,3],[2,4]],[[0,0],[1,1],[2,2],[1,3],[0,4]],[[0,0],[1,1],[1,2],[1,3],[0,4]],[[2,0],[1,1],[1,2],[1,3],[2,4]],[[1,0],[0,1],[0,2],[0,3],[1,4]],[[1,0],[2,1],[2,2],[2,3],[1,4]]],p=1e6;function g(){const[e]=(0,r.useState)(new i.e7(a.J5.totalPlaytime)),[t,n]=(0,r.useState)([0,0,0,0,0]),[g,y]=(0,r.useState)([0,0,0,0,0]),[b,v]=(0,r.useState)(1e3),[k,w]=(0,r.useState)(!0),[E,S]=(0,r.useState)("waiting");function C(){let e=!1;const a=t.slice();for(let t=0;t=0?a[t]-1:f.length-1,e=!0);n(a),e&&a.every(((e,t)=>e===g[t]))&&function(e){const t=function(t){const n=[];for(const r of t)n.push(e[r[0]][r[1]]);return n},n=function(e){let t=1;for(let n=1;n0?"gained":"lost"," ",r.createElement(o.W,{money:Math.abs(a)}))),w(!0),(0,s.Z)()}(x(a,f))}function x(e,t){return[[t[(e[0]+t.length-1)%t.length],t[(e[1]+t.length-1)%t.length],t[(e[2]+t.length-1)%t.length],t[(e[3]+t.length-1)%t.length],t[(e[4]+t.length-1)%t.length]],[t[e[0]],t[e[1]],t[e[2]],t[e[3]],t[e[4]]],[t[(e[0]+1)%t.length],t[(e[1]+1)%t.length],t[(e[2]+1)%t.length],t[(e[3]+1)%t.length],t[(e[4]+1)%t.length]]]}function N(){y([Math.floor(e.random()*f.length),Math.floor(e.random()*f.length),Math.floor(e.random()*f.length),Math.floor(e.random()*f.length),Math.floor(e.random()*f.length)])}(0,r.useEffect)((()=>{const e=window.setInterval(C,50);return()=>clearInterval(e)}));const M=x(t,f);return r.createElement(r.Fragment,null,r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"+———————————————————————+"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | ",M[0][0]," | ",M[0][1]," | ",M[0][2]," | ",M[0][3]," | ",M[0][4]," | |"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | | | | | | |"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | ",f[t[0]]," | ",f[t[1]]," | ",f[t[2]]," | ",f[t[3]]," | ",f[t[4]]," | |"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | | | | | | |"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | ",f[(t[0]+1)%f.length]," | ",f[(t[1]+1)%f.length]," | ",f[(t[2]+1)%f.length]," | ",f[(t[3]+1)%f.length]," | ",f[(t[4]+1)%f.length]," | |"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"+———————————————————————+"),r.createElement(u.Z,{type:"number",onChange:function(e){let t=parseInt(e.currentTarget.value);isNaN(t)&&(t=0),t>p&&(t=p),t<0&&(t=0),v(t)},placeholder:"Amount to play",disabled:!k,InputProps:{endAdornment:r.createElement(m.Z,{onClick:(0,l.V)((function(){(0,s.Z)()||(S("playing"),(0,s.p)(-b),k&&(y([-1,-1,-1,-1,-1]),w(!1),setTimeout(N,2e3*e.random()+1e3)))})),disabled:!k},"Spin!")}}),r.createElement(c.Z,{variant:"h4"},E),r.createElement(c.Z,null,"Pay lines"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"----- ····· ·····"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"····· ----- ·····"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"····· ····· -----"),r.createElement("br",null),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"··^·· \\···/ \\···/"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"·/·\\· ·\\·/· ·---·"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"/···\\ ··v·· ·····"),r.createElement("br",null),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"····· ·---· ·····"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"·---· /···\\ \\···/"),r.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"/···\\ ····· ·---·"))}},62719:(e,t,n)=>{"use strict";function r(e){return function(t){t.isTrusted&&e()}}n.d(t,{V:()=>r})},58297:(e,t,n)=>{"use strict";n.d(t,{Pt:()=>f,_q:()=>m,a9:()=>h,ao:()=>d});var r=n(62725),a=n(58427),o=n(49173),i=n(97467),s=n(40425),l=n(89916),c=n(92666),u=n(61835);function m(){const e=p(),t=g(),n=y(),a=b(n,t),o=new r.f(a,e,t);n.addContract(o)}function f(){const e=p(),t=g(),n=o.J5.getHomeComputer(),a=b(n,t),i=new r.f(a,e,t);n.addContract(i)}const h=e=>{if(!r.Th[e])throw new Error(`Invalid problem type: '${e}'`);const t=o.J5.getHomeComputer(),n=b(t),a=new r.f(n,e,null);t.addContract(a)};function d(e){let t;const n=Object.keys(r.Th);t=e.problemType&&n.includes(e.problemType)?e.problemType:p();const a=g();let o;null!=e.server?(o=(0,i.WT)(e.server),null==o&&(o=y())):o=y();const s=e.fn?e.fn:b(o,a),l=new r.f(s,t,a);o.addContract(l)}function p(){const e=Object.keys(r.Th);return e[(0,c.X)(0,e.length-1)]}function g(){const e=function(e){let t=e;const n=o.J5.factions.filter((e=>{try{return a.i[e].getInfo().offerHackingWork}catch(e){return console.error(`Error when trying to filter Hacking Factions for Coding Contract Generation: ${e}`),!1}}));return t===r.$O.FactionReputation&&0===n.length&&(t=r.$O.CompanyReputation),t===r.$O.FactionReputationAll&&0===n.length&&(t=r.$O.CompanyReputation),t===r.$O.CompanyReputation&&0===Object.keys(o.J5.jobs).length&&(t=r.$O.Money),t}((0,c.X)(0,r.$O.Money)),t=o.J5.factions.filter((e=>a.i[e].getInfo().offerHackingWork));switch(e){case r.$O.FactionReputation:{const n=t.length;return{type:e,name:t[(0,c.X)(0,n-1)]}}case r.$O.CompanyReputation:{const e=Object.keys(o.J5.jobs);return e.length>0?{type:r.$O.CompanyReputation,name:e[(0,c.X)(0,e.length-1)]}:{type:r.$O.Money}}default:return{type:e}}}function y(){const e=(0,i.XX)().filter((e=>0!==e.serversOnNetwork.length));let t=(0,c.X)(0,e.length-1),n=e[t];for(let r=0;r<200&&(!(n instanceof l.x)||n.purchasedByPlayer||n.hostname===s.r.WorldDaemon);++r)t=(0,c.X)(0,e.length-1),n=e[t];return n}function b(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{type:r.$O.Money},n=`contract-${(0,c.X)(0,1e6)}`;for(let t=0;t<1e3&&!(e.contracts.filter((e=>e.fn===n)).length<=0);++t)n=`contract-${(0,c.X)(0,1e6)}`;"name"in t&&(n+=`-${t.name.replace(/[^a-zA-Z0-9]/g,"")}`),n+=".cct";const a=(0,u.h)(n);if(!a)throw new Error(`Generated contract path could not be validated: ${n}`);return a}},62725:(e,t,n)=>{"use strict";n.d(t,{$O:()=>c,Th:()=>l,cu:()=>u,f:()=>m});var r=n(45628),a=n(94515),o=n(51020),i=n(61835);class s{constructor(e,t,n,r,a,o){this.name=e,this.desc=t,this.generate=n,this.solver=r,this.difficulty=a,this.numTries=o}}const l={};for(const e of r.X)l[e.name]=new s(e.name,e.desc,e.gen,e.solver,e.difficulty,e.numTries);let c,u;!function(e){e[e.FactionReputation=0]="FactionReputation",e[e.FactionReputationAll=1]="FactionReputationAll",e[e.CompanyReputation=2]="CompanyReputation",e[e.Money=3]="Money"}(c||(c={})),function(e){e[e.Success=0]="Success",e[e.Failure=1]="Failure",e[e.Cancelled=2]="Cancelled"}(u||(u={}));class m{tries=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default.cct",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Find Largest Prime Factor",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const r=(0,i.h)(e);if(!r)throw new Error(`Bad file path while creating a coding contract: ${e}`);if(!l[t])throw new Error(`Error: invalid contract type: ${t} please contact developer`);this.fn=r,this.type=t,this.data=l[t].generate(),this.reward=n}getData(){return this.data}getDescription(){return l[this.type].desc(this.data)}getDifficulty(){return l[this.type].difficulty}getMaxNumTries(){return l[this.type].numTries}getType(){return l[this.type].name}isSolution(e){return l[this.type].solver(this.data,e)}async prompt(){return new Promise((e=>{o.Z.emit({c:this,onClose:()=>{e(u.Cancelled)},onAttempt:t=>{this.isSolution(t)?e(u.Success):e(u.Failure)}})}))}toJSON(){return(0,a.L3)("CodingContract",this)}static fromJSON(e){return(0,a.Id)(m,e.data)}}a.gY.CodingContract=m},62586:(e,t,n)=>{"use strict";n.d(t,{O:()=>c,U:()=>u});var r=n(65150),a=n(34843),o=n(94515),i=n(62896),s=n(21623),l=n(50862);const c=(()=>{const e=(0,r.T)();return(0,s.KW)(i.z,(t=>new a.Y(e[t])))})();function u(e){const t=JSON.parse(e,o.Ro);if(t&&"object"==typeof t)for(const[e,n]of Object.entries(t)){if(!(0,l.m)("CompanyName").isMember(e))continue;if(!n)continue;if("object"!=typeof n)continue;const t=c[e];(0,o._q)(n);const{playerReputation:r,favor:a}=n;"number"==typeof r&&r>0&&(t.playerReputation=r),"number"==typeof a&&a>0&&(t.favor=a)}}},34843:(e,t,n)=>{"use strict";n.d(t,{Y:()=>i});var r=n(33244),a=n(48132),o=n(94515);class i{name=r.CompanyName.NoodleBar;info="";hasFaction=!1;companyPositions=new Set;expMultiplier=1;salaryMultiplier=1;jobStatReqOffset=0;playerReputation=0;favor=0;constructor(e){e&&(this.name=e.name,e.info&&(this.info=e.info),e.companyPositions.forEach((e=>this.companyPositions.add(e))),this.expMultiplier=e.expMultiplier,this.salaryMultiplier=e.salaryMultiplier,this.jobStatReqOffset=e.jobStatReqOffset,e.hasFaction&&(this.hasFaction=!0))}hasPosition(e){return this.companyPositions.has("string"==typeof e?e:e.name)}hasAgentPositions(){return this.companyPositions.has(r.JobName.agent0)}hasBusinessConsultantPositions(){return this.companyPositions.has(r.JobName.businessConsult0)}hasBusinessPositions(){return this.companyPositions.has(r.JobName.business0)}hasEmployeePositions(){return this.companyPositions.has(r.JobName.employee)}hasITPositions(){return this.companyPositions.has(r.JobName.IT0)}hasSecurityPositions(){return this.companyPositions.has(r.JobName.security0)}hasSoftwareConsultantPositions(){return this.companyPositions.has(r.JobName.softwareConsult0)}hasSoftwarePositions(){return this.companyPositions.has(r.JobName.software0)}hasWaiterPositions(){return this.companyPositions.has(r.JobName.waiter)}prestigeAugmentation(){null==this.favor&&(this.favor=0),this.favor+=this.getFavorGain(),this.playerReputation=0}prestigeSourceFile(){this.favor=0,this.playerReputation=0}getFavorGain(){null==this.favor&&(this.favor=0);const e=Math.max(0,(0,a.X)(this.favor))+this.playerReputation;return(0,a.y)(e)-this.favor}toJSON(){return(0,o.L3)("Company",this,i.includedKeys)}static fromJSON(e){return(0,o.Id)(i,e.data,i.includedKeys)}static includedKeys=["favor","playerReputation"]}o.gY.Company=i},5545:(e,t,n)=>{"use strict";n.d(t,{e:()=>i});var r=n(72938),a=n(33244),o=n(24957);class i{constructor(e,t){this.name=e,this.nextPosition=t.nextPosition,this.baseSalary=t.baseSalary,this.repMultiplier=t.repMultiplier,this.requiredHacking=null!=t.reqdHacking?t.reqdHacking:0,this.requiredStrength=null!=t.reqdStrength?t.reqdStrength:0,this.requiredDefense=null!=t.reqdDefense?t.reqdDefense:0,this.requiredDexterity=null!=t.reqdDexterity?t.reqdDexterity:0,this.requiredAgility=null!=t.reqdAgility?t.reqdAgility:0,this.requiredCharisma=null!=t.reqdCharisma?t.reqdCharisma:0,this.requiredReputation=null!=t.reqdReputation?t.reqdReputation:0,this.hackingEffectiveness=null!=t.hackingEffectiveness?t.hackingEffectiveness:0,this.strengthEffectiveness=null!=t.strengthEffectiveness?t.strengthEffectiveness:0,this.defenseEffectiveness=null!=t.defenseEffectiveness?t.defenseEffectiveness:0,this.dexterityEffectiveness=null!=t.dexterityEffectiveness?t.dexterityEffectiveness:0,this.agilityEffectiveness=null!=t.agilityEffectiveness?t.agilityEffectiveness:0,this.charismaEffectiveness=null!=t.charismaEffectiveness?t.charismaEffectiveness:0,100!==Math.round(this.hackingEffectiveness+this.strengthEffectiveness+this.defenseEffectiveness+this.dexterityEffectiveness+this.agilityEffectiveness+this.charismaEffectiveness)&&console.error(`CompanyPosition ${this.name} parameters do not sum to 100`),this.hackingExpGain=null!=t.hackingExpGain?t.hackingExpGain:0,this.strengthExpGain=null!=t.strengthExpGain?t.strengthExpGain:0,this.defenseExpGain=null!=t.defenseExpGain?t.defenseExpGain:0,this.dexterityExpGain=null!=t.dexterityExpGain?t.dexterityExpGain:0,this.agilityExpGain=null!=t.agilityExpGain?t.agilityExpGain:0,this.charismaExpGain=null!=t.charismaExpGain?t.charismaExpGain:0}calculateJobPerformance(e){const t=this.hackingEffectiveness*e.skills.hacking/r.t.MaxSkillLevel,n=this.strengthEffectiveness*e.skills.strength/r.t.MaxSkillLevel,a=this.defenseEffectiveness*e.skills.defense/r.t.MaxSkillLevel,o=this.dexterityEffectiveness*e.skills.dexterity/r.t.MaxSkillLevel,i=this.agilityEffectiveness*e.skills.agility/r.t.MaxSkillLevel,s=this.charismaEffectiveness*e.skills.charisma/r.t.MaxSkillLevel;let l=this.repMultiplier*(t+n+a+o+i+s)/100;return isNaN(l)&&(console.error("Company reputation gain calculated to be NaN"),l=0),l+=e.skills.intelligence/r.t.MaxSkillLevel,l}isSoftwareJob(){return o.Vy.includes(this.name)}isITJob(){return o.jR.includes(this.name)}isSecurityEngineerJob(){return this.name===a.JobName.securityEng}isNetworkEngineerJob(){return o.MI.includes(this.name)}isBusinessJob(){return o.CW.includes(this.name)}isSecurityJob(){return o.z7.includes(this.name)}isAgentJob(){return o.n9.includes(this.name)}isSoftwareConsultantJob(){return o.Y.includes(this.name)}isBusinessConsultantJob(){return o.eH.includes(this.name)}isPartTimeJob(){return[a.JobName.employeePT,a.JobName.waiterPT].includes(this.name)}}},11124:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var r=n(33244),a=n(80224),o=n(5545),i=n(21623);const s=(()=>{const e=(0,a.Z)();return(0,i.KW)(r.JobName,(t=>new o.e(t,e[t])))})()},62896:(e,t,n)=>{"use strict";let r;n.d(t,{z:()=>r}),function(e){e.ECorp="ECorp",e.MegaCorp="MegaCorp",e.BachmanAndAssociates="Bachman & Associates",e.BladeIndustries="Blade Industries",e.NWO="NWO",e.ClarkeIncorporated="Clarke Incorporated",e.OmniTekIncorporated="OmniTek Incorporated",e.FourSigma="Four Sigma",e.KuaiGongInternational="KuaiGong International",e.FulcrumTechnologies="Fulcrum Technologies",e.StormTechnologies="Storm Technologies",e.DefComm="DefComm",e.HeliosLabs="Helios Labs",e.VitaLife="VitaLife",e.IcarusMicrosystems="Icarus Microsystems",e.UniversalEnergy="Universal Energy",e.GalacticCybersystems="Galactic Cybersystems",e.AeroCorp="AeroCorp",e.OmniaCybersystems="Omnia Cybersystems",e.SolarisSpaceSystems="Solaris Space Systems",e.DeltaOne="DeltaOne",e.GlobalPharmaceuticals="Global Pharmaceuticals",e.NovaMedical="Nova Medical",e.CIA="Central Intelligence Agency",e.NSA="National Security Agency",e.WatchdogSecurity="Watchdog Security",e.LexoCorp="LexoCorp",e.RhoConstruction="Rho Construction",e.AlphaEnterprises="Alpha Enterprises",e.Police="Aevum Police Headquarters",e.SysCoreSecurities="SysCore Securities",e.CompuTek="CompuTek",e.NetLinkTechnologies="NetLink Technologies",e.CarmichaelSecurity="Carmichael Security",e.FoodNStuff="FoodNStuff",e.JoesGuns="Joe's Guns",e.OmegaSoftware="Omega Software",e.NoodleBar="Noodle Bar"}(r||(r={}))},6332:(e,t,n)=>{"use strict";function r(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r="";const a=e.jobStatReqOffset,o=t.requiredHacking>0?t.requiredHacking+a:0,i=t.requiredStrength>0?t.requiredStrength+a:0,s=t.requiredDefense>0?t.requiredDefense+a:0,l=t.requiredDexterity>0?t.requiredDexterity+a:0,c=t.requiredDexterity>0?t.requiredDexterity+a:0,u=t.requiredCharisma>0?t.requiredCharisma+a:0,m=t.requiredReputation;return n?(r="Requires:
",r+=o.toString()+" hacking
",r+=i.toString()+" strength
",r+=s.toString()+" defense
",r+=l.toString()+" dexterity
",r+=c.toString()+" agility
",r+=u.toString()+" charisma
",r+=m.toString()+" reputation"):(r="(Requires ",o>0&&(r+=o+" hacking, "),i>0&&(r+=i+" strength, "),s>0&&(r+=s+" defense, "),l>0&&(r+=l+" dexterity, "),c>0&&(r+=c+" agility, "),u>0&&(r+=u+" charisma, "),m>1&&(r+=m+" reputation, "),r=r.substring(0,r.length-2),r+=")"),r}n.d(t,{c:()=>r})},40465:(e,t,n)=>{"use strict";n.d(t,{v:()=>a});var r=n(11124);function a(e){if(!e)return null;const t=e.nextPosition;return t?r.A[t]:null}},65150:(e,t,n)=>{"use strict";n.d(t,{T:()=>o});var r=n(33244),a=n(24957);function o(){const e=[...a.Vy,...a.jR,...a.MI,r.JobName.securityEng],t=a.Vy.slice(0,6),n=a.Vy.slice(0,4),o=a.CW.slice(0,4);return{[r.CompanyName.ECorp]:{name:r.CompanyName.ECorp,companyPositions:[...e,...a.CW,...a.z7],expMultiplier:3,salaryMultiplier:3,jobStatReqOffset:249},[r.CompanyName.MegaCorp]:{name:r.CompanyName.MegaCorp,companyPositions:[...e,...a.CW,...a.z7],expMultiplier:3,salaryMultiplier:3,jobStatReqOffset:249},[r.CompanyName.BachmanAndAssociates]:{name:r.CompanyName.BachmanAndAssociates,companyPositions:[...e,...a.CW,...a.z7],expMultiplier:2.6,salaryMultiplier:2.6,jobStatReqOffset:224},[r.CompanyName.BladeIndustries]:{name:r.CompanyName.BladeIndustries,companyPositions:[...e,...a.CW,...a.z7],expMultiplier:2.75,salaryMultiplier:2.75,jobStatReqOffset:224},[r.CompanyName.NWO]:{name:r.CompanyName.NWO,companyPositions:[...e,...a.CW,...a.z7],expMultiplier:2.75,salaryMultiplier:2.75,jobStatReqOffset:249},[r.CompanyName.ClarkeIncorporated]:{name:r.CompanyName.ClarkeIncorporated,companyPositions:[...e,...a.CW,...a.z7],expMultiplier:2.25,salaryMultiplier:2.25,jobStatReqOffset:224},[r.CompanyName.OmniTekIncorporated]:{name:r.CompanyName.OmniTekIncorporated,companyPositions:[...e,...a.CW,...a.z7],expMultiplier:2.25,salaryMultiplier:2.25,jobStatReqOffset:224},[r.CompanyName.FourSigma]:{name:r.CompanyName.FourSigma,companyPositions:[...e,...a.CW,...a.z7],expMultiplier:2.5,salaryMultiplier:2.5,jobStatReqOffset:224},[r.CompanyName.KuaiGongInternational]:{name:r.CompanyName.KuaiGongInternational,companyPositions:[...e,...a.CW,...a.z7],expMultiplier:2.2,salaryMultiplier:2.2,jobStatReqOffset:224},[r.CompanyName.FulcrumTechnologies]:{name:r.CompanyName.FulcrumTechnologies,companyPositions:[...e,...a.CW],expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:224},[r.CompanyName.StormTechnologies]:{name:r.CompanyName.StormTechnologies,companyPositions:[...e,...a.Y,...a.CW],expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:199},[r.CompanyName.DefComm]:{name:r.CompanyName.DefComm,companyPositions:[r.JobName.business5,...e,...a.Y],expMultiplier:1.75,salaryMultiplier:1.75,jobStatReqOffset:199},[r.CompanyName.HeliosLabs]:{name:r.CompanyName.HeliosLabs,companyPositions:[r.JobName.business5,...e,...a.Y],expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:199},[r.CompanyName.VitaLife]:{name:r.CompanyName.VitaLife,companyPositions:[...e,...a.CW,...a.Y],expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:199},[r.CompanyName.IcarusMicrosystems]:{name:r.CompanyName.IcarusMicrosystems,companyPositions:[...e,...a.CW,...a.Y],expMultiplier:1.9,salaryMultiplier:1.9,jobStatReqOffset:199},[r.CompanyName.UniversalEnergy]:{name:r.CompanyName.UniversalEnergy,companyPositions:[...e,...a.CW,...a.Y],expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:199},[r.CompanyName.GalacticCybersystems]:{name:r.CompanyName.GalacticCybersystems,companyPositions:[...e,...a.CW,...a.Y],expMultiplier:1.9,salaryMultiplier:1.9,jobStatReqOffset:199},[r.CompanyName.AeroCorp]:{name:r.CompanyName.AeroCorp,companyPositions:[r.JobName.business3,r.JobName.business5,...e,...a.z7],expMultiplier:1.7,salaryMultiplier:1.7,jobStatReqOffset:199},[r.CompanyName.OmniaCybersystems]:{name:r.CompanyName.OmniaCybersystems,companyPositions:[r.JobName.business3,r.JobName.business5,...e,...a.z7],expMultiplier:1.7,salaryMultiplier:1.7,jobStatReqOffset:199},[r.CompanyName.SolarisSpaceSystems]:{name:r.CompanyName.SolarisSpaceSystems,companyPositions:[r.JobName.business3,r.JobName.business5,...e,...a.z7],expMultiplier:1.7,salaryMultiplier:1.7,jobStatReqOffset:199},[r.CompanyName.DeltaOne]:{name:r.CompanyName.DeltaOne,companyPositions:[r.JobName.business3,r.JobName.business5,...e,...a.z7],expMultiplier:1.6,salaryMultiplier:1.6,jobStatReqOffset:199},[r.CompanyName.GlobalPharmaceuticals]:{name:r.CompanyName.GlobalPharmaceuticals,companyPositions:[...e,...a.CW,...a.Y,...a.z7],expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:224},[r.CompanyName.NovaMedical]:{name:r.CompanyName.NovaMedical,companyPositions:[...e,...a.CW,...a.Y,...a.z7],expMultiplier:1.75,salaryMultiplier:1.75,jobStatReqOffset:199},[r.CompanyName.CIA]:{name:r.CompanyName.CIA,companyPositions:[...t,...a.MI,r.JobName.securityEng,...a.jR,...a.z7,...a.n9],expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:149},[r.CompanyName.NSA]:{name:r.CompanyName.NSA,companyPositions:[...t,...a.MI,r.JobName.securityEng,...a.jR,...a.z7,...a.n9],expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:149},[r.CompanyName.WatchdogSecurity]:{name:r.CompanyName.WatchdogSecurity,companyPositions:[...t,...a.MI,...a.jR,...a.z7,...a.n9,...a.Y],expMultiplier:1.5,salaryMultiplier:1.5,jobStatReqOffset:124},[r.CompanyName.LexoCorp]:{name:r.CompanyName.LexoCorp,companyPositions:[...e,...a.Y,...a.CW,...a.z7],expMultiplier:1.4,salaryMultiplier:1.4,jobStatReqOffset:99},[r.CompanyName.RhoConstruction]:{name:r.CompanyName.RhoConstruction,companyPositions:[...n,...o],expMultiplier:1.3,salaryMultiplier:1.3,jobStatReqOffset:49},[r.CompanyName.AlphaEnterprises]:{name:r.CompanyName.AlphaEnterprises,companyPositions:[...n,...o,...a.Y],expMultiplier:1.5,salaryMultiplier:1.5,jobStatReqOffset:99},[r.CompanyName.Police]:{name:r.CompanyName.Police,companyPositions:[...a.z7,...n],expMultiplier:1.3,salaryMultiplier:1.3,jobStatReqOffset:99},[r.CompanyName.SysCoreSecurities]:{name:r.CompanyName.SysCoreSecurities,companyPositions:[...e],expMultiplier:1.3,salaryMultiplier:1.3,jobStatReqOffset:124},[r.CompanyName.CompuTek]:{name:r.CompanyName.CompuTek,companyPositions:[...e],expMultiplier:1.2,salaryMultiplier:1.2,jobStatReqOffset:74},[r.CompanyName.NetLinkTechnologies]:{name:r.CompanyName.NetLinkTechnologies,companyPositions:[...e],expMultiplier:1.2,salaryMultiplier:1.2,jobStatReqOffset:99},[r.CompanyName.CarmichaelSecurity]:{name:r.CompanyName.CarmichaelSecurity,companyPositions:[...e,...a.Y,...a.n9,...a.z7],expMultiplier:1.2,salaryMultiplier:1.2,jobStatReqOffset:74},[r.CompanyName.FoodNStuff]:{name:r.CompanyName.FoodNStuff,companyPositions:[r.JobName.employee,r.JobName.employeePT],expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0},[r.CompanyName.JoesGuns]:{name:r.CompanyName.JoesGuns,companyPositions:[r.JobName.employee,r.JobName.employeePT],expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0},[r.CompanyName.OmegaSoftware]:{name:r.CompanyName.OmegaSoftware,companyPositions:[...a.Vy,...a.Y,...a.jR],expMultiplier:1.1,salaryMultiplier:1.1,jobStatReqOffset:49},[r.CompanyName.NoodleBar]:{name:r.CompanyName.NoodleBar,companyPositions:[r.JobName.waiter,r.JobName.waiterPT],expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0}}}},80224:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(33244);function a(){return{[r.JobName.software0]:{nextPosition:r.JobName.software1,baseSalary:33,charismaEffectiveness:15,charismaExpGain:.02,hackingEffectiveness:85,hackingExpGain:.05,reqdHacking:1,repMultiplier:.9},[r.JobName.software1]:{nextPosition:r.JobName.software2,baseSalary:80,charismaEffectiveness:15,charismaExpGain:.05,hackingEffectiveness:85,hackingExpGain:.1,reqdHacking:51,reqdReputation:8e3,repMultiplier:1.1},[r.JobName.software2]:{nextPosition:r.JobName.software3,baseSalary:165,charismaEffectiveness:20,charismaExpGain:.08,hackingEffectiveness:80,hackingExpGain:.4,reqdCharisma:51,reqdHacking:251,reqdReputation:4e4,repMultiplier:1.3},[r.JobName.software3]:{nextPosition:r.JobName.software4,baseSalary:500,charismaEffectiveness:25,charismaExpGain:.1,hackingEffectiveness:75,hackingExpGain:.8,reqdCharisma:151,reqdHacking:401,reqdReputation:2e5,repMultiplier:1.5},[r.JobName.software4]:{nextPosition:r.JobName.software5,baseSalary:800,charismaEffectiveness:25,charismaExpGain:.5,hackingEffectiveness:75,hackingExpGain:1,reqdCharisma:251,reqdHacking:501,reqdReputation:4e5,repMultiplier:1.6},[r.JobName.software5]:{nextPosition:r.JobName.software6,baseSalary:1650,charismaEffectiveness:25,charismaExpGain:.5,hackingEffectiveness:75,hackingExpGain:1.1,reqdCharisma:251,reqdHacking:501,reqdReputation:8e5,repMultiplier:1.6},[r.JobName.software6]:{nextPosition:r.JobName.software7,baseSalary:2310,charismaEffectiveness:30,charismaExpGain:.6,hackingEffectiveness:70,hackingExpGain:1.2,reqdCharisma:401,reqdHacking:601,reqdReputation:16e5,repMultiplier:1.75},[r.JobName.software7]:{nextPosition:null,baseSalary:2640,charismaEffectiveness:35,charismaExpGain:1,hackingEffectiveness:65,hackingExpGain:1.5,reqdCharisma:501,reqdHacking:751,reqdReputation:32e5,repMultiplier:2},[r.JobName.IT0]:{nextPosition:r.JobName.IT1,baseSalary:26,charismaEffectiveness:10,charismaExpGain:.01,hackingEffectiveness:90,hackingExpGain:.04,reqdHacking:1,repMultiplier:.9},[r.JobName.IT1]:{nextPosition:r.JobName.IT2,baseSalary:66,charismaEffectiveness:15,charismaExpGain:.02,hackingEffectiveness:85,hackingExpGain:.08,reqdHacking:26,reqdReputation:7e3,repMultiplier:1.1},[r.JobName.IT2]:{nextPosition:r.JobName.IT3,baseSalary:132,charismaEffectiveness:20,charismaExpGain:.1,hackingEffectiveness:80,hackingExpGain:.3,reqdCharisma:51,reqdHacking:151,reqdReputation:35e3,repMultiplier:1.3},[r.JobName.IT3]:{nextPosition:r.JobName.software5,baseSalary:410,charismaEffectiveness:20,charismaExpGain:.2,hackingEffectiveness:80,hackingExpGain:.5,reqdCharisma:76,reqdHacking:251,reqdReputation:175e3,repMultiplier:1.4},[r.JobName.securityEng]:{nextPosition:r.JobName.software5,baseSalary:121,charismaEffectiveness:15,charismaExpGain:.05,hackingEffectiveness:85,hackingExpGain:.4,reqdCharisma:26,reqdHacking:151,reqdReputation:35e3,repMultiplier:1.2},[r.JobName.networkEng0]:{nextPosition:r.JobName.networkEng1,baseSalary:121,charismaEffectiveness:15,charismaExpGain:.05,hackingEffectiveness:85,hackingExpGain:.4,reqdCharisma:26,reqdHacking:151,reqdReputation:35e3,repMultiplier:1.2},[r.JobName.networkEng1]:{nextPosition:r.JobName.software5,baseSalary:410,charismaEffectiveness:20,charismaExpGain:.1,hackingEffectiveness:80,hackingExpGain:.5,reqdCharisma:76,reqdHacking:251,reqdReputation:175e3,repMultiplier:1.3},[r.JobName.business0]:{nextPosition:r.JobName.business1,baseSalary:46,charismaEffectiveness:90,charismaExpGain:.08,hackingEffectiveness:10,hackingExpGain:.01,reqdCharisma:1,reqdHacking:1,repMultiplier:.9},[r.JobName.business1]:{nextPosition:r.JobName.business2,baseSalary:100,charismaEffectiveness:85,charismaExpGain:.15,hackingEffectiveness:15,hackingExpGain:.02,reqdCharisma:51,reqdHacking:6,reqdReputation:8e3,repMultiplier:1.1},[r.JobName.business2]:{nextPosition:r.JobName.business3,baseSalary:200,charismaEffectiveness:85,charismaExpGain:.3,hackingEffectiveness:15,hackingExpGain:.02,reqdCharisma:101,reqdHacking:51,reqdReputation:4e4,repMultiplier:1.3},[r.JobName.business3]:{nextPosition:r.JobName.business4,baseSalary:660,charismaEffectiveness:85,charismaExpGain:.4,hackingEffectiveness:15,hackingExpGain:.02,reqdCharisma:226,reqdHacking:51,reqdReputation:2e5,repMultiplier:1.5},[r.JobName.business4]:{nextPosition:r.JobName.business5,baseSalary:1950,charismaEffectiveness:90,charismaExpGain:1,hackingEffectiveness:10,hackingExpGain:.05,reqdCharisma:501,reqdHacking:76,reqdReputation:8e5,repMultiplier:1.6},[r.JobName.business5]:{nextPosition:null,baseSalary:3900,charismaEffectiveness:90,charismaExpGain:1.5,hackingEffectiveness:10,hackingExpGain:.05,reqdCharisma:751,reqdHacking:101,reqdReputation:32e5,repMultiplier:1.75},[r.JobName.security0]:{nextPosition:r.JobName.security1,baseSalary:50,hackingEffectiveness:5,strengthEffectiveness:20,defenseEffectiveness:20,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.01,strengthExpGain:.04,defenseExpGain:.04,dexterityExpGain:.04,agilityExpGain:.04,charismaExpGain:.02,reqdStrength:51,reqdDefense:51,reqdDexterity:51,reqdAgility:51,reqdCharisma:1,repMultiplier:1},[r.JobName.security1]:{nextPosition:r.JobName.security2,baseSalary:195,hackingEffectiveness:10,strengthEffectiveness:20,defenseEffectiveness:20,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:10,hackingExpGain:.02,strengthExpGain:.1,defenseExpGain:.1,dexterityExpGain:.1,agilityExpGain:.1,charismaExpGain:.05,reqdHacking:26,reqdStrength:151,reqdDefense:151,reqdDexterity:151,reqdAgility:151,reqdCharisma:51,reqdReputation:8e3,repMultiplier:1.1},[r.JobName.security2]:{nextPosition:r.JobName.security3,baseSalary:660,hackingEffectiveness:10,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:15,agilityEffectiveness:15,charismaEffectiveness:30,hackingExpGain:.02,strengthExpGain:.12,defenseExpGain:.12,dexterityExpGain:.12,agilityExpGain:.12,charismaExpGain:.1,reqdHacking:26,reqdStrength:251,reqdDefense:251,reqdDexterity:251,reqdAgility:251,reqdCharisma:101,reqdReputation:36e3,repMultiplier:1.25},[r.JobName.security3]:{nextPosition:null,baseSalary:1320,hackingEffectiveness:10,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:15,agilityEffectiveness:15,charismaEffectiveness:30,hackingExpGain:.05,strengthExpGain:.15,defenseExpGain:.15,dexterityExpGain:.15,agilityExpGain:.15,charismaExpGain:.15,reqdHacking:51,reqdStrength:501,reqdDefense:501,reqdDexterity:501,reqdAgility:501,reqdCharisma:151,reqdReputation:144e3,repMultiplier:1.4},[r.JobName.agent0]:{nextPosition:r.JobName.agent1,baseSalary:330,hackingEffectiveness:10,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:20,hackingExpGain:.04,strengthExpGain:.08,defenseExpGain:.08,dexterityExpGain:.08,agilityExpGain:.08,charismaExpGain:.05,reqdHacking:101,reqdStrength:101,reqdDefense:101,reqdDexterity:101,reqdAgility:101,reqdCharisma:101,reqdReputation:8e3,repMultiplier:1},[r.JobName.agent1]:{nextPosition:r.JobName.agent2,baseSalary:990,hackingEffectiveness:15,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.1,strengthExpGain:.15,defenseExpGain:.15,dexterityExpGain:.15,agilityExpGain:.15,charismaExpGain:.1,reqdHacking:201,reqdStrength:251,reqdDefense:251,reqdDexterity:251,reqdAgility:251,reqdCharisma:201,reqdReputation:32e3,repMultiplier:1.25},[r.JobName.agent2]:{nextPosition:null,baseSalary:2e3,hackingEffectiveness:15,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.15,strengthExpGain:.2,defenseExpGain:.2,dexterityExpGain:.2,agilityExpGain:.2,charismaExpGain:.15,reqdHacking:251,reqdStrength:501,reqdDefense:501,reqdDexterity:501,reqdAgility:501,reqdCharisma:251,reqdReputation:162e3,repMultiplier:1.5},[r.JobName.waiter]:{nextPosition:null,baseSalary:22,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.02,defenseExpGain:.02,dexterityExpGain:.02,agilityExpGain:.02,charismaExpGain:.05,repMultiplier:1},[r.JobName.employee]:{nextPosition:null,baseSalary:22,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.02,defenseExpGain:.02,dexterityExpGain:.02,agilityExpGain:.02,charismaExpGain:.04,repMultiplier:1},[r.JobName.softwareConsult0]:{nextPosition:r.JobName.softwareConsult1,baseSalary:66,hackingEffectiveness:80,charismaEffectiveness:20,hackingExpGain:.08,charismaExpGain:.03,reqdHacking:51,repMultiplier:1},[r.JobName.softwareConsult1]:{nextPosition:null,baseSalary:132,hackingEffectiveness:75,charismaEffectiveness:25,hackingExpGain:.25,charismaExpGain:.06,reqdHacking:251,reqdCharisma:51,repMultiplier:1.2},[r.JobName.businessConsult0]:{nextPosition:r.JobName.businessConsult1,baseSalary:66,hackingEffectiveness:20,charismaEffectiveness:80,hackingExpGain:.015,charismaExpGain:.15,reqdHacking:6,reqdCharisma:51,repMultiplier:1},[r.JobName.businessConsult1]:{nextPosition:null,baseSalary:525,hackingEffectiveness:15,charismaEffectiveness:85,hackingExpGain:.015,charismaExpGain:.3,reqdHacking:51,reqdCharisma:226,repMultiplier:1.2},[r.JobName.waiterPT]:{nextPosition:null,baseSalary:20,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.0075,defenseExpGain:.0075,dexterityExpGain:.0075,agilityExpGain:.0075,charismaExpGain:.04,repMultiplier:1},[r.JobName.employeePT]:{nextPosition:null,baseSalary:20,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.0075,defenseExpGain:.0075,dexterityExpGain:.0075,agilityExpGain:.0075,charismaExpGain:.03,repMultiplier:1}}}},24957:(e,t,n)=>{"use strict";n.d(t,{CW:()=>s,MI:()=>i,Vy:()=>a,Y:()=>u,eH:()=>m,jR:()=>o,n9:()=>c,z7:()=>l});var r=n(33244);const a=[r.JobName.software0,r.JobName.software1,r.JobName.software2,r.JobName.software3,r.JobName.software4,r.JobName.software5,r.JobName.software6,r.JobName.software7],o=[r.JobName.IT0,r.JobName.IT1,r.JobName.IT2,r.JobName.IT3],i=[r.JobName.networkEng0,r.JobName.networkEng1],s=[r.JobName.business0,r.JobName.business1,r.JobName.business2,r.JobName.business3,r.JobName.business4,r.JobName.business5],l=[r.JobName.security0,r.JobName.security1,r.JobName.security2,r.JobName.security3],c=[r.JobName.agent0,r.JobName.agent1,r.JobName.agent2],u=[r.JobName.softwareConsult0,r.JobName.softwareConsult1],m=[r.JobName.businessConsult0,r.JobName.businessConsult1]},30195:(e,t,n)=>{"use strict";n.d(t,{j:()=>l});var r=n(67294),a=n(49173),o=n(48672),i=n(81138),s=n(56798);function l(e){return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(i.Z,null," Would you like to quit your job at ",e.company.name,"?"),r.createElement("br",null),r.createElement("br",null),r.createElement(s.Z,{onClick:function(){a.J5.quitJob(e.companyName),e.onQuit(),e.onClose()}},"Quit"))}},68507:(e,t,n)=>{"use strict";function r(e){return e}n.d(t,{$:()=>r})},72938:(e,t,n)=>{"use strict";n.d(t,{t:()=>r});const r={VersionString:"2.4.1",isDevBranch:!1,VersionNumber:34,MaxSkillLevel:975,MilliPerCycle:200,CorpFactionRepRequirement:4e5,BaseCostFor1GBOfRamHome:32e3,BaseCostFor1GBOfRamServer:55e3,TravelCost:2e5,BaseFavorToDonate:150,DonateMoneyToRepDivisor:1e6,FactionReputationToFavorBase:500,FactionReputationToFavorMult:1.02,CompanyReputationToFavorBase:500,CompanyReputationToFavorMult:1.02,NeuroFluxGovernorLevelMult:1.14,NumNetscriptPorts:Number.MAX_SAFE_INTEGER,HomeComputerMaxRam:1073741824,ServerBaseGrowthRate:1.03,ServerMaxGrowthRate:1.0035,ServerFortifyAmount:.002,ServerWeakenAmount:.05,PurchasedServerLimit:25,PurchasedServerMaxRam:1048576,MultipleAugMultiplier:1.9,TorRouterCost:2e5,HospitalCostPerHp:1e5,IntelligenceCrimeWeight:.025,IntelligenceInfiltrationWeight:.1,IntelligenceCrimeBaseExpGain:.05,IntelligenceProgramBaseExpGain:.1,IntelligenceGraftBaseExpGain:.05,IntelligenceTerminalHackBaseExpGain:200,IntelligenceSingFnBaseExpGain:1.5,IntelligenceClassBaseExpGain:.01,MillisecondsPer20Hours:72e6,GameCyclesPer20Hours:36e4,MillisecondsPer10Hours:36e6,GameCyclesPer10Hours:18e4,MillisecondsPer8Hours:288e5,GameCyclesPer8Hours:144e3,MillisecondsPer4Hours:144e5,GameCyclesPer4Hours:72e3,MillisecondsPer2Hours:72e5,GameCyclesPer2Hours:36e3,MillisecondsPerHour:36e5,GameCyclesPerHour:18e3,MillisecondsPerHalfHour:18e5,GameCyclesPerHalfHour:9e3,MillisecondsPerQuarterHour:9e5,GameCyclesPerQuarterHour:4500,MillisecondsPerFiveMinutes:3e5,GameCyclesPerFiveMinutes:1500,BaseFocusBonus:.8,ClassDataStructuresBaseCost:40,ClassNetworksBaseCost:80,ClassAlgorithmsBaseCost:320,ClassManagementBaseCost:160,ClassLeadershipBaseCost:320,ClassGymBaseCost:120,ClassStudyComputerScienceBaseExp:.5,ClassDataStructuresBaseExp:1,ClassNetworksBaseExp:2,ClassAlgorithmsBaseExp:4,ClassManagementBaseExp:2,ClassLeadershipBaseExp:4,CodingContractBaseFactionRepGain:2500,CodingContractBaseCompanyRepGain:4e3,CodingContractBaseMoneyGain:75e6,AugmentationGraftingCostMult:3,AugmentationGraftingTimeBase:36e5,SoACostMult:7,SoARepMult:1.3,EntropyEffect:.98,TotalNumBitNodes:24,InfiniteLoopLimit:2e3,Donations:113,LatestUpdate:'\n## v2.4.1 Update (8/26/23)\n\n### FEATURE ADDITIONS:\n\n- Added "Enable terminal history search with arrow keys" option in Misc options category, inspired by similar functionality in shells like zsh. (@ficocelliguy)\n\n### BUGFIX:\n\n- Fixed a bug where buying NeuroFlux Governor would buy one less level than expected (@zerbosh)\n- Fixed an issue that could cause the Coding Contract UI to become unreachable (@myCatsName)\n- Infiltration: Knowledge of Apollo aug no longer highlights the incorrect wires (@Snarling)\n\n### CODEBASE / DOCS / MISC:\n\n- Added a new theme "zerenity" (@Zelow79)\n- Reorganize game constants (@zerbosh)\n- Reorganize ingame documentation folder structure, simplify documentation bundling (@Snarling)\n- IP Address coding contract accepts single-quoted entries (@myCatsName)\n- Updated an outdated message on ns.killall logs (@myCatsName)\n- Updated documentation for ns.share and ns.getSharePower (@myCatsName)\n- Removed functions (like ns.getServerRam) are no longer shown when enumerating ns entries. (@Snarling)\n- Removed more references to ReadTheDocs that remained after 2.4.0 (@hydroflame) \n- Fixed some typos/spacing (@myCatsName)\n- Fixed an issue with incorrect React keys in active scripts page (@zornlemma)\n\n### API CHANGES (NON-SPOILER)\n\n- Added ns.stock.getConstants (@Snarling)\n- Added ownedAugs and ownedSF properties to return data of ns.getResetInfo (@Snarling)\n\n### API CHANGES (SPOILERS):\n\n- Added ns.singularity.getAugmentationFactions to provide a list of factions that have a given augmentation (@myCatsName)\n- ns.corporation.getConstants now has a ram cost of 0 (@Snarling)\n\n### OTHER CHANGES (SPOILERS):\n\n- Successes for next level is now accurate in the UI for Bladeburner operations (@myCatsName)\n- ns.sleeve.setToFactionWork no longer allows working for factions the player has not joined (@Snarling)\n'}},33563:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{A9:()=>Research,D:()=>UpgradeOfficeSize,DY:()=>ExportMaterial,Dn:()=>LimitProductProduction,Fm:()=>BuyBackShares,Ix:()=>SetProductMarketTA1,J_:()=>purchaseWarehouse,Jm:()=>HireAdVert,M4:()=>NewDivision,M9:()=>SetProductMarketTA2,MO:()=>BuyMaterial,Nz:()=>SetMaterialMarketTA1,Pe:()=>LimitMaterialProduction,Sz:()=>SellMaterial,VG:()=>SetSmartSupplyOption,YH:()=>ThrowParty,Zn:()=>SetMaterialMarketTA2,_A:()=>BulkPurchase,aT:()=>SellShares,aq:()=>removeDivision,bY:()=>BuyTea,m_:()=>UpgradeWarehouse,mg:()=>SetSmartSupply,oL:()=>MakeProduct,oO:()=>purchaseOffice,qr:()=>UpgradeWarehouseCost,qv:()=>SellProduct,vg:()=>CancelExportMaterial,wZ:()=>IssueDividends,yp:()=>IssueNewShares});var lodash__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96486),lodash__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__),_player__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(49173),_MaterialInfo__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(51004),_data_IndustryData__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(32927),_Division__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(37911),_data_Constants__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(80692),_OfficeSpace__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(80741),_Product__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(77396),_Warehouse__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(55307),_ResearchMap__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(78845),_ui_Helpers__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(17446),_enums__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(33244),_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(92666),_Types_Record__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(21623);function NewDivision(e,t,n){if(e.divisions.size>=e.maxDivisions)throw new Error(`Cannot expand into ${t} industry, too many divisions!`);if(e.divisions.has(n))throw new Error(`Division name ${n} is already in use!`);if("Overview"===n)throw new Error('"Overview" is a forbidden division name.');const r=_data_IndustryData__WEBPACK_IMPORTED_MODULE_3__.vm[t];if(!r)throw new Error(`Invalid industry: '${t}'`);const a=r.startingCost;if(e.funds=0;e--)n.exports[e].division===t&&n.exports.splice(e,1)}function purchaseOffice(e,t,n){if(e.funds<_data_Constants__WEBPACK_IMPORTED_MODULE_5__.officeInitialCost)throw new Error("You don't have enough company funds to open a new office!");if(t.offices[n])throw new Error(`You have already expanded into ${n} for ${t.name}`);e.funds=e.funds-_data_Constants__WEBPACK_IMPORTED_MODULE_5__.officeInitialCost,t.offices[n]=new _OfficeSpace__WEBPACK_IMPORTED_MODULE_6__.Q({city:n,size:_data_Constants__WEBPACK_IMPORTED_MODULE_5__.officeInitialSize})}function IssueDividends(e,t){if(isNaN(t)||t<0||t>_data_Constants__WEBPACK_IMPORTED_MODULE_5__.dividendMaxRate)throw new Error(`Invalid value. Must be an number between 0 and ${_data_Constants__WEBPACK_IMPORTED_MODULE_5__.dividendMaxRate}`);e.dividendRate=t}function IssueNewShares(e,t){const n=e.calculateMaxNewShares();if(t=1e7*Math.round(t/1e7),isNaN(t)||t<1e7||t>n)throw new Error(`Invalid value. Must be an number between 10m and ${n} (20% of total shares)`);const r=t*Math.round(.8*e.sharePrice);e.issueNewSharesCooldown=_data_Constants__WEBPACK_IMPORTED_MODULE_5__.issueNewSharesCooldown;const a=1-(e.numShares+e.issuedShares)/e.totalShares,o=Math.round(t/2*a),i=1e7*Math.round((0,_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12__.X)(0,o)/1e7);return e.issuedShares+=t-i,e.totalShares+=t,e.funds=e.funds+r,e.immediatelyUpdateSharePrice(),[r,t,i]}function SellMaterial(material,amount,price){""===price&&(price="0"),""===amount&&(amount="0");let cost=price.replace(/\s+/g,"");cost=cost.replace(/[^-()\d/*+.MPe]/g,"");let temp=cost.replace(/MP/,"1.234e5");try{if(temp.includes("MP"))throw"Only one reference to MP is allowed in sell price.";temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell price field");if(cost.includes("MP")?material.desiredSellPrice=cost:material.desiredSellPrice=temp,amount=amount.toUpperCase(),amount.includes("MAX")||amount.includes("PROD")||amount.includes("INV")){let q=amount.replace(/\s+/g,"");q=q.replace(/[^-()\d/*+.MAXPRODINV]/g,"");let tempQty=q.replace(/MAX/g,material.maxSellPerCycle.toString());tempQty=tempQty.replace(/PROD/g,material.productionAmount.toString()),tempQty=tempQty.replace(/INV/g,material.productionAmount.toString());try{tempQty=eval(tempQty)}catch(e){throw new Error("Invalid value or expression for sell quantity field: "+e)}if(null==tempQty||isNaN(parseFloat(tempQty)))throw new Error("Invalid value or expression for sell quantity field");material.desiredSellAmount=q}else{if(isNaN(parseFloat(amount))||parseFloat(amount)<0)throw new Error("Invalid value for sell quantity field! Must be numeric or 'PROD' or 'MAX'");{let e=parseFloat(amount);isNaN(e)&&(e=0),material.desiredSellAmount=e}}}function SellProduct(product,city,amt,price,all){if(price.includes("MP")){price=price.replace(/\s+/g,""),price=price.replace(/[^-()\d/*+.MPe]/g,"");let temp=price.replace(/MP/,"1.234e5");try{if(temp.includes("MP"))throw"Only one reference to MP is allowed in sell price.";temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell price field.");product.cityData[city].desiredSellPrice=price}else{const e=parseFloat(price);if(isNaN(e))throw new Error("Invalid value for sell price field");product.cityData[city].desiredSellPrice=e}if(amt=amt.toUpperCase(),amt.includes("MAX")||amt.includes("PROD")||amt.includes("INV")){let qty=amt.replace(/\s+/g,"");qty=qty.replace(/[^-()\d/*+.MAXPRODINV]/g,"");let temp=qty.replace(/MAX/g,product.maxSellAmount.toString());temp=temp.replace(/PROD/g,product.cityData[city].productionAmount.toString()),temp=temp.replace(/INV/g,product.cityData[city].stored.toString());try{temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell quantity field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell quantity field");if(all)for(const e of Object.values(_enums__WEBPACK_IMPORTED_MODULE_10__.CityName))product.cityData[e].desiredSellAmount=qty;else product.cityData[city].desiredSellAmount=qty}else{if(isNaN(parseFloat(amt))||parseFloat(amt)<0)throw new Error("Invalid value for sell quantity field! Must be numeric or 'PROD' or 'MAX'");{let e=parseFloat(amt);if(isNaN(e)&&(e=0),0===e)if(all)for(const e of Object.values(_enums__WEBPACK_IMPORTED_MODULE_10__.CityName))product.cityData[e].desiredSellAmount=0;else product.cityData[city].desiredSellAmount=0;else if(all)for(const t of Object.values(_enums__WEBPACK_IMPORTED_MODULE_10__.CityName))product.cityData[t].desiredSellAmount=e;else product.cityData[city].desiredSellAmount=e}}}function SetSmartSupply(e,t){e.smartSupplyEnabled=t}function SetSmartSupplyOption(e,t,n){e.smartSupplyOptions[t.name]=n}function BuyMaterial(e,t,n){if(!(0,_ui_Helpers__WEBPACK_IMPORTED_MODULE_13__.s)(t.name,e))throw new Error(`${t.name} is not a relevant material for industry ${e.type}`);if(isNaN(n)||n<0)throw new Error(`Invalid amount '${n}' to buy material '${t.name}'`);t.buyAmount=n}function BulkPurchase(e,t,n,r,a){if(!(0,_ui_Helpers__WEBPACK_IMPORTED_MODULE_13__.s)(r.name,t))throw new Error(`${r.name} is not a relevant material for industry ${t.type}`);const o=_MaterialInfo__WEBPACK_IMPORTED_MODULE_2__.d[r.name].size,i=(n.size-n.sizeUsed)/o;if(isNaN(a)||a<0)throw new Error("Invalid input amount");if(a>i)throw new Error("You do not have enough warehouse size to fit this purchase");const s=a*r.marketPrice;if(!(e.funds>=s))throw new Error("You cannot afford this purchase.");e.funds=e.funds-s,r.stored+=a}function SellShares(e,t){if(isNaN(t)||!(0,lodash__WEBPACK_IMPORTED_MODULE_0__.isInteger)(t))throw new Error("Invalid value for number of shares");if(t<=0)throw new Error("Invalid value for number of shares");if(t>e.numShares)throw new Error("You don't have that many shares to sell!");if(t===e.numShares)throw new Error("You cant't sell all your shares!");if(t>1e14)throw new Error("Invalid value for number of shares");if(!e.public)throw new Error("You haven't gone public!");if(e.shareSaleCooldown)throw new Error("Share sale on cooldown!");const n=e.calculateShareSale(t),r=n[0],a=n[1],o=n[2];return e.numShares-=t,e.issuedShares+=t,e.sharePrice=a,e.shareSalesUntilPriceUpdate=o,e.shareSaleCooldown=_data_Constants__WEBPACK_IMPORTED_MODULE_5__.sellSharesCooldown,_player__WEBPACK_IMPORTED_MODULE_1__.J5.gainMoney(r,"corporation"),r}function BuyBackShares(e,t){if(isNaN(t)||!(0,lodash__WEBPACK_IMPORTED_MODULE_0__.isInteger)(t))throw new Error("Invalid value for number of shares");if(t<=0)throw new Error("Invalid value for number of shares");if(t>e.issuedShares)throw new Error("You don't have that many shares to buy!");if(!e.public)throw new Error("You haven't gone public!");const n=1.1*e.sharePrice;if(_player__WEBPACK_IMPORTED_MODULE_1__.J5.moneyt+_data_Constants__WEBPACK_IMPORTED_MODULE_5__.warehouseSizeUpgradeCostBase*Math.pow(1.07,e.level+1+n)),0)}function UpgradeWarehouse(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const a=UpgradeWarehouseCost(n,r);e.funds=t.maxProducts)throw new Error(`You are already at the max products (${t.maxProducts}) for division: ${t.name}!`);const i=new _Product__WEBPACK_IMPORTED_MODULE_7__.x({name:r.replace(/[<>]/g,"").trim(),createCity:n,designInvestment:a,advertisingInvestment:o});if(t.products.has(i.name))throw new Error("You already have a product with this name!");e.funds=e.funds-(a+o),t.products.set(i.name,i)}function Research(e,t){const n=_player__WEBPACK_IMPORTED_MODULE_1__.J5.corporation;if(!n)return;const r=_data_IndustryData__WEBPACK_IMPORTED_MODULE_3__.E5[e.type];if(void 0===r)throw new Error(`No research tree for industry '${e.type}'`);const a=_ResearchMap__WEBPACK_IMPORTED_MODULE_9__.k[t];if(!e.researched.has(t)){if(e.researchPointsn.division===e&&n.city===t));-1!==r&&n.exports.splice(r,1)}function LimitProductProduction(e,t,n){n<0||isNaN(n)?e.cityData[t].productionLimit=null:e.cityData[t].productionLimit=n}function LimitMaterialProduction(e,t){t<0||isNaN(t)?e.productionLimit=null:e.productionLimit=t}function SetMaterialMarketTA1(e,t){e.marketTa1=t}function SetMaterialMarketTA2(e,t){e.marketTa2=t}function SetProductMarketTA1(e,t){e.marketTa1=t}function SetProductMarketTA2(e,t){e.marketTa2=t}},63303:(e,t,n)=>{"use strict";n.d(t,{D:()=>b});var r=n(49173),a=n(33244),o=n(35586),i=n(61226),s=n(51326),l=n(80692),c=n(97740),u=n(20404),m=n(39463),f=n(94515),h=n(41139),d=n(7165),p=n(22115),g=n(20145),y=n(21623);class b{name="The Corporation";divisions=new d.X;maxDivisions=20*c.dQ.CorporationDivisions;funds=15e10;revenue=0;expenses=0;fundingRound=0;public=!1;totalShares=l.initialShares;numShares=l.initialShares;shareSalesUntilPriceUpdate=l.sharesPerPriceUpdate;shareSaleCooldown=0;issueNewSharesCooldown=0;dividendRate=0;dividendTax=1-c.dQ.CorporationSoftcap+.15;issuedShares=0;sharePrice=0;storedCycles=0;unlocks=new d.z;upgrades=(0,y.KW)(a.CorpUpgradeName,(e=>({level:0,value:e===a.CorpUpgradeName.DreamSense?0:1})));cycleValuation=0;valuationsList=[0];valuation=0;state=new o.Y;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.name=e.name||"The Corporation",this.seedFunded=e.seedFunded??!1}addFunds(e){isFinite(e)?this.funds+=e:console.error("Trying to add invalid amount of funds. Report to a developer.")}getState(){return this.state.getState()}storeCycles(e){this.storedCycles+=e}process(){if(this.storedCycles<0&&(this.storedCycles=0),this.storedCycles>=l.gameCyclesPerCorpStateCycle){const e=this.getState(),t=1,n=t*l.gameCyclesPerCorpStateCycle;this.storedCycles-=n;for(const t of this.divisions.values())t.resetImports(e);for(const n of this.divisions.values())n.process(t,e,this);if(this.shareSaleCooldown>0&&(this.shareSaleCooldown-=n),this.issueNewSharesCooldown>0&&(this.issueNewSharesCooldown-=n),"START"===e){this.revenue=0,this.expenses=0,this.divisions.forEach((e=>{e.lastCycleRevenue!==-1/0&&e.lastCycleRevenue!==1/0&&e.lastCycleExpenses!==-1/0&&e.lastCycleExpenses!==1/0&&(this.revenue=this.revenue+e.lastCycleRevenue,this.expenses=this.expenses+e.lastCycleExpenses)}));const e=this.revenue-this.expenses;this.cycleValuation=this.determineCycleValuation(),this.determineValuation();const n=e*(t*l.secondsPerMarketCycle);if((isNaN(this.funds)||this.funds===1/0||this.funds===-1/0)&&((0,m.X)("There was an error calculating your Corporations funds and they got reset to 0. This is a bug. Please report to game developer.\n\n(Your funds have been set to $150b for the inconvenience)"),this.funds=15e10),this.dividendRate>0&&n>0)if(isNaN(this.dividendRate)||this.dividendRate<0||this.dividendRate>l.dividendMaxRate)console.error(`Invalid Corporation dividend rate: ${this.dividendRate}`);else{const e=n-this.dividendRate*n;r.J5.gainMoney(this.getCycleDividends(),"corporation"),this.addFunds(e)}else this.addFunds(n);this.updateSharePrice()}this.state.nextState()}}getCycleDividends(){const e=(this.revenue-this.expenses)*l.secondsPerMarketCycle,t=this.dividendRate*e/this.totalShares,n=this.numShares*t;return Math.pow(n,1-this.dividendTax)}determineCycleValuation(){let e,t=this.revenue-this.expenses;return this.public?(this.dividendRate>0&&(t*=1-this.dividendRate),e=this.funds+85e3*t,e*=Math.pow(1.1,this.divisions.size),e=Math.max(e,0)):(e=1e10+Math.max(this.funds,0)/3,t>0&&(e+=315e3*t),e*=Math.pow(1.1,this.divisions.size),e-=e%1e6),e*c.dQ.CorporationValuation}determineValuation(){this.valuationsList.push(this.cycleValuation),this.valuationsList.length>l.valuationLength&&this.valuationsList.shift();let e=this.valuationsList.reduce(((e,t)=>e+t));e/=l.valuationLength,this.valuation=e}getTargetSharePrice(){return this.valuation/(2*(this.totalShares-this.numShares)+1)}updateSharePrice(){const e=this.getTargetSharePrice();this.sharePrice<=e?this.sharePrice*=1+.01*Math.random():this.sharePrice*=1-.01*Math.random(),this.sharePrice<=.01&&(this.sharePrice=.01)}immediatelyUpdateSharePrice(){this.sharePrice=this.getTargetSharePrice()}calculateMaxNewShares(){const e=Math.round(.2*this.totalShares);return e-e%1e7}calculateShareSale(e){let t=e,n=this.shareSalesUntilPriceUpdate,r=this.sharePrice,a=0,o=0,i=this.getTargetSharePrice();const s=Math.ceil(e/l.sharesPerPriceUpdate);if(isNaN(s)||s>1e7)return console.error(`Something went wrong or unexpected when calculating share sale. Max iterations calculated to be ${s}`),[0,0,0];for(let e=0;e3600?`${Math.floor(t/3600)} hour(s)`:t>60?`${Math.floor(t/60)} minute(s)`:`${Math.floor(t)} second(s)`}purchaseUnlock(e){if(this.unlocks.has(e))return`The corporation has already unlocked ${e}`;const t=i.D[e].price;if(this.funds1&&void 0!==arguments[1]?arguments[1]:1;if(!(0,g.a)(t))return`Number of upgrade levels purchased must be a positive integer (attempted: ${t}).`;const n=s.x[e],r=(0,h.g)(this,n,t);if(this.funds{"use strict";n.d(t,{Y:()=>o});var r=n(94515),a=n(80692);class o{state=0;getState(){return a.stateNames[this.state]}nextState(){this.state=(this.state+1)%a.stateNames.length}toJSON(){return(0,r.L3)("CorporationState",this)}static fromJSON(e){return(0,r.Id)(o,e.data)}}r.gY.CorporationState=o},37911:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{d:()=>Division});var _enums__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(33244),_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(94515),_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(32927),_data_Constants__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(80692),_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(92666),_utils_calculateEffectWithFactors__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(27893),_OfficeSpace__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(80741),_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(39463),_utils_helpers_string__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(22392),_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(51004),_Warehouse__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(55307),_Types_Jsonable__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(7165),_Types_Record__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(21623),_utils_helpers_getKeyList__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(89194);class Division{name="DefaultDivisionName";type=_enums__WEBPACK_IMPORTED_MODULE_0__.IndustryType.Agriculture;researchPoints=0;researched=new _Types_Jsonable__WEBPACK_IMPORTED_MODULE_8__.z;requiredMaterials={};treeInitialized=!1;producedMaterials=[];products=new _Types_Jsonable__WEBPACK_IMPORTED_MODULE_8__.X;makesProducts=!1;get maxProducts(){if(!this.makesProducts)return 0;let e=0;return this.hasResearch("uPgrade: Capacity.I")&&++e,this.hasResearch("uPgrade: Capacity.II")&&++e,_data_Constants__WEBPACK_IMPORTED_MODULE_3__.maxProductsBase+e}awareness=0;popularity=0;startingCost=0;realEstateFactor=0;researchFactor=0;hardwareFactor=0;robotFactor=0;aiCoreFactor=0;advertisingFactor=0;productionMult=0;lastCycleRevenue=0;lastCycleExpenses=0;thisCycleRevenue=0;thisCycleExpenses=0;state="START";newInd=!0;warehouses={};offices={};numAdVerts=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!e)return;this.type=e.type,this.name=e.name,this.warehouses[_enums__WEBPACK_IMPORTED_MODULE_0__.CityName.Sector12]=new _Warehouse__WEBPACK_IMPORTED_MODULE_7__.C({loc:_enums__WEBPACK_IMPORTED_MODULE_0__.CityName.Sector12,division:this,size:_data_Constants__WEBPACK_IMPORTED_MODULE_3__.warehouseInitialSize}),this.offices[_enums__WEBPACK_IMPORTED_MODULE_0__.CityName.Sector12]=new _OfficeSpace__WEBPACK_IMPORTED_MODULE_4__.Q({city:_enums__WEBPACK_IMPORTED_MODULE_0__.CityName.Sector12,size:_data_Constants__WEBPACK_IMPORTED_MODULE_3__.officeInitialSize});const t=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.vm[this.type];this.startingCost=t.startingCost,this.makesProducts=!!t.product,this.realEstateFactor=t.realEstateFactor??0,this.researchFactor=t.scienceFactor??0,this.hardwareFactor=t.hardwareFactor??0,this.robotFactor=t.robotFactor??0,this.aiCoreFactor=t.aiCoreFactor??0,this.advertisingFactor=t.advertisingFactor??0,this.requiredMaterials=t.requiredMaterials,this.producedMaterials=t.producedMaterials??[]}hasMaximumNumberProducts(){return this.products.size>=this.maxProducts}calculateProductionFactors(){let e=0;for(const t of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.R3)(this.warehouses)){const n=t.materials,r=Math.pow(.002*n["Real Estate"].stored+1,this.realEstateFactor)*Math.pow(.002*n.Hardware.stored+1,this.hardwareFactor)*Math.pow(.002*n.Robots.stored+1,this.robotFactor)*Math.pow(.002*n["AI Cores"].stored+1,this.aiCoreFactor);e+=Math.pow(r,.73)}this.productionMult=e<1?1:e}updateWarehouseSizeUsed(e){e.updateMaterialSizeUsed();for(const t of this.products.values())e.sizeUsed+=t.cityData[e.city].stored*t.size}process(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;if(this.state=t,"START"===t){(isNaN(this.thisCycleRevenue)||isNaN(this.thisCycleExpenses))&&(console.error("NaN in Corporation's computed revenue/expenses"),(0,_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_5__.X)("Something went wrong when compting Corporation's revenue/expenses. This is a bug. Please report to game developer"),this.thisCycleRevenue=0,this.thisCycleExpenses=0),this.lastCycleRevenue=this.thisCycleRevenue/(e*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle),this.lastCycleExpenses=this.thisCycleExpenses/(e*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle),this.thisCycleRevenue=0,this.thisCycleExpenses=0,this.lastCycleRevenue>0&&(this.newInd=!1);let t=0;for(const r of Object.values(_enums__WEBPACK_IMPORTED_MODULE_0__.CityName)){const a=this.offices[r];a&&(t+=a.process(e,n,this))}this.thisCycleExpenses=this.thisCycleExpenses+t,this.processMaterialMarket(),this.processProductMarket(e),this.popularity-=1e-4*e,this.popularity=Math.max(0,this.popularity);const r=n.getDreamSenseGain(),a=4*r;if(r>0){const t=this.awareness+a*e;this.awareness=Math.min(t,Number.MAX_VALUE);const n=this.popularity+r*e;this.popularity=Math.min(n,Number.MAX_VALUE)}return}let r=this.processMaterials(e,n);Array.isArray(r)&&(this.thisCycleRevenue=this.thisCycleRevenue+r[0],this.thisCycleExpenses=this.thisCycleExpenses+r[1]),r=this.processProducts(e,n),Array.isArray(r)&&(this.thisCycleRevenue=this.thisCycleRevenue+r[0],this.thisCycleExpenses=this.thisCycleExpenses+r[1])}processMaterialMarket(){const e=this.requiredMaterials,t=this.producedMaterials;for(const n of Object.values(_enums__WEBPACK_IMPORTED_MODULE_0__.CityName))if(this.warehouses[n]){const r=this.warehouses[n];for(const t of Object.keys(e))Object.hasOwn(e,t)&&r.materials[t].processMarket();for(const e of t)r.materials[e].processMarket();r.materials.Hardware.processMarket(),r.materials.Robots.processMarket(),r.materials["AI Cores"].processMarket(),r.materials["Real Estate"].processMarket()}}processProductMarket(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;for(const t of this.products.values()){let n=4e-4*(0,_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_10__.X)(0,3);0!==n&&(this.type!==_enums__WEBPACK_IMPORTED_MODULE_0__.IndustryType.Pharmaceutical&&this.type!==_enums__WEBPACK_IMPORTED_MODULE_0__.IndustryType.Software&&this.type!==_enums__WEBPACK_IMPORTED_MODULE_0__.IndustryType.Robotics||(n*=3),n*=e,t.demand-=n,t.competition+=n,t.competition=Math.min(t.competition,99.99),t.demand=Math.max(t.demand,.001))}}processMaterials(){let marketCycles=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,corporation=arguments.length>1?arguments[1]:void 0,revenue=0,expenses=0;this.calculateProductionFactors();for(const[city,office]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(this.offices)){this.researchPoints+=.004*Math.pow(office.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.RandD],.5)*corporation.getScientificResearchMult()*this.getScientificResearchMultiplier(),expenses+=office.totalSalary;const warehouse=this.warehouses[city];if(warehouse){switch(this.state){case"PURCHASE":{const e={};for(const[t,n]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(warehouse.materials)){const r=this.requiredMaterials[t];if(warehouse.smartSupplyEnabled&&r){n.buyAmount=r*warehouse.smartSupplyStore;let a=n.buyAmount*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles;const o=Math.floor((warehouse.size-warehouse.sizeUsed)/_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__.d[t].size);a=Math.min(a,o),a>0&&(e[t]=[a,r])}else{let e=0,r=0;e=n.buyAmount*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles,r=Math.floor((warehouse.size-warehouse.sizeUsed)/_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__.d[t].size),e=Math.min(e,r),e>0&&(n.quality=Math.max(.1,(n.quality*n.stored+1*e)/(n.stored+e)),n.stored+=e,expenses+=e*n.marketPrice),this.updateWarehouseSizeUsed(warehouse)}}let t=1e99;for(const[n,r]of Object.values(e)){const e=n/r;er){const t=r/n;for(const n of Object.values(e))n[0]=Math.floor(n[0]*t)}for(const[t,n]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(e)){if("none"===warehouse.smartSupplyOptions[t])continue;const e=warehouse.materials[t];"leftovers"===warehouse.smartSupplyOptions[t]?n[0]=Math.max(0,n[0]-e.stored):n[0]=Math.max(0,n[0]-e.importAmount*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles)}for(const[t,[n]]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(e)){const e=warehouse.materials[t];e.stored+n!=0?e.quality=(e.quality*e.stored+1*n)/(e.stored+n):e.quality=1,e.stored+=n,e.buyAmount=n/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),expenses+=n*e.marketPrice}break}case"PRODUCTION":if(warehouse.smartSupplyStore=0,this.producedMaterials.length>0){const e=warehouse.materials[this.producedMaterials[0]],t=this.getOfficeProductivity(office)*this.productionMult*corporation.getProductionMultiplier()*this.getProductionMultiplier();let n;n=null===e.productionLimit?t:Math.min(t,e.productionLimit),n*=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles;let r=0;for(let e=0;e0){const e=Math.floor((warehouse.size-warehouse.sizeUsed)/r);n=Math.min(e,n)}n<0&&(n=0),warehouse.smartSupplyStore+=n/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles);let a=1;for(const[e,t]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(this.requiredMaterials)){const r=t*n;warehouse.materials[e].stored0&&n>0){const e=(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(this.requiredMaterials);let t=0;const r=e.length;for(const[o,i]of e){const e=i*n*a;warehouse.materials[o].stored=Math.max(0,warehouse.materials[o].stored-e),warehouse.materials[o].productionAmount=0,warehouse.materials[o].productionAmount-=e/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),t+=warehouse.materials[o].quality/r}t=Math.max(t,1);for(let e=0;emat.marketPrice?sCost-mat.marketPrice>markupLimit&&(markup=Math.pow(markupLimit/(sCost-mat.marketPrice),2)):sCost=0?(mat.stored-=sellAmt,revenue+=sellAmt*sCost,mat.actualSellAmount=sellAmt/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles)):mat.actualSellAmount=0}break;case"EXPORT":for(const matName of Object.values(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.materialNames))if(Object.hasOwn(warehouse.materials,matName)){const mat=warehouse.materials[matName];mat.exportedLastCycle=0;for(let expI=0;expI=expWarehouse.size)){{const e=Math.floor((expWarehouse.size-expWarehouse.sizeUsed)/_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__.d[matName].size);amt=Math.min(e,amt)}amt<=0||(expWarehouse.materials[matName].importAmount+=amt/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),expWarehouse.materials[matName].quality=Math.max(.1,(expWarehouse.materials[matName].quality*expWarehouse.materials[matName].stored+amt*mat.quality)/(expWarehouse.materials[matName].stored+amt)),expWarehouse.materials[matName].stored+=amt,mat.stored-=amt,mat.exportedLastCycle+=amt,expIndustry.updateWarehouseSizeUsed(expWarehouse))}}mat.exportedLastCycle/=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles}break;case"START":break;default:console.error(`Invalid state: ${this.state}`)}this.updateWarehouseSizeUsed(warehouse)}}return[revenue,expenses]}processProducts(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0,n=0;for(const[r,a]of this.products){if(!a.finished){if("PRODUCTION"!==this.state)continue;const t=a.creationCity,n=this.offices[t];if(!n){console.error(`Product ${r} being created in a city without an office. This is a bug.`);continue}a.createProduct(e,n.employeeProductionByJob),a.developmentProgress>=100&&a.finishProduct(this);break}n+=this.processProduct(e,a,t)}return[n,0]}processProduct(){let marketCycles=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,product=arguments.length>1?arguments[1]:void 0,corporation=arguments.length>2?arguments[2]:void 0,totalProfit=0;for(const[city,office]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(this.offices)){const warehouse=this.warehouses[city];if(warehouse)switch(this.state){case"PRODUCTION":{const e=this.getOfficeProductivity(office,{forProduct:!0})*corporation.getProductionMultiplier()*this.productionMult*this.getProductionMultiplier()*this.getProductProductionMultiplier();let t;const n=product.cityData[city].productionLimit;t=null!==n?Math.min(e,n):e,t*=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles;let r=product.size;for(const[e,t]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(product.requiredMaterials))r-=_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__.d[e].size*t;if(r>0){const e=Math.floor((warehouse.size-warehouse.sizeUsed)/r);t=Math.min(e,t)}warehouse.smartSupplyStore+=t/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles);let a=1;for(const[e,n]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(product.requiredMaterials)){const r=n*t;warehouse.materials[e].stored0&&t>0){let e=1;for(const[n,r]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(product.requiredMaterials)){const o=r*t*a;warehouse.materials[n].stored-=o,warehouse.materials[n].productionAmount-=o/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),e+=warehouse.materials[n].quality}e/=Object.keys(product.requiredMaterials).length;const n=Math.min(product.rating,e*Math.pow(product.rating,.5));product.cityData[city].effectiveRating=(product.cityData[city].effectiveRating*product.cityData[city].stored+n*t*a)/(product.cityData[city].stored+t*a),product.cityData[city].stored+=t*a}product.cityData[city].productionAmount=t*a/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles);break}case"SALE":{product.productionCost=0;for(const[e,t]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(product.requiredMaterials))product.productionCost+=t*warehouse.materials[e].marketPrice;product.productionCost*=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.baseProductProfitMult;const businessFactor=this.getBusinessFactor(office),advertisingFactor=this.getAdvertisingFactors()[0],marketFactor=this.getMarketFactor(product);let sellAmt;const adjustedQty=product.cityData[city].stored/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),desiredSellAmount=product.cityData[city].desiredSellAmount;if((0,_utils_helpers_string__WEBPACK_IMPORTED_MODULE_11__.H)(desiredSellAmount)){let tmp=desiredSellAmount.replace(/MAX/g,adjustedQty.toString());tmp=tmp.replace(/PROD/g,product.cityData[city].productionAmount.toString());try{if(tmp=eval(tmp),"number"!=typeof tmp)throw""}catch(e){(0,_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_5__.X)(`Error evaluating your sell price expression for ${product.name} in ${this.name}'s ${city} office. Sell price is being set to MAX`),tmp=product.maxSellAmount}sellAmt=tmp}else sellAmt=desiredSellAmount&&desiredSellAmount>0?desiredSellAmount:adjustedQty;sellAmt<0&&(sellAmt=0);const markupLimit=Math.max(product.cityData[city].effectiveRating,.001)/product.markup;let sCost;const sellPrice=product.cityData[city].desiredSellPrice;if(product.marketTa2){const e=markupLimit,t=sellAmt,n=.5*Math.pow(product.cityData[city].effectiveRating,.65)*marketFactor*corporation.getSalesMult()*businessFactor*advertisingFactor*this.getSalesMultiplier(),r=Math.sqrt(t/n);let a;0===n||0===r?0===t?a=0:(a=product.productionCost+markupLimit,console.warn("In Corporation, found illegal 0s when trying to calculate MarketTA2 sale cost")):a=e/r+product.productionCost,sCost=a}else if(product.marketTa1)sCost=product.productionCost+markupLimit;else if((0,_utils_helpers_string__WEBPACK_IMPORTED_MODULE_11__.H)(sellPrice)){let sCostString=sellPrice;0===product.markup&&(console.error("mku is zero, reverting to 1 to avoid Infinity"),product.markup=1),sCostString=sCostString.replace(/MP/g,product.productionCost.toString()),sCost=Math.max(product.productionCost,eval(sCostString))}else sCost=sellPrice;product.uiMarketPrice[city]=sCost;let markup=1;sCost>product.productionCost&&sCost-product.productionCost>markupLimit&&(markup=markupLimit/(sCost-product.productionCost)),product.maxSellAmount=.5*Math.pow(product.cityData[city].effectiveRating,.65)*marketFactor*corporation.getSalesMult()*Math.pow(markup,2)*businessFactor*advertisingFactor*this.getSalesMultiplier(),sellAmt=Math.min(product.maxSellAmount,sellAmt),sellAmt=sellAmt*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles,sellAmt=Math.min(product.cityData[city].stored,sellAmt),sellAmt&&sCost?(product.cityData[city].stored-=sellAmt,totalProfit+=sellAmt*sCost,product.cityData[city].actualSellAmount=sellAmt/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles)):product.cityData[city].actualSellAmount=0;break}case"START":case"PURCHASE":case"EXPORT":break;default:console.error(`Invalid State: ${this.state}`)}}return totalProfit}resetImports(e){if("EXPORT"===e)for(const e of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.R3)(this.warehouses))for(const t of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.R3)(e.materials))t.importAmount=0}discontinueProduct(e){this.products.delete(e)}getAdVertCost(){return 1e9*Math.pow(1.06,this.numAdVerts)}applyAdVert(e){const t=e.getAdvertisingMultiplier()*this.getAdvertisingMultiplier(),n=(this.awareness+3*t)*(1.005*t);this.awareness=Math.min(n,Number.MAX_VALUE);const r=(this.popularity+1*t)*((1+(0,_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_10__.X)(1,3)/200)*t);this.popularity=Math.min(r,Number.MAX_VALUE),++this.numAdVerts}getOfficeProductivity(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=e.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.Operations],r=e.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.Engineer],a=e.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.Management],o=n+r+a;if(o<=0)return 0;const i=1+a/(1.2*o),s=(Math.pow(n,.4)+Math.pow(r,.3))*i;return t&&t.forProduct?.025*s:.05*s}getBusinessFactor(e){const t=1+e.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.Business];return(0,_utils_calculateEffectWithFactors__WEBPACK_IMPORTED_MODULE_12__.o)(t,.26,1e4)}getAdvertisingFactors(){const e=Math.pow(this.awareness+1,this.advertisingFactor),t=Math.pow(this.popularity+1,this.advertisingFactor),n=0===this.awareness?.01:Math.max((this.popularity+.001)/this.awareness,.01);return[Math.pow(e*t*n,.85),e,t,n]}getMarketFactor(e){return Math.max(.1,e.demand*(100-e.competition)/100)}hasResearch(e){return this.researched.has(e)}updateResearchTree(){if(this.treeInitialized)return;const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];for(const t of this.researched)e.research(t);for(const t of e.researched)this.researched.add(t);this.treeInitialized=!0}getAdvertisingMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getAdvertisingMultiplier()}getEmployeeChaMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getEmployeeChaMultiplier()}getEmployeeCreMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getEmployeeCreMultiplier()}getEmployeeEffMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getEmployeeEffMultiplier()}getEmployeeIntMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getEmployeeIntMultiplier()}getProductionMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getProductionMultiplier()}getProductProductionMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getProductProductionMultiplier()}getSalesMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getSalesMultiplier()}getScientificResearchMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getScientificResearchMultiplier()}getStorageMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getStorageMultiplier()}toJSON(){return(0,_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_1__.L3)("Division",this,Division.includedKeys)}static fromJSON(e){return(0,_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_1__.Id)(Division,e.data,Division.includedKeys)}static includedKeys=(0,_utils_helpers_getKeyList__WEBPACK_IMPORTED_MODULE_13__.i)(Division,{removedKeys:["treeInitialized"]})}_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_1__.gY.Division=Division},15905:(e,t,n)=>{"use strict";let r,a,o,i;n.d(t,{Ku:()=>s,LE:()=>l,LS:()=>r,UG:()=>i,_K:()=>a,d$:()=>m,pm:()=>o,q7:()=>u,uq:()=>c}),function(e){e.Water="Water Utilities",e.Spring="Spring Water",e.Agriculture="Agriculture",e.Fishing="Fishing",e.Mining="Mining",e.Refinery="Refinery",e.Restaurant="Restaurant",e.Tobacco="Tobacco",e.Chemical="Chemical",e.Pharmaceutical="Pharmaceutical",e.Computers="Computer Hardware",e.Robotics="Robotics",e.Software="Software",e.Healthcare="Healthcare",e.RealEstate="Real Estate"}(r||(r={})),function(e){e.Operations="Operations",e.Engineer="Engineer",e.Business="Business",e.Management="Management",e.RandD="Research & Development",e.Intern="Intern",e.Unassigned="Unassigned"}(a||(a={})),function(e){e.Export="Export",e.SmartSupply="Smart Supply",e.MarketResearchDemand="Market Research - Demand",e.MarketDataCompetition="Market Data - Competition",e.VeChain="VeChain",e.ShadyAccounting="Shady Accounting",e.GovernmentPartnership="Government Partnership",e.WarehouseAPI="Warehouse API",e.OfficeAPI="Office API"}(o||(o={})),function(e){e.SmartFactories="Smart Factories",e.SmartStorage="Smart Storage",e.DreamSense="DreamSense",e.WilsonAnalytics="Wilson Analytics",e.NuoptimalNootropicInjectorImplants="Nuoptimal Nootropic Injector Implants",e.SpeechProcessorImplants="Speech Processor Implants",e.NeuralAccelerators="Neural Accelerators",e.FocusWires="FocusWires",e.ABCSalesBots="ABC SalesBots",e.ProjectInsight="Project Insight"}(i||(i={}));const s={Water:"Water",Ore:"Ore",Minerals:"Minerals",Food:"Food",Plants:"Plants",Metal:"Metal",Hardware:"Hardware",Chemicals:"Chemicals",Drugs:"Drugs",Robots:"Robots",AiCores:"AI Cores",RealEstate:"Real Estate"},l={leftovers:"leftovers",imports:"imports",none:"none"},c={Lab:"Hi-Tech R&D Laboratory",AutoBrew:"AutoBrew",AutoParty:"AutoPartyManager",AutoDrug:"Automatic Drug Administration",CPH4Inject:"CPH4 Injections",Drones:"Drones",DronesAssembly:"Drones - Assembly",DronesTransport:"Drones - Transport",GoJuice:"Go-Juice",RecruitHR:"HRBuddy-Recruitment",TrainingHR:"HRBuddy-Training",MarketTa1:"Market-TA.I",MarketTa2:"Market-TA.II",Overclock:"Overclock",SelfCorrectAssemblers:"Self-Correcting Assemblers",Stimu:"Sti.mu"},u={Capacity1:"uPgrade: Capacity.I",Capacity2:"uPgrade: Capacity.II",Dashboard:"uPgrade: Dashboard",Fulcrum:"uPgrade: Fulcrum"},m={...u,...c}},99160:(e,t,n)=>{"use strict";n.d(t,{F:()=>i});var r=n(94515),a=n(80692),o=n(51004);class i{stored=0;quality=1;demand=0;demandRange=[0,0];competition=0;competitionRange=[0,0];maxVolatility=0;markup=0;buyAmount=0;actualSellAmount=0;productionAmount=0;importAmount=0;exports=[];exportedLastCycle=0;marketPrice=0;productionLimit=null;desiredSellAmount=0;desiredSellPrice=0;marketTa1=!1;marketTa2=!1;uiMarketPrice=0;maxSellPerCycle=0;constructor(e){this.name=(null==e?void 0:e.name)??a.materialNames[0],this.demand=o.d[this.name].demandBase,this.demandRange=o.d[this.name].demandRange,this.competition=o.d[this.name].competitionBase,this.competitionRange=o.d[this.name].competitionRange,this.marketPrice=o.d[this.name].baseCost,this.maxVolatility=o.d[this.name].maxVolatility,this.markup=o.d[this.name].baseMarkup}getMarkupLimit(){return this.quality/this.markup}processMarket(){const e=1+Math.random()*this.maxVolatility/300,t=1+Math.random()*this.maxVolatility/100;Math.random()<.5?(this.competition*=t,this.competition>this.competitionRange[1]&&(this.competition=this.competitionRange[1]),this.marketPrice*=1/e):(this.competition*=1/t,this.competitionthis.demandRange[1]&&(this.demand=this.demandRange[1]),this.marketPrice*=e):(this.demand*=1/n,this.demand{"use strict";n.d(t,{d:()=>r});const r={Water:{name:"Water",size:.05,demandBase:75,demandRange:[65,85],competitionBase:50,competitionRange:[40,60],baseCost:1500,maxVolatility:.2,baseMarkup:6},Ore:{name:"Ore",size:.01,demandBase:50,demandRange:[40,60],competitionBase:80,competitionRange:[65,95],baseCost:500,maxVolatility:.2,baseMarkup:6},Minerals:{name:"Minerals",size:.04,demandBase:75,demandRange:[90,60],competitionBase:80,competitionRange:[65,95],baseCost:500,maxVolatility:.2,baseMarkup:6},Food:{name:"Food",size:.03,demandBase:80,demandRange:[70,90],competitionBase:60,competitionRange:[35,85],baseCost:5e3,maxVolatility:1,baseMarkup:3},Plants:{name:"Plants",size:.05,demandBase:70,demandRange:[20,90],competitionBase:50,competitionRange:[30,70],baseCost:3e3,maxVolatility:.6,baseMarkup:3.75},Metal:{name:"Metal",size:.1,demandBase:80,demandRange:[75,85],competitionBase:70,competitionRange:[60,80],baseCost:2650,maxVolatility:1,baseMarkup:6},Hardware:{name:"Hardware",size:.06,demandBase:85,demandRange:[80,90],competitionBase:80,competitionRange:[65,95],baseCost:8e3,maxVolatility:.5,baseMarkup:1},Chemicals:{name:"Chemicals",size:.05,demandBase:55,demandRange:[40,70],competitionBase:60,competitionRange:[40,80],baseCost:9e3,maxVolatility:1.2,baseMarkup:2},Drugs:{name:"Drugs",size:.02,demandBase:60,demandRange:[45,75],competitionBase:70,competitionRange:[40,99],baseCost:4e4,maxVolatility:1.6,baseMarkup:1},Robots:{name:"Robots",size:.5,demandBase:90,demandRange:[80,99],competitionBase:90,competitionRange:[80,99],baseCost:75e3,maxVolatility:.5,baseMarkup:1},"AI Cores":{name:"AI Cores",size:.1,demandBase:90,demandRange:[80,99],competitionBase:90,competitionRange:[80,99],baseCost:15e3,maxVolatility:.8,baseMarkup:.5},"Real Estate":{name:"Real Estate",size:.005,demandBase:50,demandRange:[5,99],competitionBase:50,competitionRange:[25,75],baseCost:8e4,maxVolatility:1.5,baseMarkup:1.5}}},80741:(e,t,n)=>{"use strict";n.d(t,{Q:()=>l});var r=n(33244),a=n(80692),o=n(94515),i=n(92666),s=n(21623);class l{city=r.CityName.Sector12;size=1;maxEnergy=100;maxMorale=100;avgEnergy=75;avgMorale=75;avgIntelligence=75;avgCharisma=75;avgCreativity=75;avgEfficiency=75;totalExperience=0;numEmployees=0;totalSalary=0;autoTea=!1;autoParty=!1;teaPending=!1;partyMult=1;employeeProductionByJob={total:0,...(0,s.KW)(r.CorpEmployeeJob,(()=>0))};employeeJobs=(0,s.KW)(r.CorpEmployeeJob,(()=>0));employeeNextJobs=(0,s.KW)(r.CorpEmployeeJob,(()=>0));constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.city=e.city,this.size=e.size)}atCapacity(){return this.numEmployees>=this.size}process(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;n.hasResearch("HRBuddy-Recruitment")&&!this.atCapacity()&&this.hireRandomEmployee(n.hasResearch("HRBuddy-Training")?r.CorpEmployeeJob.Intern:r.CorpEmployeeJob.Unassigned);for(const[e,t]of Object.entries(this.employeeNextJobs))this.employeeJobs[e]=t;if(this.maxEnergy=100,this.maxMorale=100,n.hasResearch("Go-Juice")&&(this.maxEnergy+=10),n.hasResearch("Sti.mu")&&(this.maxMorale+=10),n.hasResearch("AutoBrew")&&(this.autoTea=!0),n.hasResearch("AutoPartyManager")&&(this.autoParty=!0),this.numEmployees>0){let r=1.002;this.numEmployees>=9&&(r=Math.pow(1+.002*Math.min(1/9,this.employeeJobs.Intern/this.numEmployees-1/9)*9-(t.funds<0&&n.lastCycleRevenue1?10*(this.partyMult-1):0;this.avgMorale=((this.avgMorale-o*Math.random())*r+e)*this.partyMult}this.avgEnergy=Math.max(Math.min(this.avgEnergy,this.maxEnergy),a.minEmployeeDecay),this.avgMorale=Math.max(Math.min(this.avgMorale,this.maxMorale),a.minEmployeeDecay),this.teaPending=!1,this.partyMult=1}return this.totalExperience+=.0015*e*(this.numEmployees-this.employeeJobs[r.CorpEmployeeJob.Unassigned]+9*this.employeeJobs[r.CorpEmployeeJob.Intern]),this.calculateEmployeeProductivity(t,n),0===this.numEmployees?this.totalSalary=0:this.totalSalary=a.employeeSalaryMultiplier*e*this.numEmployees*(this.avgIntelligence+this.avgCharisma+this.totalExperience/this.numEmployees+this.avgCreativity+this.avgEfficiency),this.totalSalary}calculateEmployeeProductivity(e,t){const n=this.avgCreativity*e.getEmployeeCreMultiplier()*t.getEmployeeCreMultiplier(),a=this.avgCharisma*e.getEmployeeChaMult()*t.getEmployeeChaMultiplier(),o=this.avgIntelligence*e.getEmployeeIntMult()*t.getEmployeeIntMultiplier(),i=this.avgEfficiency*e.getEmployeeEffMult()*t.getEmployeeEffMultiplier(),l=this.avgMorale*this.avgEnergy*1e-4;let c=0;const u=this.totalExperience/this.numEmployees||0;for(const e of(0,s.nd)(this.employeeProductionByJob)){let t=0;switch(e){case r.CorpEmployeeJob.Operations:t=.6*o+.1*a+u+.5*n+i;break;case r.CorpEmployeeJob.Engineer:t=o+.1*a+1.5*u+i;break;case r.CorpEmployeeJob.Business:t=.4*o+a+.5*u;break;case r.CorpEmployeeJob.Management:t=2*a+u+.2*n+.7*i;break;case r.CorpEmployeeJob.RandD:t=1.5*o+.8*u+n+.5*i;break;case r.CorpEmployeeJob.Unassigned:case r.CorpEmployeeJob.Intern:case"total":continue;default:console.error(`Invalid employee position: ${e}`)}this.employeeProductionByJob[e]=this.employeeJobs[e]*t*l,c+=this.employeeProductionByJob[e]}this.employeeProductionByJob.total=c}hireRandomEmployee(e){return!this.atCapacity()&&null==document.getElementById("cmpy-mgmt-hire-employee-popup")&&(++this.numEmployees,++this.employeeJobs[e],++this.employeeNextJobs[e],this.totalExperience+=(0,i.X)(50,100),this.avgMorale=(this.avgMorale*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgEnergy=(this.avgEnergy*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgIntelligence=(this.avgIntelligence*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgCharisma=(this.avgCharisma*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgCreativity=(this.avgCreativity*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgEfficiency=(this.avgEfficiency*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),!0)}autoAssignJob(e,t){if(e===r.CorpEmployeeJob.Unassigned)throw new Error("internal autoAssignJob function called with EmployeePositions.Unassigned");const n=t-this.employeeNextJobs[e];return 0===n||n<=this.employeeNextJobs[r.CorpEmployeeJob.Unassigned]&&(this.employeeNextJobs[r.CorpEmployeeJob.Unassigned]-=n,this.employeeNextJobs[e]=t,!0)}getTeaCost(){return a.teaCostPerEmployee*this.numEmployees}setTea(){return!this.teaPending&&!this.autoTea&&this.numEmployees>0&&(this.teaPending=!0,!0)}setParty(e){return e>1&&1===this.partyMult&&!this.autoParty&&this.numEmployees>0&&(this.partyMult=e,!0)}toJSON(){return(0,o.L3)("OfficeSpace",this)}static fromJSON(e){return(0,o.Id)(l,e.data)}}o.gY.OfficeSpace=l},77396:(e,t,n)=>{"use strict";n.d(t,{x:()=>c});var r=n(33244),a=n(32927),o=n(51004),i=n(94515),s=n(92666),l=n(21623);class c{name="DefaultProductName";demand=0;competition=0;markup=0;productionCost=0;finished=!1;developmentProgress=0;creationCity=r.CityName.Sector12;designInvestment=0;advertisingInvestment=0;creationJobFactors={[r.CorpEmployeeJob.Operations]:0,[r.CorpEmployeeJob.Engineer]:0,[r.CorpEmployeeJob.Business]:0,[r.CorpEmployeeJob.Management]:0,[r.CorpEmployeeJob.RandD]:0,total:0};rating=0;stats={quality:0,performance:0,durability:0,reliability:0,aesthetics:0,features:0};cityData=(0,l.KW)(r.CityName,(()=>({stored:0,productionAmount:0,actualSellAmount:0,effectiveRating:0,productionLimit:null,desiredSellAmount:0,desiredSellPrice:0})));size=0;requiredMaterials={};marketTa1=!1;marketTa2=!1;uiMarketPrice=(0,l.KW)(r.CityName,(()=>0));maxSellAmount=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.name=e.name,this.creationCity=e.createCity,this.designInvestment=e.designInvestment,this.advertisingInvestment=e.advertisingInvestment)}createProduct(e,t){if(this.finished)return;const n=t[r.CorpEmployeeJob.Operations],a=t[r.CorpEmployeeJob.Engineer],o=t[r.CorpEmployeeJob.Management],i=n+a+o;if(i<=0)return;const s=1+o/(1.2*i),c=(Math.pow(a,.34)+Math.pow(n,.2))*s,u=Math.min(.01*e*c,100-this.developmentProgress);if(!(u<=0)){this.developmentProgress+=u;for(const e of(0,l.nd)(t))this.creationJobFactors[e]+=t[e]*u/100}}finishProduct(e){this.finished=!0;const t=this.creationJobFactors.total,n=this.creationJobFactors[r.CorpEmployeeJob.Engineer]/t,a=this.creationJobFactors[r.CorpEmployeeJob.Management]/t,i=this.creationJobFactors[r.CorpEmployeeJob.RandD]/t,c=this.creationJobFactors[r.CorpEmployeeJob.Operations]/t,u=this.creationJobFactors[r.CorpEmployeeJob.Business]/t,m=(1.2*n+.9*a+1.3*i+1.5*c+u)*(1+Math.pow(this.designInvestment,.1)/100)*(1+Math.pow(e.researchPoints,e.researchFactor)/800);this.stats.quality=m*(.1*this.creationJobFactors[r.CorpEmployeeJob.Engineer]+.05*this.creationJobFactors[r.CorpEmployeeJob.Management]+.05*this.creationJobFactors[r.CorpEmployeeJob.RandD]+.02*this.creationJobFactors[r.CorpEmployeeJob.Operations]+.02*this.creationJobFactors[r.CorpEmployeeJob.Business]),this.stats.performance=m*(.15*this.creationJobFactors[r.CorpEmployeeJob.Engineer]+.02*this.creationJobFactors[r.CorpEmployeeJob.Management]+.02*this.creationJobFactors[r.CorpEmployeeJob.RandD]+.02*this.creationJobFactors[r.CorpEmployeeJob.Operations]+.02*this.creationJobFactors[r.CorpEmployeeJob.Business]),this.stats.durability=m*(.05*this.creationJobFactors[r.CorpEmployeeJob.Engineer]+.02*this.creationJobFactors[r.CorpEmployeeJob.Management]+.08*this.creationJobFactors[r.CorpEmployeeJob.RandD]+.05*this.creationJobFactors[r.CorpEmployeeJob.Operations]+.05*this.creationJobFactors[r.CorpEmployeeJob.Business]),this.stats.reliability=m*(.02*this.creationJobFactors[r.CorpEmployeeJob.Engineer]+.08*this.creationJobFactors[r.CorpEmployeeJob.Management]+.02*this.creationJobFactors[r.CorpEmployeeJob.RandD]+.05*this.creationJobFactors[r.CorpEmployeeJob.Operations]+.08*this.creationJobFactors[r.CorpEmployeeJob.Business]),this.stats.aesthetics=m*(0*this.creationJobFactors[r.CorpEmployeeJob.Engineer]+.08*this.creationJobFactors[r.CorpEmployeeJob.Management]+.05*this.creationJobFactors[r.CorpEmployeeJob.RandD]+.02*this.creationJobFactors[r.CorpEmployeeJob.Operations]+.1*this.creationJobFactors[r.CorpEmployeeJob.Business]),this.stats.features=m*(.08*this.creationJobFactors[r.CorpEmployeeJob.Engineer]+.05*this.creationJobFactors[r.CorpEmployeeJob.Management]+.02*this.creationJobFactors[r.CorpEmployeeJob.RandD]+.05*this.creationJobFactors[r.CorpEmployeeJob.Operations]+.05*this.creationJobFactors[r.CorpEmployeeJob.Business]),this.calculateRating(e);const f=1+Math.pow(this.advertisingInvestment,.1)/100,h=Math.max(u+a,1/t);this.markup=100/(f*Math.pow(this.stats.quality+.001,.65)*h),0!==this.markup&&isFinite(this.markup)||(this.markup=1),this.demand=0===e.awareness?20:Math.min(100,f*(e.popularity/e.awareness*100)),this.competition=(0,s.X)(0,70),this.size=0;for(const[t,n]of(0,l.m0)(e.requiredMaterials))this.requiredMaterials[t]=n,this.size+=o.d[t].size*n}calculateRating(e){var t;const n=null===(t=a.vm[e.type].product)||void 0===t?void 0:t.ratingWeights;if(!n)return console.error(`Could not find product rating weights for: ${e}`);this.rating=(0,l.m0)(n).reduce(((e,t)=>{let[n,r]=t;return e+this.stats[n]*r}),0)}toJSON(){return(0,i.L3)("Product",this)}static fromJSON(e){return(0,i.Id)(c,e.data)}}i.gY.Product=c},86546:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});class r{name="AutoBrew";cost=0;description="";advertisingMult=1;employeeChaMult=1;employeeCreMult=1;employeeEffMult=1;employeeIntMult=1;productionMult=1;productProductionMult=1;salesMult=1;sciResearchMult=1;storageMult=1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.name=e.name,this.cost=e.cost,this.description=e.desc,this.advertisingMult=e.advertisingMult??1,this.employeeChaMult=e.employeeChaMult??1,this.employeeCreMult=e.employeeCreMult??1,this.employeeEffMult=e.employeeEffMult??1,this.employeeIntMult=e.employeeIntMult??1,this.productionMult=e.productionMult??1,this.productProductionMult=e.productProductionMult??1,this.salesMult=e.salesMult??1,this.sciResearchMult=e.sciResearchMult??1,this.storageMult=e.storageMult??1)}}},78845:(e,t,n)=>{"use strict";n.d(t,{k:()=>a});var r=n(86546);const a={AutoBrew:new r.A({name:"AutoBrew",cost:12e3,desc:"Automatically keep your employees fully caffeinated with tea injections. This research will keep the energy of all employees at its maximum possible value, for no cost. This will also disable the Tea upgrade."}),AutoPartyManager:new r.A({name:"AutoPartyManager",cost:15e3,desc:"Automatically analyzes your employees' morale and boosts them whenever it detects a decrease. This research will keep the morale of all employees at their maximum possible values, for no cost. This will also disable the 'Throw Party' feature."}),"Automatic Drug Administration":new r.A({name:"Automatic Drug Administration",cost:1e4,desc:"Research how to automatically administer performance-enhancing drugs to all of your employees. This unlocks Drug-related Research."}),"CPH4 Injections":new r.A({name:"CPH4 Injections",cost:25e3,desc:"Develop an advanced and harmless synthetic drug that is administered to employees to increase all of their stats, except experience, by 10%.",employeeCreMult:1.1,employeeChaMult:1.1,employeeEffMult:1.1,employeeIntMult:1.1}),Drones:new r.A({name:"Drones",cost:5e3,desc:"Acquire the knowledge needed to create advanced drones. This research does nothing by itself, but unlocks other Drone-related research."}),"Drones - Assembly":new r.A({name:"Drones - Assembly",cost:25e3,desc:"Manufacture and use Assembly Drones to improve the efficiency of your production lines. This increases all production by 20%.",productionMult:1.2}),"Drones - Transport":new r.A({name:"Drones - Transport",cost:3e4,desc:"Manufacture and use intelligent Transport Drones to optimize your warehouses. This increases the storage space of all warehouses by 50%.",storageMult:1.5}),"Go-Juice":new r.A({name:"Go-Juice",cost:25e3,desc:"Provide employees with Go-Juice, a tea-derivative that further enhances the brain's dopamine production. This increases the maximum energy of all employees by 10."}),"HRBuddy-Recruitment":new r.A({name:"HRBuddy-Recruitment",cost:15e3,desc:"Use automated software to handle the hiring of employees. With this research, each office will automatically hire one employee per market cycle if there is available space."}),"HRBuddy-Training":new r.A({name:"HRBuddy-Training",cost:2e4,desc:"Use automated software to handle the training of employees. With this research, each employee hired with HRBuddy-Recruitment will automatically be assigned to 'Intern', rather than being unassigned."}),"Hi-Tech R&D Laboratory":new r.A({name:"Hi-Tech R&D Laboratory",cost:5e3,desc:"Construct a cutting-edge facility dedicated to advanced research and development. This allows you to spend Scientific Research on powerful upgrades. It also globally increases Scientific Research production by 10%.",sciResearchMult:1.1}),"Market-TA.I":new r.A({name:"Market-TA.I",cost:2e4,desc:"Develop advanced AI software that uses technical analysis to help you understand and exploit the market. This research allows you to know what price to sell your Materials/Products at in order to avoid losing sales due to having too high of a mark-up. It also lets you automatically use that sale price."}),"Market-TA.II":new r.A({name:"Market-TA.II",cost:5e4,desc:"Develop double-advanced AI software that uses technical analysis to help you understand and exploit the market. This research allows you to know how many sales of a Material/Product you lose or gain from having too high or too low of a sale price. It also lets you automatically set the sale price of your Materials/Products at the optimal price such that the amount sold matches the amount produced."}),Overclock:new r.A({name:"Overclock",cost:15e3,desc:"Equip employees with a headset that uses transcranial direct current stimulation (tDCS) to increase the speed of their neurotransmitters. This research increases the intelligence and efficiency of all employees by 25%.",employeeEffMult:1.25,employeeIntMult:1.25}),"Self-Correcting Assemblers":new r.A({name:"Self-Correcting Assemblers",cost:25e3,desc:"Create assemblers that can be used for universal production. These assemblers use deep learning to improve their efficiency at their tasks. This research increases all production by 10%.",productionMult:1.1}),"Sti.mu":new r.A({name:"Sti.mu",cost:3e4,desc:"Upgrade the tDCS headset to stimulate regions of the brain that control confidence and enthusiasm. This research increases the maximum morale of all employees by 10."}),"sudo.Assist":new r.A({name:"sudo.Assist",cost:15e3,desc:"Develop a virtual assistant AI to handle and manage administrative issues for your corporation."}),"uPgrade: Capacity.I":new r.A({name:"uPgrade: Capacity.I",cost:2e4,desc:"Expand the industry's capacity for designing and manufacturing its various products. This increases the industry's maximum number of products by 1 (from 3 to 4)."}),"uPgrade: Capacity.II":new r.A({name:"uPgrade: Capacity.II",cost:3e4,desc:"Expand the industry's capacity for designing and manufacturing its various products. This increases the industry's maximum number of products by 1 (from 4 to 5)."}),"uPgrade: Dashboard":new r.A({name:"uPgrade: Dashboard",cost:5e3,desc:"Improve the software used to manage the industry's production line for its various products. This allows you to manage the production and sale of a product before it's finished being designed."}),"uPgrade: Fulcrum":new r.A({name:"uPgrade: Fulcrum",cost:1e4,desc:"Streamline the manufacturing of this industry's various products. This research increases the production of your products by 5%.",productProductionMult:1.05})}},76412:(e,t,n)=>{"use strict";n.d(t,{F:()=>o,N:()=>a});var r=n(78845);class a{children=[];cost=0;researched=!1;parent=null;constructor(e){this.researchName=e.researchName,this.cost=e.cost,e.children&&e.children.length>0&&(this.children=e.children),null!=e.parent&&(this.parent=e.parent)}addChild(e){this.children.push(e),e.parent=this}findNode(e){if(this.researchName===e)return this;let t=null;for(let n=0;n{"use strict";n.d(t,{C:()=>u});var r=n(49173),a=n(33244),o=n(99160),i=n(51004),s=n(94515),l=n(80692),c=n(21623);class u{level=1;city=a.CityName.Sector12;materials=(0,c.cD)(l.materialNames.map((e=>[e,new o.F({name:e})])));size=0;sizeUsed=0;smartSupplyEnabled=!1;smartSupplyOptions=(0,c.cD)(l.materialNames.map((e=>[e,"leftovers"])));smartSupplyStore=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=r.J5.corporation;t&&null!==e&&(this.city=e.loc,this.size=e.size,this.updateSize(t,e.division),t.unlocks.has(a.CorpUnlockName.SmartSupply)&&(this.smartSupplyEnabled=!0))}updateMaterialSizeUsed(){this.sizeUsed=0;for(const[e,t]of(0,c.m0)(this.materials))this.sizeUsed+=t.stored*i.d[e].size;this.sizeUsed>this.size&&console.warn("Warehouse size used greater than capacity, something went wrong")}updateSize(e,t){this.size=100*this.level*e.getStorageMultiplier()*t.getStorageMultiplier()}toJSON(){return(0,s.L3)("Warehouse",this)}static fromJSON(e){return(0,s.Id)(u,e.data)}}s.gY.Warehouse=u},52242:(e,t,n)=>{"use strict";n.d(t,{M:()=>l,a:()=>s});var r=n(78845),a=n(76412);function o(e){const t=r.k[e];return new a.N({researchName:t.name,cost:t.cost})}function i(){const e=o("Hi-Tech R&D Laboratory"),t=o("AutoBrew"),n=o("AutoPartyManager"),r=o("Automatic Drug Administration"),a=o("CPH4 Injections"),i=o("Drones"),s=o("Drones - Assembly"),l=o("Drones - Transport"),c=o("Go-Juice"),u=o("HRBuddy-Recruitment"),m=o("HRBuddy-Training"),f=o("Market-TA.I"),h=o("Market-TA.II"),d=o("Overclock"),p=o("Self-Correcting Assemblers"),g=o("Sti.mu");return r.addChild(c),r.addChild(a),i.addChild(s),i.addChild(l),u.addChild(m),f.addChild(h),d.addChild(g),e.addChild(t),e.addChild(n),e.addChild(r),e.addChild(i),e.addChild(u),e.addChild(f),e.addChild(d),e.addChild(p),e}function s(){const e=new a.F;return e.setRoot(i()),e}function l(){const e=new a.F,t=i(),n=o("uPgrade: Fulcrum"),r=o("uPgrade: Capacity.I"),s=o("uPgrade: Capacity.II"),l=o("uPgrade: Dashboard");return r.addChild(s),n.addChild(r),n.addChild(l),t.addChild(n),e.setRoot(t),e}},80692:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PurchaseMultipliers:()=>J,baseProductProfitMult:()=>L,bribeAmountPerReputation:()=>T,bribeThreshold:()=>A,dividendMaxRate:()=>R,employeePositions:()=>i,employeeRaiseAmount:()=>I,employeeSalaryMultiplier:()=>F,fundingRoundMultiplier:()=>O,fundingRoundShares:()=>B,gameCyclesPerCorpStateCycle:()=>k,gameCyclesPerMarketCycle:()=>v,industryNames:()=>s,initialShares:()=>d,issueNewSharesCooldown:()=>g,marketCyclesPerEmployeeRaise:()=>_,materialNames:()=>l,maxProductsBase:()=>P,minEmployeeDecay:()=>Z,officeInitialCost:()=>x,officeInitialSize:()=>N,officeSizeUpgradeCostBase:()=>M,researchNames:()=>h,researchNamesBase:()=>m,researchNamesProductOnly:()=>f,secondsPerMarketCycle:()=>w,sellSharesCooldown:()=>y,sharesPerPriceUpdate:()=>p,smartSupplyOptions:()=>G,stateNames:()=>o,teaCostPerEmployee:()=>b,unlockNames:()=>c,upgradeNames:()=>u,valuationLength:()=>D,warehouseInitialCost:()=>E,warehouseInitialSize:()=>S,warehouseSizeUpgradeCostBase:()=>C});var r=n(72938),a=n(33244);const o=["START","PURCHASE","PRODUCTION","EXPORT","SALE"],i=Object.values(a.CorpEmployeeJob),s=Object.values(a.IndustryType),l=Object.values(a.CorpMaterialName),c=Object.values(a.CorpUnlockName),u=Object.values(a.CorpUpgradeName),m=Object.values(a.CorpBaseResearchName),f=Object.values(a.CorpProductResearchName),h=[...m,...f],d=1e9,p=1e6,g=216e3,y=18e3,b=5e5,v=50,k=v/o.length,w=v*r.t.MilliPerCycle/1e3,E=5e9,S=100,C=1e9,x=4e9,N=3,M=1e9,A=1e14,T=1e9,L=5,R=1,F=3,_=400,I=50,P=3,B=[.1,.35,.25,.2],O=[3,2,2,1.5],D=10,Z=10,G=Object.values(a.SmartSupplyOption),J={x1:1,x5:5,x10:10,x50:50,x100:100,MAX:"MAX"}},61226:(e,t,n)=>{"use strict";n.d(t,{D:()=>a});var r=n(33244);const a={[r.CorpUnlockName.Export]:{name:r.CorpUnlockName.Export,price:2e10,desc:"Develop infrastructure to export your materials to your other facilities. This allows you to move materials around between different divisions and cities."},[r.CorpUnlockName.SmartSupply]:{name:r.CorpUnlockName.SmartSupply,price:25e9,desc:"Use advanced AI to anticipate your supply needs. This allows you to purchase exactly however many materials you need for production."},[r.CorpUnlockName.MarketResearchDemand]:{name:r.CorpUnlockName.MarketResearchDemand,price:5e9,desc:"Mine and analyze market data to determine the demand of all resources. The demand attribute, which affects sales, will be displayed for every material and product."},[r.CorpUnlockName.MarketDataCompetition]:{name:r.CorpUnlockName.MarketDataCompetition,price:5e9,desc:"Mine and analyze market data to determine how much competition there is on the market for all resources. The competition attribute, which affects sales, will be displayed for every material and product."},[r.CorpUnlockName.VeChain]:{name:r.CorpUnlockName.VeChain,price:1e10,desc:"Use AI and blockchain technology to identify where you can improve your supply chain systems. This upgrade will allow you to view a wide array of useful statistics about your Corporation."},[r.CorpUnlockName.ShadyAccounting]:{name:r.CorpUnlockName.ShadyAccounting,price:5e14,desc:"Utilize unscrupulous accounting practices and pay off government officials to save money on taxes. This reduces the dividend tax rate by 5%."},[r.CorpUnlockName.GovernmentPartnership]:{name:r.CorpUnlockName.GovernmentPartnership,price:2e15,desc:"Help national governments further their agendas in exchange for lowered taxes. This reduces the dividend tax rate by 10%"},[r.CorpUnlockName.WarehouseAPI]:{name:r.CorpUnlockName.WarehouseAPI,price:5e10,desc:"Enables the warehouse API."},[r.CorpUnlockName.OfficeAPI]:{name:r.CorpUnlockName.OfficeAPI,price:5e10,desc:"Enables the office API."}}},51326:(e,t,n)=>{"use strict";n.d(t,{x:()=>a});var r=n(33244);const a={[r.CorpUpgradeName.SmartFactories]:{name:r.CorpUpgradeName.SmartFactories,basePrice:2e9,priceMult:1.06,benefit:.03,desc:"Advanced AI automatically optimizes the operation and productivity of factories. Each level of this upgrade increases your global production by 3% (additive)."},[r.CorpUpgradeName.SmartStorage]:{name:r.CorpUpgradeName.SmartStorage,basePrice:2e9,priceMult:1.06,benefit:.1,desc:"Advanced AI automatically optimizes your warehouse storage methods. Each level of this upgrade increases your global warehouse storage size by 10% (additive)."},[r.CorpUpgradeName.DreamSense]:{name:r.CorpUpgradeName.DreamSense,basePrice:4e9,priceMult:1.1,benefit:.001,desc:"Use DreamSense LCC Technologies to advertise your corporation to consumers through their dreams. Each level of this upgrade provides a passive increase in awareness of all of your companies (divisions) by 0.004 / market cycle,and in popularity by 0.001 / market cycle. A market cycle is approximately 10 seconds."},[r.CorpUpgradeName.WilsonAnalytics]:{name:r.CorpUpgradeName.WilsonAnalytics,basePrice:4e9,priceMult:2,benefit:.005,desc:"Purchase data and analysis from Wilson, a marketing research firm. Each level of this upgrade increases the effectiveness of your advertising by 0.5% (additive)."},[r.CorpUpgradeName.NuoptimalNootropicInjectorImplants]:{name:r.CorpUpgradeName.NuoptimalNootropicInjectorImplants,basePrice:1e9,priceMult:1.06,benefit:.1,desc:"Purchase the Nuoptimal Nootropic Injector augmentation for your employees. Each level of this upgrade globally increases the creativity of your employees by 10% (additive)."},[r.CorpUpgradeName.SpeechProcessorImplants]:{name:r.CorpUpgradeName.SpeechProcessorImplants,basePrice:1e9,priceMult:1.06,benefit:.1,desc:"Purchase the Speech Processor augmentation for your employees. Each level of this upgrade globally increases the charisma of your employees by 10% (additive)."},[r.CorpUpgradeName.NeuralAccelerators]:{name:r.CorpUpgradeName.NeuralAccelerators,basePrice:1e9,priceMult:1.06,benefit:.1,desc:"Purchase the Neural Accelerator augmentation for your employees. Each level of this upgrade globally increases the intelligence of your employees by 10% (additive)."},[r.CorpUpgradeName.FocusWires]:{name:r.CorpUpgradeName.FocusWires,basePrice:1e9,priceMult:1.06,benefit:.1,desc:"Purchase the FocusWire augmentation for your employees. Each level of this upgrade globally increases the efficiency of your employees by 10% (additive)."},[r.CorpUpgradeName.ABCSalesBots]:{name:r.CorpUpgradeName.ABCSalesBots,basePrice:1e9,priceMult:1.07,benefit:.01,desc:"Always Be Closing. Purchase these robotic salesmen to increase the amount of materials and products you sell. Each level of this upgrade globally increases your sales by 1% (additive)."},[r.CorpUpgradeName.ProjectInsight]:{name:r.CorpUpgradeName.ProjectInsight,basePrice:5e9,priceMult:1.07,benefit:.05,desc:"Purchase 'Project Insight', a R&D service provided by the secretive Fulcrum Technologies. Each level of this upgrade globally increases the amount of Scientific Research you produce by 5% (additive)."}}},32927:(e,t,n)=>{"use strict";n.d(t,{E5:()=>s,s8:()=>l,vm:()=>i});var r=n(21623),a=n(33244),o=n(52242);const i={[a.IndustryType.Agriculture]:{startingCost:4e10,description:"Cultivate crops and breed livestock to produce food.",recommendStarting:!0,realEstateFactor:.72,scienceFactor:.5,hardwareFactor:.2,robotFactor:.3,aiCoreFactor:.3,advertisingFactor:.04,requiredMaterials:{Water:.5,Chemicals:.2},producedMaterials:["Plants","Food"]},[a.IndustryType.Spring]:{startingCost:1e10,description:"Gather water through passive means.",recommendStarting:!1,realEstateFactor:.2,scienceFactor:.1,hardwareFactor:0,robotFactor:0,aiCoreFactor:.1,advertisingFactor:.03,requiredMaterials:{},producedMaterials:["Water"]},[a.IndustryType.Refinery]:{startingCost:5e10,description:"Refine ore into usable metal.",recommendStarting:!0,realEstateFactor:.3,scienceFactor:.5,hardwareFactor:.5,robotFactor:.4,aiCoreFactor:.3,advertisingFactor:.04,requiredMaterials:{Ore:1},producedMaterials:["Metal"]},[a.IndustryType.Chemical]:{startingCost:7e10,description:"Produce industrial chemicals.",recommendStarting:!1,realEstateFactor:.25,scienceFactor:.75,hardwareFactor:.2,robotFactor:.25,aiCoreFactor:.2,advertisingFactor:.07,requiredMaterials:{Plants:1,Water:.5},producedMaterials:["Chemicals"]},[a.IndustryType.Computers]:{startingCost:5e11,description:"Develop and manufacture new computer hardware and networking infrastructures.",product:{name:"Product",verb:"Create",desc:"Design and manufacture a new computer hardware product!",ratingWeights:{quality:.15,performance:.25,durability:.25,reliability:.2,aesthetics:.05,features:.1}},recommendStarting:!1,realEstateFactor:.2,scienceFactor:.62,robotFactor:.36,aiCoreFactor:.19,advertisingFactor:.17,requiredMaterials:{Metal:2},producedMaterials:["Hardware"]},[a.IndustryType.Fishing]:{startingCost:8e10,description:"Produce food through the breeding and processing of fish and fish products.",recommendStarting:!1,realEstateFactor:.15,scienceFactor:.35,hardwareFactor:.35,robotFactor:.5,aiCoreFactor:.2,advertisingFactor:.08,requiredMaterials:{Plants:.5},producedMaterials:["Food"]},[a.IndustryType.Restaurant]:{startingCost:1e10,description:"Create your own restaurants all around the world.",product:{name:"Restaurant",verb:"Build",desc:"Build and manage a new restaurant!",ratingWeights:{quality:.7,durability:.1,aesthetics:.2}},recommendStarting:!0,scienceFactor:.12,hardwareFactor:.15,robotFactor:.3,aiCoreFactor:.25,advertisingFactor:.25,realEstateFactor:.05,requiredMaterials:{Food:.5,Water:.5}},[a.IndustryType.Healthcare]:{startingCost:75e10,description:"Create and manage hospitals.",product:{name:"Hospital",verb:"Build",desc:"Build and manage a new hospital!",ratingWeights:{quality:.4,performance:.1,durability:.1,reliability:.3,features:.1}},recommendStarting:!1,realEstateFactor:.1,scienceFactor:.75,advertisingFactor:.11,hardwareFactor:.1,robotFactor:.1,aiCoreFactor:.1,requiredMaterials:{Robots:10,"AI Cores":5,Drugs:5,Food:5}},[a.IndustryType.Mining]:{startingCost:3e11,description:"Extract and process metals from the earth.",recommendStarting:!1,realEstateFactor:.3,scienceFactor:.26,hardwareFactor:.4,robotFactor:.45,aiCoreFactor:.45,advertisingFactor:.06,requiredMaterials:{Hardware:.1},producedMaterials:["Ore","Minerals"]},[a.IndustryType.Pharmaceutical]:{startingCost:2e11,description:"Discover, develop, and create new pharmaceutical drugs.",product:{name:"Drug",verb:"Develop",desc:"Design and develop a new pharmaceutical drug!",ratingWeights:{quality:.2,performance:.2,durability:.1,reliability:.3,features:.2}},recommendStarting:!1,realEstateFactor:.05,scienceFactor:.8,hardwareFactor:.15,robotFactor:.25,aiCoreFactor:.2,advertisingFactor:.16,requiredMaterials:{Chemicals:2,Water:.5},producedMaterials:["Drugs"]},[a.IndustryType.RealEstate]:{startingCost:6e11,description:"Develop and manage real estate properties.",product:{name:"Property",verb:"Develop",desc:"Develop a new piece of real estate property!",ratingWeights:{quality:.2,durability:.25,reliability:.1,aesthetics:.35,features:.1}},recommendStarting:!1,robotFactor:.6,aiCoreFactor:.6,advertisingFactor:.25,scienceFactor:.05,hardwareFactor:.05,requiredMaterials:{Metal:5,Plants:1,Water:2,Hardware:4},producedMaterials:["Real Estate"]},[a.IndustryType.Robotics]:{startingCost:1e12,description:"Develop and create robots.",product:{name:"Robot",verb:"Design",desc:"Design and create a new robot or robotic system!",ratingWeights:{quality:.1,performance:.2,durability:.2,reliability:.2,aesthetics:.1,features:.2}},recommendStarting:!1,realEstateFactor:.32,scienceFactor:.65,aiCoreFactor:.36,advertisingFactor:.18,hardwareFactor:.19,requiredMaterials:{Hardware:5,"AI Cores":3},producedMaterials:["Robots"]},[a.IndustryType.Software]:{startingCost:25e9,description:"Develop computer software and create AI Cores.",product:{name:"Software",verb:"Develop",desc:"Develop a new piece of software!",ratingWeights:{quality:.2,performance:.2,reliability:.2,durability:.2,features:.2}},recommendStarting:!1,scienceFactor:.62,advertisingFactor:.16,hardwareFactor:.25,realEstateFactor:.15,aiCoreFactor:.18,robotFactor:.05,requiredMaterials:{Hardware:.5},producedMaterials:["AI Cores"]},[a.IndustryType.Tobacco]:{startingCost:2e10,description:"Create and distribute tobacco and tobacco-related products.",product:{name:"Product",verb:"Create",desc:"Create a new tobacco product!",ratingWeights:{quality:.7,durability:.1,aesthetics:.2}},recommendStarting:!0,realEstateFactor:.15,scienceFactor:.75,hardwareFactor:.15,robotFactor:.2,aiCoreFactor:.15,advertisingFactor:.2,requiredMaterials:{Plants:1}},[a.IndustryType.Water]:{startingCost:15e10,description:"Distribute water and provide wastewater services.",recommendStarting:!1,realEstateFactor:.5,scienceFactor:.6,robotFactor:.4,aiCoreFactor:.4,advertisingFactor:.08,requiredMaterials:{Hardware:.1},producedMaterials:["Water"]}},s=(0,r.cD)(Object.values(a.IndustryType).map((e=>[e,i[e].product?(0,o.M)():(0,o.a)()])));function l(){Object.values(a.IndustryType).forEach((e=>s[e]=i[e].product?(0,o.M)():(0,o.a)()))}},41139:(e,t,n)=>{"use strict";function r(e,t,n){const r=t.priceMult,a=e.upgrades[t.name].level;return t.basePrice*Math.pow(r,a)*(1-Math.pow(r,n))/(1-r)}function a(e,t){const n=e.upgrades[t.name].level,r=t.priceMult,a=t.basePrice,o=Math.floor(Math.log(1-e.funds/a/Math.pow(r,n)*(1-r))/Math.log(r));return o>=0?o:0}n.d(t,{g:()=>r,o:()=>a})},11606:(e,t,n)=>{"use strict";n.d(t,{K:()=>m});var r=n(67294),a=n(94004),o=n(30527),i=n(33244),s=n(33987),l=n(53978),c=n(98360),u=n(21623);function m(e){const t=(0,c.pZ)(),[n,m]=(0,r.useState)(e.city);let f;if("Expand"===n)f=r.createElement(l.d,{cityStateSetter:m});else{const a=t.offices[n];if(!a)return m(i.CityName.Sector12),r.createElement(r.Fragment,null);f=r.createElement(s.d,{rerender:e.rerender,city:n,warehouse:t.warehouses[n],office:a})}const h=Object.values(i.CityName).length>(0,u.nd)(t.offices).length;return r.createElement(r.Fragment,null,r.createElement(a.Z,{variant:"fullWidth",value:n,onChange:function(e,t){m(t)},sx:{maxWidth:"65vw"}},Object.values(t.offices).map((e=>0!==e&&r.createElement(o.Z,{key:e.city,label:e.city,value:e.city}))),h&&r.createElement(o.Z,{label:"Expand",value:"Expand"})),f)}},98360:(e,t,n)=>{"use strict";n.d(t,{_y:()=>a,pZ:()=>i,wZ:()=>o});var r=n(67294);const a={Corporation:r.createContext({}),Division:r.createContext({})},o=()=>(0,r.useContext)(a.Corporation),i=()=>(0,r.useContext)(a.Division)},31635:(e,t,n)=>{"use strict";n.d(t,{n:()=>f});var r=n(67294),a=n(59686),o=n(37037),i=n(49173),s=n(98360),l=n(89363),c=n(94004),u=n(30527),m=n(88775);function f(){const e=(0,m.S)(200),[t,n]=(0,r.useState)("Overview"),f=i.J5.corporation;if(null===f)return r.createElement(r.Fragment,null);const h=f.divisions.sizer.createElement(u.Z,{key:e.name,label:e.name,value:e.name}))),h&&r.createElement(u.Z,{label:"Expand",value:-1})),"Overview"===t&&r.createElement(l.g,{rerender:e}),-1===t&&r.createElement(o.I,{setDivisionName:n}),"string"==typeof t&&"Overview"!==t&&r.createElement(a.p,{rerender:e,divisionName:t+""}))}},33987:(e,t,n)=>{"use strict";n.d(t,{d:()=>c});var r=n(67294),a=n(30120),o=n(22416),i=n(82750),s=n(86520),l=n(98360);function c(e){const t=(0,l.wZ)(),n=(0,l.pZ)();return r.createElement(a.Z,{display:"flex"},r.createElement(a.Z,{sx:{width:"50%"}},r.createElement(i.o,{rerender:e.rerender}),r.createElement(o.e,{rerender:e.rerender,office:e.office})),r.createElement(a.Z,{sx:{width:"50%"}},r.createElement(s.C,{rerender:e.rerender,corp:t,currentCity:e.city,division:n,warehouse:e.warehouse})))}},22416:(e,t,n)=>{"use strict";n.d(t,{e:()=>A});var r=n(67294),a=n(33244),o=n(33563),i=n(47616),s=n(22115),l=n(67662),c=n(19575),u=n(72360),m=n(98360),f=n(81138),h=n(37150),d=n(92557),p=n(28881),g=n(93619),y=n(29217),b=n(45111),v=n(17575),k=n(47542),w=n(46948),E=n(49557),S=n(61011),C=n(30120);function x(e){return r.createElement(f.Z,{display:"flex",alignItems:"center",justifyContent:"flex-end"},e.num===e.next?null:e.num,e.num===e.next?null:r.createElement(g.Z,{fontSize:"inherit"}),e.next)}function N(e){const t=e.office.employeeJobs[e.job],n=e.office.employeeNextJobs[e.job],o=e.office.employeeNextJobs[a.CorpEmployeeJob.Unassigned];return r.createElement(E.Z,null,r.createElement(S.p,null,r.createElement(v.Z,{title:e.desc},r.createElement(f.Z,null,e.job))),r.createElement(S.p,null,r.createElement(x,{num:t,next:n})),r.createElement(S.p,{width:"1px"},r.createElement(d.Z,{disabled:0===o,onClick:function(){if(o<=0)return console.warn("Cannot assign employee. No unassigned employees available");e.office.autoAssignJob(e.job,n+1),e.rerender()}},r.createElement(y.Z,null))),r.createElement(S.p,{width:"1px"},r.createElement(d.Z,{disabled:0===n,onClick:function(){e.office.autoAssignJob(e.job,n-1),e.rerender()}},r.createElement(b.Z,null))))}function M(e){const t=(0,m.wZ)(),n=(0,m.pZ)(),o=e.office.employeeJobs[a.CorpEmployeeJob.Unassigned],i=e.office.employeeNextJobs[a.CorpEmployeeJob.Unassigned];return r.createElement(k.Z,{padding:"none"},r.createElement(w.Z,null,r.createElement(E.Z,null,r.createElement(S.p,null,r.createElement(f.Z,null,"Unassigned Employees:")),r.createElement(S.p,null,r.createElement(x,{num:o,next:i}))),r.createElement(E.Z,null,r.createElement(S.p,null,r.createElement(f.Z,null,"Avg Employee Morale:")),r.createElement(S.p,{align:"right"},r.createElement(f.Z,null,(0,s.jj)(e.office.avgMorale)))),r.createElement(E.Z,null,r.createElement(S.p,null,r.createElement(f.Z,null,"Avg Employee Energy:")),r.createElement(S.p,{align:"right"},r.createElement(f.Z,null,(0,s.jj)(e.office.avgEnergy)))),r.createElement(E.Z,null,r.createElement(S.p,null,r.createElement(f.Z,null,"Avg Employee Experience:")),r.createElement(S.p,{align:"right"},r.createElement(f.Z,null,(0,s.jj)(e.office.totalExperience/e.office.numEmployees||0)))),r.createElement(E.Z,null,r.createElement(S.p,null,r.createElement(f.Z,null,"Total Employee Salary:")),r.createElement(S.p,null,r.createElement(f.Z,{align:"right"},r.createElement(u.W,{money:e.office.totalSalary})))),t.unlocks.has(a.CorpUnlockName.VeChain)&&r.createElement(r.Fragment,null,r.createElement(E.Z,null,r.createElement(S.p,null,r.createElement(v.Z,{title:r.createElement(f.Z,null,"The base amount of material this office can produce. Does not include production multipliers from upgrades and materials. This value is based off the productivity of your Operations, Engineering, and Management employees")},r.createElement(f.Z,null,"Material Production:"))),r.createElement(S.p,null,r.createElement(f.Z,{align:"right"},(0,s.jj)(n.getOfficeProductivity(e.office))))),r.createElement(E.Z,null,r.createElement(S.p,null,r.createElement(v.Z,{title:r.createElement(f.Z,null,"The base amount of any given Product this office can produce. Does not include production multipliers from upgrades and materials. This value is based off the productivity of your Operations, Engineering, and Management employees")},r.createElement(f.Z,null,"Product Production:"))),r.createElement(S.p,null,r.createElement(f.Z,{align:"right"},(0,s.jj)(n.getOfficeProductivity(e.office,{forProduct:!0}))))),r.createElement(E.Z,null,r.createElement(S.p,null,r.createElement(v.Z,{title:r.createElement(f.Z,null,"The effect this office's 'Business' employees has on boosting sales")},r.createElement(f.Z,null," Business Multiplier:"))),r.createElement(S.p,{align:"right"},r.createElement(f.Z,null,"x",(0,s.jj)(n.getBusinessFactor(e.office)))))),r.createElement(N,{rerender:e.rerender,office:e.office,job:a.CorpEmployeeJob.Operations,desc:"Manages supply chain operations. Improves the amount of Materials and Products you produce."}),r.createElement(N,{rerender:e.rerender,office:e.office,job:a.CorpEmployeeJob.Engineer,desc:"Develops and maintains products and production systems. Increases the quality of everything you produce. Also increases the amount you produce (not as much as Operations, however)."}),r.createElement(N,{rerender:e.rerender,office:e.office,job:a.CorpEmployeeJob.Business,desc:"Handles sales and finances. Improves the amount of Materials and Products you can sell."}),r.createElement(N,{rerender:e.rerender,office:e.office,job:a.CorpEmployeeJob.Management,desc:"Leads and oversees employees and office operations. Improves the effectiveness of Engineer and Operations employees."}),r.createElement(N,{rerender:e.rerender,office:e.office,job:a.CorpEmployeeJob.RandD,desc:"Research new innovative ways to improve the company. Generates Scientific Research. Also increases the quality of everything you produce (not as much as Engineer, however)."}),r.createElement(N,{rerender:e.rerender,office:e.office,job:a.CorpEmployeeJob.Intern,desc:"Set employee to intern, which will increase some of their stats. Employees in intern do not affect any company operations, but gain increased exp and improve morale and energy."})))}function A(e){const t=(0,m.wZ)(),n=(0,m.pZ)(),[s,u]=(0,r.useState)(!1),[d,g]=(0,r.useState)(!1),y=e.office.atCapacity()?"Insufficient office space":"",b=t.funds1,k=t.funds<0?"Insufficient corporation funds":v?"A party is already pending for this cycle":"";return r.createElement(p.Z,null,r.createElement(f.Z,null,"Office Space"),r.createElement(f.Z,null,"Size: ",e.office.numEmployees," / ",e.office.size," employees"),r.createElement(C.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",width:"fit-content"}},r.createElement(C.Z,{sx:{gridTemplateColumns:"repeat(3, 1fr)"}},r.createElement(h.g,{disabledTooltip:y,onClick:function(){e.office.atCapacity()||(e.office.hireRandomEmployee(a.CorpEmployeeJob.Unassigned),e.rerender())}},"Hire Employee"),r.createElement(h.g,{normalTooltip:"Upgrade the office's size so that it can hold more employees!",onClick:()=>u(!0)},"Upgrade size"),r.createElement(l.j,{rerender:e.rerender,office:e.office,open:s,onClose:()=>u(!1)}),!n.hasResearch("AutoBrew")&&r.createElement(h.g,{normalTooltip:"Provide your employees with tea to increase their energy",disabledTooltip:b,onClick:()=>(0,o.bY)(t,e.office)},e.office.teaPending?"Buying Tea":r.createElement(r.Fragment,null,"Buy Tea - ",r.createElement(i.d,{money:e.office.getTeaCost(),corp:t}))),!n.hasResearch("AutoPartyManager")&&r.createElement(r.Fragment,null,r.createElement(h.g,{normalTooltip:"Throw an office party to increase your employees' morale",disabledTooltip:k,onClick:()=>g(!0)},e.office.partyMult>1?"Throwing Party...":"Throw Party"),r.createElement(c.H,{rerender:e.rerender,office:e.office,open:d,onClose:()=>g(!1)})))),r.createElement(M,{rerender:e.rerender,office:e.office}))}},82750:(e,t,n)=>{"use strict";n.d(t,{o:()=>x});var r=n(67294),a=n(33244),o=n(33563),i=n(22115),s=n(93826),l=n(93916),c=n(84212),u=n(72360),m=n(85882),f=n(97534),h=n(6248),d=n(47616),p=n(98360),g=n(81138),y=n(56798),b=n(37150),v=n(17575),k=n(28881),w=n(92557),E=n(9944),S=n(30120);function C(){const e=(0,p.wZ)(),t=(0,p.pZ)(),[n,o]=(0,r.useState)(!1),i=t.hasMaximumNumberProducts();let s="";switch(t.type){case a.IndustryType.Restaurant:s="Build Restaurant";break;case a.IndustryType.Tobacco:s="Create Product";break;case a.IndustryType.Pharmaceutical:s="Create Drug";break;case a.IndustryType.Computers:s="Create Product";break;case a.IndustryType.Robotics:s="Design Robot";break;case a.IndustryType.Software:s="Develop Software";break;case a.IndustryType.Healthcare:s="Build Hospital";break;case a.IndustryType.RealEstate:s="Develop Property";break;default:return s="Create Product",r.createElement(r.Fragment,null)}const c=i?`${t.name} already has the maximum number of products (${t.maxProducts})`:e.funds<0?"Insufficient corporation funds":"";return r.createElement(r.Fragment,null,r.createElement(b.g,{disabledTooltip:c,onClick:function(){i||o(!0)},buttonProps:{color:0===t.products.size?"error":"primary"}},s),r.createElement(l.R,{open:n,onClose:()=>o(!1)}))}function x(e){const t=(0,p.wZ)(),n=(0,p.pZ)(),[l,x]=(0,r.useState)(!1),[N,M]=(0,r.useState)(!1),A=n.lastCycleRevenue-n.lastCycleExpenses;let T=!1;const L=n.getAdvertisingFactors(),R=L[1],F=L[2],_=L[3],I=L[0];function P(e){return(0,s.x)({progress:e,totalTicks:20})}return t.unlocks.has(a.CorpUnlockName.VeChain)&&(T=!0),r.createElement(k.Z,null,r.createElement(g.Z,null,"Industry: ",n.type," (Corp Funds: ",r.createElement(u.W,{money:t.funds}),")"),r.createElement("br",null),r.createElement(f.C,{rows:[["Awareness:",(0,i.dp)(n.awareness)],["Popularity:",(0,i.dp)(n.popularity)]]}),T&&r.createElement(v.Z,{title:r.createElement(r.Fragment,null,r.createElement(g.Z,null,"Total multiplier for this industry's sales due to its awareness and popularity"),r.createElement(f.C,{rows:[["Awareness Bonus:","x"+(0,i.dp)(Math.pow(R,.85))],["Popularity Bonus:","x"+(0,i.dp)(Math.pow(F,.85))],["Ratio Multiplier:","x"+(0,i.dp)(Math.pow(_,.85))]]}))},r.createElement(g.Z,null,"Advertising Multiplier: x",(0,i.dp)(I))),r.createElement("br",null),r.createElement(f.C,{rows:[["Revenue:",r.createElement(m.G,{key:"revenue",money:n.lastCycleRevenue})],["Expenses:",r.createElement(m.G,{key:"expenses",money:n.lastCycleExpenses})],["Profit:",r.createElement(m.G,{key:"profit",money:A})]]}),r.createElement("br",null),r.createElement(S.Z,{display:"flex",alignItems:"center"},r.createElement(v.Z,{title:r.createElement(r.Fragment,null,"Production gain from owning production-boosting materials such as hardware, Robots, AI Cores, and Real Estate.")},r.createElement(g.Z,null,"Production Multiplier: ",(0,i.dp)(n.productionMult))),r.createElement(w.Z,{onClick:()=>x(!0)},r.createElement(E.Z,null)),r.createElement(h.t,{open:l,onClose:()=>x(!1)},r.createElement(g.Z,null,"Owning Hardware, Robots, AI Cores, and Real Estate can boost your Industry's production. The effect these materials have on your production varies between Industries. For example, Real Estate may be very effective for some Industries, but ineffective for others.",r.createElement("br",null),r.createElement("br",null),"This division's production multiplier is calculated by summing the individual production multiplier of each of its office locations. This production multiplier is applied to each office. Therefore, it is beneficial to expand into new cities as this can greatly increase the production multiplier of your entire Division.",r.createElement("br",null),r.createElement("br",null),"Below are approximations for how effective each material is at boosting this industry's production multiplier (Bigger bars = more effective):",r.createElement("br",null),r.createElement("br",null),"Hardware:    ",P(n.hardwareFactor),r.createElement("br",null),"Robots:      ",P(n.robotFactor),r.createElement("br",null),"AI Cores:    ",P(n.aiCoreFactor),r.createElement("br",null),"Real Estate: ",P(n.realEstateFactor)))),r.createElement(S.Z,{display:"flex",alignItems:"center"},r.createElement(v.Z,{title:"Scientific Research increases the quality of the materials and products that you produce."},r.createElement(g.Z,null,"Scientific Research: ",(0,i.dp)(n.researchPoints))),r.createElement(y.Z,{sx:{mx:1},onClick:()=>M(!0)},"Research"),r.createElement(c.D,{open:N,onClose:()=>M(!1),industry:n})),r.createElement("br",null),r.createElement(S.Z,{display:"flex",alignItems:"center"},r.createElement(b.g,{normalTooltip:r.createElement(r.Fragment,null,"Hire AdVert.Inc to advertise your company. Each level of this upgrade grants your company a static increase of 3 and 1 to its awareness and popularity, respectively. It will then increase your company's\" + awareness by 1%, and its popularity by a random percentage between 1% and 3%. These effects are increased by other upgrades that increase the power of your advertising."),disabledTooltip:n.getAdVertCost()>t.funds?"Insufficient corporation funds":"",onClick:()=>{(0,o.Jm)(t,n),e.rerender()}},"Hire AdVert -  ",r.createElement(d.d,{money:n.getAdVertCost(),corp:t})),n.makesProducts&&r.createElement(C,null)))}},86520:(e,t,n)=>{"use strict";n.d(t,{C:()=>N});var r=n(67294),a=n(77541),o=n(73327),i=n(28881),s=n(30120),l=n(17575),c=n(81138),u=n(56798),m=n(80692),f=n(33244),h=n(82644),d=n(45491),p=n(75114),g=n(51004),y=n(22115),b=n(47616),v=n(17446),k=n(68265),w=n(33563),E=n(98360),S=n(37150);const C=(0,a.Z)((()=>(0,o.Z)({retainHeight:{minHeight:"3em"}})));function x(e){const t=C(),n=(0,E.wZ)(),a=(0,E.pZ)(),[o,w]=(0,r.useState)(!1);if(!e.warehouse)return r.createElement(r.Fragment,null);const x=m.warehouseSizeUpgradeCostBase*Math.pow(1.07,e.warehouse.level+1),N=n.funds>x;let M;switch(a.state){case"START":M="Current state: Preparing...";break;case"PURCHASE":M="Current state: Purchasing materials...";break;case"PRODUCTION":M="Current state: Producing materials and/or products...";break;case"SALE":M="Current state: Selling materials and/or products...";break;case"EXPORT":M="Current state: Exporting materials and/or products...";break;default:console.error(`Invalid state: ${a.state}`)}const A=[];for(const t of Object.values(m.materialNames)){if(!e.warehouse.materials[t])continue;const n=e.warehouse.materials[t].stored>0,o=(0,v.s)(t,a);(n||o)&&A.push(r.createElement(p.p,{rerender:e.rerender,city:e.currentCity,key:t,mat:e.warehouse.materials[t],warehouse:e.warehouse}))}const T=[];if(a.makesProducts&&a.products.size>0)for(const[t,n]of a.products)T.push(r.createElement(d.l,{rerender:e.rerender,city:e.currentCity,key:t,product:n}));const L=[];for(const t of m.materialNames){const n=e.warehouse.materials[t];0!==n.stored&&L.push(`${t}: ${(0,y.wS)(n.stored*g.d[t].size)}`)}for(const[t,n]of a.products)L.push(`${t}: ${(0,y.wS)(n.cityData[e.currentCity].stored*n.size)}`);let R;return R=L.length>0?L.map(((e,t)=>r.createElement("p",{key:t},e))):r.createElement(r.Fragment,null,"No items in storage."),r.createElement(i.Z,null,r.createElement(s.Z,{display:"flex",alignItems:"center"},r.createElement(l.Z,{title:R},r.createElement(c.Z,{color:e.warehouse.sizeUsed>=e.warehouse.size?"error":"primary"},"Storage: ",(0,y.dp)(e.warehouse.sizeUsed)," / ",(0,y.dp)(e.warehouse.size)))),r.createElement(S.g,{disabledTooltip:N?"":"Insufficient corporation funds",onClick:function(){e.warehouse&&N&&(++e.warehouse.level,e.warehouse.updateSize(n,a),n.funds=n.funds-x,e.rerender())}},"Upgrade Warehouse Size - ",r.createElement(b.d,{money:x,corp:n})),r.createElement(c.Z,null,"This industry uses the following equation for its production: "),r.createElement("br",null),r.createElement(c.Z,null,r.createElement(k.a,{key:a.name,division:a})),r.createElement("br",null),r.createElement(c.Z,null,"To get started with production, purchase your required materials or import them from another of your company's divisions."),r.createElement("br",null),r.createElement(c.Z,{className:t.retainHeight},M),n.unlocks.has(f.CorpUnlockName.SmartSupply)&&r.createElement(r.Fragment,null,r.createElement(u.Z,{onClick:()=>w(!0)},"Configure Smart Supply"),r.createElement(h.v,{open:o,onClose:()=>w(!1),warehouse:e.warehouse})),A,T)}function N(e){return e.warehouse?r.createElement(x,e):r.createElement(M,{rerender:e.rerender,city:e.currentCity})}function M(e){const t=(0,E.wZ)(),n=(0,E.pZ)(),a=t.funds{"use strict";n.d(t,{d:()=>d});var r=n(67294),a=n(80692),o=n(33244),i=n(39463),s=n(33563),l=n(47616),c=n(98360),u=n(81138),m=n(98649),f=n(26023),h=n(37150);function d(e){const t=(0,c.wZ)(),n=(0,c.pZ)(),d=Object.values(o.CityName).filter((e=>!(e in n.offices))),[p,g]=(0,r.useState)(d[0]),y=t.fundsr.createElement(m.Z,{key:e,value:e},e)))),r.createElement(h.g,{onClick:function(){try{(0,s.oO)(t,n,p)}catch(e){return void(0,i.X)(e+"")}(0,i.X)(`Opened a new office in ${p}!`),e.cityStateSetter(p)},disabledTooltip:y},"Confirm"))}},17446:(e,t,n)=>{"use strict";function r(e,t){return!!Object.keys(t.requiredMaterials).includes(e)||!!t.producedMaterials.includes(e)||!!["Hardware","Robots","AI Cores","Real Estate"].includes(e)}n.d(t,{s:()=>r})},42084:(e,t,n)=>{"use strict";n.d(t,{Y:()=>s});var r=n(67294),a=n(81138),o=n(47616),i=n(32927);const s=e=>{let{industry:t,corp:n}=e;const s=i.vm[t];return r.createElement(a.Z,null,s.description,r.createElement("br",null),r.createElement("br",null),"Required Materials: ",Object.keys(s.requiredMaterials).toString().replace(/,/gi,", "),r.createElement("br",null),"Produces Materials: ",s.producedMaterials?s.producedMaterials.toString().replace(/,/gi,", "):"NONE",r.createElement("br",null),"Produces products: ",s.product?"YES":"NO",r.createElement("br",null),r.createElement("br",null),"Starting cost: ",r.createElement(o.d,{money:s.startingCost,corp:n}),r.createElement("br",null),"Recommended starting Industry: ",s.recommendStarting?"YES":"NO")}},68265:(e,t,n)=>{"use strict";n.d(t,{a:()=>i});var r=n(67294),a=n(70109),o=n(21623);function i(e){const t=[];for(const[n,r]of(0,o.m0)(e.division.requiredMaterials))r&&t.push(String.raw`${r}\text{ }${n}`);const n=e.division.producedMaterials.map((e=>`1\\text{ }${e}`));return e.division.makesProducts&&n.push("Products"),r.createElement(a.Z,null,"\\("+t.join("+")+"\\Rightarrow "+n.join("+")+"\\)")}},45241:(e,t,n)=>{"use strict";n.d(t,{d:()=>d});var r=n(67294),a=n(39463),o=n(51326),i=n(47616),s=n(98360),l=n(81138),c=n(17575),u=n(37150),m=n(30120),f=n(31990),h=n(41139);function d(e){let{upgradeName:t,mult:n,rerender:d}=e;const p=(0,s.wZ)(),g=o.x[t],y=p.upgrades[t].level,b="MAX"===n?(0,h.o)(p,g):n,v=0===b?0:(0,h.g)(p,g,b),k=g.desc;return r.createElement(f.ZP,{item:!0,xs:4},r.createElement(m.Z,{display:"flex",alignItems:"center",flexDirection:"row-reverse"},r.createElement(u.g,{disabledTooltip:p.funds{"use strict";n.d(t,{p:()=>s});var r=n(67294),a=n(11606),o=n(98360),i=n(33244);function s(e){const t=(0,o.wZ)().divisions.get(e.divisionName);if(!t)throw new Error("Cannot find division");return r.createElement(o._y.Division.Provider,{value:t},r.createElement(a.K,{rerender:e.rerender,city:i.CityName.Sector12}))}},75114:(e,t,n)=>{"use strict";n.d(t,{p:()=>v});var r=n(67294),a=n(28881),o=n(30120),i=n(17575),s=n(81138),l=n(56798),c=n(33244),u=n(22613),m=n(52178),f=n(86326),h=n(57900),d=n(22115),p=n(22392),g=n(72360),y=n(98360),b=n(83475);function v(e){const t=(0,y.wZ)(),n=(0,y.pZ)(),[v,k]=(0,r.useState)(!1),[w,E]=(0,r.useState)(!1),[S,C]=(0,r.useState)(!1),[x,N]=(0,r.useState)(!1),[M,A]=(0,r.useState)(!1),T=e.warehouse,L=e.city,R=e.mat;if(!n.offices[L])throw new Error(`Could not get OfficeSpace object for this city (${L})`);const F=R.buyAmount+R.productionAmount+R.importAmount-R.actualSellAmount-R.exportedLastCycle,_=n.newInd&&R.name in n.requiredMaterials&&0===R.buyAmount&&0===R.importAmount,I=`Buy (${(0,d.dp)(R.buyAmount)})`;let P;R.desiredSellAmount?(P=(0,p.H)(R.desiredSellAmount)?r.createElement(r.Fragment,null,"Sell (",(0,d.dp)(R.actualSellAmount),"/",R.desiredSellAmount,")"):r.createElement(r.Fragment,null,"Sell (",(0,d.dp)(R.actualSellAmount),"/",(0,d.dp)(R.desiredSellAmount),")"),r.Fragment,g.W,R.uiMarketPrice):P=r.createElement(r.Fragment,null,"Sell (0.000/0.000)");let B="Limit Material";return null!==R.productionLimit&&(B+=" ("+(0,d.jj)(R.productionLimit)+")"),r.createElement(a.Z,null,r.createElement(o.Z,{sx:{display:"grid",gridTemplateColumns:"2fr 1fr",m:"5px"}},r.createElement(o.Z,null,r.createElement(i.Z,{title:r.createElement(s.Z,null,"Buy: ",R.buyAmount>=1e33?R.buyAmount.toExponential(3):(0,d.dp)(R.buyAmount)," ",r.createElement("br",null),"Prod: ",(0,d.dp)(R.productionAmount)," ",r.createElement("br",null),"Sell: ",(0,d.dp)(R.actualSellAmount)," ",r.createElement("br",null),"Export: ",(0,d.dp)(R.exportedLastCycle)," ",r.createElement("br",null),"Import: ",(0,d.dp)(R.importAmount),t.unlocks.has(c.CorpUnlockName.MarketResearchDemand)&&r.createElement(r.Fragment,null,r.createElement("br",null),"Demand: ",(0,d.jj)(R.demand)),t.unlocks.has(c.CorpUnlockName.MarketDataCompetition)&&r.createElement(r.Fragment,null,r.createElement("br",null),"Competition: ",(0,d.jj)(R.competition)))},r.createElement(s.Z,null,R.name,": ",(0,d.dp)(R.stored)," (",F>=1e33?F.toExponential(3):(0,d.dp)(F),"/s)")),r.createElement(i.Z,{title:r.createElement(s.Z,null,"Market Price: The price you would pay if you were to buy this material on the market")},r.createElement(s.Z,null,"MP: ",(0,d.lb)(R.marketPrice))),r.createElement(i.Z,{title:r.createElement(s.Z,null,"The quality of your material. Higher quality will lead to more sales")},r.createElement(s.Z,null,"Quality: ",(0,d.P6)(R.quality)))),r.createElement(o.Z,{sx:{"& button":{width:"100%"}}},r.createElement(i.Z,{title:_?r.createElement(s.Z,null,"Purchase your required materials to get production started!"):""},r.createElement(l.Z,{color:_?"error":"primary",onClick:()=>k(!0)},I)),r.createElement(h.H,{mat:R,warehouse:T,open:v,disablePurchaseLimit:e.warehouse.smartSupplyEnabled&&e.mat.name in n.requiredMaterials,onClose:()=>k(!1)}),t.unlocks.has(c.CorpUnlockName.Export)&&r.createElement(r.Fragment,null,r.createElement(l.Z,{onClick:()=>E(!0)},"Export"),r.createElement(u.X,{mat:R,open:w,onClose:()=>E(!1)})),r.createElement(l.Z,{color:n.producedMaterials.includes(e.mat.name)&&!R.desiredSellAmount?"error":"primary",onClick:()=>C(!0)},P),r.createElement(f.n,{mat:R,open:S,onClose:()=>C(!1)}),n.hasResearch("Market-TA.I")&&r.createElement(r.Fragment,null,r.createElement(l.Z,{onClick:()=>N(!0)},"Market-TA"),r.createElement(m.Q,{mat:R,open:x,onClose:()=>N(!1)})),r.createElement(l.Z,{color:_?"error":"primary",onClick:()=>A(!0)},B),r.createElement(b.m,{material:R,open:M,onClose:()=>A(!1)}))))}},47616:(e,t,n)=>{"use strict";n.d(t,{d:()=>l});var r=n(67294),a=n(22115),o=n(77541),i=n(73327);const s=(0,o.Z)((e=>(0,i.Z)({unbuyable:{color:e.palette.action.disabled},money:{color:e.colors.money}})));function l(e){const t=s();return e.corp.funds>e.money?r.createElement("span",{className:t.money},(0,a.lb)(e.money)):r.createElement("span",{className:t.unbuyable},(0,a.lb)(e.money))}},60437:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(67294),a=n(80692),o=n(56798),i=n(21623);function s(e){let{selectedMultiplier:t,setMultiplier:n}=e;return r.createElement(r.Fragment,null,(0,i.m0)(a.PurchaseMultipliers).map((e=>{let[a,i]=e;return r.createElement(o.Z,{key:a,onClick:()=>n(i),disabled:i===t},a)})))}},37037:(e,t,n)=>{"use strict";n.d(t,{I:()=>y});var r=n(67294),a=n(30120),o=n(98649),i=n(26023),s=n(66351),l=n(81138),c=n(39463),u=n(32927),m=n(33244),f=n(98360),h=n(33563),d=n(37150),p=n(81055),g=n(42084);function y(e){const t=(0,f.wZ)(),n=Object.values(m.IndustryType).sort(),[y,b]=(0,r.useState)(n[0]),[v,k]=(0,r.useState)(""),w=u.vm[y];if(!w)return r.createElement(r.Fragment,null);const E=t.divisions.size>=t.maxDivisions?"Corporation already has the maximum number of divisions":t.fundsr.createElement(o.Z,{key:e,value:e},e)))),r.createElement(g.Y,{industry:y,corp:t}),r.createElement("br",null),r.createElement("br",null),r.createElement(l.Z,null,"Division name:"),r.createElement(a.Z,{display:"flex",alignItems:"center"},r.createElement(s.Z,{autoFocus:!0,value:v,onChange:function(e){k(e.target.value)},onKeyDown:function(e){e.key===p.F.ENTER&&S()},type:"text"})," ",r.createElement(d.g,{disabledTooltip:E,onClick:S},"Expand")))}},89363:(e,t,n)=>{"use strict";n.d(t,{g:()=>I});var r=n(67294),a=n(45241),o=n(84074),i=n(15241),s=n(82737),l=n(51569),c=n(71277),u=n(81737),m=n(60498),f=n(10600),h=n(58427),d=n(80692),p=n(61226),g=n(72938),y=n(22115),b=n(49802),v=n(72360),k=n(85882),w=n(97534),E=n(49173),S=n(98360),C=n(81138),x=n(17575),N=n(30120),M=n(28881),A=n(31990),T=n(60437),L=n(739),R=n(45774),F=n(21623),_=n(37150);function I(e){let{rerender:t}=e;const n=(0,S.wZ)(),a=n.revenue-n.expenses,o=[];function i(e,t){1!==t&&o.push([e,(0,y.jj)(t)])}return i("Production Multiplier: ",n.getProductionMultiplier()),i("Storage Multiplier: ",n.getStorageMultiplier()),i("Advertising Multiplier: ",n.getAdvertisingMultiplier()),i("Empl. Creativity Multiplier: ",n.getEmployeeCreMultiplier()),i("Empl. Charisma Multiplier: ",n.getEmployeeChaMult()),i("Empl. Intelligence Multiplier: ",n.getEmployeeIntMult()),i("Empl. Efficiency Multiplier: ",n.getEmployeeEffMult()),i("Sales Multiplier: ",n.getSalesMult()),i("Scientific Research Multiplier: ",n.getScientificResearchMult()),r.createElement(r.Fragment,null,r.createElement(w.C,{rows:[["Total Funds:",r.createElement(v.W,{key:"funds",money:n.funds})],["Total Revenue:",r.createElement(k.G,{key:"revenue",money:n.revenue})],["Total Expenses:",r.createElement(k.G,{key:"expenses",money:n.expenses})],["Total Profit:",r.createElement(k.G,{key:"profit",money:n.revenue-n.expenses})],["Publicly Traded:",n.public?"Yes":"No"],["Owned Stock Shares:",(0,y.O3)(n.numShares)],["Stock Price:",n.public?r.createElement(v.W,{key:"price",money:n.sharePrice}):"N/A"]]}),r.createElement("br",null),r.createElement(N.Z,{display:"flex"},r.createElement(x.Z,{title:r.createElement(w.C,{rows:[["Outstanding Shares:",(0,y.O3)(n.issuedShares)],["Private Shares:",(0,y.O3)(n.totalShares-n.issuedShares-n.numShares)]]})},r.createElement(C.Z,null,"Total Stock Shares: ",(0,y.O3)(n.totalShares)))),r.createElement("br",null),r.createElement(J,{profit:a}),r.createElement("br",null),r.createElement(w.C,{rows:o}),r.createElement("br",null),r.createElement(W,null),r.createElement("div",null,r.createElement(_.g,{normalTooltip:r.createElement(r.Fragment,null,"Get a copy of and read 'The Complete Handbook for Creating a Successful Corporation.' This is a .lit file that guides you through the beginning of setting up a Corporation and provides some tips/pointers for helping you get started with managing it."),onClick:()=>n.getStarterGuide()},"Getting Started Guide"),r.createElement(D,null),n.divisions.size>0&&r.createElement(Z,null),r.createElement(G,null)),r.createElement("div",null,n.public?r.createElement(O,{rerender:t}):r.createElement(P,{rerender:t})),r.createElement("br",null),r.createElement(B,{rerender:t}))}function P(e){let{rerender:t}=e;const n=(0,S.wZ)(),[a,o]=(0,r.useState)(!1),[i,s]=(0,r.useState)(!1),l=n.fundingRound<4,c=l?"Search for private investors who will give you startup funding in exchange for equity (stock shares) in your company":"";return r.createElement(r.Fragment,null,r.createElement(_.g,{normalTooltip:c,disabledTooltip:l?"":"Max funding rounds already reached",onClick:()=>o(!0)},"Find Investors"),r.createElement(_.g,{normalTooltip:r.createElement(r.Fragment,null,"Become a publicly traded and owned entity. Going public involves issuing shares for an IPO. Once you are a public company, your shares will be traded on the stock market."),onClick:()=>s(!0)},"Go Public"),r.createElement(m.c,{open:a,onClose:()=>o(!1),rerender:t}),r.createElement(f.s,{open:i,onClose:()=>s(!1),rerender:t}))}function B(e){let{rerender:t}=e;const[n,i]=(0,r.useState)(d.PurchaseMultipliers.x1),s=(0,S.wZ)();if(0===s.divisions.size)return r.createElement(C.Z,{variant:"h4"},"Upgrades are unlocked once you create an industry.");const l=Object.values(p.D).filter((e=>!s.unlocks.has(e.name))).map((e=>{let{name:n}=e;return r.createElement(o.S,{rerender:t,name:n,key:n})}));return r.createElement(r.Fragment,null,r.createElement(M.Z,{sx:{p:1,my:1}},r.createElement(C.Z,{variant:"h4"},"Unlocks"),r.createElement(A.ZP,{container:!0},l.length?l:r.createElement(C.Z,null,"All unlocks are owned."))),r.createElement(M.Z,{sx:{p:1,my:1}},r.createElement(C.Z,{variant:"h4"},"Upgrades"),r.createElement(A.ZP,{container:!0,spacing:2},r.createElement(A.ZP,{item:!0,xs:6},r.createElement(T.C,{setMultiplier:i,selectedMultiplier:n}))),r.createElement(A.ZP,{container:!0},(0,F.nd)(s.upgrades).map((e=>r.createElement(a.d,{rerender:t,upgradeName:e,key:e,mult:n}))))))}function O(e){let{rerender:t}=e;const n=(0,S.wZ)(),[a,o]=(0,r.useState)(!1),[i,m]=(0,r.useState)(!1),[f,h]=(0,r.useState)(!1),[d,p]=(0,r.useState)(!1),g=n.shareSaleCooldown>0,y=g?"Cannot sell shares for "+n.convertCooldownToString(n.shareSaleCooldown):"Sell your shares in the company. The money earned from selling your shares goes into your personal account, not the Corporation's. This is one of the only ways to profit from your business venture.",b=n.issueNewSharesCooldown>0,v=b?"Cannot issue new shares for "+n.convertCooldownToString(n.issueNewSharesCooldown):"Issue new equity shares to raise capital.";return r.createElement(r.Fragment,null,r.createElement(_.g,{normalTooltip:y,disabledTooltip:g?"On cooldown":"",onClick:()=>o(!0)},"Sell Shares"),r.createElement(s.R,{open:a,onClose:()=>o(!1),rerender:t}),r.createElement(_.g,{normalTooltip:"Buy back shares you that previously issued or sold at market price.",disabledTooltip:n.issuedShares<1?"No shares available to buy back":"",onClick:()=>m(!0)},"Buyback shares"),r.createElement(l.b,{open:i,onClose:()=>m(!1),rerender:t}),r.createElement(_.g,{normalTooltip:v,disabledTooltip:b?"On cooldown":"",onClick:()=>h(!0)},"Issue New Shares"),r.createElement(u.p,{open:f,onClose:()=>h(!1)}),r.createElement(_.g,{normalTooltip:"Manage the dividends that are paid out to shareholders (including yourself)",onClick:()=>p(!0)},"Issue Dividends"),r.createElement(c.C,{open:d,onClose:()=>p(!1)}))}function D(){const e=(0,S.wZ)(),[t,n]=(0,r.useState)(!1),a=e.valuation>=d.bribeThreshold&&E.J5.factions.filter((e=>h.i[e].getInfo().offersWork())).length>0;return r.createElement(r.Fragment,null,r.createElement(_.g,{normalTooltip:"Use your Corporations power and influence to bribe Faction leaders in exchange for reputation",disabledTooltip:a?"":"Your Corporation is not powerful enough to bribe Faction leaders",onClick:function(){a&&n(!0)}},"Bribe Factions"),r.createElement(i._,{open:t,onClose:()=>n(!1)}))}function Z(){const[e,t]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,r.createElement(_.g,{normalTooltip:"Sell a division to make room for other divisions",onClick:function(){t(!0)}},"Sell division"),r.createElement(R.H,{open:e,onClose:()=>t(!1)}))}function G(){const[e,t]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,r.createElement(_.g,{normalTooltip:"Sell corporation and start over",onClick:function(){t(!0)}},"Sell CEO position"),r.createElement(L.Q,{open:e,onClose:()=>t(!1)}))}function J(e){let{profit:t}=e;const n=(0,S.wZ)();if(n.dividendRate<=0||t<=0)return r.createElement(r.Fragment,null);const a=n.dividendRate*t,o=t-a,i=a/n.totalShares,s=n.getCycleDividends()/d.secondsPerMarketCycle;return r.createElement(w.C,{rows:[["Retained Profits (after dividends):",r.createElement(k.G,{key:"profits",money:o})],["Dividend Percentage:",(0,y.T3)(n.dividendRate,0)],["Dividends per share:",r.createElement(k.G,{key:"dividends",money:i})],["Your earnings as a shareholder:",r.createElement(k.G,{key:"earnings",money:s})]]})}function W(){const e=(0,S.wZ)().storedCycles*g.t.MilliPerCycle;return e<=15e3?r.createElement(r.Fragment,null):r.createElement(N.Z,{display:"flex"},r.createElement(x.Z,{title:r.createElement(C.Z,null,"You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by the browser). Bonus time makes the Corporation mechanic progress faster, up to 10x the normal speed.")},r.createElement(C.Z,null,"Bonus time: ",(0,b.UF)(e),r.createElement("br",null),r.createElement("br",null))))}},45491:(e,t,n)=>{"use strict";n.d(t,{l:()=>k});var r=n(67294),a=n(28881),o=n(81138),i=n(56798),s=n(30120),l=n(17575),c=n(33244),u=n(80692),m=n(26127),f=n(2636),h=n(52983),d=n(25483),p=n(56769),g=n(22115),y=n(22392),b=n(72360),v=n(98360);function k(e){const t=(0,v.wZ)(),n=(0,v.pZ)(),[k,w]=(0,r.useState)(!1),[E,S]=(0,r.useState)(!1),[C,x]=(0,r.useState)(!1),[N,M]=(0,r.useState)(!1),[A,T]=(0,r.useState)(!1),L=e.city,R=e.product,F=n.hasResearch("uPgrade: Dashboard"),_=R.cityData[L].productionAmount-R.cityData[L].actualSellAmount;let I;const P=R.cityData[L].desiredSellAmount;I=null!==P?(0,y.H)(P)?r.createElement(r.Fragment,null,"Sell (",(0,g.dp)(R.cityData[L].actualSellAmount),"/",P,")"):r.createElement(r.Fragment,null,"Sell (",(0,g.dp)(R.cityData[L].actualSellAmount),"/",(0,g.dp)(P),")"):r.createElement(r.Fragment,null,"Sell (0.000/0.000)"),I=r.createElement(r.Fragment,null,I," @ ",r.createElement(b.W,{money:R.uiMarketPrice[L]}));const B=R.cityData[L].productionLimit,O="Limit Production"+(null!==B?" ("+(0,g.jj)(B)+")":"");return r.createElement(a.Z,null,R.finished?r.createElement(r.Fragment,null,r.createElement(s.Z,{display:"flex"},r.createElement(l.Z,{title:r.createElement(o.Z,null,"Prod: ",(0,g.dp)(R.cityData[L].productionAmount),"/s",r.createElement("br",null),"Sell: ",(0,g.dp)(R.cityData[L].actualSellAmount)," /s")},r.createElement(o.Z,null,R.name,": ",(0,g.dp)(R.cityData[L].stored)," (",(0,g.dp)(_),"/s)"))),r.createElement(s.Z,{display:"flex"},r.createElement(l.Z,{title:r.createElement(o.Z,null,"Effective rating is calculated from product rating and the quality of materials used ",r.createElement("br",null),"Rating: ",(0,g.jj)(R.rating)," ",r.createElement("br",null)," ",r.createElement("br",null),"Quality: ",(0,g.jj)(R.stats.quality)," ",r.createElement("br",null),"Performance: ",(0,g.jj)(R.stats.performance)," ",r.createElement("br",null),"Durability: ",(0,g.jj)(R.stats.durability)," ",r.createElement("br",null),"Reliability: ",(0,g.jj)(R.stats.reliability)," ",r.createElement("br",null),"Aesthetics: ",(0,g.jj)(R.stats.aesthetics)," ",r.createElement("br",null),"Features: ",(0,g.jj)(R.stats.features),t.unlocks.has(c.CorpUnlockName.MarketResearchDemand)&&r.createElement(r.Fragment,null,r.createElement("br",null),"Demand: "+(0,g.jj)(R.demand)),t.unlocks.has(c.CorpUnlockName.MarketDataCompetition)&&r.createElement(r.Fragment,null,r.createElement("br",null),"Competition: "+(0,g.jj)(R.competition)))},r.createElement(o.Z,null,"Effective rating: ",(0,g.jj)(R.cityData[L].effectiveRating)))),r.createElement(s.Z,{display:"flex"},r.createElement(l.Z,{title:r.createElement(o.Z,null,"An estimate of the material cost it takes to create this Product.")},r.createElement(o.Z,null,"Est. Production Cost: ",(0,g.lb)(R.productionCost/u.baseProductProfitMult)))),r.createElement(s.Z,{display:"flex"},r.createElement(l.Z,{title:r.createElement(o.Z,null,"An estimate of how much consumers are willing to pay for this product. Setting the sale price above this may result in less sales. Setting the sale price below this may result in more sales.")},r.createElement(o.Z,null,"Est. Market Price: ",(0,g.lb)(R.productionCost)))),r.createElement(i.Z,{onClick:()=>x(!0)},"Discontinue"),r.createElement(m.n,{product:R,rerender:e.rerender,open:C,onClose:()=>x(!1)})):r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Designing ",R.name," (req. Operations/Engineers in ",R.creationCity,")..."),r.createElement("br",null),r.createElement(o.Z,null,(0,g.T3)(R.developmentProgress/100,2)," complete"),r.createElement(i.Z,{onClick:()=>M(!0)},"Cancel"),r.createElement(p.$,{product:R,rerender:e.rerender,open:N,onClose:()=>M(!1)})),(F||R.finished)&&r.createElement(r.Fragment,null,r.createElement(i.Z,{onClick:()=>w(!0)},I),r.createElement(h.a,{product:R,city:L,open:k,onClose:()=>w(!1)}),r.createElement("br",null),r.createElement(i.Z,{onClick:()=>S(!0)},O),r.createElement(f.b,{product:R,city:L,open:E,onClose:()=>S(!1)}),n.hasResearch("Market-TA.I")&&r.createElement(r.Fragment,null,r.createElement(i.Z,{onClick:()=>T(!0)},"Market-TA"),r.createElement(d.c,{product:R,open:A,onClose:()=>T(!1)}))))}},84074:(e,t,n)=>{"use strict";n.d(t,{S:()=>h});var r=n(67294),a=n(61226),o=n(98360),i=n(47616),s=n(81138),l=n(17575),c=n(56798),u=n(30120),m=n(31990),f=n(39463);function h(e){const t=(0,o.wZ)(),n=a.D[e.name],h=n.desc,d=n.price;return r.createElement(m.ZP,{item:!0,xs:4},r.createElement(u.Z,{display:"flex",alignItems:"center",flexDirection:"row-reverse"},r.createElement(c.Z,{disabled:t.funds{"use strict";n.d(t,{_:()=>b});var r=n(67294),a=n(81138),o=n(30120),i=n(26023),s=n(98649),l=n(56798),c=n(49173),u=n(58427),m=n(80692),f=n(22115),h=n(39463),d=n(48672),p=n(98360),g=n(33313),y=n(50862);function b(e){const t=c.J5.factions.filter((e=>!!u.i[e].getInfo().offersWork()&&!c.J5.hasGangWith(e))),n=(0,p.wZ)(),[b,v]=(0,r.useState)(NaN),[k,w]=(0,r.useState)(t.length>0?t[0]:""),E=0===b||isNaN(b)||b<0||n.funds{if(u.i[e].getInfo().offersWork()&&!c.J5.hasGangWith(e))return r.createElement(s.Z,{key:e,value:e},e)})))),r.createElement(a.Z,null,function(e){return 0===e?"":isNaN(e)||e<0?"ERROR: Invalid value(s) entered":n.fundsfunction(t){if(!k)return;const r=u.i[k];if(E)return;const a=S(t);(0,h.X)(`You gained ${(0,f.$n)(a)} reputation with ${r.name} by bribing them.`),r.playerReputation+=a,n.funds=n.funds-t,e.onClose()}(b||0)},"Bribe"))}},51569:(e,t,n)=>{"use strict";n.d(t,{b:()=>p});var r=n(67294),a=n(48672),o=n(22115),i=n(49173),s=n(98360),l=n(81138),c=n(37150),u=n(33313),m=n(33563),f=n(39463),h=n(81055),d=n(20145);function p(e){const t=(0,s.wZ)(),[n,p]=(0,r.useState)(NaN),g=1.1*t.sharePrice,y=(0,d.a)(n)?n>t.issuedShares?"There are not enough shares available to buyback this many":n*g>i.J5.money?"Insufficient player funds":"":"Number of shares must be a positive integer";function b(){if(!y){try{(0,m.Fm)(t,n)}catch(e){(0,f.X)(e+"")}e.onClose(),e.rerender()}}function v(){return null===n?r.createElement(r.Fragment,null):isNaN(n)||n<=0?r.createElement(r.Fragment,null,"ERROR: Invalid value entered for number of shares to buyback"):n>t.issuedShares?r.createElement(r.Fragment,null,"There are not this many shares available to buy back. There are only ",(0,o.dp)(t.issuedShares)," ","outstanding shares."):r.createElement(r.Fragment,null,"Purchase ",n," shares for a total of ",(0,o.lb)(n*g))}return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(l.Z,null,"Enter the number of outstanding shares you would like to buy back. These shares must be bought at a 10% premium. However, repurchasing shares from the market tends to lead to an increase in stock price.",r.createElement("br",null),r.createElement("br",null),"To purchase these shares, you must use your own money (NOT your Corporation's funds).",r.createElement("br",null),r.createElement("br",null),"The current buyback price of your company's stock is ",(0,o.lb)(g),". Your company currently has"," ",(0,o.dp)(t.issuedShares)," outstanding stock shares."),r.createElement(v,null),r.createElement("br",null),r.createElement(u.Y,{autoFocus:!0,placeholder:"Shares to buyback",onChange:p,onKeyDown:function(e){e.key===h.F.ENTER&&b()}}),r.createElement(c.g,{disabledTooltip:y,onClick:b},"Buy shares"))}},56769:(e,t,n)=>{"use strict";n.d(t,{$:()=>l});var r=n(67294),a=n(48672),o=n(98360),i=n(81138),s=n(56798);function l(e){const t=(0,o.pZ)();return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(i.Z,null,"Are you sure you want to do this? Canceling a product removes it completely and permanently. You will receive no money back by doing so"),r.createElement(s.Z,{onClick:function(){t.discontinueProduct(e.product.name),e.onClose(),e.rerender()}},"Cancel"))}},10458:(e,t,n)=>{"use strict";n.d(t,{w:()=>f});var r=n(67294),a=n(72360),o=n(48672),i=n(52947),s=n(24815),l=n(49173),c=n(81138),u=n(37150),m=n(66351);function f(e){const t=l.J5.canAfford(15e10),[n,f]=(0,r.useState)("");if(!l.J5.canAccessCorporation()||l.J5.corporation)return e.onClose(),r.createElement(r.Fragment,null);const h=""===n?"Enter a name for the corporation":"";return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(c.Z,null,"Would you like to start a corporation? This will require $150b for registration and initial funding."," ",3===l.J5.bitNodeN&&"This $150b\n can either be self-funded, or you can obtain the seed money from the government in exchange for 500 million\n shares",r.createElement("br",null),r.createElement("br",null),"If you would like to start one, please enter a name for your corporation below:"),r.createElement(m.Z,{autoFocus:!0,placeholder:"Corporation Name",onChange:function(e){f(e.target.value)},value:n}),3===l.J5.bitNodeN&&r.createElement(u.g,{onClick:function(){""!=n&&(l.J5.startCorporation(n,!0),e.onClose(),i.F.toPage(s.T3.Corporation))},disabledTooltip:h},"Use seed money"),r.createElement(u.g,{onClick:function(){t&&""!=n&&(l.J5.startCorporation(n,!1),l.J5.loseMoney(15e10,"corporation"),e.onClose(),i.F.toPage(s.T3.Corporation))},disabledTooltip:h||t?"":"Insufficient player funds"},"Self-Fund (",r.createElement(a.W,{money:15e10,forPurchase:!0}),")"))}},26127:(e,t,n)=>{"use strict";n.d(t,{n:()=>l});var r=n(67294),a=n(48672),o=n(98360),i=n(81138),s=n(56798);function l(e){const t=(0,o.pZ)();return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(i.Z,null,"Are you sure you want to do this? Discontinuing a product removes it completely and permanently. You will no longer produce this product and all of its existing stock will be removed and left unsold"),r.createElement(s.Z,{onClick:function(){t.discontinueProduct(e.product.name),e.onClose(),e.rerender()}},"Discontinue"))}},22613:(e,t,n)=>{"use strict";n.d(t,{X:()=>b});var r=n(67294),a=n(39463),o=n(33563),i=n(48672),s=n(98360),l=n(17446),c=n(81138),u=n(66351),m=n(56798),f=n(30120),h=n(98649),d=n(26023),p=n(88775),g=n(21623),y=n(37150);function b(e){const t=(0,s.wZ)(),[n,b]=(0,r.useState)(""),v=(0,p.S)(),k=[...t.divisions.values()].filter((t=>(0,l.s)(e.mat.name,t))),w=k.length?k[0]:null,[E,S]=(0,r.useState)(w),C=E?(0,g.nd)(E.warehouses):[],x=C.length?C[0]:null,[N,M]=(0,r.useState)(x);return N&&!C.includes(N)&&M(C.length?C[0]:null),r.createElement(i.u,{open:e.open,onClose:e.onClose},r.createElement(c.Z,null,"Select the industry and city to export this material to, as well as how much of this material to export per second.",r.createElement("br",null),r.createElement("br",null),"You can use 'MAX', 'EINV', 'IINV', 'EPROD' or 'IPROD' in the amount for:",r.createElement("br",null),"- 'MAX' to export maximum amount possible.",r.createElement("br",null),"- 'EINV' export city's inventory of the material.",r.createElement("br",null),"- 'IINV' import city's inventory of the material.",r.createElement("br",null),"- 'EPROD' export city's per second production of the material",r.createElement("br",null),"- 'IPROD' import city's per second production of the material",r.createElement("br",null),"Note: Consumption is negative production.",r.createElement("br",null),r.createElement("br",null),'For example: setting the amount "(EINV-20)/10" would try to export all except 20 of the material.'),r.createElement(d.Z,{onChange:function(e){const n=t.divisions.get(e.target.value);n&&S(n)},value:(null==E?void 0:E.name)??""},k.map((e=>r.createElement(h.Z,{key:e.name,value:e.name},e.name)))),r.createElement(d.Z,{onChange:function(e){M(e.target.value)},value:N??""},C.map((e=>r.createElement(h.Z,{key:e,value:e},e)))),r.createElement(u.Z,{placeholder:"Export amount / s",onChange:function(e){b(e.target.value)},value:n}),r.createElement(y.g,{disabledTooltip:E?N?"":"No target city selected":"No target division selected",onClick:function(){try{if(!E||!N)return;(0,o.DY)(E,N,e.mat,n)}catch(e){(0,a.X)(e+"")}e.onClose()}},"Export"),r.createElement(c.Z,null,"Below is a list of all current exports of this material from this warehouse. Clicking on one of the exports below will REMOVE that export."),e.mat.exports.map(((t,n)=>r.createElement(f.Z,{display:"flex",alignItems:"center",key:n},r.createElement(m.Z,{sx:{mx:2},onClick:()=>function(t){for(let n=0;n{"use strict";n.d(t,{c:()=>u});var r=n(67294),a=n(22115),o=n(80692),i=n(48672),s=n(98360),l=n(81138),c=n(56798);function u(e){const t=(0,s.wZ)(),n=t.valuation;if(t.fundingRound>=o.fundingRoundShares.length||t.fundingRound>=o.fundingRoundMultiplier.length)return r.createElement(r.Fragment,null);const u=o.fundingRoundShares[t.fundingRound],m=n*u*o.fundingRoundMultiplier[t.fundingRound],f=Math.floor(o.initialShares*u);return r.createElement(i.u,{open:e.open,onClose:e.onClose},r.createElement(l.Z,null,"An investment firm has offered you ",(0,a.lb)(m)," in funding in exchange for a"," ",(0,a.T3)(u,3)," stake in the company (",(0,a.O3)(f)," shares).",r.createElement("br",null),r.createElement("br",null),"Do you accept or reject this offer?",r.createElement("br",null),r.createElement("br",null),"Hint: Investment firms will offer more money if your corporation is turning a profit"),r.createElement(c.Z,{onClick:function(){t.fundingRound++,t.addFunds(m),t.numShares-=f,e.rerender(),e.onClose()}},"Accept"))}},10600:(e,t,n)=>{"use strict";n.d(t,{s:()=>d});var r=n(67294),a=n(39463),o=n(48672),i=n(22115),s=n(98360),l=n(81138),c=n(37150),u=n(33313),m=n(30120),f=n(81055),h=n(20145);function d(e){const t=(0,s.wZ)(),[n,d]=(0,r.useState)(NaN),p=t.valuation/t.totalShares;function g(){const r=t.valuation/t.totalShares;n>=t.numShares||0!==n&&!(0,h.a)(n)||(t.public=!0,t.sharePrice=r,t.issuedShares=n,t.numShares-=n,t.addFunds(n*r),e.rerender(),(0,a.X)(`You took your ${t.name} public and earned ${(0,i.lb)(n*r)} in your IPO`),e.onClose())}const y=n>=t.numShares?"Cannot issue this many shares":0===n||(0,h.a)(n)?"":"Must issue an non-negative integer number of shares";return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(l.Z,null,"Enter the number of shares you would like to issue for your IPO. These shares will be publicly sold and you will no longer own them. Your Corporation will receive ",(0,i.lb)(p)," per share (the IPO money will be deposited directly into your Corporation's funds).",r.createElement("br",null),r.createElement("br",null),"You can issue some, but not all, of your ",(0,i.O3)(t.numShares)," shares."),r.createElement(m.Z,{display:"flex",alignItems:"center"},r.createElement(u.Y,{onChange:d,autoFocus:!0,placeholder:"Shares to issue",onKeyDown:function(e){e.key===f.F.ENTER&&g()}}),r.createElement(c.g,{disabledTooltip:y,onClick:g},"Go Public")))}},71277:(e,t,n)=>{"use strict";n.d(t,{C:()=>h});var r=n(67294),a=n(39463),o=n(48672),i=n(80692),s=n(33563),l=n(98360),c=n(81138),u=n(66351),m=n(56798),f=n(81055);function h(e){const t=(0,l.wZ)(),[n,h]=(0,r.useState)(0),d=!isNaN(n)&&n>=0&&n<=100*i.dividendMaxRate;function p(){if(d&&null!==n){try{(0,s.wZ)(t,n/100)}catch(e){(0,a.X)(e+"")}e.onClose()}}return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(c.Z,null,"Dividends are a distribution of a portion of the corporation's profits to the shareholders. This includes yourself, as well.",r.createElement("br",null),r.createElement("br",null),"In order to issue dividends, simply allocate some percentage of your corporation's profits to dividends. This percentage must be an integer between 0 and 100. (A percentage of 0 means no dividends will be issued)",r.createElement("br",null),r.createElement("br",null),"Two important things to note:",r.createElement("br",null),"* Issuing dividends will negatively affect your corporation's stock price",r.createElement("br",null),r.createElement("br",null),"Example: Assume your corporation makes $100m / sec in profit and you allocate 40% of that towards dividends. That means your corporation will gain $60m / sec in funds and the remaining $40m / sec will be paid as dividends. Since your corporation starts with 1 billion shares, every shareholder will be paid $0.04 per share per second before taxes."),r.createElement(u.Z,{autoFocus:!0,value:n,onChange:function(e){if(""===e.target.value)h(0);else{let t=parseFloat(e.target.value);t>100&&(t=100),t<0&&(t=0),h(t)}},onKeyDown:function(e){e.key===f.F.ENTER&&p()},placeholder:"Dividend %",type:"number"}),r.createElement(m.Z,{disabled:!d,sx:{mx:1},onClick:p},"Allocate Dividend Percentage"))}},81737:(e,t,n)=>{"use strict";n.d(t,{p:()=>d});var r=n(67294),a=n(22115),o=n(39463),i=n(48672),s=n(98360),l=n(81138),c=n(33313),u=n(56798),m=n(81055),f=n(33563);function h(e){const t=(0,s.wZ)();if(null===e.shares)return r.createElement(r.Fragment,null);const n=Math.round(.9*t.sharePrice),o=t.calculateMaxNewShares();let i=e.shares;return isNaN(i)?r.createElement(l.Z,null,"Invalid input"):(i/=1e7,i=1e7*Math.round(i),i<1e7?r.createElement(l.Z,null,"Must issue at least 10 million new shares"):i>o?r.createElement(l.Z,null,"You cannot issue that many shares"):r.createElement(l.Z,null,"Issue ",(0,a.O3)(i)," new shares for ",(0,a.lb)(i*n),"?"))}function d(e){const t=(0,s.wZ)(),[n,d]=(0,r.useState)(NaN),p=t.calculateMaxNewShares(),g=1e7*Math.round((n||0)/1e7),y=isNaN(n)||isNaN(g)||g<1e7||g>p;function b(){if(isNaN(n))return;if(y)return;const[r,i,s]=(0,f.yp)(t,n);e.onClose();let l=`Issued ${(0,a.O3)(i)} new shares and raised ${(0,a.lb)(r)}.`+(s>0)?"\n"+(0,a.O3)(s)+" of these shares were bought by private investors.":"";l+=`\n\nStock price decreased to ${(0,a.lb)(t.sharePrice)}`,(0,o.X)(l)}return r.createElement(i.u,{open:e.open,onClose:e.onClose},r.createElement(l.Z,null,"You can issue new equity shares (i.e. stocks) in order to raise capital for your corporation.",r.createElement("br",null),r.createElement("br",null)," * You can issue at most ",(0,a.O3)(p)," new shares",r.createElement("br",null)," * New shares are sold at a 10% discount",r.createElement("br",null)," * You can only issue new shares once every 12 hours",r.createElement("br",null)," * Issuing new shares causes dilution, resulting in a decrease in stock price and lower dividends per share",r.createElement("br",null)," * Number of new shares issued must be a multiple of 10 million",r.createElement("br",null),r.createElement("br",null),"When you choose to issue new equity, private shareholders have first priority for up to 0.5n% of the new shares, where n is the percentage of the company currently owned by private shareholders. If they choose to exercise this option, these newly issued shares become private, restricted shares, which means you cannot buy them back."),r.createElement(h,{shares:n}),r.createElement(c.Y,{autoFocus:!0,placeholder:"# New Shares",onChange:d,onKeyDown:function(e){e.key===m.F.ENTER&&b()}}),r.createElement(u.Z,{disabled:y,onClick:b,sx:{mx:1}},"Issue New Shares"))}},83475:(e,t,n)=>{"use strict";n.d(t,{m:()=>u});var r=n(67294),a=n(33563),o=n(48672),i=n(81138),s=n(56798),l=n(66351),c=n(81055);function u(e){const[t,n]=(0,r.useState)(null);function u(){let n=t;null===n&&(n=-1),(0,a.Pe)(e.material,n),e.onClose()}return(0,r.useEffect)((()=>{e.open||n(null)}),[e.open]),r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(i.Z,null,"Enter a limit to the amount of this material you would like to produce per second. Leave the box empty to set no limit."),r.createElement(l.Z,{autoFocus:!0,placeholder:"Limit",type:"number",onChange:function(e){""===e.target.value?n(null):n(parseFloat(e.target.value))},onKeyDown:function(e){e.key===c.F.ENTER&&u()}}),r.createElement(s.Z,{onClick:u},"Limit production"))}},2636:(e,t,n)=>{"use strict";n.d(t,{b:()=>u});var r=n(67294),a=n(33563),o=n(48672),i=n(81138),s=n(56798),l=n(66351),c=n(81055);function u(e){const[t,n]=(0,r.useState)(null);function u(){let n=t;null===n&&(n=-1),(0,a.Dn)(e.product,e.city,n),e.onClose()}return(0,r.useEffect)((()=>{e.open||n(null)}),[e.open]),r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(i.Z,null,"Enter a limit to the amount of this product you would like to produce per second. Leave the box empty to set no limit."),r.createElement(l.Z,{autoFocus:!0,placeholder:"Limit",type:"number",onChange:function(e){""===e.target.value?n(null):n(parseFloat(e.target.value))},onKeyDown:function(e){e.key===c.F.ENTER&&u()}}),r.createElement(s.Z,{onClick:u},"Limit production"))}},93916:(e,t,n)=>{"use strict";n.d(t,{R:()=>b});var r=n(67294),a=n(39463),o=n(48672),i=n(32927),s=n(33244),l=n(33563),c=n(98360),u=n(81138),m=n(66351),f=n(56798),h=n(98649),d=n(26023),p=n(81055),g=n(33313),y=n(21623);function b(e){const t=(0,c.wZ)(),n=(0,c.pZ)(),b=(0,y.nd)(n.offices),[v,k]=(0,r.useState)(b.length>0?b[0]:s.CityName.Sector12),[w,E]=(0,r.useState)(""),[S,C]=(0,r.useState)(NaN),[x,N]=(0,r.useState)(NaN),M=i.vm[n.type];if(n.hasMaximumNumberProducts()||!M.product)return r.createElement(r.Fragment,null);function A(){if(!isNaN(S)&&!isNaN(x)){try{(0,l.oL)(t,n,v,w,S,x)}catch(e){(0,a.X)(e+"")}e.onClose()}}return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(u.Z,null,r.createElement("br",null),M.product.desc,r.createElement("br",null),r.createElement("br",null),"To begin developing a product, first choose the city in which it will be designed. The stats of your employees in the selected city affect the properties of the finished product, such as its quality, performance, and durability.",r.createElement("br",null),r.createElement("br",null),"You can also choose to invest money in the design and marketing of the product. Investing money in its design will result in a superior product. Investing money in marketing the product will help the product's sales."),r.createElement(d.Z,{style:{margin:"5px"},onChange:function(e){k(e.target.value)},defaultValue:v},b.map((e=>r.createElement(h.Z,{key:e,value:e},e)))),r.createElement(m.Z,{onChange:function(e){E(e.target.value)},placeholder:(T=n.type,T===s.IndustryType.Restaurant?"Restaurant Name":T===s.IndustryType.Healthcare?"Hospital Name":T===s.IndustryType.RealEstate?"Property Name":"Product Name")}),r.createElement("br",null),r.createElement(g.Y,{onChange:C,autoFocus:!0,placeholder:"Design investment"}),r.createElement(g.Y,{onChange:N,onKeyDown:function(e){e.key===p.F.ENTER&&A()},placeholder:"Marketing investment"}),r.createElement(f.Z,{onClick:A},"Develop Product"));var T}},52178:(e,t,n)=>{"use strict";n.d(t,{Q:()=>f});var r=n(67294),a=n(22115),o=n(48672),i=n(98360),s=n(81138),l=n(29919),c=n(16056),u=n(88775);function m(e){const t=(0,u.S)();return(0,i.pZ)().hasResearch("Market-TA.II")?r.createElement(r.Fragment,null,r.createElement(s.Z,{variant:"h4"},"Market-TA.II"),r.createElement(s.Z,null,"If this is enabled, then this Material will automatically be sold at the optimal price such that the amount sold matches the amount produced. (i.e. the highest possible price, while still ensuring that all produced materials will be sold)"),r.createElement("br",null),r.createElement(l.Z,{control:r.createElement(c.Z,{checked:e.mat.marketTa2,onChange:function(n){e.mat.marketTa2=n.target.checked,t()}}),label:r.createElement(s.Z,null,"Use Market-TA.II for Auto-Sale Price")})):r.createElement(r.Fragment,null)}function f(e){const t=(0,r.useState)(!1)[1],n=e.mat.getMarkupLimit();return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(r.Fragment,null,r.createElement(s.Z,{variant:"h4"},"Market-TA.I"),r.createElement(s.Z,null,"The maximum sale price you can mark this up to is ",(0,a.lb)(e.mat.marketPrice+n),". This means that if you set the sale price higher than this, you will begin to experience a loss in number of sales",r.createElement("br",null),r.createElement("br",null),"If this is enabled, then this Material will automatically be sold at the price identified by Market-TA.I (i.e. the price shown above)"),r.createElement(l.Z,{control:r.createElement(c.Z,{checked:e.mat.marketTa1,onChange:function(n){e.mat.marketTa1=n.target.checked,t((e=>!e))}}),label:r.createElement(s.Z,null,"Use Market-TA.I for Auto-Sale Price")})),r.createElement(m,{mat:e.mat}))}},25483:(e,t,n)=>{"use strict";n.d(t,{c:()=>f});var r=n(67294),a=n(22115),o=n(48672),i=n(98360),s=n(81138),l=n(29919),c=n(16056),u=n(88775);function m(e){const t=(0,u.S)();return(0,i.pZ)().hasResearch("Market-TA.II")?r.createElement(r.Fragment,null,r.createElement(s.Z,{variant:"h4"},"Market-TA.II"),r.createElement("br",null),r.createElement(s.Z,null,"If this is enabled, then this product will automatically be sold at the optimal price such that the amount sold matches the amount produced. (i.e. the highest possible price, while still ensuring that all produced materials will be sold)"),r.createElement("br",null),r.createElement(l.Z,{control:r.createElement(c.Z,{checked:e.product.marketTa2,onChange:function(n){e.product.marketTa2=n.target.checked,t()}}),label:r.createElement(s.Z,null,"Use Market-TA.II for Auto-Sale Price")})):r.createElement(r.Fragment,null)}function f(e){const t=e.product.rating/e.product.markup,n=(0,r.useState)(!1)[1];return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(r.Fragment,null,r.createElement(s.Z,{variant:"h4"},"Market-TA.I"),r.createElement(s.Z,null,"The maximum sale price you can mark this up to is ",(0,a.lb)(e.product.productionCost+t),". This means that if you set the sale price higher than this, you will begin to experience a loss in number of sales",r.createElement("br",null),r.createElement("br",null),"If this is enabled, then this product will automatically be sold at the price identified by Market-TA.I (i.e. the price shown above)"),r.createElement(l.Z,{control:r.createElement(c.Z,{checked:e.product.marketTa1,onChange:function(t){e.product.marketTa1=t.target.checked,n((e=>!e))}}),label:r.createElement(s.Z,null,"Use Market-TA.I for Auto-Sale Price")})),r.createElement(m,{product:e.product}))}},57900:(e,t,n)=>{"use strict";n.d(t,{H:()=>p});var r=n(67294),a=n(39463),o=n(51004),i=n(22115),s=n(33563),l=n(48672),c=n(98360),u=n(81138),m=n(66351),f=n(56798),h=n(81055);function d(e){const t=(0,c.wZ)(),n=(0,c.pZ)(),[l,d]=(0,r.useState)(""),[p,g]=(0,r.useState)(!1);function y(e){const t=parseFloat(e.amount),n=t*e.mat.marketPrice,a=o.d[e.mat.name].size;return t>(e.warehouse.size-e.warehouse.sizeUsed)/a?(g(!0),r.createElement(r.Fragment,null,r.createElement(u.Z,{color:"error"},"Not enough warehouse space to purchase this amount"))):isNaN(n)||t<0?(g(!0),r.createElement(r.Fragment,null,r.createElement(u.Z,{color:"error"},"Invalid input for Bulk Purchase amount"))):(g(!1),r.createElement(r.Fragment,null,r.createElement(u.Z,null,"Purchasing ",(0,i.AN)(t)," of ",e.mat.name," will cost ",(0,i.lb)(n))))}function b(){try{(0,s._A)(t,n,e.warehouse,e.mat,parseFloat(l))}catch(e){(0,a.X)(e+"")}e.onClose()}return r.createElement(r.Fragment,null,r.createElement(u.Z,null,"Enter the amount of ",e.mat.name," you would like to bulk purchase. This purchases the specified amount instantly (all at once)."),r.createElement(y,{warehouse:e.warehouse,mat:e.mat,amount:l}),r.createElement(m.Z,{value:l,onChange:function(e){d(e.target.value)},type:"number",placeholder:"Bulk Purchase amount",onKeyDown:function(e){e.key===h.F.ENTER&&b()}}),r.createElement(f.Z,{disabled:p,onClick:b},"Confirm Bulk Purchase"))}function p(e){const t=(0,c.pZ)(),[n,o]=(0,r.useState)(e.mat.buyAmount?e.mat.buyAmount:0);function i(){if(null!==n){try{(0,s.MO)(t,e.mat,n)}catch(e){(0,a.X)(e+"")}e.onClose()}}return r.createElement(l.u,{open:e.open,onClose:e.onClose},r.createElement(u.Z,null,"Enter the amount of ",e.mat.name," you would like to purchase per second. This material's cost changes constantly.",e.disablePurchaseLimit?"Note: Purchase amount is disabled as smart supply is enabled":""),r.createElement(m.Z,{value:n,onChange:function(e){o(parseFloat(e.target.value))},autoFocus:!0,placeholder:"Purchase amount",type:"number",disabled:e.disablePurchaseLimit,onKeyDown:function(e){e.key===h.F.ENTER&&i()}}),r.createElement(f.Z,{disabled:e.disablePurchaseLimit,onClick:i},"Confirm"),r.createElement(f.Z,{disabled:e.disablePurchaseLimit,onClick:function(){e.mat.buyAmount=0,e.onClose()}},"Clear Purchase"),r.createElement(d,{onClose:e.onClose,mat:e.mat,warehouse:e.warehouse}))}},84212:(e,t,n)=>{"use strict";n.d(t,{D:()=>k});var r=n(67294),a=n(48672),o=n(32927),i=n(80692),s=n(33563),l=n(78845),c=n(51087),u=n(39463),m=n(81138),f=n(17575),h=n(56798),d=n(30120),p=n(51627),g=n(23508),y=n(60181),b=n(27036);function v(e){let{n:t,division:n}=e;const[a,o]=(0,r.useState)(!1);if(null===t)return r.createElement(r.Fragment,null);const k=l.k[t.researchName];let w=n.researchPointsr.createElement(f.Z,{title:r.createElement(m.Z,null,"Research points: ",k.cost,r.createElement("br",null),k.description)},e),N=r.createElement(d.Z,null,x(r.createElement("span",null,r.createElement(h.Z,{color:C,disabled:w&&!t.researched,onClick:S,style:{width:"100%",textAlign:"left",justifyContent:"unset"}},t.researched&&r.createElement(b.Z,{sx:{mr:1}}),t.researchName))));return 0===t.children.length?N:r.createElement(d.Z,null,r.createElement(d.Z,{display:"flex",sx:{border:"1px solid "+c.Z.theme.well}},x(r.createElement("span",{style:{width:"100%"}},r.createElement(h.Z,{color:C,disabled:w&&!t.researched,onClick:S,sx:{width:"100%",textAlign:"left",justifyContent:"unset",borderColor:c.Z.theme.button}},t.researched&&r.createElement(b.Z,{sx:{mr:1}}),t.researchName))),r.createElement(h.Z,{onClick:()=>o((e=>!e)),sx:{borderColor:c.Z.theme.button,minWidth:"fit-content"}},a?r.createElement(y.Z,{color:"primary"}):r.createElement(g.Z,{color:"primary"}))),r.createElement(p.Z,{in:a,unmountOnExit:!0},r.createElement(d.Z,{m:1},t.children.map((e=>r.createElement(v,{key:e.researchName,division:n,n:e}))))))}function k(e){const t=o.E5[e.industry.type];return void 0===t?r.createElement(r.Fragment,null):r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(v,{division:e.industry,n:t.root}),r.createElement(m.Z,{sx:{mt:1}},"Research points: ",e.industry.researchPoints.toFixed(3),r.createElement("br",null),"Multipliers from research:",r.createElement("br",null),"* Advertising Multiplier: x",t.getAdvertisingMultiplier(),r.createElement("br",null),"* Employee Charisma Multiplier: x",t.getEmployeeChaMultiplier(),r.createElement("br",null),"* Employee Creativity Multiplier: x",t.getEmployeeCreMultiplier(),r.createElement("br",null),"* Employee Efficiency Multiplier: x",t.getEmployeeEffMultiplier(),r.createElement("br",null),"* Employee Intelligence Multiplier: x",t.getEmployeeIntMultiplier(),r.createElement("br",null),"* Production Multiplier: x",t.getProductionMultiplier(),r.createElement("br",null),"* Sales Multiplier: x",t.getSalesMultiplier(),r.createElement("br",null),"* Scientific Research Multiplier: x",t.getScientificResearchMultiplier(),r.createElement("br",null),"* Storage Multiplier: x",t.getStorageMultiplier()))}},739:(e,t,n)=>{"use strict";n.d(t,{Q:()=>f});var r=n(67294),a=n(72360),o=n(48672),i=n(52947),s=n(24815),l=n(49173),c=n(81138),u=n(56798),m=n(66351);function f(e){var t;let n=15e10;null!==(t=l.J5.corporation)&&void 0!==t&&t.seedFunded||(n/=3);const f=l.J5.canAfford(n),[h,d]=(0,r.useState)("");return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(c.Z,null,"Would you like to sell your position as CEO and start a new corporation? Everything from your current corporation will be gone and you start fresh.",r.createElement("br",null),r.createElement("br",null),"If you would like to start new one, please enter a name for your corporation below:"),r.createElement(m.Z,{autoFocus:!0,placeholder:"Corporation Name",onChange:function(e){d(e.target.value)},value:h}),3===l.J5.bitNodeN&&r.createElement(u.Z,{onClick:function(){""!=h&&(l.J5.startCorporation(h,!0),e.onClose(),i.F.toPage(s.T3.Corporation))},disabled:""==h},"Use seed money"),r.createElement(u.Z,{onClick:function(){f&&""!=h&&(l.J5.startCorporation(h,!1),l.J5.loseMoney(n,"corporation"),e.onClose(),i.F.toPage(s.T3.Corporation))},disabled:""==h||!f},"Self-Fund (",r.createElement(a.W,{money:n,forPurchase:!0}),")"))}},45774:(e,t,n)=>{"use strict";n.d(t,{H:()=>g});var r=n(67294),a=n(48672),o=n(81138),i=n(56798),s=n(98649),l=n(26023),c=n(98360),u=n(33244),m=n(80692),f=n(22115),h=n(33563),d=n(39463),p=n(21623);function g(e){const t=(0,c.wZ)(),n=[...t.divisions.values()],[g,y]=(0,r.useState)(n[0]);if(0===n.length)return r.createElement(r.Fragment,null);const b=function(){let e=g.startingCost;for(const t of(0,p.nd)(g.offices))t!==u.CityName.Sector12&&(e+=m.officeInitialCost,g.warehouses[t]&&(e+=m.warehouseInitialCost));return e/=2,e}();return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Would you like to sell a division?",r.createElement("br",null),"You'll get back half the money you've spent on starting the division and expanding to offices and warehouses."),r.createElement(l.Z,{value:g.name,onChange:function(e){const n=t.divisions.get(e.target.value);n&&y(n)}},n.map((e=>r.createElement(s.Z,{key:e.name,value:e.name},e.name)))),r.createElement(o.Z,null,"Division ",g.name," has:"),r.createElement(o.Z,null,"Profit: ",(0,f.lb)((g.lastCycleRevenue-g.lastCycleExpenses)/10)," / sec"," "),r.createElement(o.Z,null,"Cities:",(0,p.nd)(g.offices).length),r.createElement(o.Z,null,"Warehouses:",(0,p.nd)(g.warehouses).length),g.makesProducts??r.createElement(o.Z,null,"Products: ",g.products.size),r.createElement("br",null),r.createElement(o.Z,null,"Sell price: ",(0,f.lb)(b)),r.createElement(i.Z,{onClick:function(){(0,h.aq)(t,g.name),t.funds+=b,e.onClose(),(0,d.X)(`Sold ${g.name} for ${(0,f.lb)(b)}, you now have space for ${t.maxDivisions-t.divisions.size} more divisions.`)}},"Sell division")))}},86326:(e,t,n)=>{"use strict";n.d(t,{n:()=>m});var r=n(67294),a=n(39463),o=n(33563),i=n(48672),s=n(81138),l=n(66351),c=n(56798),u=n(81055);function m(e){const[t,n]=(0,r.useState)(e.mat.desiredSellAmount+""),[m,f]=(0,r.useState)(function(e){let t=e.desiredSellPrice?e.desiredSellPrice+"":"";return e.marketTa2?t+=" (Market-TA.II)":e.marketTa1&&(t+=" (Market-TA.I)"),t}(e.mat));function h(){try{(0,o.Sz)(e.mat,t,m)}catch(e){(0,a.X)(e+"")}e.onClose()}function d(e){e.key===u.F.ENTER&&h()}return r.createElement(i.u,{open:e.open,onClose:e.onClose},r.createElement(s.Z,null,"Enter the maximum amount of ",e.mat.name," you would like to sell per second, as well as the price at which you would like to sell.",r.createElement("br",null),r.createElement("br",null),"If the sell amount is set to 0, then the material will not be sold. If the sell price is set to 0, then the material will be discarded.",r.createElement("br",null),r.createElement("br",null),"Setting the sell amount to 'MAX' will result in you always selling the maximum possible amount of the material.",r.createElement("br",null),r.createElement("br",null),"When setting the sell amount, you can use the 'PROD' variable to designate a dynamically changing amount that depends on your production. For example, if you set the sell amount to 'PROD-5' then you will always sell 5 less of the material than you produce.",r.createElement("br",null),r.createElement("br",null),"When setting the sell price, you can use the 'MP' variable to designate a dynamically changing price that depends on the market price. For example, if you set the sell price to 'MP+10' then it will always be sold at $10 above the market price."),r.createElement("br",null),r.createElement(l.Z,{value:t,autoFocus:!0,type:"text",placeholder:"Sell amount",onChange:function(e){n(e.target.value)},onKeyDown:d}),r.createElement(l.Z,{value:m,type:"text",placeholder:"Sell price",onChange:function(e){f(e.target.value)},onKeyDown:d}),r.createElement(c.Z,{onClick:h},"Confirm"))}},52983:(e,t,n)=>{"use strict";n.d(t,{a:()=>h});var r=n(67294),a=n(39463),o=n(33563),i=n(48672),s=n(81138),l=n(66351),c=n(56798),u=n(29919),m=n(16056),f=n(81055);function h(e){const[t,n]=(0,r.useState)(!0),[h,d]=(0,r.useState)((e.product.cityData[e.city].desiredSellAmount??"").toString()),[p,g]=(0,r.useState)(function(e,t){let n=String(e.cityData[t].desiredSellPrice||"");return e.marketTa2?n+=" (Market-TA.II)":e.marketTa1&&(n+=" (Market-TA.I)"),n}(e.product,e.city));function y(){try{(0,o.qv)(e.product,e.city,h,p,t)}catch(e){(0,a.X)(e+"")}e.onClose()}function b(e){e.key===f.F.ENTER&&y()}return r.createElement(i.u,{open:e.open,onClose:e.onClose},r.createElement(s.Z,null,"Enter the maximum amount of ",e.product.name," you would like to sell per second, as well as the price at which you would like to sell.",r.createElement("br",null),r.createElement("br",null),"If the sell amount is set to 0, then the product will not be sold. If the sell price is set to 0, then the product will be discarded.",r.createElement("br",null),r.createElement("br",null),"Setting the sell amount to 'MAX' will result in you always selling the maximum possible amount of the product.",r.createElement("br",null),r.createElement("br",null),"When setting the sell amount, you can use the 'PROD' variable to designate a dynamically changing amount that depends on your production. For example, if you set the sell amount to 'PROD-1' then you will always sell 1 less of the product than you produce.",r.createElement("br",null),r.createElement("br",null),"When setting the sell price, you can use the 'MP' variable to set a dynamically changing price that depends on the product's estimated market price. For example, if you set it to 'MP*5' then it will always be sold at five times the estimated market price."),r.createElement("br",null),r.createElement(l.Z,{value:h,autoFocus:!0,type:"text",placeholder:"Sell amount",onChange:function(e){d(e.target.value)},onKeyDown:b}),r.createElement(l.Z,{value:p,type:"text",placeholder:"Sell price",onChange:function(e){g(e.target.value)},onKeyDown:b}),r.createElement(c.Z,{onClick:y},"Confirm"),r.createElement(u.Z,{control:r.createElement(m.Z,{checked:t,onChange:function(e){n(e.target.checked)}}),label:r.createElement(s.Z,null,"Use same 'Sell Amount' for all cities")}))}},82737:(e,t,n)=>{"use strict";n.d(t,{R:()=>p});var r=n(67294),a=n(22115),o=n(39463),i=n(48672),s=n(98360),l=n(81138),c=n(56798),u=n(72360),m=n(33563),f=n(81055),h=n(33313),d=n(96486);function p(e){const t=(0,s.wZ)(),[n,p]=(0,r.useState)(NaN),g=isNaN(n)||n<=0||n>=t.numShares;function y(e){if(null===e.shares)return r.createElement(r.Fragment,null);let n="";if(isNaN(e.shares)||e.shares<=0||!(0,d.isInteger)(e.shares))n="ERROR: Invalid value entered for number of shares to sell";else if(e.shares>t.numShares)n="You don't have this many shares to sell!";else if(e.shares===t.numShares)n="You can not sell all your shares!";else if(e.shares>1e14)n="You can't sell more than 100t shares at once!";else{const r=t.calculateShareSale(e.shares)[0];n=`Sell ${e.shares} shares for a total of ${(0,a.lb)(r)}`}return r.createElement(l.Z,null,r.createElement("small",null,n))}function b(){if(!g)try{const i=(0,m.aT)(t,n);e.onClose(),(0,o.X)(r.createElement(r.Fragment,null,"Sold ",(0,a.lb)(n)," shares for",r.createElement(u.W,{money:i}),". The corporation's stock price fell to  ",r.createElement(u.W,{money:t.sharePrice}),"as a result of dilution.")),e.rerender()}catch(e){(0,o.X)(e+"")}}return r.createElement(i.u,{open:e.open,onClose:e.onClose},r.createElement(l.Z,null,"Enter the number of shares you would like to sell. The money from selling your shares will go directly to you (NOT your Corporation).",r.createElement("br",null),r.createElement("br",null),"The amount sold must be an integer between 1 and 100t.",r.createElement("br",null),r.createElement("br",null),"Selling your shares will cause your corporation's stock price to fall due to dilution. Furthermore, selling a large number of shares all at once will have an immediate effect in reducing your stock price.",r.createElement("br",null),r.createElement("br",null),"The current price of your company's stock is ",(0,a.lb)(t.sharePrice)),r.createElement("br",null),r.createElement(h.Y,{variant:"standard",autoFocus:!0,placeholder:"Shares to sell",onChange:p,onKeyDown:function(e){e.key===f.F.ENTER&&b()}}),r.createElement(c.Z,{disabled:g,onClick:b,sx:{mx:1}},"Sell shares"),r.createElement(y,{shares:n,corp:t}))}},82644:(e,t,n)=>{"use strict";n.d(t,{v:()=>d});var r=n(67294),a=n(33563),o=n(39463),i=n(48672),s=n(98360),l=n(81138),c=n(29919),u=n(16056),m=n(88775),f=n(21623);function h(e){const[t,n]=(0,r.useState)(e.warehouse.smartSupplyOptions[e.matName]);return r.createElement(r.Fragment,null,"label=",r.createElement(l.Z,null,e.warehouse.materials[e.matName].name),r.createElement(c.Z,{control:r.createElement(u.Z,{checked:"leftovers"==t,onChange:function(){const r="leftovers"!=t?"leftovers":"none";try{const t=e.matName,n=e.warehouse.materials[t];(0,a.VG)(e.warehouse,n,r)}catch(e){(0,o.X)(e+"")}n(r)}}),label:r.createElement(l.Z,null,"Use leftovers")}),r.createElement(c.Z,{control:r.createElement(u.Z,{checked:"imports"==t,onChange:function(){const r="imports"!=t?"imports":"none";try{const t=e.matName,n=e.warehouse.materials[t];(0,a.VG)(e.warehouse,n,r)}catch(e){(0,o.X)(e+"")}n(r)}}),label:r.createElement(l.Z,null,"Use imported")}),r.createElement("br",null))}function d(e){const t=(0,s.pZ)(),n=(0,m.S)(),o=[];for(const n of(0,f.nd)(t.requiredMaterials))e.warehouse.materials[n]&&o.push(r.createElement(h,{key:n,warehouse:e.warehouse,matName:n}));return r.createElement(i.u,{open:e.open,onClose:e.onClose},r.createElement(r.Fragment,null,r.createElement(l.Z,null,"Smart Supply purchases the exact amount of materials needed for maximal production."),r.createElement("br",null),r.createElement(c.Z,{control:r.createElement(u.Z,{checked:e.warehouse.smartSupplyEnabled,onChange:function(t){(0,a.mg)(e.warehouse,t.target.checked),n()}}),label:r.createElement(l.Z,null,"Enable Smart Supply")}),r.createElement("br",null),r.createElement(l.Z,null,"Options:",r.createElement("ul",null,r.createElement("li",null,'Use leftovers takes the amount of that material already in storage into account when purchasing new ones. This also accounts for imports, since they are "leftovers" by the time purchasing happens.',r.createElement("br",null),r.createElement("i",null,"This is usually the option you want.")),r.createElement("li",null,"Use imported takes ",r.createElement("b",null,"only")," the amount of that materials that were imported in the previous cycle into account. This is useful when dealing with specialty situations, like importing materials that also boost production.")),"If neither is toggled on, Smart Supply will ignore any materials stored and attempts to buy as much as is needed for production."),o))}},19575:(e,t,n)=>{"use strict";n.d(t,{H:()=>p});var r=n(67294),a=n(22115),o=n(39463),i=n(33563),s=n(72360),l=n(48672),c=n(98360),u=n(81138),m=n(56798),f=n(66351),h=n(30120),d=n(81055);function p(e){const t=(0,c.wZ)(),[n,p]=(0,r.useState)(0),g=n*e.office.numEmployees,y=t.funds>=g;function b(){if(null===n||isNaN(n)||n<0)(0,o.X)("Invalid value entered");else if(y){const r=(0,i.YH)(t,e.office,n),s=r>1?.2*(r-1):0;r>0&&(0,o.X)("You threw a party for the office! The morale of each employee increased by "+(0,a.T3)(s)+" and was multiplied by "+(0,a.WJ)(r)),e.rerender(),e.onClose()}else(0,o.X)("You don't have enough company funds to throw a party!")}function v(){return isNaN(n)||n<0?r.createElement(u.Z,null,"Invalid value entered!"):r.createElement(u.Z,null,"Throwing this party will cost a total of ",r.createElement(s.W,{money:g}))}return r.createElement(l.u,{open:e.open,onClose:e.onClose},r.createElement(u.Z,null,"Enter the amount of money you would like to spend PER EMPLOYEE on this office party"),r.createElement(v,null),r.createElement(h.Z,{display:"flex",alignItems:"center"},r.createElement(f.Z,{autoFocus:!0,type:"number",placeholder:"$ / employee",value:n,onChange:function(e){let t=parseFloat(e.target.value);isNaN(t)&&(t=0),p(t)},onKeyDown:function(e){e.key===d.F.ENTER&&b()}}),r.createElement(m.Z,{disabled:!y,onClick:b},"Throw Party")))}},67662:(e,t,n)=>{"use strict";n.d(t,{j:()=>d});var r=n(67294),a=n(22115),o=n(80692),i=n(33563),s=n(48672),l=n(98360),c=n(81138),u=n(56798),m=n(17575),f=n(30120);function h(e){const t=(0,l.wZ)();return r.createElement(m.Z,{title:(0,a.lb)(e.cost)},r.createElement("span",null,r.createElement(u.Z,{disabled:t.funds{return n=e.cost,r=e.size,void(t.funds=d);){const e=Math.pow(a,n+p);if(u+e>d)break;u+=e,++p}const g=o.officeInitialCost*u;return r.createElement(s.u,{open:e.open,onClose:e.onClose},r.createElement(c.Z,null,"Increase the size of your office space to fit additional employees!"),r.createElement(f.Z,{display:"flex",alignItems:"center"},r.createElement(c.Z,null,"Upgrade size: "),r.createElement(h,{onClose:e.onClose,rerender:e.rerender,office:e.office,corp:t,cost:i,size:o.officeInitialSize}),r.createElement(h,{onClose:e.onClose,rerender:e.rerender,office:e.office,corp:t,cost:m,size:5*o.officeInitialSize}),1!==p&&5!==p&&r.createElement(h,{onClose:e.onClose,rerender:e.rerender,office:e.office,corp:t,cost:g,size:p*o.officeInitialSize})))}},49997:(e,t,n)=>{"use strict";n.d(t,{V:()=>o});var r=n(93772),a=n(94515);class o{constructor(e){e?(this.id=e.fragment.id,this.x=e.x,this.y=e.y,this.highestCharge=0,this.numCharge=0,this.rotation=e.rotation):(this.id=-1,this.x=-1,this.y=-1,this.highestCharge=0,this.numCharge=0,this.rotation=0)}collide(e){const t=this.fragment(),n=e.fragment(),r=e.x-this.x,a=e.y-this.y,o=Math.max(t.shape.length,t.shape[0].length);for(let i=0;i[this.x+e[0],this.y+e[1]]))}copy(){return Object.assign({},this)}toJSON(){return(0,a.L3)("ActiveFragment",this)}static fromJSON(e){return(0,a.Id)(o,e.data)}}a.gY.ActiveFragment=o},99725:(e,t,n)=>{"use strict";n.d(t,{T:()=>r});class r{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];this.fragments=n,this._width=e,this._height=t}width(){return this._width||4}height(){return this._height||4}fragmentAt(e,t){for(const n of this.fragments)if(n.fullAt(e,t))return n}}},93772:(e,t,n)=>{"use strict";n.d(t,{Dw:()=>c,nB:()=>o,pM:()=>s,zC:()=>l});var r=n(32864),a=n(86364);const o=[];class i{constructor(e,t,n,r,a){this.id=e,this.shape=t,this.type=n,this.power=r,this.limit=a}fullAt(e,t,n){if(t<0)return!1;if(t>=this.height(n))return!1;if(e<0)return!1;if(e>=this.width(n))return!1;let[r,a,o,i]=[0,0,1,1];1===n?[r,a,o,i]=[this.width(n)-1,0,-1,1]:2===n?[r,a,o,i]=[this.width(n)-1,this.height(n)-1,-1,-1]:3===n&&([r,a,o,i]=[0,this.height(n)-1,1,-1]);let[s,l]=[r+o*e,a+i*t];return n%2==1&&([s,l]=[l,s]),this.shape[l][s]}width(e){return e%2==0?this.shape[0].length:this.shape.length}height(e){return e%2==0?this.shape.length:this.shape[0].length}neighbors(e){const t=[],n=(n,r)=>{this.fullAt(n,r,e)||t.some((e=>e[0]===n&&e[1]===r))||t.push([n,r])};for(let t=0;tt[0]===e[0]&&t[1]===e[1]))||r.push(e);return r}copy(){return Object.assign({},this)}}function s(e){for(const t of o)if(t.id===e)return t;return null}!function(){const e=!1,t=!0;o.push(new i(0,a.j.S,r.E.Hacking,1,1)),o.push(new i(1,a.j.Z,r.E.Hacking,1,1)),o.push(new i(5,a.j.T,r.E.HackingSpeed,1.3,1)),o.push(new i(6,a.j.I,r.E.HackingMoney,2,1)),o.push(new i(7,a.j.J,r.E.HackingGrow,.5,1)),o.push(new i(10,a.j.T,r.E.Strength,2,1)),o.push(new i(12,a.j.L,r.E.Defense,2,1)),o.push(new i(14,a.j.L,r.E.Dexterity,2,1)),o.push(new i(16,a.j.S,r.E.Agility,2,1)),o.push(new i(18,a.j.S,r.E.Charisma,3,1)),o.push(new i(20,a.j.I,r.E.HacknetMoney,1,1)),o.push(new i(21,a.j.O,r.E.HacknetCost,2,1)),o.push(new i(25,a.j.J,r.E.Rep,.5,1)),o.push(new i(27,a.j.J,r.E.WorkMoney,10,1)),o.push(new i(28,a.j.L,r.E.Crime,2,1)),o.push(new i(30,a.j.S,r.E.Bladeburner,.4,1)),o.push(new i(100,[[e,t,t],[t,t,e],[e,t,e]],r.E.Booster,1.1,99)),o.push(new i(101,[[t,t,t,t],[t,e,e,e]],r.E.Booster,1.1,99)),o.push(new i(102,[[e,t,t,t],[t,t,e,e]],r.E.Booster,1.1,99)),o.push(new i(103,[[t,t,t,e],[e,e,t,t]],r.E.Booster,1.1,99)),o.push(new i(104,[[e,t,t],[e,t,e],[t,t,e]],r.E.Booster,1.1,99)),o.push(new i(105,[[e,e,t],[e,t,t],[t,t,e]],r.E.Booster,1.1,99)),o.push(new i(106,[[t,e,e],[t,t,t],[t,e,e]],r.E.Booster,1.1,99)),o.push(new i(107,[[e,t,e],[t,t,t],[e,t,e]],r.E.Booster,1.1,99))}();const l=new i(-2,[],r.E.None,0,1/0),c=new i(-2,[],r.E.Delete,0,1/0)},32864:(e,t,n)=>{"use strict";let r;function a(e){switch(e){case r.HackingChance:return"+x% hack() success chance";case r.HackingSpeed:return"+x% faster hack(), grow(), and weaken()";case r.HackingMoney:return"+x% hack() power";case r.HackingGrow:return"+x% grow() power";case r.Hacking:return"+x% hacking skill";case r.Strength:return"+x% strength skill";case r.Defense:return"+x% defense skill";case r.Dexterity:return"+x% dexterity skill";case r.Agility:return"+x% agility skill";case r.Charisma:return"+x% charisma skill";case r.HacknetMoney:return"+x% hacknet production";case r.HacknetCost:return"-x% cheaper hacknet cost";case r.Rep:return"+x% reputation from factions and companies";case r.WorkMoney:return"+x% work money";case r.Crime:return"+x% crime money";case r.Bladeburner:return"+x% all bladeburner stats"}throw new Error("Calling effect for fragment type that doesn't have an effect "+e)}n.d(t,{E:()=>r,Q:()=>a}),function(e){e[e.None=0]="None",e[e.Delete=1]="Delete",e[e.HackingChance=2]="HackingChance",e[e.HackingSpeed=3]="HackingSpeed",e[e.HackingMoney=4]="HackingMoney",e[e.HackingGrow=5]="HackingGrow",e[e.Hacking=6]="Hacking",e[e.Strength=7]="Strength",e[e.Defense=8]="Defense",e[e.Dexterity=9]="Dexterity",e[e.Agility=10]="Agility",e[e.Charisma=11]="Charisma",e[e.HacknetMoney=12]="HacknetMoney",e[e.HacknetCost=13]="HacknetCost",e[e.Rep=14]="Rep",e[e.WorkMoney=15]="WorkMoney",e[e.Crime=16]="Crime",e[e.Bladeburner=17]="Bladeburner",e[e.Booster=18]="Booster"}(r||(r={}))},78573:(e,t,n)=>{"use strict";n.d(t,{kA:()=>l,ll:()=>s,n1:()=>i,y$:()=>o});var r=n(94515),a=n(15021);let o=new a.q;function i(e){o=e?JSON.parse(e,r.Ro):new a.q}function s(e,t){const n=[];for(let r=0;r{"use strict";n.d(t,{q:()=>y});var r=n(49173),a=n(33244),o=n(49997),i=n(32864),s=n(99725),l=n(58427),c=n(26433),u=n(88016),m=n(94515),f=n(92533),h=n(97740),d=n(62850),p=n(73440),g=n(89194);class y extends s.T{isBonusCharging=!1;justCharged=!0;storedCycles=0;constructor(){super()}baseSize(){return f.k.BaseSize+h.dQ.StaneksGiftExtraSize+r.J5.sourceFileLvl(13)}width(){return Math.max(2,Math.min(Math.floor(this.baseSize()/2+1),f.k.MaxSize))}height(){return Math.max(3,Math.min(Math.floor(this.baseSize()/2+.6),f.k.MaxSize))}charge(e,t){t>e.highestCharge?(e.numCharge=e.highestCharge*e.numCharge/t+1,e.highestCharge=t):e.numCharge+=t/e.highestCharge;const n=l.i[a.FactionName.ChurchOfTheMachineGod];n.playerReputation+=r.J5.mults.faction_rep*(Math.pow(t,.95)*(n.favor+100))/1e3,this.justCharged=!0}inBonus(){return this.storedCycles>=5}process(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;if(!r.J5.hasAugmentation(a.AugmentationName.StaneksGift1))return;this.storedCycles+=e;const t=this.isBonusCharging?5:1;this.isBonusCharging=!1,this.storedCycles=Math.max(0,this.storedCycles-t),this.justCharged&&(this.updateMults(),this.justCharged=!1),u.y.emit()}effect(e){let t=e.neighbors().map((e=>this.fragmentAt(e[0],e[1]))).filter((e=>!!e));t=t.filter((e=>e.fragment().type===i.E.Booster));let n=1;t=t.filter(((e,t,n)=>n.indexOf(e)===t));for(const e of t)n*=e.fragment().power;return(0,c.I)(e.highestCharge,e.numCharge,e.fragment().power,n)}canPlace(e,t,n,r){if(e<0||t<0)return!1;if(e+r.width(n)>this.width())return!1;if(t+r.height(n)>this.height())return!1;if(this.count(r)>=r.limit)return!1;const a=new o.V({x:e,y:t,rotation:n,fragment:r});for(const e of this.fragments)if(e.collide(a))return!1;return!0}place(e,t,n,r){return!!this.canPlace(e,t,n,r)&&(this.fragments.push(new o.V({x:e,y:t,rotation:n,fragment:r})),!0)}findFragment(e,t){return this.fragments.find((n=>n.x===e&&n.y===t))}count(e){let t=0;for(const n of this.fragments)n.fragment().id===e.id&&t++;return t}delete(e,t){for(let n=0;n{e.highestCharge=0,e.numCharge=0}))}calculateMults(){const e=(0,d.A7)();for(const t of this.fragments){const n=t.fragment(),r=this.effect(t);switch(n.type){case i.E.HackingChance:e.hacking_chance*=r;break;case i.E.HackingSpeed:e.hacking_speed*=r;break;case i.E.HackingMoney:e.hacking_money*=r;break;case i.E.HackingGrow:e.hacking_grow*=r;break;case i.E.Hacking:e.hacking*=r,e.hacking_exp*=r;break;case i.E.Strength:e.strength*=r,e.strength_exp*=r;break;case i.E.Defense:e.defense*=r,e.defense_exp*=r;break;case i.E.Dexterity:e.dexterity*=r,e.dexterity_exp*=r;break;case i.E.Agility:e.agility*=r,e.agility_exp*=r;break;case i.E.Charisma:e.charisma*=r,e.charisma_exp*=r;break;case i.E.HacknetMoney:e.hacknet_node_money*=r;break;case i.E.HacknetCost:e.hacknet_node_purchase_cost/=r,e.hacknet_node_ram_cost/=r,e.hacknet_node_core_cost/=r,e.hacknet_node_level_cost/=r;break;case i.E.Rep:e.company_rep*=r,e.faction_rep*=r;break;case i.E.WorkMoney:e.work_money*=r;break;case i.E.Crime:e.crime_success*=r,e.crime_money*=r;break;case i.E.Bladeburner:e.bladeburner_max_stamina*=r,e.bladeburner_stamina_gain*=r,e.bladeburner_analysis*=r,e.bladeburner_success_chance*=r}}return e}updateMults(){r.J5.applyEntropy(r.J5.entropy);const e=this.calculateMults();r.J5.mults=(0,d.VA)(r.J5.mults,e),r.J5.updateSkillLevels();const t=r.J5.sleeves.reduce(((e,t)=>e+(t.hasAugmentation(a.AugmentationName.ZOE)?1:0)),0);if(0===t)return;const n=3/(t+2),o=(0,d.Rc)(e,n);for(const e of r.J5.sleeves)if(e.hasAugmentation(a.AugmentationName.ZOE)){e.resetMultipliers();for(let t=0;t{"use strict";n.d(t,{y:()=>r});const r=new(n(13342).v)},92533:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={RAMBonus:.1,BaseSize:9,MaxSize:25}},86364:(e,t,n)=>{"use strict";n.d(t,{j:()=>o});const r=!1,a=!0,o={O:[[a,a],[a,a]],I:[[a,a,a,a]],L:[[r,r,a],[a,a,a]],J:[[a,r,r],[a,a,a]],S:[[r,a,a],[a,a,r]],Z:[[a,a,r],[r,a,a]],T:[[a,a,a],[r,a,r]]}},26433:(e,t,n)=>{"use strict";n.d(t,{I:()=>a});var r=n(97740);function a(e,t,n,a){return 1+Math.log(e+1)/60*Math.pow((t+1)/5,.07)*n*a*r.dQ.StaneksGiftPowerMultiplier}},43501:(e,t,n)=>{"use strict";n.d(t,{X:()=>f});var r=n(67294),a=n(32864),o=n(22115),i=n(28881),s=n(81138),l=n(47542),c=n(46948),u=n(49557),m=n(7272);function f(e){const t=[];return e.gift.fragments.forEach((n=>{const r=n.fragment();if(![a.E.Booster,a.E.None,a.E.Delete].includes(r.type)){const a=t.find((e=>e.type===r.type));a?(a.effect*=e.gift.effect(n),a.coordinate.push({x:n.x,y:n.y})):t.push({coordinate:[{x:n.x,y:n.y}],effect:e.gift.effect(n),type:r.type})}})),r.createElement(i.Z,{sx:{mb:1}},r.createElement(s.Z,{variant:"h5"},"Summary of active fragments:"),r.createElement(l.Z,{sx:{display:"table",width:"100%"}},r.createElement(c.Z,null,r.createElement(u.Z,null,r.createElement(m.Z,{sx:{borderBottom:"none",p:0,m:0}},r.createElement(s.Z,null,"Coordinate")),r.createElement(m.Z,{sx:{borderBottom:"none",p:0,m:0}},r.createElement(s.Z,null,"Effect"))),t.map((e=>r.createElement(u.Z,{key:e.type},r.createElement(m.Z,{sx:{borderBottom:"none",p:0,m:0}},r.createElement(s.Z,null,e.coordinate.map((e=>"["+e.x+","+e.y+"]")))),r.createElement(m.Z,{sx:{borderBottom:"none",p:0,m:0}},r.createElement(s.Z,null,function(e,t){if((0,a.Q)(t).includes("+x%"))return(0,a.Q)(t).replace(/-*x%/,(0,o.T3)(e-1));if((0,a.Q)(t).includes("-x%")){const n=(0,o.T3)(1-1/e);return(0,a.Q)(t).replace(/-x%/,n)}return(0,a.Q)(t)}(e.effect,e.type)))))))))}},99709:(e,t,n)=>{"use strict";n.d(t,{b:()=>c});var r=n(67294),a=n(77541),o=n(7272);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;tr.createElement(o.Z,i({},e,{classes:{root:s().root,...e.classes}}));function c(e){return r.createElement(l,{style:{backgroundColor:e.color},onMouseEnter:e.onMouseEnter,onClick:e.onClick})}},83390:(e,t,n)=>{"use strict";n.d(t,{W:()=>c});var r=n(30120),a=n(47542),o=n(67294),i=n(99725),s=n(29026),l=n(78573);function c(e){const t=new i.T(e.width,e.height,e.fragments),n=(0,l.ll)(e.width,e.height);return o.createElement(r.Z,null,o.createElement(a.Z,{sx:{width:e.width,height:e.height}},o.createElement(s.r,{width:e.width,height:e.height,ghostGrid:n,gift:t,enter:()=>{},click:()=>{}})))}},32532:(e,t,n)=>{"use strict";n.d(t,{Y:()=>l});var r=n(67294),a=n(32864),o=n(22115),i=n(28881),s=n(81138);function l(e){const[,t]=(0,r.useState)(new Date);if((0,r.useEffect)((()=>{const e=setInterval((()=>t(new Date)),250);return()=>clearInterval(e)}),[]),void 0===e.fragment)return r.createElement(i.Z,{sx:{flexGrow:1}},r.createElement(s.Z,null,"[X, Y] ",e.x,", ",e.y,r.createElement("br",null),r.createElement("br",null),"ID: N/A",r.createElement("br",null),"Effect: N/A",r.createElement("br",null),"Base Power: N/A",r.createElement("br",null),"Charge: N/A",r.createElement("br",null),"root [X, Y] N/A",r.createElement("br",null)));const n=e.fragment.fragment();let l=(0,o.Jw)(e.fragment.highestCharge*e.fragment.numCharge),c="N/A";if([a.E.Booster,a.E.None,a.E.Delete].includes(n.type))l="N/A",c=`${n.power}x adjacent fragment power`;else if((0,a.Q)(n.type).includes("+x%"))c=(0,a.Q)(n.type).replace(/-*x%/,(0,o.T3)(e.gift.effect(e.fragment)-1));else if((0,a.Q)(n.type).includes("-x%")){const t=e.gift.effect(e.fragment),r=(0,o.T3)(1-1/t);c=(0,a.Q)(n.type).replace(/-x%/,r)}return r.createElement(i.Z,{sx:{flexGrow:1}},r.createElement(s.Z,null,"[X, Y] ",e.x,", ",e.y,r.createElement("br",null),r.createElement("br",null),"ID: ",e.fragment.id,r.createElement("br",null),"Effect: ",c,r.createElement("br",null),"Base Power: ",(0,o.bS)(n.power),r.createElement("br",null),"Charge: ",l,r.createElement("br",null),"root [X, Y] ",e.fragment.x,", ",e.fragment.y,r.createElement("br",null)))}},47836:(e,t,n)=>{"use strict";n.d(t,{e:()=>l});var r=n(67294),a=n(99709),o=n(49557),i=n(46948),s=n(61011);function l(e){const t=[];for(let n=0;n{"use strict";n.d(t,{O:()=>h});var r=n(67294),a=n(93772),o=n(32864),i=n(47836),s=n(22115),l=n(26023),c=n(98649),u=n(81138),m=n(30120);function f(e){const t=e.fragment.limit-e.gift.count(e.fragment),n=e.fragment.limit!==1/0?r.createElement(r.Fragment,null,t," remaining"):r.createElement(r.Fragment,null);return r.createElement(m.Z,{display:"flex"},r.createElement(m.Z,{sx:{mx:2}},r.createElement(i.e,{width:e.fragment.width(0),height:e.fragment.height(0),colorAt:(n,r)=>e.fragment.fullAt(n,r,0)?0===t?"grey":e.fragment.type===o.E.Booster?"blue":"green":""})),r.createElement(u.Z,null,e.fragment.type===o.E.Booster?`${e.fragment.power}x adjacent fragment power`:(0,o.Q)(e.fragment.type),r.createElement("br",null),"power: ",(0,s.bS)(e.fragment.power),r.createElement("br",null),n))}function h(e){const[t,n]=(0,r.useState)("None");return r.createElement(l.Z,{sx:{width:"100%"},onChange:function(t){const r=t.target.value;if(n(r),"None"===r)return void e.selectFragment(a.zC);if("Delete"===r)return void e.selectFragment(a.Dw);const o=a.nB.find((e=>e.id===r));if(void 0===o)throw new Error("Fragment selector selected an undefined fragment with id "+r);"number"==typeof r&&e.selectFragment(o)},value:t},r.createElement(c.Z,{value:"None"},r.createElement(u.Z,null,"None")),r.createElement(c.Z,{value:"Delete"},r.createElement(u.Z,null,"Delete")),a.nB.map((t=>r.createElement(c.Z,{key:t.id,value:t.id},r.createElement(f,{key:t.id,gift:e.gift,selectFragment:e.selectFragment,fragment:t})))))}},29026:(e,t,n)=>{"use strict";n.d(t,{r:()=>l});var r=n(49557),a=n(46948),o=n(67294),i=n(78573),s=n(99709);function l(e){const t=(0,i.kA)(e.gift);function n(n,r){if(e.ghostGrid[n][r]&&t[n][r])return"red";if(e.ghostGrid[n][r])return"white";if(t[n][r]){const t=e.gift.fragmentAt(n,r);if(!t)throw new Error("ActiveFragment should not be null");return function(e){let t=Math.pow((e.x+1)*(e.y+1),10),n=t,r=t;const a=[];for(let e=0;e<3;e++)t=171*t%30269,n=172*n%30307,r=170*r%30323,a.push((t/30269+n/30307+r/30323)%1);return`rgb(${256*a[0]}, ${256*a[1]}, ${256*a[2]})`}(t)}return""}const l=[];for(let t=0;te.enter(r,t),onClick:()=>e.click(r,t),color:n(r,t)}));l.push(o.createElement(r.Z,{key:t},a))}return o.createElement(a.Z,null,l)}},3505:(e,t,n)=>{"use strict";n.d(t,{O:()=>g});var r=n(67294),a=n(93772),o=n(32864),i=n(32532),s=n(33063),l=n(30120),c=n(56798),u=n(61011),m=n(29026),f=n(78573),h=n(43501),d=n(17575),p=n(81138);function g(e){const[t,n]=r.useState((0,f.ll)(e.gift.width(),e.gift.height())),[g,y]=r.useState([0,0]),[b,v]=r.useState(0),[k,w]=r.useState(a.zC);function E(t,r,a){if(y([t,r]),k.type===o.E.None||k.type===o.E.Delete)return;const i=(0,f.ll)(e.gift.width(),e.gift.height());for(let e=0;ei.length-1||r+e>i[t+n].length-1||(i[t+n][r+e]=1));n(i)}return r.useEffect((()=>{function e(e){if("q"===e.key){const e=(b-1+4)%4;v(e),E(g[0],g[1],e)}if("e"===e.key){const e=(b+1)%4;v(e),E(g[0],g[1],e)}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)})),r.createElement(r.Fragment,null,r.createElement(l.Z,{display:"flex",sx:{mb:1}},r.createElement(u.i,{sx:{mr:1}},r.createElement(m.r,{width:e.gift.width(),height:e.gift.height(),ghostGrid:t,gift:e.gift,enter:(e,t)=>E(e,t,b),click:(t,n)=>function(t,n){if(k.type!=o.E.None)if(k.type==o.E.Delete)!function(t,n){const r=e.gift.fragmentAt(t,n);void 0!==r&&e.gift.delete(r.x,r.y)}(t,n);else{if(!e.gift.canPlace(t,n,b,k))return;e.gift.place(t,n,b,k)}}(t,n)})),r.createElement(i.Y,{gift:e.gift,x:g[0],y:g[1],fragment:e.gift.fragmentAt(g[0],g[1])})),r.createElement(l.Z,{display:"flex",sx:{mb:1}},r.createElement(s.O,{gift:e.gift,selectFragment:function(t){w(t);const r=(0,f.ll)(e.gift.width(),e.gift.height());n(r)}})),r.createElement(h.X,{gift:e.gift}),r.createElement(d.Z,{title:r.createElement(p.Z,null,"WARNING : This will remove all active fragment from the grid. ",r.createElement("br",null),"All cumulated charges will be lost.")},r.createElement(c.Z,{onClick:function(){e.gift.clear()}},"Clear grid")))}},40389:(e,t,n)=>{"use strict";n.d(t,{w:()=>g});var r=n(67294),a=n(49802),o=n(72938),i=n(88016),s=n(3505),l=n(40238),c=n(39463),u=n(81138),m=n(49997),f=n(93772),h=n(83390),d=n(78016),p=n(88775);function g(e){let{staneksGift:t}=e;const n=(0,p.S)();return(0,r.useEffect)((()=>i.y.subscribe(n)),[n]),r.createElement(d.Z,{maxWidth:"lg",disableGutters:!0,sx:{mx:0}},r.createElement(u.Z,{variant:"h4"},"Stanek's Gift",r.createElement(l.Z,{sx:{ml:1,mb:0},color:"info",onClick:()=>(0,c.X)(r.createElement(r.Fragment,null,r.createElement(u.Z,null,"Stanek's Gift is a powerful, unique augmentation obtained by joining the Church of the Machine God, which can be found in Chongqing. It is only possible to join the church if you are in BitNode 13 or possess at least one level of Source File 13, and you will be turned away if you have purchased or installed any augmentations beside NeuroFlux Governors. You are, however, permitted to install augmentations as normal once you have joined the church."),r.createElement("br",null),r.createElement(u.Z,null,"Initially, those bearing the gift will find that its overwhelming power worsens all of their stats by 10%. This penalty can be overcome in time by receiving free upgrades from the Church of the Machine God faction, but the reputation requirements for these upgrades are steep, and you can only obtain reputation with the church by charging the gift."),r.createElement("br",null),r.createElement(u.Z,null,"In order to charge Stanek's Gift, the user must first arrange stat-modifying fragments within the grid located on the device. This may be done manually or by scripts that utilize the Stanek's Gift Netscript API. Not every tile of the grid must house a fragment, but fragments cannot overlap or otherwise share tiles. Fragments can be rotated, but their design does not allow them to be flipped around to mirror their original shape. Note that the size of the grid is determined by the BitNode you are currently in and the level of your Source File 13, if applicable."),r.createElement("br",null),r.createElement(u.Z,null,"There exist two kinds of fragments. The first are Stat Fragments, which take up 4 tiles of the grid. Each Stat Fragment is unique, and there is only one of each. There is no way to obtain more of these fragments. Each Stat Fragment has an associated stat that it will improve, as well as a multiplier on its effectiveness known as power. When initially placed, a Stat Fragment will have no effect. In order for the fragment to gain stat boosts, it must be charged. The other kind of fragments are known as Booster Fragments, which take up 5 tiles of the grid. There is no shortage of Booster Fragments, and it is virtually impossible to run out of them. While not providing any direct stat increases to their user, Stat Fragments increase the efficacy of adjacent Stat Fragments by 10%, and do not need to be charged."),r.createElement("br",null),r.createElement(h.W,{width:4,height:4,fragments:[new m.V({x:0,y:0,rotation:0,fragment:f.nB.find((e=>5===e.id))??f.nB[0]}),new m.V({x:0,y:2,rotation:0,fragment:f.nB.find((e=>101===e.id))??f.nB[0]})]}),r.createElement(u.Z,{sx:{fontStyle:"italic"}},"This Booster Fragment provides a bonus to the adjacent Stat Fragment."),r.createElement("br",null),r.createElement(h.W,{width:3,height:4,fragments:[new m.V({x:0,y:1,rotation:3,fragment:f.nB.find((e=>100===e.id))??f.nB[0]}),new m.V({x:0,y:0,rotation:2,fragment:f.nB.find((e=>1===e.id))??f.nB[0]})]}),r.createElement(u.Z,{sx:{fontStyle:"italic"}},"Even though the Booster Fragment touches the Stat Fragment in multiple places, the bonus is only applied once."),r.createElement("br",null),r.createElement(h.W,{width:4,height:4,fragments:[new m.V({x:0,y:0,rotation:0,fragment:f.nB.find((e=>5===e.id))??f.nB[0]}),new m.V({x:1,y:1,rotation:0,fragment:f.nB.find((e=>105===e.id))??f.nB[0]})]}),r.createElement(u.Z,{sx:{fontStyle:"italic"}},"This Booster Fragment does nothing, as it is not touching a Stat Fragment."),r.createElement("br",null),r.createElement(h.W,{width:4,height:4,fragments:[new m.V({x:0,y:0,rotation:1,fragment:f.nB.find((e=>27===e.id))??f.nB[0]}),new m.V({x:0,y:1,rotation:2,fragment:f.nB.find((e=>100===e.id))??f.nB[0]}),new m.V({x:2,y:0,rotation:1,fragment:f.nB.find((e=>30===e.id))??f.nB[0]})]}),r.createElement(u.Z,{sx:{fontStyle:"italic"}},"This Booster Fragment provides a bonus to both Stat Fragments it's touching."),r.createElement("br",null),r.createElement(u.Z,null,"Stat Fragments are charged using the stanek.chargeFragment(rootX, rootY) NetScript API function. The charging process ordinarily takes 1000ms to complete, but only takes 200ms during bonus time. When the function finishes executing, the fragment's charge levels will be raised by an amount corresponding to the number of threads that were used. Note that it is no more effective to charge a fragment many times with few threads than to charge few times with many threads, so there is no need to distribute charging jobs across multiple scripts. As a Stat Fragment's charge level is increased, its bonuses will increase, but there will be diminishing returns. As such, it is generally most efficient to charge all of the placed fragments equally. The charge level of a fragment will not decrease over time, but it will be reset to 0 upon removing it from the board or installing augmentations.")))})),r.createElement(u.Z,{sx:{mb:1}},"The gift is a grid on which you can place upgrades called fragments. The main type of fragment increases a stat, like your hacking skill or agility exp. Once a stat fragment is placed it then needs to be charged via scripts in order to become useful. The other kind of fragments are called booster fragments. They increase the efficiency of the neighboring fragments (not diagonally). Use Q/E to rotate fragments."),t.storedCycles>5&&r.createElement(u.Z,{sx:{mb:1}},"Bonus time: ",(0,a.UF)(o.t.MilliPerCycle*t.storedCycles)),r.createElement(s.O,{gift:t}))}},10872:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(72938),a=n(49173),o=n(48196),i=n(46085);class s{time=0;hacking_success_weight=0;strength_success_weight=0;defense_success_weight=0;dexterity_success_weight=0;agility_success_weight=0;charisma_success_weight=0;hacking_exp=0;strength_exp=0;defense_exp=0;dexterity_exp=0;agility_exp=0;charisma_exp=0;intelligence_exp=0;constructor(e,t,n,r,a,o,i,s){this.workName=e,this.tooltipText=t,this.type=n,this.time=r,this.money=a,this.difficulty=o,this.karma=i,this.hacking_success_weight=s.hacking_success_weight?s.hacking_success_weight:0,this.strength_success_weight=s.strength_success_weight?s.strength_success_weight:0,this.defense_success_weight=s.defense_success_weight?s.defense_success_weight:0,this.dexterity_success_weight=s.dexterity_success_weight?s.dexterity_success_weight:0,this.agility_success_weight=s.agility_success_weight?s.agility_success_weight:0,this.charisma_success_weight=s.charisma_success_weight?s.charisma_success_weight:0,this.hacking_exp=s.hacking_exp?s.hacking_exp:0,this.strength_exp=s.strength_exp?s.strength_exp:0,this.defense_exp=s.defense_exp?s.defense_exp:0,this.dexterity_exp=s.dexterity_exp?s.dexterity_exp:0,this.agility_exp=s.agility_exp?s.agility_exp:0,this.charisma_exp=s.charisma_exp?s.charisma_exp:0,this.intelligence_exp=s.intelligence_exp?s.intelligence_exp:0,this.kills=s.kills?s.kills:0}commit(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e<=0&&(e=1),a.J5.startWork(new o.Q({crimeType:this.type,singularity:null!==t})),this.time}successRate(e){let t=this.hacking_success_weight*e.skills.hacking+this.strength_success_weight*e.skills.strength+this.defense_success_weight*e.skills.defense+this.dexterity_success_weight*e.skills.dexterity+this.agility_success_weight*e.skills.agility+this.charisma_success_weight*e.skills.charisma+r.t.IntelligenceCrimeWeight*e.skills.intelligence;return t/=r.t.MaxSkillLevel,t/=this.difficulty,t*=e.mults.crime_success,t*=(0,i.f)(e.skills.intelligence,1),Math.min(t,1)}}},35100:(e,t,n)=>{"use strict";n.d(t,{K:()=>l,T:()=>s});var r=n(35333),a=n(49173),o=n(50862),i=n(33244);function s(e){const t=r.W[e].successRate(a.J5);return Math.random()<=t}function l(e){if((0,o.m)("CrimeType").isMember(e))return r.W[e];const t=(0,o.m)("CrimeType").fuzzyGetMember(e);return t?r.W[t]:(e=e.toLowerCase()).includes("shoplift")?r.W[i.CrimeType.shoplift]:e.includes("rob")&&e.includes("store")?r.W[i.CrimeType.robStore]:e.includes("mug")?r.W[i.CrimeType.mug]:e.includes("larceny")?r.W[i.CrimeType.larceny]:e.includes("drugs")?r.W[i.CrimeType.dealDrugs]:e.includes("bond")&&e.includes("forge")?r.W[i.CrimeType.bondForgery]:(e.includes("traffic")||e.includes("illegal"))&&e.includes("arms")?r.W[i.CrimeType.traffickArms]:e.includes("homicide")?r.W[i.CrimeType.homicide]:e.includes("grand")&&e.includes("auto")?r.W[i.CrimeType.grandTheftAuto]:e.includes("kidnap")?r.W[i.CrimeType.kidnap]:e.includes("assassin")?r.W[i.CrimeType.assassination]:e.includes("heist")?r.W[i.CrimeType.heist]:null}},35333:(e,t,n)=>{"use strict";n.d(t,{W:()=>i});var r=n(10872),a=n(72938),o=n(33244);const i={[o.CrimeType.shoplift]:new r.Z("to shoplift","Attempt to shoplift from a low-end retailer",o.CrimeType.shoplift,2e3,15e3,.05,.1,{dexterity_success_weight:1,agility_success_weight:1,dexterity_exp:2,agility_exp:2}),[o.CrimeType.robStore]:new r.Z("to rob a store","Attempt to commit armed robbery on a high-end store",o.CrimeType.robStore,6e4,4e5,.2,.5,{hacking_exp:30,dexterity_exp:45,agility_exp:45,hacking_success_weight:.5,dexterity_success_weight:2,agility_success_weight:1,intelligence_exp:7.5*a.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.mug]:new r.Z("to mug","Attempt to mug a random person on the street",o.CrimeType.mug,4e3,36e3,.2,.25,{strength_exp:3,defense_exp:3,dexterity_exp:3,agility_exp:3,strength_success_weight:1.5,defense_success_weight:.5,dexterity_success_weight:1.5,agility_success_weight:.5}),[o.CrimeType.larceny]:new r.Z("larceny","Attempt to rob property from someone's house",o.CrimeType.larceny,9e4,8e5,1/3,1.5,{hacking_exp:45,dexterity_exp:60,agility_exp:60,hacking_success_weight:.5,dexterity_success_weight:1,agility_success_weight:1,intelligence_exp:15*a.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.dealDrugs]:new r.Z("to deal drugs","Attempt to deal drugs",o.CrimeType.dealDrugs,1e4,12e4,1,.5,{dexterity_exp:5,agility_exp:5,charisma_exp:10,charisma_success_weight:3,dexterity_success_weight:2,agility_success_weight:1}),[o.CrimeType.bondForgery]:new r.Z("to forge bonds","Attempt to forge corporate bonds",o.CrimeType.bondForgery,3e5,45e5,.5,.1,{hacking_exp:100,dexterity_exp:150,charisma_exp:15,hacking_success_weight:.05,dexterity_success_weight:1.25,intelligence_exp:60*a.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.traffickArms]:new r.Z("to traffic arms","Attempt to smuggle illegal arms into the city",o.CrimeType.traffickArms,4e4,6e5,2,1,{strength_exp:20,defense_exp:20,dexterity_exp:20,agility_exp:20,charisma_exp:40,charisma_success_weight:1,strength_success_weight:1,defense_success_weight:1,dexterity_success_weight:1,agility_success_weight:1}),[o.CrimeType.homicide]:new r.Z("homicide","Attempt to murder a random person on the street",o.CrimeType.homicide,3e3,45e3,1,3,{strength_exp:2,defense_exp:2,dexterity_exp:2,agility_exp:2,strength_success_weight:2,defense_success_weight:2,dexterity_success_weight:.5,agility_success_weight:.5,kills:1}),[o.CrimeType.grandTheftAuto]:new r.Z("grand theft auto","Attempt to commit grand theft auto",o.CrimeType.grandTheftAuto,8e4,16e5,8,5,{strength_exp:20,defense_exp:20,dexterity_exp:20,agility_exp:80,charisma_exp:40,hacking_success_weight:1,strength_success_weight:1,dexterity_success_weight:4,agility_success_weight:2,charisma_success_weight:2,intelligence_exp:16*a.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.kidnap]:new r.Z("to kidnap","Attempt to kidnap and ransom a high-profile-target",o.CrimeType.kidnap,12e4,36e5,5,6,{strength_exp:80,defense_exp:80,dexterity_exp:80,agility_exp:80,charisma_exp:80,charisma_success_weight:1,strength_success_weight:1,dexterity_success_weight:1,agility_success_weight:1,intelligence_exp:26*a.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.assassination]:new r.Z("to assassinate","Attempt to assassinate a high-profile target",o.CrimeType.assassination,3e5,12e6,8,10,{strength_exp:300,defense_exp:300,dexterity_exp:300,agility_exp:300,strength_success_weight:1,dexterity_success_weight:2,agility_success_weight:1,intelligence_exp:65*a.t.IntelligenceCrimeBaseExpGain,kills:1}),[o.CrimeType.heist]:new r.Z("a heist","Attempt to pull off the ultimate heist",o.CrimeType.heist,6e5,12e7,18,15,{hacking_exp:450,strength_exp:450,defense_exp:450,dexterity_exp:450,agility_exp:450,charisma_exp:450,hacking_success_weight:1,strength_success_weight:1,defense_success_weight:1,dexterity_success_weight:1,agility_success_weight:1,charisma_success_weight:1,intelligence_exp:130*a.t.IntelligenceCrimeBaseExpGain})}},4348:(e,t,n)=>{"use strict";let r;n.d(t,{X:()=>r}),function(e){e.shoplift="Shoplift",e.robStore="Rob Store",e.mug="Mug",e.larceny="Larceny",e.dealDrugs="Deal Drugs",e.bondForgery="Bond Forgery",e.traffickArms="Traffick Arms",e.homicide="Homicide",e.grandTheftAuto="Grand Theft Auto",e.kidnap="Kidnap",e.assassination="Assassination",e.heist="Heist"}(r||(r={}))},19468:(e,t,n)=>{"use strict";n.d(t,{Km:()=>d,u2:()=>m,uN:()=>f,y$:()=>h});var r=n(67294),a=n(4852),o=n(49173),i=n(65065),s=n(40425),l=n(22115),c=n(72360),u=n(95814);function m(){const e=o.J5.getCurrentServer();null!==e&&s.r.DarkWeb==e.hostname&&i.o.print("You are now connected to the dark web. From the dark web you can purchase illegal items. Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name]' to purchase an item. Use 'buy -a' to purchase all unowned items.")}function f(){for(const e of Object.keys(a.L)){const t=a.L[e],n=o.J5.getHomeComputer().programs.includes(t.program)?r.createElement("span",{style:{color:"green"}},"[OWNED]"):r.createElement(c.W,{money:t.price});i.o.printRaw(r.createElement(r.Fragment,null,r.createElement("span",null,t.program)," - ",r.createElement("span",null,n)," - ",r.createElement("span",null,t.description)))}}function h(e){e=e.toLowerCase();let t=null;for(const n of Object.keys(a.L)){const r=a.L[n];r.program.toLowerCase()==e&&(t=r)}null!==t?o.J5.hasProgram(t.program)?i.o.print("You already have the "+t.program+" program"):o.J5.moneyo.J5.money)i.o.error("Not enough money to purchase remaining programs, "+(0,l.lb)(t)+" required");else for(const t of e)h(t.program);else i.o.print("All available programs have been purchased already.")}},34436:(e,t,n)=>{"use strict";n.d(t,{i:()=>r});class r{constructor(e,t,n){this.program=e,this.price=t,this.description=n}}},4852:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(34436),a=n(33244);const o={BruteSSHProgram:new r.i(a.CompletedProgramName.bruteSsh,5e5,"Opens up SSH Ports."),FTPCrackProgram:new r.i(a.CompletedProgramName.ftpCrack,15e5,"Opens up FTP Ports."),RelaySMTPProgram:new r.i(a.CompletedProgramName.relaySmtp,5e6,"Opens up SMTP Ports."),HTTPWormProgram:new r.i(a.CompletedProgramName.httpWorm,3e7,"Opens up HTTP Ports."),SQLInjectProgram:new r.i(a.CompletedProgramName.sqlInject,25e7,"Opens up SQL Ports."),ServerProfiler:new r.i(a.CompletedProgramName.serverProfiler,5e5,"Displays detailed server information."),DeepscanV1:new r.i(a.CompletedProgramName.deepScan1,5e5,"Enables 'scan-analyze' with a depth up to 5."),DeepscanV2:new r.i(a.CompletedProgramName.deepScan2,25e6,"Enables 'scan-analyze' with a depth up to 10."),AutolinkProgram:new r.i(a.CompletedProgramName.autoLink,1e6,"Enables direct connect via 'scan-analyze'."),FormulasProgram:new r.i(a.CompletedProgramName.formulas,5e9,"Unlock access to the formulas API.")}},78008:(e,t,n)=>{"use strict";n.d(t,{V:()=>M});var r=n(67294),a=n(81138),o=n(49173),i=n(33244),s=n(27629),l=n(25591),c=n(38853),u=n(4664),m=n(99419),f=n(81533),h=n(95096),d=n(94519),p=n(7666),g=n(87525),y=n(67821),b=n(46729),v=n(58028),k=n(79151),w=n(90821),E=n(80386),S=n(80423),C=n(88983),x=n(84501),N=n(52107);function M(){return(0,r.useEffect)((()=>{o.J5.giveExploit(N.VX.YoureNotMeantToAccessThis)}),[]),r.createElement(r.Fragment,null,r.createElement(a.Z,null,"Development Menu - Only meant to be used for testing/debugging"),r.createElement(s.L,null),r.createElement(c.W,null),r.createElement(u.E,null),r.createElement(m.S,null),r.createElement(f.x,null),r.createElement(h.U,null),r.createElement(d.O,null),r.createElement(p.l,null),o.J5.bladeburner&&r.createElement(g.Z,{bladeburner:o.J5.bladeburner}),o.J5.gang&&r.createElement(y.D,null),o.J5.corporation&&r.createElement(b.o,null),r.createElement(v.d,null),o.J5.hasWseAccount&&r.createElement(k.n,null),o.J5.sleeves.length>0&&r.createElement(w.V,null),o.J5.augmentations.some((e=>e.name===i.AugmentationName.StaneksGift1))&&r.createElement(E.r,null),r.createElement(l.x,null),r.createElement(C.u,null),r.createElement(x.H,null),r.createElement(S.L,null))}},88983:(e,t,n)=>{"use strict";n.d(t,{u:()=>y});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(34265),m=n(17575),f=n(73595),h=n(27412),d=n(49173),p=n(30518),g=n(2827);function y(){const[e,t]=(0,r.useState)(d.J5.achievements.map((e=>e.ID)));return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Achievements")),r.createElement(i.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null),r.createElement("td",null,r.createElement(l.Z,null,"Achievements:")),r.createElement("td",null,r.createElement(u.Z,null,r.createElement(c.Z,{onClick:function(){Object.values(p.E).forEach((e=>d.J5.giveAchievement(e.ID))),t(d.J5.achievements.map((e=>e.ID)))}},"Grant All"),r.createElement(c.Z,{onClick:function(){d.J5.achievements=[],t(d.J5.achievements.map((e=>e.ID)))}},"Clear"),r.createElement(c.Z,{onClick:function(){g.D.Counters.achievementsCounter=Number.MAX_VALUE}},"Disable Engine"),r.createElement(c.Z,{onClick:function(){g.D.Counters.achievementsCounter=0}},"Enable Engine")))),Object.values(p.E).map((n=>{const a=e.includes(n.ID);return r.createElement("tr",{key:"ach-"+n.ID},r.createElement("td",null,a?r.createElement(m.Z,{title:"Achieved"},r.createElement(h.Z,{color:"primary"})):r.createElement(m.Z,{title:"Locked"},r.createElement(f.Z,{color:"secondary"}))),r.createElement("td",null,r.createElement(m.Z,{title:r.createElement(r.Fragment,null,n.ID,r.createElement("br",null),n.Description)},r.createElement(l.Z,{color:a?"primary":"secondary"},n.Name,":"))),r.createElement("td",null,r.createElement(u.Z,null,r.createElement(c.Z,{onClick:()=>{return e=n.ID,d.J5.giveAchievement(e),void t(d.J5.achievements.map((e=>e.ID)));var e}},"Grant"),r.createElement(c.Z,{onClick:()=>{return e=n.ID,d.J5.achievements=d.J5.achievements.filter((t=>t.ID!==e)),void t(d.J5.achievements.map((e=>e.ID)));var e}},"Clear"))))}))))))}},56654:(e,t,n)=>{"use strict";n.d(t,{f:()=>m});var r=n(67294),a=n(96540),o=n(94895),i=n(92557),s=n(63343),l=n(5499),c=n(66351),u=n(17575);function m(e){const[t,n]=(0,r.useState)(""),{label:m,placeholder:f,add:h,subtract:d,reset:p,tons:g}=e;return r.createElement(r.Fragment,null,r.createElement(c.Z,{label:m,value:t,onChange:function(e){""===e.target.value?n(""):n(parseFloat(e.target.value))},placeholder:f,type:"number",InputProps:{startAdornment:r.createElement(r.Fragment,null,r.createElement(u.Z,{title:"Add a lot"},r.createElement(i.Z,{onClick:g,size:"large"},r.createElement(l.Z,{style:{transform:"rotate(-90deg)"}}))),r.createElement(u.Z,{title:"Add"},r.createElement(i.Z,{onClick:()=>h("string"!=typeof t?t:0),size:"large"},r.createElement(a.Z,null)))),endAdornment:r.createElement(r.Fragment,null,r.createElement(u.Z,{title:"Remove"},r.createElement(i.Z,{onClick:()=>d("string"!=typeof t?t:0),size:"large"},r.createElement(o.Z,null))),r.createElement(u.Z,{title:"Reset"},r.createElement(i.Z,{onClick:p,size:"large"},r.createElement(s.Z,null))))}}))}},99419:(e,t,n)=>{"use strict";n.d(t,{S:()=>b});var r=n(49173),a=n(67294),o=n(6571),i=n(99631),s=n(7244),l=n(59655),c=n(5821),u=n(21945),m=n(81138),f=n(51907),h=n(26023),d=n(92557),p=n(98649),g=n(56798),y=n(33244);function b(){const[e,t]=(0,a.useState)(y.AugmentationName.Targeting1);return a.createElement(c.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(u.Z,{expandIcon:a.createElement(o.Z,null)},a.createElement(m.Z,null,"Augmentations")),a.createElement(f.Z,null,a.createElement(h.Z,{onChange:function(e){t(e.target.value)},value:e,startAdornment:a.createElement(a.Fragment,null,a.createElement(d.Z,{onClick:function(){for(const e of Object.values(y.AugmentationName))r.J5.queueAugmentation(e)},size:"large"},a.createElement(i.Z,null)),a.createElement(d.Z,{onClick:function(){r.J5.queueAugmentation(e)},size:"large"},a.createElement(s.Z,null))),endAdornment:a.createElement(a.Fragment,null,a.createElement(d.Z,{onClick:function(){r.J5.augmentations=[]},size:"large"},a.createElement(l.Z,null)))},Object.values(y.AugmentationName).map((e=>a.createElement(p.Z,{key:e,value:e},e)))),a.createElement(g.Z,{sx:{display:"block"},onClick:function(){r.J5.queuedAugmentations=[]}},"Clear Queued Augmentations")))}},87525:(e,t,n)=>{"use strict";n.d(t,{Z:()=>E});var r=n(67294),a=n(5821),o=n(21945),i=n(81138),s=n(51907),l=n(17575),c=n(92557),u=n(54283),m=n(11930),f=n(98649),h=n(23508),d=n(26023),p=n(41733),g=n(56654),y=n(49173),b=n(33244),v=n(71099),k=n(42115);const w=1e27;function E(e){let{bladeburner:t}=e;const n=e=>n=>t.changeRank(y.J5,n*e),E=e=>n=>{t.skillPoints+=n*e},S=e=>n=>t.storedCycles+=n*e,C=e=>n=>{Object.values(b.CityName).forEach((r=>t.cities[r].chaos+=n*e))},[x,N]=(0,r.useState)(k.x.BladesIntuition),M=e=>n=>{null==t.skills[v.n[x].name]&&A(),isNaN(n)||(t.skills[v.n[x].name]+=n*e,t.updateSkillMultipliers())},A=()=>{t.skills[v.n[x].name]=0,t.updateSkillMultipliers()},T=t.contracts,[L,R]=(0,r.useState)(T.Tracking.name),F=e=>n=>{if(!isNaN(n)){t.contracts[T[L].name].level+=n*e;const r=t.contracts[T[L].name].level;t.contracts[T[L].name].maxLevel=r}},_=e=>n=>{isNaN(n)||(t.contracts[T[L].name].count+=n*e)},I=e=>n=>{isNaN(n)||(t.contracts[T[L].name].successes+=n*e)},P=t.operations,[B,O]=(0,r.useState)(P.Investigation.name),D=e=>n=>{if(!isNaN(n)){t.operations[P[B].name].level+=n*e;const r=t.operations[P[B].name].level;t.operations[P[B].name].maxLevel=r}},Z=e=>n=>{isNaN(n)||(t.operations[P[B].name].count+=n*e)},G=e=>n=>{isNaN(n)||(t.operations[P[B].name].successes+=n*e)};return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(h.Z,null)},r.createElement(i.Z,null,"Bladeburner")),r.createElement(s.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Rank:")),r.createElement("td",null,r.createElement(g.f,{label:"rank",placeholder:"amt",tons:()=>t.changeRank(y.J5,w),add:n(1),subtract:n(-1),reset:()=>{t.rank=0,t.maxRank=0}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"SP:")),r.createElement("td",null,r.createElement(g.f,{label:"skill points",placeholder:"amt",tons:()=>t.skillPoints=w,add:E(1),subtract:E(-1),reset:()=>{t.skillPoints=0,t.totalSkillPoints=0}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Cycles: ")),r.createElement("td",null,r.createElement(g.f,{label:"cycles",placeholder:"amt",tons:()=>t.storedCycles+=w,add:S(1),subtract:S(-1),reset:()=>t.storedCycles=0}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Chaos:")),r.createElement("td",null,r.createElement(g.f,{label:"chaos in all cities",placeholder:"amt",tons:()=>{Object.values(b.CityName).forEach((e=>t.cities[e].chaos+=w))},add:C(1),subtract:C(-1),reset:()=>Object.values(b.CityName).forEach((e=>t.cities[e].chaos=0))})),r.createElement(l.Z,{title:"Wipe Active City Chaos"},r.createElement(c.Z,{onClick:()=>t.cities[t.city].chaos=0,size:"large","arial-label":"clear-active-city-chaos",title:"Clear Only Active City Chaos"},r.createElement(p.Z,{sx:{fontSize:40}})))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Skills: ")),r.createElement("td",{align:"center"},r.createElement(u.Z,null,r.createElement(m.Z,{id:"skills-select"}),r.createElement(d.Z,{labelId:"skills-select",id:"skills-dropdown",onChange:function(e){N(e.target.value)},value:x},Object.values(v.n).map((e=>r.createElement(f.Z,{key:e.name,value:e.name},e.name))))))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Level:")),r.createElement("td",null,r.createElement(g.f,{label:"Level",placeholder:"amt",tons:()=>{null==t.skills[v.n[x].name]&&A(),t.skills[v.n[x].name]+=w,t.updateSkillMultipliers()},add:M(1),subtract:M(-1),reset:A}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Contracts: ")),r.createElement("td",{align:"center"},r.createElement(u.Z,null,r.createElement(m.Z,{id:"contracts-select"}),r.createElement(d.Z,{labelId:"contracts-select",id:"contracts-dropdown",onChange:function(e){R(e.target.value)},value:L},Object.values(T).map((e=>r.createElement(f.Z,{key:e.name,value:e.name},e.name))))))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Level:")),r.createElement("td",null,r.createElement(g.f,{label:"Level",placeholder:"amt",tons:()=>{t.contracts[T[L].name].level+=w;const e=t.contracts[T[L].name].level;t.contracts[T[L].name].maxLevel=e},add:F(1),subtract:F(-1),reset:()=>{t.contracts[T[L].name].level=1,t.contracts[T[L].name].maxLevel=1}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Successes:")),r.createElement("td",null,r.createElement(g.f,{label:"Successes",placeholder:"amt",tons:()=>t.contracts[T[L].name].successes+=w,add:I(1),subtract:I(-1),reset:()=>t.contracts[T[L].name].successes=0}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Count:")),r.createElement("td",null,r.createElement(g.f,{label:"Count",placeholder:"amt",tons:()=>t.contracts[T[L].name].count+=w,add:_(1),subtract:_(-1),reset:()=>t.contracts[T[L].name].count=0}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Operations: ")),r.createElement("td",{align:"center"},r.createElement(u.Z,null,r.createElement(m.Z,{id:"Operations-select"}),r.createElement(d.Z,{labelId:"Operations-select",id:"Operations-dropdown",onChange:function(e){O(e.target.value)},value:B},Object.values(P).map((e=>r.createElement(f.Z,{key:e.name,value:e.name},e.name))))))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Level:")),r.createElement("td",null,r.createElement(g.f,{label:"Level",placeholder:"amt",tons:()=>{t.operations[P[B].name].level+=w;const e=t.operations[P[B].name].level;t.operations[P[B].name].maxLevel=e},add:D(1),subtract:D(-1),reset:()=>{t.operations[P[B].name].level=1,t.operations[P[B].name].maxLevel=1}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Successes:")),r.createElement("td",null,r.createElement(g.f,{label:"Successes",placeholder:"amt",tons:()=>t.operations[P[B].name].successes+=w,add:G(1),subtract:G(-1),reset:()=>t.operations[P[B].name].successes=0}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Count:")),r.createElement("td",null,r.createElement(g.f,{label:"Count",placeholder:"amt",tons:()=>t.operations[P[B].name].count+=w,add:Z(1),subtract:Z(-1),reset:()=>t.operations[P[B].name].count=0})))))))}},58028:(e,t,n)=>{"use strict";n.d(t,{d:()=>d});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(26023),m=n(98649),f=n(58297),h=n(62725);function d(){const[e,t]=(0,r.useState)("Find Largest Prime Factor");return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Coding Contracts")),r.createElement(i.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(c.Z,{onClick:f._q},"Generate Random Contract"),r.createElement(c.Z,{onClick:f.Pt},"Generate Random Contract on Home Comp"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(u.Z,{onChange:function(e){t(e.target.value)},value:e},Object.values(h.Th).map((e=>r.createElement(m.Z,{key:e.name,value:e.name},e.name)))),r.createElement(c.Z,{onClick:function(){(0,f.ao)({problemType:e,server:"home"})}},"Generate Specified Contract Type on Home Comp")))))))}},7666:(e,t,n)=>{"use strict";n.d(t,{l:()=>b});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(26023),m=n(98649),f=n(33244),h=n(62586),d=n(56654),p=n(50862),g=n(21623);const y=1e12;function b(){const[e,t]=(0,r.useState)(f.CompanyName.ECorp);function n(t){return function(n){const r=h.O[e];isNaN(n)||(r.playerReputation+=n*t)}}function b(t){return function(n){const r=h.O[e];isNaN(n)||(r.favor+=n*t)}}return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Companies")),r.createElement(i.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Company:")),r.createElement("td",{colSpan:3},r.createElement(u.Z,{id:"dev-companies-dropdown",onChange:function(e){(0,p.R)("CompanyName",e.target.value)&&t(e.target.value)},value:e},Object.values(h.O).map((e=>r.createElement(m.Z,{key:e.name,value:e.name},e.name)))))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Reputation:")),r.createElement("td",null,r.createElement(d.f,{label:"reputation",placeholder:"amt",tons:()=>n(1)(y),add:n(1),subtract:n(-1),reset:function(){h.O[e].playerReputation=0}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Favor:")),r.createElement("td",null,r.createElement(d.f,{label:"favor",placeholder:"amt",tons:()=>b(1)(2e3),add:b(1),subtract:b(-1),reset:function(){h.O[e].favor=0}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"All Reputation:")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){for(const e of(0,g.R3)(h.O))e.playerReputation=y}},"Tons"),r.createElement(c.Z,{onClick:function(){for(const e of(0,g.R3)(h.O))e.playerReputation=0}},"Reset"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"All Favor:")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){for(const e of(0,g.R3)(h.O))e.favor=y}},"Tons"),r.createElement(c.Z,{onClick:function(){for(const e of(0,g.R3)(h.O))e.favor=0}},"Reset")))))))}},46729:(e,t,n)=>{"use strict";n.d(t,{o:()=>h});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(56654),m=n(49173);const f=1e27;function h(){function e(e){return function(t){m.J5.corporation&&(m.J5.corporation.funds+=t*e)}}function t(e){return function(t){m.J5.corporation&&(m.J5.corporation.storedCycles+=t*e)}}return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Corporation")),r.createElement(i.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Funds:")),r.createElement("td",null,r.createElement(u.f,{label:"set funds",placeholder:"amt",tons:function(){m.J5.corporation&&(m.J5.corporation.funds=m.J5.corporation.funds+f)},add:e(1),subtract:e(-1),reset:function(){m.J5.corporation&&(m.J5.corporation.funds=m.J5.corporation.funds-m.J5.corporation.funds)}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Cycles:")),r.createElement("td",null,r.createElement(u.f,{label:"cycles",placeholder:"amt",tons:function(){m.J5.corporation&&(m.J5.corporation.storedCycles=f)},add:t(1),subtract:t(-1),reset:function(){m.J5.corporation&&(m.J5.corporation.storedCycles=0)}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(c.Z,{onClick:function(){if(m.J5.corporation)for(const e of m.J5.corporation.divisions.values())for(const t of e.products.values())t.developmentProgress=99.9}},"Finish products"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(c.Z,{onClick:function(){m.J5.corporation&&m.J5.corporation.divisions.forEach((e=>{e.researchPoints+=1e10}))}},"Tons of research")))))))}},84501:(e,t,n)=>{"use strict";n.d(t,{H:()=>m});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(49173),u=n(56654);function m(){return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Entropy")),r.createElement(i.Z,null,r.createElement(u.f,{label:"Set entropy",placeholder:"entropy",add:e=>{c.J5.entropy+=e,c.J5.applyEntropy(c.J5.entropy)},subtract:e=>{c.J5.entropy-=e,c.J5.applyEntropy(c.J5.entropy)},tons:()=>{c.J5.entropy+=1e12,c.J5.applyEntropy(c.J5.entropy)},reset:()=>{c.J5.entropy=0,c.J5.applyEntropy(c.J5.entropy)}})))}},4664:(e,t,n)=>{"use strict";n.d(t,{E:()=>C});var r=n(67294),a=n(5821),o=n(21945),i=n(81138),s=n(51907),l=n(54283),c=n(11930),u=n(26023),m=n(92557),f=n(98649),h=n(56798),d=n(23508),p=n(81924),g=n(64459),y=n(49173),b=n(33244),v=n(56654),k=n(58427),w=n(21623),E=n(50862);const S=1e12;function C(){const[e,t]=(0,r.useState)(b.FactionName.Illuminati);function n(t){return function(n){const r=k.i[e];isNaN(n)||(r.playerReputation+=n*t)}}function C(t){return function(n){const r=k.i[e];isNaN(n)||(r.favor+=n*t)}}return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(d.Z,null)},r.createElement(i.Z,null,"Factions")),r.createElement(s.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Faction:")),r.createElement("td",null,r.createElement(l.Z,null,r.createElement(c.Z,{id:"factions-select"},"Faction"),r.createElement(u.Z,{labelId:"factions-select",id:"factions-dropdown",onChange:function(e){(0,E.m)("FactionName").isMember(e.target.value)&&t(e.target.value)},value:e,startAdornment:r.createElement(r.Fragment,null,r.createElement(m.Z,{onClick:function(){Object.values(b.FactionName).forEach((e=>y.J5.receiveInvite(e)))},size:"large","arial-label":"receive-all-invitation"},r.createElement(p.Z,null)),r.createElement(m.Z,{onClick:function(){y.J5.receiveInvite(e)},size:"large","arial-label":"receive-one-invitation"},r.createElement(g.Z,null)))},Object.values(k.i).map((e=>r.createElement(f.Z,{key:e.name,value:e.name},e.name))))))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Reputation:")),r.createElement("td",null,r.createElement(v.f,{label:"reputation",placeholder:"amt",tons:()=>n(1)(S),add:n(1),subtract:n(-1),reset:function(){k.i[e].playerReputation=0}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"Favor:")),r.createElement("td",null,r.createElement(v.f,{label:"favor",placeholder:"amt",tons:()=>C(1)(2e3),add:C(1),subtract:C(-1),reset:function(){k.i[e].favor=0}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"All Reputation:")),r.createElement("td",null,r.createElement(h.Z,{onClick:function(){for(const e of(0,w.R3)(k.i))e.playerReputation=S}},"Tons"),r.createElement(h.Z,{onClick:function(){for(const e of(0,w.R3)(k.i))e.playerReputation=0}},"Reset"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(i.Z,null,"All Favor:")),r.createElement("td",null,r.createElement(h.Z,{onClick:function(){for(const e of(0,w.R3)(k.i))e.favor=S}},"Tons"),r.createElement(h.Z,{onClick:function(){for(const e of(0,w.R3)(k.i))e.favor=0}},"Reset")))))))}},67821:(e,t,n)=>{"use strict";n.d(t,{D:()=>m});var r=n(67294),a=n(81138),o=n(5821),i=n(21945),s=n(51907),l=n(23508),c=n(56654),u=n(49173);function m(){function e(e){return function(t){u.J5.gang&&(u.J5.gang.storedCycles+=t*e)}}return r.createElement(o.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(i.Z,{expandIcon:r.createElement(l.Z,null)},r.createElement(a.Z,null,"Gang")),r.createElement(s.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(a.Z,null,"Cycles:")),r.createElement("td",null,r.createElement(c.f,{label:"cycles",placeholder:"amt",tons:function(){u.J5.gang&&(u.J5.gang.storedCycles=1e27)},add:e(1),subtract:e(-1),reset:function(){u.J5.gang&&(u.J5.gang.storedCycles=0)}})))))))}},27629:(e,t,n)=>{"use strict";n.d(t,{L:()=>S});var r=n(67294),a=n(5821),o=n(21945),i=n(81138),s=n(51907),l=n(56798),c=n(66351),u=n(26023),m=n(98649),f=n(23508),h=n(49173),d=n(33244),p=n(72360),g=n(52947),y=n(24815),b=n(79267),v=n(87811),k=n(72198),w=n(10425),E=n(50862);function S(){const[e,t]=(0,r.useState)(!1),[n,S]=(0,r.useState)(""),[C,x]=(0,r.useState)(d.FactionName.SlumSnakes),[N,M]=(0,r.useState)(0),A=e=>()=>h.J5.gainMoney(e,"other");return(0,r.useEffect)((()=>{if(e)throw new ReferenceError("Manually thrown error")}),[e]),r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(f.Z,null)},r.createElement(i.Z,null,"General")),r.createElement(s.Z,null,r.createElement(l.Z,{onClick:(0,()=>h.J5.money=Number(0)),title:"This sets your money to $0, this means the money you had will just vanish without being accounted for where it went and may offset some metrics."},r.createElement("pre",null,"= ",r.createElement(p.W,{money:0}))),r.createElement(l.Z,{onClick:A(1e6)},r.createElement("pre",null,"+ ",r.createElement(p.W,{money:1e6}))),r.createElement(l.Z,{onClick:A(1e9)},r.createElement("pre",null,"+ ",r.createElement(p.W,{money:1e9}))),r.createElement(l.Z,{onClick:A(1e12)},r.createElement("pre",null,"+ ",r.createElement(p.W,{money:1e12}))),r.createElement(l.Z,{onClick:A(1e15)},r.createElement("pre",null,"+ ",r.createElement(p.W,{money:1e15}))),r.createElement(l.Z,{onClick:A(1/0)},r.createElement("pre",null,"+ ",r.createElement(p.W,{money:1/0}))),r.createElement(l.Z,{onClick:()=>h.J5.getHomeComputer().maxRam*=2},"+ RAM"),r.createElement("br",null),r.createElement(i.Z,null,"Add Custom Money"),r.createElement(c.Z,{onChange:e=>M(parseFloat(e.target.value))}),r.createElement(l.Z,{onClick:()=>!Number.isNaN(N)&&h.J5.gainMoney(N,"other")},"Give Money"),r.createElement("br",null),h.J5.corporation?r.createElement(l.Z,{onClick:()=>{h.J5.corporation=null,w.bS.emit()}},"Destroy Corporation"):r.createElement(r.Fragment,null,r.createElement(i.Z,null,"Corporation Name:"),r.createElement(c.Z,{value:n,onChange:e=>S(e.target.value)}),r.createElement(l.Z,{onClick:()=>{h.J5.startCorporation(n,!1),w.bS.emit()}},"Create Corporation")),r.createElement("br",null),h.J5.gang?r.createElement(l.Z,{onClick:()=>{h.J5.gang=null,w.bS.emit()}},"Stop Gang"):r.createElement(r.Fragment,null,r.createElement(i.Z,null,"Gang Faction:"),r.createElement(u.Z,{value:C,onChange:e=>{(0,E.m)("FactionName").isMember(e.target.value)&&x(e.target.value)}},v.m.Names.map((e=>r.createElement(m.Z,{key:e,value:e},e)))),r.createElement(l.Z,{onClick:()=>{const e=C===d.FactionName.NiteSec||C===d.FactionName.TheBlackHand;h.J5.startGang(C,e),w.bS.emit()}},"Start Gang")),r.createElement("br",null),h.J5.bladeburner?r.createElement(l.Z,{onClick:()=>{h.J5.bladeburner=null,w.bS.emit()}},"Leave BladeBurner"):r.createElement(l.Z,{onClick:()=>{h.J5.bladeburner=new b.T,w.bS.emit()}},"Join BladeBurner"),r.createElement("br",null),r.createElement(l.Z,{onClick:()=>g.F.toPage(y.T3.BitVerse,{flume:!0,quick:!0})},"Quick b1t_flum3.exe"),r.createElement(l.Z,{onClick:()=>g.F.toPage(y.T3.BitVerse,{flume:!0,quick:!1})},"Run b1t_flum3.exe"),r.createElement(l.Z,{onClick:()=>g.F.toPage(y.T3.BitVerse,{flume:!1,quick:!0})},"Quick w0rld_d34m0n"),r.createElement(l.Z,{onClick:()=>g.F.toPage(y.T3.BitVerse,{flume:!1,quick:!1})},"Hack w0rld_d34m0n"),r.createElement(l.Z,{onClick:()=>t(!0)},"Throw Error"),r.createElement(l.Z,{onClick:()=>(0,k.Uc)()},"Check Messages")))}},95096:(e,t,n)=>{"use strict";n.d(t,{U:()=>d});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(26023),m=n(49173),f=n(98649),h=n(33244);function d(){const[e,t]=(0,r.useState)(h.CompletedProgramName.bruteSsh);return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Programs")),r.createElement(i.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Program:")),r.createElement("td",null,r.createElement(u.Z,{onChange:function(e){t(e.target.value)},value:e},Object.values(h.CompletedProgramName).map((e=>r.createElement(f.Z,{key:e,value:e},e)))))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Add:")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){m.J5.hasProgram(e)||m.J5.getHomeComputer().programs.push(e)}},"One"),r.createElement(c.Z,{onClick:function(){for(const e of Object.values(h.CompletedProgramName))m.J5.hasProgram(e)||m.J5.getHomeComputer().programs.push(e)}},"All")))))))}},80423:(e,t,n)=>{"use strict";n.d(t,{L:()=>p});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(34716),u=n(32369),m=n(33244),f=n(52149),h=n(56798),d=n(15460);function p(){const e=(0,r.useRef)(null),[t,n]=(0,r.useState)(""),[p,g]=(0,r.useState)(!0),[y,b]=(0,r.useState)(!0),[v,k]=(0,r.useState)(!0);return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Save file")),r.createElement(i.Z,null,r.createElement(h.Z,{onClick:function(){if(!(window.File&&window.FileReader&&window.FileList&&window.Blob))return;const t=e.current;if(null===t)throw new Error("import input should not be null");t.click()},startIcon:r.createElement(f.Z,null),sx:{gridArea:"import"}},"Select save file",r.createElement("input",{ref:e,type:"file",hidden:!0,onChange:async function(e){try{const t=await c.Ex.getImportStringFromFile(e.target.files),r=atob(t);n(r)}catch(e){u.sC.emit(String(e),m.ToastVariant.ERROR,5e3)}}})),r.createElement("br",null),""!==t&&r.createElement(r.Fragment,null,r.createElement(d.V,{checked:p,onChange:e=>g(e),text:"Restore scripts",tooltip:r.createElement(r.Fragment,null,"Restore the save file home computer scripts.")}),r.createElement("br",null),r.createElement(d.V,{checked:y,onChange:e=>b(e),text:"Restore Augmentations",tooltip:r.createElement(r.Fragment,null,"Restore the save file installed augmentations.")}),r.createElement("br",null),r.createElement(d.V,{checked:v,onChange:e=>k(e),text:"Restore Source Files",tooltip:r.createElement(r.Fragment,null,"Restore the save file acquired source files.")}),r.createElement("br",null),r.createElement(h.Z,{onClick:function(){const e=JSON.parse(t);console.error(e)}},"Restore"))))}},94519:(e,t,n)=>{"use strict";n.d(t,{O:()=>d});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(26023),m=n(97467),f=n(89916),h=n(98649);function d(){const[e,t]=(0,r.useState)("home");return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Servers")),r.createElement(i.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Server:")),r.createElement("td",{colSpan:2},r.createElement(u.Z,{id:"dev-servers-dropdown",onChange:function(e){t(e.target.value)},value:e},(0,m.XX)().map((e=>r.createElement(h.Z,{key:e.hostname,value:e.hostname},e.hostname)))))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Root:")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){const t=(0,m.WT)(e);null!==t&&t instanceof f.x&&(t.hasAdminRights=!0,t.sshPortOpen=!0,t.ftpPortOpen=!0,t.smtpPortOpen=!0,t.httpPortOpen=!0,t.sqlPortOpen=!0,t.openPortCount=5)}},"Root one")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){for(const e of(0,m.XX)()){if(!(e instanceof f.x))return;e.hasAdminRights=!0,e.sshPortOpen=!0,e.ftpPortOpen=!0,e.smtpPortOpen=!0,e.httpPortOpen=!0,e.sqlPortOpen=!0,e.openPortCount=5}}},"Root all"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Security:")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){const t=(0,m.WT)(e);null!==t&&t instanceof f.x&&(t.hackDifficulty=t.minDifficulty)}},"Min one")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){for(const e of(0,m.XX)()){if(!(e instanceof f.x))return;e.hackDifficulty=e.minDifficulty}}},"Min all"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Money:")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){const t=(0,m.WT)(e);null!==t&&t instanceof f.x&&(t.moneyAvailable=0)}},"Min one")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){for(const e of(0,m.XX)()){if(!(e instanceof f.x))return;e.moneyAvailable=0}}},"Min all")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){const t=(0,m.WT)(e);null!==t&&t instanceof f.x&&(t.moneyAvailable=t.moneyMax)}},"Max one")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){for(const e of(0,m.XX)()){if(!(e instanceof f.x))return;e.moneyAvailable=e.moneyMax}}},"Max all")))))))}},90821:(e,t,n)=>{"use strict";n.d(t,{V:()=>f});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(56798),c=n(81138),u=n(49173),m=n(56654);function f(){function e(e){for(let t=0;te(1e7),add:e,subtract:e,reset:()=>e(0)})))))))}},81533:(e,t,n)=>{"use strict";n.d(t,{x:()=>h});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(49173),m=n(34265);const f=[1,2,3,4,5,6,7,8,9,10,11,12,13];function h(){function e(e,t){return function(){9===e&&(u.J5.hacknetNodes=[]),0!==t?u.J5.sourceFiles.set(e,t):u.J5.sourceFiles.delete(e)}}function t(t){return()=>{for(let n=0;nr.createElement("tr",{key:"sf-"+t},r.createElement("td",null,r.createElement(l.Z,null,"SF-",t,":")),r.createElement("td",null,r.createElement(m.Z,null,r.createElement(c.Z,{onClick:e(t,0)},"0"),r.createElement(c.Z,{onClick:e(t,1)},"1"),r.createElement(c.Z,{onClick:e(t,2)},"2"),r.createElement(c.Z,{onClick:e(t,3)},"3"))))))))))}},80386:(e,t,n)=>{"use strict";n.d(t,{r:()=>m});var r=n(67294),a=n(78573),o=n(5821),i=n(21945),s=n(51907),l=n(23508),c=n(81138),u=n(56654);function m(){function e(e){return function(t){a.y$.storedCycles+=t*e}}function t(e){return function(t){a.y$.fragments.forEach((n=>n.highestCharge+=t*e))}}return r.createElement(o.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(i.Z,{expandIcon:r.createElement(l.Z,null)},r.createElement(c.Z,null,"Stanek's Gift")),r.createElement(s.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(u.f,{label:"cycles",placeholder:"amt",tons:function(){a.y$.storedCycles=1e6},add:e(1),subtract:e(-1),reset:function(){a.y$.storedCycles=0}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(u.f,{label:"all charge",placeholder:"amt",tons:function(){a.y$.fragments.forEach((e=>{e.highestCharge=1e21,e.numCharge=1e21}))},add:t(1),subtract:t(-1),reset:function(){a.y$.fragments.forEach((e=>{e.highestCharge=0,e.numCharge=0}))}})))))))}},38853:(e,t,n)=>{"use strict";n.d(t,{W:()=>h});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(56654),m=n(49173);const f=1e27;function h(){function e(e,t){return function(n){switch(e){case"hacking":n&&m.J5.gainHackingExp(n*t);break;case"strength":n&&m.J5.gainStrengthExp(n*t);break;case"defense":n&&m.J5.gainDefenseExp(n*t);break;case"dexterity":n&&m.J5.gainDexterityExp(n*t);break;case"agility":n&&m.J5.gainAgilityExp(n*t);break;case"charisma":n&&m.J5.gainCharismaExp(n*t);break;case"intelligence":n&&m.J5.gainIntelligenceExp(n*t)}m.J5.updateSkillLevels()}}function t(e){return function(t){m.J5.karma+=t*e}}function n(e){return function(){switch(e){case"hacking":m.J5.exp.hacking=0;break;case"strength":m.J5.exp.strength=0;break;case"defense":m.J5.exp.defense=0;break;case"dexterity":m.J5.exp.dexterity=0;break;case"agility":m.J5.exp.agility=0;break;case"charisma":m.J5.exp.charisma=0;break;case"intelligence":m.J5.exp.intelligence=0}m.J5.updateSkillLevels()}}return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Experience / Stats")),r.createElement(i.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"All:")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){m.J5.gainHackingExp(f),m.J5.gainStrengthExp(f),m.J5.gainDefenseExp(f),m.J5.gainDexterityExp(f),m.J5.gainAgilityExp(f),m.J5.gainCharismaExp(f),m.J5.gainIntelligenceExp(f),m.J5.updateSkillLevels()}},"Tons of exp"),r.createElement(c.Z,{onClick:function(){m.J5.exp.hacking=0,m.J5.exp.strength=0,m.J5.exp.defense=0,m.J5.exp.dexterity=0,m.J5.exp.agility=0,m.J5.exp.charisma=0,m.J5.exp.intelligence=0,m.J5.updateSkillLevels()}},"Reset"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Hacking:")),r.createElement("td",null,r.createElement(u.f,{label:"hacking",placeholder:"exp",tons:()=>e("hacking",1)(f),add:e("hacking",1),subtract:e("hacking",-1),reset:n("hacking")}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Strength:")),r.createElement("td",null,r.createElement(u.f,{label:"strength",placeholder:"exp",tons:()=>e("strength",1)(f),add:e("strength",1),subtract:e("strength",-1),reset:n("strength")}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Defense:")),r.createElement("td",null,r.createElement(u.f,{label:"defense",placeholder:"exp",tons:()=>e("defense",1)(f),add:e("defense",1),subtract:e("defense",-1),reset:n("defense")}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Dexterity:")),r.createElement("td",null,r.createElement(u.f,{label:"dexterity",placeholder:"exp",tons:()=>e("dexterity",1)(f),add:e("dexterity",1),subtract:e("dexterity",-1),reset:n("dexterity")}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Agility:")),r.createElement("td",null,r.createElement(u.f,{label:"agility",placeholder:"exp",tons:()=>e("agility",1)(f),add:e("agility",1),subtract:e("agility",-1),reset:n("agility")}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Charisma:")),r.createElement("td",null,r.createElement(u.f,{label:"charisma",placeholder:"exp",tons:()=>e("charisma",1)(f),add:e("charisma",1),subtract:e("charisma",-1),reset:n("charisma")}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Intelligence:")),r.createElement("td",null,r.createElement(u.f,{label:"intelligence",placeholder:"exp",tons:()=>e("intelligence",1)(f),add:e("intelligence",1),subtract:e("intelligence",-1),reset:n("intelligence")})),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){0===m.J5.skills.intelligence&&(m.J5.skills.intelligence=1,m.J5.updateSkillLevels())}},"Enable")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){m.J5.exp.intelligence=0,m.J5.skills.intelligence=0,m.J5.updateSkillLevels()}},"Disable"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Karma:")),r.createElement("td",null,r.createElement(u.f,{label:"karma",placeholder:"amt",tons:()=>e("intelligence",1)(1e5),add:t(1),subtract:t(-1),reset:function(){m.J5.karma=0}})))))))}},79151:(e,t,n)=>{"use strict";n.d(t,{n:()=>p});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(66351),m=n(72360),f=n(39463),h=n(35102),d=n(22213);function p(){const[e,t]=(0,r.useState)(0),[n,p]=(0,r.useState)("");function g(e){const t=n.replace(/\s/g,"");let r=()=>!0;""!==t&&"all"!==t&&(r=function(e){return t.split(",").includes(e)});for(const t of Object.keys(h.xO))if(Object.hasOwn(h.xO,t)){const n=h.xO[t];n instanceof d.W&&r(n.symbol)&&e(n)}}return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Stock Market")),r.createElement(i.Z,null,r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Symbol:")),r.createElement("td",null,r.createElement(u.Z,{placeholder:"symbol/'all'",onChange:function(e){p(e.target.value)}}))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Price:")),r.createElement("td",null,r.createElement(u.Z,{placeholder:"$$$",onChange:function(e){t(parseFloat(e.target.value))}}),r.createElement(c.Z,{onClick:function(){isNaN(e)||g((t=>{t.price=e}))}},"Set"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(l.Z,null,"Caps:")),r.createElement("td",null,r.createElement(c.Z,{onClick:function(){const e=[];g((t=>{e.push(r.createElement("tr",{key:t.symbol},r.createElement("td",null,t.symbol),r.createElement("td",{style:{textAlign:"right"}},r.createElement(m.W,{money:t.cap}))))})),(0,f.X)(r.createElement("table",null,r.createElement("tbody",null,r.createElement("tr",null,r.createElement("th",null,"Stock"),r.createElement("th",null,"Price cap")),e)))}},"View stock caps")))))))}},25591:(e,t,n)=>{"use strict";n.d(t,{x:()=>h});var r=n(67294),a=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(49173),m=n(34716),f=n(2827);function h(){function e(e){return()=>{u.J5.lastUpdate-=e,f.D._lastUpdate-=e,m.Ex.saveGame(),setTimeout((()=>location.reload()),1e3)}}return r.createElement(a.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(o.Z,{expandIcon:r.createElement(s.Z,null)},r.createElement(l.Z,null,"Time skip")),r.createElement(i.Z,null,r.createElement(c.Z,{onClick:e(6e4)},"1 minute"),r.createElement(c.Z,{onClick:e(36e5)},"1 hour"),r.createElement(c.Z,{onClick:e(864e5)},"1 day")))}},51858:(e,t,n)=>{"use strict";n.d(t,{y:()=>w});var r=n(67294),a=n(97467),o=n(48672),i=n(22115),s=n(47542),l=n(46948),c=n(7272),u=n(67929),m=n(15369),f=n(49557),h=n(81138),d=n(28881),p=n(5821),g=n(21945),y=n(51907),b=n(23508),v=n(37042);function k(e){const t=(0,a.WT)(e.hostname);if(null===t)throw new Error(`server '${e.hostname}' should not be null`);let n=0;const o=[];for(const[e,r]of(0,v.F)(t))n+=r.content.length,o.push({name:e,size:r.content.length});return 0===n?r.createElement(r.Fragment,null):(o.sort(((e,t)=>t.size-e.size)),r.createElement(p.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(g.Z,{expandIcon:r.createElement(b.Z,null)},r.createElement(h.Z,null,t.hostname," (",(0,i.dp)(n),"b)")),r.createElement(y.Z,null,r.createElement(u.Z,{component:d.Z},r.createElement(s.Z,null,r.createElement(m.Z,null,r.createElement(f.Z,null,r.createElement(c.Z,null,r.createElement(h.Z,null,"Filename")),r.createElement(c.Z,{align:"right"},r.createElement(h.Z,null,"Size")))),r.createElement(l.Z,null,o.map((e=>r.createElement(f.Z,{key:e.name},r.createElement(c.Z,{component:"th",scope:"row"},r.createElement(h.Z,null,e.name)),r.createElement(c.Z,{align:"right"},r.createElement(h.Z,null,(0,i.dp)(e.size),"b")))))))),r.createElement("ul",null))))}function w(e){const t=[];for(const e of(0,a.XX)())t.push(e.hostname);return r.createElement(o.u,{open:e.open,onClose:e.onClose},r.createElement(r.Fragment,null,r.createElement(h.Z,null,"Welcome to the file diagnostic! If your save file is really big it's likely because you have too many text/scripts. This tool can help you narrow down where they are."),t.map((e=>r.createElement(k,{key:e,hostname:e})))))}},93005:(e,t,n)=>{"use strict";n.d(t,{L:()=>G});var r=n(53367),a=n(46232),o=n(20041),i=n(23952),s=n(59715),l=n(55586),c=n(43429),u=n(20772),m=n(16234),f=n(72188),h=n(65273),d=n(93352),p=n(34177),g=n(98028),y=n(18267),b=n(88378),v=n(11082),k=n(35123),w=n(84747),E=n(15467),S=n(80575),C=n(36814),x=n(72702),N=n(26347),M=n(36565),A=n(97165),T=n(74135),L=n(95143),R=n(98751),F=n(90988),_=n(96687),I=n(92611),P=n(45925),B=n(69939),O=n(8734),D=n(19530),Z=n(18006);const G={};G["advanced/bitnodes.md"]=r.Z,G["advanced/bladeburners.md"]=a.Z,G["advanced/corporations.md"]=o.Z,G["advanced/gang.md"]=i.Z,G["advanced/grafting.md"]=s.Z,G["advanced/hacknetservers.md"]=l.Z,G["advanced/intelligence.md"]=c.Z,G["advanced/sleeves.md"]=u.Z,G["advanced/sourcefiles.md"]=m.Z,G["advanced/stanek.md"]=f.Z,G["basic/augmentations.md"]=h.Z,G["basic/codingcontracts.md"]=d.Z,G["basic/companies.md"]=p.Z,G["basic/crimes.md"]=g.Z,G["basic/factions.md"]=y.Z,G["basic/hacking.md"]=b.Z,G["basic/hacknet_nodes.md"]=v.Z,G["basic/infiltration.md"]=k.Z,G["basic/ram.md"]=w.Z,G["basic/reputation.md"]=E.Z,G["basic/scripts.md"]=S.Z,G["basic/servers.md"]=C.Z,G["basic/stats.md"]=x.Z,G["basic/stockmarket.md"]=N.Z,G["basic/terminal.md"]=M.Z,G["basic/world.md"]=A.Z,G["changelog.md"]=T.Z,G["help/bitnode_order.md"]=L.Z,G["help/getting_started.md"]=R.Z,G["help/tools_and_resources.md"]=F.Z,G["index.md"]=_.Z,G["migrations/v1.md"]=I.Z,G["migrations/v2.md"]=P.Z,G["programming/game_frozen.md"]=B.Z,G["programming/hackingalgorithms.md"]=O.Z,G["programming/learn.md"]=D.Z,G["programming/remote_api.md"]=Z.Z},38406:(e,t,n)=>{"use strict";n.d(t,{N:()=>i});var r=n(96687),a=n(93005);const o={content:r.Z},i=e=>a.L[e]??o},81009:(e,t,n)=>{"use strict";n.d(t,{C:()=>u});var r=n(67294),a=n(56798),o=n(45512),i=n(38406),s=n(19678),l=n(72938),c=n(64962);function u(){const e=(0,s.k6)(),t=(0,i.N)(e.page),n={navigate(t,n){const r=(0,c.Iw)("./"+t,e.page);if(r)if(n){const e=`https://github.com/bitburner-official/bitburner-src/blob/${l.t.isDevBranch?"dev":"stable"}/src/Documentation/doc/${r}`;window.open(e,"_newtab")}else e.push(r),window.scrollTo(0,0);else console.error(`Bad path ${t} from ${e.page} while navigating docs.`)}};return r.createElement(r.Fragment,null,r.createElement(a.Z,{onClick:()=>e.pop()},"Back"),r.createElement(a.Z,{onClick:()=>e.home()},"Home"),r.createElement(s.C3.Provider,{value:n},r.createElement(o.MD,{md:t+""})))}},10333:(e,t,n)=>{"use strict";n.d(t,{_l:()=>w,cq:()=>b,e_:()=>v,jw:()=>y,y_:()=>k});var r=n(49173),a=n(52947),o=n(24815),i=n(65065),s=n(32369),l=n(33244),c=n(97467),u=n(34716),m=n(66798),f=n(72938),h=n(90936),d=n(48764),p=n(64962),g=n(69917);function y(){navigator.userAgent.toLowerCase().includes(" electron/")&&(document.achievements=[],document.getFiles=function(){const e=(0,c.WT)("home");return null===e?{res:!1,msg:"Home server does not exist."}:{res:!0,data:{files:[...e.scripts.values()].map((e=>({filename:e.filename,code:e.code,ramUsage:e.ramUsage})))}}},document.deleteFile=function(e){const t=(0,p.Iw)(e);if(!t)return{res:!1,msg:"Invalid file path."};const n=(0,c.WT)("home");return n?n.removeFile(t):{res:!1,msg:"Home server does not exist."}},document.saveFile=function(e,t){const n=(0,p.Iw)(e);if(!n)return{res:!1,msg:"Invalid file path."};if(!(0,g.UH)(n))return{res:!1,msg:"Invalid file extension: must be a script"};t=d.lW.from(t,"base64").toString();const r=(0,c.WT)("home");if(!r)return{res:!1,msg:"Home server does not exist."};const{overwritten:a}=r.writeToScriptFile(n,t),o=r.scripts.get(n);return o?{res:!0,data:{overwritten:a,ramUsage:o.getRamUsage(r.scripts)}}:{res:!1,msg:"Somehow failed to get script after writing it. This is a bug."}},function(){const e={terminal:(e,t)=>{const n={info:i.o.info,warn:i.o.warn,error:i.o.error,success:i.o.success};let r;t&&(r=n[t]),r||(r=i.o.print),r.bind(i.o)(e)},toast:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2e3;return s.sC.emit(e,t,n)}};window.appNotifier=e}(),function(){const e={triggerSave:()=>u.Ex.saveGame(!0),triggerGameExport:()=>{try{u.Ex.exportGame()}catch(e){console.error(e),s.sC.emit("Could not export game.",l.ToastVariant.ERROR,2e3)}},triggerScriptsExport:()=>(0,m.e)("*",r.J5.getHomeComputer()),getSaveData:()=>({save:u.Ex.getSaveString(),fileName:u.Ex.getSaveFileName()}),getSaveInfo:async e=>{try{return(await u.Ex.getImportDataFromString(e)).playerData}catch(e){return void console.error(e)}},pushSaveData:function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return a.F.toPage(o.T3.ImportSave,{base64Save:e,automatic:t})}};window.appSaveFns=e}(),function(){const e=window.electronBridge;e&&(e.receive("get-save-data-request",(()=>{const t=window.appSaveFns.getSaveData();e.send("get-save-data-response",t)})),e.receive("get-save-info-request",(async t=>{if("string"!=typeof t)throw new Error("Error while trying to get save info");const n=await window.appSaveFns.getSaveInfo(t);e.send("get-save-info-response",n)})),e.receive("push-save-request",(e=>{if("object"!=typeof e)throw new Error("Error trying to push save request");const{save:t,automatic:n=!1}=e;window.appSaveFns.pushSaveData(t,n)})),e.receive("trigger-save",(()=>window.appSaveFns.triggerSave().then((()=>{e.send("save-completed")})).catch((e=>{console.error(e),s.sC.emit("Could not save game.",l.ToastVariant.ERROR,2e3)})))),e.receive("trigger-game-export",(()=>{try{window.appSaveFns.triggerGameExport()}catch(e){console.error(e),s.sC.emit("Could not export game.",l.ToastVariant.ERROR,2e3)}})),e.receive("trigger-scripts-export",(()=>{try{window.appSaveFns.triggerScriptsExport()}catch(e){console.error(e),s.sC.emit("Could not export scripts.",l.ToastVariant.ERROR,2e3)}})))}())}function b(e){const t=window.electronBridge;t&&t.send("push-game-saved",e)}function v(){const e=window.electronBridge;e&&e.send("push-game-ready",{player:{identifier:r.J5.identifier,playtime:r.J5.totalPlaytime,lastSave:r.J5.lastSave},game:{version:f.t.VersionString,hash:(0,h.v)()}})}function k(e){const t=window.electronBridge;t&&(t.send("push-import-result",{wasImported:e}),w())}function w(){const e=window.electronBridge;e&&e.send("push-disable-restore",{duration:6e4})}},33244:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AugmentationName:()=>r.D,BlackOperationName:()=>a.s,CityName:()=>u.Ms,ClassType:()=>p.rF,CompanyName:()=>o.z,CompletedProgramName:()=>f.V,CorpBaseResearchName:()=>i.uq,CorpEmployeeJob:()=>i._K,CorpMaterialName:()=>i.Ku,CorpProductResearchName:()=>i.q7,CorpResearchName:()=>i.d$,CorpUnlockName:()=>i.pm,CorpUpgradeName:()=>i.UG,CrimeType:()=>s.X,FactionName:()=>l.W,FactionWorkType:()=>p.vD,GymType:()=>p.A$,IndustryType:()=>i.LS,JobName:()=>p.q3,LiteratureName:()=>c.z,LocationName:()=>u.qr,LocationType:()=>u._i,MessageFilename:()=>m.S,OrderType:()=>h.mr,PositionType:()=>h.d,SmartSupplyOption:()=>i.LE,StockSymbol:()=>h.QT,ToastVariant:()=>d.x,UniversityClassType:()=>p.GK});var r=n(43943),a=n(91407),o=n(62896),i=n(15905),s=n(4348),l=n(94139),c=n(33986),u=n(89298),m=n(35242),f=n(45813),h=n(41485),d=n(36352),p=n(96707)},52107:(e,t,n)=>{"use strict";let r;n.d(t,{NK:()=>o,VX:()=>r,bx:()=>i}),function(e){e.Bypass="Bypass",e.PrototypeTampering="PrototypeTampering",e.Unclickable="Unclickable",e.UndocumentedFunctionCall="UndocumentedFunctionCall",e.TimeCompression="TimeCompression",e.RealityAlteration="RealityAlteration",e.N00dles="N00dles",e.YoureNotMeantToAccessThis="YoureNotMeantToAccessThis",e.TrueRecursion="TrueRecursion",e.INeedARainbow="INeedARainbow",e.EditSaveFile="EditSaveFile"}(r||(r={}));const a={Bypass:"by circumventing the ram cost of document.",EditSaveFile:"by editing your save file.",PrototypeTampering:"by tampering with Numbers prototype.",TimeCompression:"by compressing time.",Unclickable:"by clicking the unclickable.",UndocumentedFunctionCall:"by looking beyond the documentation.",RealityAlteration:"by altering reality to suit your whims.",N00dles:"by harnessing the power of the n00dles.",YoureNotMeantToAccessThis:"by accessing the dev menu.",TrueRecursion:"by truly recursing.",INeedARainbow:"by using the power of the rainbow."};function o(e){return a[e]}function i(e){return e=e.filter((e=>Object.values(r).includes(e))),[...new Set(e)]}},6290:(e,t,n)=>{"use strict";n.d(t,{f:()=>s});var r=n(67294),a=n(49173),o=n(52107);const i=window.getComputedStyle;function s(){return r.createElement("div",{id:"unclickable",onClick:function(e){if(!(e.target&&e.target instanceof Element))return;const t=i(e.target).display,n=i(e.target).visibility;"none"===t&&"hidden"===n&&e.isTrusted&&a.J5.giveExploit(o.VX.Unclickable)},style:{display:"none",visibility:"hidden"}},"Click on this to upgrade your Source-File -1!")}},69704:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(49173),a=n(52107);function o(){if(r.J5.exploits&&0===r.J5.exploits.length)return;r.J5.exploits=(0,a.bx)(r.J5.exploits);const e=Math.pow(1.001,r.J5.exploits.length),t=Math.pow(.999,r.J5.exploits.length);r.J5.mults.hacking_chance*=e,r.J5.mults.hacking_speed*=e,r.J5.mults.hacking_money*=e,r.J5.mults.hacking_grow*=e,r.J5.mults.hacking*=e,r.J5.mults.strength*=e,r.J5.mults.defense*=e,r.J5.mults.dexterity*=e,r.J5.mults.agility*=e,r.J5.mults.charisma*=e,r.J5.mults.hacking_exp*=e,r.J5.mults.strength_exp*=e,r.J5.mults.defense_exp*=e,r.J5.mults.dexterity_exp*=e,r.J5.mults.agility_exp*=e,r.J5.mults.charisma_exp*=e,r.J5.mults.company_rep*=e,r.J5.mults.faction_rep*=e,r.J5.mults.crime_money*=e,r.J5.mults.crime_success*=e,r.J5.mults.hacknet_node_money*=e,r.J5.mults.hacknet_node_purchase_cost*=t,r.J5.mults.hacknet_node_ram_cost*=t,r.J5.mults.hacknet_node_core_cost*=t,r.J5.mults.hacknet_node_level_cost*=t,r.J5.mults.work_money*=e}},93573:(e,t,n)=>{"use strict";n.d(t,{s:()=>o});var r=n(49173),a=n(52107);function o(){r.J5.exploits.includes(a.VX.PrototypeTampering)||setInterval((function(){"5.5e+1"!==55..toExponential()&&r.J5.giveExploit(a.VX.PrototypeTampering)}),9e5),function(){if(r.J5.exploits.includes(a.VX.TimeCompression))return;let e=performance.now();window.setTimeout((function t(){const n=performance.now();n-e<500?r.J5.giveExploit(a.VX.TimeCompression):(e=n,window.setTimeout(t,15e3))}),15e3)}()}},93936:(e,t,n)=>{"use strict";n.d(t,{B0:()=>i,GO:()=>o,ju:()=>l,uL:()=>s});var r=n(58427),a=n(49173);let o=0;function i(){return(new Date).getTime()-o>864e5}function s(){if(i()){for(const e of a.J5.factions)r.i[e].favor++;o=(new Date).getTime()}}function l(e){o=e}},94139:(e,t,n)=>{"use strict";let r;n.d(t,{W:()=>r}),function(e){e.Illuminati="Illuminati",e.Daedalus="Daedalus",e.TheCovenant="The Covenant",e.ECorp="ECorp",e.MegaCorp="MegaCorp",e.BachmanAssociates="Bachman & Associates",e.BladeIndustries="Blade Industries",e.NWO="NWO",e.ClarkeIncorporated="Clarke Incorporated",e.OmniTekIncorporated="OmniTek Incorporated",e.FourSigma="Four Sigma",e.KuaiGongInternational="KuaiGong International",e.FulcrumSecretTechnologies="Fulcrum Secret Technologies",e.BitRunners="BitRunners",e.TheBlackHand="The Black Hand",e.NiteSec="NiteSec",e.Aevum="Aevum",e.Chongqing="Chongqing",e.Ishima="Ishima",e.NewTokyo="New Tokyo",e.Sector12="Sector-12",e.Volhaven="Volhaven",e.SpeakersForTheDead="Speakers for the Dead",e.TheDarkArmy="The Dark Army",e.TheSyndicate="The Syndicate",e.Silhouette="Silhouette",e.Tetrads="Tetrads",e.SlumSnakes="Slum Snakes",e.Netburners="Netburners",e.TianDiHui="Tian Di Hui",e.CyberSec="CyberSec",e.Bladeburners="Bladeburners",e.ChurchOfTheMachineGod="Church of the Machine God",e.ShadowsOfAnarchy="Shadows of Anarchy"}(r||(r={}))},4478:(e,t,n)=>{"use strict";n.d(t,{a:()=>l});var r=n(33244),a=n(98865),o=n(48132),i=n(94515),s=n(89194);class l{alreadyInvited=!1;augmentations=[];favor=0;isBanned=!1;isMember=!1;playerReputation=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r.FactionName.Sector12;this.name=e}getInfo(){const e=a.G[this.name];if(null==e)throw new Error(`Missing faction from FactionInfos: ${this.name} this probably means the faction got corrupted somehow`);return e}prestigeSourceFile(){this.favor=0,this.playerReputation=0,this.alreadyInvited=!1,this.isMember=!1,this.isBanned=!1}prestigeAugmentation(){null==this.favor&&(this.favor=0),this.favor+=this.getFavorGain(),this.playerReputation=0,this.alreadyInvited=!1,this.isMember=!1,this.isBanned=!1}getFavorGain(){null==this.favor&&(this.favor=0);const e=Math.max(0,(0,o.X)(this.favor))+this.playerReputation;return(0,o.y)(e)-this.favor}static savedKeys=(0,s.i)(l,{removedKeys:["augmentations","name"]});toJSON(){return(0,i.L3)("Faction",this,l.savedKeys)}static fromJSON(e){return(0,i.Id)(l,e.data,l.savedKeys)}}i.gY.Faction=l},94542:(e,t,n)=>{"use strict";n.d(t,{AM:()=>w,Bj:()=>b,Gl:()=>k,id:()=>v,kl:()=>y,qW:()=>E});var r=n(73440),a=n(15571),o=n(33244),i=n(97740),s=n(49173),l=n(58427),c=n(51087),u=n(509),m=n(39463),f=n(60784),h=n(12450),d=n(16632),p=n(27889),g=n(21623);function y(e){s.J5.receiveInvite(e.name),e.alreadyInvited=!0,c.Z.SuppressFactionInvites||f.J.emit(e)}function b(e){if(e.isMember)return;e.isMember=!0,s.J5.factions.push(e.name);let t=0;const n=(0,g.KW)(o.FactionName,(e=>t++));s.J5.factions.sort(((e,t)=>n[e]-n[t]));const r=e.getInfo();for(const e of r.enemies)l.i[e]&&(l.i[e].isBanned=!0);for(let t=0;ts.J5.hasAugmentation(e)))}function k(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const r=v(e),i=(0,p.hV)(e);if(r)if(0!==i.moneyCost&&s.J5.money=i.moneyCost){const t=new a.e(e.name);if(e.name==o.AugmentationName.NeuroFluxGovernor&&(t.level=e.getNextLevel()),s.J5.queuedAugmentations.push(t),s.J5.loseMoney(i.moneyCost,"augmentations"),n)return"You purchased "+e.name;c.Z.SuppressBuyAugmentationConfirmation||(0,m.X)(`You purchased ${e.name}. Its enhancements will not take effect until they are installed.To install your augmentations, go to the 'Augmentations' tab on the left-hand navigation menu.Purchasing additional augmentations will now be more expensive.`)}else(0,m.X)("Hmm, something went wrong when trying to purchase an Augmentation. Please report this to the game developer with an explanation of how to reproduce this.");else{const t=`You must first purchase or install ${e.prereqs.filter((e=>!s.J5.hasAugmentation(e))).join(",")} before you can purchase this one.`;if(n)return t;(0,m.X)(t)}return""}function w(e){if(2!==s.J5.bitNodeN)for(const t of(0,g.nd)(l.i)){if((0,d.D)(s.J5.currentWork)&&t===s.J5.currentWork.factionName)continue;const n=l.i[t];if(!n.isMember)continue;if(!n.getInfo().offersWork())continue;if(s.J5.getGangName()===t)continue;const r=Math.min(.1,n.favor/1e3+.01),a=(0,u.He)(s.J5,n.favor),o=(0,u.Zz)(s.J5,n.favor),c=(0,u._h)(s.J5,n.favor),m=Math.max(a*r,o*r,c*r,1/120);n.playerReputation+=m*e*s.J5.mults.faction_rep*i.dQ.FactionPassiveRepGain}}const E=e=>{if(s.J5.hasGangWith(e.name)){let t=Object.values(r.x);t=t.filter((e=>!e.isSpecial&&e.name!==o.AugmentationName.CongruityImplant)),2===s.J5.bitNodeN&&t.push(r.x[o.AugmentationName.TheRedPill]);const n=(0,h.h3)(`BN${s.J5.bitNodeN}.${s.J5.sourceFileLvl(s.J5.bitNodeN)}`),a=t=>t.factions.length>1||!!e.augmentations.includes(t.name)||n()>=1-i.dQ.GangUniqueAugs;return t=t.filter(a),t.map((e=>e.name))}return e.augmentations.slice()}},98865:(e,t,n)=>{"use strict";n.d(t,{G:()=>u});var r=n(67294),a=n(33244),o=n(52947),i=n(24815),s=n(17816),l=n(81138);class c{constructor(e){this.infoText=e.infoText??r.createElement(r.Fragment,null),this.enemies=e.enemies??[],this.offerHackingWork=e.offerHackingWork??!1,this.offerFieldWork=e.offerFieldWork??!1,this.offerSecurityWork=e.offerSecurityWork??!1,this.keep=e.keepOnInstall??!1,this.special=e.special??!1,this.assignment=e.assignment}offersWork(){return this.offerFieldWork||this.offerHackingWork||this.offerSecurityWork}}const u={[a.FactionName.Illuminati]:new c({infoText:r.createElement(r.Fragment,null,"Humanity never changes. No matter how civilized society becomes, it will eventually fall back into chaos. And from this chaos, we are the invisible hand that guides them to order."," "),offerHackingWork:!0,offerFieldWork:!0}),[a.FactionName.Daedalus]:new c({infoText:r.createElement(r.Fragment,null,"Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth."),offerHackingWork:!0,offerFieldWork:!0}),[a.FactionName.TheCovenant]:new c({infoText:r.createElement(r.Fragment,null,"Surrender yourself. Give up your empty individuality to become part of something great, something eternal. Become a slave. Submit your mind, body, and soul. Only then can you set yourself free.",r.createElement("br",null),r.createElement("br",null),"Only then can you discover immortality."),offerHackingWork:!0,offerFieldWork:!0}),[a.FactionName.ECorp]:new c({infoText:r.createElement(r.Fragment,null,a.FactionName.ECorp,"'s mission is simple: to connect the world of today with the technology of tomorrow. With our wide range of Internet-related software and commercial hardware, ",a.FactionName.ECorp," makes the world's information universally accessible."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.MegaCorp]:new c({infoText:r.createElement(r.Fragment,null,a.FactionName.MegaCorp," does what no other dares to do. We imagine. We create. We invent. We create what others have never even dreamed of. Our work fills the world's needs for food, water, power, and transportation on an unprecedented scale, in ways that no other company can.",r.createElement("br",null),r.createElement("br",null),"In our labs and factories and on the ground with customers, ",a.FactionName.MegaCorp," is ushering in a new era for the world."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.BachmanAssociates]:new c({infoText:r.createElement(r.Fragment,null,"Where Law and Business meet - that's where we are.",r.createElement("br",null),r.createElement("br",null),"Legal Insight - Business Instinct - Innovative Experience."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.BladeIndustries]:new c({infoText:r.createElement(r.Fragment,null,"Augmentation is Salvation."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.NWO]:new c({infoText:r.createElement(r.Fragment,null,"Humans don't truly desire freedom. They want to be observed, understood, and judged. They want to be given purpose and direction in life. That is why they created God. And that is why they created civilization - not because of willingness, but because of a need to be incorporated into higher orders of structure and meaning."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.ClarkeIncorporated]:new c({infoText:r.createElement(r.Fragment,null,"The Power of the Genome - Unlocked."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.OmniTekIncorporated]:new c({infoText:r.createElement(r.Fragment,null,"Simply put, our mission is to design and build robots that make a difference."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.FourSigma]:new c({infoText:r.createElement(r.Fragment,null,"The scientific method is the best way to approach investing. Big strategies backed up with big data. Driven by deep learning and innovative ideas. And improved by iteration. That's ",a.FactionName.FourSigma,"."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.KuaiGongInternational]:new c({infoText:r.createElement(r.Fragment,null,"Dream big. Work hard. Make history."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.FulcrumSecretTechnologies]:new c({infoText:r.createElement(r.Fragment,null,"The human organism has an innate desire to worship. That is why they created gods. If there were no gods, it would be necessary to create them. And now we can."),offerHackingWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[a.FactionName.BitRunners]:new c({infoText:r.createElement(r.Fragment,null,"Our entire lives are controlled by bits. All of our actions, our thoughts, our personal information. It's all transformed into bits, stored in bits, communicated through bits. It’s impossible for any person to move, to live, to operate at any level without the use of bits. And when a person moves, lives, and operates, they leave behind their bits, mere traces of seemingly meaningless fragments of information. But these bits can be reconstructed. Transformed. Used.",r.createElement("br",null),r.createElement("br",null),"Those who run the bits, run the world."),offerHackingWork:!0}),[a.FactionName.TheBlackHand]:new c({infoText:r.createElement(r.Fragment,null,"The world, so afraid of strong government, now has no government. Only power - Digital power. Financial power. Technological power. And those at the top rule with an invisible hand. They built a society where the rich get richer, and everyone else suffers.",r.createElement("br",null),r.createElement("br",null),"So much pain. So many lives. Their darkness must end."),offerHackingWork:!0,offerFieldWork:!0}),[a.FactionName.NiteSec]:new c({infoText:r.createElement(r.Fragment,null," __..__ ",r.createElement("br",null)," _.nITESECNIt. ",r.createElement("br",null)," .-'NITESECNITESEc. ",r.createElement("br",null)," .' NITESECNITESECn ",r.createElement("br",null)," / NITESECNITESEC; ",r.createElement("br",null)," : :NITESECNITESEC; ",r.createElement("br",null)," ; $ NITESECNITESECN ",r.createElement("br",null)," : _, ,N'ITESECNITESEC ",r.createElement("br",null)," : .+^^`, : `NITESECNIT ",r.createElement("br",null)," ) /), `-,-=,NITESECNI ",r.createElement("br",null)," / ^ ,-;|NITESECN; ",r.createElement("br",null)," / _.' '-';NITESECN ",r.createElement("br",null)," ( , ,-''`^NITE' ",r.createElement("br",null)," )` :`. .' ",r.createElement("br",null)," )-- ; `- / ",r.createElement("br",null)," ' _.-' : ",r.createElement("br",null)," ( _.-' . ",r.createElement("br",null)," ------. ",r.createElement("br",null)," . ",r.createElement("br",null)," _.nIt ",r.createElement("br",null)," _.nITESECNi ",r.createElement("br",null)," nITESECNIT^' ",r.createElement("br",null)," NITE^' ___ ",r.createElement("br",null)," / .gP''''Tp. ",r.createElement("br",null)," : d' . `b ",r.createElement("br",null)," ; d' o `b ; ",r.createElement("br",null)," / d; `b| ",r.createElement("br",null)," /, $; @ `: ",r.createElement("br",null)," /' $/ ; ",r.createElement("br",null)," .' $/b o | ",r.createElement("br",null)," .' d$/$; : ",r.createElement("br",null)," / .d/$/$; , ; ",r.createElement("br",null)," d .dNITESEC $ | ",r.createElement("br",null)," :bp.__.gNITESEC/$ :$ ; ",r.createElement("br",null)," NITESECNITESECNIT /$b : ",r.createElement("br",null)),offerHackingWork:!0,offerFieldWork:!1,offerSecurityWork:!1,special:!1,keepOnInstall:!1}),[a.FactionName.Aevum]:new c({infoText:r.createElement(r.Fragment,null,"The Silicon City."),enemies:[a.FactionName.Chongqing,a.FactionName.NewTokyo,a.FactionName.Ishima,a.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.Chongqing]:new c({infoText:r.createElement(r.Fragment,null,"Serve the People."),enemies:[a.FactionName.Sector12,a.FactionName.Aevum,a.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.Ishima]:new c({infoText:r.createElement(r.Fragment,null,"The East Asian Order of the Future."),enemies:[a.FactionName.Sector12,a.FactionName.Aevum,a.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.NewTokyo]:new c({infoText:r.createElement(r.Fragment,null,"Asia's World City."),enemies:[a.FactionName.Sector12,a.FactionName.Aevum,a.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.Sector12]:new c({infoText:r.createElement(r.Fragment,null,"The City of the Future."),enemies:[a.FactionName.Chongqing,a.FactionName.NewTokyo,a.FactionName.Ishima,a.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.Volhaven]:new c({infoText:r.createElement(r.Fragment,null,"Benefit, Honor, and Glory."),enemies:[a.FactionName.Chongqing,a.FactionName.Sector12,a.FactionName.NewTokyo,a.FactionName.Aevum,a.FactionName.Ishima],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.SpeakersForTheDead]:new c({infoText:r.createElement(r.Fragment,null,"It is better to reign in Hell than to serve in Heaven."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.TheDarkArmy]:new c({infoText:r.createElement(r.Fragment,null,"The World doesn't care about right or wrong. It only cares about power."),offerHackingWork:!0,offerFieldWork:!0}),[a.FactionName.TheSyndicate]:new c({infoText:r.createElement(r.Fragment,null,"Honor holds you back."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.Silhouette]:new c({infoText:r.createElement(r.Fragment,null,"Corporations have filled the void of power left behind by the collapse of Western government. The issue is they've become so big that you don't know who they're working for. And if you're employed at one of these corporations, you don't even know who you're working for.",r.createElement("br",null),r.createElement("br",null),"That's terror. Terror, fear, and corruption. All born into the system, all propagated by the system."),offerHackingWork:!0,offerFieldWork:!0}),[a.FactionName.Tetrads]:new c({infoText:r.createElement(r.Fragment,null,"Following the mandate of Heaven and carrying out the way."),offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.SlumSnakes]:new c({infoText:r.createElement(r.Fragment,null,a.FactionName.SlumSnakes," rule!"),offerFieldWork:!0,offerSecurityWork:!0}),[a.FactionName.Netburners]:new c({infoText:r.createElement(r.Fragment,null,"~~//*>H4CK||3T 8URN3R5**>?>\\~~"),offerHackingWork:!0}),[a.FactionName.TianDiHui]:new c({infoText:r.createElement(r.Fragment,null,"Obey Heaven and work righteously."),offerHackingWork:!0,offerSecurityWork:!0}),[a.FactionName.CyberSec]:new c({infoText:r.createElement(r.Fragment,null,"The Internet is the first thing that was built that we don't fully understand, the largest experiment in anarchy that we have ever had. And as the world becomes increasingly dominated by it, society approaches the brink of total chaos. We serve only to protect society, to protect humanity, to protect the world from imminent collapse."),offerHackingWork:!0}),[a.FactionName.Bladeburners]:new c({infoText:r.createElement(r.Fragment,null,"It's too bad they won't live. But then again, who does?",r.createElement("br",null),r.createElement("br",null),"Note that for this faction, reputation can only be gained through ",a.FactionName.Bladeburners," actions. Completing"," ",a.FactionName.Bladeburners," contracts/operations will increase your reputation."),special:!0,assignment:()=>r.createElement(s.W,{buttonText:"Open Bladeburner headquarters",infoText:"You can gain reputation with bladeburner by completing contracts and operations.",onClick:()=>o.F.toPage(i.T3.Bladeburner)})}),[a.FactionName.ChurchOfTheMachineGod]:new c({infoText:r.createElement(r.Fragment,null," `` ",r.createElement("br",null)," -odmmNmds: ",r.createElement("br",null)," `hNmo:..-omNh. ",r.createElement("br",null)," yMd` `hNh ",r.createElement("br",null)," mMd oNm ",r.createElement("br",null)," oMNo .mM/ ",r.createElement("br",null)," `dMN+ -mM+ ",r.createElement("br",null)," -mMNo -mN+ ",r.createElement("br",null)," .+- :mMNo/mN/ ",r.createElement("br",null),":yNMd. :NMNNN/ ",r.createElement("br",null),"-mMMMh. /NMMh` ",r.createElement("br",null)," .dMMMd. /NMMMy` ",r.createElement("br",null)," `yMMMd. /NNyNMMh` ",r.createElement("br",null)," `sMMMd. +Nm: +NMMh. ",r.createElement("br",null)," oMMMm- oNm: /NMMd. ",r.createElement("br",null)," +NMMmsMm- :mMMd. ",r.createElement("br",null)," /NMMMm- -mMMd. ",r.createElement("br",null)," /MMMm- -mMMd. ",r.createElement("br",null)," `sMNMMm- .mMmo ",r.createElement("br",null)," `sMd:hMMm. ./. ",r.createElement("br",null)," `yMy` `yNMd` ",r.createElement("br",null)," `hMs` oMMy ",r.createElement("br",null)," `hMh sMN- ",r.createElement("br",null)," /MM- .NMo ",r.createElement("br",null)," +MM: :MM+ ",r.createElement("br",null)," sNNo-.`.-omNy` ",r.createElement("br",null)," -smNNNNmdo- ",r.createElement("br",null)," `..` ",r.createElement("br",null),r.createElement("br",null),"Many cultures predict an end to humanity in the near future, a final Armageddon that will end the world; but we disagree."),offerHackingWork:!1,offerFieldWork:!1,offerSecurityWork:!1,special:!0,keepOnInstall:!0,assignment:()=>r.createElement(s.W,{buttonText:"Open Staneks Gift",infoText:"Stanek's Gift is a powerful augmentation that powers up the stat you chose to boost.Gaining reputation with the Church of the Machine God can only be done by charging the gift.",onClick:()=>o.F.toPage(i.T3.StaneksGift)})}),[a.FactionName.ShadowsOfAnarchy]:new c({infoText:r.createElement(r.Fragment,null,"The government is ruled by the corporations that we have allowed to consume it. To release the world from its shackles, the gods grant us their strength."),special:!0,keepOnInstall:!0,assignment:()=>r.createElement(l.Z,null,a.FactionName.ShadowsOfAnarchy," can only gain reputation by infiltrating.")})}},58427:(e,t,n)=>{"use strict";n.d(t,{i:()=>c,m:()=>u});var r=n(33244),a=n(4478),o=n(94515),i=n(21623),s=n(73440),l=n(50862);const c=(0,i.KW)(r.FactionName,(e=>new a.a(e)));for(const e of(0,i.R3)(s.x))for(const t of e.factions)c[t].augmentations.push(e.name);function u(e){const t=JSON.parse(e,o.Ro);if(t&&"object"==typeof t)for(const[e,n]of Object.entries(t)){if(!(0,l.m)("FactionName").isMember(e))continue;if(!n)continue;const t=c[e];if("object"!=typeof n)continue;(0,o._q)(n);const{playerReputation:r,favor:a}=n;"number"==typeof r&&r>0&&(t.playerReputation=r),"number"==typeof a&&a>0&&(t.favor=a),n.alreadyInvited&&(t.alreadyInvited=!0),n.isBanned&&(t.isBanned=!0),n.isMember&&(t.isMember=!0)}}},23248:(e,t,n)=>{"use strict";n.d(t,{HC:()=>c,Tv:()=>s,ZC:()=>l,o9:()=>i});var r=n(49173),a=n(72938),o=n(97740);function i(e,t){return e/a.t.DonateMoneyToRepDivisor*t.mults.faction_rep*o.dQ.FactionWorkRepGain}function s(){return Math.floor(a.t.BaseFavorToDonate*o.dQ.RepToDonateToFaction)}function l(e){return!isNaN(e)&&e>0&&r.J5.money>=e}function c(e,t){if(!l(e))return 0;const n=i(e,r.J5);return r.J5.loseMoney(e,"other"),t.playerReputation+=n,n}},48132:(e,t,n)=>{"use strict";function r(e){const t=25e3*(Math.pow(1.02,e)-1);return Math.round(1e4*t)/1e4}function a(e){const t=Math.log(e/25e3+1)/Math.log(1.02);return Math.round(1e4*t)/1e4}n.d(t,{X:()=>r,y:()=>a})},57385:(e,t,n)=>{"use strict";n.d(t,{c:()=>C});var r=n(67294),a=n(17575),o=n(81138),i=n(78016),s=n(56798),l=n(28881),c=n(30120),u=n(73440),m=n(27889),f=n(33244),h=n(75012),d=n(56412),p=n(51087),g=n(49173),y=n(22115),b=n(41519),v=n(17365),k=n(52947),w=n(94542),E=n(72938),S=n(88775);function C(e){let{faction:t}=e;const n=(0,S.S)();function C(){return(0,w.qW)(t)}function x(e){p.Z.PurchaseAugmentationsOrder=e,n()}const N=function(){switch(p.Z.PurchaseAugmentationsOrder){case d.L.Cost:return function(){const e=C();return e.sort(((e,t)=>{const n=u.x[e],r=u.x[t];if(null==n||null==r)throw new Error("Invalid Augmentation Names");return(0,m.hV)(n).moneyCost-(0,m.hV)(r).moneyCost})),e}();case d.L.Reputation:return function(){const e=C();return e.sort(((e,t)=>{const n=u.x[e],r=u.x[t];if(null==n||null==r)throw new Error("Invalid Augmentation Names");return(0,m.hV)(n).repCost-(0,m.hV)(r).repCost})),e}();case d.L.Purchasable:return function(){const e=C();function n(e){const n=u.x[e],r=(0,m.hV)(n),a=r.repCost,o=t.playerReputation>=a,i=(0,w.id)(n);return 0!==r.moneyCost&&g.J5.money>r.moneyCost&&o&&i}const r=e.filter(n).sort(((e,t)=>{const n=u.x[e],r=u.x[t];if(null==n||null==r)throw new Error("Invalid Augmentation Names");return(0,m.hV)(n).moneyCost-(0,m.hV)(r).moneyCost})),a=e.filter((e=>!n(e))).sort(((e,t)=>{const n=u.x[e],r=u.x[t];if(null==n||null==r)throw new Error("Invalid Augmentation Names");return(0,m.hV)(n).repCost-(0,m.hV)(r).repCost}));return r.concat(a)}();default:return C()}}(),M=N.filter((e=>e===f.AugmentationName.NeuroFluxGovernor||!g.J5.augmentations.some((t=>t.name===e))&&!g.J5.queuedAugmentations.some((t=>t.name===e)))),A=N.filter((e=>!M.includes(e))),T=t.name!==f.FactionName.ShadowsOfAnarchy?r.createElement(a.Z,{title:r.createElement(o.Z,null,"The price of every Augmentation increases for every queued Augmentation and it is reset when you install them.")},r.createElement(o.Z,null,r.createElement("b",null,"Price multiplier:")," x ",(0,y.dp)((0,m.oz)()))):r.createElement(a.Z,{title:r.createElement(o.Z,null,"This price multiplier increases for each ",f.FactionName.ShadowsOfAnarchy," augmentation already purchased. The multiplier is NOT reset when installing augmentations.")},r.createElement(o.Z,null,r.createElement("b",null,"Price multiplier:")," x"," ",(0,y.dp)(Math.pow(E.t.SoACostMult,N.filter((e=>g.J5.hasAugmentation(e))).length)),r.createElement("br",null),r.createElement("b",null,"Reputation multiplier:")," x"," ",(0,y.dp)(Math.pow(E.t.SoARepMult,N.filter((e=>g.J5.hasAugmentation(e))).length))));return r.createElement(r.Fragment,null,r.createElement(i.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0}},r.createElement(s.Z,{onClick:()=>k.F.back()},"Back"),r.createElement(o.Z,{variant:"h4"},"Faction Augmentations - ",t.name),r.createElement(l.Z,{sx:{p:1,mb:1}},r.createElement(o.Z,null,"These are all of the Augmentations that are available to purchase from ",r.createElement("b",null,t.name),". Augmentations are powerful upgrades that will enhance your abilities.",r.createElement("br",null)),r.createElement(c.Z,{sx:{display:"grid",gridTemplateColumns:`repeat(${t.name===f.FactionName.ShadowsOfAnarchy?"2":"3"}, 1fr)`,justifyItems:"center",my:1}},r.createElement(r.Fragment,null,T),r.createElement(o.Z,null,r.createElement("b",null,"Reputation:")," ",r.createElement(v.Y,{reputation:t.playerReputation}),r.createElement("br",null),r.createElement("b",null,"Favor:")," ",r.createElement(b.T,{favor:Math.floor(t.favor)}))),r.createElement(c.Z,{sx:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)"}},r.createElement(s.Z,{onClick:()=>x(d.L.Cost)},"Sort by Cost"),r.createElement(s.Z,{onClick:()=>x(d.L.Reputation)},"Sort by Reputation"),r.createElement(s.Z,{onClick:()=>x(d.L.Default)},"Sort by Default Order"),r.createElement(s.Z,{onClick:()=>x(d.L.Purchasable)},"Sort by Purchasable")))),r.createElement(h.b,{augNames:M,ownedAugNames:A,canPurchase:e=>{const n=(0,m.hV)(e);return(0,w.id)(e)&&t.playerReputation>=n.repCost&&(0===n.moneyCost||g.J5.money>n.moneyCost)},purchaseAugmentation:(e,r)=>{p.Z.SuppressBuyAugmentationConfirmation?((0,w.Gl)(e,t),n()):r(!0)},rerender:n,rep:t.playerReputation,faction:t}))}},31403:(e,t,n)=>{"use strict";n.d(t,{u:()=>f});var r=n(67294),a=n(48672),o=n(52947),i=n(24815),s=n(49173),l=n(81138),c=n(56798),u=n(81055),m=n(33244);function f(e){function t(){return[m.FactionName.NiteSec,m.FactionName.TheBlackHand].includes(e.facName)}function n(){s.J5.startGang(e.facName,t()),e.onClose(),o.F.toPage(i.T3.Gang)}return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(l.Z,null,"Would you like to create a new Gang with ",e.facName,"?",r.createElement("br",null),r.createElement("br",null),"Note that this will prevent you from creating a Gang with any other Faction until this BitNode is destroyed. It also resets your reputation with this faction.",r.createElement("br",null),r.createElement("br",null),t()?"This is a HACKING gang. Members in this gang will have different tasks than COMBAT gangs. Compared to combat gangs, progression with hacking gangs is more straightforward as territory warfare is not as important.":"This is a COMBAT gang. Members in this gang will have different tasks than HACKING gangs. Compared to hacking gangs, progression with combat gangs can be more difficult as territory management is more important. However, well-managed combat gangs can progress faster than hacking ones.",r.createElement("br",null),r.createElement("br",null),"Other than hacking vs combat, there are NO differences between the Factions you can create a Gang with, and each of these Factions have all Augmentations available."),r.createElement(c.Z,{onClick:n,onKeyUp:function(e){e.key===u.F.ENTER&&n()},autoFocus:!0},"Create Gang"))}},36477:(e,t,n)=>{"use strict";n.d(t,{J:()=>g});var r=n(67294),a=n(72938),o=n(49173),i=n(23248),s=n(41519),l=n(72360),c=n(17365),u=n(39463),m=n(70109),f=n(81138),h=n(28881),d=n(56798),p=n(33313);function g(e){let{faction:t,favorToDonate:n,disabled:g,rerender:y}=e;const[b,v]=(0,r.useState)(NaN),k=(a.t.DonateMoneyToRepDivisor+"").length-1;function w(){return isNaN(b)?r.createElement(r.Fragment,null):(0,i.ZC)(b)?r.createElement(f.Z,null,"This donation will result in ",r.createElement(c.Y,{reputation:(0,i.o9)(b,o.J5)})," reputation gain"):o.J5.money0&&((0,u.X)(r.createElement(r.Fragment,null,"You just donated ",r.createElement(l.W,{money:b})," to ",t.name," to gain ",r.createElement(c.Y,{reputation:e})," ","reputation.")),y())},disabled:g||!(0,i.ZC)(b)},"donate")}}),r.createElement(f.Z,null,r.createElement(m.Z,null,`\\(reputation = \\frac{\\text{donation amount} \\cdot \\text{reputation multiplier}}{10^{${k}}}\\)`))))}},41500:(e,t,n)=>{"use strict";n.d(t,{P:()=>v});var r=n(67294),a=n(36477),o=n(80302),i=n(17816),s=n(52947),l=n(24815),c=n(49173),u=n(56798),m=n(81138),f=n(40810),h=n(33244),d=n(56696),p=n(16632),g=n(88775),y=n(23248);function b(e){let{faction:t,rerender:n,onAugmentations:g}=e;const[b,v]=(0,r.useState)(!1),k=t.getInfo();function w(){c.J5.startFocusing(),s.F.toPage(l.T3.Work)}const E=c.J5.gang&&c.J5.getGangName()===t.name,S=(0,y.Tv)(),C=t.favor>=S,x=t.name===h.FactionName.TheCovenant&&10===c.J5.bitNodeN;return r.createElement(r.Fragment,null,r.createElement(u.Z,{onClick:()=>s.F.toPage(l.T3.Factions)},"Back"),r.createElement(m.Z,{variant:"h4",color:"primary"},t.name),r.createElement(o.k,{faction:t,factionInfo:k}),r.createElement(d.j,{faction:t}),!E&&k.offerHackingWork&&r.createElement(i.W,{buttonText:"Hacking Contracts",infoText:"Complete hacking contracts for your faction. Your effectiveness, which determines how much reputation you gain for this faction, is based on your hacking skill. You will gain hacking exp.",onClick:()=>function(e){c.J5.startWork(new p.s({singularity:!1,faction:e.name,factionWorkType:h.FactionWorkType.hacking})),w()}(t)}),!E&&k.offerFieldWork&&r.createElement(i.W,{buttonText:"Field Work",infoText:"Carry out field missions for your faction. Your effectiveness, which determines how much reputation you gain for this faction, is based on all of your stats. You will gain exp for all stats.",onClick:()=>function(e){c.J5.startWork(new p.s({singularity:!1,faction:e.name,factionWorkType:h.FactionWorkType.field})),w()}(t)}),!E&&k.offerSecurityWork&&r.createElement(i.W,{buttonText:"Security Work",infoText:"Serve in a security detail for your faction. Your effectiveness, which determines how much reputation you gain for this faction, is based on your combat stats. You will gain exp for all combat stats.",onClick:()=>function(e){c.J5.startWork(new p.s({singularity:!1,faction:e.name,factionWorkType:h.FactionWorkType.security})),w()}(t)}),!E&&k.offersWork()&&r.createElement(a.J,{faction:t,rerender:n,favorToDonate:S,disabled:!C}),r.createElement(i.W,{buttonText:"Purchase Augmentations",infoText:"As your reputation with this faction rises, you will unlock Augmentations, which you can purchase to enhance your abilities.",onClick:g}),x&&r.createElement(r.Fragment,null,r.createElement(i.W,{buttonText:"Purchase & Upgrade Duplicate Sleeves",infoText:"Purchase Duplicate Sleeves and upgrades. These are permanent!",onClick:()=>v(!0)}),r.createElement(f.r,{open:b,onClose:()=>v(!1)})))}function v(e){let{faction:t}=e;const n=(0,g.S)(200);return c.J5.factions.includes(t.name)?r.createElement(b,{rerender:n,faction:t,onAugmentations:()=>s.F.toPage(l.T3.FactionAugmentations,{faction:t})}):r.createElement(r.Fragment,null,r.createElement(m.Z,{variant:"h4",color:"primary"},"You have not joined ",t.name," yet!"),r.createElement(u.Z,{onClick:()=>s.F.toPage(l.T3.Factions)},"Back to Factions"))}},1041:(e,t,n)=>{"use strict";n.d(t,{Q:()=>R,Y:()=>M});var r=n(67294),a=n(41946),o=n(95533),i=n(52683),s=n(4884),l=n(11886),c=n(7542),u=n(40238),m=n(17575),f=n(28881),h=n(30120),d=n(56798),p=n(81138),g=n(62097),y=n(78016),b=n(49173),v=n(33244),k=n(51087),w=n(22115),E=n(52947),S=n(24815),C=n(88775),x=n(94542),N=n(58427);const M=new Set,A="small",T=e=>{const t=e.faction.getInfo();return r.createElement(r.Fragment,null,t.offerFieldWork&&r.createElement(m.Z,{title:"This Faction offers field work"},r.createElement(a.Z,{sx:{color:k.Z.theme.info,mr:.5},fontSize:A})),t.offerHackingWork&&r.createElement(m.Z,{title:"This Faction offers hacking work"},r.createElement(o.Z,{sx:{color:k.Z.theme.hack,mr:.5},fontSize:A})),t.offerSecurityWork&&r.createElement(m.Z,{title:"This Faction offers security work"},r.createElement(i.Z,{sx:{color:k.Z.theme.combat,mr:.5},fontSize:A})))},L=e=>{const t=e.faction.getInfo(),n=(0,x.qW)(e.faction).filter((e=>!b.J5.hasAugmentation(e))).length;return r.createElement(f.Z,{sx:{display:"grid",p:1,alignItems:"center",gridTemplateColumns:"minmax(0, 4fr)"+(e.joined?" 1fr":"")}},r.createElement(h.Z,{display:"flex",sx:{alignItems:"center"}},e.joined?r.createElement(h.Z,{display:"grid",sx:{mr:1,gridTemplateColumns:"1fr 1fr",minWidth:"fit-content",gap:.5,"& .MuiButton-root":{height:"48px"}}},r.createElement(d.Z,{onClick:()=>{return t=e.faction,void E.F.toPage(S.T3.Faction,{faction:t});var t}},"Details"),r.createElement(d.Z,{onClick:()=>{return t=e.faction,void E.F.toPage(S.T3.FactionAugmentations,{faction:t});var t}},"Augments")):r.createElement(d.Z,{sx:{height:"48px",mr:1},onClick:t=>{return n=t,r=e.faction.name,void(n.isTrusted&&((0,x.Bj)(N.i[r]),e.rerender()));var n,r}},"Join!"),r.createElement("span",{style:{maxWidth:e.joined?"70%":"95%"}},r.createElement(p.Z,{variant:"h6",sx:{mr:1,display:"grid",gridTemplateColumns:"fit-content(100vw) max-content",alignItems:"center"}},r.createElement(m.Z,{title:e.faction.name},r.createElement("span",{style:{overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}},e.faction.name)),r.createElement("span",{style:{display:"flex",alignItems:"center"}},b.J5.hasGangWith(e.faction.name)&&r.createElement(m.Z,{title:"You have a gang with this Faction"},r.createElement(s.Z,{sx:{color:k.Z.theme.hp,ml:1}})),t.special&&r.createElement(m.Z,{title:"This is a special Faction"},r.createElement(l.Z,{sx:{ml:1,color:k.Z.theme.money,transform:"rotate(180deg)"}})),!e.joined&&t.enemies.length>0&&r.createElement(m.Z,{title:r.createElement(p.Z,null,"This Faction is enemies with:",r.createElement("ul",null,t.enemies.map((e=>r.createElement("li",{key:e},e)))),"Joining this Faction will prevent you from joining its enemies")},r.createElement(c.Z,{sx:{ml:1,color:k.Z.theme.error}})))),r.createElement("span",{style:{display:"flex",alignItems:"center"}},!b.J5.hasGangWith(e.faction.name)&&r.createElement(T,{faction:e.faction}),r.createElement(p.Z,{variant:"body2",sx:{display:"flex"}},`${n||"No"} Augmentations left`)))),e.joined&&r.createElement(h.Z,{display:"grid",sx:{alignItems:"center",justifyItems:"left",gridAutoFlow:"row"}},r.createElement(p.Z,{sx:{color:k.Z.theme.rep}},(0,w.ZQ)(Math.floor(e.faction.favor))," favor"),r.createElement(p.Z,{sx:{color:k.Z.theme.rep}},(0,w.$n)(e.faction.playerReputation)," rep")))};function R(){const e=(0,g.Z)(),t=(0,C.S)(200);(0,r.useEffect)((()=>{b.J5.factionInvitations.forEach((e=>{M.add(e)}))}),[]);const n=Object.values(v.FactionName).map((e=>e)),a=[...b.J5.factions];a.sort(((e,t)=>n.indexOf(e)-n.indexOf(t)));const o=b.J5.factionInvitations;return r.createElement(y.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0,mb:10}},r.createElement(p.Z,{variant:"h4"},"Factions",r.createElement(m.Z,{title:r.createElement(p.Z,null,"Throughout the game you may receive invitations from factions. There are many different factions, and each faction has different criteria for determining its potential members. Joining a faction and furthering its cause is crucial to progressing in the game and unlocking endgame content.")},r.createElement(u.Z,{sx:{ml:1,mb:0},color:"info"}))),r.createElement(h.Z,{display:"grid",sx:{gap:1,gridTemplateColumns:(o.length>0?"1fr ":"")+"2fr",[e.breakpoints.down("lg")]:{gridTemplateColumns:"1fr","& > span:nth-of-type(1)":{order:1}},gridTemplateRows:"minmax(0, 1fr)","& > span > .MuiBox-root":{display:"grid",gridAutoRows:"70px",gap:1}}},o.length>0&&r.createElement("span",null,r.createElement(p.Z,{variant:"h5",color:"primary"},"Faction Invitations"),r.createElement(h.Z,null,o.map((e=>Object.hasOwn(N.i,e)?r.createElement(L,{key:e,faction:N.i[e],joined:!1,rerender:t}):null)))),r.createElement("span",null,r.createElement(p.Z,{variant:"h5",color:"primary"},"Your Factions"),r.createElement(h.Z,null,a.length>0?a.map((e=>Object.hasOwn(N.i,e)?r.createElement(L,{key:e,faction:N.i[e],joined:!0,rerender:t}):null)):r.createElement(p.Z,null,"You have not yet joined any Factions.")))))}},56696:(e,t,n)=>{"use strict";n.d(t,{j:()=>d});var r=n(81138),a=n(30120),o=n(28881),i=n(17575),s=n(56798),l=n(67294),c=n(87811),u=n(52947),m=n(24815),f=n(49173),h=n(31403);function d(e){let{faction:t}=e;const[n,d]=(0,l.useState)(!1);if(!c.m.Names.includes(t.name)||!f.J5.isAwareOfGang()||f.J5.gang&&f.J5.getGangName()!==t.name)return l.createElement(l.Fragment,null);let p={enabled:!1,title:"",tooltip:"",description:""};return p=f.J5.gang?{enabled:!0,title:"Manage Gang",tooltip:"",description:"Manage a gang for this Faction. Gangs will earn you money and faction reputation"}:{enabled:f.J5.canAccessGang(),title:"Create Gang",tooltip:f.J5.canAccessGang()?"":l.createElement(r.Z,null,"Unlocked when reaching ",c.m.GangKarmaRequirement," karma"),description:"Create a gang for this Faction. Gangs will earn you money and faction reputation"},l.createElement(l.Fragment,null,l.createElement(a.Z,null,l.createElement(o.Z,{sx:{my:1,p:1}},l.createElement(i.Z,{title:p.tooltip},l.createElement("span",null,l.createElement(s.Z,{onClick:()=>{if(f.J5.inGang())return u.F.toPage(m.T3.Gang);d(!0)},disabled:!p.enabled},p.title))),l.createElement(r.Z,null,p.description))),l.createElement(h.u,{facName:t.name,open:n,onClose:()=>d(!1)}))}},80302:(e,t,n)=>{"use strict";n.d(t,{k:()=>p});var r=n(67294),a=n(17365),o=n(41519),i=n(70109),s=n(77541),l=n(73327),c=n(81138),u=n(17575),m=n(30120),f=n(88775);const h=(0,s.Z)((()=>(0,l.Z)({noformat:{whiteSpace:"pre-wrap",lineHeight:"1em"}})));function d(){return r.createElement(c.Z,null,"Perform work/carry out assignments for your faction to help further its cause! By doing so you will earn reputation for your faction. You will also gain reputation passively over time, although at a very slow rate. Earning reputation will allow you to purchase Augmentations through this faction, which are powerful upgrades that enhance your abilities.")}function p(e){(0,f.S)(200);const t=h(),n=e.factionInfo.assignment??d,s=e.faction.getFavorGain();return r.createElement(r.Fragment,null,r.createElement(c.Z,{classes:{root:t.noformat}},e.factionInfo.infoText),r.createElement(c.Z,null,"-------------------------"),r.createElement(m.Z,{display:"flex"},r.createElement(u.Z,{title:r.createElement(r.Fragment,null,r.createElement(c.Z,null,"You will have ",r.createElement(o.T,{favor:Math.floor(e.faction.favor+s)})," faction favor after installing an Augmentation."),r.createElement(i.Z,null,"\\(\\huge{r = \\text{total faction reputation}}\\)"),r.createElement(i.Z,null,"\\(\\huge{favor=1+\\left\\lfloor\\log_{1.02}\\left(\\frac{r+25000}{25500}\\right)\\right\\rfloor}\\)"))},r.createElement(c.Z,null,"Reputation: ",r.createElement(a.Y,{reputation:e.faction.playerReputation})))),r.createElement(c.Z,null,"-------------------------"),r.createElement(m.Z,{display:"flex"},r.createElement(u.Z,{title:r.createElement(r.Fragment,null,r.createElement(c.Z,null,"Faction favor increases the rate at which you earn reputation for this faction by 1% per favor. Faction favor is gained whenever you install an Augmentation. The amount of favor you gain depends on the total amount of reputation you earned with this faction. Across all resets."),r.createElement(i.Z,null,"\\(\\huge{r = reputation}\\)"),r.createElement(i.Z,null,"\\(\\huge{\\Delta r = \\Delta r \\times \\frac{100+favor}{100}}\\)"))},r.createElement(c.Z,null,"Faction Favor: ",r.createElement(o.T,{favor:Math.floor(e.faction.favor)})))),r.createElement(c.Z,null,"-------------------------"),r.createElement(n,null))}},60784:(e,t,n)=>{"use strict";n.d(t,{J:()=>u,N:()=>m});var r=n(67294),a=n(94542),o=n(48672),i=n(49173),s=n(13342),l=n(81138),c=n(56798);const u=new s.v;function m(){const[e,t]=(0,r.useState)(null);return(0,r.useEffect)((()=>u.subscribe((e=>t(e)))),[]),r.createElement(o.u,{open:null!==e,onClose:()=>t(null)},r.createElement(l.Z,{variant:"h4"},"You have received a faction invitation."),r.createElement(l.Z,null,"Would you like to join ",(e||{name:""}).name,"? ",r.createElement("br",null),r.createElement("br",null),"Warning: Joining this faction may prevent you from joining other factions during this run!"),r.createElement(c.Z,{onClick:function(){null!==e&&(-1===i.J5.factionInvitations.findIndex((t=>t===e.name))&&console.error("Could not find faction in Player.factionInvitations"),(0,a.Bj)(e),t(null))}},"Join!"),r.createElement(c.Z,{onClick:()=>t(null)},"Decide later"))}},17816:(e,t,n)=>{"use strict";n.d(t,{W:()=>l});var r=n(67294),a=n(81138),o=n(56798),i=n(28881),s=n(30120);function l(e){return r.createElement(s.Z,null,r.createElement(i.Z,{sx:{my:1,p:1}},r.createElement(o.Z,{onClick:e.onClick},e.buttonText),r.createElement(a.Z,null,e.infoText)))}},54678:(e,t,n)=>{"use strict";n.d(t,{_:()=>y});var r=n(67294),a=n(17575),o=n(81138),i=n(30120),s=n(66351),l=n(40826),c=n(51087),u=n(91371),m=n(69917),f=n(22115),h=n(60888),d=n(62177),p=n(89572),g=n(49173);const y=e=>{const[t,n]=(0,r.useState)(c.Z.AutoexecScript);return r.createElement(i.Z,null,r.createElement(a.Z,{title:r.createElement(o.Z,null,e.tooltip)},r.createElement(o.Z,null,e.label)),r.createElement(s.Z,{fullWidth:!0,InputProps:{endAdornment:r.createElement(l.Z,{position:"end"},function(){const e=(0,u.$4)(t);if(0===e.length)return r.createElement(a.Z,{title:r.createElement(o.Z,null,"No script will be auto-launched")},r.createElement(h.Z,{color:"primary"}));const n=String(e[0]),i=(0,m.L6)(n);if(!i)return r.createElement(a.Z,{title:r.createElement(o.Z,null,'"',n,'" is invalid for a script name (maybe missing suffix?)')},r.createElement(p.Z,{color:"error"}));const s=g.J5.getHomeComputer(),l=s.scripts.get(i);if(!l)return r.createElement(a.Z,{title:r.createElement(o.Z,null,n," does not exist!")},r.createElement(p.Z,{color:"error"}));const c=l.getRamUsage(s.scripts);if(null===c)return r.createElement(a.Z,{title:r.createElement(o.Z,null,n," has errors!")},r.createElement(p.Z,{color:"error"}));const y=g.J5.sourceFileLvl(9)>=2?128:g.J5.sourceFileLvl(1)>0?32:8;return c<=y?r.createElement(a.Z,{title:r.createElement(o.Z,null,n," costs ",(0,f.$1)(c))},r.createElement(h.Z,{color:"primary"})):r.createElement(a.Z,{title:r.createElement(o.Z,null,n," costs ",(0,f.$1)(c),", you might only have ",(0,f.$1)(y)," on home!")},r.createElement(d.Z,{color:"warning"}))}())},value:t,onChange:function(e){c.Z.AutoexecScript=e.target.value,n(e.target.value)}}))}},69138:(e,t,n)=>{"use strict";n.d(t,{x:()=>s});var r=n(81138),a=n(67294),o=n(47920),i=n(99882);const s=e=>{const[t,n]=(0,a.useState)(e.isConnected());return(0,a.useEffect)((()=>{const t=setInterval((()=>{n(e.isConnected())}),1e3);return()=>clearInterval(t)})),a.createElement(a.Fragment,null,a.createElement(r.Z,null,"Status: ",a.createElement(r.Z,{component:"span",color:t?"primary":"error"},t?a.createElement(a.Fragment,null,"Online ",a.createElement(o.Z,null)):a.createElement(a.Fragment,null,"Offline ",a.createElement(i.Z,null)))))}},8326:(e,t,n)=>{"use strict";n.d(t,{t:()=>i});var r=n(28881),a=n(81138),o=n(67294);const i=e=>o.createElement(r.Z,{sx:{height:"fit-content",p:1}},o.createElement(a.Z,{variant:"h6"},e.title),e.children)},68848:(e,t,n)=>{"use strict";n.d(t,{n:()=>p});var r=n(78016),a=n(81138),o=n(30120),i=n(67294),s=n(98731),l=n(16428),c=n(86670),u=n(76113),m=n(72303),f=n(81082),h=n(2722);const d={System:i.createElement(h.f,null),Interface:i.createElement(c.E,null),"Numeric Display":i.createElement(m.n,null),Gameplay:i.createElement(l.A,null),Misc:i.createElement(u.a,null),"Remote API":i.createElement(f.C,null)};function p(e){const[t,n]=(0,i.useState)("System");return i.createElement(r.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0}},i.createElement(a.Z,{variant:"h4"},"Options"),i.createElement(o.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 3fr",gap:1}},i.createElement(s.b,{tab:t,setTab:n,save:e.save,export:e.export,forceKill:e.forceKill,softReset:e.softReset,reactivateTutorial:e.reactivateTutorial}),d[t]))}},98731:(e,t,n)=>{"use strict";n.d(t,{b:()=>_});var r=n(47835),a=n(39702),o=n(52149),i=n(72775),s=n(83624),l=n(11062),c=n(48416),u=n(59612),m=n(95309),f=n(81138),h=n(30120),d=n(28881),p=n(97212),g=n(56798),y=n(17575),b=n(67294),v=n(51858),k=n(34716),w=n(51087),E=n(20331),S=n(31288),C=n(54538),x=n(6466),N=n(32369),M=n(33244),A=n(64573),T=n(52947),L=n(24815),R=n(49802);const F=e=>b.createElement(m.Z,{selected:e.sideBarProps.tab===e.tabName,onClick:()=>e.sideBarProps.setTab(e.tabName)},b.createElement(f.Z,null,e.tabName)),_=e=>{var t,n,m,_;const I=(0,b.useRef)(null),[P,B]=(0,b.useState)(!1),[O,D]=(0,b.useState)(!1),[Z,G]=(0,b.useState)(null),[J,W]=(0,b.useState)(!1);return b.createElement(h.Z,null,b.createElement(d.Z,{sx:{height:"fit-content",mb:1}},b.createElement(p.Z,null,b.createElement(F,{sideBarProps:e,tabName:"System"}),b.createElement(F,{sideBarProps:e,tabName:"Gameplay"}),b.createElement(F,{sideBarProps:e,tabName:"Interface"}),b.createElement(F,{sideBarProps:e,tabName:"Numeric Display"}),b.createElement(F,{sideBarProps:e,tabName:"Misc"}),b.createElement(F,{sideBarProps:e,tabName:"Remote API"}))),b.createElement(h.Z,{sx:{display:"grid",width:"100%",height:"fit-content",gridTemplateAreas:'"save delete"\n "export import"\n "kill kill"\n "reset diagnose"\n "browse browse"\n "theme style"\n "links links"\n "devs devs"',gridTemplateColumns:"1fr 1fr"}},b.createElement(g.Z,{onClick:()=>e.save(),startIcon:b.createElement(r.Z,null),sx:{gridArea:"save"}},"Save Game"),b.createElement(h.Z,{sx:{gridArea:"delete","& .MuiButton-root":{height:"100%",width:"100%"}}},b.createElement(x.t,null)),b.createElement(y.Z,{title:b.createElement(f.Z,null,"Export your game to a text file.")},b.createElement(g.Z,{onClick:()=>e.export(),startIcon:b.createElement(a.Z,null),sx:{gridArea:"export"}},"Export Game")),b.createElement(y.Z,{title:b.createElement(f.Z,null,"Import your game from a text file.",b.createElement("br",null),"This will ",b.createElement("strong",null,"overwrite")," your current game. Back it up first!")},b.createElement(g.Z,{onClick:function(){if(!(window.File&&window.FileReader&&window.FileList&&window.Blob))return;const e=I.current;if(null===e)throw new Error("import input should not be null");e.click()},startIcon:b.createElement(o.Z,null),sx:{gridArea:"import"}},"Import Game",b.createElement("input",{ref:I,id:"import-game-file-selector",type:"file",hidden:!0,onChange:async function(e){try{const t=await k.Ex.getImportStringFromFile(e.target.files),n=await k.Ex.getImportDataFromString(t);G(n),D(!0)}catch(e){console.error(e),N.sC.emit(String(e),M.ToastVariant.ERROR,5e3)}finally{e.target.value=""}}}))),b.createElement(C.c,{open:O,onClose:()=>D(!1),onConfirm:()=>async function(){if(Z){try{await k.Ex.importGame(Z.base64)}catch(e){N.sC.emit(String(e),M.ToastVariant.ERROR,5e3)}D(!1),G(null)}}(),additionalButton:b.createElement(g.Z,{onClick:function(){Z&&(T.F.toPage(L.T3.ImportSave,{base64Save:Z.base64}),D(!1),G(null))}},"Compare Save"),confirmationText:b.createElement(b.Fragment,null,"Importing a new game will ",b.createElement("strong",null,"completely wipe")," the current data!",b.createElement("br",null),b.createElement("br",null),"Make sure to have a backup of your current save file before importing.",b.createElement("br",null),"The file you are attempting to import seems valid.",((null==Z||null===(t=Z.playerData)||void 0===t?void 0:t.lastSave)??0)>0&&b.createElement(b.Fragment,null,b.createElement("br",null),b.createElement("br",null),"The export date of the save file is"," ",b.createElement("strong",null,new Date((null==Z||null===(n=Z.playerData)||void 0===n?void 0:n.lastSave)??0).toLocaleString())),((null==Z||null===(m=Z.playerData)||void 0===m?void 0:m.totalPlaytime)??0)>0&&b.createElement(b.Fragment,null,b.createElement("br",null),b.createElement("br",null),"Total play time of imported game:"," ",(0,R.UF)((null==Z||null===(_=Z.playerData)||void 0===_?void 0:_.totalPlaytime)??0)),b.createElement("br",null),b.createElement("br",null))}),b.createElement(y.Z,{title:b.createElement(f.Z,null,"Forcefully kill all active running scripts, in case there is a bug or some unexpected issue with the game. After using this, save the game and then reload the page. This is different than normal kill in that normal kill will tell the script to shut down while force kill just removes the references to it (and it should crash on its own). This will not remove the files on your computer, just forcefully kill all running instances of all scripts.")},b.createElement(g.Z,{onClick:()=>e.forceKill(),sx:{gridArea:"kill"}},"Force kill all active scripts")),b.createElement(h.Z,{sx:{gridArea:"reset","& .MuiButton-root":{height:"100%",width:"100%"}}},b.createElement(A.Q,{noConfirmation:w.Z.SuppressBuyAugmentationConfirmation,onTriggered:e.softReset})),b.createElement(y.Z,{title:b.createElement(f.Z,null,"If your save file is extremely big you can use this button to view a map of all the files on every server. Be careful: there might be spoilers.")},b.createElement(g.Z,{onClick:()=>B(!0),sx:{gridArea:"diagnose"}},"Diagnose files")),b.createElement(y.Z,{title:"Head to the theme browser to see a collection of prebuilt themes."},b.createElement(g.Z,{startIcon:b.createElement(i.Z,null),onClick:()=>T.F.toPage(L.T3.ThemeBrowser),sx:{gridArea:"browse"}},"Theme Browser")),b.createElement(h.Z,{sx:{gridArea:"theme","& .MuiButton-root":{height:"100%",width:"100%"}}},b.createElement(S.T,null)),b.createElement(h.Z,{sx:{gridArea:"style","& .MuiButton-root":{height:"100%",width:"100%"}}},b.createElement(E.D,null)),b.createElement(h.Z,{sx:{gridArea:"links",display:"grid",gridTemplateAreas:'"bug bug"\n "discord reddit"\n "tut tut"\n "plaza plaza"',gridTemplateColumns:"1fr 1fr",my:1}},b.createElement(g.Z,{startIcon:b.createElement(s.Z,null),href:"https://github.com/bitburner-official/bitburner-src/issues/new",target:"_blank",sx:{gridArea:"bug"}},"Report Bug"),b.createElement(g.Z,{startIcon:b.createElement(l.Z,null),onClick:()=>W(!0),sx:{gridArea:"tut"}},"Reset tutorial"),b.createElement(g.Z,{startIcon:b.createElement(c.Z,null),href:"https://discord.gg/TFc3hKD",target:"_blank",sx:{gridArea:"discord"}},"Discord"),b.createElement(g.Z,{startIcon:b.createElement(u.Z,null),href:"https://www.reddit.com/r/bitburner",target:"_blank",sx:{gridArea:"reddit"}},"Reddit"))),b.createElement(v.y,{open:P,onClose:()=>B(!1)}),b.createElement(C.c,{open:J,onClose:()=>W(!1),onConfirm:e.reactivateTutorial,confirmationText:"This will reset all your stats to 1 and money to 1k. Are you sure?"}))}},16428:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(67294),a=n(15460),o=n(51087),i=n(8326),s=n(49173);const l=()=>r.createElement(i.t,{title:"Gameplay"},r.createElement(a.V,{checked:o.Z.SuppressMessages,onChange:e=>o.Z.SuppressMessages=e,text:"Suppress story messages",tooltip:r.createElement(r.Fragment,null,"If this is set, then any messages you receive will not appear as popups on the screen. They will still get sent to your home computer as '.msg' files and can be viewed with the 'cat' Terminal command.")}),r.createElement(a.V,{checked:o.Z.SuppressFactionInvites,onChange:e=>o.Z.SuppressFactionInvites=e,text:"Suppress faction invites",tooltip:r.createElement(r.Fragment,null,"If this is set, then any faction invites you receive will not appear as popups on the screen. Your outstanding faction invites can be viewed in the 'Factions' page.")}),r.createElement(a.V,{checked:o.Z.SuppressTravelConfirmation,onChange:e=>o.Z.SuppressTravelConfirmation=e,text:"Suppress travel confirmations",tooltip:r.createElement(r.Fragment,null,"If this is set, the confirmation message before traveling will not show up. You will automatically be deducted the travel cost as soon as you click.")}),r.createElement(a.V,{checked:o.Z.SuppressBuyAugmentationConfirmation,onChange:e=>o.Z.SuppressBuyAugmentationConfirmation=e,text:"Suppress augmentations confirmation",tooltip:r.createElement(r.Fragment,null,"If this is set, the confirmation message before buying augmentation will not show up.")}),r.createElement(a.V,{checked:o.Z.SuppressTIXPopup,onChange:e=>o.Z.SuppressTIXPopup=e,text:"Suppress TIX messages",tooltip:r.createElement(r.Fragment,null,"If this is set, the stock market will never create any popup.")}),s.J5.bladeburner&&r.createElement(a.V,{checked:o.Z.SuppressBladeburnerPopup,onChange:e=>o.Z.SuppressBladeburnerPopup=e,text:"Suppress bladeburner popup",tooltip:r.createElement(r.Fragment,null,"If this is set, then having your Bladeburner actions interrupted by being busy with something else will not display a popup message.")}))},86670:(e,t,n)=>{"use strict";n.d(t,{E:()=>m});var r=n(67294),a=n(17575),o=n(81138),i=n(66351),s=n(51087),l=n(15460),c=n(8326),u=n(30282);const m=()=>{const[e,t]=(0,r.useState)(s.Z.TimestampsFormat);return r.createElement(c.t,{title:"Interface"},r.createElement(l.V,{checked:s.Z.DisableASCIIArt,onChange:e=>s.Z.DisableASCIIArt=e,text:"Disable ascii art",tooltip:r.createElement(r.Fragment,null,"If this is set all ASCII art will be disabled.")}),r.createElement(l.V,{checked:s.Z.DisableTextEffects,onChange:e=>s.Z.DisableTextEffects=e,text:"Disable text effects",tooltip:r.createElement(r.Fragment,null,"If this is set, text effects will not be displayed. This can help if text is difficult to read in certain areas.")}),r.createElement(l.V,{checked:s.Z.DisableOverviewProgressBars,onChange:e=>s.Z.DisableOverviewProgressBars=e,text:"Disable Overview Progress Bars",tooltip:r.createElement(r.Fragment,null,"If this is set, the progress bars in the character overview will be hidden.")}),r.createElement(l.V,{checked:s.Z.ShowMiddleNullTimeUnit,onChange:e=>s.Z.ShowMiddleNullTimeUnit=e,text:"Show all intermediary times unit, even when null.",tooltip:r.createElement(r.Fragment,null,"ex : 1 hours 13 seconds becomes 1 hours 0 minutes 13 seconds.")}),r.createElement(a.Z,{title:r.createElement(o.Z,null,"Terminal commands and log entries will be timestamped. See https://date-fns.org/docs/Getting-Started/")},r.createElement(i.Z,{key:"timestampFormat",InputProps:{startAdornment:r.createElement(o.Z,{color:"format error"===(0,u.m)(e)&&""!==e?"error":"success"},"Timestamp format: ")},value:e,onChange:function(e){t(e.target.value),s.Z.TimestampsFormat=e.target.value},placeholder:"yyyy-MM-dd hh:mm:ss"})),r.createElement(o.Z,null,"Example timestamp: ",""!==e?(0,u.m)(e):"no timestamp"),r.createElement("br",null))}},76113:(e,t,n)=>{"use strict";n.d(t,{a:()=>s});var r=n(67294),a=n(51087),o=n(15460),i=n(8326);const s=()=>r.createElement(i.t,{title:"Misc"},r.createElement(o.V,{checked:a.Z.DisableHotkeys,onChange:e=>a.Z.DisableHotkeys=e,text:"Disable hotkeys",tooltip:r.createElement(r.Fragment,null,'If this is set, then most hotkeys (keyboard shortcuts) in the game are disabled. This includes Terminal commands, hotkeys to navigate between different parts of the game, and the "Save and Close (Ctrl + b)" hotkey in the Text Editor.')}),r.createElement(o.V,{checked:a.Z.EnableBashHotkeys,onChange:e=>a.Z.EnableBashHotkeys=e,text:"Enable bash hotkeys",tooltip:r.createElement(r.Fragment,null,"Improved Bash emulation mode. Setting this to 1 enables several new Terminal shortcuts and features that more closely resemble a real Bash-style shell. Note that when this mode is enabled, the default browser shortcuts are overridden by the new Bash shortcuts.")}),r.createElement(o.V,{checked:a.Z.EnableHistorySearch,onChange:e=>a.Z.EnableHistorySearch=e,text:"Enable terminal history search with arrow keys",tooltip:r.createElement(r.Fragment,null,"If there is user-entered text in the terminal, using the up arrow will search through the terminal history for previous commands that start with the current text, instead of navigating to the most recent history item. Search results can be executed immediately via 'enter', or autofilled into the terminal with 'tab'.")}))},72303:(e,t,n)=>{"use strict";n.d(t,{n:()=>m});var r=n(67294),a=n(26023),o=n(81138),i=n(98649),s=n(51087),l=n(15460),c=n(8326),u=n(22115);const m=()=>{const[e,t]=(0,r.useState)(s.Z.Locale);return r.createElement(c.t,{title:"Numeric Display"},r.createElement(l.V,{checked:s.Z.useEngineeringNotation,onChange:e=>{s.Z.useEngineeringNotation=e,u.AR.emit()},text:"Use engineering notation instead of scientific notation for exponential form",tooltip:r.createElement(r.Fragment,null,"If this is set, numbers displayed in exponential form will use engineering notation instead of scientific notation.")}),r.createElement(l.V,{checked:s.Z.disableSuffixes,onChange:e=>{s.Z.disableSuffixes=e,u.AR.emit()},text:"Use exponential form instead of suffixed form",tooltip:r.createElement(r.Fragment,null,"If this is set, suffixed form will not be used, and numbers that would have been suffixed will be displayed with exponential form instead.")}),r.createElement(l.V,{checked:s.Z.hideThousandsSeparator,onChange:e=>{s.Z.hideThousandsSeparator=e,u.AR.emit()},text:"Hide thousands separator",tooltip:r.createElement(r.Fragment,null,"If this is set, thousands separators will not be displayed.")}),r.createElement(l.V,{checked:s.Z.hideTrailingDecimalZeros,onChange:e=>{s.Z.hideTrailingDecimalZeros=e,u.AR.emit()},text:"Hide trailing fractional zeroes for decimals",tooltip:r.createElement(r.Fragment,null,"If this is set, zeroes at the end of a fractional part of a decimal will not be displayed.")}),r.createElement(l.V,{checked:s.Z.UseIEC60027_2,onChange:e=>{s.Z.UseIEC60027_2=e,u.AR.emit()},text:"Use GiB instead of GB",tooltip:r.createElement(r.Fragment,null,"If this is set all references to memory will use GiB instead of GB, in accordance with IEC 60027-2.")}),r.createElement(a.Z,{startAdornment:r.createElement(o.Z,null,"Locale "),value:e,onChange:function(e){t(e.target.value),s.Z.Locale=e.target.value,u.AR.emit()}},r.createElement(i.Z,{value:"en"},"en"),r.createElement(i.Z,{value:"bg"},"bg"),r.createElement(i.Z,{value:"cs"},"cs"),r.createElement(i.Z,{value:"da-dk"},"da-dk"),r.createElement(i.Z,{value:"de"},"de"),r.createElement(i.Z,{value:"en-au"},"en-au"),r.createElement(i.Z,{value:"en-gb"},"en-gb"),r.createElement(i.Z,{value:"es"},"es"),r.createElement(i.Z,{value:"fr"},"fr"),r.createElement(i.Z,{value:"hu"},"hu"),r.createElement(i.Z,{value:"it"},"it"),r.createElement(i.Z,{value:"lv"},"lv"),r.createElement(i.Z,{value:"no"},"no"),r.createElement(i.Z,{value:"pl"},"pl"),r.createElement(i.Z,{value:"ru"},"ru")))}},2165:(e,t,n)=>{"use strict";n.d(t,{z:()=>l});var r=n(30120),a=n(17575),o=n(81138),i=n(7929),s=n(67294);const l=e=>{const[t,n]=(0,s.useState)(e.initialValue);return s.createElement(r.Z,null,s.createElement(a.Z,{title:s.createElement(o.Z,null,e.tooltip)},s.createElement(o.Z,null,e.label)),s.createElement(i.ZP,{value:t,onChange:(e,t)=>{"number"==typeof t&&n(t)},onChangeCommitted:e.callback,step:e.step,min:e.min,max:e.max,valueLabelDisplay:"auto",sx:{"& .MuiSlider-thumb":{height:"12px",width:"12px"}},marks:e.marks}))}},81082:(e,t,n)=>{"use strict";n.d(t,{C:()=>h});var r=n(67294),a=n(81138),o=n(39401),i=n(17575),s=n(66351),l=n(56798),c=n(8326),u=n(51087),m=n(69138),f=n(60468);const h=()=>{const[e,t]=(0,r.useState)(u.Z.RemoteFileApiPort);return r.createElement(c.t,{title:"Remote API"},r.createElement(a.Z,null,"These settings control the Remote API for bitburner. This is typically used to write scripts using an external text editor and then upload files to the home server."),r.createElement(a.Z,null,r.createElement(o.Z,{href:"https://github.com/bitburner-official/bitburner-src/blob/dev/src/Documentation/doc/programming/remote_api.md",target:"_blank"},"Documentation")),r.createElement(m.x,{isConnected:f.v}),r.createElement(i.Z,{title:r.createElement(a.Z,null,"This port number is used to connect to a Remote API port, please ensure that it matches with your Remote API server port. Set to 0 to disable the feature.")},r.createElement(s.Z,{key:"remoteAPIPort",InputProps:{startAdornment:r.createElement(a.Z,{color:e>0&&e<=65535?"success":"error"},"Port: "),endAdornment:r.createElement(l.Z,{onClick:f.j},"Connect")},value:e,onChange:function(e){t(Number(e.target.value)),u.Z.RemoteFileApiPort=Number(e.target.value)},placeholder:"12525"})))}},2722:(e,t,n)=>{"use strict";n.d(t,{f:()=>c});var r=n(67294),a=n(51087),o=n(8326),i=n(2165),s=n(54678),l=n(15460);const c=()=>{const[e,t]=(0,r.useState)(a.Z.CodeInstructionRunTime),[n,c]=(0,r.useState)(a.Z.MaxRecentScriptsCapacity),[u,m]=(0,r.useState)(a.Z.MaxLogCapacity),[f,h]=(0,r.useState)(a.Z.MaxPortCapacity),[d,p]=(0,r.useState)(a.Z.MaxTerminalCapacity),[g,y]=(0,r.useState)(a.Z.AutosaveInterval);return r.createElement(o.t,{title:"System"},r.createElement(r.Fragment,null,r.createElement(s._,{label:"Autoexec Script + Args",tooltip:r.createElement(r.Fragment,null,'Path to a script (with optional args) to run on game load. The script will be run on home, launched before any saved running scripts. It will have the "temporary" setting, so if it stays running it won\'t be saved.')}),r.createElement("br",null),r.createElement(i.z,{label:".script exec time (ms)",initialValue:e,callback:function(e,n){t(n),a.Z.CodeInstructionRunTime=n},step:1,min:5,max:100,tooltip:r.createElement(r.Fragment,null,"The minimum number of milliseconds it takes to execute an operation in Netscript. Setting this too low can result in poor performance if you have many scripts running.")}),r.createElement(i.z,{label:"Recently killed scripts size",initialValue:n,callback:function(e,t){c(t),a.Z.MaxRecentScriptsCapacity=t},step:25,min:0,max:500,tooltip:r.createElement(r.Fragment,null,"The maximum number of recently killed scripts the game will keep.")}),r.createElement(i.z,{label:"Netscript log size",initialValue:u,callback:function(e,t){m(t),a.Z.MaxLogCapacity=t},step:20,min:20,max:500,tooltip:r.createElement(r.Fragment,null,"The maximum number of lines a script's logs can hold. Setting this too high can cause the game to use a lot of memory if you have many scripts running.")}),r.createElement(i.z,{label:"Netscript port size",initialValue:f,callback:function(e,t){h(t),a.Z.MaxPortCapacity=t},step:1,min:20,max:100,tooltip:r.createElement(r.Fragment,null,"The maximum number of entries that can be written to a port using Netscript's write() function. Setting this too high can cause the game to use a lot of memory.")}),r.createElement(i.z,{label:"Terminal capacity",initialValue:d,callback:function(e,t){p(t),a.Z.MaxTerminalCapacity=t},step:50,min:50,max:500,tooltip:r.createElement(r.Fragment,null,"The maximum number of entries that can be written to the terminal. Setting this too high can cause the game to use a lot of memory."),marks:!0}),r.createElement(i.z,{label:"Autosave interval (s)",initialValue:g,callback:function(e,t){y(t),a.Z.AutosaveInterval=t},step:30,min:0,max:600,tooltip:r.createElement(r.Fragment,null,"The time (in seconds) between each autosave. Set to 0 to disable autosave."),marks:!0})),r.createElement(l.V,{checked:a.Z.SuppressSavedGameToast,onChange:e=>a.Z.SuppressSavedGameToast=e,text:"Suppress Auto-Save Game Toast",tooltip:r.createElement(r.Fragment,null,'If this is set, there will be no "Game Saved!" toast appearing after an auto-save.')}),r.createElement(l.V,{checked:a.Z.SuppressAutosaveDisabledWarnings,onChange:e=>a.Z.SuppressAutosaveDisabledWarnings=e,text:"Suppress Auto-Save Disabled Warning",tooltip:r.createElement(r.Fragment,null,"If this is set, there will be no warning triggered when auto-save is disabled (at 0).")}),r.createElement(l.V,{checked:a.Z.SaveGameOnFileSave,onChange:e=>a.Z.SaveGameOnFileSave=e,text:"Save game on file save",tooltip:r.createElement(r.Fragment,null,"Save your game any time a file is saved in the script editor.")}),r.createElement(l.V,{checked:a.Z.ExcludeRunningScriptsFromSave,onChange:e=>a.Z.ExcludeRunningScriptsFromSave=e,text:"Exclude Running Scripts from Save",tooltip:r.createElement(r.Fragment,null,'If this is set, the save file will exclude all running scripts. This is only useful if your save is lagging a lot. You\'ll have to restart your script every time you launch the game, possibly by using the "autoexec" option.')}))}},59471:(e,t,n)=>{"use strict";n.d(t,{Fj:()=>i,s9:()=>s,vS:()=>o});var r=n(33244),a=n(94515);let o={[r.FactionName.SlumSnakes]:{power:1,territory:1/7},[r.FactionName.Tetrads]:{power:1,territory:1/7},[r.FactionName.TheSyndicate]:{power:1,territory:1/7},[r.FactionName.TheDarkArmy]:{power:1,territory:1/7},[r.FactionName.SpeakersForTheDead]:{power:1,territory:1/7},[r.FactionName.NiteSec]:{power:1,territory:1/7},[r.FactionName.TheBlackHand]:{power:1,territory:1/7}};function i(){o={[r.FactionName.SlumSnakes]:{power:1,territory:1/7},[r.FactionName.Tetrads]:{power:1,territory:1/7},[r.FactionName.TheSyndicate]:{power:1,territory:1/7},[r.FactionName.TheDarkArmy]:{power:1,territory:1/7},[r.FactionName.SpeakersForTheDead]:{power:1,territory:1/7},[r.FactionName.NiteSec]:{power:1,territory:1/7},[r.FactionName.TheBlackHand]:{power:1,territory:1/7}}}function s(e){o=JSON.parse(e,a.Ro)}},61512:(e,t,n)=>{"use strict";n.d(t,{v:()=>p});var r=n(58427),a=n(39463),o=n(94515),i=n(43074),s=n(92666),l=n(87811),c=n(99225),u=n(59471),m=n(18162),f=n(49173),h=n(56138),d=n(33244);class p{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.FactionName.SlumSnakes,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.facName=e,this.members=[],this.wanted=1,this.respect=1,this.isHackingGang=t,this.respectGainRate=0,this.wantedGainRate=0,this.moneyGainRate=0,this.storedCycles=0,this.storedTerritoryAndPowerCycles=0,this.territoryClashChance=0,this.territoryWarfareEngaged=!1,this.notifyMemberDeath=!0}getPower(){return u.vS[this.facName].power}getTerritory(){return u.vS[this.facName].territory}process(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;if(isNaN(e)&&console.error(`NaN passed into Gang.process(): ${e}`),this.storedCycles+=e,this.storedCyclest&&(r=1),this.wanted=r,this.wanted<1&&(this.wanted=1)}f.J5.gainMoney(t*e,"gang")}processTerritoryAndPowerGains(e){function t(e,t){const n=Math.max(1,1+Math.log(u.vS[e].power/u.vS[t].power)/Math.log(50));return Math.min(u.vS[t].territory,1e-4*n*(Math.random()+.5))}if(this.storedTerritoryAndPowerCycles+=e,this.storedTerritoryAndPowerCycles0&&(this.territoryClashChance=Math.max(0,this.territoryClashChance-.01));const r=l.m.Names.filter((e=>u.vS[e].territory>0||e===n));if(r.length>1)for(let e=0;et!==r[e])),o=(0,s.X)(0,a.length-1),i=r[e],l=a[o];if(!(i!==n&&l!==n||Math.random()e.territory)).reduce(((e,t)=>e+t),0);Object.values(u.vS).forEach((e=>e.territory/=f))}}processExperienceGains(e){for(const t of this.members)t.gainExperience(e),t.updateSkillLevels()}clash(){let e=.01;if(arguments.length>0&&void 0!==arguments[0]&&arguments[0]?e/=2:u.vS[this.facName].power*=1/1.008,!(Math.random()<.65))for(let t=this.members.length-1;t>=0;--t){const n=this.members[t];if("Territory Warfare"!==n.task)continue;const r=e/Math.pow(n.def,.6);Math.random()=l.m.MaximumGangMembers)&&this.respect>=this.getRespectNeededToRecruitMember()}getRespectNeededToRecruitMember(){if(this.members.length<3)return 0;const e=this.members.length-2;return Math.pow(5,e)}recruitMember(e){if(""===(e=String(e))||!this.canRecruitMember())return!1;if(this.members.filter((t=>t.name===e)).length>=1)return!1;const t=new m.q(e);return this.members.push(t),!0}getWantedPenalty(){return this.respect/(this.respect+this.wanted)}calculatePower(){let e=0;for(let t=0;t`Ascended Gang member ${e.name}`)),n}catch(e){throw null==t&&(0,i.P)(e),e}}getDiscount(){const e=this.getPower(),t=this.respect,n=Math.pow(t,.01)+t/5e6+Math.pow(e,.01)+e/1e6-1;return Math.max(1,n)}getAllTaskNames(){return Object.keys(c.H).filter((e=>{const t=c.H[e];return null!=t&&"Unassigned"!==t.name&&(this.isHackingGang===t.isHacking||!this.isHackingGang===t.isCombat)}))}getUpgradeCost(e){return null==e?1/0:e.cost/this.getDiscount()}toJSON(){return(0,o.L3)("Gang",this)}static fromJSON(e){return(0,o.Id)(p,e.data)}}o.gY.Gang=p},18162:(e,t,n)=>{"use strict";n.d(t,{q:()=>c});var r=n(45089),a=n(99225),o=n(59018),i=n(49173),s=n(94515),l=n(21320);class c{task="Unassigned";earnedRespect=0;hack=1;str=1;def=1;dex=1;agi=1;cha=1;hack_exp=0;str_exp=0;def_exp=0;dex_exp=0;agi_exp=0;cha_exp=0;hack_mult=1;str_mult=1;def_mult=1;dex_mult=1;agi_mult=1;cha_mult=1;hack_asc_points=0;str_asc_points=0;def_asc_points=0;dex_asc_points=0;agi_asc_points=0;cha_asc_points=0;upgrades=[];augmentations=[];constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.name=e}calculateSkill(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.max(Math.floor(t*(32*Math.log(e+534.5)-200)),1)}calculateAscensionMult(e){return(0,l._r)(e)}updateSkillLevels(){this.hack=this.calculateSkill(this.hack_exp,this.hack_mult*this.calculateAscensionMult(this.hack_asc_points)),this.str=this.calculateSkill(this.str_exp,this.str_mult*this.calculateAscensionMult(this.str_asc_points)),this.def=this.calculateSkill(this.def_exp,this.def_mult*this.calculateAscensionMult(this.def_asc_points)),this.dex=this.calculateSkill(this.dex_exp,this.dex_mult*this.calculateAscensionMult(this.dex_asc_points)),this.agi=this.calculateSkill(this.agi_exp,this.agi_mult*this.calculateAscensionMult(this.agi_asc_points)),this.cha=this.calculateSkill(this.cha_exp,this.cha_mult*this.calculateAscensionMult(this.cha_asc_points))}calculatePower(){return(this.hack+this.str+this.def+this.dex+this.agi+this.cha)/95}assignToTask(e){return Object.hasOwn(a.H,e)?(this.task=e,!0):(this.task="Unassigned",!1)}unassignFromTask(){this.task="Unassigned"}getTask(){return this.task instanceof r.u&&(this.task=this.task.name),Object.hasOwn(a.H,this.task)?a.H[this.task]:a.H.Unassigned}calculateRespectGain(e){const t=this.getTask(),n={respect:e.respect,wantedLevel:e.wanted,territory:e.getTerritory()};return(0,l.qo)(n,this,t)}calculateWantedLevelGain(e){const t=this.getTask(),n={respect:e.respect,wantedLevel:e.wanted,territory:e.getTerritory()};return(0,l.QS)(n,this,t)}calculateMoneyGain(e){const t=this.getTask(),n={respect:e.respect,wantedLevel:e.wanted,territory:e.getTerritory()};return(0,l.Ym)(n,this,t)}expMult(){return{hack:(this.hack_mult-1)/4+1,str:(this.str_mult-1)/4+1,def:(this.def_mult-1)/4+1,dex:(this.dex_mult-1)/4+1,agi:(this.agi_mult-1)/4+1,cha:(this.cha_mult-1)/4+1}}gainExperience(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const t=this.getTask();if(t===a.H.Unassigned)return;const n=Math.pow(t.difficulty,.9)*e,r=1500,o=this.expMult();this.hack_exp+=t.hackWeight/r*n*o.hack*this.calculateAscensionMult(this.hack_asc_points),this.str_exp+=t.strWeight/r*n*o.str*this.calculateAscensionMult(this.str_asc_points),this.def_exp+=t.defWeight/r*n*o.def*this.calculateAscensionMult(this.def_asc_points),this.dex_exp+=t.dexWeight/r*n*o.dex*this.calculateAscensionMult(this.dex_asc_points),this.agi_exp+=t.agiWeight/r*n*o.agi*this.calculateAscensionMult(this.agi_asc_points),this.cha_exp+=t.chaWeight/r*n*o.cha*this.calculateAscensionMult(this.cha_asc_points)}earnRespect(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;const n=this.calculateRespectGain(t)*e;return this.earnedRespect+=n,n}getGainedAscensionPoints(){return{hack:(0,l.NB)(this.hack_exp),str:(0,l.NB)(this.str_exp),def:(0,l.NB)(this.def_exp),dex:(0,l.NB)(this.dex_exp),agi:(0,l.NB)(this.agi_exp),cha:(0,l.NB)(this.cha_exp)}}canAscend(){const e=this.getGainedAscensionPoints();return e.hack>0||e.str>0||e.def>0||e.dex>0||e.agi>0||e.cha>0}getCurrentAscensionMults(){return{hack:this.calculateAscensionMult(this.hack_asc_points),str:this.calculateAscensionMult(this.str_asc_points),def:this.calculateAscensionMult(this.def_asc_points),dex:this.calculateAscensionMult(this.dex_asc_points),agi:this.calculateAscensionMult(this.agi_asc_points),cha:this.calculateAscensionMult(this.cha_asc_points)}}getAscensionMultsAfterAscend(){const e=this.getGainedAscensionPoints();return{hack:this.calculateAscensionMult(this.hack_asc_points+e.hack),str:this.calculateAscensionMult(this.str_asc_points+e.str),def:this.calculateAscensionMult(this.def_asc_points+e.def),dex:this.calculateAscensionMult(this.dex_asc_points+e.dex),agi:this.calculateAscensionMult(this.agi_asc_points+e.agi),cha:this.calculateAscensionMult(this.cha_asc_points+e.cha)}}getAscensionResults(){const e=this.getAscensionMultsAfterAscend(),t=this.getCurrentAscensionMults();return{hack:e.hack/t.hack,str:e.str/t.str,def:e.def/t.def,dex:e.dex/t.dex,agi:e.agi/t.agi,cha:e.cha/t.cha}}ascend(){const e=this.getAscensionResults(),t=this.getGainedAscensionPoints();this.hack_asc_points+=t.hack,this.str_asc_points+=t.str,this.def_asc_points+=t.def,this.dex_asc_points+=t.dex,this.agi_asc_points+=t.agi,this.cha_asc_points+=t.cha,this.upgrades.length=0,this.hack_mult=1,this.str_mult=1,this.def_mult=1,this.dex_mult=1,this.agi_mult=1,this.cha_mult=1;for(let e=0;e{"use strict";n.d(t,{u:()=>r});class r{constructor(e,t,n,r,a){this.name=e,this.desc=t,this.isHacking=n,this.isCombat=r,this.baseRespect=a.baseRespect?a.baseRespect:0,this.baseWanted=a.baseWanted?a.baseWanted:0,this.baseMoney=a.baseMoney?a.baseMoney:0,this.hackWeight=a.hackWeight?a.hackWeight:0,this.strWeight=a.strWeight?a.strWeight:0,this.defWeight=a.defWeight?a.defWeight:0,this.dexWeight=a.dexWeight?a.dexWeight:0,this.agiWeight=a.agiWeight?a.agiWeight:0,this.chaWeight=a.chaWeight?a.chaWeight:0,100!=Math.round(this.hackWeight+this.strWeight+this.defWeight+this.dexWeight+this.agiWeight+this.chaWeight)&&console.error(`GangMemberTask ${this.name} weights do not add up to 100`),this.difficulty=a.difficulty?a.difficulty:1,this.territory=a.territory?a.territory:{money:1,respect:1,wanted:1}}}},99225:(e,t,n)=>{"use strict";n.d(t,{H:()=>o});var r=n(7101),a=n(45089);const o={};r.b.forEach((e=>{o[e.name]=new a.u(e.name,e.desc,e.isHacking,e.isCombat,e.params)}))},40777:(e,t,n)=>{"use strict";n.d(t,{H:()=>o});var r=n(60188),a=n(22115);class o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.T.Weapon,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};this.name=e,this.cost=t,this.type=n,this.mults=o,this.desc="",a.$i.subscribe((()=>this.desc=this.createDescription()))}createDescription(){const e=["Effects:"];return null!=this.mults.str&&(e.push(`+${(0,a.T3)(this.mults.str-1,0)} strength skill`),e.push(`+${(0,a.T3)((this.mults.str-1)/4,2)} strength exp`)),null!=this.mults.def&&(e.push(`+${(0,a.T3)(this.mults.def-1,0)} defense skill`),e.push(`+${(0,a.T3)((this.mults.def-1)/4,2)} defense exp`)),null!=this.mults.dex&&(e.push(`+${(0,a.T3)(this.mults.dex-1,0)} dexterity skill`),e.push(`+${(0,a.T3)((this.mults.dex-1)/4,2)} dexterity exp`)),null!=this.mults.agi&&(e.push(`+${(0,a.T3)(this.mults.agi-1,0)} agility skill`),e.push(`+${(0,a.T3)((this.mults.agi-1)/4,2)} agility exp`)),null!=this.mults.cha&&(e.push(`+${(0,a.T3)(this.mults.cha-1,0)} charisma skill`),e.push(`+${(0,a.T3)((this.mults.cha-1)/4,2)} charisma exp`)),null!=this.mults.hack&&(e.push(`+${(0,a.T3)(this.mults.hack-1,0)} hacking skill`),e.push(`+${(0,a.T3)((this.mults.hack-1)/4,2)} hacking exp`)),e.join("
")}getType(){switch(this.type){case r.T.Weapon:return"Weapon";case r.T.Armor:return"Armor";case r.T.Vehicle:return"Vehicle";case r.T.Rootkit:return"Rootkit";case r.T.Augmentation:return"Augmentation";default:return""}}}},59018:(e,t,n)=>{"use strict";n.d(t,{o:()=>o});var r=n(60188),a=n(40777);const o={};r.L.forEach((e=>{o[e.name]=new a.H(e.name,e.cost,e.upgType,e.mults)}))},87811:(e,t,n)=>{"use strict";n.d(t,{m:()=>o});var r=n(72938),a=n(33244);const o={GangRespectToReputationRatio:75,MaximumGangMembers:12,CyclesPerTerritoryAndPowerUpdate:100,AscensionMultiplierRatio:.15,Names:[a.FactionName.SlumSnakes,a.FactionName.Tetrads,a.FactionName.TheSyndicate,a.FactionName.TheDarkArmy,a.FactionName.SpeakersForTheDead,a.FactionName.NiteSec,a.FactionName.TheBlackHand],GangKarmaRequirement:-54e3,minCyclesToProcess:2e3/r.t.MilliPerCycle,maxCyclesToProcess:5e3/r.t.MilliPerCycle}},56138:(e,t,n)=>{"use strict";n.d(t,{K:()=>a});var r=n(33244);const a={[r.FactionName.SlumSnakes]:1,[r.FactionName.Tetrads]:2,[r.FactionName.TheSyndicate]:2,[r.FactionName.TheDarkArmy]:2,[r.FactionName.SpeakersForTheDead]:5,[r.FactionName.NiteSec]:2,[r.FactionName.TheBlackHand]:5}},7101:(e,t,n)=>{"use strict";n.d(t,{b:()=>r});const r=[{desc:"This gang member is currently idle",isCombat:!0,isHacking:!0,name:"Unassigned",params:{hackWeight:100}},{desc:"Assign this gang member to create and distribute ransomware

Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!1,isHacking:!0,name:"Ransomware",params:{baseRespect:5e-5,baseWanted:1e-4,baseMoney:3,hackWeight:100,difficulty:1}},{desc:"Assign this gang member to attempt phishing scams and attacks

Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!1,isHacking:!0,name:"Phishing",params:{baseRespect:8e-5,baseWanted:.003,baseMoney:7.5,hackWeight:85,chaWeight:15,difficulty:3.5}},{desc:"Assign this gang member to attempt identity theft

Earns money - Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"Identity Theft",params:{baseRespect:1e-4,baseWanted:.075,baseMoney:18,hackWeight:80,chaWeight:20,difficulty:5}},{desc:"Assign this gang member to carry out DDoS attacks

Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"DDoS Attacks",params:{baseRespect:4e-4,baseWanted:.2,hackWeight:100,difficulty:8}},{desc:"Assign this gang member to create and distribute malicious viruses

Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"Plant Virus",params:{baseRespect:6e-4,baseWanted:.4,hackWeight:100,difficulty:12}},{desc:"Assign this gang member to commit financial fraud and digital counterfeiting

Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!1,isHacking:!0,name:"Fraud & Counterfeiting",params:{baseRespect:4e-4,baseWanted:.3,baseMoney:45,hackWeight:80,chaWeight:20,difficulty:20}},{desc:"Assign this gang member to launder money

Earns money - Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"Money Laundering",params:{baseRespect:.001,baseWanted:1.25,baseMoney:360,hackWeight:75,chaWeight:25,difficulty:25}},{desc:"Assign this gang member to commit acts of cyberterrorism

Greatly increases respect - Greatly increases wanted level",isCombat:!1,isHacking:!0,name:"Cyberterrorism",params:{baseRespect:.01,baseWanted:6,hackWeight:80,chaWeight:20,difficulty:36}},{desc:"Assign this gang member to be an ethical hacker for corporations

Earns money - Lowers wanted level",isCombat:!1,isHacking:!0,name:"Ethical Hacking",params:{baseWanted:-.001,baseMoney:3,hackWeight:90,chaWeight:10,difficulty:1}},{desc:"Assign this gang member to mug random people on the streets

Earns money - Slightly increases respect - Very slightly increases wanted level",isCombat:!0,isHacking:!1,name:"Mug People",params:{baseRespect:5e-5,baseWanted:5e-5,baseMoney:3.6,strWeight:25,defWeight:25,dexWeight:25,agiWeight:10,chaWeight:15,difficulty:1}},{desc:"Assign this gang member to sell drugs

Earns money - Slightly increases respect - Slightly increases wanted level - Scales slightly with territory",isCombat:!0,isHacking:!1,name:"Deal Drugs",params:{baseRespect:6e-5,baseWanted:.002,baseMoney:15,agiWeight:20,dexWeight:20,chaWeight:60,difficulty:3.5,territory:{money:1.2,respect:1,wanted:1.15}}},{desc:"Assign this gang member to extort civilians in your territory

Earns money - Slightly increases respect - Increases wanted - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Strongarm Civilians",params:{baseRespect:4e-5,baseWanted:.02,baseMoney:7.5,hackWeight:10,strWeight:25,defWeight:25,dexWeight:20,agiWeight:10,chaWeight:10,difficulty:5,territory:{money:1.6,respect:1.1,wanted:1.5}}},{desc:"Assign this gang member to run cons

Earns money - Increases respect - Increases wanted level",isCombat:!0,isHacking:!1,name:"Run a Con",params:{baseRespect:12e-5,baseWanted:.05,baseMoney:45,strWeight:5,defWeight:5,agiWeight:25,dexWeight:25,chaWeight:40,difficulty:14}},{desc:"Assign this gang member to commit armed robbery on stores, banks and armored cars

Earns money - Increases respect - Increases wanted level",isCombat:!0,isHacking:!1,name:"Armed Robbery",params:{baseRespect:14e-5,baseWanted:.1,baseMoney:114,hackWeight:20,strWeight:15,defWeight:15,agiWeight:10,dexWeight:20,chaWeight:20,difficulty:20}},{desc:"Assign this gang member to traffick illegal arms

Earns money - Increases respect - Increases wanted level - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Traffick Illegal Arms",params:{baseRespect:2e-4,baseWanted:.24,baseMoney:174,hackWeight:15,strWeight:20,defWeight:20,dexWeight:20,chaWeight:25,difficulty:32,territory:{money:1.4,respect:1.3,wanted:1.25}}},{desc:"Assign this gang member to threaten and blackmail high-profile targets

Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!0,isHacking:!1,name:"Threaten & Blackmail",params:{baseRespect:2e-4,baseWanted:.125,baseMoney:72,hackWeight:25,strWeight:25,dexWeight:25,chaWeight:25,difficulty:28}},{desc:"Assign this gang member to engage in human trafficking operations

Earns money - Increases respect - Increases wanted level - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Human Trafficking",params:{baseRespect:.004,baseWanted:1.25,baseMoney:360,hackWeight:30,strWeight:5,defWeight:5,dexWeight:30,chaWeight:30,difficulty:36,territory:{money:1.5,respect:1.5,wanted:1.6}}},{desc:"Assign this gang member to commit acts of terrorism

Greatly increases respect - Greatly increases wanted level - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Terrorism",params:{baseRespect:.01,baseWanted:6,hackWeight:20,strWeight:20,defWeight:20,dexWeight:20,chaWeight:20,difficulty:36,territory:{money:1,respect:2,wanted:2}}},{desc:"Assign this gang member to be a vigilante and protect the city from criminals

Decreases wanted level",isCombat:!0,isHacking:!0,name:"Vigilante Justice",params:{baseWanted:-.001,hackWeight:20,strWeight:20,defWeight:20,dexWeight:20,agiWeight:20,difficulty:1,territory:{money:1,respect:1,wanted:.9}}},{desc:"Assign this gang member to increase their combat stats (str, def, dex, agi)",isCombat:!0,isHacking:!0,name:"Train Combat",params:{strWeight:25,defWeight:25,dexWeight:25,agiWeight:25,difficulty:100}},{desc:"Assign this gang member to train their hacking skills",isCombat:!0,isHacking:!0,name:"Train Hacking",params:{hackWeight:100,difficulty:45}},{desc:"Assign this gang member to train their charisma",isCombat:!0,isHacking:!0,name:"Train Charisma",params:{chaWeight:100,difficulty:8}},{desc:"Assign this gang member to engage in territorial warfare with other gangs. Members assigned to this task will help increase your gang's territory and will defend your territory from being taken.",isCombat:!0,isHacking:!0,name:"Territory Warfare",params:{hackWeight:15,strWeight:20,defWeight:20,dexWeight:20,agiWeight:20,chaWeight:5,difficulty:5}}]},60188:(e,t,n)=>{"use strict";let r;n.d(t,{L:()=>a,T:()=>r}),function(e){e.Weapon="w",e.Armor="a",e.Vehicle="v",e.Rootkit="r",e.Augmentation="g"}(r||(r={}));const a=[{cost:1e6,mults:{str:1.04,def:1.04},name:"Baseball Bat",upgType:r.Weapon},{cost:12e6,mults:{str:1.08,def:1.08,dex:1.08},name:"Katana",upgType:r.Weapon},{cost:25e6,mults:{str:1.1,def:1.1,dex:1.1,agi:1.1},name:"Glock 18C",upgType:r.Weapon},{cost:5e7,mults:{str:1.12,def:1.1,agi:1.1},name:"P90C",upgType:r.Weapon},{cost:6e7,mults:{str:1.2,def:1.15},name:"Steyr AUG",upgType:r.Weapon},{cost:1e8,mults:{str:1.25,def:1.2},name:"AK-47",upgType:r.Weapon},{cost:15e7,mults:{str:1.3,def:1.25},name:"M15A10 Assault Rifle",upgType:r.Weapon},{cost:225e6,mults:{str:1.3,dex:1.25,agi:1.3},name:"AWM Sniper Rifle",upgType:r.Weapon},{cost:2e6,mults:{def:1.04},name:"Bulletproof Vest",upgType:r.Armor},{cost:5e6,mults:{def:1.08},name:"Full Body Armor",upgType:r.Armor},{cost:25e6,mults:{def:1.15,agi:1.15},name:"Liquid Body Armor",upgType:r.Armor},{cost:4e7,mults:{def:1.2},name:"Graphene Plating Armor",upgType:r.Armor},{cost:3e6,mults:{agi:1.04,cha:1.04},name:"Ford Flex V20",upgType:r.Vehicle},{cost:9e6,mults:{agi:1.08,cha:1.08},name:"ATX1070 Superbike",upgType:r.Vehicle},{cost:18e6,mults:{agi:1.12,cha:1.12},name:"Mercedes-Benz S9001",upgType:r.Vehicle},{cost:3e7,mults:{agi:1.16,cha:1.16},name:"White Ferrari",upgType:r.Vehicle},{cost:5e6,mults:{hack:1.05},name:"NUKE Rootkit",upgType:r.Rootkit},{cost:25e6,mults:{hack:1.1},name:"Soulstealer Rootkit",upgType:r.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Demon Rootkit",upgType:r.Rootkit},{cost:4e7,mults:{hack:1.12},name:"Hmap Node",upgType:r.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Jack the Ripper",upgType:r.Rootkit},{cost:1e10,mults:{str:1.3,dex:1.3},name:"Bionic Arms",upgType:r.Augmentation},{cost:1e10,mults:{agi:1.6},name:"Bionic Legs",upgType:r.Augmentation},{cost:15e9,mults:{str:1.15,def:1.15,dex:1.15,agi:1.15},name:"Bionic Spine",upgType:r.Augmentation},{cost:2e10,mults:{str:1.4,def:1.4},name:"BrachiBlades",upgType:r.Augmentation},{cost:12e9,mults:{str:1.2,def:1.2},name:"Nanofiber Weave",upgType:r.Augmentation},{cost:25e9,mults:{str:1.5,agi:1.5},name:"Synthetic Heart",upgType:r.Augmentation},{cost:15e9,mults:{str:1.3,def:1.3},name:"Synfibril Muscle",upgType:r.Augmentation},{cost:5e9,mults:{hack:1.05},name:"BitWire",upgType:r.Augmentation},{cost:1e10,mults:{hack:1.15},name:"Neuralstimulator",upgType:r.Augmentation},{cost:75e8,mults:{hack:1.1},name:"DataJack",upgType:r.Augmentation},{cost:5e10,mults:{str:1.7,def:1.7},name:"Graphene Bone Lacings",upgType:r.Augmentation}]},21320:(e,t,n)=>{"use strict";n.d(t,{NB:()=>l,QS:()=>i,Ym:()=>s,_r:()=>c,mT:()=>a,qo:()=>o});var r=n(97740);function a(e){return e.respect/(e.respect+e.wantedLevel)}function o(e,t,n){if(0===n.baseRespect)return 0;let o=n.hackWeight/100*t.hack+n.strWeight/100*t.str+n.defWeight/100*t.def+n.dexWeight/100*t.dex+n.agiWeight/100*t.agi+n.chaWeight/100*t.cha;if(o-=4*n.difficulty,o<=0)return 0;const i=Math.max(.005,Math.pow(100*e.territory,n.territory.respect)/100),s=(.2*e.territory+.8)*r.dQ.GangSoftcap;if(isNaN(i)||i<=0)return 0;const l=a(e);return Math.pow(11*n.baseRespect*o*i*l,s)}function i(e,t,n){if(0===n.baseWanted)return 0;let r=n.hackWeight/100*t.hack+n.strWeight/100*t.str+n.defWeight/100*t.def+n.dexWeight/100*t.dex+n.agiWeight/100*t.agi+n.chaWeight/100*t.cha;if(r-=3.5*n.difficulty,r<=0)return 0;const a=Math.max(.005,Math.pow(100*e.territory,n.territory.wanted)/100);if(isNaN(a)||a<=0)return 0;if(n.baseWanted<0)return.4*n.baseWanted*r*a;const o=7*n.baseWanted/Math.pow(3*r*a,.8);return Math.min(100,o)}function s(e,t,n){if(0===n.baseMoney)return 0;let o=n.hackWeight/100*t.hack+n.strWeight/100*t.str+n.defWeight/100*t.def+n.dexWeight/100*t.dex+n.agiWeight/100*t.agi+n.chaWeight/100*t.cha;if(o-=3.2*n.difficulty,o<=0)return 0;const i=Math.max(.005,Math.pow(100*e.territory,n.territory.money)/100);if(isNaN(i)||i<=0)return 0;const s=a(e),l=(.2*e.territory+.8)*r.dQ.GangSoftcap;return Math.pow(5*n.baseMoney*o*i*s,l)}function l(e){return Math.max(e-1e3,0)}function c(e){return Math.max(Math.pow(e/2e3,.5),1)}},36719:(e,t,n)=>{"use strict";n.d(t,{J:()=>m});var r=n(67294),a=n(81138),o=n(56798),i=n(22115),s=n(39463),l=n(48672),c=n(81284),u=n(88775);function m(e){const t=(0,c.z)();(0,u.S)(1e3);const n=e.member.getCurrentAscensionMults(),m=e.member.getAscensionMultsAfterAscend();return r.createElement(l.u,{open:e.open,onClose:e.onClose},r.createElement(a.Z,null,"Are you sure you want to ascend this member? They will lose all of",r.createElement("br",null),"their non-Augmentation upgrades and their stats will reset back to 1.",r.createElement("br",null),r.createElement("br",null),"Furthermore, your gang will lose ",(0,i.mP)(e.member.earnedRespect)," respect",r.createElement("br",null),r.createElement("br",null),"In return, they will gain the following permanent boost to stat multipliers:",r.createElement("br",null),"Hacking: x",(0,i.td)(n.hack)," => x",(0,i.td)(m.hack),r.createElement("br",null),"Strength: x",(0,i.td)(n.str)," => x",(0,i.td)(m.str),r.createElement("br",null),"Defense: x",(0,i.td)(n.def)," => x",(0,i.td)(m.def),r.createElement("br",null),"Dexterity: x",(0,i.td)(n.dex)," => x",(0,i.td)(m.dex),r.createElement("br",null),"Agility: x",(0,i.td)(n.agi)," => x",(0,i.td)(m.agi),r.createElement("br",null),"Charisma: x",(0,i.td)(n.cha)," => x",(0,i.td)(m.cha),r.createElement("br",null)),r.createElement(o.Z,{onClick:function(){e.onAscend();const n=t.ascendMember(e.member);(0,s.X)(r.createElement(r.Fragment,null,"You ascended ",e.member.name,"!",r.createElement("br",null),r.createElement("br",null),"Your gang lost ",(0,i.mP)(n.respect)," respect.",r.createElement("br",null),r.createElement("br",null),e.member.name," gained the following stat multipliers for ascending:",r.createElement("br",null),"Hacking: x",(0,i.td)(n.hack),r.createElement("br",null),"Strength: x",(0,i.td)(n.str),r.createElement("br",null),"Defense: x",(0,i.td)(n.def),r.createElement("br",null),"Dexterity: x",(0,i.td)(n.dex),r.createElement("br",null),"Agility: x",(0,i.td)(n.agi),r.createElement("br",null),"Charisma: x",(0,i.td)(n.cha),r.createElement("br",null))),e.onClose()}},"Ascend"))}},86400:(e,t,n)=>{"use strict";n.d(t,{k:()=>c});var r=n(67294),a=n(72938),o=n(49802),i=n(81138),s=n(17575),l=n(30120);function c(e){const t=1e3/a.t.MilliPerCycle;if(e.gang.storedCycles/t*1e3<=5e3)return r.createElement(r.Fragment,null);const n=e.gang.storedCycles/t*1e3;return r.createElement(l.Z,{display:"flex"},r.createElement(s.Z,{title:r.createElement(i.Z,null,"You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by the browser). Bonus time makes the Gang mechanic progress faster, up to 25x the normal speed.")},r.createElement(i.Z,null,"Bonus time: ",(0,o.UF)(n))))}},81284:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(67294);const a={Gang:r.createContext({})},o=()=>(0,r.useContext)(a.Gang)},65085:(e,t,n)=>{"use strict";n.d(t,{M:()=>A});var r=n(67294),a=n(81284),o=n(81138),i=n(56798),s=n(17575),l=n(30120),c=n(28881),u=n(26023),m=n(47542),f=n(46948),h=n(98649),d=n(66351),p=n(42761),g=n(22115),y=n(59018),b=n(72360),v=n(60188),k=n(49173),w=n(51087),E=n(21927),S=n(88775);function C(e){const t=(0,a.z)(),n=Object.keys(y.o).filter((n=>{const r=y.o[n];return!(k.J5.money>t.getUpgradeCost(r)||r.type!==e.type||e.upgrades.includes(n))})).map((e=>y.o[e]));return 0===n.length?r.createElement(r.Fragment,null):r.createElement(o.Z,null,"Next at ",r.createElement(b.W,{money:t.getUpgradeCost(n[0])}))}function x(e){let{upgName:t}=e;const n=y.o[t];return r.createElement(c.Z,{sx:{p:1}},r.createElement(s.Z,{title:r.createElement(o.Z,{dangerouslySetInnerHTML:{__html:n.desc}})},r.createElement(o.Z,null,n.name)))}function N(e){const t=(0,a.z)();return r.createElement(s.Z,{title:r.createElement(o.Z,{dangerouslySetInnerHTML:{__html:e.upg.desc}})},r.createElement("span",null,r.createElement(i.Z,{onClick:function(){e.member.buyUpgrade(e.upg),e.rerender()},sx:{display:"flex",flexDirection:"column",width:"100%",height:"100%"}},r.createElement(o.Z,{sx:{display:"block"}},e.upg.name),r.createElement(b.W,{money:t.getUpgradeCost(e.upg)}))))}function M(e){const t=(0,a.z)(),n=(0,S.S)(),[i,d]=(0,r.useState)("Weapons");function p(e,n){return Object.keys(y.o).filter((r=>{const a=y.o[r];return!(k.J5.moneyy.o[e]))}const b=p(e.member.upgrades,v.T.Weapon),M=p(e.member.upgrades,v.T.Armor),A=p(e.member.upgrades,v.T.Vehicle),T=p(e.member.upgrades,v.T.Rootkit),L=p(e.member.augmentations,v.T.Augmentation),R={Weapons:[b,v.T.Weapon],Armor:[M,v.T.Armor],Vehicles:[A,v.T.Vehicle],Rootkits:[T,v.T.Rootkit],Augmentations:[L,v.T.Augmentation]},F={hack:e.member.calculateAscensionMult(e.member.hack_asc_points),str:e.member.calculateAscensionMult(e.member.str_asc_points),def:e.member.calculateAscensionMult(e.member.def_asc_points),dex:e.member.calculateAscensionMult(e.member.dex_asc_points),agi:e.member.calculateAscensionMult(e.member.agi_asc_points),cha:e.member.calculateAscensionMult(e.member.cha_asc_points)};return r.createElement(c.Z,null,r.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr",m:1,gap:1}},r.createElement("span",null,r.createElement(o.Z,{variant:"h5",color:"primary"},e.member.name," (",e.member.task,")"),r.createElement(s.Z,{title:r.createElement(o.Z,null,"Hk: x",(0,g.WJ)(e.member.hack_mult*F.hack),"(x",(0,g.WJ)(e.member.hack_mult)," Eq, x",(0,g.WJ)(F.hack)," Asc)",r.createElement("br",null),"St: x",(0,g.WJ)(e.member.str_mult*F.str),"(x",(0,g.WJ)(e.member.str_mult)," Eq, x",(0,g.WJ)(F.str)," Asc)",r.createElement("br",null),"Df: x",(0,g.WJ)(e.member.def_mult*F.def),"(x",(0,g.WJ)(e.member.def_mult)," Eq, x",(0,g.WJ)(F.def)," Asc)",r.createElement("br",null),"Dx: x",(0,g.WJ)(e.member.dex_mult*F.dex),"(x",(0,g.WJ)(e.member.dex_mult)," Eq, x",(0,g.WJ)(F.dex)," Asc)",r.createElement("br",null),"Ag: x",(0,g.WJ)(e.member.agi_mult*F.agi),"(x",(0,g.WJ)(e.member.agi_mult)," Eq, x",(0,g.WJ)(F.agi)," Asc)",r.createElement("br",null),"Ch: x",(0,g.WJ)(e.member.cha_mult*F.cha),"(x",(0,g.WJ)(e.member.cha_mult)," Eq, x",(0,g.WJ)(F.cha)," Asc)")},r.createElement(m.Z,null,r.createElement(f.Z,null,r.createElement(E.j,{name:"Hacking",color:w.Z.theme.hack,data:{level:e.member.hack,exp:e.member.hack_exp}}),r.createElement(E.j,{name:"Strength",color:w.Z.theme.combat,data:{level:e.member.str,exp:e.member.str_exp}}),r.createElement(E.j,{name:"Defense",color:w.Z.theme.combat,data:{level:e.member.def,exp:e.member.def_exp}}),r.createElement(E.j,{name:"Dexterity",color:w.Z.theme.combat,data:{level:e.member.dex,exp:e.member.dex_exp}}),r.createElement(E.j,{name:"Agility",color:w.Z.theme.combat,data:{level:e.member.agi,exp:e.member.agi_exp}}),r.createElement(E.j,{name:"Charisma",color:w.Z.theme.cha,data:{level:e.member.cha,exp:e.member.cha_exp}}))))),r.createElement("span",null,r.createElement(u.Z,{onChange:e=>{d(e.target.value),n()},value:i,sx:{width:"100%",mb:1}},Object.keys(R).map(((e,t)=>r.createElement(h.Z,{key:t+1,value:e},r.createElement(o.Z,{variant:"h6"},e))))),r.createElement(l.Z,{sx:{width:"100%"}},0===R[i][0].length&&r.createElement(o.Z,null,"All upgrades owned!"),r.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr"}},R[i][0].map((t=>r.createElement(N,{key:t.name,rerender:n,member:e.member,upg:t})))),r.createElement(C,{type:R[i][1],upgrades:e.member.upgrades})))),r.createElement(o.Z,{sx:{mx:1}},"Purchased Upgrades: "),r.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"repeat(4, 1fr)",m:1}},e.member.upgrades.map((e=>r.createElement(x,{key:e,upgName:e}))),e.member.augmentations.map((e=>r.createElement(x,{key:e,upgName:e})))))}function A(){const e=(0,a.z)(),[t,n]=(0,r.useState)(""),i=e.members.filter((e=>e&&e.name.toLowerCase().includes(t)));return r.createElement(r.Fragment,null,r.createElement(s.Z,{title:r.createElement(o.Z,null,"You get a discount on equipment and upgrades based on your gang's respect and power. More respect and power leads to more discounts.")},r.createElement(o.Z,{sx:{m:1}},"Discount: -",(0,g.T3)(1-1/e.getDiscount()))),r.createElement(d.Z,{value:t,onChange:e=>{n(e.target.value.toLowerCase())},autoFocus:!0,InputProps:{startAdornment:r.createElement(p.Z,null),spellCheck:!1},placeholder:"Filter by member name",sx:{m:1,width:"15%"}}),r.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr",width:"100%"}},i.map((e=>r.createElement(M,{key:e.name,member:e})))))}},78802:(e,t,n)=>{"use strict";n.d(t,{o:()=>l});var r=n(67294),a=n(36777),o=n(30120),i=n(61702),s=n(28881);function l(e){return r.createElement(o.Z,{component:s.Z,sx:{width:"auto"}},r.createElement(o.Z,{sx:{m:1}},r.createElement(i.Z,{primary:r.createElement("b",null,e.member.name)}),r.createElement(a.l,{member:e.member})))}},36777:(e,t,n)=>{"use strict";n.d(t,{l:()=>f});var r=n(67294),a=n(3066),o=n(5546),i=n(36719),s=n(18377),l=n(56798),c=n(81138),u=n(9944),m=n(6248);function f(e){const t=(0,r.useState)(!1)[1],[n,f]=(0,r.useState)(!1),[h,d]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,e.member.canAscend()&&r.createElement(s.Z,{sx:{display:"flex",justifyContent:"space-between",my:1}},r.createElement(l.Z,{onClick:()=>d(!0),style:{flexGrow:1,borderRightWidth:0}},"Ascend"),r.createElement(i.J,{open:h,onClose:()=>d(!1),member:e.member,onAscend:()=>t((e=>!e))}),r.createElement(l.Z,{onClick:()=>f(!0),style:{width:"fit-content",borderLeftWidth:0}},r.createElement(u.Z,null)),r.createElement(m.t,{open:n,onClose:()=>f(!1)},r.createElement(c.Z,null,"Ascending a Gang Member resets the member's progress and stats in exchange for a permanent boost to their stat multipliers.",r.createElement("br",null),r.createElement("br",null),"The additional stat multiplier that the Gang Member gains upon ascension is based on the amount of exp they have.",r.createElement("br",null),r.createElement("br",null),"Upon ascension, the member will lose all of its non-Augmentation Equipment and your gang will lose respect equal to the total respect earned by the member."))),r.createElement(s.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr",width:"100%",gap:1}},r.createElement(a.f,{member:e.member}),r.createElement(o.o,{onTaskChange:()=>t((e=>!e)),member:e.member})))}},50230:(e,t,n)=>{"use strict";n.d(t,{q:()=>m});var r=n(67294),a=n(78802),o=n(70255),i=n(81284),s=n(66351),l=n(30120),c=n(42761),u=n(15460);function m(){const e=(0,i.z)(),t=(0,r.useState)(!1)[1],[n,m]=(0,r.useState)(""),[f,h]=(0,r.useState)(!1),d=e.members.filter((e=>e&&e.name.toLowerCase().includes(n))).filter((e=>!f||e.canAscend()));return r.createElement(r.Fragment,null,r.createElement(o.b,{onRecruit:()=>t((e=>!e))}),r.createElement(s.Z,{value:n,onChange:e=>{m(e.target.value.toLowerCase())},autoFocus:!0,InputProps:{startAdornment:r.createElement(c.Z,null),spellCheck:!1},placeholder:"Filter by member name",sx:{m:1,width:"15%"}}),r.createElement(u.V,{checked:f,onChange:e=>h(e),text:"Show only ascendable",tooltip:r.createElement(r.Fragment,null,"Filter the members list by whether or not the member can be ascended.")}),r.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"repeat(2, 1fr)"}},d.map((e=>r.createElement(a.o,{key:e.name,member:e})))))}},3066:(e,t,n)=>{"use strict";n.d(t,{f:()=>g});var r=n(67294),a=n(81284),o=n(81138),i=n(17575),s=n(47542),l=n(46948),c=n(49557),u=n(7272),m=n(22115),f=n(51087),h=n(85882),d=n(21927),p=n(43480);function g(e){const t=(0,p.yK)(),n={hack:e.member.calculateAscensionMult(e.member.hack_asc_points),str:e.member.calculateAscensionMult(e.member.str_asc_points),def:e.member.calculateAscensionMult(e.member.def_asc_points),dex:e.member.calculateAscensionMult(e.member.dex_asc_points),agi:e.member.calculateAscensionMult(e.member.agi_asc_points),cha:e.member.calculateAscensionMult(e.member.cha_asc_points)},g=(0,a.z)(),y=[["Money:",r.createElement(h.G,{key:"money",money:5*e.member.calculateMoneyGain(g)})],["Respect:",`${(0,m.mP)(5*e.member.calculateRespectGain(g))} / sec`],["Wanted Level:",`${(0,m.ZN)(5*e.member.calculateWantedLevelGain(g))} / sec`],["Total Respect:",`${(0,m.mP)(e.member.earnedRespect)}`]];return r.createElement(r.Fragment,null,r.createElement(i.Z,{title:r.createElement(o.Z,null,"Hk: x",(0,m.WJ)(e.member.hack_mult*n.hack),"(x",(0,m.WJ)(e.member.hack_mult)," Eq, x",(0,m.WJ)(n.hack)," Asc)",r.createElement("br",null),"St: x",(0,m.WJ)(e.member.str_mult*n.str),"(x",(0,m.WJ)(e.member.str_mult)," Eq, x",(0,m.WJ)(n.str)," Asc)",r.createElement("br",null),"Df: x",(0,m.WJ)(e.member.def_mult*n.def),"(x",(0,m.WJ)(e.member.def_mult)," Eq, x",(0,m.WJ)(n.def)," Asc)",r.createElement("br",null),"Dx: x",(0,m.WJ)(e.member.dex_mult*n.dex),"(x",(0,m.WJ)(e.member.dex_mult)," Eq, x",(0,m.WJ)(n.dex)," Asc)",r.createElement("br",null),"Ag: x",(0,m.WJ)(e.member.agi_mult*n.agi),"(x",(0,m.WJ)(e.member.agi_mult)," Eq, x",(0,m.WJ)(n.agi)," Asc)",r.createElement("br",null),"Ch: x",(0,m.WJ)(e.member.cha_mult*n.cha),"(x",(0,m.WJ)(e.member.cha_mult)," Eq, x",(0,m.WJ)(n.cha)," Asc)")},r.createElement(s.Z,{sx:{display:"table",mb:1,width:"100%"}},r.createElement(l.Z,null,r.createElement(d.j,{name:"Hacking",color:f.Z.theme.hack,data:{level:e.member.hack,exp:e.member.hack_exp}}),r.createElement(d.j,{name:"Strength",color:f.Z.theme.combat,data:{level:e.member.str,exp:e.member.str_exp}}),r.createElement(d.j,{name:"Defense",color:f.Z.theme.combat,data:{level:e.member.def,exp:e.member.def_exp}}),r.createElement(d.j,{name:"Dexterity",color:f.Z.theme.combat,data:{level:e.member.dex,exp:e.member.dex_exp}}),r.createElement(d.j,{name:"Agility",color:f.Z.theme.combat,data:{level:e.member.agi,exp:e.member.agi_exp}}),r.createElement(d.j,{name:"Charisma",color:f.Z.theme.cha,data:{level:e.member.cha,exp:e.member.cha_exp}}),r.createElement(c.Z,null,r.createElement(u.Z,{classes:{root:t.cellNone}},r.createElement("br",null))),y.map((e=>{let[n,a]=e;return r.createElement(c.Z,{key:n.toString()+a.toString()},r.createElement(u.Z,{classes:{root:t.cellNone}},r.createElement(o.Z,null,n)),r.createElement(u.Z,{align:"right",classes:{root:t.cellNone}},r.createElement(o.Z,null,a)))}))))))}},22527:(e,t,n)=>{"use strict";n.d(t,{m:()=>f});var r=n(67294),a=n(89155),o=n(1374),i=n(65085),s=n(49173),l=n(81284),c=n(94004),u=n(30527),m=n(88775);function f(){const e=function(){if(null===s.J5.gang)throw new Error("Gang should not be null");return s.J5.gang}(),[t,n]=r.useState(0);return(0,m.S)(200),r.createElement(l._.Gang.Provider,{value:e},r.createElement(c.Z,{variant:"fullWidth",value:t,onChange:function(e,t){n(t)},sx:{minWidth:"fit-content",maxWidth:"45%"}},r.createElement(u.Z,{label:"Management"}),r.createElement(u.Z,{label:"Equipment"}),r.createElement(u.Z,{label:"Territory"})),0===t&&r.createElement(a.p,null),1===t&&r.createElement(i.M,null),2===t&&r.createElement(o.p,null))}},69801:(e,t,n)=>{"use strict";n.d(t,{S:()=>d});var r=n(67294),a=n(58427),o=n(22115),i=n(85882),s=n(17365),l=n(59471),c=n(86400),u=n(81284),m=n(81138),f=n(17575),h=n(30120);function d(){const e=(0,u.z)(),t=100*l.vS[e.facName].territory;let n;return n=t<=0?(0,o.$j)(0,2):t>=100?(0,o.$j)(100,2):(0,o.$j)(t,2),r.createElement(r.Fragment,null,r.createElement(h.Z,{display:"flex"},r.createElement(f.Z,{title:r.createElement(m.Z,null,"Represents the amount of respect your gang has from other gangs and criminal organizations. Your respect affects the amount of money your gang members will earn, and also determines how much reputation you are earning with your gang's corresponding Faction.")},r.createElement(m.Z,null,"Respect: ",(0,o.mP)(e.respect)," (",(0,o.mP)(5*e.respectGainRate)," / sec)"))),r.createElement(h.Z,{display:"flex"},r.createElement(f.Z,{title:r.createElement(m.Z,null,"Represents how much the gang is wanted by law enforcement. The higher your gang's wanted level, the harder it will be for your gang members to make money and earn respect. Note that the minimum wanted level is 1.")},r.createElement(m.Z,null,"Wanted Level: ",(0,o.ZN)(e.wanted)," (",(0,o.ZN)(5*e.wantedGainRate)," / sec)"))),r.createElement(h.Z,{display:"flex"},r.createElement(f.Z,{title:r.createElement(m.Z,null,"Penalty for respect and money gain rates due to Wanted Level")},r.createElement(m.Z,null,"Wanted Level Penalty: -",(0,o.$j)(100*(1-e.getWantedPenalty()),2),"%"))),r.createElement(m.Z,null,"Money gain rate: ",r.createElement(i.G,{money:5*e.moneyGainRate})),r.createElement(h.Z,{display:"flex"},r.createElement(f.Z,{title:r.createElement(m.Z,null,"The percentage of total territory your Gang controls")},r.createElement(m.Z,null,"Territory: ",n,"%"))),r.createElement(m.Z,null,"Faction reputation: ",r.createElement(s.Y,{reputation:a.i[e.facName].playerReputation})),r.createElement(c.k,{gang:e}))}},89155:(e,t,n)=>{"use strict";n.d(t,{p:()=>l});var r=n(67294),a=n(69801),o=n(50230),i=n(81284),s=n(81138);function l(){const e=(0,i.z)();return r.createElement(r.Fragment,null,r.createElement(s.Z,null,"This page is used to manage your gang members and get an overview of your gang's stats.",r.createElement("br",null),r.createElement("br",null),"If a gang member is not earning much money or respect, the task that you have assigned to that member might be too difficult. Consider training that member's stats or choosing an easier task. The tasks closer to the top of the dropdown list are generally easier. Alternatively, the gang member's low production might be due to the fact that your wanted level is too high. Consider assigning a few members to the '",e.isHackingGang?"Ethical Hacking":"Vigilante Justice","' task to lower your wanted level.",r.createElement("br",null),r.createElement("br",null),"Installing Augmentations does NOT reset your progress with your Gang. Furthermore, after installing Augmentations, you will automatically be a member of whatever Faction you created your gang with.",r.createElement("br",null),r.createElement("br",null),"You can also manage your gang programmatically through Netscript using the Gang API"),r.createElement("br",null),r.createElement(a.S,null),r.createElement("br",null),r.createElement(o.q,null))}},70255:(e,t,n)=>{"use strict";n.d(t,{b:()=>m});var r=n(67294),a=n(57284),o=n(87811),i=n(22115),s=n(81284),l=n(81138),c=n(56798),u=n(30120);function m(e){const t=(0,s.z)(),[n,m]=(0,r.useState)(!1);if(t.members.length>=o.m.MaximumGangMembers)return r.createElement(r.Fragment,null);if(!t.canRecruitMember()){const e=t.getRespectNeededToRecruitMember();return r.createElement(u.Z,{display:"flex",alignItems:"center",sx:{mx:1}},r.createElement(c.Z,{disabled:!0},"Recruit Gang Member"),r.createElement(l.Z,{sx:{ml:1}},(0,i.mP)(e)," respect needed to recruit next member"))}return r.createElement(r.Fragment,null,r.createElement(u.Z,{sx:{mx:1}},r.createElement(c.Z,{onClick:()=>m(!0)},"Recruit Gang Member")),r.createElement(a._,{open:n,onClose:()=>m(!1),onRecruit:e.onRecruit}))}},57284:(e,t,n)=>{"use strict";n.d(t,{_:()=>m});var r=n(67294),a=n(48672),o=n(39463),i=n(81284),s=n(81138),l=n(66351),c=n(56798),u=n(81055);function m(e){const t=(0,i.z)(),[n,m]=(0,r.useState)(""),f=""===n||!t.canRecruitMember();function h(){f||(t.recruitMember(n)?(e.onRecruit(),e.onClose()):(0,o.X)("You already have a gang member with this name!"))}return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(s.Z,null,"Enter a name for your new Gang member:"),r.createElement("br",null),r.createElement(l.Z,{autoFocus:!0,onKeyUp:function(e){e.key===u.F.ENTER&&h()},onChange:function(e){m(e.target.value)},type:"text",placeholder:"unique name",InputProps:{endAdornment:r.createElement(c.Z,{disabled:f,onClick:h},"Recruit")}}))}},64034:(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var r=n(67294),a=n(99225),o=n(81138);function i(e){const t=a.H[e.member.task],n=t?t.desc:a.H.Unassigned.desc;return r.createElement(o.Z,{dangerouslySetInnerHTML:{__html:n}})}},5546:(e,t,n)=>{"use strict";n.d(t,{o:()=>c});var r=n(67294),a=n(81284),o=n(64034),i=n(30120),s=n(98649),l=n(26023);function c(e){const t=(0,a.z)(),[n,c]=(0,r.useState)(e.member.task),u=t.members.find((t=>t.name==e.member.name));u&&u.task!=n&&c(u.task);const m=t.getAllTaskNames();return r.createElement(i.Z,null,r.createElement(l.Z,{onChange:function(t){const n=t.target.value;e.member.assignToTask(n),c(n),e.onTaskChange()},value:n,sx:{width:"100%"}},r.createElement(s.Z,{key:0,value:"Unassigned"},"Unassigned"),m.map(((e,t)=>r.createElement(s.Z,{key:t+1,value:e},e)))),r.createElement(o.s,{member:e.member}))}},90884:(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var r=n(67294),a=n(81138),o=n(48672);const i=e=>{let{open:t,onClose:n}=e;return r.createElement(o.u,{open:t,onClose:n},r.createElement(r.Fragment,null,r.createElement(a.Z,{variant:"h4"},"Clashing"),r.createElement(a.Z,null,"Every ~20 seconds, your gang has a chance to 'clash' with other gangs. Your chance to win a clash depends on your gang's power, which is listed in the display below. Your gang's power slowly accumulates over time. The accumulation rate is determined by the stats of all Gang members you have assigned to the 'Territory Warfare' task. Gang members that are not assigned to this task do not contribute to your gang's power. Your gang also loses a small amount of power whenever you lose a clash.",r.createElement("br",null),r.createElement("br",null),"NOTE: Gang members assigned to 'Territory Warfare' can be killed during clashes. This can happen regardless of whether you win or lose the clash. A gang member being killed results in both respect and power loss for your gang."),r.createElement("br",null),r.createElement(a.Z,{variant:"h4"},"Territory"),r.createElement(a.Z,null,"The amount of territory you have affects all aspects of your Gang members' production, including money, respect, and wanted level. It is very beneficial to have high territory control.",r.createElement("br",null),r.createElement("br",null),'To increase your chances of winning territory, assign gang members to "Territory Warfare". This will build your gang power. Then, enable "Engage in Territory Warfare" to start fighting over territory.'),r.createElement("br",null),r.createElement(a.Z,{variant:"h4"},"Territory Clash Chance"),r.createElement(a.Z,null,"This percentage represents the chance you have of 'clashing' with another gang. If you do not wish to gain/lose territory, then keep this percentage at 0% by not engaging in territory warfare.")))}},1374:(e,t,n)=>{"use strict";n.d(t,{p:()=>y});var r=n(67294),a=n(78016),o=n(81138),i=n(56798),s=n(30120),l=n(28881),c=n(29919),u=n(16056),m=n(17575),f=n(65301),h=n(22115),d=n(59471),p=n(81284),g=n(90884);function y(){const e=(0,p.z)(),t=Object.keys(d.vS).filter((t=>t!=e.facName)),[n,y]=(0,r.useState)(!1);return r.createElement(a.Z,{disableGutters:!0,maxWidth:"md",sx:{mx:0}},r.createElement(o.Z,null,"This page shows how much territory your Gang controls. This statistic is listed as a percentage, which represents how much of the total territory you control."),r.createElement(i.Z,{onClick:()=>y(!0),sx:{my:1}},r.createElement(f.Z,{sx:{mr:1}}),"About Gang Territory"),r.createElement(s.Z,{component:l.Z,sx:{p:1,mb:1}},r.createElement(o.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},e.facName," (Your gang)"),r.createElement(c.Z,{control:r.createElement(u.Z,{checked:e.territoryWarfareEngaged,onChange:t=>e.territoryWarfareEngaged=t.target.checked}),label:r.createElement(m.Z,{title:r.createElement(o.Z,null,"Engaging in Territory Warfare sets your clash chance to 100%. Disengaging will cause your clash chance to gradually decrease until it reaches 0%.")},r.createElement(o.Z,null,"Engage in Territory Warfare"))}),r.createElement("br",null),r.createElement(c.Z,{control:r.createElement(u.Z,{checked:e.notifyMemberDeath,onChange:t=>e.notifyMemberDeath=t.target.checked}),label:r.createElement(m.Z,{title:r.createElement(o.Z,null,"If this is enabled, then you will receive a pop-up notifying you whenever one of your Gang Members dies in a territory clash.")},r.createElement(o.Z,null,"Notify about Gang Member Deaths"))}),r.createElement(o.Z,null,r.createElement("b",null,"Territory Clash Chance:")," ",(0,h.T3)(e.territoryClashChance,3)," ",r.createElement("br",null),r.createElement("b",null,"Power:")," ",(0,h.$j)(d.vS[e.facName].power,3)," ",r.createElement("br",null),r.createElement("b",null,"Territory:")," ",b(d.vS[e.facName].territory),"% ",r.createElement("br",null))),r.createElement(s.Z,{sx:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)"}},t.sort(((e,t)=>d.vS[e].territory<=0&&d.vS[t].territory>0?1:d.vS[e].territory>0&&d.vS[t].territory<=0?-1:0)).map((e=>r.createElement(v,{key:e,name:e})))),r.createElement(g.s,{open:n,onClose:()=>y(!1)}))}function b(e){const t=100*e;return t<=0?(0,h.$j)(0,3):t>=100?(0,h.$j)(100,3):(0,h.$j)(t,3)}function v(e){const t=(0,p.z)(),n=d.vS[t.facName].power,a=d.vS[e.name].power,i=n/(a+n),c=d.vS[e.name].territory,u=c?1:.75;return r.createElement(s.Z,{component:l.Z,sx:{p:1,opacity:u}},r.createElement(o.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},e.name),r.createElement(o.Z,null,r.createElement("b",null,"Power:")," ",(0,h.$j)(a,3)," ",r.createElement("br",null),r.createElement("b",null,"Territory:")," ",b(c),"% ",r.createElement("br",null),r.createElement("b",null,"Clash Win Chance:")," ",(0,h.T3)(i,3)))}},49708:(e,t,n)=>{"use strict";n.d(t,{Md:()=>c,Vp:()=>u,gb:()=>o,iG:()=>i,sI:()=>l,zX:()=>s});var r=n(97740),a=n(46085);function o(e,t){const n=e.hackDifficulty??100,r=e.requiredHackingSkill??1e9;if(!e.hasAdminRights||n>=100)return 0;const o=(100-n)/100,i=1.75*t.skills.hacking,s=(i-r)/i*o*t.mults.hacking_chance*(0,a.f)(t.skills.intelligence,1);return Math.min(1,Math.max(s,0))}function i(e,t){const n=e.baseDifficulty;if(!n)return 0;let a=3;return a+=.3*n,a*t.mults.hacking_exp*r.dQ.HackExpGain}function s(e,t){const n=e.hackDifficulty??100;if(n>=100)return 0;const a=e.requiredHackingSkill??1e9,o=(100-n)/100*((t.skills.hacking-(a-1))/t.skills.hacking)*t.mults.hacking_money*r.dQ.ScriptHackMoney/240;return Math.min(1,Math.max(o,0))}function l(e,t){const{hackDifficulty:n,requiredHackingSkill:r}=e;if("number"!=typeof n||"number"!=typeof r)return 1/0;let o=r*n*2.5+500;return o/=t.skills.hacking+50,5*o/(t.mults.hacking_speed*(0,a.f)(t.skills.intelligence,1))}function c(e,t){return 3.2*l(e,t)}function u(e,t){return 4*l(e,t)}},42805:(e,t,n)=>{"use strict";n.d(t,{Eb:()=>s,Mr:()=>i,uN:()=>o});var r=n(49173);function a(e,t){const n=e.hostname;return"requiredHackingSkill"in e?e.hasAdminRights?{res:!0}:{res:!1,msg:`Cannot ${t} ${n} server because you do not have root access`}:{res:!1,msg:`Cannot ${t} ${n} server because it is a Hacknet Node`}}function o(e){const t=a(e,"hack");return t.res?e.requiredHackingSkill>r.J5.skills.hacking?{res:!1,msg:`Cannot hack ${e.hostname} server because your hacking skill is not high enough`}:{res:!0}:t}function i(e){return a(e,"grow")}function s(e){return a(e,"weaken")}},29538:(e,t,n)=>{"use strict";n.d(t,{BF:()=>w,Dw:()=>v,En:()=>E,Fy:()=>M,N0:()=>b,Px:()=>T,SL:()=>C,TN:()=>F,Tw:()=>N,UL:()=>A,V2:()=>S,ZQ:()=>L,b_:()=>k,fE:()=>_,kw:()=>y,sq:()=>x});var r=n(55782),a=n(73280),o=n(1290),i=n(93430),s=n(3853),l=n(16466),c=n(94043),u=n(58297),m=n(40780),f=n(49173),h=n(97467),d=n(89916),p=n(62586),g=n(50862);function y(){return 9===f.J5.bitNodeN||f.J5.sourceFileLvl(9)>0}function b(){if(m.wP.isRunning){if(m.wP.currStep!==m.$o.HacknetNodesIntroduction)return-1;(0,m.ZF)()}const e=f.J5.hacknetNodes.length;if(y()){const t=w();if(isNaN(t))throw new Error("Calculated cost of purchasing HacknetServer is NaN");return!f.J5.canAfford(t)||e>=i.B5.MaxServers?-1:(f.J5.loseMoney(t,"hacknet_expenses"),f.J5.createHacknetServer(),F(),e)}{const t=k();if(isNaN(t))throw new Error("Calculated cost of purchasing HacknetNode is NaN");if(!f.J5.canAfford(t))return-1;const n=y()?`hacknet-server-${e}`:`hacknet-node-${e}`,a=new r.Q(n,f.J5.mults.hacknet_node_money);return f.J5.loseMoney(t,"hacknet_expenses"),f.J5.hacknetNodes.push(a),e}}function v(){return y()&&f.J5.hacknetNodes.length>=i.B5.MaxServers}function k(){return(0,a.Vi)(f.J5.hacknetNodes.length+1,f.J5.mults.hacknet_node_purchase_cost)}function w(){return(0,o.oP)(f.J5.hacknetNodes.length+1,f.J5.mults.hacknet_node_purchase_cost)}function E(e,t){if(null==t)throw new Error("getMaxNumberLevelUpgrades() called without maxLevel arg");if(f.J5.moneye.calculateLevelUpgradeCost(a,f.J5.mults.hacknet_node_level_cost))return a;for(;n<=r;){const o=(n+r)/2|0;if(o!==t&&f.J5.money>e.calculateLevelUpgradeCost(o,f.J5.mults.hacknet_node_level_cost)&&f.J5.moneye.calculateLevelUpgradeCost(o,f.J5.mults.hacknet_node_level_cost)))return Math.min(a,o);n=o+1}}return 0}function S(e,t){if(null==t)throw new Error("getMaxNumberRamUpgrades() called without maxLevel arg");if(f.J5.moneye.calculateRamUpgradeCost(n,f.J5.mults.hacknet_node_ram_cost))return n;for(let t=n-1;t>=0;--t)if(f.J5.money>e.calculateRamUpgradeCost(t,f.J5.mults.hacknet_node_ram_cost))return t;return 0}function C(e,t){if(null==t)throw new Error("getMaxNumberCoreUpgrades() called without maxLevel arg");if(f.J5.moneye.calculateCoreUpgradeCost(a,f.J5.mults.hacknet_node_core_cost))return a;for(;n<=r;){const o=(n+r)/2|0;if(o!=t&&f.J5.money>e.calculateCoreUpgradeCost(o,f.J5.mults.hacknet_node_core_cost)&&f.J5.moneye.calculateCoreUpgradeCost(o,f.J5.mults.hacknet_node_core_cost)))return Math.min(a,o);n=o+1}}return 0}function x(e,t){if(null==t)throw new Error("getMaxNumberCacheUpgrades() called without maxLevel arg");if(!f.J5.canAfford(e.calculateCacheUpgradeCost(1)))return 0;let n=1,r=t-1;const a=t-e.cache;if(f.J5.canAfford(e.calculateCacheUpgradeCost(a)))return a;for(;n<=r;){const o=(n+r)/2|0;if(o!=t&&f.J5.canAfford(e.calculateCacheUpgradeCost(o))&&!f.J5.canAfford(e.calculateCacheUpgradeCost(o+1)))return Math.min(a,o);if(f.J5.canAfford(e.calculateCacheUpgradeCost(o))){if(!f.J5.canAfford(e.calculateCacheUpgradeCost(o)))return Math.min(a,o);n=o+1}else r=o-1}return 0}function N(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t),r=e.calculateLevelUpgradeCost(n,f.J5.mults.hacknet_node_level_cost);if(isNaN(r)||r<=0||n<0)return!1;const a=e instanceof s.u;return!(e.level>=(a?i.B5.MaxLevel:i.dN.MaxLevel))&&(e.level+n>(a?i.B5.MaxLevel:i.dN.MaxLevel)?N(e,Math.max(0,(a?i.B5.MaxLevel:i.dN.MaxLevel)-e.level)):!!f.J5.canAfford(r)&&(f.J5.loseMoney(r,"hacknet_expenses"),e.upgradeLevel(n,f.J5.mults.hacknet_node_money),!0))}function M(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t),a=e.calculateRamUpgradeCost(n,f.J5.mults.hacknet_node_ram_cost);if(isNaN(a)||a<=0||n<0)return!1;if(e instanceof s.u&&e.maxRam>=i.B5.MaxRam)return!1;if(e instanceof r.Q&&e.ram>=i.dN.MaxRam)return!1;if(e instanceof s.u){if(e.maxRam*Math.pow(2,n)>i.B5.MaxRam)return M(e,Math.max(0,Math.log2(Math.round(i.B5.MaxRam/e.maxRam))))}else if(e instanceof r.Q&&e.ram*Math.pow(2,n)>i.dN.MaxRam)return M(e,Math.max(0,Math.log2(Math.round(i.dN.MaxRam/e.ram))));return!!f.J5.canAfford(a)&&(f.J5.loseMoney(a,"hacknet_expenses"),e.upgradeRam(n,f.J5.mults.hacknet_node_money),!0)}function A(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t),r=e.calculateCoreUpgradeCost(n,f.J5.mults.hacknet_node_core_cost);if(isNaN(r)||r<=0||n<0)return!1;const a=e instanceof s.u;return!(e.cores>=(a?i.B5.MaxCores:i.dN.MaxCores))&&(e.cores+n>(a?i.B5.MaxCores:i.dN.MaxCores)?A(e,Math.max(0,(a?i.B5.MaxCores:i.dN.MaxCores)-e.cores)):!!f.J5.canAfford(r)&&(f.J5.loseMoney(r,"hacknet_expenses"),e.upgradeCore(n,f.J5.mults.hacknet_node_money),!0))}function T(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t),r=e.calculateCacheUpgradeCost(n);return!(isNaN(r)||r<=0||n<0)&&(e instanceof s.u?e.cache+n>i.B5.MaxCache?T(e,Math.max(0,i.B5.MaxCache-e.cache)):!!f.J5.canAfford(r)&&(f.J5.loseMoney(r,"hacknet_expenses"),e.upgradeCache(n),!0):(console.warn("purchaseCacheUpgrade() called for a non-HacknetNode"),!1))}function L(e){return 0===f.J5.hacknetNodes.length?0:y()?function(e){if(!(f.J5.hashManager instanceof l.F))throw new Error("Player does not have a HashManager (should be in 'hashManager' prop)");let t=0;for(let n=0;n0){const e=c.L["Sell for Money"];if(null===e)throw new Error("Could not get the hash upgrade");if(!e.cost)throw new Error("Upgrade is not properly configured");const t=n/e.cost;t>0&&f.J5.gainMoney(e.value*t,"hacknet")}return t}(e):f.J5.hacknetNodes[0]instanceof r.Q?function(e){let t=0;for(let n=0;n2&&void 0!==arguments[2]?arguments[2]:1;if(!(f.J5.hashManager instanceof l.F))return console.error("Player does not have a HashManager"),!1;if(f.J5.hashManager.upgrade(e,n)){const r=c.L[e];switch(e){case"Sell for Money":f.J5.gainMoney(r.value*n,"hacknet");break;case"Sell for Corporation Funds":{const t=f.J5.corporation;if(null===t)return f.J5.hashManager.refundUpgrade(e,n),!1;t.funds=t.funds+r.value*n;break}case"Reduce Minimum Security":try{const e=(0,h.WT)(t);if(null==e)throw console.error(`Invalid target specified in purchaseHashUpgrade(): ${t}`),new Error(`'${t}' is not a server.`);if(!(e instanceof d.x))throw new Error(`'${t}' is not a normal server.`);e.changeMinimumSecurity(r.value**n,!0)}catch(t){return f.J5.hashManager.refundUpgrade(e,n),!1}break;case"Increase Maximum Money":try{const e=(0,h.WT)(t);if(null==e)throw console.error(`Invalid target specified in purchaseHashUpgrade(): ${t}`),new Error(`'${t}' is not a server.`);if(!(e instanceof d.x))throw new Error(`'${t}' is not a normal server.`);for(let t=0;t{"use strict";n.d(t,{Q:()=>c});var r=n(72938),a=n(73280),o=n(93430),i=n(39463),s=n(94515),l=n(47674);class c{static validationData={cores:(0,l._z)(1,1,o.dN.MaxCores),level:(0,l._z)(1,1,o.dN.MaxLevel),ram:(0,l._z)(1,1,o.dN.MaxRam),onlineTimeSeconds:(0,l._z)(0,0,1/0),totalMoneyGenerated:(0,l._z)(0,0,1/0)};cores=1;level=1;moneyGainRatePerSecond=0;onlineTimeSeconds=0;ram=1;totalMoneyGenerated=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.name=e,this.updateMoneyGainRate(t)}calculateCoreUpgradeCost(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;return(0,a.pq)(this.cores,e,t)}calculateLevelUpgradeCost(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;return(0,a.TJ)(this.level,e,t)}calculateRamUpgradeCost(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;return(0,a.u7)(this.ram,e,t)}process(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:1)*r.t.MilliPerCycle/1e3;let t=this.moneyGainRatePerSecond*e;return isNaN(t)&&(console.error(`Hacknet Node ${this.name} calculated earnings of NaN`),t=0),this.totalMoneyGenerated+=t,this.onlineTimeSeconds+=e,t}upgradeCore(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;this.cores=Math.min(o.dN.MaxCores,Math.round(this.cores+e)),this.updateMoneyGainRate(t)}upgradeLevel(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;this.level=Math.min(o.dN.MaxLevel,Math.round(this.level+e)),this.updateMoneyGainRate(t)}upgradeRam(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;for(let t=0;t{"use strict";n.d(t,{u:()=>u});var r=n(72938),a=n(14750),o=n(93430),i=n(1290),s=n(37931),l=n(94515),c=n(49173);class u extends a.W{cache=1;cores=1;hashCapacity=0;hashRate=0;level=1;onlineTimeSeconds=0;totalHashesGenerated=0;purchasedByPlayer=!0;constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{hostname:"",ip:(0,s.r)()}),this.maxRam=1,this.updateHashCapacity()}calculateCacheUpgradeCost(e){return(0,i._1)(this.cache,e)}calculateCoreUpgradeCost(e,t){return(0,i.pq)(this.cores,e,t)}calculateLevelUpgradeCost(e,t){return(0,i.TJ)(this.level,e,t)}calculateRamUpgradeCost(e,t){return(0,i.u7)(this.maxRam,e,t)}process(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:1)*r.t.MilliPerCycle/1e3;this.onlineTimeSeconds+=e;const t=this.hashRate*e;return this.totalHashesGenerated+=t,t}upgradeCache(e){this.cache=Math.min(o.B5.MaxCache,Math.round(this.cache+e)),this.updateHashCapacity()}upgradeCore(e,t){this.cores=Math.min(o.B5.MaxCores,Math.round(this.cores+e)),this.updateHashRate(t),this.cpuCores=this.cores}upgradeLevel(e,t){this.level=Math.min(o.B5.MaxLevel,Math.round(this.level+e)),this.updateHashRate(t)}upgradeRam(e,t){for(let t=0;t{"use strict";n.d(t,{F:()=>o});var r=n(94043),a=n(94515);class o{capacity=0;hashes=0;upgrades={};constructor(){for(const e of Object.keys(r.L))this.upgrades[e]=0}getMult(e){const t=r.L[e],n=this.upgrades[e];return null==t||null==n?(console.error("Could not find Hash Study upgrade"),1):1+t.value*n/100}getStudyMult(){return this.getMult("Improve Studying")}getTrainingMult(){return this.getMult("Improve Gym Training")}getUpgrade(e){return r.L[e]||(console.error(`Invalid Upgrade Name given to HashManager.getUpgrade(): ${e}`),null)}getUpgradeCost(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=this.getUpgrade(e),r=this.upgrades[e];return null==n||null==r?(console.error(`Invalid Upgrade Name given to HashManager.getUpgradeCost(): ${e}`),1/0):n.getCost(r,t)}prestige(){for(const e of Object.keys(r.L))this.upgrades[e]=0;this.hashes=0,this.updateCapacity(0)}refundUpgrade(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=r.L[e];this.upgrades[e]-=t;const a=this.upgrades[e];if(null==n||null==a||a<0)return void console.error(`Invalid Upgrade Name given to HashManager.upgrade(): ${e}`);const o=n.getCost(a,t);this.hashes+=o}storeHashes(e){this.hashes+=e;let t=this.hashes;return this.hashes=Math.min(this.hashes,this.capacity),t-=this.hashes,t}updateCapacity(e){e<0&&(this.capacity=0),this.capacity=Math.max(e,0)}upgrade(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(null==r.L[e])return console.error(`Invalid Upgrade Name given to HashManager.upgrade(): ${e}`),!1;const n=this.getUpgradeCost(e,t);return!(this.hashes{"use strict";n.d(t,{$:()=>r});class r{costPerLevel=0;desc="";hasTargetServer=!1;hasTargetCompany=!1;name="";value=0;constructor(e){null!=e.cost&&(this.cost=e.cost),null!=e.effectText&&(this.effectText=e.effectText),this.costPerLevel=e.costPerLevel,this.desc=e.desc,this.hasTargetServer=!!e.hasTargetServer&&e.hasTargetServer,this.hasTargetCompany=!!e.hasTargetCompany&&e.hasTargetCompany,this.name=e.name,this.value=e.value}effectText=()=>null;getCost(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if("number"==typeof this.cost)return this.cost*t;const n=.5*t*(t+2*e+1);return this.costPerLevel*n}}},94043:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(61438),a=n(54387);const o={};for(const e of a.g)o[(i=e).name]=new r.$(i);var i},93430:(e,t,n)=>{"use strict";n.d(t,{B5:()=>o,dN:()=>r,wP:()=>a});const r={MoneyGainPerLevel:1.5,BaseCost:1e3,LevelBaseCost:500,RamBaseCost:3e4,CoreBaseCost:5e5,PurchaseNextMult:1.85,UpgradeLevelMult:1.04,UpgradeRamMult:1.28,UpgradeCoreMult:1.48,MaxLevel:200,MaxRam:64,MaxCores:16},a={x1:1,x5:5,x10:10,MAX:"MAX"},o={HashesPerLevel:.001,BaseCost:5e4,RamBaseCost:2e5,CoreBaseCost:1e6,CacheBaseCost:1e7,PurchaseMult:3.2,UpgradeLevelMult:1.1,UpgradeRamMult:1.4,UpgradeCoreMult:1.55,UpgradeCacheMult:1.85,MaxServers:20,MaxLevel:300,MaxRam:8192,MaxCores:128,MaxCache:15}},54387:(e,t,n)=>{"use strict";n.d(t,{g:()=>i});var r=n(67294),a=n(22115),o=n(72360);const i=[{cost:4,costPerLevel:4,desc:"Sell hashes for $1m",name:"Sell for Money",effectText:e=>r.createElement(r.Fragment,null,"Sold for ",r.createElement(o.W,{money:1e6*e})),value:1e6},{costPerLevel:100,desc:"Sell hashes for $1b in Corporation funds",name:"Sell for Corporation Funds",effectText:e=>r.createElement(r.Fragment,null,"Sold for ",r.createElement(o.W,{money:1e9*e})," Corporation funds."),value:1e9},{costPerLevel:50,desc:"Use hashes to decrease the minimum security of a single server by 2%. Note that a server's minimum security cannot go below 1. This effect persists until you install Augmentations (since servers are reset at that time).",hasTargetServer:!0,name:"Reduce Minimum Security",value:.98},{costPerLevel:50,desc:"Use hashes to increase the maximum amount of money on a single server by 2%. Note that a server's maximum money is soft capped above $10t. This effect persists until you install Augmentations (since servers are reset at that time).",hasTargetServer:!0,name:"Increase Maximum Money",value:1.02},{costPerLevel:50,desc:"Use hashes to improve the experience earned when studying at a university by 20%. This effect persists until you install Augmentations",name:"Improve Studying",effectText:e=>r.createElement(r.Fragment,null,"Improves studying by ",20*e,"%"),value:20},{costPerLevel:50,desc:"Use hashes to improve the experience earned when training at the gym by 20%. This effect persists until you install Augmentations",name:"Improve Gym Training",effectText:e=>r.createElement(r.Fragment,null,"Improves training by ",20*e,"%"),value:20},{costPerLevel:200,desc:"Exchange hashes for 1k Scientific Research in all of your Corporation's Industries",name:"Exchange for Corporation Research",effectText:e=>r.createElement(r.Fragment,null,"Acquired a total of ",(0,a.yI)(1e3*e)," Scientific Research in your industries."),value:1e3},{costPerLevel:250,desc:"Exchange hashes for 100 Bladeburner Rank",name:"Exchange for Bladeburner Rank",effectText:e=>r.createElement(r.Fragment,null,"Acquired a total of ",(0,a.yI)(100*e)," Bladeburner rank"),value:100},{costPerLevel:250,desc:"Exchanges hashes for 10 Bladeburner Skill Points",name:"Exchange for Bladeburner SP",effectText:e=>r.createElement(r.Fragment,null,"Acquired a total of ",(0,a.yI)(10*e)," Bladeburner Skill Points"),value:10},{costPerLevel:200,desc:"Generate a random Coding Contract somewhere on the network",name:"Generate Coding Contract",effectText:e=>r.createElement(r.Fragment,null,"Generated ",e," contracts."),value:1},{costPerLevel:200,desc:"Use hashes to increase the favor with a company by 5. This effect is permanent.",hasTargetCompany:!0,name:"Company Favor",value:5}]},73280:(e,t,n)=>{"use strict";n.d(t,{TJ:()=>i,Vi:()=>c,pq:()=>l,u7:()=>s,yf:()=>o});var r=n(97740),a=n(93430);function o(e,t,n,o){return e*a.dN.MoneyGainPerLevel*Math.pow(1.035,t-1)*((n+5)/6)*o*r.dQ.HacknetNodeMoney}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=Math.round(t);if(isNaN(r)||r<1)return 0;if(e>=a.dN.MaxLevel)return 1/0;const o=a.dN.UpgradeLevelMult;let i=0,s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=Math.round(t);if(isNaN(r)||r<1)return 0;if(e>=a.dN.MaxRam)return 1/0;let o=0,i=Math.round(Math.log2(e)),s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=Math.round(t);if(isNaN(r)||r<1)return 0;if(e>=a.dN.MaxCores)return 1/0;const o=a.dN.CoreBaseCost,i=a.dN.UpgradeCoreMult;let s=0,l=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1;return e<=0?0:a.dN.BaseCost*Math.pow(a.dN.PurchaseNextMult,e-1)*t}},1290:(e,t,n)=>{"use strict";n.d(t,{TJ:()=>i,WA:()=>o,_1:()=>c,oP:()=>u,pq:()=>l,u7:()=>s});var r=n(97740),a=n(93430);function o(e,t,n,o,i){return a.B5.HashesPerLevel*e*Math.pow(1.07,Math.log2(n))*(1+(o-1)/5)*(1-t/n)*i*r.dQ.HacknetNodeMoney}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=Math.round(t);if(isNaN(r)||r<1)return 0;if(e>=a.B5.MaxLevel)return 1/0;const o=a.B5.UpgradeLevelMult;let i=0,s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=Math.round(t);if(isNaN(r)||r<1)return 0;if(e>=a.B5.MaxRam)return 1/0;let o=0,i=Math.round(Math.log2(e)),s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=Math.round(t);if(isNaN(r)||r<1)return 0;if(e>=a.B5.MaxCores)return 1/0;const o=a.B5.UpgradeCoreMult;let i=0,s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t);if(isNaN(n)||n<1)return 0;if(e>=a.B5.MaxCache)return 1/0;const r=a.B5.UpgradeCacheMult;let o=0,i=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1;return e-1>=a.B5.MaxServers?1/0:a.B5.BaseCost*Math.pow(a.B5.PurchaseMult,e-1)*t}},73782:(e,t,n)=>{"use strict";n.d(t,{W:()=>o});var r=n(67294),a=n(81138);function o(e){return r.createElement(r.Fragment,null,r.createElement(a.Z,null,"The Hacknet is a global, decentralized network of machines. It is used by hackers all around the world to anonymously share computing power and perform distributed cyberattacks without the fear of being traced."),e.hasHacknetServers?r.createElement(r.Fragment,null,r.createElement(a.Z,null,"Here, you can purchase a Hacknet Server, an upgraded version of the Hacknet Node. Hacknet Servers will perform computations and operations on the network, earning you hashes. Hashes can be spent on a variety of different upgrades."),r.createElement(a.Z,null,"Hacknet Servers can also be used as servers to run scripts. However, running scripts on a server will reduce its hash rate (hashes generated per second). A Hacknet Server's hash rate will be reduced by the percentage of RAM that is being used by that Server to run scripts.")):r.createElement(r.Fragment,null,r.createElement(a.Z,null,"Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its resources to the Hacknet network. This allows you to take a small percentage of profits from hacks performed on the network. Essentially, you are renting out your Node's computing power."),r.createElement(a.Z,null,"Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded in order to increase its computing power and thereby increase the profit you earn from it.")))}},68193:(e,t,n)=>{"use strict";n.d(t,{Y:()=>k});var r=n(67294),a=n(93430),o=n(29538),i=n(49173),s=n(72360),l=n(85882),c=n(81138),u=n(31990),m=n(28881),f=n(56798),h=n(61011),d=n(46948),p=n(47542),g=n(49557),y=n(17575),b=n(22115),v=n(73280);function k(e){const t=e.node,n=e.purchaseMultiplier,k=e.rerender;let w,E,S;if(t.level>=a.dN.MaxLevel)w=r.createElement(f.Z,{disabled:!0},"MAX LEVEL");else{let e=0;if("MAX"===n)e=(0,o.En)(t,a.dN.MaxLevel);else{const r=a.dN.MaxLevel-t.level;e=Math.min(r,n)}const u=(0,v.yf)(t.level+e,t.ram,t.cores,i.J5.mults.hacknet_node_money)-t.moneyGainRatePerSecond,m=t.calculateLevelUpgradeCost(e,i.J5.mults.hacknet_node_level_cost);w=r.createElement(y.Z,{title:r.createElement(c.Z,null,"+",r.createElement(l.G,{money:u}))},r.createElement(f.Z,{onClick:function(){const e="MAX"===n?(0,o.En)(t,a.dN.MaxLevel):n;(0,o.Tw)(t,e),k()}},"+",e," - ",r.createElement(s.W,{money:m,forPurchase:!0})))}if(t.ram>=a.dN.MaxRam)E=r.createElement(f.Z,{disabled:!0},"MAX RAM");else{let e=0;if("MAX"===n)e=(0,o.V2)(t,a.dN.MaxRam);else{const r=Math.round(Math.log2(a.dN.MaxRam/t.ram));e=Math.min(r,n)}const u=(0,v.yf)(t.level,t.ram*Math.pow(2,e),t.cores,i.J5.mults.hacknet_node_money)-t.moneyGainRatePerSecond,m=t.calculateRamUpgradeCost(e,i.J5.mults.hacknet_node_ram_cost);E=r.createElement(y.Z,{title:r.createElement(c.Z,null,"+",r.createElement(l.G,{money:u}))},r.createElement(f.Z,{onClick:function(){const e="MAX"===n?(0,o.V2)(t,a.dN.MaxRam):n;(0,o.Fy)(t,e),k()}},"+",e," - ",r.createElement(s.W,{money:m,forPurchase:!0})))}if(t.cores>=a.dN.MaxCores)S=r.createElement(f.Z,{disabled:!0},"MAX CORES");else{let e=0;if("MAX"===n)e=(0,o.SL)(t,a.dN.MaxCores);else{const r=a.dN.MaxCores-t.cores;e=Math.min(r,n)}const u=(0,v.yf)(t.level,t.ram,t.cores+e,i.J5.mults.hacknet_node_money)-t.moneyGainRatePerSecond,m=t.calculateCoreUpgradeCost(e,i.J5.mults.hacknet_node_core_cost);S=r.createElement(y.Z,{title:r.createElement(c.Z,null,"+",r.createElement(l.G,{money:u}))},r.createElement(f.Z,{onClick:function(){const e="MAX"===n?(0,o.SL)(t,a.dN.MaxCores):n;(0,o.UL)(t,e),k()}},"+",e," - ",r.createElement(s.W,{money:m,forPurchase:!0})))}return r.createElement(u.ZP,{item:!0,component:m.Z,p:1},r.createElement(p.Z,{size:"small"},r.createElement(d.Z,null,r.createElement(g.Z,null,r.createElement(h.p,{colSpan:3},r.createElement(c.Z,null,t.name))),r.createElement(g.Z,null,r.createElement(h.p,null,r.createElement(c.Z,null,"Production:")),r.createElement(h.p,{colSpan:2},r.createElement(c.Z,null,r.createElement(s.W,{money:t.totalMoneyGenerated})," (",r.createElement(l.G,{money:t.moneyGainRatePerSecond}),")"))),r.createElement(g.Z,null,r.createElement(h.p,null,r.createElement(c.Z,null,"Level:")),r.createElement(h.p,null,r.createElement(c.Z,null,t.level)),r.createElement(h.p,null,w)),r.createElement(g.Z,null,r.createElement(h.p,null,r.createElement(c.Z,null,"RAM:")),r.createElement(h.p,null,r.createElement(c.Z,null,(0,b.$1)(t.ram))),r.createElement(h.p,null,E)),r.createElement(g.Z,null,r.createElement(h.p,null,r.createElement(c.Z,null,"Cores:")),r.createElement(h.p,null,r.createElement(c.Z,null,t.cores)),r.createElement(h.p,null,S)))))}},23187:(e,t,n)=>{"use strict";n.d(t,{W:()=>E});var r=n(67294),a=n(73782),o=n(68193),i=n(82075),s=n(55782),l=n(3853),c=n(41965),u=n(49025),m=n(85715),f=n(84758),h=n(93430),d=n(29538),p=n(49173),g=n(97467),y=n(81138),b=n(31990),v=n(56798),k=n(30120),w=n(88775);function E(){const[e,t]=(0,r.useState)(!1),n=(0,w.S)(200),[E,S]=(0,r.useState)(h.wP.x1);let C,x=0;for(let e=0;eS(h.wP.x1),()=>S(h.wP.x5),()=>S(h.wP.x10),()=>S(h.wP.MAX)],M=p.J5.hacknetNodes.map((e=>{if((0,d.kw)()){if(e instanceof s.Q)throw new Error("node was hacknet node");const t=(0,g.WT)(e);if(null==t)throw new Error(`Could not find Hacknet Server object in AllServers map for IP: ${e}`);if(!(t instanceof l.u))throw new Error("node was not hacknet server");return r.createElement(i.H,{key:t.hostname,node:t,purchaseMultiplier:E,rerender:n})}if("string"==typeof e)throw new Error("node was ip string");return r.createElement(o.Y,{key:e.name,node:e,purchaseMultiplier:E,rerender:n})}));return r.createElement(r.Fragment,null,r.createElement(y.Z,{variant:"h4"},"Hacknet ",(0,d.kw)()?"Servers":"Nodes"),r.createElement(a.W,{hasHacknetServers:(0,d.kw)()}),r.createElement(f.i,{cost:C,multiplier:E,onClick:function(){(0,d.N0)(),n()}}),r.createElement("br",null),r.createElement(b.ZP,{container:!0,spacing:2},r.createElement(b.ZP,{item:!0,xs:6},r.createElement(m.r,{totalProduction:x})),r.createElement(b.ZP,{item:!0,xs:6},r.createElement(u.C,{onClicks:N,purchaseMultiplier:E}))),(0,d.kw)()&&r.createElement(v.Z,{onClick:()=>t(!0)},"Spend Hashes on Upgrades"),r.createElement(k.Z,{sx:{display:"grid",width:"fit-content",gridTemplateColumns:"repeat(3, 1fr)"}},M),r.createElement(c._,{open:e,onClose:()=>t(!1)}))}},82075:(e,t,n)=>{"use strict";n.d(t,{H:()=>w});var r=n(67294),a=n(93430),o=n(29538),i=n(49173),s=n(72360),l=n(50411),c=n(79198),u=n(81138),m=n(31990),f=n(28881),h=n(56798),d=n(61011),p=n(46948),g=n(47542),y=n(49557),b=n(22115),v=n(1290),k=n(17575);function w(e){const t=e.node,n=e.purchaseMultiplier,w=e.rerender;let E,S,C,x;if(t.level>=a.B5.MaxLevel)E=r.createElement(h.Z,{disabled:!0},"MAX LEVEL");else{let e=0;if("MAX"===n)e=(0,o.En)(t,a.B5.MaxLevel);else{const r=a.B5.MaxLevel-t.level;e=Math.min(r,n)}const l=(0,v.WA)(t.level+e,0,t.maxRam,t.cores,i.J5.mults.hacknet_node_money)-(0,v.WA)(t.level,0,t.maxRam,t.cores,i.J5.mults.hacknet_node_money),m=l*(t.maxRam-t.ramUsed)/t.maxRam,f=t.calculateLevelUpgradeCost(e,i.J5.mults.hacknet_node_level_cost);E=r.createElement(k.Z,{title:r.createElement(u.Z,null,"+",r.createElement(c.a,{hashes:m})," (effective increase, taking current RAM usage into account)",r.createElement("br",null),r.createElement("span",{style:{opacity:.5}},"+",r.createElement(c.a,{hashes:l}))," ","(base increase, attained when no script is running)")},r.createElement(h.Z,{onClick:function(){let e=n;"MAX"===n&&(e=(0,o.En)(t,a.B5.MaxLevel)),(0,o.Tw)(t,e),w()}},"+",e," - ",r.createElement(s.W,{money:f,forPurchase:!0})))}if(t.maxRam>=a.B5.MaxRam)S=r.createElement(h.Z,{disabled:!0},"MAX RAM");else{let e=0;if("MAX"===n)e=(0,o.V2)(t,a.B5.MaxRam);else{const r=Math.round(Math.log2(a.B5.MaxRam/t.maxRam));e=Math.min(r,n)}const l=(0,v.WA)(t.level,0,t.maxRam*Math.pow(2,e),t.cores,i.J5.mults.hacknet_node_money)-(0,v.WA)(t.level,0,t.maxRam,t.cores,i.J5.mults.hacknet_node_money),m=(0,v.WA)(t.level,t.ramUsed,t.maxRam*Math.pow(2,e),t.cores,i.J5.mults.hacknet_node_money)-(0,v.WA)(t.level,t.ramUsed,t.maxRam,t.cores,i.J5.mults.hacknet_node_money),f=t.calculateRamUpgradeCost(e,i.J5.mults.hacknet_node_ram_cost);S=r.createElement(k.Z,{title:r.createElement(u.Z,null,"+",r.createElement(c.a,{hashes:m})," (effective increase, taking current RAM usage into account)",r.createElement("br",null),r.createElement("span",{style:{opacity:.5}},"+",r.createElement(c.a,{hashes:l}))," ","(base increase, attained when no script is running)")},r.createElement(h.Z,{onClick:function(){let e=n;"MAX"===n&&(e=(0,o.V2)(t,a.B5.MaxRam)),(0,o.Fy)(t,e),w()}},"+",e," - ",r.createElement(s.W,{money:f,forPurchase:!0})))}if(t.cores>=a.B5.MaxCores)C=r.createElement(h.Z,{disabled:!0},"MAX CORES");else{let e=0;if("MAX"===n)e=(0,o.SL)(t,a.B5.MaxCores);else{const r=a.B5.MaxCores-t.cores;e=Math.min(r,n)}const l=(0,v.WA)(t.level,0,t.maxRam,t.cores+e,i.J5.mults.hacknet_node_money)-(0,v.WA)(t.level,0,t.maxRam,t.cores,i.J5.mults.hacknet_node_money),m=l*(t.maxRam-t.ramUsed)/t.maxRam,f=t.calculateCoreUpgradeCost(e,i.J5.mults.hacknet_node_core_cost);C=r.createElement(k.Z,{title:r.createElement(u.Z,null,"+",r.createElement(c.a,{hashes:m})," (effective increase, taking current RAM usage into account)",r.createElement("br",null),r.createElement("span",{style:{opacity:.5}},"+",r.createElement(c.a,{hashes:l}))," ","(base increase, attained when no script is running)")},r.createElement(h.Z,{onClick:function(){let e=n;"MAX"===n&&(e=(0,o.SL)(t,a.B5.MaxCores)),(0,o.UL)(t,e),w()}},"+",e," - ",r.createElement(s.W,{money:f,forPurchase:!0})))}if(t.cache>=a.B5.MaxCache)x=r.createElement(h.Z,{disabled:!0},"MAX CACHE");else{let e=0;if("MAX"===n)e=(0,o.sq)(t,a.B5.MaxCache);else{const r=a.B5.MaxCache-t.cache;e=Math.min(r,n)}const i=32*Math.pow(2,t.cache+e)-t.hashCapacity,c=t.calculateCacheUpgradeCost(e);x=r.createElement(k.Z,{title:r.createElement(u.Z,null,"+",r.createElement(l.S,{hashes:i})," hashes")},r.createElement(h.Z,{onClick:function(){let e=n;"MAX"===n&&(e=(0,o.sq)(t,a.B5.MaxCache)),(0,o.Px)(t,e),w(),(0,o.TN)()}},"+",e," - ",r.createElement(s.W,{money:c,forPurchase:!0})))}return r.createElement(m.ZP,{item:!0,component:f.Z,p:1},r.createElement(g.Z,{size:"small"},r.createElement(p.Z,null,r.createElement(y.Z,null,r.createElement(d.p,null,r.createElement(u.Z,null,t.hostname))),r.createElement(y.Z,null,r.createElement(d.p,null,r.createElement(u.Z,null,"Production:")),r.createElement(d.p,{colSpan:2},r.createElement(k.Z,{title:r.createElement(u.Z,null,r.createElement(l.S,{hashes:t.totalHashesGenerated})," hashes produced by this server since last augment installation.",r.createElement("br",null),r.createElement(c.a,{hashes:t.hashRate})," current production rate.",r.createElement("br",null),r.createElement("span",{style:{opacity:.5}},r.createElement(c.a,{hashes:t.hashRate*t.maxRam/(t.maxRam-t.ramUsed)}))," ","max production rate. (achieved when 100% RAM is allocated to it)",r.createElement("br",null),(0,b.$1)(t.ramUsed)," / ",(0,b.$1)(t.maxRam)," (",Math.round(100*t.ramUsed/t.maxRam),"%) RAM allocated to script.",r.createElement("br",null),(0,b.$1)(t.maxRam-t.ramUsed)," / ",(0,b.$1)(t.maxRam)," (",Math.round(100*(t.maxRam-t.ramUsed)/t.maxRam),"%) RAM allocated to hash production.")},r.createElement(u.Z,null,r.createElement(l.S,{hashes:t.totalHashesGenerated})," (",r.createElement(c.a,{hashes:t.hashRate}),")")))),r.createElement(y.Z,null,r.createElement(d.p,null,r.createElement(u.Z,null,"Hash Capacity:")),r.createElement(d.p,{colSpan:2},r.createElement(u.Z,null,r.createElement(l.S,{hashes:t.hashCapacity})))),r.createElement(y.Z,null,r.createElement(d.p,null,r.createElement(u.Z,null,"Level:")),r.createElement(d.p,null,r.createElement(u.Z,null,t.level)),r.createElement(d.p,null,E)),r.createElement(y.Z,null,r.createElement(d.p,null,r.createElement(u.Z,null,"RAM:")),r.createElement(d.p,null,r.createElement(u.Z,null,(0,b.$1)(t.maxRam))),r.createElement(d.p,null,S)),r.createElement(y.Z,null,r.createElement(d.p,null,r.createElement(u.Z,null,"Cores:")),r.createElement(d.p,null,r.createElement(u.Z,null,t.cores)),r.createElement(d.p,null,C)),r.createElement(y.Z,null,r.createElement(d.p,null,r.createElement(u.Z,null,"Cache Level:")),r.createElement(d.p,null,r.createElement(u.Z,null,t.cache)),r.createElement(d.p,null,x)))))}},45259:(e,t,n)=>{"use strict";n.d(t,{q:()=>y});var r=n(67294),a=n(29538),o=n(60724),i=n(38217),s=n(39463),l=n(45529),c=n(50411),u=n(81138),m=n(28881),f=n(56798),h=n(33244),d=n(50862);const p={},g={};function y(e){const[t,n]=(0,r.useState)(p[e.upg.name]?p[e.upg.name]:h.FactionName.ECorp.toLowerCase()),[y,b]=(0,r.useState)(g[e.upg.name]??h.CompanyName.NoodleBar);function v(){e.hashManager.hashes>=e.hashManager.getUpgradeCost(e.upg.name)&&((0,a.fE)(e.upg.name,"Company Favor"===e.upg.name?y:t)||(0,s.X)("Failed to purchase upgrade. This may be because you do not have enough hashes, or because you do not have access to the feature upgrade affects."),e.rerender())}const k=e.hashManager,w=e.upg,E=k.getUpgradeCost(w.name),S=k.upgrades[w.name],C=w.effectText(S),x=k.hashes>=E;return r.createElement(m.Z,{sx:{p:1}},r.createElement(u.Z,null,r.createElement(l.v,{value:w.name})),r.createElement(u.Z,null,"Cost: ",r.createElement(c.S,{hashes:E}),", Bought: ",S," times"),r.createElement(u.Z,null,w.desc),!w.hasTargetServer&&!w.hasTargetCompany&&r.createElement(f.Z,{onClick:v,disabled:!x},"Buy"),w.hasTargetServer&&r.createElement(o.k,{purchase:v,canPurchase:x,value:t,serverType:o.D.Foreign,onChange:function(t){n(t.target.value),p[e.upg.name]=t.target.value}}),w.hasTargetCompany&&r.createElement(i.e,{purchase:v,canPurchase:x,value:y,onChange:function(t){(0,d.R)("CompanyName",t.target.value)&&(b(t.target.value),g[e.upg.name]=t.target.value)}}),S>0&&C&&r.createElement(u.Z,null,C))}},41965:(e,t,n)=>{"use strict";n.d(t,{_:()=>m});var r=n(67294),a=n(94043),o=n(50411),i=n(45259),s=n(48672),l=n(49173),c=n(81138),u=n(88775);function m(e){const t=(0,u.S)(200),n=l.J5.hashManager;if(!n)throw new Error("Player does not have a HashManager)");return r.createElement(s.u,{open:e.open,onClose:e.onClose},r.createElement(r.Fragment,null,r.createElement(c.Z,null,"Spend your hashes on a variety of different upgrades"),r.createElement(c.Z,null,"Hashes: ",r.createElement(o.S,{hashes:l.J5.hashManager.hashes})),Object.keys(a.L).map((e=>{const o=a.L[e];return r.createElement(i.q,{upg:o,hashManager:n,key:o.name,rerender:t})}))))}},49025:(e,t,n)=>{"use strict";n.d(t,{C:()=>l});var r=n(67294),a=n(93430),o=n(56798);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{"use strict";n.d(t,{r:()=>m});var r=n(67294),a=n(29538),o=n(49173),i=n(72360),s=n(85882),l=n(79198),c=n(50411),u=n(81138);function m(e){const t=(0,a.kw)();let n;return n=t?r.createElement(l.a,{hashes:e.totalProduction}):r.createElement(s.G,{money:e.totalProduction}),r.createElement(r.Fragment,null,r.createElement(u.Z,null,"Money:",r.createElement(i.W,{money:o.J5.money})),t&&r.createElement(r.Fragment,null,r.createElement(u.Z,null,"Hashes: ",r.createElement(c.S,{hashes:o.J5.hashManager.hashes})," / ",r.createElement(c.S,{hashes:o.J5.hashManager.capacity}))),r.createElement(u.Z,null,"Total Hacknet ",t?"Server":"Node"," Production: ",n))}},84758:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var r=n(67294),a=n(29538),o=n(49173),i=n(72360),s=n(56798);function l(e){const t=e.cost;let n;return n=(0,a.kw)()?(0,a.Dw)()?r.createElement(r.Fragment,null,"Hacknet Server limit reached"):r.createElement(r.Fragment,null,"Purchase Hacknet Server - ",r.createElement(i.W,{money:t,forPurchase:!0})):r.createElement(r.Fragment,null,"Purchase Hacknet Node - ",r.createElement(i.W,{money:t,forPurchase:!0})),r.createElement(s.Z,{disabled:!o.J5.canAfford(t),onClick:e.onClick},n)}},2228:(e,t,n)=>{"use strict";n.d(t,{B:()=>o,U:()=>i});var r=n(49173),a=n(72938);function o(){return r.J5.money<0?0:Math.min(.1*r.J5.money,(r.J5.hp.max-r.J5.hp.current)*a.t.HospitalCostPerHp)}function i(e){const t=r.J5.hp.current;r.J5.hp.current-=e;const n=o();return r.J5.hp.current=t,n}},80366:(e,t,n)=>{"use strict";n.d(t,{o:()=>i,y:()=>s});var r=n(49173),a=n(22738);function o(e,t){const n=t-Math.pow(e,.9)/250-r.J5.skills.intelligence/1600;return n<0?0:n>3?3:n}function i(e){return o(r.J5.skills.strength+r.J5.skills.defense+r.J5.skills.dexterity+r.J5.skills.agility+r.J5.skills.charisma,e)}function s(e){const t=9e3;return o((0,a.gX)(r.J5.mults.strength_exp*t,r.J5.mults.strength)+(0,a.gX)(r.J5.mults.defense_exp*t,r.J5.mults.defense)+(0,a.gX)(r.J5.mults.agility_exp*t,r.J5.mults.agility)+(0,a.gX)(r.J5.mults.dexterity_exp*t,r.J5.mults.dexterity)+(0,a.gX)(r.J5.mults.charisma_exp*t,r.J5.mults.charisma),e)}},20567:(e,t,n)=>{"use strict";n.d(t,{Ek:()=>l,kS:()=>s,tB:()=>c});var r=n(49173),a=n(97740),o=n(90356),i=n(33244);function s(e,t,n){const o=t*Math.pow(1.01,t);return Math.pow(e+1,2)*Math.pow(n,3)*3e3*o*(r.J5.hasAugmentation(i.AugmentationName.WKSharmonizer,!0)?1.5:1)*a.dQ.InfiltrationMoney}function l(e,t,n){const o=t*Math.pow(1.01,t);return Math.pow(e+1,1.1)*Math.pow(n,1.2)*30*o*(r.J5.hasAugmentation(i.AugmentationName.WKSharmonizer,!0)?1.5:1)*a.dQ.InfiltrationRep}function c(e,t){return t/o.b.reduce(((e,t)=>{var n;const r=(null===(n=t.infiltrationData)||void 0===n?void 0:n.startingSecurityLevel)||0;return e>r?e:r}),0)*5e3*(r.J5.hasAugmentation(i.AugmentationName.WKSharmonizer,!0)?2:1)*(1+e.favor/100)}},76915:(e,t,n)=>{"use strict";n.d(t,{q:()=>p});var r=n(28881),a=n(81138),o=n(67294),i=n(33244),s=n(49173),l=n(81055),c=n(44830),u=n(49179),m=n(78947),f=n(46083),h=n(68236);const d={Trivial:{timer:16e3,min:3,max:4},Normal:{timer:12500,min:2,max:3},Hard:{timer:15e3,min:3,max:4},Impossible:{timer:8e3,min:4,max:4}};function p(e){const t={timer:0,min:0,max:0};(0,m.s)(d,e.difficulty,t);const n=t.timer,[p]=(0,o.useState)(function(e){const t=(0,c.MX)(e.min,e.max);let n="";for(let e=0;e0&&(n+=" "),n+=g[Math.floor(Math.random()*g.length)];return n}(t)),[y,b]=(0,o.useState)(""),v=s.J5.hasAugmentation(i.AugmentationName.ChaosOfDionysus,!0);return o.createElement(o.Fragment,null,o.createElement(f.r,{millis:n,onExpire:e.onFailure}),o.createElement(r.Z,{sx:{display:"grid",justifyItems:"center",pb:1}},o.createElement(a.Z,{variant:"h4"},"Type it",v?"":" backward"),o.createElement(h.U,{onKeyDown:function(t){if(t.preventDefault(),function(e){return e.key===l.F.BACKSPACE||e.shiftKey&&"Shift"===e.key||e.ctrlKey||e.altKey}(t))return;const n=y+t.key.toUpperCase();p.startsWith(n)?p===n?e.onSuccess():b(n):e.onFailure()},onFailure:e.onFailure}),o.createElement(a.Z,{style:{transform:v?"none":"scaleX(-1)"}},p),o.createElement(a.Z,null,y,o.createElement(u._,null))))}const g=["ALGORITHM","ANALOG","APP","APPLICATION","ARRAY","BACKUP","BANDWIDTH","BINARY","BIT","BITE","BITMAP","BLOG","BLOGGER","BOOKMARK","BOOT","BROADBAND","BROWSER","BUFFER","BUG","BUS","BYTE","CACHE","CAPS LOCK","CAPTCHA","CD","CD-ROM","CLIENT","CLIPBOARD","CLOUD","COMPUTING","COMMAND","COMPILE","COMPRESS","COMPUTER","CONFIGURE","COOKIE","COPY","CPU","CYBERCRIME","CYBERSPACE","DASHBOARD","DATA","MINING","DATABASE","DEBUG","DECOMPRESS","DELETE","DESKTOP","DEVELOPMENT","DIGITAL","DISK","DNS","DOCUMENT","DOMAIN","DOMAIN NAME","DOT","DOT MATRIX","DOWNLOAD","DRAG","DVD","DYNAMIC","EMAIL","EMOTICON","ENCRYPT","ENCRYPTION","ENTER","EXABYTE","FAQ","FILE","FINDER","FIREWALL","FIRMWARE","FLAMING","FLASH","FLASH DRIVE","FLOPPY DISK","FLOWCHART","FOLDER","FONT","FORMAT","FRAME","FREEWARE","GIGABYTE","GRAPHICS","HACK","HACKER","HARDWARE","HOME PAGE","HOST","HTML","HYPERLINK","HYPERTEXT","ICON","INBOX","INTEGER","INTERFACE","INTERNET","IP ADDRESS","ITERATION","JAVA","JOYSTICK","JUNKMAIL","KERNEL","KEY","KEYBOARD","KEYWORD","LAPTOP","LASER PRINTER","LINK","LINUX","LOG OUT","LOGIC","LOGIN","LURKING","MACINTOSH","MACRO","MAINFRAME","MALWARE","MEDIA","MEMORY","MIRROR","MODEM","MONITOR","MOTHERBOARD","MOUSE","MULTIMEDIA","NET","NETWORK","NODE","NOTEBOOK","COMPUTER","OFFLINE","ONLINE","OPENSOURCE","OPERATING","SYSTEM","OPTION","OUTPUT","PAGE","PASSWORD","PASTE","PATH","PHISHING","PIRACY","PIRATE","PLATFORM","PLUGIN","PODCAST","POPUP","PORTAL","PRINT","PRINTER","PRIVACY","PROCESS","PROGRAM","PROGRAMMER","PROTOCOL","QUEUE","QWERTY","RAM","REALTIME","REBOOT","RESOLUTION","RESTORE","ROM","ROOT","ROUTER","RUNTIME","SAVE","SCAN","SCANNER","SCREEN","SCREENSHOT","SCRIPT","SCROLL","SCROLL","SEARCH","ENGINE","SECURITY","SERVER","SHAREWARE","SHELL","SHIFT","SHIFT KEY","SNAPSHOT","SOCIAL NETWORKING","SOFTWARE","SPAM","SPAMMER","SPREADSHEET","SPYWARE","STATUS","STORAGE","SUPERCOMPUTER","SURF","SYNTAX","TABLE","TAG","TERMINAL","TEMPLATE","TERABYTE","TEXT EDITOR","THREAD","TOOLBAR","TRASH","TROJAN HORSE","TYPEFACE","UNDO","UNIX","UPLOAD","URL","USER","USER INTERFACE","USERNAME","UTILITY","VERSION","VIRTUAL","VIRTUAL MEMORY","VIRUS","WEB","WEBMASTER","WEBSITE","WIDGET","WIKI","WINDOW","WINDOWS","WIRELESS","PROCESSOR","WORKSTATION","WEB","WORM","WWW","XML","ZIP"]},49179:(e,t,n)=>{"use strict";n.d(t,{_:()=>a});var r=n(67294);function a(){const[e,t]=(0,r.useState)(!0);return(0,r.useEffect)((()=>{const e=setInterval((()=>t((e=>!e))),1e3);return()=>clearInterval(e)})),r.createElement(r.Fragment,null,e?"|":r.createElement(r.Fragment,null," "))}},58622:(e,t,n)=>{"use strict";n.d(t,{C:()=>p});var r=n(28881),a=n(81138),o=n(67294),i=n(33244),s=n(49173),l=n(81055),c=n(44830),u=n(49179),m=n(78947),f=n(46083),h=n(68236);const d={Trivial:{timer:8e3,min:2,max:3},Normal:{timer:6e3,min:4,max:5},Hard:{timer:4e3,min:4,max:6},Impossible:{timer:2500,min:7,max:7}};function p(e){const t={timer:0,min:0,max:0};(0,m.s)(d,e.difficulty,t);const n=t.timer,[p,g]=(0,o.useState)(""),[y]=(0,o.useState)(function(e){let t="";const n=[l.F.OPEN_BRACKET,l.F.LESS_THAN,l.F.OPEN_PARENTHESIS,l.F.OPEN_BRACE];s.J5.hasAugmentation(i.AugmentationName.WisdomOfAthena,!0)&&n.splice(0,1);const r=(0,c.MX)(e.min,e.max);for(let e=0;e{"use strict";n.d(t,{u:()=>p});var r=n(28881),a=n(81138),o=n(67294),i=n(33244),s=n(49173),l=n(51087),c=n(81055),u=n(44830),m=n(78947),f=n(46083),h=n(68236);const d={Trivial:{timer:12e3,size:6},Normal:{timer:9e3,size:8},Hard:{timer:5e3,size:9},Impossible:{timer:2500,size:12}};function p(e){const t={timer:0,size:0};(0,m.s)(d,e.difficulty,t);const n=t.timer,[p]=(0,o.useState)(function(e){const t=[];t.push(g[Math.floor(Math.random()*g.length)]);for(let n=0;n0;t--){const n=Math.floor(Math.random()*(t+1)),r=e[t];e[t]=e[n],e[n]=r}}(t),t}(t)),[b,v]=(0,o.useState)(0),[k,w]=(0,o.useState)(0),E=p[k];(0,o.useEffect)((()=>{v(p.findIndex((e=>g.includes(e))))}),[p]);const S=l.Z.theme.primary,C=l.Z.theme.disabled;let x=S,N=S,M=S;if(s.J5.hasAugmentation(i.AugmentationName.BeautyOfAphrodite,!0)){const e=k+1>=p.length?0:k+1;let t=b-e;e>b&&(t=p.length-1-e+b);const n=k-1<0?p.length-1:k-1;let r=n-b;n=r&&!a?N:C,M=a?S:C}return o.createElement(o.Fragment,null,o.createElement(f.r,{millis:n,onExpire:e.onFailure}),o.createElement(r.Z,{sx:{display:"grid",justifyItems:"center"}},o.createElement(a.Z,{variant:"h4"},"Say something nice about the guard"),o.createElement(h.U,{onKeyDown:function(t){t.preventDefault();const n=t.key;if(n===c.F.SPACE)return void(g.includes(E)?e.onSuccess():e.onFailure());let r=k;for([c.F.UP_ARROW,c.F.W,c.F.RIGHT_ARROW,c.F.D].map((e=>e)).includes(n)&&r++,[c.F.DOWN_ARROW,c.F.S,c.F.LEFT_ARROW,c.F.A].map((e=>e)).includes(n)&&r--;r<0;)r+=p.length;for(;r>p.length-1;)r-=p.length;w(r)},onFailure:e.onFailure}),o.createElement(a.Z,{variant:"h5",color:x},u.uy),o.createElement(a.Z,{variant:"h5",color:M},E),o.createElement(a.Z,{variant:"h5",color:N},u.FH)))}const g=["affectionate","agreeable","bright","charming","creative","determined","energetic","friendly","funny","generous","polite","likable","diplomatic","helpful","giving","kind","hardworking","patient","dynamic","loyal","straightforward"],y=["aggressive","aloof","arrogant","big-headed","boastful","boring","bossy","careless","clingy","couch potato","cruel","cynical","grumpy","hot air","know it all","obnoxious","pain in the neck","picky","tactless","thoughtless","cringe"]},96200:(e,t,n)=>{"use strict";n.d(t,{y:()=>h});var r=n(28881),a=n(81138),o=n(67294),i=n(33244),s=n(49173),l=n(44830),c=n(78947),u=n(46083),m=n(68236);const f={Trivial:{timer:13e3,min:6,max:8},Normal:{timer:7e3,min:7,max:8},Hard:{timer:5e3,min:8,max:9},Impossible:{timer:3e3,min:9,max:10}};function h(e){const t={timer:0,min:0,max:0};(0,c.s)(f,e.difficulty,t);const n=t.timer,[h]=(0,o.useState)(function(e){const t=[l.xW,l.g3,l.uy,l.FH];let n="";for(let r=0;r<(0,l.MX)(e.min,e.max);r++){let e=t[Math.floor(4*Math.random())];for(;e===n[n.length-1];)e=t[Math.floor(4*Math.random())];n+=e}return n}(t)),[d,p]=(0,o.useState)(0),g=s.J5.hasAugmentation(i.AugmentationName.TrickeryOfHermes,!0);return o.createElement(o.Fragment,null,o.createElement(u.r,{millis:n,onExpire:e.onFailure}),o.createElement(r.Z,{sx:{display:"grid",justifyItems:"center"}},o.createElement(a.Z,{variant:"h4"},"Enter the Code!"),o.createElement(a.Z,{variant:"h4"},h[d]),o.createElement(m.U,{onKeyDown:function(t){t.preventDefault(),h[d]===(0,l._R)(t)||g&&h[d]===(0,l.h9)(t)?(p(d+1),d+1>=h.length&&e.onSuccess()):e.onFailure()},onFailure:e.onFailure})))}},50087:(e,t,n)=>{"use strict";n.d(t,{I:()=>i});var r=n(28881),a=n(81138),o=n(67294);function i(e){const[t,n]=(0,o.useState)(3);return(0,o.useEffect)((()=>{0!==t?setTimeout((()=>n(t-1)),300):e.onFinish()})),o.createElement(r.Z,{sx:{p:1,textAlign:"center"}},o.createElement(a.Z,{variant:"h4"},"Get Ready!"),o.createElement(a.Z,{variant:"h4"},t))}},35332:(e,t,n)=>{"use strict";n.d(t,{Y:()=>g});var r=n(28881),a=n(81138),o=n(30120),i=n(67294),s=n(33244),l=n(49173),c=n(51087),u=n(81055),m=n(44830),f=n(78947),h=n(46083),d=n(68236);const p={Trivial:{timer:12500,width:3,height:3,symbols:6},Normal:{timer:15e3,width:4,height:4,symbols:7},Hard:{timer:12500,width:5,height:5,symbols:8},Impossible:{timer:1e4,width:6,height:6,symbols:9}};function g(e){const t={timer:0,width:0,height:0,symbols:0};(0,f.s)(p,e.difficulty,t);const n=t.timer,[g]=(0,i.useState)(function(e){const t=[];for(let n=0;ne.map(((e,n)=>{const r=e===b[v],a=S&&!r?c.Z.theme.disabled:c.Z.theme.primary;n!==w[0]||t!==w[1]?C.push({color:a,content:e}):C.push({color:a,content:e,selected:!0})})))),i.createElement(i.Fragment,null,i.createElement(h.r,{millis:n,onExpire:e.onFailure}),i.createElement(r.Z,{sx:{display:"grid",justifyItems:"center",pb:1}},i.createElement(a.Z,{variant:"h4"},"Match the symbols!"),i.createElement(a.Z,{variant:"h5",color:c.Z.theme.primary},"Targets:"," ",b.map(((e,t)=>t==v?i.createElement("span",{key:`${t}`,style:{fontSize:"1em",color:c.Z.theme.infolight}},e," "):i.createElement("span",{key:`${t}`,style:{fontSize:"1em",color:c.Z.theme.primary}},e," ")))),i.createElement("br",null),i.createElement(o.Z,{sx:{display:"grid",gridTemplateColumns:`repeat(${Math.round(t.width)}, 1fr)`,gap:1}},C.map(((e,t)=>i.createElement(a.Z,{key:t,sx:{fontSize:"2em",color:e.color,border:e.selected?`2px solid ${c.Z.theme.infolight}`:"unset",lineHeight:"unset",p:e.selected?"2px":"4px"}},e.content)))),i.createElement(d.U,{onKeyDown:function(t){t.preventDefault();const n=[0,0];switch((0,m._R)(t)){case m.uy:n[1]--;break;case m.xW:n[0]--;break;case m.FH:n[1]++;break;case m.g3:n[0]++}const r=[w[0]+n[0],w[1]+n[1]];if(r[0]=(r[0]+g[0].length)%g[0].length,r[1]=(r[1]+g.length)%g.length,E(r),t.key===u.F.SPACE){if(g[w[1]][w[0]]!==b[v])return void e.onFailure();k(v+1),b.length===v+1&&e.onSuccess()}},onFailure:e.onFailure})))}function y(){return"ABCDEF0123456789"[Math.floor(16*Math.random())]}},78947:(e,t,n)=>{"use strict";function r(e,t,n){function r(e,t,r){function a(e,t,n){return(1-n)*e+n*t}for(const o of Object.keys(e))n[o]=a(e[o],t[o],r);return e}return t<0?r(e.Trivial,e.Trivial,0):t>=0&&t<1?r(e.Trivial,e.Normal,t):t>=1&&t<2?r(e.Normal,e.Hard,t-1):t>=2&&t<3?r(e.Hard,e.Impossible,t-2):r(e.Impossible,e.Impossible,0)}n.d(t,{s:()=>r})},66630:(e,t,n)=>{"use strict";n.d(t,{l:()=>C});var r,a=n(81138),o=n(78016),i=n(28881),s=n(56798),l=n(67294),c=n(33244),u=n(52947),m=n(24815),f=n(49173),h=n(76915),d=n(58622),p=n(64627),g=n(96200),y=n(50087),b=n(35332),v=n(87564),k=n(92504),w=n(30762),E=n(244);!function(e){e[e.Countdown=0]="Countdown",e[e.Minigame=1]="Minigame",e[e.Result=2]="Result",e[e.Sell=3]="Sell"}(r||(r={}));const S=[k.A,d.C,h.q,p.u,g.y,b.Y,v.A,E.y];function C(e){const[t,n]=(0,l.useState)(1),[h,d]=(0,l.useState)(r.Countdown),[p,g]=(0,l.useState)(""),[b,v]=(0,l.useState)({lastGames:[-1,-1],id:Math.floor(Math.random()*S.length)}),k=(0,l.useCallback)((()=>{v({lastGames:[b.lastGames[1],b.id],id:(()=>{let e=b.lastGames[0];const t=[b.lastGames[0],b.lastGames[1],b.id];for(;t.includes(e);)e=Math.floor(Math.random()*S.length);return e})()})}),[b]);function E(e){g((t=>{let n=t;return n+=e?"✓":"✗",n.length>15&&(n=n.slice(1)),n}))}const C=(0,l.useCallback)((()=>{E(!0),t===e.MaxLevel?d(r.Sell):(d(r.Countdown),n(t+1)),k()}),[t,e.MaxLevel,k]),x=(0,l.useCallback)((t=>{d(r.Countdown),E(!1);const n=null!=t&&t.automated?f.J5.hp.current:3*e.StartingDifficulty*(f.J5.hasAugmentation(c.AugmentationName.WKSharmonizer,!0)?.5:1);f.J5.takeDamage(n)?u.F.toPage(m.T3.City):k()}),[e.StartingDifficulty,k]);let N;switch(h){case r.Countdown:N=l.createElement(y.I,{onFinish:()=>d(r.Minigame)});break;case r.Minigame:{const n=S[b.id];N=l.createElement(n,{onSuccess:C,onFailure:x,difficulty:e.Difficulty+t/50});break}case r.Sell:N=l.createElement(w.f,{StartingDifficulty:e.StartingDifficulty,Difficulty:e.Difficulty,Reward:e.Reward,MaxLevel:e.MaxLevel})}function M(){return l.createElement(a.Z,{variant:"h4"},l.createElement("span",{style:{color:"gray"}},p.slice(0,p.length-1)),p[p.length-1])}return l.createElement(o.Z,null,l.createElement(i.Z,{sx:{p:1,mb:1,display:"grid",justifyItems:"center",gap:1}},h!==r.Sell&&l.createElement(s.Z,{sx:{width:"100%"},onClick:function(){u.F.toPage(m.T3.City)}},"Cancel Infiltration"),l.createElement(a.Z,{variant:"h5"},"Level ",t," / ",e.MaxLevel),l.createElement(M,null)),N)}},46083:(e,t,n)=>{"use strict";n.d(t,{r:()=>l});var r=n(28881),a=n(67294),o=n(33244),i=n(49173),s=n(3197);function l(e){let{millis:t,onExpire:n,noPaper:l,ignoreAugment_WKSharmonizer:c}=e;const[u,m]=(0,a.useState)(100),f=(!c&&i.J5.hasAugmentation(o.AugmentationName.WKSharmonizer,!0)?1.3:1)*t;return(0,a.useEffect)((()=>{const e=setInterval((()=>{m((e=>(e<=0&&n(),e-200/f*100)))}),200);return()=>{clearInterval(e)}}),[n,f]),l?a.createElement(s.k,{variant:"determinate",value:u,color:"primary"}):a.createElement(r.Z,{sx:{p:1,mb:1}},a.createElement(s.k,{variant:"determinate",value:u,color:"primary"}))}},30213:(e,t,n)=>{"use strict";n.d(t,{m:()=>c});var r=n(67294),a=n(52947),o=n(24815),i=n(80366),s=n(66630),l=n(73823);function c(e){const[t,n]=(0,r.useState)(!1);if(void 0===e.location.infiltrationData)throw new Error("Trying to do infiltration on invalid location.");const c=e.location.infiltrationData.startingSecurityLevel,u=(0,i.o)(c),m=(0,i.y)(c);return r.createElement("div",{style:{display:"flex",alignItems:"center",height:"calc(100vh - 16px)"}},t?r.createElement(s.l,{StartingDifficulty:c,Difficulty:u,Reward:m,MaxLevel:e.location.infiltrationData.maxClearanceLevel}):r.createElement(l.p,{Location:e.location,Difficulty:u,MaxLevel:e.location.infiltrationData.maxClearanceLevel,start:()=>n(!0),cancel:function(){a.F.toPage(o.T3.City)}}))}},73823:(e,t,n)=>{"use strict";n.d(t,{p:()=>d});var r=n(7542),a=n(78016),o=n(28881),i=n(81138),s=n(17575),l=n(30120),c=n(56798),u=n(67294),m=n(51087),f=n(22115);function h(e,t){let n="";return t<=0?t=0:t>13?t=13:(t--,n=">"),u.createElement("span",{style:{color:e}},"=".repeat(t),n," ".repeat(13-n.length-t))}function d(e){return u.createElement(a.Z,{sx:{alignItems:"center"}},u.createElement(o.Z,{sx:{p:1,mb:1,display:"grid",justifyItems:"center"}},u.createElement(i.Z,{variant:"h4"},"Infiltrating ",u.createElement("b",null,e.Location.name)),u.createElement(i.Z,{variant:"h6"},u.createElement("b",null,"Maximum Level: "),e.MaxLevel),u.createElement(i.Z,{variant:"h6",sx:{color:e.Difficulty>2?m.Z.theme.error:e.Difficulty>1?m.Z.theme.warning:m.Z.theme.primary,display:"flex",alignItems:"center"}},u.createElement("b",null,"Difficulty: "),(0,f.$j)(33.3333*e.Difficulty)," / 100",e.Difficulty>1.5&&u.createElement(s.Z,{title:u.createElement(i.Z,{color:"error"},"This location is too heavily guarded for your current stats. It is recommended that you try training, or finding an easier location.")},u.createElement(r.Z,{sx:{ml:1}}))),u.createElement(i.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"[",0===(t=e.Difficulty)?u.createElement("span",{style:{color:"white"}},">"," ".repeat(38)):u.createElement(u.Fragment,null,h(m.Z.theme.primary,13*t),h(m.Z.theme.warning,13*(t-1)),h(m.Z.theme.error,13*(t-2))),"]"),u.createElement(i.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"▲ ▲ ▲ ▲"),u.createElement(i.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," Trivial Normal Hard Impossible")),u.createElement(o.Z,{sx:{p:1,display:"grid",justifyItems:"center"}},u.createElement(i.Z,{sx:{width:"75%",textAlign:"center"}},u.createElement("b",null,"Infiltration")," is a series of short minigames that get progressively harder. You take damage for failing them. Reaching the maximum level rewards you with intel that you can trade for money or reputation.",u.createElement("br",null),u.createElement("br",null),u.createElement("b",null,"Gameplay:")),u.createElement("ul",null,u.createElement(i.Z,null,u.createElement("li",null,"The minigames you play are randomly selected.",u.createElement("br",null),"It might take you a few tries to get used to them."),u.createElement("li",null,"No game requires use of the mouse."),u.createElement("li",null,u.createElement("b",null,"Spacebar")," is the default action/confirm button."),u.createElement("li",null,"The ",u.createElement("b",null,"arrow keys")," and ",u.createElement("b",null,"WASD")," can be used interchangeably."),u.createElement("li",null,"Sometimes the rest of the keyboard is used."))),u.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr",width:"100%"}},u.createElement(c.Z,{onClick:e.start},"Start"),u.createElement(c.Z,{onClick:e.cancel},"Cancel"))));var t}},68236:(e,t,n)=>{"use strict";n.d(t,{U:()=>a});var r=n(67294);function a(e){return(0,r.useEffect)((()=>{function t(t){t.isTrusted&&e.onKeyDown.bind(this)(t)}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)})),r.createElement(r.Fragment,null)}},87564:(e,t,n)=>{"use strict";n.d(t,{A:()=>k});var r=n(13761),a=n(95537),o=n(7542),i=n(28881),s=n(81138),l=n(30120),c=n(96486),u=n(67294),m=n(33244),f=n(49173),h=n(51087),d=n(81055),p=n(44830),g=n(78947),y=n(46083),b=n(68236);const v={Trivial:{timer:15e3,width:3,height:3,mines:4},Normal:{timer:15e3,width:4,height:4,mines:7},Hard:{timer:15e3,width:5,height:5,mines:11},Impossible:{timer:15e3,width:6,height:6,mines:15}};function k(e){const t={timer:0,width:0,height:0,mines:0};(0,g.s)(v,e.difficulty,t);const n=t.timer,[k]=(0,u.useState)(function(e){const t=w(e);for(let n=0;n{const e=setTimeout((()=>M(!1)),2e3);return()=>clearInterval(e)}),[]);const T=[];return k.map(((e,t)=>e.map(((e,n)=>{N?T.push({flagged:Boolean(k[t][n])}):n===C[0]&&t===C[1]?T.push({current:!0}):E[t][n]?T.push({marked:!0}):A&&k[t][n]?T.push({flagged:!0}):T.push({})})))),u.createElement(u.Fragment,null,u.createElement(y.r,{millis:n,onExpire:e.onFailure}),u.createElement(i.Z,{sx:{display:"grid",justifyItems:"center",pb:1}},u.createElement(s.Z,{variant:"h4"},N?"Remember all the mines!":"Mark all the mines!"),u.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:`repeat(${Math.round(t.width)}, 1fr)`,gridTemplateRows:`repeat(${Math.round(t.height)}, 1fr)`,gap:1}},T.map((e=>{let t,n;return e.marked?(t=h.Z.theme.warning,n=u.createElement(r.Z,null)):e.current?(t=h.Z.theme.infolight,n=u.createElement(a.Z,null)):e.flagged?(t=h.Z.theme.error,n=u.createElement(o.Z,null)):(t=h.Z.theme.primary,n=u.createElement(u.Fragment,null)),u.createElement(s.Z,{key:`${e}${(0,c.uniqueId)()}`,sx:{color:t,border:`2px solid ${e.current?h.Z.theme.infolight:h.Z.theme.primary}`,height:"32px",width:"32px",display:"flex",alignItems:"center",justifyContent:"center"}},n)}))),u.createElement(b.U,{onKeyDown:function(t){if(t.preventDefault(),N)return;const n=[0,0];switch((0,p._R)(t)){case p.uy:n[1]--;break;case p.xW:n[0]--;break;case p.FH:n[1]++;break;case p.g3:n[0]++}const r=[C[0]+n[0],C[1]+n[1]];if(r[0]=(r[0]+k[0].length)%k[0].length,r[1]=(r[1]+k.length)%k.length,x(r),t.key==d.F.SPACE){if(!k[C[1]][C[0]])return void e.onFailure();S((t=>(t[C[1]][C[0]]=!0,function(e,t){function n(e){return e.flat().reduce(((e,t)=>e+(t?1:0)),0)}return n(e)===n(t)}(k,t)&&e.onSuccess(),t)))}},onFailure:e.onFailure})))}function w(e){const t=[];for(let n=0;n{"use strict";n.d(t,{A:()=>d});var r=n(28881),a=n(81138),o=n(30120),i=n(67294),s=n(33244),l=n(49173),c=n(81055),u=n(78947),m=n(46083),f=n(68236);const h={Trivial:{window:600},Normal:{window:325},Hard:{window:250},Impossible:{window:150}};function d(e){let{difficulty:t,onSuccess:n,onFailure:d}=e;const[p,g]=(0,i.useState)(0),[y,b]=(0,i.useState)(!1),[v,k]=(0,i.useState)(0);return(0,i.useEffect)((()=>{const e={window:0};(0,u.s)(h,t,e);const n=e.window,r=3250*Math.random()+1500-(250+n);g(0),k(r),b(l.J5.hasAugmentation(s.AugmentationName.MightOfAres,!0));let a=setTimeout((()=>{g(1),a=setTimeout((()=>{g(2),a=setTimeout((()=>d()),250)}),n)}),r);return()=>clearTimeout(a)}),[t,n,d]),i.createElement(i.Fragment,null,i.createElement(m.r,{millis:5e3,onExpire:d}),i.createElement(r.Z,{sx:{display:"grid",justifyItems:"center"}},i.createElement(a.Z,{variant:"h4"},"Attack when his guard is down!"),y&&i.createElement(o.Z,{sx:{my:1}},i.createElement(a.Z,{variant:"h5"},"Guard will drop in..."),i.createElement(m.r,{millis:v,onExpire:()=>null,ignoreAugment_WKSharmonizer:!0,noPaper:!0})),0===p&&i.createElement(a.Z,{variant:"h4"},"Guarding ..."),1===p&&i.createElement(a.Z,{variant:"h4"},"Preparing?"),2===p&&i.createElement(a.Z,{variant:"h4"},"ATTACKING!"),i.createElement(f.U,{onKeyDown:function(e){e.preventDefault(),e.key===c.F.SPACE&&(1!==p?d():n())},onFailure:d})))}},30762:(e,t,n)=>{"use strict";n.d(t,{f:()=>w});var r=n(67294),a=n(28881),o=n(81138),i=n(30120),s=n(26023),l=n(98649),c=n(56798),u=n(49173),m=n(33244),f=n(94542),h=n(58427),d=n(52947),p=n(24815),g=n(72360),y=n(17365),b=n(22115),v=n(20567),k=n(50862);function w(e){const[t,n]=(0,r.useState)("none");function w(){(0,f.kl)(h.i[m.FactionName.ShadowsOfAnarchy]),N&&(E.playerReputation+=x),d.F.toPage(p.T3.City)}const E=h.i[m.FactionName.ShadowsOfAnarchy],S=(0,v.Ek)(e.Reward,e.MaxLevel,e.StartingDifficulty),C=(0,v.kS)(e.Reward,e.MaxLevel,e.StartingDifficulty),x=(0,v.tB)(E,e.StartingDifficulty),N=u.J5.factions.includes(m.FactionName.ShadowsOfAnarchy);return r.createElement(a.Z,{sx:{p:1,textAlign:"center",display:"flex",alignItems:"center",flexDirection:"column"}},r.createElement(o.Z,{variant:"h4"},"Infiltration successful!"),r.createElement(o.Z,{variant:"h5",color:"primary",width:"75%"},"You"," ",N?r.createElement(r.Fragment,null,"have gained ",(0,b.$j)(x,2)," rep for ",m.FactionName.ShadowsOfAnarchy," and"," "):r.createElement(r.Fragment,null),"can trade the confidential information you found for money or reputation."),r.createElement(i.Z,{sx:{width:"fit-content"}},r.createElement(i.Z,{sx:{width:"100%"}},r.createElement(s.Z,{value:t,onChange:function(e){n(e.target.value)},sx:{mr:1}},r.createElement(l.Z,{key:"none",value:"none"},"none"),u.J5.factions.filter((e=>h.i[e].getInfo().offersWork())).map((e=>r.createElement(l.Z,{key:e,value:e},e)))),r.createElement(c.Z,{onClick:function(){(0,k.m)("FactionName").isMember(t)&&(h.i[t].playerReputation+=S,w())}},"Trade for ",r.createElement(y.Y,{reputation:S})," reputation")),r.createElement(c.Z,{onClick:function(){u.J5.gainMoney(C,"infiltration"),w()},sx:{width:"100%"}},"Sell for ",r.createElement(g.W,{money:C}))),r.createElement(c.Z,{onClick:w,sx:{width:"100%",mt:1}},"Quit"))}},244:(e,t,n)=>{"use strict";n.d(t,{y:()=>k});var r=n(67294),a=n(28881),o=n(81138),i=n(30120),s=n(33244),l=n(49173),c=n(51087),u=n(81055),m=n(44830),f=n(78947),h=n(46083),d=n(68236),p=n(20145);const g={Trivial:{timer:9e3,wiresmin:4,wiresmax:4,rules:2},Normal:{timer:7e3,wiresmin:6,wiresmax:6,rules:2},Hard:{timer:5e3,wiresmin:8,wiresmax:8,rules:3},Impossible:{timer:4e3,wiresmin:9,wiresmax:9,rules:4}},y=[u.F.PIPE,u.F.DOT,u.F.FORWARD_SLASH,u.F.HYPHEN,"█",u.F.HASH],b=["red","#FFC107","blue","white"],v={red:"red","#FFC107":"yellow",blue:"blue",white:"white"};function k(e){let{onSuccess:t,onFailure:n,difficulty:u}=e;const[v,k]=(0,r.useState)([]),[S,C]=(0,r.useState)([]),[x,N]=(0,r.useState)(0),[M,A]=(0,r.useState)([]),[T,L]=(0,r.useState)(new Set),[R,F]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e={timer:0,wiresmin:0,wiresmax:0,rules:0};(0,f.s)(g,u,e);const t=function(e){const t=[],n=(0,m.MX)(e.wiresmin,e.wiresmax);for(let e=0;e{for(const a of n)if(a.shouldCut(e,t))return void r.add(t)})),N(e.timer),C(t),A(t.map((e=>!1))),k(n),L(r),F(l.J5.hasAugmentation(s.AugmentationName.KnowledgeOfApollo,!0))}),[u]),r.createElement(r.Fragment,null,r.createElement(h.r,{millis:x,onExpire:n}),r.createElement(a.Z,{sx:{display:"grid",justifyItems:"center",pb:1}},r.createElement(o.Z,{variant:"h4",sx:{width:"75%",textAlign:"center"}},"Cut the wires with the following properties! (keyboard 1 to 9)"),v.map(((e,t)=>r.createElement(o.Z,{key:t},e.toString()))),r.createElement(i.Z,{sx:{display:"grid",gridTemplateColumns:`repeat(${S.length}, 1fr)`,columnGap:3,justifyItems:"center"}},Array.from({length:S.length}).map(((e,t)=>{const n=M[t]||T.has(t),a=R&&!n?c.Z.theme.disabled:c.Z.theme.primary;return r.createElement(o.Z,{key:t,style:{color:a}},t+1)})),new Array(8).fill(0).map(((e,t)=>r.createElement(r.Fragment,{key:t},S.map(((e,n)=>{if((3===t||4===t)&&M[n])return r.createElement(o.Z,{key:n});const a=M[n]||T.has(n),i=R&&!a?c.Z.theme.disabled:e.colors[t%e.colors.length];return r.createElement(o.Z,{key:n,style:{color:i}},"|",e.wireType,"|")})))))),r.createElement(d.U,{onKeyDown:function(e){e.preventDefault();const r=parseInt(e.key);if(!(0,p.a)(r)||r>S.length)return;const a=r-1;if(M[a])return;if(!T.has(a))return n();const o=new Set(T);if(o.delete(a),0===o.size)return t();const i=M.map(((e,t)=>t===a||e));L(o),A(i)},onFailure:n})))}function w(e){const t=Math.floor(Math.random()*e.length);return{toString:()=>`Cut wires number ${t+1}.`,shouldCut:(e,n)=>t===n}}function E(e){const t=e[Math.floor(Math.random()*e.length)].colors[0];return{toString:()=>`Cut all wires colored ${v[t]}.`,shouldCut:e=>e.colors.includes(t)}}},44830:(e,t,n)=>{"use strict";n.d(t,{FH:()=>i,MX:()=>a,_R:()=>c,g3:()=>l,h9:()=>u,uy:()=>o,xW:()=>s});var r=n(81055);function a(e,t){return Math.random()*(t-e)+e}const o="↑",i="↓",s="←",l="→";function c(e){switch(e.key){case r.F.UP_ARROW:case r.F.W:return o;case r.F.LEFT_ARROW:case r.F.A:return s;case r.F.DOWN_ARROW:case r.F.S:return i;case r.F.RIGHT_ARROW:case r.F.D:return l}return""}function u(e){switch(e.key){case r.F.DOWN_ARROW:case r.F.S:return o;case r.F.RIGHT_ARROW:case r.F.D:return s;case r.F.UP_ARROW:case r.F.W:return i;case r.F.LEFT_ARROW:case r.F.A:return l}return""}},40780:(e,t,n)=>{"use strict";n.d(t,{$o:()=>r,ZF:()=>c,mp:()=>l,nu:()=>m,oo:()=>u,wP:()=>s});var r,a=n(49173),o=n(33244),i=n(45756);!function(e){e[e.Start=0]="Start",e[e.GoToCharacterPage=1]="GoToCharacterPage",e[e.CharacterPage=2]="CharacterPage",e[e.CharacterGoToTerminalPage=3]="CharacterGoToTerminalPage",e[e.TerminalIntro=4]="TerminalIntro",e[e.TerminalHelp=5]="TerminalHelp",e[e.TerminalLs=6]="TerminalLs",e[e.TerminalScan=7]="TerminalScan",e[e.TerminalScanAnalyze1=8]="TerminalScanAnalyze1",e[e.TerminalScanAnalyze2=9]="TerminalScanAnalyze2",e[e.TerminalConnect=10]="TerminalConnect",e[e.TerminalAnalyze=11]="TerminalAnalyze",e[e.TerminalNuke=12]="TerminalNuke",e[e.TerminalManualHack=13]="TerminalManualHack",e[e.TerminalHackingMechanics=14]="TerminalHackingMechanics",e[e.TerminalGoHome=15]="TerminalGoHome",e[e.TerminalCreateScript=16]="TerminalCreateScript",e[e.TerminalTypeScript=17]="TerminalTypeScript",e[e.TerminalFree=18]="TerminalFree",e[e.TerminalRunScript=19]="TerminalRunScript",e[e.TerminalGoToActiveScriptsPage=20]="TerminalGoToActiveScriptsPage",e[e.ActiveScriptsPage=21]="ActiveScriptsPage",e[e.ActiveScriptsToTerminal=22]="ActiveScriptsToTerminal",e[e.TerminalTailScript=23]="TerminalTailScript",e[e.GoToHacknetNodesPage=24]="GoToHacknetNodesPage",e[e.HacknetNodesIntroduction=25]="HacknetNodesIntroduction",e[e.HacknetNodesGoToWorldPage=26]="HacknetNodesGoToWorldPage",e[e.WorldDescription=27]="WorldDescription",e[e.DocumentationPageInfo=28]="DocumentationPageInfo",e[e.End=29]="End"}(r||(r={}));const s={currStep:r.Start,isRunning:!1,stepIsDone:{[r.Start]:!1,[r.GoToCharacterPage]:!1,[r.CharacterPage]:!1,[r.CharacterGoToTerminalPage]:!1,[r.TerminalIntro]:!1,[r.TerminalHelp]:!1,[r.TerminalLs]:!1,[r.TerminalScan]:!1,[r.TerminalScanAnalyze1]:!1,[r.TerminalScanAnalyze2]:!1,[r.TerminalConnect]:!1,[r.TerminalAnalyze]:!1,[r.TerminalNuke]:!1,[r.TerminalManualHack]:!1,[r.TerminalHackingMechanics]:!1,[r.TerminalGoHome]:!1,[r.TerminalCreateScript]:!1,[r.TerminalTypeScript]:!1,[r.TerminalFree]:!1,[r.TerminalRunScript]:!1,[r.TerminalGoToActiveScriptsPage]:!1,[r.ActiveScriptsPage]:!1,[r.ActiveScriptsToTerminal]:!1,[r.TerminalTailScript]:!1,[r.GoToHacknetNodesPage]:!1,[r.HacknetNodesIntroduction]:!1,[r.HacknetNodesGoToWorldPage]:!1,[r.WorldDescription]:!1,[r.DocumentationPageInfo]:!1,[r.End]:!1}};function l(){s.isRunning=!0,s.currStep=r.Start}function c(){s.stepIsDone[s.currStep]=!0,s.currStepr.Start&&(s.currStep-=1),i.p.emit()}function m(){s.isRunning=!1,s.currStep=r.Start;const e=a.J5.getHomeComputer().messages,t=o.LiteratureName.HackersStartingHandbook;e.includes(t)||e.push(t),i.p.emit()}},33986:(e,t,n)=>{"use strict";let r;n.d(t,{z:()=>r}),function(e){e.HackersStartingHandbook="hackers-starting-handbook.lit",e.CorporationManagementHandbook="corporation-management-handbook.lit",e.HistoryOfSynthoids="history-of-synthoids.lit",e.AGreenTomorrow="A-Green-Tomorrow.lit",e.AlphaOmega="alpha-omega.lit",e.SimulatedReality="simulated-reality.lit",e.BeyondMan="beyond-man.lit",e.BrighterThanTheSun="brighter-than-the-sun.lit",e.DemocracyIsDead="democracy-is-dead.lit",e.Sector12Crime="sector-12-crime.lit",e.ManAndMachine="man-and-machine.lit",e.SecretSocieties="secret-societies.lit",e.TheFailedFrontier="the-failed-frontier.lit",e.CodedIntelligence="coded-intelligence.lit",e.SyntheticMuscles="synthetic-muscles.lit",e.TensionsInTechRace="tensions-in-tech-race.lit",e.CostOfImmortality="cost-of-immortality.lit",e.TheHiddenWorld="the-hidden-world.lit",e.TheNewGod="the-new-god.lit",e.NewTriads="new-triads.lit",e.TheSecretWar="the-secret-war.lit"}(r||(r={}))},6624:(e,t,n)=>{"use strict";n.d(t,{x:()=>a});var r=n(64962);class a{constructor(e){let{title:t,filename:n,text:a}=e;this.title=t,this.filename=(0,r.Tp)(n),this.text=a}}},20404:(e,t,n)=>{"use strict";n.d(t,{O:()=>o});var r=n(85321),a=n(39463);function o(e){const t=r.n[e];if(null==t)return;const n=`${t.title}

${t.text}`;(0,a.X)(n,!0)}},85321:(e,t,n)=>{"use strict";n.d(t,{n:()=>o});var r=n(33244),a=n(6624);const o={[r.LiteratureName.HackersStartingHandbook]:new a.x({title:"The Beginner's Guide to Hacking",filename:r.LiteratureName.HackersStartingHandbook,text:"When starting out, hacking is the most profitable way to earn money and progress. This is a brief collection of tips/pointers on how to make the most out of your hacking scripts.

-hack() and grow() both work by percentages. hack() steals a certain percentage of the money on a server, and grow() increases the amount of money on a server by some percentage (multiplicatively)

-Because hack() and grow() work by percentages, they are more effective if the target server has a high amount of money. Therefore, you should try to increase the amount of money on a server (using grow()) to a certain amount before hacking it. Two important Netscript functions for this are getServerMoneyAvailable() and getServerMaxMoney()

-Keep security level low. Security level affects everything when hacking. Two important Netscript functions for this are getServerSecurityLevel() and getServerMinSecurityLevel()

-Purchase additional servers by visiting 'Alpha Enterprises' in the city. They are relatively cheap and give you valuable RAM to run more scripts early in the game

-Prioritize upgrading the RAM on your home computer. This can also be done at 'Alpha Enterprises'

-Many low level servers have free RAM. You can use this RAM to run your scripts. Use the scp Terminal or Netscript command to copy your scripts onto these servers and then run them."}),[r.LiteratureName.CorporationManagementHandbook]:new a.x({title:"The Complete Handbook for Creating a Successful Corporation",filename:r.LiteratureName.CorporationManagementHandbook,text:"Getting Started with Corporations
To get started, visit the City Hall in Sector-12 in order to create a Corporation. This requires $150b of your own money, but this $150b will get put into your Corporation's funds. If you're in BitNode 3 you also have option to get seed money from the government in exchange for 500m shares. Your Corporation can have many different divisions, each in a different Industry. There are many different types of Industries, each with different properties. To create your first division, click the 'Expand' (into new Industry) button at the top of the management UI. The Agriculture industry is recommended for your first division.

The first thing you'll need to do is hire some employees. Employees can be assigned to five different positions. Each position has a different effect on various aspects of your Corporation. It is recommended to have at least one employee at each position.

Each industry uses some combination of Materials in order to produce other Materials and/or create Products. Specific information about this is displayed in each of your divisions' UI.

Products are special, industry-specific objects. They are different than Materials because you must manually choose to develop them, and you can choose to develop any number of Products. Developing a Product takes time, but a Product typically generates significantly more revenue than any Material. Not all industries allow you to create Products. To create a Product, look for a button in the top-left panel of the division UI (e.g. For the Software Industry, the button says 'Develop Software').

To get your supply chain system started, purchase the Materials that your industry needs to produce other Materials/Products. This can be done by clicking the 'Buy' button next to the corresponding Material(s). After you have the required Materials, you will immediately start production. The amount and quality/effective rating of Materials/Products you produce is based on a variety of factors, such as your employees and their productivity and the quality of materials used for production.

Once you start producing Materials/Products, you can sell them in order to start earning revenue. This can be done by clicking the 'Sell' button next to the corresponding Material or Product. The amount of Material/Product you sell is dependent on a wide variety of different factors. In order to produce and sell a Product you'll have to fully develop it first.

These are the basics of getting your Corporation up and running! Now, you can start purchasing upgrades to improve your bottom line. If you need money, consider looking for seed investors, who will give you money in exchange for stock shares. Otherwise, once you feel you are ready, take your Corporation public! Once your Corporation goes public, you can no longer find investors. Instead, your Corporation will be publicly traded and its stock price will change based on how well it's performing financially. In order to make money for yourself you can set dividends for a solid reliable income or you can sell your stock shares in order to make quick money.

Tips/Pointers
-Start with one division, such as Agriculture. Get it profitable on it's own, then expand to a division that consumes/produces a material that the division you selected produces/consumes.

-Materials are profitable, but Products are where the real money is, although if the product had a low development budget or is produced with low quality materials it won't sell well.

-The 'Smart Supply' upgrade is extremely useful. Consider purchasing it as soon as possible.

-Purchasing Hardware, Robots, AI Cores, and Real Estate can potentially increase your production. The effects of these depend on what industry you are in.

-In order to optimize your production, you will need a good balance of all employee positions, about 1/9 should be interning

-Quality of materials used for production affects the quality/effective rating of materials/products produced, so vertical integration is important for high profits.

-Materials purchased from the open market are always of quality 1.

-The price at which you can sell your Materials/Products is highly affected by the quality/effective rating

-When developing a product, different employee positions affect the development process differently, some improve the development speed, some improve the rating of the finished product.

-If your employees have low morale or energy, their production will greatly suffer. Having enough interns will make sure those stats get high and stay high.

-Don't forget to advertise your company. You won't have any business if nobody knows you.

-Having company awareness is great, but what's really important is your company's popularity. Try to keep your popularity as high as possible to see the biggest benefit for your sales

-Remember, you need to spend money to make money!

-Corporations do not reset when installing Augmentations, but they do reset when destroying a BitNode"}),[r.LiteratureName.HistoryOfSynthoids]:new a.x({title:"A Brief History of Synthoids",filename:r.LiteratureName.HistoryOfSynthoids,text:`Synthetic androids, or Synthoids for short, are genetically engineered robots and, short of Augmentations, are composed entirely of organic substances. For this reason, Synthoids are virtually identical to humans in form, composition, and appearance.

Synthoids were first designed and manufactured by ${r.FactionName.OmniTekIncorporated} sometime around the middle of the century. Their original purpose was to be used for manual labor and as emergency responders for disasters. As such, they were initially programmed only for their specific tasks. Each iteration that followed improved upon the intelligence and capabilities of the Synthoids. By the 6th iteration, called MK-VI, the Synthoids were so smart and capable enough of making their own decisions that many argued ${r.FactionName.OmniTekIncorporated} had created the first sentient AI. These MK-VI Synthoids were produced in mass quantities (estimates up to 50 billion) with the hopes of increasing society's productivity and bolstering the global economy. Stemming from humanity's desire for technological advancement, optimism and excitement about the future had never been higher.

All of that excitement and optimism quickly turned to fear, panic, and dread in 2070, when a terrorist group called Ascendis Totalis hacked into ${r.FactionName.OmniTekIncorporated} and uploaded a rogue AI into several of their Synthoid manufacturing facilities. This hack went undetected and for months ${r.FactionName.OmniTekIncorporated} unknowingly churned out legions of Synthoids embedded with this rogue AI. Then, on December 24th, 2070, Omnica activated dormant protocols in the rogue AI, causing all of the infected Synthoids to immediately launch a military campaign to seek and destroy all of humanity.

What ensued was the deadliest conflict in human history. This crisis, now commonly known as the Synthoid Uprising, resulted in almost ten billion deaths over the course of a year. Despite the nations of the world banding together to combat the threat, the MK-VI Synthoids were simply stronger, faster, more intelligent, and more adaptable than humans, outsmarting them at every turn.

It wasn't until the sacrifice of an elite international military taskforce, called the ${r.FactionName.Bladeburners}, that humanity was finally able to defeat the Synthoids. The ${r.FactionName.Bladeburners}' final act was a suicide bombing mission that destroyed a large portion of the MK-VI Synthoids, including many of its leaders. In the following weeks militaries from around the world were able to round up and shut down the remaining rogue MK-VI Synthoids, ending the Synthoid Uprising.

In the aftermath of the bloodshed, the Synthoid Accords were drawn up. These Accords banned ${r.FactionName.OmniTekIncorporated} from manufacturing any Synthoids beyond the MK-III series. They also banned any other corporation from constructing androids with advanced, near-sentient AI. MK-VI Synthoids that did not have the rogue Ascendis Totalis AI were allowed to continue their existence, but they were stripped of all rights and protections as they were not considered humans. They were also banned from doing anything that may pose a global security threat, such as working for any military/defense organization or conducting any bioengineering, computing, or robotics related research.

Unfortunately, many believe that not all of the rogue MK-VI Synthoids from the Uprising were found and destroyed, and that many of them are blending in as normal humans in society today. In response, many nations have created ${r.FactionName.Bladeburners} divisions, special military branches that are tasked with investigating and dealing with any Synthoid threats.

To this day, tensions still exist between the remaining Synthoids and humans as a result of the Uprising.

Nobody knows what happened to the terrorist group Ascendis Totalis.`}),[r.LiteratureName.AGreenTomorrow]:new a.x({title:"A Green Tomorrow",filename:r.LiteratureName.AGreenTomorrow,text:"Starting a few decades ago, there was a massive global movement towards the generation of renewable energy in an effort to combat global warming and climate change. The shift towards renewable energy was a big success, or so it seemed. In 2045 a staggering 80% of the world's energy came from non-renewable fossil fuels. Now, about three decades later, that number is down to only 15%. Most of the world's energy now comes from nuclear power and renewable sources such as solar and geothermal energy. Unfortunately, these efforts were not the huge success that they seem to be.

Since 2045 primary energy use has soared almost tenfold. This was mainly due to growing urban populations and the rise of increasingly advanced (and power-hungry) technology that has become ubiquitous in our lives. So, despite the fact that the percentage of our energy that comes from fossil fuels has drastically decreased, the total amount of energy we are producing from fossil fuels has actually increased.

The grim effects of our species' irresponsible use of energy and neglect of our mother world have become increasingly apparent. Last year a temperature of 190F was recorded in the Death Valley desert, which is over 50% higher than the highest recorded temperature at the beginning of the century. In the last two decades numerous major cities such as Manhattan, Boston, and Los Angeles have been partially or fully submerged by rising sea levels. In the present day, over 75% of the world's agriculture is done in climate-controlled vertical farms, as most traditional farmland has become unusable due to severe climate conditions.

Despite all of this, the greedy and corrupt corporations that rule the world have done nothing to address these problems that threaten our species. And so it's up to us, the common people. Each and every one of us can make a difference by doing what these corporations won't: taking responsibility. If we don't, pretty soon there won't be an Earth left to save. We are the last hope for a green tomorrow."}),[r.LiteratureName.AlphaOmega]:new a.x({title:"Alpha and Omega",filename:r.LiteratureName.AlphaOmega,text:"Then we saw a new Heaven and a new Earth, for our first Heaven and Earth had gone away, and our sea was no more. And we saw a new holy city, new Aeria, coming down out of this new Heaven, prepared as a bride adorned for her husband. And we heard a loud voice saying, 'Behold, the new dwelling place of the Gods. We will dwell with them, and they will be our people, and we will be with them as their Gods. We will wipe away every tear from their eyes, and death shall be no more, neither shall there be mourning, nor crying, nor pain anymore, for the former things have passed away.'

And once we were seated on the throne we said 'Behold, I am making all things new.' Also we said, 'Write this down, for these words are trustworthy and true.' And we said to you, 'It is done! I am the Alpha and the Omega, the beginning and the end. To the thirsty I will give from the spring of the water of life without payment. The one who conquers will have this heritage, and we will be his God and he will be our son. But as for the cowardly, the faithless, the detestable, as for murderers, the sexually immoral, sorcerers, idolaters, and all liars, their portion will be in the lake that burns with fire and sulfur, for it is the second true death.'"}),[r.LiteratureName.SimulatedReality]:new a.x({title:"Are We Living in a Computer Simulation?",filename:r.LiteratureName.SimulatedReality,text:"The idea that we are living in a virtual world is not new. It's a trope that has been explored constantly in literature and pop culture. However, it is also a legitimate scientific hypothesis that many notable physicists and philosophers have debated for years.

Proponents for this simulated reality theory often point to how advanced our technology has become, as well as the incredibly fast pace at which it has advanced over the past decades. The amount of computing power available to us has increased over 100-fold since 2060 due to the development of nanoprocessors and quantum computers. Artificial Intelligence has advanced to the point where our entire lives are controlled by robots and machines that handle our day-to-day activities such as autonomous transportation and scheduling. If we consider the pace at which this technology has advanced and assume that these developments continue, it's reasonable to assume that at some point in the future our technology would be advanced enough that we could create simulations that are indistinguishable from reality. However, if continued technological advancement is a reasonable outcome, then it is very likely that such a scenario has already happened.

Statistically speaking, somewhere out there in the infinite universe there is an advanced, intelligent species that already has such technology. Who's to say that they haven't already created such a virtual reality: our own?"}),[r.LiteratureName.BeyondMan]:new a.x({title:"Beyond Man",filename:r.LiteratureName.BeyondMan,text:"Humanity entered a 'transhuman' era a long time ago. And despite the protests and criticisms of many who cried out against human augmentation at the time, the transhuman movement continued and prospered. Proponents of the movement ignored the critics, arguing that it was in our inherent nature to better ourselves. To improve. To be more than we were. They claimed that not doing so would be to go against every living organism's biological purpose: evolution and survival of the fittest.

And here we are today, with technology that is advanced enough to augment humans to a state that can only be described as posthuman. But what do we have to show for it when this augmentation technology is only available to the so-called 'elite'? Are we really better off than before when only 5% of the world's population has access to this technology? When the powerful corporations and organizations of the world keep it all to themselves, have we really evolved?

Augmentation technology has only further increased the divide between the rich and the poor, between the powerful and the oppressed. We have not become 'more than human'. We have not evolved from nature's original design. We are still the greedy, corrupted, and evil men that we always were."}),[r.LiteratureName.BrighterThanTheSun]:new a.x({title:"Brighter than the Sun",filename:r.LiteratureName.BrighterThanTheSun,text:`When people think about the corporations that dominate the East, they typically think of ${r.FactionName.KuaiGongInternational}, which holds a complete monopoly for manufacturing and commerce in Asia, or Global Pharmaceuticals, the world's largest drug company, or ${r.FactionName.OmniTekIncorporated}, the global leader in intelligent and autonomous robots. But there's one company that has seen a rapid rise in the last year and is poised to dominate not only the East, but the entire world: TaiYang Digital.

TaiYang Digital is a Chinese internet-technology corporation that provides services such as online advertising, search engines, gaming, media, entertainment, and cloud computing/storage. Its name TaiYang comes from the Chinese word for 'sun'. In Chinese culture, the sun is a 'yang' symbol associated with life, heat, masculinity, and heaven.

The company was founded less than 5 years ago and is already the third highest valued company in all of Asia. In 2076 it generated a total revenue of over 10 trillion yuan. Its services are used daily by over a billion people worldwide.

TaiYang Digital's meteoric rise is extremely surprising in modern society. This sort of growth is something you'd commonly see in the first half of the century, especially for tech companies. However in the last two decades the number of corporations has significantly declined as the largest entities quickly took over the economy. Corporations such as ${r.FactionName.ECorp}, ${r.FactionName.MegaCorp}, and ${r.FactionName.KuaiGongInternational} have established such strong monopolies in their market sectors that they have effectively killed off all of the smaller and new corporations that have tried to start up over the years. This is what makes the rise of TaiYang Digital so impressive. And if TaiYang continues down this path, then they have a bright future ahead of them.`}),[r.LiteratureName.DemocracyIsDead]:new a.x({title:"Democracy is Dead: The Fall of an Empire",filename:r.LiteratureName.DemocracyIsDead,text:"They rose from the shadows in the street.
From the places where the oppressed meet.
Their cries echoed loudly through the air.
As they once did in Tiananmen Square.
Loudness in the silence, Darkness in the light.
They came forth with power and might.
Once the beacon of democracy, America was first.
Its pillars of society destroyed and dispersed.
Soon the cries rose everywhere, with revolt and riot.
Until one day, finally, all was quiet.
From the ashes rose a new order, corporatocracy was its name.
Rome, Mongol, Byzantine, all of history is just the same.
For man will never change in a fundamental way.
And now democracy is dead, in the USA."}),[r.LiteratureName.Sector12Crime]:new a.x({title:`Figures Show Rising Crime Rates in ${r.CityName.Sector12}`,filename:r.LiteratureName.Sector12Crime,text:`A recent study by analytics company Wilson Inc. shows a significant rise in criminal activity in ${r.CityName.Sector12}. Perhaps the most alarming part of the statistic is that most of the rise is in violent crime such as homicide and assault. According to the study, the city saw a total of 21,406 reported homicides in 2076, which is over a 20% increase compared to 2075.

CIA director David Glarow says it's too early to know whether these figures indicate the beginning of a sustained increase in crime rates, or whether the year was just an unfortunate outlier. He states that many intelligence and law enforcement agents have noticed an increase in organized crime activities, and believes that these figures may be the result of an uprising from criminal organizations such as ${r.FactionName.TheSyndicate} or the ${r.FactionName.SlumSnakes}.`}),[r.LiteratureName.ManAndMachine]:new a.x({title:"Man and the Machine",filename:r.LiteratureName.ManAndMachine,text:"In 2005 Ray Kurzweil popularized his theory of the Singularity. He predicted that the rate of technological advancement would continue to accelerate faster and faster until one day machines would be become infinitely more intelligent than humans. This point, called the Singularity, would result in a drastic transformation of the world as we know it. He predicted that the Singularity would arrive by 2045. And yet here we are, more than three decades later, where most would agree that we have not yet reached a point where computers and machines are vastly more intelligent than we are. So what gives?

The answer is that we have reached the Singularity, just not in the way we expected. The artificial superintelligence that was predicted by Kurzweil and others exists in the world today - in the form of Augmentations. Yes, those Augmentations that the rich and powerful keep to themselves enable humans to become superintelligent beings. The Singularity did not lead to a world where our machines are infinitely more intelligent than us, it led to a world where man and machine can merge to become something greater. Most of the world just doesn't know it yet."}),[r.LiteratureName.SecretSocieties]:new a.x({title:"Secret Societies",filename:r.LiteratureName.SecretSocieties,text:`The idea of secret societies has long intrigued the general public by inspiring curiosity, fascination, and distrust. People have long wondered about who these secret society members are and what they do, with the most radical of conspiracy theorists claiming that they control everything in the entire world. And while the world may never know for sure, it is likely that many secret societies do actually exist, even today.

However, the secret societies of the modern world are nothing like those that (supposedly) existed decades and centuries ago. The Freemasons, Knights Templar, and ${r.FactionName.Illuminati}, while they may have been around at the turn of the 21st century, almost assuredly do not exist today. The dominance of the Web in our everyday lives and the fact that so much of the world is now digital has given rise to a new breed of secret societies: Internet-based ones.

Commonly called 'hacker groups', Internet-based secret societies have become well-known in today's world. Some of these, such as ${r.FactionName.TheBlackHand}, are black hat groups that claim they are trying to help the oppressed by attacking the elite and powerful. Others, such as ${r.FactionName.NiteSec}, are hacktivist groups that try to push political and social agendas. Perhaps the most intriguing hacker group is the mysterious ${r.FactionName.BitRunners}, whose purpose still remains unknown.`}),[r.LiteratureName.TheFailedFrontier]:new a.x({title:"Space: The Failed Frontier",filename:r.LiteratureName.TheFailedFrontier,text:"Humans have long dreamed about spaceflight. With enduring interest, we were driven to explore the unknown and discover new worlds. We dreamed about conquering the stars. And in our quest, we pushed the boundaries of our scientific limits, and then pushed further. Space exploration lead to the development of many important technologies and new industries.

But sometime in the middle of the 21st century, all of that changed. Humanity lost its ambitions and aspirations of exploring the cosmos. The once-large funding for agencies like NASA and the European Space Agency gradually whittled away until their eventual disbanding in the 2060's. Not even militaries are fielding flights into space nowadays. The only remnants of the once great mission for cosmic conquest are the countless satellites in near-earth orbit, used for communications, espionage, and other corporate interests.

And as we continue to look at the state of space technology, it becomes more and more apparent that we will never return to that golden age of space exploration, that age where everyone dreamed of going beyond earth for the sake of discovery."}),[r.LiteratureName.CodedIntelligence]:new a.x({title:"Coded Intelligence: Myth or Reality?",filename:r.LiteratureName.CodedIntelligence,text:`Tremendous progress has been made in the field of Artificial Intelligence over the past few decades. Our autonomous vehicles and transportation systems. The electronic personal assistants that control our everyday lives. Medical, service, and manufacturing robots. All of these are examples of how far AI has come and how much it has improved our daily lives. However, the question still remains of whether AI will ever be advanced enough to re-create human intelligence.

We've certainly come close to artificial intelligence that is similar to humans. For example ${r.FactionName.OmniTekIncorporated}'s CompanionBot, a robot meant to act as a comforting friend for lonely and grieving people, is eerily human-like in its appearance, speech, mannerisms, and even movement. However its artificial intelligence isn't the same as that of humans. Not yet. It doesn't have sentience or self-awareness or consciousness.

Many neuroscientists believe that we won't ever reach the point of creating artificial human intelligence. 'At the end of the day, AI comes down to 1's and 0's, while the human brain does not. We'll never see AI that is identical to that of humans.'`}),[r.LiteratureName.SyntheticMuscles]:new a.x({title:"Synthetic Muscles",filename:r.LiteratureName.SyntheticMuscles,text:"Initial versions of synthetic muscles weren't made of anything organic but were actually crude devices made to mimic human muscle function. Some of the early iterations were actually made of common materials such as fishing lines and sewing threads due to their high strength for a cheap cost.

As technology progressed, however, advances in biomedical engineering paved the way for a new method of creating synthetic muscles. Instead of creating something that closely imitated the functionality of human muscle, scientists discovered a way of forcing the human body itself to augment its own muscle tissue using both synthetic and organic materials. This is typically done using gene therapy or chemical injections."}),[r.LiteratureName.TensionsInTechRace]:new a.x({title:"Tensions rise in global tech race",filename:r.LiteratureName.TensionsInTechRace,text:`Have we entered a new Cold War? Is WWIII just beyond the horizon?

After rumors came out that ${r.FactionName.OmniTekIncorporated} had begun developing advanced robotic supersoldiers, geopolitical tensions quickly flared between the USA, Russia, and several Asian superpowers. In a rare show of cooperation between corporations, ${r.FactionName.MegaCorp} and ${r.FactionName.ECorp} have reportedly launched hundreds of new surveillance and espionage satellites. Defense contractors such as DeltaOne and AeroCorp have been working with the CIA and NSA to prepare for conflict. Meanwhile, the rest of the world sits in earnest hoping that it never reaches full-scale war. With today's technology and firepower, a World War would assuredly mean the end of human civilization.`}),[r.LiteratureName.CostOfImmortality]:new a.x({title:"The Cost of Immortality",filename:r.LiteratureName.CostOfImmortality,text:"Evolution and advances in medical and augmentation technology has lead to drastic improvements in human mortality rates. Recent figures show that the life expectancy for humans that live in a first-world country is about 130 years of age, almost double of what it was at the turn of the century. However, this increase in average lifespan has had some significant effects on society and culture.

Due to longer lifespans and a better quality of life, many adults are holding off on having kids until much later. As a result, the percentage of youth in first-world countries has been decreasing, while the number of senior citizens is significantly increasing.

Perhaps the most alarming result of all of this is the rapidly shrinking workforce. Despite the increase in life expectancy, the typical retirement age for workers in America has remained about the same, meaning a larger and larger percentage of people in America are retirees. Furthermore, many young adults are holding off on joining the workforce because they feel that they have plenty of time left in their lives for employment, and want to 'enjoy life while they're young.' For most industries, this shrinking workforce is not a major issue as most things are handled by robots anyways. However, there are still several key industries such as engineering and education that have not been automated, and these remain in danger to this cultural phenomenon."}),[r.LiteratureName.TheHiddenWorld]:new a.x({title:"The Hidden World",filename:r.LiteratureName.TheHiddenWorld,text:`WAKE UP SHEEPLE

THE GOVERNMENT DOES NOT EXIST. CORPORATIONS DO NOT RUN SOCIETY

THE ${r.FactionName.Illuminati.toUpperCase()} ARE THE SECRET RULERS OF THE WORLD!

Yes, the ${r.FactionName.Illuminati} of legends. The ancient secret society that controls the entire world from the shadows with their invisible hand. The group of the rich and wealthy that have penetrated every major government, financial agency, and corporation in the last three hundred years.

OPEN YOUR EYES

It was the ${r.FactionName.Illuminati} that brought an end to democracy in the world. They are the driving force behind everything that happens.

THEY ARE ALL AROUND YOU

After destabilizing the world's governments, they are now entering the final stage of their master plan. They will secretly initiate global crises. Terrorism. Pandemics. World War. And out of the chaos that ensues they will build their New World Order.`}),[r.LiteratureName.TheNewGod]:new a.x({title:"The New God",filename:r.LiteratureName.TheNewGod,text:"Everyone has a moment in their life when they wonder about the bigger questions.

What's the point of all this? What is my purpose?

Some people dare to think even bigger.

What will the fate of the human race be?

We live in an era vastly different from that of 15 or even 20 years ago. We have gone beyond the limits of humanity. We have stripped ourselves of the tyranny of flesh.

The Singularity is here. The merging of man and machine. This is where humanity evolves into something greater. This is our future.

Embrace it, and you will obey a new god. The God in the Machine."}),[r.LiteratureName.NewTriads]:new a.x({title:"The New Triads",filename:r.LiteratureName.NewTriads,text:`The Triads were an ancient transnational crime syndicate based in China, Hong Kong, and other Asian territories. They were often considered one of the first and biggest criminal secret societies. While most of the branches of the Triads have been destroyed over the past few decades, the crime faction has spawned and inspired a number of other Asian crime organizations over the past few years. The most notable of these is the ${r.FactionName.Tetrads}.

It is widely believed that the ${r.FactionName.Tetrads} are a rogue group that splintered off from the Triads sometime in the mid 21st century. The founders of the ${r.FactionName.Tetrads}, all of whom were ex-Triad members, believed that the Triads were losing their purpose and direction. The ${r.FactionName.Tetrads} started off as a small group that mainly engaged in fraud and extortion. They were largely unknown until just a few years ago when they took over the illegal drug trade in all of the major Asian cities. They quickly became the most powerful crime syndicate in the continent.

Not much else is known about the ${r.FactionName.Tetrads}, or about the efforts the Asian governments and corporations are making to take down this large new crime organization. Many believe that the ${r.FactionName.Tetrads} have infiltrated the governments and powerful corporations in Asia, which has helped facilitate their recent rapid rise.`}),[r.LiteratureName.TheSecretWar]:new a.x({title:"The Secret War",filename:r.LiteratureName.TheSecretWar,text:""})}},75669:(e,t,n)=>{"use strict";n.d(t,{S:()=>o});var r=n(47323),a=n(33244);const o=(0,n(21623).KW)(a.CityName,(e=>new r.j(e)))},47323:(e,t,n)=>{"use strict";n.d(t,{j:()=>r});class r{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";this.name=e,this.locations=t,this.asciiArt=n}addLocation(e){this.locations.push(e)}}},89298:(e,t,n)=>{"use strict";let r,a,o;n.d(t,{Ms:()=>a,_i:()=>o,qr:()=>r}),function(e){e.AevumAeroCorp="AeroCorp",e.AevumBachmanAndAssociates="Bachman & Associates",e.AevumClarkeIncorporated="Clarke Incorporated",e.AevumCrushFitnessGym="Crush Fitness Gym",e.AevumECorp="ECorp",e.AevumFulcrumTechnologies="Fulcrum Technologies",e.AevumGalacticCybersystems="Galactic Cybersystems",e.AevumNetLinkTechnologies="NetLink Technologies",e.AevumPolice="Aevum Police Headquarters",e.AevumRhoConstruction="Rho Construction",e.AevumSnapFitnessGym="Snap Fitness Gym",e.AevumSummitUniversity="Summit University",e.AevumWatchdogSecurity="Watchdog Security",e.AevumCasino="Iker Molina Casino",e.ChongqingKuaiGongInternational="KuaiGong International",e.ChongqingSolarisSpaceSystems="Solaris Space Systems",e.ChongqingChurchOfTheMachineGod="Church of the Machine God",e.Sector12AlphaEnterprises="Alpha Enterprises",e.Sector12BladeIndustries="Blade Industries",e.Sector12CIA="Central Intelligence Agency",e.Sector12CarmichaelSecurity="Carmichael Security",e.Sector12CityHall="Sector-12 City Hall",e.Sector12DeltaOne="DeltaOne",e.Sector12FoodNStuff="FoodNStuff",e.Sector12FourSigma="Four Sigma",e.Sector12IcarusMicrosystems="Icarus Microsystems",e.Sector12IronGym="Iron Gym",e.Sector12JoesGuns="Joe's Guns",e.Sector12MegaCorp="MegaCorp",e.Sector12NSA="National Security Agency",e.Sector12PowerhouseGym="Powerhouse Gym",e.Sector12RothmanUniversity="Rothman University",e.Sector12UniversalEnergy="Universal Energy",e.NewTokyoDefComm="DefComm",e.NewTokyoGlobalPharmaceuticals="Global Pharmaceuticals",e.NewTokyoNoodleBar="Noodle Bar",e.NewTokyoVitaLife="VitaLife",e.NewTokyoArcade="Arcade",e.IshimaNovaMedical="Nova Medical",e.IshimaOmegaSoftware="Omega Software",e.IshimaStormTechnologies="Storm Technologies",e.IshimaGlitch="0x6C1",e.VolhavenCompuTek="CompuTek",e.VolhavenHeliosLabs="Helios Labs",e.VolhavenLexoCorp="LexoCorp",e.VolhavenMilleniumFitnessGym="Millenium Fitness Gym",e.VolhavenNWO="NWO",e.VolhavenOmniTekIncorporated="OmniTek Incorporated",e.VolhavenOmniaCybersystems="Omnia Cybersystems",e.VolhavenSysCoreSecurities="SysCore Securities",e.VolhavenZBInstituteOfTechnology="ZB Institute of Technology",e.Hospital="Hospital",e.Slums="The Slums",e.TravelAgency="Travel Agency",e.WorldStockExchange="World Stock Exchange",e.Void="The Void"}(r||(r={})),function(e){e.Aevum="Aevum",e.Chongqing="Chongqing",e.Sector12="Sector-12",e.NewTokyo="New Tokyo",e.Ishima="Ishima",e.Volhaven="Volhaven"}(a||(a={})),function(e){e.Company="Company",e.Gym="Gym",e.Hospital="Hospital",e.Slums="Slums",e.Special="Special",e.StockMarket="Stock Market",e.TechVendor="Tech Vendor",e.TravelAgency="Travel Agency",e.University="University",e.Casino="Casino"}(o||(o={}))},77263:(e,t,n)=>{"use strict";n.d(t,{Y:()=>a});var r=n(33244);class a{city=null;costMult=0;expMult=0;name=r.LocationName.Void;types=[];techVendorMaxRam=0;techVendorMinRam=0;constructor(e){e.city&&(this.city=e.city),e.costMult&&(this.costMult=e.costMult),e.expMult&&(this.expMult=e.expMult),e.infiltrationData&&(this.infiltrationData=e.infiltrationData),e.name&&(this.name=e.name),e.types&&(this.types=e.types),e.techVendorMaxRam&&(this.techVendorMaxRam=e.techVendorMaxRam),e.techVendorMinRam&&(this.techVendorMinRam=e.techVendorMinRam)}}},81881:(e,t,n)=>{"use strict";n.d(t,{t:()=>s});var r=n(75669),a=n(77263),o=n(33244),i=n(90356);const s={};function l(e){if(!e.name)throw new Error("Invalid constructor parameters for Location. No 'name' property");return s[e.name]&&console.warn(`Property with name ${e.name} already exists and is being overwritten`),s[e.name]=new a.Y(e),s[e.name]}r.S[o.CityName.Aevum].asciiArt="\n [aevum police headquarters] 26 \n o \n I \\ [bachman & associates] \n \\ 56 B \n x \\ [summit university] \n \\ \\ 28 \n \\ [snap fitness gym] x o--L-----------N \n K \\ / \n \\ \\ Q [casino] \n x 58 \\ / [travel agency] \n \\ 94 95 o \n 90 x 59 o------o | \n \\ / \\ | 98 102 103 \n o--------O------x----o 93 96 o-----+------------o o----o \n \\ | \\ / \n [hospital] \\ 61 [ecorp] x 31 99 o-F-o 101 \n o | \n | o---E-- | [fulcrum tech.] \n x 62 / A [aerocorp] \n [crush fitness gym] | / | \n | / | \n o--------D------+--o o \n | |\\ [rho construction] \n H [netlink tech.] | J \n | | \\ \n | 34 x \\ \n [clarke inc.] C | \\ [world stock exchange] \n | | \\ \n | | o-M-------R--------o \n[galactic cybersystems] G 35 x \n | [watchdog security] \n | \n 67 o \n \n [the slums] P ",r.S[o.CityName.Chongqing].asciiArt="\n | \n 75 o \n \\ \n o 76 \n 7 | | \n | + 77 \n [world stock exchange] F | \n \\ o 78 [kuaigong international] \n \\ / \n 38 o----x--x------x------A------G-- \n / 39 | 41 [church] \n 37 o + 79 o--x--x-C-0 \n / | / \n / x-----+-----x-----0 [hospital] \n[solaris space system] B | \n | + 80 \n | | \n 34 o E [travel agency] \n | \n | \n x 82 \n [the slums] D ",r.S[o.CityName.Ishima].asciiArt="\n o 59 \n o o | \n [storm tech.] | | G [world stock exchange] \n | | 28 | \n 23 o--C------o--------+----x----o | \n / / 25 | 27 \\ x 57 \n / / | \\ | \n / / | \\ | \n o 22 o | \\| 29/56 \n | | o \n | [hospital] D / \\ 3 2 1 \n o | / \\ o-------x------o \n / o / \\ / \n 48 o / 55 x \\ / \n \\ / / x [glitch] \n \\ / [nova medical] / 4/30 \\ \n 49 x A \\ H \n / \\ / \\ \n / \\ [travel agency] F o 31 \n / \\ 51 / \n / o----B------x-----o \n o 50 52 \n [omega soft.] \n [the slums] E ",r.S[o.CityName.NewTokyo].asciiArt="\n \n \n o \n \\ \n [arcade] E [defcomm] \n \\ \n o--x---A--x--o [travel agency] \n 7 8 10 H \n [vitalife] o 12 [global pharmaceuticals] \n | \n o--D-x----x-------x-C-+--------x--x-B-x---x-o \n 21 22 23 \\ 24 25 26 27 \n \\ \n [noodle bar] x 14 \n \\ \n \\ \n [hospital] o 15 [world stock exchange] \n | \n o--x--F--x-----x-----x---+---x----x--I--x-o \n | \n | \n o 17 \n \n \n \n G [the slums] \n ",r.S[o.CityName.Sector12].asciiArt="\n 78 o 97 \n o [icarus microsystems] / \n N [powerhouse gym] o I \n 1 | | / \n o-----+---x----o 4 A [alpha ent.] o-------o / \n | 3 \\ | \\ / \n | \\ | [iron gym] x 95 \n (79) x \\ | / \\ \n | o-E----+----x----J--o 10 / o----T--o \n | | 8 \\ 94 x \n 80 x [city hall] | x 11 / [world stock exchange]\n | | \\ / \n | C [cia] \\ / \n Q [hospital] | F P [universal energy] \n | o [deltaone] \\ / \n | 35 o---------x 13/92/36 \n L [megacorp] 33 / / \\ \n | o------------o 34 / \\ \n (29) | / [carmichael sec.] D \\ \n o-----+-----x------o / O [rothman university] \n | 31 32 [nsa] M \n | / \n B [blade industries] H \n | / [four sigma] \n | [joe's guns] / \n | / \n 85 o--G--------K--------S-------o 88 [the slums] R \n \n [foodnstuff] [travel agency] ",r.S[o.CityName.Volhaven].asciiArt="\n [omnia cybersystems] \n 17 66 68 \n o o------G-------o \n \\ / \\ \n \\ o 65 o 69 \n [syscore sec.] H | | \n \\ | | [millenium fitness gym] \n \\ | 21 22 23 24 | 26 \n o----+--x--x----x---x---+-----x-------D-----o \n 19 | | 28 \n | F [omnitek inc.] \n [hospital] J 63 o \n | / 72 \n 3 | 5 6 / 9 \n o--------+----x-----x----+----------M-------o \n / | | \n / 61 x [helios labs] B [world stock exchange] \n [travel agency] L | | \n / | o \n / E [nwo] / 75 \n / [computek] | / \n / A-------o------I-----o \n 1 o | | \n | [zb] o 77 \n [lexocorp] C \n | \n o \n 57 \n \n \n [the slums] K ";for(const e of i.b){const t=l(e),n=t.city;if(null===n)for(const e of Object.values(o.CityName))r.S[e].addLocation(t.name);else r.S[n].addLocation(t.name)}},90356:(e,t,n)=>{"use strict";n.d(t,{b:()=>a});var r=n(33244);const a=[{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:8.18},name:r.LocationName.AevumAeroCorp,types:[r.LocationType.Company]},{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:8.19},name:r.LocationName.AevumBachmanAndAssociates,types:[r.LocationType.Company]},{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:9.55},name:r.LocationName.AevumClarkeIncorporated,types:[r.LocationType.Company]},{city:r.CityName.Aevum,costMult:3,expMult:2,name:r.LocationName.AevumCrushFitnessGym,types:[r.LocationType.Gym]},{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:37,startingSecurityLevel:17.02},name:r.LocationName.AevumECorp,types:[r.LocationType.Company,r.LocationType.TechVendor],techVendorMaxRam:512,techVendorMinRam:128},{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:15.54},name:r.LocationName.AevumFulcrumTechnologies,types:[r.LocationType.Company,r.LocationType.TechVendor],techVendorMaxRam:1024,techVendorMinRam:256},{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:7.89},name:r.LocationName.AevumGalacticCybersystems,types:[r.LocationType.Company]},{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:6,startingSecurityLevel:3.29},name:r.LocationName.AevumNetLinkTechnologies,types:[r.LocationType.Company,r.LocationType.TechVendor],techVendorMaxRam:64,techVendorMinRam:8},{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:6,startingSecurityLevel:5.35},name:r.LocationName.AevumPolice,types:[r.LocationType.Company]},{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:5,startingSecurityLevel:5.02},name:r.LocationName.AevumRhoConstruction,types:[r.LocationType.Company]},{city:r.CityName.Aevum,costMult:10,expMult:5,name:r.LocationName.AevumSnapFitnessGym,types:[r.LocationType.Gym]},{city:r.CityName.Aevum,costMult:4,expMult:3,name:r.LocationName.AevumSummitUniversity,types:[r.LocationType.University]},{city:r.CityName.Aevum,infiltrationData:{maxClearanceLevel:7,startingSecurityLevel:5.85},name:r.LocationName.AevumWatchdogSecurity,types:[r.LocationType.Company]},{city:r.CityName.Aevum,name:r.LocationName.AevumCasino,types:[r.LocationType.Casino]},{city:r.CityName.Chongqing,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:16.25},name:r.LocationName.ChongqingKuaiGongInternational,types:[r.LocationType.Company]},{city:r.CityName.Chongqing,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:12.59},name:r.LocationName.ChongqingSolarisSpaceSystems,types:[r.LocationType.Company]},{city:r.CityName.Ishima,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:5.02},name:r.LocationName.IshimaNovaMedical,types:[r.LocationType.Company]},{city:r.CityName.Ishima,infiltrationData:{maxClearanceLevel:10,startingSecurityLevel:3.2},name:r.LocationName.IshimaOmegaSoftware,types:[r.LocationType.Company,r.LocationType.TechVendor],techVendorMaxRam:128,techVendorMinRam:4},{city:r.CityName.Ishima,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:5.38},name:r.LocationName.IshimaStormTechnologies,types:[r.LocationType.Company,r.LocationType.TechVendor],techVendorMaxRam:512,techVendorMinRam:32},{city:r.CityName.NewTokyo,infiltrationData:{maxClearanceLevel:17,startingSecurityLevel:7.18},name:r.LocationName.NewTokyoDefComm,types:[r.LocationType.Company]},{city:r.CityName.NewTokyo,infiltrationData:{maxClearanceLevel:20,startingSecurityLevel:5.9},name:r.LocationName.NewTokyoGlobalPharmaceuticals,types:[r.LocationType.Company]},{city:r.CityName.NewTokyo,infiltrationData:{maxClearanceLevel:5,startingSecurityLevel:2.5},name:r.LocationName.NewTokyoNoodleBar,types:[r.LocationType.Company,r.LocationType.Special]},{city:r.CityName.NewTokyo,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:5.52},name:r.LocationName.NewTokyoVitaLife,types:[r.LocationType.Company,r.LocationType.Special]},{city:r.CityName.NewTokyo,name:r.LocationName.NewTokyoArcade,types:[r.LocationType.Special]},{city:r.CityName.Sector12,infiltrationData:{maxClearanceLevel:10,startingSecurityLevel:3.62},name:r.LocationName.Sector12AlphaEnterprises,types:[r.LocationType.Company,r.LocationType.TechVendor],techVendorMaxRam:8,techVendorMinRam:2},{city:r.CityName.Sector12,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:10.59},name:r.LocationName.Sector12BladeIndustries,types:[r.LocationType.Company]},{city:r.CityName.Sector12,name:r.LocationName.Sector12CIA,types:[r.LocationType.Company]},{city:r.CityName.Sector12,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:4.66},name:r.LocationName.Sector12CarmichaelSecurity,types:[r.LocationType.Company]},{city:r.CityName.Sector12,name:r.LocationName.Sector12CityHall,types:[r.LocationType.Special]},{city:r.CityName.Sector12,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:5.9},name:r.LocationName.Sector12DeltaOne,types:[r.LocationType.Company]},{city:r.CityName.Sector12,name:r.LocationName.Sector12FoodNStuff,types:[r.LocationType.Company]},{city:r.CityName.Sector12,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:8.18},name:r.LocationName.Sector12FourSigma,types:[r.LocationType.Company]},{city:r.CityName.Sector12,infiltrationData:{maxClearanceLevel:17,startingSecurityLevel:6.02},name:r.LocationName.Sector12IcarusMicrosystems,types:[r.LocationType.Company]},{city:r.CityName.Sector12,expMult:1,costMult:1,name:r.LocationName.Sector12IronGym,types:[r.LocationType.Gym]},{city:r.CityName.Sector12,infiltrationData:{maxClearanceLevel:5,startingSecurityLevel:3.13},name:r.LocationName.Sector12JoesGuns,types:[r.LocationType.Company]},{city:r.CityName.Sector12,infiltrationData:{maxClearanceLevel:31,startingSecurityLevel:16.36},name:r.LocationName.Sector12MegaCorp,types:[r.LocationType.Company]},{city:r.CityName.Sector12,name:r.LocationName.Sector12NSA,types:[r.LocationType.Company,r.LocationType.Special]},{city:r.CityName.Sector12,costMult:20,expMult:10,name:r.LocationName.Sector12PowerhouseGym,types:[r.LocationType.Gym]},{city:r.CityName.Sector12,costMult:3,expMult:2,name:r.LocationName.Sector12RothmanUniversity,types:[r.LocationType.University]},{city:r.CityName.Sector12,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:5.9},name:r.LocationName.Sector12UniversalEnergy,types:[r.LocationType.Company]},{city:r.CityName.Volhaven,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:3.59},name:r.LocationName.VolhavenCompuTek,types:[r.LocationType.Company,r.LocationType.TechVendor],techVendorMaxRam:256,techVendorMinRam:8},{city:r.CityName.Volhaven,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:7.28},name:r.LocationName.VolhavenHeliosLabs,types:[r.LocationType.Company]},{city:r.CityName.Volhaven,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:4.35},name:r.LocationName.VolhavenLexoCorp,types:[r.LocationType.Company]},{city:r.CityName.Volhaven,costMult:7,expMult:4,name:r.LocationName.VolhavenMilleniumFitnessGym,types:[r.LocationType.Gym]},{city:r.CityName.Volhaven,infiltrationData:{maxClearanceLevel:50,startingSecurityLevel:8.53},name:r.LocationName.VolhavenNWO,types:[r.LocationType.Company]},{city:r.CityName.Volhaven,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:7.74},name:r.LocationName.VolhavenOmniTekIncorporated,types:[r.LocationType.Company,r.LocationType.TechVendor],techVendorMaxRam:1024,techVendorMinRam:128},{city:r.CityName.Volhaven,infiltrationData:{maxClearanceLevel:22,startingSecurityLevel:6},name:r.LocationName.VolhavenOmniaCybersystems,types:[r.LocationType.Company]},{city:r.CityName.Volhaven,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:4.77},name:r.LocationName.VolhavenSysCoreSecurities,types:[r.LocationType.Company]},{city:r.CityName.Volhaven,costMult:5,expMult:4,name:r.LocationName.VolhavenZBInstituteOfTechnology,types:[r.LocationType.University]},{city:null,name:r.LocationName.Hospital,types:[r.LocationType.Hospital]},{city:null,name:r.LocationName.Slums,types:[r.LocationType.Slums]},{city:null,name:r.LocationName.TravelAgency,types:[r.LocationType.TravelAgency]},{city:null,name:r.LocationName.WorldStockExchange,types:[r.LocationType.StockMarket]},{city:r.CityName.Chongqing,name:r.LocationName.ChongqingChurchOfTheMachineGod,types:[r.LocationType.Special]},{city:r.CityName.Ishima,name:r.LocationName.IshimaGlitch,types:[r.LocationType.Special]}]},37629:(e,t,n)=>{"use strict";n.d(t,{f:()=>l});var r=n(67294),a=n(6332),o=n(49173),i=n(56798),s=n(17575);function l(e){return r.createElement(r.Fragment,null,r.createElement(s.Z,{title:r.createElement("span",{dangerouslySetInnerHTML:{__html:function(){const t=o.J5.getNextCompanyPosition(e.company,e.entryPosType);return null==t?"":e.company.hasPosition(t)?(0,a.c)(e.company,t,!0):""}()}})},r.createElement(i.Z,{onClick:e.onClick},e.text)))}},33189:(e,t,n)=>{"use strict";n.d(t,{K:()=>m});var r,a=n(67294),o=n(56798),i=n(78758),s=n(58636),l=n(18037),c=n(67324),u=n(30120);function m(){const[e,t]=(0,a.useState)(r.None);function n(e){t(e)}return a.createElement(a.Fragment,null,e===r.None&&a.createElement(u.Z,{sx:{display:"grid",width:"fit-content"}},a.createElement(o.Z,{onClick:()=>n(r.Coin)},"Play coin flip"),a.createElement(o.Z,{onClick:()=>n(r.Slots)},"Play slots"),a.createElement(o.Z,{onClick:()=>n(r.Roulette)},"Play roulette"),a.createElement(o.Z,{onClick:()=>n(r.Blackjack)},"Play blackjack (",i.Z," decks)")),e!==r.None&&a.createElement(a.Fragment,null,a.createElement(o.Z,{onClick:()=>n(r.None)},"Stop playing"),e===r.Coin&&a.createElement(s.P,null),e===r.Slots&&a.createElement(c.F,null),e===r.Roulette&&a.createElement(l.c,null),e===r.Blackjack&&a.createElement(i.y,null)))}!function(e){e.None="none",e.Coin="coin",e.Slots="slots",e.Roulette="roulette",e.Blackjack="blackjack"}(r||(r={}))},14533:(e,t,n)=>{"use strict";n.d(t,{L:()=>k});var r=n(67294),a=n(75669),o=n(33244),i=n(81881),s=n(51087),l=n(49173),c=n(52947),u=n(24815),m=n(81138),f=n(56798),h=n(77541),d=n(73327);const p=(0,h.Z)((e=>(0,d.Z)({location:{color:e.colors.white,whiteSpace:"nowrap",margin:"0px",padding:"0px",cursor:"pointer"}})));function g(e){e.name===o.LocationName.TravelAgency?c.F.toPage(u.T3.Travel):e.name===o.LocationName.WorldStockExchange?c.F.toPage(u.T3.StockMarket):c.F.toPage(u.T3.Location,{location:e})}function y(e,t){let n="X";return e.types.includes(o.LocationType.Company)&&(n="C"),e.types.includes(o.LocationType.Gym)&&(n="G"),e.types.includes(o.LocationType.Hospital)&&(n="H"),e.types.includes(o.LocationType.Slums)&&(n="S"),e.types.includes(o.LocationType.StockMarket)&&(n="$"),e.types.includes(o.LocationType.TechVendor)&&(n="T"),e.types.includes(o.LocationType.TravelAgency)&&(n="T"),e.types.includes(o.LocationType.University)&&(n="U"),e.types.includes(o.LocationType.Casino)&&(n="¢"),e.types.includes(o.LocationType.Special)&&(n="?"),e?r.createElement("span",{"aria-label":e.name,key:e.name,className:t,onClick:()=>g(e)},r.createElement("b",null,n)):r.createElement("span",null,"*")}function b(e){const t=/[A-Z]/g,n={A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25},a=p(),o=r=>{const o=[],s=[];let l=null;for(;null!==(l=t.exec(r));)s.push(l);if(0===s.length)return o.push(r),o;for(let t=0;tr.createElement(r.Fragment,{key:e},r.createElement(f.Z,{onClick:()=>g(i.t[e])},e),r.createElement("br",null))));return r.createElement(r.Fragment,null,t)}function k(){const e=a.S[l.J5.city];return r.createElement(r.Fragment,null,r.createElement(m.Z,null,e.name),s.Z.DisableASCIIArt?r.createElement(v,{city:e}):r.createElement(b,{city:e}))}},37908:(e,t,n)=>{"use strict";n.d(t,{k:()=>E});var r=n(67294),a=n(81138),o=n(56798),i=n(17575),s=n(30120),l=n(37629),c=n(81881),u=n(33244),m=n(62586),f=n(11124),h=n(17365),d=n(41519),p=n(52947),g=n(24815),y=n(49173),b=n(30195),v=n(75522),k=n(88775),w=n(68507);function E(e){const[t,n]=(0,r.useState)(!1),E=(0,k.S)(200),S=m.O[e.companyName];if(null==S)throw new Error(`CompanyLocation component constructed with invalid company: ${e.companyName}`);const C=c.t[e.companyName];if(null==C)throw new Error(`CompanyLocation component constructed with invalid location: ${e.companyName}`);const x=y.J5.jobs[e.companyName]?y.J5.jobs[e.companyName]:null,N=x?f.A[x]:null;y.J5.location=(0,w.$)(e.companyName);const M=null!=x,A=S.getFavorGain();return r.createElement(r.Fragment,null,M&&r.createElement(r.Fragment,null,r.createElement(a.Z,null,"Job Title: ",x),r.createElement(a.Z,null,"-------------------------"),r.createElement(s.Z,{display:"flex"},r.createElement(i.Z,{title:r.createElement(r.Fragment,null,"You will have ",r.createElement(d.T,{favor:S.favor+A})," company favor upon resetting after installing Augmentations")},r.createElement(a.Z,null,"Company reputation: ",r.createElement(h.Y,{reputation:S.playerReputation})))),r.createElement(a.Z,null,"-------------------------"),r.createElement(s.Z,{display:"flex"},r.createElement(i.Z,{title:r.createElement(r.Fragment,null,"Company favor increases the rate at which you earn reputation for this company by 1% per favor. Company favor is gained whenever you reset after installing Augmentations. The amount of favor you gain depends on how much reputation you have with the company.")},r.createElement(a.Z,null,"Company Favor: ",r.createElement(d.T,{favor:S.favor})))),r.createElement(a.Z,null,"-------------------------"),r.createElement("br",null)),r.createElement(s.Z,{sx:{display:"grid",width:"fit-content"}},M&&r.createElement(s.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},r.createElement(o.Z,{onClick:function(t){t.isTrusted&&N&&(y.J5.startWork(new v.t({singularity:!1,companyName:e.companyName})),y.J5.startFocusing(),p.F.toPage(g.T3.Work))}},"Work"),r.createElement(o.Z,{onClick:()=>n(!0)},"Quit"),r.createElement(b.j,{companyName:e.companyName,company:S,onQuit:E,open:t,onClose:()=>n(!1)})),S.hasAgentPositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.agent0],onClick:function(e){e.isTrusted&&(y.J5.applyForAgentJob(),E())},text:"Apply for Agent Job"}),S.hasBusinessConsultantPositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.businessConsult0],onClick:function(e){e.isTrusted&&(y.J5.applyForBusinessConsultantJob(),E())},text:"Apply for Business Consultant Job"}),S.hasBusinessPositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.business0],onClick:function(e){e.isTrusted&&(y.J5.applyForBusinessJob(),E())},text:"Apply for Business Job"}),S.hasEmployeePositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.employee],onClick:function(e){e.isTrusted&&(y.J5.applyForEmployeeJob(),E())},text:"Apply to be an Employee"}),S.hasEmployeePositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.employeePT],onClick:function(e){e.isTrusted&&(y.J5.applyForPartTimeEmployeeJob(),E())},text:"Apply to be a part-time Employee"}),S.hasITPositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.IT0],onClick:function(e){e.isTrusted&&(y.J5.applyForItJob(),E())},text:"Apply for IT Job"}),S.hasSecurityPositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.security0],onClick:function(e){e.isTrusted&&(y.J5.applyForSecurityJob(),E())},text:"Apply for Security Job"}),S.hasSoftwareConsultantPositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.softwareConsult0],onClick:function(e){e.isTrusted&&(y.J5.applyForSoftwareConsultantJob(),E())},text:"Apply for Software Consultant Job"}),S.hasSoftwarePositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.software0],onClick:function(e){e.isTrusted&&(y.J5.applyForSoftwareJob(),E())},text:"Apply for Software Job"}),S.hasWaiterPositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.waiter],onClick:function(e){e.isTrusted&&(y.J5.applyForWaiterJob(),E())},text:"Apply to be a Waiter"}),S.hasWaiterPositions()&&r.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.waiterPT],onClick:function(e){e.isTrusted&&(y.J5.applyForPartTimeWaiterJob(),E())},text:"Apply to be a part-time Waiter"}),null!=C.infiltrationData&&r.createElement(o.Z,{onClick:function(t){if(t.isTrusted){if(!C.infiltrationData)throw new Error(`trying to start infiltration at ${e.companyName} but the infiltrationData is null`);p.F.toPage(g.T3.Infiltration,{location:C})}}},"Infiltrate Company")))}},29931:(e,t,n)=>{"use strict";n.d(t,{v:()=>u});var r=n(67294),a=n(56798),o=n(17575),i=n(81138),s=n(49173),l=n(72360),c=n(70109);function u(e){const t=s.J5.getHomeComputer(),n=t.cpuCores>=8;if(n)return r.createElement(a.Z,null,"Upgrade 'home' cores - MAX");const u=s.J5.getUpgradeHomeCoresCost();return r.createElement(o.Z,{title:r.createElement(c.Z,null,"\\(\\large{cost = 10^9 \\cdot 7.5 ^{\\text{cores}}}\\)")},r.createElement("span",null,r.createElement("br",null),r.createElement(i.Z,null,r.createElement("i",null,"\"Cores increase the effectiveness of grow() and weaken() on 'home'\"")),r.createElement("br",null),r.createElement(a.Z,{disabled:!s.J5.canAfford(u),onClick:function(){n||s.J5.canAfford(u)&&(s.J5.loseMoney(u,"servers"),t.cpuCores++,e.rerender())}},"Upgrade 'home' cores (",t.cpuCores," -> ",t.cpuCores+1,") - ",r.createElement(l.W,{money:u,forPurchase:!0}))))}},24025:(e,t,n)=>{"use strict";n.d(t,{d:()=>x});var r=n(67294),a=n(81138),o=n(56798),i=n(37908),s=n(83712),l=n(33741),c=n(66137),u=n(27806),m=n(80584),f=n(66927),h=n(88412),d=n(33189),p=n(33244),g=n(51087),y=n(2517),b=n(97467),v=n(93989),k=n(52947),w=n(24815),E=n(16014),S=n(17575),C=n(50862);function x(e){let{loc:t}=e;const n=function(){const e=[];if(t.types.includes(p.LocationType.Company)){if(!(0,C.m)("CompanyName").isMember(t.name))throw new Error(`Location name ${t.name} is for a company but is not a company name.`);e.push(r.createElement(i.k,{key:"CompanyLocation",companyName:t.name}))}return t.types.includes(p.LocationType.Gym)&&e.push(r.createElement(s._,{key:"GymLocation",loc:t})),t.types.includes(p.LocationType.Hospital)&&e.push(r.createElement(l.r,{key:"HospitalLocation"})),t.types.includes(p.LocationType.Slums)&&e.push(r.createElement(c.w,{key:"SlumsLocation"})),t.types.includes(p.LocationType.Special)&&e.push(r.createElement(u.M,{key:"SpecialLocation",loc:t})),t.types.includes(p.LocationType.TechVendor)&&e.push(r.createElement(m.m,{key:"TechVendorLocation",loc:t})),t.types.includes(p.LocationType.TravelAgency)&&e.push(r.createElement(f.Z,{key:"TravelAgencyRoot"})),t.types.includes(p.LocationType.University)&&e.push(r.createElement(h.L,{key:"UniversityLocation",loc:t})),t.types.includes(p.LocationType.Casino)&&e.push(r.createElement(d.K,{key:"CasinoLocation"})),e}(),x=E.q.find((e=>e.specialName===t.name)),N=(0,b.WT)(x?x.hostname:""),M=null!==N&&(0,y.T_)(N);return r.createElement(r.Fragment,null,r.createElement(o.Z,{onClick:()=>k.F.toPage(w.T3.City)},"Return to World"),r.createElement(a.Z,{variant:"h4",sx:{mt:1}},M&&!g.Z.DisableTextEffects?r.createElement(S.Z,{title:`Backdoor installed on ${t.name}.`},r.createElement("span",null,r.createElement(v.q,{content:t.name}))):t.name),n)}},83712:(e,t,n)=>{"use strict";n.d(t,{_:()=>h});var r=n(67294),a=n(56798),o=n(49173),i=n(72360),s=n(52947),l=n(24815),c=n(30120),u=n(94337),m=n(97093),f=n(33244);function h(e){function t(t){o.J5.startWork(new u.LA({classType:t,location:e.loc.name,singularity:!1})),o.J5.startFocusing(),s.F.toPage(l.T3.Work)}const n=(0,m.sk)(u.PZ[f.GymType.strength],e.loc);return r.createElement(c.Z,{sx:{display:"grid",width:"fit-content"}},r.createElement(a.Z,{onClick:()=>t(f.GymType.strength)},"Train Strength (",r.createElement(i.W,{money:n,forPurchase:!0})," / sec)"),r.createElement(a.Z,{onClick:()=>t(f.GymType.defense)},"Train Defense (",r.createElement(i.W,{money:n,forPurchase:!0})," / sec)"),r.createElement(a.Z,{onClick:()=>t(f.GymType.dexterity)},"Train Dexterity (",r.createElement(i.W,{money:n,forPurchase:!0})," / sec)"),r.createElement(a.Z,{onClick:()=>t(f.GymType.agility)},"Train Agility (",r.createElement(i.W,{money:n,forPurchase:!0})," / sec)"))}},33741:(e,t,n)=>{"use strict";n.d(t,{r:()=>u});var r=n(67294),a=n(56798),o=n(49173),i=n(2228),s=n(72360),l=n(39463),c=n(88775);function u(){const e=(0,c.S)(200);return r.createElement(a.Z,{onClick:function(t){if(!t.isTrusted)return;if(o.J5.hp.current<0&&(o.J5.hp.current=0),o.J5.hp.current>=o.J5.hp.max)return;const n=(0,i.B)();o.J5.loseMoney(n,"hospitalization"),o.J5.hp.current=o.J5.hp.max,e(),(0,l.X)(r.createElement(r.Fragment,null,"You were healed to full health! The hospital billed you for ",r.createElement(s.W,{money:n})))},style:{display:"block"}},"Get treatment for wounds - ",r.createElement(s.W,{money:(0,i.B)(),forPurchase:!0}))}},96363:(e,t,n)=>{"use strict";n.d(t,{a:()=>h});var r=n(67294),a=n(89673),o=n(22115),i=n(72360),s=n(48672),l=n(49173),c=n(81138),u=n(66351),m=n(56798),f=n(81055);function h(e){const[t,n]=(0,r.useState)("");function h(){(0,a.y7)(t,e.ram,e.cost),e.onClose()}return r.createElement(s.u,{open:e.open,onClose:e.onClose},r.createElement(c.Z,null,"Would you like to purchase a new server with ",(0,o.$1)(e.ram)," of RAM for"," ",r.createElement(i.W,{money:e.cost,forPurchase:!0}),"?"),r.createElement("br",null),r.createElement("br",null),r.createElement(c.Z,null," Please enter the server hostname below:"),r.createElement("br",null),r.createElement(u.Z,{autoFocus:!0,onKeyUp:function(e){e.key===f.F.ENTER&&h()},onChange:function(e){n(e.target.value)},type:"text",placeholder:"Unique Hostname",InputProps:{endAdornment:r.createElement(m.Z,{onClick:h,disabled:!l.J5.canAfford(e.cost)||""===t},"Buy")}}))}},33285:(e,t,n)=>{"use strict";n.d(t,{C:()=>d});var r=n(67294),a=n(56798),o=n(17575),i=n(81138),s=n(72938),l=n(49173),c=n(89673),u=n(72360),m=n(22115),f=n(70109),h=n(97740);function d(e){const t=l.J5.getHomeComputer();if(t.maxRam>=s.t.HomeComputerMaxRam)return r.createElement(a.Z,null,"Upgrade 'home' RAM - MAX");const n=l.J5.getUpgradeHomeRamCost(),d=1===h.dQ.HomeComputerRamCost?"":`\\cdot ${h.dQ.HomeComputerRamCost}`;return r.createElement(o.Z,{title:r.createElement(f.Z,null,`\\(\\large{cost = ram \\cdot 3.2 \\cdot 10^4 \\cdot 1.58^{log_2{(ram)}}} ${d}\\)`)},r.createElement("span",null,r.createElement("br",null),r.createElement(i.Z,null,r.createElement("i",null,"\"More RAM means more scripts on 'home'\"")),r.createElement("br",null),r.createElement(a.Z,{disabled:!l.J5.canAfford(n),onClick:function(){(0,c.ax)(),e.rerender()}},"Upgrade 'home' RAM (",(0,m.$1)(t.maxRam)," -> ",(0,m.$1)(2*t.maxRam),") - ",r.createElement(u.W,{money:n,forPurchase:!0}))))}},66137:(e,t,n)=>{"use strict";n.d(t,{w:()=>h});var r=n(67294),a=n(56798),o=n(17575),i=n(35333),s=n(22115),l=n(52947),c=n(24815),u=n(49173),m=n(30120),f=n(88775);function h(){(0,f.S)(1e3);const e=Object.values(i.W);return r.createElement(m.Z,{sx:{display:"grid",width:"fit-content"}},e.map((e=>r.createElement(o.Z,{key:e.workName,title:e.tooltipText},r.createElement(a.Z,{onClick:t=>function(e,t){e.isTrusted&&(t.commit(),l.F.toPage(c.T3.Work),u.J5.focus=!0)}(t,e)},e.type," (",(0,s.T3)(e.successRate(u.J5))," chance of success)")))))}},27806:(e,t,n)=>{"use strict";n.d(t,{M:()=>C});var r=n(67294),a=n(81138),o=n(56798),i=n(10458),s=n(33244),l=n(58427),c=n(94542),u=n(52947),m=n(24815),f=n(49173),h=n(39463),d=n(32369),p=n(77732),g=n(52107),y=n(27889),b=n(93989),v=n(55782),k=n(3853),w=n(97467),E=n(96168),S=n(97740);function C(e){const t=(0,r.useState)(!1)[1];function n(){if(f.J5.bladeburner)u.F.toPage(m.T3.Bladeburner);else if(f.J5.skills.strength>=100&&f.J5.skills.defense>=100&&f.J5.skills.dexterity>=100&&f.J5.skills.agility>=100){f.J5.startBladeburner(),(0,h.X)("You have been accepted into the Bladeburner division!"),t((e=>!e));const e=document.getElementById("world-menu-header");e instanceof HTMLElement&&(e.click(),e.click())}else(0,h.X)("Rejected! Please apply again when you have 100 of each combat stat (str, def, dex, agi)")}function C(){const[e,t]=(0,r.useState)(!1);return f.J5.canAccessCorporation()?r.createElement(r.Fragment,null,r.createElement(o.Z,{disabled:!f.J5.canAccessCorporation()||!!f.J5.corporation,onClick:()=>t(!0)},"Create a Corporation"),r.createElement(i.w,{open:e,onClose:()=>t(!1)})):r.createElement(r.Fragment,null,r.createElement(a.Z,null,r.createElement("i",null,"A businessman is yelling at a clerk. You should come back later.")))}function x(){const e=l.i[s.FactionName.ChurchOfTheMachineGod];f.J5.factions.includes(s.FactionName.ChurchOfTheMachineGod)||(0,c.Bj)(e),f.J5.augmentations.some((e=>e.name===s.AugmentationName.StaneksGift1))||f.J5.queuedAugmentations.some((e=>e.name===s.AugmentationName.StaneksGift1))||(0,y.kk)({name:s.AugmentationName.StaneksGift1,level:1}),u.F.toPage(m.T3.StaneksGift)}switch(e.loc.name){case s.LocationName.NewTokyoVitaLife:return f.J5.canAccessGrafting()?r.createElement(o.Z,{onClick:function(){u.F.toPage(m.T3.Grafting)},sx:{my:5}},"Enter the secret lab"):r.createElement(r.Fragment,null);case s.LocationName.Sector12CityHall:return S.dQ.CorporationSoftcap<.15&&r.createElement(r.Fragment,null)||r.createElement(C,null);case s.LocationName.Sector12NSA:return function(){if(!f.J5.canAccessBladeburner()||0===S.dQ.BladeburnerRank)return r.createElement(r.Fragment,null);const e=f.J5.bladeburner?"Enter Bladeburner Headquarters":"Apply to Bladeburner Division";return r.createElement(r.Fragment,null,r.createElement("br",null),r.createElement(o.Z,{onClick:n},e))}();case s.LocationName.NewTokyoNoodleBar:return r.createElement(r.Fragment,null,r.createElement("br",null),r.createElement(o.Z,{onClick:function(){d.sC.emit("You ate some delicious noodles and feel refreshed",s.ToastVariant.SUCCESS,2e3),(0,p.P)(),f.J5.sourceFiles.size>0&&f.J5.giveExploit(g.VX.N00dles),(f.J5.sourceFileLvl(5)>0||5===f.J5.bitNodeN)&&(f.J5.exp.intelligence*=1.0000000000000002),f.J5.exp.hacking*=1.0000000000000002,f.J5.exp.strength*=1.0000000000000002,f.J5.exp.defense*=1.0000000000000002,f.J5.exp.agility*=1.0000000000000002,f.J5.exp.dexterity*=1.0000000000000002,f.J5.exp.charisma*=1.0000000000000002;for(const e of f.J5.hacknetNodes)if(e instanceof v.Q)f.J5.gainMoney(.001*e.moneyGainRatePerSecond,"other");else{const t=(0,w.WT)(e);if(!(t instanceof k.u))throw new Error(`Server ${e} is not a hacknet server.`);f.J5.hashManager.storeHashes(.001*t.hashRate)}f.J5.bladeburner&&(f.J5.bladeburner.rank+=1e-5),f.J5.corporation&&(f.J5.corporation.funds+=.01*f.J5.corporation.revenue)}},"Eat noodles"));case s.LocationName.ChongqingChurchOfTheMachineGod:return function(){const e=r.createElement(o.Z,{onClick:()=>u.F.toPage(m.T3.StaneksGift)},"Open Stanek's Gift"),t=r.createElement(a.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," `` ",r.createElement("br",null)," -odmmNmds: ",r.createElement("br",null)," `hNmo:..-omNh. ",r.createElement("br",null)," yMd` `hNh ",r.createElement("br",null)," mMd oNm ",r.createElement("br",null)," oMNo .mM/ ",r.createElement("br",null)," `dMN+ -mM+ ",r.createElement("br",null)," -mMNo -mN+ ",r.createElement("br",null)," .+- :mMNo/mN/ ",r.createElement("br",null),":yNMd. :NMNNN/ ",r.createElement("br",null),"-mMMMh. /NMMh` ",r.createElement("br",null)," .dMMMd. /NMMMy` ",r.createElement("br",null)," `yMMMd. /NNyNMMh` ",r.createElement("br",null)," `sMMMd. +Nm: +NMMh. ",r.createElement("br",null)," oMMMm- oNm: /NMMd. ",r.createElement("br",null)," +NMMmsMm- :mMMd. ",r.createElement("br",null)," /NMMMm- -mMMd. ",r.createElement("br",null)," /MMMm- -mMMd. ",r.createElement("br",null)," `sMNMMm- .mMmo ",r.createElement("br",null)," `sMd:hMMm. ./. ",r.createElement("br",null)," `yMy` `yNMd` ",r.createElement("br",null)," `hMs` oMMy ",r.createElement("br",null)," `hMh sMN- ",r.createElement("br",null)," /MM- .NMo ",r.createElement("br",null)," +MM: :MM+ ",r.createElement("br",null)," sNNo-.`.-omNy` ",r.createElement("br",null)," -smNNNNmdo- ",r.createElement("br",null)," `..` ");return f.J5.hasAugmentation(s.AugmentationName.StaneksGift3,!0)?r.createElement(r.Fragment,null,r.createElement(a.Z,null,r.createElement("i",null,"Allison \"Mother\" Stanek: ..can ...you hear them too ...? Come now, don't be shy and let me get a closer look at you. Yes wonderful, I see my creation has taken root without consequence or much ill effect it seems. Curious, Just how much of a machine's soul do you house in that body?")),r.createElement("br",null),e,r.createElement("br",null),t):f.J5.hasAugmentation(s.AugmentationName.StaneksGift2,!0)?r.createElement(r.Fragment,null,r.createElement(a.Z,null,r.createElement("i",null,'Allison "Mother" Stanek: I see you\'ve taken to my creation. So much that it could hardly be recognized as one of my own after your tinkering with it. I see you follow the ways of the Machine God as I do, and your mastery of the gift clearly demonstrates that. My hopes are climbing by the day for you.')),r.createElement("br",null),e,r.createElement("br",null),t):f.J5.factions.includes(s.FactionName.ChurchOfTheMachineGod)?r.createElement(r.Fragment,null,r.createElement(a.Z,null,r.createElement("i",null,'Allison "Mother" Stanek: Welcome back my child!')),r.createElement("br",null),e,r.createElement("br",null),t):f.J5.canAccessCotMG()?f.J5.augmentations.filter((e=>e.name!==s.AugmentationName.NeuroFluxGovernor)).length>0||f.J5.queuedAugmentations.filter((e=>e.name!==s.AugmentationName.NeuroFluxGovernor)).length>0?r.createElement(r.Fragment,null,r.createElement(a.Z,null,r.createElement("i",null,'Allison "Mother" Stanek: Begone you filth! My gift must be the first modification that your body should have!'))):r.createElement(r.Fragment,null,r.createElement(a.Z,null,r.createElement("i",null,'Allison "Mother" Stanek: Welcome child, I see your body is pure. Are you ready to ascend beyond our human form? If you are, accept my gift.')),r.createElement(o.Z,{onClick:x},"Accept Stanek's Gift"),t):r.createElement(r.Fragment,null,r.createElement(a.Z,null,"A decrepit altar stands in the middle of a dilapidated church.",r.createElement("br",null),r.createElement("br",null),"A symbol is carved in the altar."),r.createElement("br",null),t)}();case s.LocationName.IshimaGlitch:return r.createElement(r.Fragment,null,r.createElement(a.Z,null,r.createElement(b.q,{content:"An eerie aura surrounds this area. You feel you should leave."})));case s.LocationName.NewTokyoArcade:return r.createElement(E.u,null);default:return console.error(`Location ${e.loc.name} doesn't have any special properties`),r.createElement(r.Fragment,null)}}},80584:(e,t,n)=>{"use strict";n.d(t,{m:()=>y});var r=n(67294),a=n(81138),o=n(56798),i=n(33285),s=n(19181),l=n(29931),c=n(89673),u=n(72360),m=n(49173),f=n(96363),h=n(22115),d=n(30120),p=n(88775);function g(e){const[t,n]=(0,r.useState)(!1),a=(0,c.aZ)(e.ram);return r.createElement(r.Fragment,null,r.createElement(o.Z,{onClick:()=>n(!0),disabled:!m.J5.canAfford(a)},"Purchase ",(0,h.$1)(e.ram)," Server - ",r.createElement(u.W,{money:a,forPurchase:!0})),r.createElement(f.a,{open:t,onClose:()=>n(!1),ram:e.ram,cost:a}))}function y(e){const t=(0,p.S)(1e3),n=[];for(let t=e.loc.techVendorMinRam;t<=e.loc.techVendorMaxRam;t*=2)n.push(r.createElement(g,{key:t,ram:t}));return r.createElement(r.Fragment,null,r.createElement("br",null),r.createElement(d.Z,{sx:{display:"grid",width:"fit-content"}},n),r.createElement("br",null),r.createElement(a.Z,null,r.createElement("i",null,'"You can order bigger servers via scripts. We don\'t take custom orders in person."')),r.createElement("br",null),r.createElement(s.$,{rerender:t}),r.createElement("br",null),r.createElement(i.C,{rerender:t}),r.createElement("br",null),r.createElement(l.v,{rerender:t}))}},19181:(e,t,n)=>{"use strict";n.d(t,{$:()=>m});var r=n(67294),a=n(56798),o=n(39463),i=n(97467),s=n(40425),l=n(72938),c=n(49173),u=n(72360);function m(e){return c.J5.hasTorRouter()?r.createElement(a.Z,null,"TOR Router - Purchased"):r.createElement(a.Z,{disabled:!c.J5.canAfford(l.t.TorRouterCost),onClick:function(){!function(){if(c.J5.hasTorRouter())return void(0,o.X)("You already have a TOR Router!");if(!c.J5.canAfford(l.t.TorRouterCost))return void(0,o.X)("You cannot afford to purchase the TOR router!");c.J5.loseMoney(l.t.TorRouterCost,"other");const e=(0,i.WT)(s.r.DarkWeb);if(!e)throw new Error("Dark web is not a server.");c.J5.getHomeComputer().serversOnNetwork.push(e.hostname),e.serversOnNetwork.push(c.J5.getHomeComputer().hostname),(0,o.X)("You have purchased a TOR router!\nYou now have access to the dark web from your home computer.\nUse the scan/scan-analyze commands to search for the dark web connection.")}(),e.rerender()}},"Purchase TOR router - ",r.createElement(u.W,{money:l.t.TorRouterCost,forPurchase:!0}))}},66927:(e,t,n)=>{"use strict";n.d(t,{Z:()=>v});var r=n(67294),a=n(33244),o=n(81968),i=n(72938),s=n(49173),l=n(52947),c=n(24815),u=n(51087),m=n(72360),f=n(86091),h=n(39463),d=n(81138),p=n(30120),g=n(56798),y=n(88775);function b(e){const t=i.t.TravelCost;s.J5.canAfford(t)&&(s.J5.loseMoney(t,"other"),s.J5.travel(e),(0,h.X)(`You are now in ${e}!`),l.F.toPage(c.T3.City))}function v(){const[e,t]=(0,r.useState)(!1),[n,l]=(0,r.useState)(a.CityName.Sector12);function c(e){const n=i.t.TravelCost;s.J5.canAfford(n)&&(u.Z.SuppressTravelConfirmation?b(e):(t(!0),l(e)))}return(0,y.S)(1e3),r.createElement(r.Fragment,null,r.createElement(d.Z,{variant:"h4"},"Travel Agency"),r.createElement(p.Z,{mx:2},r.createElement(d.Z,null,"From here, you can travel to any other city! A ticket costs"," ",r.createElement(m.W,{money:i.t.TravelCost,forPurchase:!0}),"."),u.Z.DisableASCIIArt?r.createElement(r.Fragment,null,Object.values(a.CityName).filter((e=>e!=s.J5.city)).map((e=>{if(void 0===Object.entries(a.CityName).find((t=>t[1]===e)))throw new Error(`could not find key for city '${e}'`);return r.createElement(r.Fragment,{key:e},r.createElement(g.Z,{onClick:()=>c(e),sx:{m:2}},r.createElement(d.Z,null,"Travel to ",e)),r.createElement("br",null))}))):r.createElement(f.b,{currentCity:s.J5.city,onTravel:e=>c(e)})),r.createElement(o.n,{city:n,travel:()=>b(n),open:e,onClose:()=>t(!1)}))}},81968:(e,t,n)=>{"use strict";n.d(t,{n:()=>c});var r=n(67294),a=n(72938),o=n(72360),i=n(48672),s=n(81138),l=n(56798);function c(e){const t=a.t.TravelCost;return r.createElement(i.u,{open:e.open,onClose:e.onClose},r.createElement(s.Z,null,"Would you like to travel to ",e.city,"? The trip will cost ",r.createElement(o.W,{money:t,forPurchase:!0}),"."),r.createElement("br",null),r.createElement("br",null),r.createElement(l.Z,{onClick:function(){e.travel()}},r.createElement(s.Z,null,"Travel")))}},88412:(e,t,n)=>{"use strict";n.d(t,{L:()=>d});var r=n(67294),a=n(17575),o=n(56798),i=n(72360),s=n(52947),l=n(24815),c=n(49173),u=n(30120),m=n(94337),f=n(97093),h=n(33244);function d(e){function t(t){c.J5.startWork(new m.LA({classType:t,location:e.loc.name,singularity:!1})),c.J5.startFocusing(),s.F.toPage(l.T3.Work)}const n=(0,f.sk)(m.PZ[h.UniversityClassType.dataStructures],e.loc),d=(0,f.sk)(m.PZ[h.UniversityClassType.networks],e.loc),p=(0,f.sk)(m.PZ[h.UniversityClassType.algorithms],e.loc),g=(0,f.sk)(m.PZ[h.UniversityClassType.management],e.loc),y=(0,f.sk)(m.PZ[h.UniversityClassType.leadership],e.loc),b="Gain hacking experience!",v="Gain charisma experience!";return r.createElement(u.Z,{sx:{display:"grid",width:"fit-content"}},r.createElement(a.Z,{title:b},r.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.computerScience)},"Study Computer Science (free)")),r.createElement(a.Z,{title:b},r.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.dataStructures)},"Take Data Structures course (",r.createElement(i.W,{money:n,forPurchase:!0})," / sec)")),r.createElement(a.Z,{title:b},r.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.networks)},"Take Networks course (",r.createElement(i.W,{money:d,forPurchase:!0})," / sec)")),r.createElement(a.Z,{title:b},r.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.algorithms)},"Take Algorithms course (",r.createElement(i.W,{money:p,forPurchase:!0})," / sec)")),r.createElement(a.Z,{title:v},r.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.management)},"Take Management course (",r.createElement(i.W,{money:g,forPurchase:!0})," / sec)")),r.createElement(a.Z,{title:v},r.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.leadership)},"Take Leadership course (",r.createElement(i.W,{money:y,forPurchase:!0})," / sec)")))}},35242:(e,t,n)=>{"use strict";let r;n.d(t,{S:()=>r}),function(e){e.Jumper0="j0.msg",e.Jumper1="j1.msg",e.Jumper2="j2.msg",e.Jumper3="j3.msg",e.Jumper4="j4.msg",e.CyberSecTest="csec-test.msg",e.NiteSecTest="nitesec-test.msg",e.BitRunnersTest="19dfj3l1nd.msg",e.TruthGazer="truthgazer.msg",e.RedPill="icarus.msg"}(r||(r={}))},73792:(e,t,n)=>{"use strict";n.d(t,{v:()=>a});var r=n(64962);class a{constructor(e,t){this.filename=(0,r.Tp)(e),this.msg=t}}},72198:(e,t,n)=>{"use strict";n.d(t,{PV:()=>p,Uc:()=>b});var r=n(67294),a=n(73792),o=n(33244),i=n(52947),s=n(49173),l=n(24815),c=n(97467),u=n(40425),m=n(51087),f=n(39463),h=n(89916);function d(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];!t&&m.Z.SuppressMessages||p(e),g(e)}function p(e){const t=v[e];(0,f.X)(r.createElement(r.Fragment,null,"Message received from unknown sender:",r.createElement("br",null),r.createElement("br",null),r.createElement("i",null,t.msg),r.createElement("br",null),r.createElement("br",null),"This message was saved as ",t.filename," onto your home computer."))}function g(e){y(e)||s.J5.getHomeComputer().messages.push(e)}function y(e){return s.J5.getHomeComputer().messages.includes(e)}function b(){if(i.F.page()!==l.T3.BitVerse)if(s.J5.hasAugmentation(o.AugmentationName.TheRedPill,!0)){const e=(0,c.WT)(u.r.WorldDaemon);if(!(e instanceof h.x))throw new Error("The world daemon is not a server???? Please un-break reality");s.J5.skills.hacking>=e.requiredHackingSkill?d(o.MessageFilename.RedPill,0===s.J5.sourceFiles.size):y(o.MessageFilename.TruthGazer)||d(o.MessageFilename.TruthGazer)}else if(!y(o.MessageFilename.Jumper0)&&s.J5.skills.hacking>=25){d(o.MessageFilename.Jumper0);const e=s.J5.getHomeComputer();e.programs.includes(o.CompletedProgramName.flight)||e.programs.push(o.CompletedProgramName.flight)}else!y(o.MessageFilename.Jumper1)&&s.J5.skills.hacking>=40?d(o.MessageFilename.Jumper1):!y(o.MessageFilename.CyberSecTest)&&s.J5.skills.hacking>=50?d(o.MessageFilename.CyberSecTest):!y(o.MessageFilename.Jumper2)&&s.J5.skills.hacking>=175?d(o.MessageFilename.Jumper2):!y(o.MessageFilename.NiteSecTest)&&s.J5.skills.hacking>=200?d(o.MessageFilename.NiteSecTest):!y(o.MessageFilename.Jumper3)&&s.J5.skills.hacking>=325?d(o.MessageFilename.Jumper3):!y(o.MessageFilename.Jumper4)&&s.J5.skills.hacking>=490?d(o.MessageFilename.Jumper4):!y(o.MessageFilename.BitRunnersTest)&&s.J5.skills.hacking>=500&&d(o.MessageFilename.BitRunnersTest)}const v={[o.MessageFilename.Jumper0]:new a.v(o.MessageFilename.Jumper0,"I know you can sense it. I know you're searching for it. It's why you spend night after night at your computer. \n\nIt's real, I've seen it. And I can help you find it. But not right now. You're not ready yet.\n\nUse this program to track your progress\n\nThe fl1ght.exe program was added to your home computer\n\n-jump3R"),[o.MessageFilename.Jumper1]:new a.v(o.MessageFilename.Jumper1,`Soon you will be contacted by a hacking group known as ${o.FactionName.CyberSec}. They can help you with your search. \n\nYou should join them, garner their favor, and exploit them for their Augmentations. But do not trust them. They are not what they seem. No one is.\n\n-jump3R`),[o.MessageFilename.Jumper2]:new a.v(o.MessageFilename.Jumper2,`Do not try to save the world. There is no world to save. If you want to find the truth, worry only about yourself. Ethics and morals will get you killed. \n\nWatch out for a hacking group known as ${o.FactionName.NiteSec}.\n\n-jump3R`),[o.MessageFilename.Jumper3]:new a.v(o.MessageFilename.Jumper3,`You must learn to walk before you can run. And you must run before you can fly. Look for ${o.FactionName.TheBlackHand}. \n\nI.I.I.I \n\n-jump3R`),[o.MessageFilename.Jumper4]:new a.v(o.MessageFilename.Jumper4,"To find what you are searching for, you must understand the bits. The bits are all around us. The runners will help you.\n\n-jump3R"),[o.MessageFilename.CyberSecTest]:new a.v(o.MessageFilename.CyberSecTest,`We've been watching you. Your skills are very impressive. But you're wasting your talents. If you join us, you can put your skills to good use and change the world for the better. If you join us, we can unlock your full potential. \n\nBut first, you must pass our test. Find and install the backdoor on our server. \n\n-${o.FactionName.CyberSec}`),[o.MessageFilename.NiteSecTest]:new a.v(o.MessageFilename.NiteSecTest,`People say that the corrupted governments and corporations rule the world. Yes, maybe they do. But do you know who everyone really fears? People like us. Because they can't hide from us. Because they can't fight shadows and ideas with bullets. \n\nJoin us, and people will fear you, too. \n\nFind and install the backdoor on our server, avmnite-02h. Then, we will contact you again.\n\n-${o.FactionName.NiteSec}`),[o.MessageFilename.BitRunnersTest]:new a.v(o.MessageFilename.BitRunnersTest,"We know what you are doing. We know what drives you. We know what you are looking for. \n\n We can help you find the answers.\n\nrun4theh111z"),[o.MessageFilename.TruthGazer]:new a.v(o.MessageFilename.TruthGazer,"@&*($#@&__TH3__#@A&#@*)__TRU1H__(*)&*)($#@&()E&R)W&\n%@*$^$()@&$)$*@__CAN__()(@^#)@&@)#__N0__(#@&#)@&@&(\n*(__LON6ER__^#)@)(()*#@)@__ESCAP3__)#(@(#@*@()@(#*$\n()@)#$*%)$#()$#__Y0UR__(*)$#()%(&(%)*!)($__GAZ3__#("),[o.MessageFilename.RedPill]:new a.v(o.MessageFilename.RedPill,"@)(#V%*N)@(#*)*C)@#%*)*V)@#(*%V@)(#VN%*)@#(*%\n)@B(*#%)@)M#B*%V)____FIND___#$@)#%(B*)@#(*%B)\n@_#(%_@#M(BDSPOMB__THE-CAVE_#)$(*@#$)@#BNBEGB\nDFLSMFVMV)#@($*)@#*$MV)@#(*$V)M#(*$)M@(#*VM$)")}},57685:(e,t,n)=>{"use strict";n.d(t,{V:()=>c});var r=n(49173),a=n(58427),o=n(97467),i=n(33244),s=n(89916);function l(e){for(const t of e.augmentations)if(t!==i.AugmentationName.NeuroFluxGovernor&&!r.J5.augmentations.some((e=>e.name==t)))return!1;return!0}const c=[{title:"Gain root access on CSEC",fulfilled:()=>{const e=(0,o.WT)("CSEC");return!(!e||!Object.hasOwn(e,"hasAdminRights"))&&e instanceof s.x&&e.hasAdminRights}},{title:"Install the backdoor on CSEC",fulfilled:()=>{const e=(0,o.WT)("CSEC");return!(!e||!Object.hasOwn(e,"backdoorInstalled"))&&e instanceof s.x&&e.backdoorInstalled}},{title:"Join the faction hinted at in csec-test.msg",fulfilled:()=>r.J5.factions.includes(i.FactionName.CyberSec)},{title:`Install all the Augmentations from ${i.FactionName.CyberSec}`,fulfilled:()=>l(a.i[i.FactionName.CyberSec])},{title:"Join the faction hinted at in nitesec-test.msg",fulfilled:()=>r.J5.factions.includes(i.FactionName.NiteSec)},{title:`Install all the Augmentations from ${i.FactionName.NiteSec}`,fulfilled:()=>l(a.i[i.FactionName.NiteSec])},{title:"Join the faction hinted at in j3.msg",fulfilled:()=>r.J5.factions.includes(i.FactionName.TheBlackHand)},{title:`Install all the Augmentations from ${i.FactionName.TheBlackHand}`,fulfilled:()=>l(a.i[i.FactionName.TheBlackHand])},{title:"Join the faction hinted at in 19dfj3l1nd.msg",fulfilled:()=>r.J5.factions.includes(i.FactionName.BitRunners)},{title:`Install all the Augmentations from ${i.FactionName.BitRunners}`,fulfilled:()=>l(a.i[i.FactionName.BitRunners])},{title:"Complete fl1ght.exe",fulfilled:()=>r.J5.factions.includes(i.FactionName.Daedalus)},{title:`Install the special Augmentation from ${i.FactionName.Daedalus}`,fulfilled:()=>r.J5.augmentations.some((e=>"The Red Pill"==e.name))},{title:"Install the final backdoor and free yourself.",fulfilled:()=>!1}]},19491:(e,t,n)=>{"use strict";n.d(t,{q:()=>s});var r=n(57685),a=n(67294),o=n(81138),i=n(30120);function s(){const e=function(e){let t=-1;for(let n=0;n{if(n<=e+1)return a.createElement(o.Z,{key:n},"[",t.fulfilled()?"x":" ","] ",t.title)}));return a.createElement(a.Fragment,null,a.createElement(o.Z,{variant:"h4"},"Milestones"),a.createElement(i.Z,{mx:2},a.createElement(o.Z,null,"Milestones don't reward you for completing them. They are here to guide you if you're lost. They will reset when you install Augmentations."),a.createElement("br",null),a.createElement(o.Z,null,"Completing fl1ght.exe"),t))}},40811:(e,t,n)=>{"use strict";n.d(t,{G:()=>s,I:()=>i});var r=n(32310),a=n(23122);class o{memoed={};constructor(e,t,n,r){this.ns=t,this.ws=e,this.tree=n,this.additionalData=r,Object.assign(this.memoed,r)}has(e,t){return Reflect.has(this.ns,t)||Reflect.has(this.additionalData,t)}ownKeys(e){return[...Reflect.ownKeys(this.ns),...Reflect.ownKeys(this.additionalData)]}getOwnPropertyDescriptor(e,t){if(this.has(e,t))return Object.hasOwn(this.memoed,t)||this.get(e,t,this),Object.getOwnPropertyDescriptor(this.memoed,t)}defineProperty(e,t,n){throw new TypeError("ns instances are not modifiable!")}set(e,t,n){throw new TypeError("ns instances are not modifiable!")}get(e,t,n){const o=this.memoed[t];if(o)return o;const s=Object.getOwnPropertyDescriptor(this.ns,t);if(!s)return s;const l=s.value;if("function"==typeof l){const e=[...this.tree,t],n=e.join("."),o={workerScript:this.ws,function:t,functionPath:n},i=l(o),c=function(){return a.BM.checkEnvFlags(o),a.BM.updateDynamicRam(o,(0,r.By)(e)),i(...arguments)};return Object.defineProperty(this.memoed,t,{...s,value:c}),c}if("object"==typeof l)return this.memoed[t]=i(this.ws,l,[...this.tree,t]);throw console.warn("Unexpected data while wrapping API.","tree:",this.tree,"key:",t,"field:",l),new Error("Error while wrapping netscript API. See console.")}}function i(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const a=new o(e,t,n,r);return new Proxy({},a)}function s(e,t){for(const[n,{version:r,replacement:o,replaceMsg:i}]of Object.entries(t))Object.defineProperty(e,n,{value:e=>()=>{throw a.BM.makeRuntimeErrorMsg(e,`Function removed in ${r}. ${i?o:`Please use ${o} instead.`}`,"REMOVED FUNCTION")},configurable:!0,enumerable:!1})}},6336:(e,t,n)=>{"use strict";n.d(t,{q:()=>r});class r{stopFlag=!1;runningFn="";vars=null}},23122:(e,t,n)=>{"use strict";n.d(t,{BM:()=>L,Ee:()=>R,Wt:()=>z,Z6:()=>F,ac:()=>$,bZ:()=>j});var r=n(67294),a=n(40185),o=n(21951),i=n(97467),s=n(49173),l=n(60520),c=n(22115),u=n(89916),m=n(49708),f=n(42805),h=n(49802),d=n(97740),p=n(72938),g=n(62734),y=n(18162),b=n(45089),v=n(32938),k=n(10364),w=n(72326),E=n(3853),S=n(39463),C=n(32310),x=n(20145),N=n(2827),M=n(64962),A=n(69917),T=n(99611);const L={string:I,number:P,positiveInteger:B,scriptArgs:O,runOptions:function(e,t){const n={threads:1,temporary:!1,preventDuplicates:!1};function r(t,r){null!=t&&(n.threads=B(e,r,t))}if("object"!=typeof t||null===t)return r(t,"threads"),n;const a=t;if(r(a.threads,"RunOptions.threads"),n.temporary=!!a.temporary,n.preventDuplicates=!!a.preventDuplicates,void 0!==a.ramOverride&&null!==a.ramOverride&&(n.ramOverride=P(e,"RunOptions.ramOverride",a.ramOverride),n.ramOverride= baseCost (${C.qS.Base}), was ${n.ramOverride}`);return n},argsToString:function(e){let t="";for(let n of e)null!==n?void 0!==n?(n=(0,v.l)(n),t+="object"==typeof n?JSON.stringify(n):`${n}`):t+="undefined":t+="null";return t},makeBasicErrorMsg:D,makeRuntimeErrorMsg:Z,resolveNetscriptRequestedThreads:function(e,t){const n=e.workerScript.scriptRef.threads;if(!t)return isNaN(n)||n<1?1:n;const r=0|t;if(isNaN(t)||r<1)throw Z(e,`Invalid thread count: ${t}. Threads must be a positive number.`);if(r>n)throw Z(e,`Too many threads requested by ${e.function}. Requested: ${t}. Has: ${n}.`);return r},checkEnvFlags:function(e){const t=e.workerScript;if(t.env.stopFlag)throw W(e,(()=>"Failed to run due to script being killed.")),new l.w(t);if(t.env.runningFn&&"asleep"!==e.function){W(e,(()=>"Failed to run due to failed concurrency check."));const n=Z(e,`Concurrent calls to Netscript functions are not allowed!\n Did you forget to await hack(), grow(), or some other\n promise-returning function?\n Currently running: ${t.env.runningFn} tried to run: ${e.function}`,"CONCURRENCY");throw(0,o.i)(t),n}},checkSingularityAccess:function(e){if(4!==s.J5.bitNodeN&&0===s.J5.sourceFileLvl(4))throw Z(e,"This singularity function requires Source-File 4 to run. A power up you obtain later in the game.\n It will be very obvious when and how you can obtain it.","API ACCESS")},netscriptDelay:function(e,t){const n=e.workerScript;return new Promise((function(r,a){n.delay=window.setTimeout((()=>{n.delay=null,n.delayReject=void 0,n.env.runningFn="",n.env.stopFlag?a(new l.w(n)):r()}),t),n.delayReject=a,n.env.runningFn=e.function}))},updateDynamicRam:function(e,t){const n=e.workerScript,r=e.function;if(!n.dynamicLoadedFns[r]&&(n.dynamicLoadedFns[r]=!0,n.dynamicRamUsage=Math.min(n.dynamicRamUsage+t,C.qS.Max),n.dynamicRamUsage>1.01*n.scriptRef.ramUsage)){W(e,(()=>"Insufficient static ram available."));const t=Z(e,`Dynamic RAM usage calculated to be greater than RAM allocation.\n This is probably because you somehow circumvented the static RAM calculation.\n\n Threads: ${n.scriptRef.threads}\n Dynamic RAM Usage: ${(0,c.$1)(n.dynamicRamUsage)} per thread\n RAM Allocation: ${(0,c.$1)(n.scriptRef.ramUsage)} per thread\n\n One of these could be the reason:\n * Using eval() to get a reference to a ns function\n   const myScan = eval('ns.scan');\n\n * Using map access to do the same\n   const myScan = ns['scan'];\n\n * Using RunOptions.ramOverride to set a smaller allocation than needed\n\n Sorry :(`,"RAM USAGE");throw(0,o.i)(n),t}},getServer:G,scriptIdentifier:function(e,t,n,r){const a=e.workerScript;if(void 0===t)return a.pid;if("number"==typeof t)return t;if("string"==typeof t)return{scriptname:t,hostname:void 0===n?e.workerScript.hostname:I(e,"hostname",n),args:void 0===r?[]:O(e,r)};throw Z(e,"An unknown type of input was provided as a script identifier.","TYPE")},hack:function(e,t,n){let{threads:r,stock:a,additionalMsec:o}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const i=e.workerScript,l=L.resolveNetscriptRequestedThreads(e,r),y=P(e,"opts.additionalMsec",o??0);if(y<0)throw Z(e,`additionalMsec must be non-negative, got ${y}`);const b=G(e,t);if(!(b instanceof u.x))throw Z(e,"Cannot be executed on this server.");const v=(0,m.sI)(b,s.J5)+y/1e3,k=(0,f.uN)(b);if(!k.res)throw Z(e,k.msg||"");return W(e,(()=>`Executing on '${b.hostname}' in ${(0,h.UF)(1e3*v,!0)} (t=${(0,c.jL)(l)})`)),L.netscriptDelay(e,1e3*v).then((function(){const t=(0,m.gb)(b,s.J5),r=Math.random();let o=(0,m.iG)(b,s.J5)*l;const u=o/4;if(rb.moneyAvailable&&(f=b.moneyAvailable),b.moneyAvailable-=f,b.moneyAvailable<0&&(b.moneyAvailable=0);let h=f*d.dQ.ScriptHackMoneyGain;return n&&(h=f*d.dQ.ManualHackMoney),s.J5.gainMoney(h,"hacking"),i.scriptRef.onlineMoneyMade+=h,s.J5.scriptProdSinceLastAug+=h,i.scriptRef.recordHack(b.hostname,h,l),s.J5.gainHackingExp(o),n&&s.J5.gainIntelligenceExp(.005),i.scriptRef.onlineExpGained+=o,W(e,(()=>`Successfully hacked '${b.hostname}' for ${(0,c.lb)(h)} and ${(0,c.Mf)(o)} exp (t=${(0,c.jL)(l)})`)),b.fortify(p.t.ServerFortifyAmount*Math.min(l,r)),a&&(0,g.Bu)(b,f),n&&(b.backdoorInstalled=!0,N.D.Counters.checkFactionInvitations=0,N.D.checkCounters()),h}return s.J5.gainHackingExp(u),i.scriptRef.onlineExpGained+=u,W(e,(()=>`Failed to hack '${b.hostname}'. Gained ${(0,c.Mf)(u)} exp (t=${(0,c.jL)(l)})`)),0}))},portNumber:function(e,t){const n=B(e,"portNumber",t);if(n>p.t.NumNetscriptPorts)throw Z(e,`Trying to use an invalid port: ${n}. Must be less or equal to ${p.t.NumNetscriptPorts}.`);return n},person:function(e,t){const n=J({hp:void 0,exp:void 0,mults:void 0,city:void 0},t);if(n)throw Z(e,`person should be a Person.\n${n}`,"TYPE");return t},server:function(e,t){const n=J({hostname:void 0,ip:void 0,sshPortOpen:void 0,ftpPortOpen:void 0,smtpPortOpen:void 0,httpPortOpen:void 0,sqlPortOpen:void 0,hasAdminRights:void 0,cpuCores:void 0,isConnectedTo:void 0,ramUsed:void 0,maxRam:void 0,organizationName:void 0,purchasedByPlayer:void 0},t);if(n)throw Z(e,`server should be a Server.\n${n}`,"TYPE");return t},gang:function(e,t){const n=J({respect:0,territory:0,wantedLevel:0},t);if(n)throw Z(e,`gang should be a Gang.\n${n}`,"TYPE");return t},gangMember:function(e,t){const n=J(new y.q,t);if(n)throw Z(e,`member should be a GangMember.\n${n}`,"TYPE");return t},gangTask:function(e,t){const n=J(new b.u("","",!1,!1,{hackWeight:100}),t);if(n)throw Z(e,`task should be a GangMemberTask.\n${n}`,"TYPE");return t},log:W,filePath:H,scriptPath:U,getRunningScript:function(e,t){if("number"==typeof t)return function(e){for(const t of(0,i.XX)()){const n=(0,k.$o)(e,t);if(n)return n}return null}(t);{const n=j(e,t.scriptname,t.hostname,t.args);return null===n?null:n.values().next().value}},getRunningScriptsByArgs:j,getCannotFindRunningScriptErrorMessage:function(e){return"number"==typeof e?`Cannot find running script with pid: ${e}`:`Cannot find running script ${e.scriptname} on server ${e.hostname} with args: ${(0,w.N)(e.args)}`},createPublicRunningScript:function(e){const t=e.tailProps;return{args:e.args.slice(),filename:e.filename,logs:e.logs.map((e=>""+e)),offlineExpGained:e.offlineExpGained,offlineMoneyMade:e.offlineMoneyMade,offlineRunningTime:e.offlineRunningTime,onlineExpGained:e.onlineExpGained,onlineMoneyMade:e.onlineMoneyMade,onlineRunningTime:e.onlineRunningTime,pid:e.pid,ramUsage:e.ramUsage,server:e.server,tailProperties:t&&t.isVisible()?{x:t.x,y:t.y,width:t.width,height:t.height}:null,title:e.title,threads:e.threads,temporary:e.temporary}},failOnHacknetServer:function(e,t){return t instanceof E.u&&(W(e,(()=>"Does not work on Hacknet Servers")),!0)}};function R(e,t,n){if("string"!=typeof n)throw Z(e,`${t} expected to be a string. ${_(n)}`,"TYPE")}function F(e,t,n,r){if("object"!=typeof n||null===n)throw Z(e,`Type ${null===n?"null":typeof n} provided for ${t}. Must be an object.`,"TYPE");for(const[a,o]of Object.entries(r)){if(!Object.hasOwn(n,a))throw Z(e,`Object provided for argument ${t} is missing required property ${a}.`,"TYPE");const r=n[a];if(typeof o!=typeof r)throw Z(e,`Incorrect type ${typeof r} provided for property ${a} on ${t} argument. Should be type ${typeof o}.`,"TYPE")}}const _=e=>null===e?"Is null.":void 0===e?"Is undefined.":"function"==typeof e?"Is a function.":`Is of type '${typeof e}', value: ${(e=>{const t=e=>e.length>15?e.slice(0,12)+"...":e;if("number"==typeof e)return String(e);if("string"==typeof e)return""===e?"empty string":`'${t(e)}'`;const n=JSON.stringify(e);return n?`'${t(n)}'`:"???"})(e)}`;function I(e,t,n){return"number"==typeof n&&(n+=""),R(e,t,n),n}function P(e,t,n){if("string"==typeof n){const e=parseFloat(n);if(!isNaN(e))return e}else if("number"==typeof n){if(isNaN(n))throw Z(e,`'${t}' is NaN.`);return n}throw Z(e,`'${t}' should be a number. ${_(n)}`,"TYPE")}function B(e,t,n){const r=P(e,t,n);if(!(0,x.a)(r))throw Z(e,`${t} should be a positive integer, was ${r}`,"TYPE");return r}function O(e,t){if(!function(e){return Array.isArray(e)&&e.every((e=>"string"==typeof e||"number"==typeof e||"boolean"==typeof e))}(t))throw Z(e,"'args' is not an array of script args","TYPE");return t}function D(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"RUNTIME";if(e instanceof a.h)for(const[n,r]of e.scriptRef.dependencies)t=t.replace(new RegExp(n,"g"),r.filename);return`${n} ERROR\n${e.name}@${e.hostname} (PID - ${e.pid})\n\n${t}`}function Z(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"RUNTIME";const r=(new Error).stack;if(void 0===r)throw new Error("how did we not throw an error?");const a=r.split("\n").slice(1),o=e.workerScript,i=e.functionPath,s=[];for(const e of a){const t=(()=>{for(const[t,n]of o.scriptRef.dependencies)if(e.includes(t))return n.filename;if(e.includes(o.scriptRef.filename))return o.scriptRef.filename;for(const t of o.scriptRef.dependencies.values())if(e.includes(t.filename))return t.filename})();if(!t)continue;let n={line:"-1",func:"unknown"};const r=c(e);r&&(n=r);const a=u(e);a&&(n=a),s.push(`${t}:L${n.line}@${n.func}`)}W(e,(()=>t));let l=`${i}: ${t}`;return 0!==s.length&&(l+=`\n\nStack:\n${s.join("\n")}`),D(o,l,n);function c(e){const t=e.match(/.*:(\d+):\d+.*/),n=e.match(/.*at (.+) \(.*/);return t&&n?{line:t[1],func:n[1]}:null}function u(e){const t=e.match(/.*:(\d+):\d+$/),n=e.lastIndexOf("@");return t&&-1!==n?{line:t[1],func:e.slice(0,n)}:null}}function G(e,t){const n=(0,i.WT)(t);if(null==n)throw Z(e,"Invalid hostname: "+(""===t?"'' (empty string)":"'"+t+"'"));return n}function J(e,t){if("object"!=typeof t||null===t)return`Expected to be an object, was ${null===t?"null":typeof t}.`;for(const n in e)if(!(n in t))return`Property ${n} was expected but not present.`;return!1}function W(e,t){e.workerScript.log(e.functionPath,t)}function H(e,t,n){R(e,t,n);const r=(0,M.Iw)(n,e.workerScript.name);if(r)return r;throw Z(e,`Invalid ${t}, was not a valid path: ${n}`)}function U(e,t,n){const r=H(e,t,n);if((0,A.UH)(r))return r;throw Z(e,`Invalid ${t}, must be a script: ${n}`)}function j(e,t,n,r){if(!Array.isArray(r))throw L.makeRuntimeErrorMsg(e,"Invalid scriptArgs argument passed into getRunningScriptByArgs().\nThis is probably a bug. Please report to game developer");const a=U(e,"filename",t);null==n&&(n=e.workerScript.hostname);const o=L.getServer(e,n);return(0,k.Es)(a,r,o)}function $(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(e instanceof l.w){if(""===e.errorMessage)return;t||(t=e,e=t.errorMessage)}if(t&&"string"==typeof e){const n=D(t,"","");e.includes(n)||(e=D(t,e))}else if(e instanceof SyntaxError){const n=`${e.message} (sorry we can't be more helpful)`;e=t?D(t,n,"SYNTAX"):`SYNTAX ERROR:\n\n${n}`}else if(e instanceof Error){if("Canceled"===e.name&&"Canceled"===e.message)return;const n=`${e.message}${e.stack?`\nstack:\n${e.stack.toString()}`:""}`;e=t?D(t,n):`RUNTIME ERROR:\n\n${n}`}if("string"!=typeof e){console.error("Unexpected error:",e);const n=`Unexpected type of error thrown. This error was likely thrown manually within a script.\n Error has been logged to the console.\n\nType of error: ${typeof e}\nValue of error: ${e}`;e=t?D(t,n,"UNKNOWN"):n}(0,S.X)(n+e)}let q=0;function z(e){return r.createElement(T.o,{key:"PlayerContent"+q++},e)}},46570:(e,t,n)=>{"use strict";n.d(t,{L:()=>o,i:()=>i});var r=n(75350);let a=1;function o(){let e=a,t=!1;for(let n=0;n<1e6;){if(!r.R.has(e+n)){t=!0,e+=n;break}n===Number.MAX_SAFE_INTEGER-1?n=1:++n}return t?(a=e+1,a>=Number.MAX_SAFE_INTEGER&&(a=1),e):-1}function i(){a=1}},32310:(e,t,n)=>{"use strict";n.d(t,{By:()=>p,IK:()=>d,qS:()=>a});var r=n(49173);const a={Base:1.6,Dom:25,Corporation:1024,Max:1024,Hack:.1,HackAnalyze:1,Grow:.15,GrowthAnalyze:1,Weaken:.15,WeakenAnalyze:1,Scan:.2,RecentScripts:.2,PortProgram:.05,Run:1,Exec:1.3,Spawn:2,Scp:.6,Kill:.5,HasRootAccess:.05,GetHostname:.05,GetHackingLevel:.05,GetServer:.1,GetServerMaxRam:.05,GetServerUsedRam:.05,FileExists:.1,IsRunning:.1,HacknetNodes:4,HNUpgLevel:.4,HNUpgRam:.6,HNUpgCore:.8,GetStock:2,BuySellStock:2.5,GetPurchaseServer:.25,PurchaseServer:2.25,GetPurchasedServerLimit:.05,GetPurchasedServerMaxRam:.05,Round:.05,ReadWrite:1,ArbScript:1,GetScript:.1,GetRunningScript:.3,GetHackTime:.05,GetFavorToDonate:.1,CodingContractBase:10,SleeveBase:4,ClearTerminalCost:.2,GetMoneySourcesCost:1,SingularityFn1:2,SingularityFn2:3,SingularityFn3:5,GangApiBase:4,BladeburnerApiBase:4,StanekWidth:.4,StanekHeight:.4,StanekCharge:.4,StanekFragmentDefinitions:0,StanekPlacedFragments:5,StanekClear:0,StanekCanPlace:.5,StanekPlace:5,StanekFragmentAt:2,StanekDeleteAt:.15,InfiltrationCalculateDifficulty:2.5,InfiltrationCalculateRewards:2.5,InfiltrationGetLocations:5,InfiltrationGetInfiltrations:15,StanekAcceptGift:2};function o(e){return()=>{if(4===r.J5.bitNodeN)return e;const t=r.J5.sourceFileLvl(4);return t<=1?16*e:2===t?4*e:e}}const i={getConstants:0,hasWSEAccount:.05,hasTIXAPIAccess:.05,has4SData:.05,has4SDataTIXAPI:.05,getSymbols:a.GetStock,getPrice:a.GetStock,getOrganization:a.GetStock,getAskPrice:a.GetStock,getBidPrice:a.GetStock,getPosition:a.GetStock,getMaxShares:a.GetStock,getPurchaseCost:a.GetStock,getSaleGain:a.GetStock,buyStock:a.BuySellStock,sellStock:a.BuySellStock,buyShort:a.BuySellStock,sellShort:a.BuySellStock,placeOrder:a.BuySellStock,cancelOrder:a.BuySellStock,getOrders:a.BuySellStock,getVolatility:a.BuySellStock,getForecast:a.BuySellStock,purchase4SMarketData:a.BuySellStock,purchase4SMarketDataTixApi:a.BuySellStock,purchaseWseAccount:a.BuySellStock,purchaseTixApi:a.BuySellStock},s={universityCourse:o(a.SingularityFn1),gymWorkout:o(a.SingularityFn1),travelToCity:o(a.SingularityFn1),goToLocation:o(a.SingularityFn3),purchaseTor:o(a.SingularityFn1),purchaseProgram:o(a.SingularityFn1),getCurrentServer:o(a.SingularityFn1),getCompanyPositionInfo:o(a.SingularityFn1),getCompanyPositions:o(a.SingularityFn1),connect:o(a.SingularityFn1),manualHack:o(a.SingularityFn1),installBackdoor:o(a.SingularityFn1),getDarkwebProgramCost:o(a.SingularityFn1/4),getDarkwebPrograms:o(a.SingularityFn1/4),hospitalize:o(a.SingularityFn1/4),isBusy:o(a.SingularityFn1/4),stopAction:o(a.SingularityFn1/2),upgradeHomeRam:o(a.SingularityFn2),upgradeHomeCores:o(a.SingularityFn2),getUpgradeHomeRamCost:o(a.SingularityFn2/2),getUpgradeHomeCoresCost:o(a.SingularityFn2/2),workForCompany:o(a.SingularityFn2),applyToCompany:o(a.SingularityFn2),quitJob:o(a.SingularityFn2),getCompanyRep:o(a.SingularityFn2/3),getCompanyFavor:o(a.SingularityFn2/3),getCompanyFavorGain:o(a.SingularityFn2/4),checkFactionInvitations:o(a.SingularityFn2),joinFaction:o(a.SingularityFn2),workForFaction:o(a.SingularityFn2),getFactionRep:o(a.SingularityFn2/3),getFactionFavor:o(a.SingularityFn2/3),getFactionFavorGain:o(a.SingularityFn2/4),donateToFaction:o(a.SingularityFn3),createProgram:o(a.SingularityFn3),commitCrime:o(a.SingularityFn3),getCrimeChance:o(a.SingularityFn3),getCrimeStats:o(a.SingularityFn3),getOwnedAugmentations:o(a.SingularityFn3),getOwnedSourceFiles:o(a.SingularityFn3),getAugmentationFactions:o(a.SingularityFn3),getAugmentationsFromFaction:o(a.SingularityFn3),getAugmentationPrereq:o(a.SingularityFn3),getAugmentationPrice:o(a.SingularityFn3/2),getAugmentationBasePrice:o(a.SingularityFn3/2),getAugmentationRepReq:o(a.SingularityFn3/2),getAugmentationStats:o(a.SingularityFn3),purchaseAugmentation:o(a.SingularityFn3),softReset:o(a.SingularityFn3),installAugmentations:o(a.SingularityFn3),isFocused:o(.1),setFocus:o(.1),exportGame:o(a.SingularityFn1/2),exportGameBonus:o(a.SingularityFn1/4),b1tflum3:o(16),destroyW0r1dD43m0n:o(32),getCurrentWork:o(.5)},l={createGang:a.GangApiBase/4,inGang:a.GangApiBase/4,getMemberNames:a.GangApiBase/4,getGangInformation:a.GangApiBase/2,getOtherGangInformation:a.GangApiBase/2,getMemberInformation:a.GangApiBase/2,canRecruitMember:a.GangApiBase/4,recruitMember:a.GangApiBase/2,getTaskNames:a.GangApiBase/4,getTaskStats:a.GangApiBase/4,setMemberTask:a.GangApiBase/2,getEquipmentNames:a.GangApiBase/4,getEquipmentCost:a.GangApiBase/2,getEquipmentType:a.GangApiBase/2,getEquipmentStats:a.GangApiBase/2,purchaseEquipment:a.GangApiBase,ascendMember:a.GangApiBase,getAscensionResult:a.GangApiBase/2,setTerritoryWarfare:a.GangApiBase/2,getChanceToWinClash:a.GangApiBase,getBonusTime:0},c={inBladeburner:a.BladeburnerApiBase/4,getContractNames:a.BladeburnerApiBase/10,getOperationNames:a.BladeburnerApiBase/10,getBlackOpNames:a.BladeburnerApiBase/10,getBlackOpRank:a.BladeburnerApiBase/2,getGeneralActionNames:a.BladeburnerApiBase/10,getSkillNames:a.BladeburnerApiBase/10,startAction:a.BladeburnerApiBase,stopBladeburnerAction:a.BladeburnerApiBase/2,getCurrentAction:a.BladeburnerApiBase/4,getActionTime:a.BladeburnerApiBase,getActionCurrentTime:a.BladeburnerApiBase,getActionEstimatedSuccessChance:a.BladeburnerApiBase,getActionRepGain:a.BladeburnerApiBase,getActionCountRemaining:a.BladeburnerApiBase,getActionMaxLevel:a.BladeburnerApiBase,getActionCurrentLevel:a.BladeburnerApiBase,getActionAutolevel:a.BladeburnerApiBase,getActionSuccesses:a.BladeburnerApiBase,setActionAutolevel:a.BladeburnerApiBase,setActionLevel:a.BladeburnerApiBase,getRank:a.BladeburnerApiBase,getSkillPoints:a.BladeburnerApiBase,getSkillLevel:a.BladeburnerApiBase,getSkillUpgradeCost:a.BladeburnerApiBase,upgradeSkill:a.BladeburnerApiBase,getTeamSize:a.BladeburnerApiBase,setTeamSize:a.BladeburnerApiBase,getCityEstimatedPopulation:a.BladeburnerApiBase,getCityCommunities:a.BladeburnerApiBase,getCityChaos:a.BladeburnerApiBase,getCity:a.BladeburnerApiBase,switchCity:a.BladeburnerApiBase,getStamina:a.BladeburnerApiBase,joinBladeburnerFaction:a.BladeburnerApiBase,joinBladeburnerDivision:a.BladeburnerApiBase,getBonusTime:0},u={getPossibleLocations:a.InfiltrationGetLocations,getInfiltration:a.InfiltrationGetInfiltrations},m={attempt:a.CodingContractBase,getContractType:a.CodingContractBase/2,getData:a.CodingContractBase/2,getDescription:a.CodingContractBase/2,getNumTriesRemaining:a.CodingContractBase/5,createDummyContract:a.CodingContractBase/5,getContractTypes:a.CodingContractBase/5},f={getNumSleeves:a.SleeveBase,setToIdle:a.SleeveBase,setToShockRecovery:a.SleeveBase,setToSynchronize:a.SleeveBase,setToCommitCrime:a.SleeveBase,setToUniversityCourse:a.SleeveBase,travel:a.SleeveBase,setToCompanyWork:a.SleeveBase,setToFactionWork:a.SleeveBase,setToGymWorkout:a.SleeveBase,getTask:a.SleeveBase,getSleeve:a.SleeveBase,getSleeveAugmentations:a.SleeveBase,getSleevePurchasableAugs:a.SleeveBase,purchaseSleeveAug:a.SleeveBase,setToBladeburnerAction:a.SleeveBase,getSleeveAugmentationPrice:a.SleeveBase,getSleeveAugmentationRepReq:a.SleeveBase},h={giftWidth:a.StanekWidth,giftHeight:a.StanekHeight,chargeFragment:a.StanekCharge,fragmentDefinitions:a.StanekFragmentDefinitions,activeFragments:a.StanekPlacedFragments,clearGift:a.StanekClear,canPlaceFragment:a.StanekCanPlace,placeFragment:a.StanekPlace,getFragment:a.StanekFragmentAt,removeFragment:a.StanekDeleteAt,acceptGift:a.StanekAcceptGift},d={corporation:{hasCorporation:0,getConstants:0,getIndustryData:a.Corporation,getMaterialData:a.Corporation,issueNewShares:a.Corporation,createCorporation:a.Corporation,hasUnlock:a.Corporation,getUnlockCost:a.Corporation,getUpgradeLevel:a.Corporation,getUpgradeLevelCost:a.Corporation,getInvestmentOffer:a.Corporation,acceptInvestmentOffer:a.Corporation,goPublic:a.Corporation,bribe:a.Corporation,getCorporation:a.Corporation,getDivision:a.Corporation,expandIndustry:a.Corporation,expandCity:a.Corporation,purchaseUnlock:a.Corporation,levelUpgrade:a.Corporation,issueDividends:a.Corporation,buyBackShares:a.Corporation,sellShares:a.Corporation,getBonusTime:0,sellMaterial:a.Corporation,sellProduct:a.Corporation,discontinueProduct:a.Corporation,setSmartSupply:a.Corporation,setSmartSupplyOption:a.Corporation,buyMaterial:a.Corporation,bulkPurchase:a.Corporation,getWarehouse:a.Corporation,getProduct:a.Corporation,getMaterial:a.Corporation,setMaterialMarketTA1:a.Corporation,setMaterialMarketTA2:a.Corporation,setProductMarketTA1:a.Corporation,setProductMarketTA2:a.Corporation,exportMaterial:a.Corporation,cancelExportMaterial:a.Corporation,purchaseWarehouse:a.Corporation,upgradeWarehouse:a.Corporation,makeProduct:a.Corporation,limitMaterialProduction:a.Corporation,limitProductProduction:a.Corporation,getUpgradeWarehouseCost:a.Corporation,hasWarehouse:a.Corporation,hireEmployee:a.Corporation,upgradeOfficeSize:a.Corporation,throwParty:a.Corporation,buyTea:a.Corporation,hireAdVert:a.Corporation,research:a.Corporation,getOffice:a.Corporation,getHireAdVertCost:a.Corporation,getHireAdVertCount:a.Corporation,getResearchCost:a.Corporation,hasResearched:a.Corporation,setAutoJobAssignment:a.Corporation,getOfficeSizeUpgradeCost:a.Corporation},hacknet:{numNodes:0,purchaseNode:0,getPurchaseNodeCost:0,getNodeStats:0,upgradeLevel:0,upgradeRam:0,upgradeCore:0,upgradeCache:0,getLevelUpgradeCost:0,getRamUpgradeCost:0,getCoreUpgradeCost:0,getCacheUpgradeCost:0,numHashes:0,hashCost:0,spendHashes:0,maxNumNodes:0,hashCapacity:0,getHashUpgrades:0,getHashUpgradeLevel:0,getStudyMult:0,getTrainingMult:0},stock:i,singularity:s,gang:l,bladeburner:c,infiltration:u,codingcontract:m,sleeve:f,stanek:h,ui:{getTheme:0,setTheme:0,resetTheme:0,getStyles:0,setStyles:0,resetStyles:0,getGameInfo:0,clearTerminal:0,windowSize:0},grafting:{getAugmentationGraftPrice:3.75,getAugmentationGraftTime:3.75,getGraftableAugmentations:5,graftAugmentation:7.5},sprintf:0,vsprintf:0,scan:a.Scan,hack:a.Hack,hackAnalyzeThreads:a.HackAnalyze,hackAnalyze:a.HackAnalyze,hackAnalyzeSecurity:a.HackAnalyze,hackAnalyzeChance:a.HackAnalyze,sleep:0,asleep:0,share:2.4,getSharePower:.2,grow:a.Grow,growthAnalyze:a.GrowthAnalyze,growthAnalyzeSecurity:a.GrowthAnalyze,weaken:a.Weaken,weakenAnalyze:a.WeakenAnalyze,print:0,printf:0,tprint:0,tprintf:0,clearLog:0,disableLog:0,enableLog:0,isLogEnabled:0,getScriptLogs:0,hasTorRouter:.05,nuke:a.PortProgram,brutessh:a.PortProgram,ftpcrack:a.PortProgram,relaysmtp:a.PortProgram,httpworm:a.PortProgram,sqlinject:a.PortProgram,run:a.Run,exec:a.Exec,spawn:a.Spawn,kill:a.Kill,killall:a.Kill,exit:0,atExit:0,scp:a.Scp,ls:a.Scan,ps:a.Scan,getRecentScripts:a.RecentScripts,hasRootAccess:a.HasRootAccess,getHostname:a.GetHostname,getHackingLevel:a.GetHackingLevel,getHackingMultipliers:.25,getHacknetMultipliers:.25,getBitNodeMultipliers:4,getServer:2,getServerMoneyAvailable:a.GetServer,getServerSecurityLevel:a.GetServer,getServerBaseSecurityLevel:a.GetServer,getServerMinSecurityLevel:a.GetServer,getServerRequiredHackingLevel:a.GetServer,getServerMaxMoney:a.GetServer,getServerGrowth:a.GetServer,getServerNumPortsRequired:a.GetServer,getServerMaxRam:a.GetServerMaxRam,getServerUsedRam:a.GetServerUsedRam,serverExists:a.GetServer,fileExists:a.FileExists,isRunning:a.IsRunning,getPurchasedServerLimit:a.GetPurchasedServerLimit,getPurchasedServerMaxRam:a.GetPurchasedServerMaxRam,getPurchasedServerCost:a.GetPurchaseServer,getPurchasedServerUpgradeCost:.1,upgradePurchasedServer:.25,renamePurchasedServer:0,purchaseServer:a.PurchaseServer,deleteServer:a.PurchaseServer,getPurchasedServers:a.PurchaseServer,write:0,tryWritePort:0,read:0,peek:0,clear:0,writePort:0,readPort:0,getPortHandle:0,rm:a.ReadWrite,scriptRunning:a.ArbScript,scriptKill:a.ArbScript,getScriptName:0,getScriptRam:a.GetScript,getHackTime:a.GetHackTime,getGrowTime:a.GetHackTime,getWeakenTime:a.GetHackTime,getTotalScriptIncome:a.GetScript,getScriptIncome:a.GetScript,getTotalScriptExpGain:a.GetScript,getScriptExpGain:a.GetScript,getRunningScript:a.GetRunningScript,formatNumber:0,formatRam:0,formatPercent:0,nFormat:0,tFormat:0,getTimeSinceLastAug:a.GetHackTime,prompt:0,wget:0,getFavorToDonate:a.GetFavorToDonate,getPlayer:a.SingularityFn1/4,getMoneySources:a.GetMoneySourcesCost,mv:0,getResetInfo:1,getFunctionRamCost:0,tail:0,toast:0,moveTail:0,resizeTail:0,closeTail:0,setTitle:0,clearPort:0,openDevMenu:0,alert:0,flags:0,exploit:0,bypass:0,alterReality:0,rainbow:0,heart:{break:0},tprintRaw:0,printRaw:0,formulas:{mockServer:0,mockPlayer:0,mockPerson:0,reputation:{calculateFavorToRep:0,calculateRepToFavor:0,repFromDonation:0},skills:{calculateSkill:0,calculateExp:0},hacking:{hackChance:0,hackExp:0,hackPercent:0,growPercent:0,growThreads:0,hackTime:0,growTime:0,weakenTime:0},hacknetNodes:{moneyGainRate:0,levelUpgradeCost:0,ramUpgradeCost:0,coreUpgradeCost:0,hacknetNodeCost:0,constants:0},hacknetServers:{hashGainRate:0,levelUpgradeCost:0,ramUpgradeCost:0,coreUpgradeCost:0,cacheUpgradeCost:0,hashUpgradeCost:0,hacknetServerCost:0,constants:0},gang:{wantedPenalty:0,respectGain:0,wantedLevelGain:0,moneyGain:0,ascensionPointsGain:0,ascensionMultiplier:0},work:{crimeSuccessChance:0,crimeGains:0,gymGains:0,universityGains:0,factionGains:0,companyGains:0}}};function p(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(0===e.length)throw new Error("No arguments passed to getRamCost()");let n=d;for(const r of e){const a=n[r];if(void 0===a){const n=`No ram cost is defined for (ns.${e.join(".")})`;if(t)throw n;return 0}if(!a||"object"!=typeof a)return"function"==typeof a?a():a;n=a}throw new Error(`Tried to get ram cost for ns.${e.join(".")} but the value was an invalid type`)}},71828:(e,t,n)=>{"use strict";n.d(t,{$:()=>a,h:()=>o});var r=n(51087);const a=[];function o(e){if(a.find((t=>t.runningScript.pid===e.pid)))return;const t=new Date;for(a.unshift({timeOfDeath:t,runningScript:e.scriptRef});a.length>r.Z.MaxRecentScriptsCapacity;)a.pop()}},60520:(e,t,n)=>{"use strict";n.d(t,{w:()=>r});class r{errorMessage="";constructor(e){this.pid=e.pid,this.name=e.name,this.hostname=e.hostname,this.errorMessage=e.errorMessage,Object.freeze(this)}}Object.freeze(r),Object.freeze(r.prototype)},40185:(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var r=n(6336),a=n(32310),o=n(97467);class i{code="";delay=null;delayReject=void 0;disableLogs={};dynamicLoadedFns={};dynamicRamUsage=a.qS.Base;errorMessage="";loadedFns={};output="";atExit=void 0;constructor(e,t,n){this.name=e.filename,this.hostname=e.server;const a=Math.round(t);if("number"!=typeof a||isNaN(a))throw new Error(`Invalid PID when constructing WorkerScript: ${t}`);this.pid=a,e.pid=a;const i=(0,o.WT)(this.hostname);if(null==i)throw new Error(`WorkerScript constructed with invalid server ip: ${this.hostname}`);const s=i.scripts.get(this.name);if(!s)throw new Error(`WorkerScript constructed with invalid script filename: ${this.name}`);this.code=s.code,this.scriptRef=e,this.args=e.args.slice(),this.env=new r.q,"function"==typeof n&&(this.env.vars=n(this))}getServer(){const e=(0,o.WT)(this.hostname);if(null==e)throw new Error(`Script ${this.name} pid ${this.pid} is running on non-existent server?`);return e}getScript(){return this.getServer().scripts.get(this.name)||(console.error("Failed to find underlying Script object in WorkerScript.getScript(). This probably means somethings wrong"),null)}shouldLog(e){return null==this.disableLogs[e]}log(e,t){this.shouldLog(e)&&(e&&t?this.scriptRef.log(`${e}: ${t()}`):e?this.scriptRef.log(e):this.scriptRef.log(t()))}print(e){this.scriptRef.log(e)}}},75350:(e,t,n)=>{"use strict";n.d(t,{R:()=>r});const r=new Map},21951:(e,t,n)=>{"use strict";n.d(t,{_:()=>h,i:()=>f});var r=n(60520),a=n(40185),o=n(75350),i=n(97467),s=n(71828),l=n(40780),c=n(95173),u=n(23122),m=n(99953);function f(e){return l.wP.isRunning?(c.e.emit("Processes cannot be killed during the tutorial."),!1):(d(e),!0)}function h(e){const t=o.R.get(e);return t instanceof a.h&&(d(t),!0)}function d(e){var t;if(!e.env.stopFlag){if(e.delay&&clearTimeout(e.delay),null===(t=e.delayReject)||void 0===t||t.call(e,new r.w(e)),e.env.runningFn="","function"==typeof e.atExit){try{const t=e.atExit;e.atExit=void 0,t()}catch(t){(0,u.ac)(t,e,"Error running atExit function.\n\n")}if(e.env.stopFlag)return}e.env.stopFlag=!0,function(e){const t=e.hostname,n=(0,i.WT)(t);if(null==n)return void console.error(`Could not find server on which this script is running: ${t}`);const r=e.scriptRef,a=n.runningScriptMap.get(r.scriptKey);a?(a.delete(e.pid),0===a.size&&n.runningScriptMap.delete(r.scriptKey)):console.error(`Couldn't find runningScriptMap for key ${r.scriptKey}`),n.updateRamUsed((0,m.S)(n.ramUsed-r.ramUsage*r.threads)),o.R.delete(e.pid),(0,s.h)(e)}(e)}}},96393:(e,t,n)=>{"use strict";n.d(t,{k:()=>le,ns:()=>ce,q:()=>ue});var r=n(19755),a=n.n(r),o=n(8975),i=n(97740),s=n(72938),l=n(49708),c=n(42805),u=n(65065),m=n(49173),f=n(33244),h=n(23001),d=n(97467),p=n(2517),g=n(89673),y=n(89916),b=n(62734),v=n(7872),k=n(21951),w=n(75350),E=n(23122),S=n(22115),C=n(49802),x=n(85167),N=n(72326),M=n(82120),A=n(12093),T=n(30180),L=n(47837),R=n(53235),F=n(53331),_=n(32730),I=n(47051),P=n(40082),B=n(83075),O=n(62450),D=n(67828),Z=n(82439),G=n(56704),J=n(39463),W=n(32369),H=n(70769),U=n(21278),j=n(46085),$=n(27178),q=n(71828),z=n(40811),V=n(60520),Y=n(99745),K=n(78719),X=n(96486),Q=n(92077),ee=n.n(Q),te=n(24302),ne=n(64962),re=n(69917),ae=n(48897),oe=n(61835),ie=n(32310),se=n(50862);const le={CityName:f.CityName,CrimeType:f.CrimeType,FactionWorkType:f.FactionWorkType,GymType:f.GymType,JobName:f.JobName,LocationName:f.LocationName,ToastVariant:f.ToastVariant,UniversityClassType:f.UniversityClassType,CompanyName:f.CompanyName};for(const e of Object.values(le))Object.freeze(e);Object.freeze(le);const ce={singularity:(0,G.h)(),gang:(0,M.j)(),bladeburner:(0,I.M)(),codingcontract:(0,P.f)(),sleeve:(0,A.T)(),corporation:(0,B.x)(),stanek:(0,R.T)(),infiltration:(0,F.d)(),ui:(0,_.z)(),formulas:(0,O.V)(),stock:(0,D.V)(),grafting:(0,Z.u)(),hacknet:(0,L.p)(),sprintf:()=>o.sprintf,vsprintf:()=>o.vsprintf,scan:e=>t=>{const n=t?E.BM.string(e,"hostname",t):e.workerScript.hostname,r=E.BM.getServer(e,n),a=[];for(let e=0;e`returned ${r.serversOnNetwork.length} connections for ${r.hostname}`)),a},hasTorRouter:()=>()=>m.J5.hasTorRouter(),hack:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=E.BM.string(e,"hostname",t),a={};return(0,E.Z6)(e,"opts",n,a),E.BM.hack(e,r,!1,n)},hackAnalyzeThreads:e=>(t,n)=>{const r=E.BM.string(e,"hostname",t),a=E.BM.number(e,"hackAmount",n),o=E.BM.getServer(e,r);if(!(o instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),-1;if(isNaN(a))throw E.BM.makeRuntimeErrorMsg(e,`Invalid hackAmount argument passed into hackAnalyzeThreads: ${a}. Must be numeric.`);if(a<0||a>o.moneyAvailable)return-1;if(0===a)return 0;const i=(0,l.zX)(o,m.J5);return 0===i||0===o.moneyAvailable?-1:a/(o.moneyAvailable*i)},hackAnalyze:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?(0,l.zX)(r,m.J5):(E.BM.log(e,(()=>"Cannot be executed on this server.")),0)},hackAnalyzeSecurity:e=>(t,n)=>{let r=E.BM.number(e,"threads",t);if(n){const t=E.BM.string(e,"hostname",n),a=E.BM.getServer(e,t);if(!(a instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),0;const o=(0,l.zX)(a,m.J5);o>0&&(r=Math.min(r,Math.ceil(1/o)))}return s.t.ServerFortifyAmount*r},hackAnalyzeChance:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?(0,l.gb)(r,m.J5):(E.BM.log(e,(()=>"Cannot be executed on this server.")),0)},sleep:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const n=E.BM.number(e,"time",t);return E.BM.log(e,(()=>`Sleeping for ${n} milliseconds`)),E.BM.netscriptDelay(e,n).then((function(){return Promise.resolve(!0)}))},asleep:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const n=E.BM.number(e,"time",t);return E.BM.log(e,(()=>`Sleeping for ${n} milliseconds`)),new Promise((e=>setTimeout((()=>e(!0)),n)))},grow:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=E.BM.string(e,"hostname",t),a={};(0,E.Z6)(e,"opts",n,a);const o=E.BM.resolveNetscriptRequestedThreads(e,n.threads),i=E.BM.number(e,"opts.additionalMsec",n.additionalMsec??0);if(i<0)throw E.BM.makeRuntimeErrorMsg(e,`additionalMsec must be non-negative, got ${i}`);const s=E.BM.getServer(e,r);if(!(s instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),Promise.resolve(0);const u=(0,d.WT)(e.workerScript.hostname);if(null===u)throw new Error("Workerscript host is null");const f=(0,c.Mr)(s);if(!f.res)throw E.BM.makeRuntimeErrorMsg(e,f.msg||"");const h=(0,l.Md)(s,m.J5)+i/1e3;return E.BM.log(e,(()=>`Executing on '${s.hostname}' in ${(0,C.UF)(1e3*h,!0)} (t=${(0,S.jL)(o)}).`)),E.BM.netscriptDelay(e,1e3*h).then((function(){const t=s.moneyAvailable<=0?1:s.moneyAvailable;(0,p.pw)(s,o,u.cpuCores);const r=s.moneyAvailable;e.workerScript.scriptRef.recordGrow(s.hostname,o);const a=(0,l.iG)(s,m.J5)*o,i=r/t-1;return E.BM.log(e,(()=>`Available money on '${s.hostname}' grown by ${(0,S.T3)(i,6)}. Gained ${(0,S.Mf)(a)} hacking exp (t=${(0,S.jL)(o)}).`)),e.workerScript.scriptRef.onlineExpGained+=a,m.J5.gainHackingExp(a),n.stock&&(0,b.Bh)(s,r-t),Promise.resolve(r/t)}))},growthAnalyze:e=>function(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=E.BM.string(e,"hostname",t),o=E.BM.number(e,"multiplier",n),i=E.BM.number(e,"cores",r),s=E.BM.getServer(e,a);if(!(s instanceof y.x))return E.BM.log(e,(()=>`${a} is not a hackable server. Returning 0.`)),0;if(o<1||!isFinite(o))throw E.BM.makeRuntimeErrorMsg(e,`Invalid argument: multiplier must be finite and >= 1, is ${o}.`);if(!Number.isInteger(i)||i<1)throw E.BM.makeRuntimeErrorMsg(e,`Cores should be a positive integer. Cores provided: ${i}`);return(0,p.a_)(s,o,i)},growthAnalyzeSecurity:e=>function(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=E.BM.number(e,"threads",t);if(n){const t=E.BM.number(e,"cores",r),o=E.BM.string(e,"hostname",n),i=E.BM.getServer(e,o);if(!(i instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),0;const s=Math.ceil((0,p.yk)(i,i.moneyMax,i.moneyAvailable,t));a=Math.min(a,s)}return 2*s.t.ServerFortifyAmount*a},weaken:e=>async function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=E.BM.string(e,"hostname",t),a={};(0,E.Z6)(e,"opts",n,a);const o=E.BM.resolveNetscriptRequestedThreads(e,n.threads),u=E.BM.number(e,"opts.additionalMsec",n.additionalMsec??0);if(u<0)throw E.BM.makeRuntimeErrorMsg(e,`additionalMsec must be non-negative, got ${u}`);const f=E.BM.getServer(e,r);if(!(f instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),Promise.resolve(0);const h=(0,c.Eb)(f);if(!h.res)throw E.BM.makeRuntimeErrorMsg(e,h.msg||"");const p=(0,l.Vp)(f,m.J5)+u/1e3;return E.BM.log(e,(()=>`Executing on '${f.hostname}' in ${(0,C.UF)(1e3*p,!0)} (t=${(0,S.jL)(o)})`)),E.BM.netscriptDelay(e,1e3*p).then((function(){const t=(0,d.WT)(e.workerScript.hostname);if(null===t)return E.BM.log(e,(()=>"Server is null, did it die?")),Promise.resolve(0);const n=1+(t.cpuCores-1)/16,r=s.t.ServerWeakenAmount*o*n;f.weaken(r),e.workerScript.scriptRef.recordWeaken(f.hostname,o);const a=(0,l.iG)(f,m.J5)*o;return E.BM.log(e,(()=>`'${f.hostname}' security level weakened to ${f.hackDifficulty}. Gained ${(0,S.Mf)(a)} hacking exp (t=${(0,S.jL)(o)})`)),e.workerScript.scriptRef.onlineExpGained+=a,m.J5.gainHackingExp(a),Promise.resolve(r*i.dQ.ServerWeakenRate)}))},weakenAnalyze:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=E.BM.number(e,"threads",t),a=E.BM.number(e,"cores",n),o=1+(a-1)/16;return s.t.ServerWeakenAmount*r*o*i.dQ.ServerWeakenRate},share:e=>()=>{E.BM.log(e,(()=>"Sharing this computer."));const t=(0,$.HX)(e.workerScript.scriptRef.threads*(0,j.f)(m.J5.skills.intelligence,2));return E.BM.netscriptDelay(e,1e4).finally((function(){E.BM.log(e,(()=>"Finished sharing this computer.")),t()}))},getSharePower:()=>()=>(0,$.J6)(),print:e=>function(){for(var t=arguments.length,n=new Array(t),r=0;rfunction(t){const n=E.BM.string(e,"format",t);if("string"!=typeof n)throw E.BM.makeRuntimeErrorMsg(e,"First argument must be string for the format.");for(var r=arguments.length,a=new Array(r>1?r-1:0),i=1;ifunction(){for(var t=arguments.length,n=new Array(t),r=0;rfunction(t){const n=E.BM.string(e,"format",t);for(var r=arguments.length,a=new Array(r>1?r-1:0),i=1;i()=>{e.workerScript.scriptRef.clearLog()},disableLog:e=>t=>{const n=E.BM.string(e,"fn",t);if("ALL"===n){for(const t of Object.keys(me))e.workerScript.disableLogs[t]=!0;E.BM.log(e,(()=>"Disabled logging for all functions"))}else{if(void 0===me[n])throw E.BM.makeRuntimeErrorMsg(e,`Invalid argument: ${n}.`);e.workerScript.disableLogs[n]=!0,E.BM.log(e,(()=>`Disabled logging for ${n}`))}},enableLog:e=>t=>{const n=E.BM.string(e,"fn",t);if("ALL"===n){for(const t of Object.keys(me))delete e.workerScript.disableLogs[t];E.BM.log(e,(()=>"Enabled logging for all functions"))}else if(void 0===me[n])throw E.BM.makeRuntimeErrorMsg(e,`Invalid argument: ${n}.`);delete e.workerScript.disableLogs[n],E.BM.log(e,(()=>`Enabled logging for ${n}`))},isLogEnabled:e=>t=>{const n=E.BM.string(e,"fn",t);if(void 0===me[n])throw E.BM.makeRuntimeErrorMsg(e,`Invalid argument: ${n}.`);return!e.workerScript.disableLogs[n]},getScriptLogs:e=>function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i))),[]):s.logs.map((e=>""+e))},tail:e=>function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i)))},moveTail:e=>function(t,n){var r;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.workerScript.scriptRef.pid;const o=E.BM.number(e,"x",t),i=E.BM.number(e,"y",n),s=E.BM.number(e,"pid",a),l=E.BM.getRunningScript(e,s);null!=l?null===(r=l.tailProps)||void 0===r||r.setPosition(o,i):E.BM.log(e,(()=>E.BM.getCannotFindRunningScriptErrorMessage(s)))},resizeTail:e=>function(t,n){var r;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.workerScript.scriptRef.pid;const o=E.BM.number(e,"w",t),i=E.BM.number(e,"h",n),s=E.BM.number(e,"pid",a),l=E.BM.getRunningScript(e,s);null!=l?null===(r=l.tailProps)||void 0===r||r.setSize(o,i):E.BM.log(e,(()=>E.BM.getCannotFindRunningScriptErrorMessage(s)))},closeTail:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.scriptRef.pid;const n=E.BM.number(e,"pid",t);x.A9.emit(n)},setTitle:e=>function(t){var n;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.workerScript.scriptRef.pid;const a=E.BM.number(e,"pid",r),o=E.BM.getRunningScript(e,a);null!=o?(o.title="string"==typeof t?t:(0,E.Wt)(t),null===(n=o.tailProps)||void 0===n||n.rerender()):E.BM.log(e,(()=>E.BM.getCannotFindRunningScriptErrorMessage(a)))},nuke:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);if(!(r instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(r.hasAdminRights)return E.BM.log(e,(()=>`Already have root access to '${r.hostname}'.`)),!0;if(!m.J5.hasProgram(f.CompletedProgramName.nuke))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the NUKE.exe virus!");if(r.openPortCount`Executed NUKE.exe virus on '${r.hostname}' to gain root access.`)),!0},brutessh:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);if(!(r instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.bruteSsh))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the BruteSSH.exe program!");return r.sshPortOpen?E.BM.log(e,(()=>`SSH Port (22) already opened on '${r.hostname}'.`)):(E.BM.log(e,(()=>`Executed BruteSSH.exe on '${r.hostname}' to open SSH port (22).`)),r.sshPortOpen=!0,++r.openPortCount),!0},ftpcrack:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);if(!(r instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.ftpCrack))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the FTPCrack.exe program!");return r.ftpPortOpen?E.BM.log(e,(()=>`FTP Port (21) already opened on '${r.hostname}'.`)):(E.BM.log(e,(()=>`Executed FTPCrack.exe on '${r.hostname}' to open FTP port (21).`)),r.ftpPortOpen=!0,++r.openPortCount),!0},relaysmtp:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);if(!(r instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.relaySmtp))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the relaySMTP.exe program!");return r.smtpPortOpen?E.BM.log(e,(()=>`SMTP Port (25) already opened on '${r.hostname}'.`)):(E.BM.log(e,(()=>`Executed relaySMTP.exe on '${r.hostname}' to open SMTP port (25).`)),r.smtpPortOpen=!0,++r.openPortCount),!0},httpworm:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);if(!(r instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.httpWorm))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the HTTPWorm.exe program!");return r.httpPortOpen?E.BM.log(e,(()=>`HTTP Port (80) already opened on '${r.hostname}'.`)):(E.BM.log(e,(()=>`Executed HTTPWorm.exe on '${r.hostname}' to open HTTP port (80).`)),r.httpPortOpen=!0,++r.openPortCount),!0},sqlinject:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);if(!(r instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.sqlInject))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the SQLInject.exe program!");return r.sqlPortOpen?E.BM.log(e,(()=>`SQL Port (1433) already opened on '${r.hostname}'.`)):(E.BM.log(e,(()=>`Executed SQLInject.exe on '${r.hostname}' to open SQL port (1433).`)),r.sqlPortOpen=!0,++r.openPortCount),!0},run:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=E.BM.scriptPath(e,"scriptname",t),a=E.BM.runOptions(e,n);for(var o=arguments.length,i=new Array(o>2?o-2:0),s=2;sfunction(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=E.BM.scriptPath(e,"scriptname",t),o=E.BM.string(e,"hostname",n),i=E.BM.runOptions(e,r);for(var s=arguments.length,l=new Array(s>3?s-3:0),c=3;cfunction(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=E.BM.scriptPath(e,"scriptname",t),a=E.BM.runOptions(e,n);for(var o=arguments.length,i=new Array(o>2?o-2:0),s=2;s{const t=(0,d.WT)(e.workerScript.hostname);if(null==t)throw E.BM.makeRuntimeErrorMsg(e,"Could not find server. This is a bug. Report to dev");return(0,v.JP)("spawn",t,r,l,e.workerScript,a)}),1e3*c),E.BM.log(e,(()=>`Will execute '${r}' in ${c} seconds`)),(0,k.i)(e.workerScript)&&E.BM.log(e,(()=>"Exiting..."))},kill:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.workerScript.hostname;for(var r=arguments.length,a=new Array(r>2?r-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i))),!1;s=!0;for(const e of n.keys())s&&(s=(0,k._)(e))}return s?(l?E.BM.log(e,(()=>`Killing script with PID ${i}`)):E.BM.log(e,(()=>`Killing '${t}' on '${n}' with args: ${(0,N.N)(a)}.`)),!0):(l?E.BM.log(e,(()=>`No script with PID ${i}`)):E.BM.log(e,(()=>`Internal error killing '${t}' on '${n}' with args: ${(0,N.N)(a)}`)),!1)},killall:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const r=E.BM.string(e,"hostname",t),a=!!n,o=E.BM.getServer(e,r);let i=0;for(const t of o.runningScriptMap.values())for(const n of t.keys())a&&n==e.workerScript.pid||((0,k._)(n),++i);return E.BM.log(e,(()=>`Killing all scripts on '${o.hostname}'.`)),i>0},exit:e=>()=>{throw E.BM.log(e,(()=>"Exiting...")),(0,k.i)(e.workerScript),new V.w(e.workerScript)},scp:e=>(t,n,r)=>{const a=E.BM.string(e,"destination",n),o=E.BM.string(e,"source",r??e.workerScript.hostname),i=E.BM.getServer(e,a),s=E.BM.getServer(e,o),l=Array.isArray(t)?t:[t],c=[],u=[];for(const t of l){const n=E.BM.filePath(e,"files",t);if((0,re.UH)(n)||(0,ae.e)(n))u.push(n);else{if(!n.endsWith(".lit"))throw E.BM.makeRuntimeErrorMsg(e,"Only works for scripts, .lit and .txt files.");c.push(n)}}let m=!0;for(const t of u){const n=s.getContentFile(t);if(!n){E.BM.log(e,(()=>`File '${t}' does not exist.`)),m=!1;continue}const r=i.writeToContentFile(t,n.content);E.BM.log(e,(()=>`Copied file ${t} from ${s.hostname} to ${i.hostname}`)),r.overwritten&&E.BM.log(e,(()=>`Warning: ${t} was overwritten on ${i.hostname}`))}for(const t of c)s.messages.find((e=>e===t))?i.messages.find((e=>e===t))?E.BM.log(e,(()=>`File '${t}' was already on '${i.hostname}'.`)):(i.messages.push(t),E.BM.log(e,(()=>`File '${t}' copied over to '${i.hostname}'.`))):(E.BM.log(e,(()=>`File '${t}' does not exist.`)),m=!1);return m},ls:e=>(t,n)=>{const r=E.BM.string(e,"hostname",t),a=E.BM.string(e,"substring",n??""),o=E.BM.getServer(e,r),i=[...o.contracts.map((e=>e.fn)),...o.messages,...o.programs,...o.scripts.keys(),...o.textFiles.keys()];return a?i.filter((e=>("/"+e).includes(a))).sort():i.sort()},getRecentScripts:()=>()=>q.$.map((e=>({timeOfDeath:e.timeOfDeath,...E.BM.createPublicRunningScript(e.runningScript)}))),ps:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname;const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n),a=[];for(const e of r.runningScriptMap.values())for(const t of e.values())a.push({filename:t.filename,threads:t.threads,args:t.args.slice(),pid:t.pid,temporary:t.temporary});return a},hasRootAccess:e=>t=>{const n=E.BM.string(e,"hostname",t);return E.BM.getServer(e,n).hasAdminRights},getHostname:e=>()=>e.workerScript.hostname,getHackingLevel:e=>()=>(m.J5.updateSkillLevels(),E.BM.log(e,(()=>`returned ${m.J5.skills.hacking}`)),m.J5.skills.hacking),getHackingMultipliers:()=>()=>({chance:m.J5.mults.hacking_chance,speed:m.J5.mults.hacking_speed,money:m.J5.mults.hacking_money,growth:m.J5.mults.hacking_grow}),getHacknetMultipliers:()=>()=>({production:m.J5.mults.hacknet_node_money,purchaseCost:m.J5.mults.hacknet_node_purchase_cost,ramCost:m.J5.mults.hacknet_node_ram_cost,coreCost:m.J5.mults.hacknet_node_core_cost,levelCost:m.J5.mults.hacknet_node_level_cost}),getBitNodeMultipliers:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m.J5.bitNodeN,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:m.J5.sourceFileLvl(m.J5.bitNodeN)+1;if(m.J5.sourceFileLvl(5)<=0&&5!==m.J5.bitNodeN)throw E.BM.makeRuntimeErrorMsg(e,"Requires Source-File 5 to run.");const r=Math.round(E.BM.number(e,"n",t)),a=Math.round(E.BM.number(e,"lvl",n));if(r<1||r>13)throw new Error("n must be between 1 and 13");if(a<1)throw new Error("lvl must be >= 1");return Object.assign({},(0,Y.cm)(r,a))},getServer:e=>t=>{const n=E.BM.string(e,"hostname",t??e.workerScript.hostname),r=E.BM.getServer(e,n);return{hostname:r.hostname,ip:r.ip,sshPortOpen:r.sshPortOpen,ftpPortOpen:r.ftpPortOpen,smtpPortOpen:r.smtpPortOpen,httpPortOpen:r.httpPortOpen,sqlPortOpen:r.sqlPortOpen,hasAdminRights:r.hasAdminRights,cpuCores:r.cpuCores,isConnectedTo:r.isConnectedTo,ramUsed:r.ramUsed,maxRam:r.maxRam,organizationName:r.organizationName,purchasedByPlayer:r.purchasedByPlayer,backdoorInstalled:r.backdoorInstalled,baseDifficulty:r.baseDifficulty,hackDifficulty:r.hackDifficulty,minDifficulty:r.minDifficulty,moneyAvailable:r.moneyAvailable,moneyMax:r.moneyMax,numOpenPortsRequired:r.numOpenPortsRequired,openPortCount:r.openPortCount,requiredHackingSkill:r.requiredHackingSkill,serverGrowth:r.serverGrowth}},getServerMoneyAvailable:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?0:"home"==r.hostname?(E.BM.log(e,(()=>`returned player's money: ${(0,S.lb)(m.J5.money)}`)),m.J5.money):(E.BM.log(e,(()=>`returned ${(0,S.lb)(r.moneyAvailable)} for '${r.hostname}'`)),r.moneyAvailable):(E.BM.log(e,(()=>"Cannot be executed on this server.")),0)},getServerSecurityLevel:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?1:(E.BM.log(e,(()=>`returned ${(0,S.L7)(r.hackDifficulty)} for '${r.hostname}'`)),r.hackDifficulty):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerBaseSecurityLevel:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?1:(E.BM.log(e,(()=>`returned ${(0,S.L7)(r.baseDifficulty)} for '${r.hostname}'`)),r.baseDifficulty):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerMinSecurityLevel:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?1:(E.BM.log(e,(()=>`returned ${(0,S.L7)(r.minDifficulty)} for ${r.hostname}`)),r.minDifficulty):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerRequiredHackingLevel:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?1:(E.BM.log(e,(()=>`returned ${(0,S.$j)(r.requiredHackingSkill,0)} for '${r.hostname}'`)),r.requiredHackingSkill):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerMaxMoney:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?0:(E.BM.log(e,(()=>`returned ${(0,S.lb)(r.moneyMax)} for '${r.hostname}'`)),r.moneyMax):(E.BM.log(e,(()=>"Cannot be executed on this server.")),0)},getServerGrowth:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?1:(E.BM.log(e,(()=>`returned ${r.serverGrowth} for '${r.hostname}'`)),r.serverGrowth):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerNumPortsRequired:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?5:(E.BM.log(e,(()=>`returned ${r.numOpenPortsRequired} for '${r.hostname}'`)),r.numOpenPortsRequired):(E.BM.log(e,(()=>"Cannot be executed on this server.")),5)},getServerMaxRam:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return E.BM.log(e,(()=>`returned ${(0,S.$1)(r.maxRam)}`)),r.maxRam},getServerUsedRam:e=>t=>{const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return E.BM.log(e,(()=>`returned ${(0,S.$1)(r.ramUsed)}`)),r.ramUsed},serverExists:e=>t=>{const n=E.BM.string(e,"hostname",t);return null!==(0,d.WT)(n)},fileExists:e=>(t,n)=>{const r=E.BM.string(e,"filename",t),a=E.BM.string(e,"hostname",n??e.workerScript.hostname),o=E.BM.getServer(e,a),i=(0,ne.Iw)(r,e.workerScript.name);if(!i)return!1;if((0,re.UH)(i))return o.scripts.has(i);if((0,ae.e)(i))return o.textFiles.has(i);if(i.endsWith(".lit")||i.endsWith(".msg"))return o.messages.includes(i);if((0,oe.G)(i))return!!o.contracts.find((e=>{let{fn:t}=e;return t===i}));const s=i.toLowerCase();return o.programs.map((e=>e.toLowerCase())).includes(s)},isRunning:e=>function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),o=2;o()=>(0,g.kq)(),getPurchasedServerMaxRam:()=>()=>(0,g.RI)(),getPurchasedServerCost:e=>t=>{const n=E.BM.number(e,"ram",t),r=(0,g.aZ)(n);return r===1/0?(E.BM.log(e,(()=>`Invalid argument: ram='${n}'`)),1/0):r},purchaseServer:e=>(t,n)=>{const r=E.BM.string(e,"name",t),a=E.BM.number(e,"ram",n);let o=String(r);if(o=o.replace(/\s+/g,""),""==o)return E.BM.log(e,(()=>`Invalid argument: hostname='${o}'`)),"";if(m.J5.purchasedServers.length>=(0,g.kq)())return E.BM.log(e,(()=>`You have reached the maximum limit of ${(0,g.kq)()} servers. You cannot purchase any more.`)),"";const i=(0,g.aZ)(a);if(i===1/0)return a>(0,g.RI)()?E.BM.log(e,(()=>`Invalid argument: ram='${a}' must not be greater than getPurchaseServerMaxRam`)):E.BM.log(e,(()=>`Invalid argument: ram='${a}' must be a positive power of 2`)),"";if(m.J5.money`Not enough money to purchase server. Need ${(0,S.lb)(i)}`)),"";const s=(0,p.iw)({ip:(0,d.hG)(),hostname:o,organizationName:"",isConnectedTo:!1,adminRights:!0,purchasedByPlayer:!0,maxRam:a});(0,d.jG)(s),m.J5.purchasedServers.push(s.hostname);const l=m.J5.getHomeComputer();return l.serversOnNetwork.push(s.hostname),s.serversOnNetwork.push(l.hostname),m.J5.loseMoney(i,"servers"),E.BM.log(e,(()=>`Purchased new server with hostname '${s.hostname}' for ${(0,S.lb)(i)}`)),s.hostname},getPurchasedServerUpgradeCost:e=>(t,n)=>{const r=E.BM.string(e,"hostname",t),a=E.BM.number(e,"ram",n);try{return(0,g.eV)(r,a)}catch(t){return E.BM.log(e,(()=>String(t))),-1}},upgradePurchasedServer:e=>(t,n)=>{const r=E.BM.string(e,"hostname",t),a=E.BM.number(e,"ram",n);try{return(0,g.VZ)(r,a),!0}catch(t){return E.BM.log(e,(()=>String(t))),!1}},renamePurchasedServer:e=>(t,n)=>{const r=E.BM.string(e,"hostname",t),a=E.BM.string(e,"newName",n);try{return(0,g.Or)(r,a),!0}catch(t){return E.BM.log(e,(()=>String(t))),!1}},deleteServer:e=>t=>{const n=E.BM.string(e,"name",t);let r=String(n);r=r.replace(/\s\s+/g,"");const a=(0,d.WT)(r);if(!(a instanceof y.x))return E.BM.log(e,(()=>`Invalid argument: hostname='${r}'`)),!1;if(!a.purchasedByPlayer||"home"===a.hostname)return E.BM.log(e,(()=>"Cannot delete non-purchased server.")),!1;const o=a.hostname;if(a.isConnectedTo)return E.BM.log(e,(()=>"You are currently connected to the server you are trying to delete.")),!1;if(o===e.workerScript.hostname)return E.BM.log(e,(()=>"Cannot delete the server this script is running on.")),!1;if(a.runningScriptMap.size>0)return E.BM.log(e,(()=>`Cannot delete server '${o}' because it still has scripts running.`)),!1;let i=!1;for(let e=0;e`Could not identify server ${o} as a purchased server. This is a bug. Report to dev.`)),!1;(0,d.T$)(o),i=!1;const s=m.J5.getHomeComputer();for(let t=0;t`Deleted server '${r}`)),!0;return E.BM.log(e,(()=>`Could not find server ${o} as a purchased server. This is a bug. Report to dev.`)),!1},getPurchasedServers:()=>()=>{const e=[];return m.J5.purchasedServers.forEach((function(t){e.push(t)})),e},writePort:e=>(t,n)=>{const r=E.BM.portNumber(e,t);if("string"!=typeof n&&"number"!=typeof n)throw E.BM.makeRuntimeErrorMsg(e,"Trying to write invalid data to a port: only strings and numbers are valid.");return(0,te.TR)(r,n)},write:e=>(t,n,r)=>{const a=E.BM.filePath(e,"filename",t),o=E.BM.string(e,"data",n??""),i=E.BM.string(e,"mode",r??"a"),s=E.BM.getServer(e,e.workerScript.hostname);if((0,re.UH)(a)){if("w"===i)return void s.writeToScriptFile(a,o);const e=s.scripts.get(a),t=e?e.code:"";return void s.writeToScriptFile(a,t+o)}if(!(0,ae.e)(a))throw E.BM.makeRuntimeErrorMsg(e,`File path should be a text file or script. ${a} is invalid.`);if("w"===i)return void s.writeToTextFile(a,o);const l=s.textFiles.get(a),c=(null==l?void 0:l.text)??"";s.writeToTextFile(a,"w"===i?o:c+o)},tryWritePort:e=>(t,n)=>{const r=E.BM.portNumber(e,t);if("string"!=typeof n&&"number"!=typeof n)throw E.BM.makeRuntimeErrorMsg(e,"Trying to write invalid data to a port: only strings and numbers are valid.");return(0,te.vN)(r,n)},readPort:e=>t=>{const n=E.BM.portNumber(e,t);return(0,te.h)(n)},read:e=>t=>{var n;const r=E.BM.filePath(e,"filename",t);return(0,re.UH)(r)||(0,ae.e)(r)?(null===(n=e.workerScript.getServer().getContentFile(r))||void 0===n?void 0:n.content)??"":""},peek:e=>t=>{const n=E.BM.portNumber(e,t);return(0,te.i5)(n)},clear:e=>t=>{const n=E.BM.filePath(e,"file",t);if(!(0,re.UH)(n)&&!(0,ae.e)(n))throw E.BM.makeRuntimeErrorMsg(e,`Invalid file path or extension: ${t}`);const r=e.workerScript.getServer(),a=r.getContentFile(n);if(!a)throw E.BM.makeRuntimeErrorMsg(e,`${n} does not exist on ${r.hostname}`);a.content=""},clearPort:e=>t=>{const n=E.BM.portNumber(e,t);return(0,te.KV)(n)},getPortHandle:e=>t=>{const n=E.BM.portNumber(e,t);return(0,te.y6)(n)},rm:e=>(t,n)=>{const r=E.BM.filePath(e,"fn",t),a=E.BM.string(e,"hostname",n??e.workerScript.hostname),o=E.BM.getServer(e,a);if(!r)return E.BM.log(e,(()=>`Error while parsing filepath ${r}`)),!1;const i=o.removeFile(r);return i.res||E.BM.log(e,(()=>i.msg+"")),i.res},scriptRunning:e=>(t,n)=>{const r=E.BM.scriptPath(e,"scriptname",t),a=E.BM.string(e,"hostname",n);return E.BM.getServer(e,a).isRunning(r)},scriptKill:e=>(t,n)=>{const r=E.BM.scriptPath(e,"scriptname",t),a=E.BM.string(e,"hostname",n),o=E.BM.getServer(e,a);let i=!1;const s=(0,H.jz)((0,X.escapeRegExp)(r));for(const[e,t]of o.runningScriptMap)if(s.test(e)){i=!0;for(const e of t.keys())(0,k._)(e)}return i},getScriptName:e=>()=>e.workerScript.name,getScriptRam:e=>(t,n)=>{const r=E.BM.scriptPath(e,"scriptname",t),a=E.BM.string(e,"hostname",n??e.workerScript.hostname),o=E.BM.getServer(e,a),i=o.scripts.get(r);if(!i)return 0;return i.getRamUsage(o.scripts)||(E.BM.log(e,(()=>`Could not calculate ram usage for ${r} on ${a}.`)),0)},getRunningScript:e=>function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),o=2;ofunction(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname;const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?1/0:1e3*(0,l.sI)(r,m.J5):(E.BM.log(e,(()=>"invalid for this kind of server")),1/0)},getGrowTime:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname;const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?1/0:1e3*(0,l.Md)(r,m.J5):(E.BM.log(e,(()=>"invalid for this kind of server")),1/0)},getWeakenTime:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname;const n=E.BM.string(e,"hostname",t),r=E.BM.getServer(e,n);return r instanceof y.x?E.BM.failOnHacknetServer(e,r)?1/0:1e3*(0,l.Vp)(r,m.J5):(E.BM.log(e,(()=>"invalid for this kind of server")),1/0)},getTotalScriptIncome:()=>()=>{let e=0;for(const t of w.R.values())e+=t.scriptRef.onlineMoneyMade/t.scriptRef.onlineRunningTime;return[e,m.J5.scriptProdSinceLastAug/(m.J5.playtimeSinceLastAug/1e3)]},getScriptIncome:e=>function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i))),-1):s.onlineMoneyMade/s.onlineRunningTime},getTotalScriptExpGain:()=>()=>{let e=0;for(const t of w.R.values())e+=t.scriptRef.onlineExpGained/t.scriptRef.onlineRunningTime;return e},getScriptExpGain:e=>function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i))),-1):s.onlineExpGained/s.onlineRunningTime},formatNumber:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3,a=arguments.length>3?arguments[3]:void 0;const o=E.BM.number(e,"n",t),i=E.BM.number(e,"fractionalDigits",n),s=E.BM.number(e,"suffixStart",r);return(0,S.uf)(o,i,s,!!a)},formatRam:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;const r=E.BM.number(e,"n",t),a=E.BM.number(e,"fractionalDigits",n);return(0,S.$1)(r,a)},formatPercent:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e6;const a=E.BM.number(e,"n",t),o=E.BM.number(e,"fractionalDigits",n),i=E.BM.number(e,"multStart",r);return(0,S.T3)(a,o,i)},nFormat:e=>(t,n)=>{he("ns.nFormat","Use ns.formatNumber, formatRam, formatPercent, or js builtins like Intl.NumberFormat instead.");const r=E.BM.number(e,"n",t),a=E.BM.string(e,"format",n);return ee()(r).format(a)},tFormat:e=>(t,n)=>{const r=E.BM.number(e,"milliseconds",t),a=!!n;return(0,C.UF)(r,a)},getTimeSinceLastAug:()=>()=>(he("ns.getTimeSinceLastAug()","Use ns.getResetInfo().lastAugReset instead."),m.J5.playtimeSinceLastAug),alert:e=>t=>{const n=E.BM.string(e,"message",t);(0,J.X)(n,!0)},toast:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.ToastVariant.SUCCESS,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2e3;const a=E.BM.string(e,"message",t),o=(0,se.m)("ToastVariant").nsGetMember(e,n),i=null===r?null:E.BM.number(e,"duration",r);W.sC.emit(a,o,i)},prompt:e=>(t,n)=>{const r={};n??(n=r);const a=E.BM.string(e,"txt",t);if((0,K.hu)(n,K.b$,(t=>E.BM.makeRuntimeErrorMsg(e,`Invalid type for options: ${t}. Should be object.`,"TYPE"))),void 0!==n.type){(0,K.hu)(n.type,K.QS,(t=>E.BM.makeRuntimeErrorMsg(e,`Invalid type for options.type: ${t}. Should be string.`,"TYPE"))),r.type=n.type;const t=["boolean","text","select"];if(!["boolean","text","select"].includes(r.type))throw E.BM.makeRuntimeErrorMsg(e,`Invalid value for options.type: ${r.type}. Must be one of ${t.join(", ")}.`);"select"===r.type&&((0,K.hu)(n.choices,K.uF,(t=>E.BM.makeRuntimeErrorMsg(e,`Invalid type for options.choices: ${t}. If options.type is "select", options.choices must be an array.`,"TYPE"))),r.choices=n.choices.map(((t,n)=>E.BM.string(e,`options.choices[${n}]`,t))))}return new Promise((function(e){h.H.emit({txt:a,options:r,resolve:e})}))},wget:e=>(t,n,r)=>{const o=E.BM.string(e,"url",t),i=E.BM.filePath(e,"target",n),s=r?E.BM.string(e,"hostname",r):e.workerScript.hostname,l=E.BM.getServer(e,s);return i&&((0,ae.e)(i)||(0,re.UH)(i))?new Promise((function(t){a().get(o,(function(n){return l.writeToContentFile(i,n).overwritten?(E.BM.log(e,(()=>`Successfully retrieved content and overwrote '${i}' on '${s}'`)),t(!0)):(E.BM.log(e,(()=>`Successfully retrieved content to new file '${i}' on '${s}'`)),t(!0))}),"text").fail((function(n){return E.BM.log(e,(()=>JSON.stringify(n))),t(!1)}))})):(E.BM.log(e,(()=>`Invalid target file: '${i}'. Must be a script or text file.`)),Promise.resolve(!1))},getFavorToDonate:()=>()=>Math.floor(s.t.BaseFavorToDonate*i.dQ.RepToDonateToFaction),getPlayer:()=>()=>{const e={hp:(0,X.cloneDeep)(m.J5.hp),skills:(0,X.cloneDeep)(m.J5.skills),exp:(0,X.cloneDeep)(m.J5.exp),mults:(0,X.cloneDeep)(m.J5.mults),city:m.J5.city,numPeopleKilled:m.J5.numPeopleKilled,money:m.J5.money,location:m.J5.location,totalPlaytime:m.J5.totalPlaytime,jobs:(0,X.cloneDeep)(m.J5.jobs),factions:m.J5.factions.slice(),entropy:m.J5.entropy};return function(e,t){for(const[n,r]of Object.entries(t))Object.defineProperty(e,n,{get:()=>(he(r.identifier,r.message),r.value),set:e=>r.value=e,enumerable:!0})}(e,{playtimeSinceLastAug:{identifier:"ns.getPlayer().playtimeSinceLastAug",message:"Use ns.getResetInfo().lastAugReset instead. This is a static timestamp instead of an elapsed time.",value:m.J5.playtimeSinceLastAug},playtimeSinceLastBitnode:{identifier:"ns.getPlayer().playtimeSinceLastBitnode",message:"Use ns.getResetInfo().lastNodeReset instead. This is a static timestamp instead of an elapsed time.",value:m.J5.playtimeSinceLastBitnode},bitNodeN:{identifier:"ns.getPlayer().bitNodeN",message:"Use ns.getResetInfo().currentNode instead",value:m.J5.bitNodeN}}),e},getMoneySources:()=>()=>({sinceInstall:Object.assign({},m.J5.moneySourceA),sinceStart:Object.assign({},m.J5.moneySourceB)}),atExit:e=>t=>{if("function"!=typeof t)throw E.BM.makeRuntimeErrorMsg(e,"argument should be function");e.workerScript.atExit=()=>{t()}},mv:e=>(t,n,r)=>{const a=E.BM.string(e,"host",t),o=E.BM.getServer(e,a),i=E.BM.filePath(e,"source",n),s=E.BM.filePath(e,"destination",r);if(!(0,ae.e)(i)&&!(0,re.UH)(i)||!(0,ae.e)(s)&&!(0,re.UH)(s))throw E.BM.makeRuntimeErrorMsg(e,"'mv' can only be used on scripts and text files (.txt)");if(i===s)return void E.BM.log(e,(()=>"WARNING: Did nothing, source and destination paths were the same."));const l=o.getContentFile(i);if(!l)throw E.BM.makeRuntimeErrorMsg(e,`Source text file ${i} does not exist on ${a}`);if(l.deleteFromServer(o)){const{overwritten:t}=o.writeToContentFile(s,l.content);return t&&E.BM.log(e,(()=>`WARNING: Overwriting file ${s} on ${a}`)),void E.BM.log(e,(()=>`Moved ${i} to ${s} on ${a}`))}E.BM.log(e,(()=>`ERROR: Failed. Was unable to remove file ${i} from its original location.`))},getResetInfo:()=>()=>({lastAugReset:m.J5.lastAugReset,lastNodeReset:m.J5.lastNodeReset,currentNode:m.J5.bitNodeN,ownedAugs:new Map(m.J5.augmentations.map((e=>[e.name,e.level]))),ownedSF:new Map(m.J5.sourceFiles)}),getFunctionRamCost:e=>t=>{const n=E.BM.string(e,"name",t);return(0,ie.By)(n.split("."),!0)},tprintRaw:()=>e=>{u.o.printRaw((0,E.Wt)(e))},printRaw:e=>t=>{e.workerScript.print((0,E.Wt)(t))},flags:U.v,...(0,T.C)()};function ue(e){return(0,z.I)(e,ce,[],{args:e.args.slice(),pid:e.pid,enums:le})}(0,z.G)(ce,{getServerRam:{version:"2.2.0",replacement:"getServerMaxRam and getServerUsedRam"}});const me=Object.fromEntries([...function e(t,n){const r=[];for(const[a,o]of Object.entries(t))"args"!==a&&("function"==typeof o?r.push(n+a):"object"==typeof o&&r.push(...e(o,a+".")));return r}(ce,"")].map((e=>[e,!0]))),fe=new Set;function he(e,t){fe.has(e)||(fe.add(e),u.o.warn(`Accessed deprecated function or property: ${e}`),u.o.warn("This is no longer supported usage and will be removed in a later version."),u.o.warn(t),u.o.info("This message can also appear for object properties when the object's values are iterated."),u.o.info("This message will only be shown once per game session for each deprecated item accessed."))}},47051:(e,t,n)=>{"use strict";n.d(t,{M:()=>c});var r=n(49173),a=n(79267),o=n(97740),i=n(62783),s=n(23122),l=n(50862);function c(){const e=function(e){t(e)},t=function(e){if(!(7===r.J5.bitNodeN||r.J5.sourceFileLvl(7)>0))throw s.BM.makeRuntimeErrorMsg(e,"You have not unlocked the bladeburner API.","API ACCESS");const t=r.J5.bladeburner;if(!t)throw s.BM.makeRuntimeErrorMsg(e,"You must be a member of the Bladeburner division to use this API.");return t},n=function(e,t,n){const a=r.J5.bladeburner;if(null===a)throw new Error("Must have joined bladeburner");const o=a.getActionIdFromTypeAndName(t,n);if(!o)throw s.BM.makeRuntimeErrorMsg(e,`Invalid action type='${t}', name='${n}'`);const i=a.getActionObject(o);if(!i)throw s.BM.makeRuntimeErrorMsg(e,`Invalid action type='${t}', name='${n}'`);return i};return{inBladeburner:()=>()=>!!r.J5.bladeburner,getContractNames:e=>()=>t(e).getContractNamesNetscriptFn(),getOperationNames:e=>()=>t(e).getOperationNamesNetscriptFn(),getBlackOpNames:e=>()=>t(e).getBlackOpNamesNetscriptFn(),getBlackOpRank:t=>r=>{const a=s.BM.string(t,"blackOpName",r);e(t);const o=n(t,"blackops",a);if(!(o instanceof i.u))throw new Error("action was not a black operation");return o.reqdRank},getGeneralActionNames:e=>()=>t(e).getGeneralActionNamesNetscriptFn(),getSkillNames:e=>()=>t(e).getSkillNamesNetscriptFn(),startAction:e=>(n,r)=>{const a=s.BM.string(e,"type",n),o=s.BM.string(e,"name",r),i=t(e);try{return i.startActionNetscriptFn(a,o,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},stopBladeburnerAction:e=>()=>t(e).resetAction(),getCurrentAction:e=>()=>{const n=t(e);return n.getTypeAndNameFromActionId(n.action)},getActionTime:e=>(n,a)=>{const o=s.BM.string(e,"type",n),i=s.BM.string(e,"name",a),l=t(e);try{const t=l.getActionTimeNetscriptFn(r.J5,o,i);if("string"==typeof t){const t=`Invalid action: type='${o}' name='${i}'`;return s.BM.log(e,(()=>t)),-1}return t}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getActionCurrentTime:e=>()=>{const n=t(e);try{return 1e3*Math.min(n.actionTimeCurrent+n.actionTimeOverflow,n.actionTimeToComplete)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getActionEstimatedSuccessChance:e=>(n,a)=>{const o=t(e),i=s.BM.string(e,"type",n),l=s.BM.string(e,"name",a);try{const t=o.getActionEstimatedSuccessChanceNetscriptFn(r.J5,i,l);if("string"==typeof t){const t=`Invalid action: type='${i}' name='${l}'`;return s.BM.log(e,(()=>t)),[-1,-1]}return t}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getActionRepGain:t=>(r,a,i)=>{e(t);const l=s.BM.string(t,"type",r),c=s.BM.string(t,"name",a),u=n(t,l,c),m=void 0===i?u.level:s.BM.number(t,"level",i),f=Math.pow(u.rewardFac,m-1);return u.rankGain*f*o.dQ.BladeburnerRank},getActionCountRemaining:e=>(n,r)=>{const a=t(e),o=s.BM.string(e,"type",n),i=s.BM.string(e,"name",r);try{return a.getActionCountRemainingNetscriptFn(o,i,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getActionMaxLevel:t=>(r,a)=>{const o=s.BM.string(t,"type",r),i=s.BM.string(t,"name",a);return e(t),n(t,o,i).maxLevel},getActionCurrentLevel:t=>(r,a)=>{const o=s.BM.string(t,"type",r),i=s.BM.string(t,"name",a);return e(t),n(t,o,i).level},getActionAutolevel:t=>(r,a)=>{const o=s.BM.string(t,"type",r),i=s.BM.string(t,"name",a);return e(t),n(t,o,i).autoLevel},getActionSuccesses:t=>(r,a)=>{const o=s.BM.string(t,"type",r),i=s.BM.string(t,"name",a);return e(t),n(t,o,i).successes},setActionAutolevel:t=>function(r,a){let o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const i=s.BM.string(t,"type",r),l=s.BM.string(t,"name",a),c=!!o;e(t);const u=n(t,i,l);u.autoLevel=c},setActionLevel:t=>function(r,a){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const i=s.BM.string(t,"type",r),l=s.BM.string(t,"name",a),c=s.BM.number(t,"level",o);e(t);const u=n(t,i,l);if(c<1||c>u.maxLevel)throw s.BM.makeRuntimeErrorMsg(t,`Level must be between 1 and ${u.maxLevel}, is ${c}`);u.level=c},getRank:e=>()=>t(e).rank,getSkillPoints:e=>()=>t(e).skillPoints,getSkillLevel:e=>n=>{const r=s.BM.string(e,"skillName",n),a=t(e);try{return a.getSkillLevelNetscriptFn(r,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getSkillUpgradeCost:e=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=t(e),o=s.BM.string(e,"skillName",n),i=s.BM.number(e,"count",r);try{return a.getSkillUpgradeCostNetscriptFn(o,i,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},upgradeSkill:e=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=t(e),o=s.BM.string(e,"skillName",n),i=s.BM.number(e,"count",r);try{return a.upgradeSkillNetscriptFn(o,i,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getTeamSize:e=>(n,r)=>{const a=t(e),o=s.BM.string(e,"type",n),i=s.BM.string(e,"name",r);try{return a.getTeamSizeNetscriptFn(o,i,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},setTeamSize:e=>(n,r,a)=>{const o=t(e),i=s.BM.string(e,"type",n),l=s.BM.string(e,"name",r),c=s.BM.number(e,"size",a);try{return o.setTeamSizeNetscriptFn(i,l,c,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getCityEstimatedPopulation:e=>n=>{const r=t(e),a=(0,l.m)("CityName").nsGetMember(e,n);return r.cities[a].popEst},getCityCommunities:e=>n=>{const r=t(e),a=(0,l.m)("CityName").nsGetMember(e,n);return r.cities[a].comms},getCityChaos:e=>n=>{const r=t(e),a=(0,l.m)("CityName").nsGetMember(e,n);return r.cities[a].chaos},getCity:e=>()=>t(e).city,switchCity:e=>n=>{const r=t(e),a=(0,l.m)("CityName").nsGetMember(e,n);return r.city=a,!0},getStamina:e=>()=>{const n=t(e);return[n.stamina,n.maxStamina]},joinBladeburnerFaction:e=>()=>t(e).joinBladeburnerFactionNetscriptFn(e.workerScript),joinBladeburnerDivision:e=>()=>!(!(7===r.J5.bitNodeN||r.J5.sourceFileLvl(7)>0)||0===o.dQ.BladeburnerRank||!r.J5.bladeburner&&(r.J5.skills.strength>=100&&r.J5.skills.defense>=100&&r.J5.skills.dexterity>=100&&r.J5.skills.agility>=100?(r.J5.bladeburner=new a.T,s.BM.log(e,(()=>"You have been accepted into the Bladeburner division")),0):(s.BM.log(e,(()=>"You do not meet the requirements for joining the Bladeburner division")),1))),getBonusTime:e=>()=>{const n=t(e);return 1e3*Math.round(n.storedCycles/5)}}}},40082:(e,t,n)=>{"use strict";n.d(t,{f:()=>s});var r=n(49173),a=n(23122),o=n(45628),i=n(58297);function s(){const e=function(e,t,n){const r=a.BM.getServer(e,t).getContract(n);if(null==r)throw a.BM.makeRuntimeErrorMsg(e,`Cannot find contract '${n}' on server '${t}'`);return r};return{attempt:t=>(n,o,i)=>{const s=a.BM.string(t,"filename",o),l=i?a.BM.string(t,"hostname",i):t.workerScript.hostname,c=e(t,l,s);if("number"!=typeof n&&"string"!=typeof n&&!Array.isArray(n))throw new Error("The answer provided was not a number, string, or array");const u="string"==typeof n?n:JSON.stringify(n),m=c.reward,f=a.BM.getServer(t,l);if(c.isSolution(u)){const e=r.J5.gainCodingContractReward(m,c.getDifficulty());return a.BM.log(t,(()=>`Successfully completed Coding Contract '${s}'. Reward: ${e}`)),f.removeContract(s),e}return++c.tries,c.tries>=c.getMaxNumTries()?(a.BM.log(t,(()=>`Coding Contract attempt '${s}' failed. Contract is now self-destructing`)),f.removeContract(s)):a.BM.log(t,(()=>`Coding Contract attempt '${s}' failed. ${c.getMaxNumTries()-c.tries} attempts remaining.`)),""},getContractType:t=>(n,r)=>{const o=a.BM.string(t,"filename",n),i=r?a.BM.string(t,"hostname",r):t.workerScript.hostname;return e(t,i,o).getType()},getData:t=>(n,r)=>{const o=a.BM.string(t,"filename",n),i=r?a.BM.string(t,"hostname",r):t.workerScript.hostname,s=e(t,i,o).getData();if(Array.isArray(s)){const e=s.slice();for(let t=0;t(n,r)=>{const o=a.BM.string(t,"filename",n),i=r?a.BM.string(t,"hostname",r):t.workerScript.hostname;return e(t,i,o).getDescription()},getNumTriesRemaining:t=>(n,r)=>{const o=a.BM.string(t,"filename",n),i=r?a.BM.string(t,"hostname",r):t.workerScript.hostname,s=e(t,i,o);return s.getMaxNumTries()-s.tries},createDummyContract:e=>t=>{const n=a.BM.string(e,"type",t);(0,i.a9)(n)},getContractTypes:()=>()=>o.X.map((e=>e.name))}}},83075:(e,t,n)=>{"use strict";n.d(t,{x:()=>k});var r=n(49173),a=n(96486),o=n(33563),i=n(61226),s=n(51326),l=n(33244),c=n(32927),u=n(80692),m=n(78845),f=n(58427),h=n(97740),d=n(40811),p=n(23122),g=n(50862),y=n(51004),b=n(41139),v=n(21623);function k(){function e(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!r.J5.canAccessCorporation()||r.J5.corporation)return!1;if(!e)return!1;if(3!==r.J5.bitNodeN&&!t)throw new Error("cannot use seed funds outside of BitNode 3");if(h.dQ.CorporationSoftcap<.15)throw new Error(`You cannot create a corporation in Bitnode ${r.J5.bitNodeN}`);if(t){if(!r.J5.canAfford(15e10))return!1;r.J5.startCorporation(e,!1),r.J5.loseMoney(15e10,"corporation")}else r.J5.startCorporation(e,!0);return!0}function t(e){return n().unlocks.has(e)}function n(){const e=r.J5.corporation;if(null===e)throw new Error("cannot be called without a corporation");return e}function k(e){const t=n().divisions.get(e);if(void 0===t)throw new Error(`No division named '${e}'`);return t}function w(e,t){const n=k(e),r=n.offices[t];if(!r)throw new Error(`${n.name} has not expanded to '${t}'`);return r}function E(e,t){const n=k(e),r=n.warehouses[t];if(!r)throw new Error(`${n.name} does not have a warehouse in '${t}'`);return r}function S(e,t,n){return E(e,t).materials[n]}function C(e,t){const n=k(e).products.get(t);if(void 0===n)throw new Error(`Invalid product name: '${t}'`);return n}function x(e,t){if(!r.J5.corporation)throw p.BM.makeRuntimeErrorMsg(e,"Must own a corporation.");if(t&&!r.J5.corporation.unlocks.has(t))throw p.BM.makeRuntimeErrorMsg(e,"You do not have access to this API.")}const N={getUpgradeWarehouseCost:e=>function(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;x(e,l.CorpUnlockName.WarehouseAPI);const a=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,n),s=p.BM.number(e,"amount",r);if(s<1)throw p.BM.makeRuntimeErrorMsg(e,"You must provide a positive number");const c=E(a,i);return(0,o.qr)(c,s)},hasWarehouse:e=>(t,n)=>{x(e,l.CorpUnlockName.WarehouseAPI);const r=p.BM.string(e,"divisionName",t);return(0,g.m)("CityName").nsGetMember(e,n)in k(r).warehouses},getWarehouse:e=>(t,n)=>{x(e,l.CorpUnlockName.WarehouseAPI);const r=E(p.BM.string(e,"divisionName",t),(0,g.m)("CityName").nsGetMember(e,n));return{level:r.level,city:r.city,size:r.size,sizeUsed:r.sizeUsed,smartSupplyEnabled:r.smartSupplyEnabled}},getMaterial:e=>(t,r,o)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=S(p.BM.string(e,"divisionName",t),(0,g.m)("CityName").nsGetMember(e,r),(0,g.m)("CorpMaterialName").nsGetMember(e,o,"materialName")),s=n(),c=(0,a.cloneDeep)(i.exports);return{marketPrice:i.marketPrice,desiredSellPrice:i.desiredSellPrice,desiredSellAmount:i.desiredSellAmount,name:i.name,stored:i.stored,quality:i.quality,demand:s.unlocks.has(l.CorpUnlockName.MarketResearchDemand)?i.demand:void 0,competition:s.unlocks.has(l.CorpUnlockName.MarketDataCompetition)?i.competition:void 0,productionAmount:i.productionAmount,actualSellAmount:i.actualSellAmount,exports:c}},getProduct:e=>(t,r,o)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=p.BM.string(e,"productName",o),c=(0,g.m)("CityName").nsGetMember(e,r),u=C(i,s),m=n(),f=u.cityData[c];return{name:u.name,demand:m.unlocks.has(l.CorpUnlockName.MarketResearchDemand)?u.demand:void 0,competition:m.unlocks.has(l.CorpUnlockName.MarketDataCompetition)?u.competition:void 0,rating:u.rating,effectiveRating:f.effectiveRating,stats:(0,a.cloneDeep)(u.stats),productionCost:u.productionCost,desiredSellPrice:f.desiredSellPrice,desiredSellAmount:f.desiredSellAmount,stored:f.stored,productionAmount:f.productionAmount,actualSellAmount:f.actualSellAmount,developmentProgress:u.developmentProgress,advertisingInvestment:u.advertisingInvestment,designInvestment:u.designInvestment}},purchaseWarehouse:e=>(t,r)=>{x(e,l.CorpUnlockName.WarehouseAPI);const a=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,r),s=n();(0,o.J_)(s,k(a),i)},upgradeWarehouse:e=>function(t,r){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,r),c=p.BM.number(e,"amount",a),u=n();if(c<1)throw p.BM.makeRuntimeErrorMsg(e,"You must provide a positive number");(0,o.m_)(u,k(i),E(i,s),c)},sellMaterial:e=>(t,n,r,a,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"divisionName",t),c=(0,g.m)("CityName").nsGetMember(e,n),u=(0,g.m)("CorpMaterialName").nsGetMember(e,r,"materialName"),m=p.BM.string(e,"amt",a),f=p.BM.string(e,"price",i),h=S(s,c,u);(0,o.Sz)(h,m,f)},sellProduct:e=>(t,n,r,a,i,s)=>{x(e,l.CorpUnlockName.WarehouseAPI);const c=p.BM.string(e,"divisionName",t),u=(0,g.m)("CityName").nsGetMember(e,n),m=p.BM.string(e,"productName",r),f=p.BM.string(e,"amt",a),h=p.BM.string(e,"price",i),d=!!s,y=C(c,m);(0,o.qv)(y,u,f,h,d)},discontinueProduct:e=>(t,n)=>{x(e,l.CorpUnlockName.WarehouseAPI);const r=p.BM.string(e,"divisionName",t),a=p.BM.string(e,"productName",n);k(r).discontinueProduct(a)},setSmartSupply:e=>(n,r,a)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=!!a,s=E(p.BM.string(e,"divisionName",n),(0,g.m)("CityName").nsGetMember(e,r));if(!t(l.CorpUnlockName.SmartSupply))throw p.BM.makeRuntimeErrorMsg(e,"You have not purchased the Smart Supply upgrade!");(0,o.mg)(s,i)},setSmartSupplyOption:e=>(n,r,a,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"divisionName",n),c=(0,g.m)("CityName").nsGetMember(e,r),u=(0,g.m)("CorpMaterialName").nsGetMember(e,a,"materialName"),m=E(s,c),f=S(s,c,u),h=(0,g.m)("SmartSupplyOption").nsGetMember(e,i);if(!t(l.CorpUnlockName.SmartSupply))throw p.BM.makeRuntimeErrorMsg(e,"You have not purchased the Smart Supply upgrade!");(0,o.VG)(m,f,h)},buyMaterial:e=>(t,r,a,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"divisionName",t),c=n().divisions.get(s);if(!c)throw p.BM.makeRuntimeErrorMsg(e,`No division with provided name ${s}`);const u=(0,g.m)("CityName").nsGetMember(e,r),m=(0,g.m)("CorpMaterialName").nsGetMember(e,a,"materialName"),f=p.BM.number(e,"amt",i);if(f<0||!Number.isFinite(f))throw new Error("Invalid value for amount field! Must be numeric and greater than 0");const h=S(s,u,m);(0,o.MO)(c,h,f)},bulkPurchase:e=>(t,r,a,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"divisionName",t),c=n().divisions.get(s);if(!c)throw p.BM.makeRuntimeErrorMsg(e,`No division with provided name ${s}`);const u=n(),m=(0,g.m)("CityName").nsGetMember(e,r),f=(0,g.m)("CorpMaterialName").nsGetMember(e,a,"materialName"),h=p.BM.number(e,"amt",i),d=E(s,m),y=S(s,m,f);(0,o._A)(u,c,d,y,h)},makeProduct:e=>(t,r,a,i,s)=>{x(e,l.CorpUnlockName.WarehouseAPI);const c=p.BM.string(e,"divisionName",t),u=(0,g.m)("CityName").nsGetMember(e,r),m=p.BM.string(e,"productName",a),f=p.BM.number(e,"designInvest",i),h=p.BM.number(e,"marketingInvest",s),d=n();(0,o.oL)(d,k(c),u,m,f,h)},limitProductProduction:e=>(t,n,r,a)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,n),c=p.BM.string(e,"productName",r),u=p.BM.number(e,"qty",a);(0,o.Dn)(C(i,c),s,u)},exportMaterial:e=>(t,n,r,a,i,s)=>{x(e,l.CorpUnlockName.WarehouseAPI);const c=p.BM.string(e,"sourceDivision",t),u=(0,g.m)("CityName").nsGetMember(e,n,"sourceCity"),m=k(p.BM.string(e,"targetDivision",r)),f=(0,g.m)("CityName").nsGetMember(e,a,"targetCity"),h=(0,g.m)("CorpMaterialName").nsGetMember(e,i,"materialName"),d=p.BM.string(e,"amt",s);(0,o.DY)(m,f,S(c,u,h),d)},cancelExportMaterial:e=>(t,n,r,a,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"sourceDivision",t),c=(0,g.m)("CityName").nsGetMember(e,n,"sourceCity"),u=p.BM.string(e,"targetDivision",r),m=(0,g.m)("CityName").nsGetMember(e,a,"targetCity"),f=(0,g.m)("CorpMaterialName").nsGetMember(e,i,"materialName");(0,o.vg)(u,m,S(s,c,f))},limitMaterialProduction:e=>(t,n,r,a)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,n),c=(0,g.m)("CorpMaterialName").nsGetMember(e,r,"materialName"),u=p.BM.number(e,"qty",a);(0,o.Pe)(S(i,s,c),u)},setMaterialMarketTA1:e=>(t,n,r,a)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,n),c=(0,g.m)("CorpMaterialName").nsGetMember(e,r,"materialName"),u=!!a;if(!k(i).hasResearch("Market-TA.I"))throw p.BM.makeRuntimeErrorMsg(e,`You have not researched MarketTA.I for division: ${i}`);(0,o.Nz)(S(i,s,c),u)},setMaterialMarketTA2:e=>(t,n,r,a)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,n),c=(0,g.m)("CorpMaterialName").nsGetMember(e,r,"materialName"),u=!!a;if(!k(i).hasResearch("Market-TA.II"))throw p.BM.makeRuntimeErrorMsg(e,`You have not researched MarketTA.II for division: ${i}`);(0,o.Zn)(S(i,s,c),u)},setProductMarketTA1:e=>(t,n,r)=>{x(e,l.CorpUnlockName.WarehouseAPI);const a=p.BM.string(e,"divisionName",t),i=p.BM.string(e,"productName",n),s=!!r;if(!k(a).hasResearch("Market-TA.I"))throw p.BM.makeRuntimeErrorMsg(e,`You have not researched MarketTA.I for division: ${a}`);(0,o.Ix)(C(a,i),s)},setProductMarketTA2:e=>(t,n,r)=>{x(e,l.CorpUnlockName.WarehouseAPI);const a=p.BM.string(e,"divisionName",t),i=p.BM.string(e,"productName",n),s=!!r;if(!k(a).hasResearch("Market-TA.II"))throw p.BM.makeRuntimeErrorMsg(e,`You have not researched MarketTA.II for division: ${a}`);(0,o.M9)(C(a,i),s)}},M={...N,getHireAdVertCost:e=>t=>(x(e,l.CorpUnlockName.OfficeAPI),k(p.BM.string(e,"divisionName",t)).getAdVertCost()),getHireAdVertCount:e=>t=>(x(e,l.CorpUnlockName.OfficeAPI),k(p.BM.string(e,"divisionName",t)).numAdVerts),getResearchCost:e=>(t,n)=>{x(e,l.CorpUnlockName.OfficeAPI);const r=p.BM.string(e,"divisionName",t),a=(0,g.m)("CorpResearchName").nsGetMember(e,n,"researchName");return function(e,t){const n=c.E5[e.type];if(void 0===n)throw new Error(`No research tree for industry '${e.type}'`);if(!n.getAllNodes().includes(t))throw new Error(`No research named '${t}'`);return m.k[t].cost}(k(r),a)},hasResearched:e=>(t,n)=>{x(e,l.CorpUnlockName.OfficeAPI);const r=p.BM.string(e,"divisionName",t),a=(0,g.m)("CorpResearchName").nsGetMember(e,n,"researchName");return function(e,t){return e.researched.has(t)}(k(r),a)},getOfficeSizeUpgradeCost:e=>(t,n,r)=>{x(e,l.CorpUnlockName.OfficeAPI);const a=p.BM.string(e,"divisionName",t),o=(0,g.m)("CityName").nsGetMember(e,n),i=p.BM.number(e,"size",r);if(i<0)throw new Error("Invalid value for size field! Must be numeric and greater than 0");const s=w(a,o),c=Math.round(s.size/u.officeInitialSize);let m=0;for(let e=0;e(t,n,r,a)=>{x(e,l.CorpUnlockName.OfficeAPI);const o=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,n),s=p.BM.number(e,"amount",a),c=(0,g.m)("CorpEmployeeJob").nsGetMember(e,r,"job");if(c===l.CorpEmployeeJob.Unassigned)return!1;if(s<0||!Number.isInteger(s))throw p.BM.makeRuntimeErrorMsg(e,`Invalid value for amount! Must be an integer and greater than or be 0". Amount:'${s}'`);const u=w(o,i),m=s-u.employeeNextJobs[c];if(u.employeeNextJobs[l.CorpEmployeeJob.Unassigned](t,n,r)=>{x(e,l.CorpUnlockName.OfficeAPI),r??(r=l.CorpEmployeeJob.Unassigned);const a=p.BM.string(e,"divisionName",t),o=(0,g.m)("CityName").nsGetMember(e,n),i=(0,g.m)("CorpEmployeeJob").nsGetMember(e,r,"position");return w(a,o).hireRandomEmployee(i)},upgradeOfficeSize:e=>(t,r,a)=>{x(e,l.CorpUnlockName.OfficeAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,r),c=p.BM.number(e,"size",a);if(c<0)throw new Error("Invalid value for size field! Must be numeric and greater than 0");const u=w(i,s),m=n();(0,o.D)(m,u,c)},throwParty:e=>(t,r,a)=>{x(e,l.CorpUnlockName.OfficeAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,r),c=p.BM.number(e,"costPerEmployee",a);if(c<0)throw new Error("Invalid value for Cost Per Employee field! Must be numeric and greater than 0");const u=n(),m=w(i,s);return(0,o.YH)(u,m,c)},buyTea:e=>(t,r)=>{x(e,l.CorpUnlockName.OfficeAPI);const a=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,r),s=n(),c=w(a,i);return(0,o.bY)(s,c)},hireAdVert:e=>t=>{x(e,l.CorpUnlockName.OfficeAPI);const r=p.BM.string(e,"divisionName",t),a=n();(0,o.Jm)(a,k(r))},research:e=>(t,n)=>{x(e,l.CorpUnlockName.OfficeAPI);const r=p.BM.string(e,"divisionName",t),a=(0,g.m)("CorpResearchName").nsGetMember(e,n,"researchName");(0,o.A9)(k(r),a)},getOffice:e=>(t,n)=>{x(e,l.CorpUnlockName.OfficeAPI);const r=w(p.BM.string(e,"divisionName",t),(0,g.m)("CityName").nsGetMember(e,n));return{city:r.city,size:r.size,maxEnergy:r.maxEnergy,maxMorale:r.maxMorale,numEmployees:r.numEmployees,avgEnergy:r.avgEnergy,avgMorale:r.avgMorale,totalExperience:r.totalExperience,employeeProductionByJob:Object.assign({},r.employeeProductionByJob),employeeJobs:Object.assign({},r.employeeJobs)}},hasCorporation:()=>()=>!!r.J5.corporation,getConstants:e=>()=>(x(e),(0,a.cloneDeep)((0,a.omit)(u,"fundingRoundShares","fundingRoundMultiplier","valuationLength"))),getIndustryData:e=>t=>{x(e);const n=(0,g.m)("IndustryType").nsGetMember(e,t,"industryName");return(0,a.cloneDeep)(c.vm[n])},getMaterialData:e=>t=>{x(e);const n=(0,g.m)("CorpMaterialName").nsGetMember(e,t,"materialName");return(0,a.cloneDeep)(y.d[n])},expandIndustry:e=>(t,r)=>{x(e);const a=(0,g.m)("IndustryType").nsGetMember(e,t,"industryName"),i=p.BM.string(e,"divisionName",r),s=n();(0,o.M4)(s,a,i)},expandCity:e=>(t,r)=>{x(e);const a=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,r),s=n(),l=k(a);(0,o.oO)(s,l,i)},purchaseUnlock:e=>t=>{x(e);const r=(0,g.m)("CorpUnlockName").nsGetMember(e,t,"unlockName"),a=n().purchaseUnlock(r);if(a)throw new Error(`Could not unlock ${r}: ${a}`)},levelUpgrade:e=>t=>{x(e);const r=(0,g.m)("CorpUpgradeName").nsGetMember(e,t,"upgradeName"),a=n().purchaseUpgrade(r,1);if(a)throw new Error(`Could not upgrade ${r}: ${a}`)},issueDividends:e=>t=>{x(e);const r=p.BM.number(e,"rate",t),a=u.dividendMaxRate;if(r<0||r>a)throw new Error(`Invalid value for rate field! Must be numeric, greater than 0, and less than ${a}`);const i=n();if(!i.public)throw p.BM.makeRuntimeErrorMsg(e,"Your company has not gone public!");(0,o.wZ)(i,r)},issueNewShares:e=>t=>{x(e);const r=n(),a=r.calculateMaxNewShares();null==t&&(t=a);const i=p.BM.number(e,"amount",t);if(r.issueNewSharesCooldown>0)throw new Error("Can't issue new shares, action on cooldown.");if(i<1e7||i>a)throw new Error(`Invalid value for amount field! Must be numeric, greater than 10m, and less than ${a} (20% of total shares)`);if(!r.public)throw p.BM.makeRuntimeErrorMsg(e,"Your company has not gone public!");const[s]=(0,o.yp)(r,i);return s},getDivision:e=>t=>(x(e),function(e){const t=(0,v.nd)(e.offices);return{name:e.name,type:e.type,awareness:e.awareness,popularity:e.popularity,productionMult:e.productionMult,researchPoints:e.researchPoints,lastCycleRevenue:e.lastCycleRevenue,lastCycleExpenses:e.lastCycleExpenses,thisCycleRevenue:e.thisCycleRevenue,thisCycleExpenses:e.thisCycleExpenses,numAdVerts:e.numAdVerts,cities:t,products:[...e.products.keys()],makesProducts:e.makesProducts,maxProducts:e.maxProducts}}(k(p.BM.string(e,"divisionName",t)))),getCorporation:e=>()=>{x(e);const t=n();return{name:t.name,funds:t.funds,revenue:t.revenue,expenses:t.expenses,public:t.public,totalShares:t.totalShares,numShares:t.numShares,shareSaleCooldown:t.shareSaleCooldown,issuedShares:t.issuedShares,sharePrice:t.sharePrice,dividendRate:t.dividendRate,dividendTax:t.dividendTax,dividendEarnings:t.getCycleDividends()/u.secondsPerMarketCycle,state:t.state.getState(),divisions:[...t.divisions.keys()]}},createCorporation:t=>function(n){let r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const a=p.BM.string(t,"corporationName",n),o=!!r;return e(a,o)},hasUnlock:e=>n=>(x(e),t((0,g.m)("CorpUnlockName").nsGetMember(e,n,"unlockName"))),getUnlockCost:e=>t=>{return x(e),n=(0,g.m)("CorpUnlockName").nsGetMember(e,t,"unlockName"),i.D[n].price;var n},getUpgradeLevel:e=>t=>{return x(e),r=(0,g.m)("CorpUpgradeName").nsGetMember(e,t,"upgradeName"),n().upgrades[r].level;var r},getUpgradeLevelCost:e=>t=>(x(e),function(e){const t=n();return(0,b.g)(t,s.x[e],1)}((0,g.m)("CorpUpgradeName").nsGetMember(e,t,"upgradeName"))),getInvestmentOffer:e=>()=>(x(e),function(){const e=n();if(e.fundingRound>=u.fundingRoundShares.length||e.fundingRound>=u.fundingRoundMultiplier.length||e.public)return{funds:0,shares:0,round:e.fundingRound+1};const t=e.valuation,r=u.fundingRoundShares[e.fundingRound];return{funds:t*r*u.fundingRoundMultiplier[e.fundingRound],shares:Math.floor(u.initialShares*r),round:e.fundingRound+1}}()),acceptInvestmentOffer:e=>()=>(x(e),function(){const e=n();if(e.fundingRound>=u.fundingRoundShares.length||e.fundingRound>=u.fundingRoundMultiplier.length||e.public)return!1;const t=e.valuation,r=u.fundingRoundShares[e.fundingRound],a=t*r*u.fundingRoundMultiplier[e.fundingRound],o=Math.floor(u.initialShares*r);return e.fundingRound++,e.addFunds(a),e.numShares-=o,!0}()),goPublic:e=>t=>{if(x(e),n().public)throw p.BM.makeRuntimeErrorMsg(e,"corporation is already public");return function(e){const t=n(),r=t.valuation/t.totalShares;if(isNaN(e))throw new Error("Invalid value for number of issued shares");if(e<0)throw new Error("Invalid value for number of issued shares");if(e>t.numShares)throw new Error("You don't have that many shares to issue!");return t.public=!0,t.sharePrice=r,t.issuedShares=e,t.numShares-=e,t.addFunds(e*r),!0}(p.BM.number(e,"numShares",t))},sellShares:e=>t=>{x(e);const r=p.BM.number(e,"numShares",t);return(0,o.aT)(n(),r)},buyBackShares:e=>t=>{x(e);const r=p.BM.number(e,"numShares",t);return(0,o.Fm)(n(),r)},bribe:e=>(t,a)=>(x(e),function(e,t){if(isNaN(t)||t<0)throw new Error("Invalid value for amount field! Must be numeric, greater than 0.");const a=n();if(a.funds()=>(x(e),1e3*Math.round(n().storedCycles/5))};return(0,d.G)(M,{assignJob:{version:"2.2.0",replacement:"Removed due to employees no longer being objects. Use ns.corporation.setAutoJobAssignment instead.",replaceMsg:!0},getEmployee:{version:"2.2.0",replacement:"Removed due to employees no longer being individual objects.",replaceMsg:!0},getExpandCityCost:{version:"2.2.0",replacement:"corporation.getConstants().officeInitialCost"},getExpandIndustryCost:{version:"2.2.0",replacement:"corporation.getIndustryData"},getIndustryTypes:{version:"2.2.0",replacement:"corporation.getConstants().industryNames"},getMaterialNames:{version:"2.2.0",replacement:"corporation.getConstants().materialNames"},getPurchaseWarehouseCost:{version:"2.2.0",replacement:"corporation.getConstants().warehouseInitialCost"},getResearchNames:{version:"2.2.0",replacement:"corporation.getConstants().researchNames"},getUnlockables:{version:"2.2.0",replacement:"corporation.getConstants().unlockNames"},getUpgradeNames:{version:"2.2.0",replacement:"corporation.getConstants().upgradeNames"}}),M}},30180:(e,t,n)=>{"use strict";n.d(t,{C:()=>c});var r=n(49173),a=n(52107),o=n(2418),i=n(51674),s=n(23122),l=n(32310);function c(){return{heart:{break:()=>()=>r.J5.karma},openDevMenu:()=>()=>i.Z.emit(),exploit:()=>()=>r.J5.giveExploit(a.VX.UndocumentedFunctionCall),bypass:e=>t=>{const n=t;n.completely_unused_field=void 0;const o=document;o.completely_unused_field=void 0,o.completely_unused_field=!0,n.completely_unused_field&&e.workerScript.scriptRef.ramUsage===l.qS.Base&&r.J5.giveExploit(a.VX.Bypass),n.completely_unused_field=void 0,o.completely_unused_field=void 0},alterReality:()=>()=>{let e=!1;const t=function(n){0!==n&&(e=!e,t(n-1))};t(2),console.warn("I am sure that this variable is false."),e&&(console.warn("Reality has been altered!"),r.J5.giveExploit(a.VX.RealityAlteration))},rainbow:e=>t=>{const n=s.BM.string(e,"guess",t);return!!o.compareSync(n,"$2a$10$aertxDEkgor8baVtQDZsLuMwwGYmkRM/ohcA6FjmmzIHQeTCsrCcO")&&(r.J5.giveExploit(a.VX.INeedARainbow),!0)}}}},21278:(e,t,n)=>{"use strict";n.d(t,{v:()=>i});var r=n(32938),a=n(86021),o=n.n(a);function i(e){const t=Array.isArray(e)?e:e.workerScript.args;return e=>{if(e=(0,r.l)(e),!Array.isArray(e))throw new Error("flags schema passed in is invalid.");const n={};for(const t of e){let e=String;"number"==typeof t[1]?e=Number:"boolean"==typeof t[1]?e=Boolean:Array.isArray(t[1])&&(e=[String]);const r=t[0].length>1?2:1;n["-".repeat(r)+t[0]]=e}const a=o()(n,{argv:t});for(const t of e)Object.hasOwn(a,"--"+t[0])&&Object.hasOwn(a,"-"+t[0])||(a[t[0]]=t[1]);for(const e of Object.keys(a)){if(!e.startsWith("-"))continue;const t=a[e];delete a[e];const n=2===e.length?1:2;a[e.slice(n)]=t}return a}}},62450:(e,t,n)=>{"use strict";n.d(t,{V:()=>C});var r=n(49173),a=n(7987),o=n(2517),i=n(73280),s=n(1290),l=n(93430),c=n(22738),u=n(49708),m=n(33244),f=n(21320),h=n(48132),d=n(23248),p=n(40811),g=n(23122),y=n(97093),b=n(62586),v=n(62850),k=n(51544),w=n(50862),E=n(11124),S=n(35100);function C(){const e=function(e){if(!r.J5.hasProgram(m.CompletedProgramName.formulas))throw g.BM.makeRuntimeErrorMsg(e,"Requires Formulas.exe to run.")},t={mockServer:()=>()=>({cpuCores:0,ftpPortOpen:!1,hasAdminRights:!1,hostname:"",httpPortOpen:!1,ip:"",isConnectedTo:!1,maxRam:0,organizationName:"",ramUsed:0,smtpPortOpen:!1,sqlPortOpen:!1,sshPortOpen:!1,purchasedByPlayer:!1,backdoorInstalled:!1,baseDifficulty:0,hackDifficulty:0,minDifficulty:0,moneyAvailable:0,moneyMax:0,numOpenPortsRequired:0,openPortCount:0,requiredHackingSkill:0,serverGrowth:0}),mockPlayer:()=>()=>({hp:{current:0,max:0},skills:{hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0},exp:{hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0},mults:(0,v.A7)(),city:m.CityName.Sector12,numPeopleKilled:0,money:0,location:m.LocationName.TravelAgency,totalPlaytime:0,jobs:{},factions:[],entropy:0}),mockPerson:()=>()=>({hp:{current:0,max:0},skills:{hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0},exp:{hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0},mults:(0,v.A7)(),city:m.CityName.Sector12}),reputation:{calculateFavorToRep:t=>n=>{const r=g.BM.number(t,"favor",n);return e(t),(0,h.X)(r)},calculateRepToFavor:t=>n=>{const r=g.BM.number(t,"rep",n);return e(t),(0,h.y)(r)},repFromDonation:t=>(n,r)=>{const a=g.BM.number(t,"amount",n),o=g.BM.person(t,r);return e(t),(0,d.o9)(a,o)}},skills:{calculateSkill:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=g.BM.number(t,"exp",n),o=g.BM.number(t,"mult",r);return e(t),(0,c.gX)(a,o)},calculateExp:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=g.BM.number(t,"skill",n),o=g.BM.number(t,"mult",r);return e(t),(0,c.DA)(a,o)}},hacking:{hackChance:t=>(n,r)=>{const a=g.BM.server(t,n),o=g.BM.person(t,r);return e(t),(0,u.gb)(a,o)},hackExp:t=>(n,r)=>{const a=g.BM.server(t,n),o=g.BM.person(t,r);return e(t),(0,u.iG)(a,o)},hackPercent:t=>(n,r)=>{const a=g.BM.server(t,n),o=g.BM.person(t,r);return e(t),(0,u.zX)(a,o)},growPercent:t=>function(n,r,o){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const s=g.BM.server(t,n),l=g.BM.person(t,o),c=g.BM.number(t,"threads",r),u=g.BM.number(t,"cores",i);return e(t),(0,a.C)(s,c,l,u)},growThreads:t=>function(n,r,a){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const s=g.BM.server(t,n),l=g.BM.person(t,r),c=g.BM.number(t,"targetMoney",a),u=g.BM.number(t,"server.moneyAvailable",s.moneyAvailable),m=g.BM.number(t,"cores",i);return e(t),(0,o.yk)(s,c,u,m,l)},hackTime:t=>(n,r)=>{const a=g.BM.server(t,n),o=g.BM.person(t,r);return e(t),1e3*(0,u.sI)(a,o)},growTime:t=>(n,r)=>{const a=g.BM.server(t,n),o=g.BM.person(t,r);return e(t),1e3*(0,u.Md)(a,o)},weakenTime:t=>(n,r)=>{const a=g.BM.server(t,n),o=g.BM.person(t,r);return e(t),1e3*(0,u.Vp)(a,o)}},hacknetNodes:{moneyGainRate:t=>function(n,r,a){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const s=g.BM.number(t,"level",n),l=g.BM.number(t,"ram",r),c=g.BM.number(t,"cores",a),u=g.BM.number(t,"mult",o);return e(t),(0,i.yf)(s,l,c,u)},levelUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingLevel",n),s=g.BM.number(t,"extraLevels",r),l=g.BM.number(t,"costMult",a);return e(t),(0,i.TJ)(o,s,l)},ramUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingRam",n),s=g.BM.number(t,"extraLevels",r),l=g.BM.number(t,"costMult",a);return e(t),(0,i.u7)(o,s,l)},coreUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingCore",n),s=g.BM.number(t,"extraCores",r),l=g.BM.number(t,"costMult",a);return e(t),(0,i.pq)(o,s,l)},hacknetNodeCost:t=>(n,r)=>{const a=g.BM.number(t,"n",n),o=g.BM.number(t,"mult",r);return e(t),(0,i.Vi)(a,o)},constants:t=>()=>(e(t),Object.assign({},l.dN))},hacknetServers:{hashGainRate:t=>function(n,r,a,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1;const l=g.BM.number(t,"level",n),c=g.BM.number(t,"ramUsed",r),u=g.BM.number(t,"maxRam",a),m=g.BM.number(t,"cores",o),f=g.BM.number(t,"mult",i);return e(t),(0,s.WA)(l,c,u,m,f)},levelUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingLevel",n),i=g.BM.number(t,"extraLevels",r),l=g.BM.number(t,"costMult",a);return e(t),(0,s.TJ)(o,i,l)},ramUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingRam",n),i=g.BM.number(t,"extraLevels",r),l=g.BM.number(t,"costMult",a);return e(t),(0,s.u7)(o,i,l)},coreUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingCore",n),i=g.BM.number(t,"extraCores",r),l=g.BM.number(t,"costMult",a);return e(t),(0,s.pq)(o,i,l)},cacheUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=g.BM.number(t,"startingCache",n),o=g.BM.number(t,"extraCache",r);return e(t),(0,s._1)(a,o)},hashUpgradeCost:t=>(n,a)=>{const o=g.BM.string(t,"upgName",n),i=g.BM.number(t,"level",a);e(t);const s=r.J5.hashManager.getUpgrade(o);if(!s)throw g.BM.makeRuntimeErrorMsg(t,`Invalid Hash Upgrade: ${o}`);return s.getCost(i)},hacknetServerCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=g.BM.number(t,"n",n),o=g.BM.number(t,"mult",r);return e(t),(0,s.oP)(a,o)},constants:t=>()=>(e(t),Object.assign({},l.B5))},gang:{wantedPenalty:t=>n=>{const r=g.BM.gang(t,n);return e(t),(0,f.mT)(r)},respectGain:t=>(n,r,a)=>{const o=g.BM.gang(t,n),i=g.BM.gangMember(t,r),s=g.BM.gangTask(t,a);return e(t),(0,f.qo)(o,i,s)},wantedLevelGain:t=>(n,r,a)=>{const o=g.BM.gang(t,n),i=g.BM.gangMember(t,r),s=g.BM.gangTask(t,a);return e(t),(0,f.QS)(o,i,s)},moneyGain:t=>(n,r,a)=>{const o=g.BM.gang(t,n),i=g.BM.gangMember(t,r),s=g.BM.gangTask(t,a);return e(t),(0,f.Ym)(o,i,s)},ascensionPointsGain:t=>n=>{const r=g.BM.number(t,"exp",n);return e(t),(0,f.NB)(r)},ascensionMultiplier:t=>n=>{const r=g.BM.number(t,"points",n);return e(t),(0,f._r)(r)}},work:{crimeSuccessChance:t=>(n,r)=>{e(t);const a=g.BM.person(t,n),o=(0,S.K)(g.BM.string(t,"crimeType",r));if(!o)throw new Error(`Invalid crime type: ${r}`);return o.successRate(a)},crimeGains:t=>(n,r)=>{e(t);const a=g.BM.person(t,n),o=(0,S.K)(g.BM.string(t,"crimeType",r));if(!o)throw new Error(`Invalid crime type: ${r}`);return(0,y.jI)(a,o)},gymGains:t=>(n,r,a)=>{e(t);const o=g.BM.person(t,n),i=(0,k.x)(m.GymType,g.BM.string(t,"classType",r));if(!i)throw new Error(`Invalid gym training type: ${r}`);const s=(0,w.m)("LocationName").nsGetMember(t,a);return(0,y.w4)(o,i,s)},universityGains:t=>(n,r,a)=>{e(t);const o=g.BM.person(t,n),i=(0,k.x)(m.UniversityClassType,g.BM.string(t,"classType",r));if(!i)throw new Error(`Invalid university class type: ${r}`);const s=(0,w.m)("LocationName").nsGetMember(t,a);return(0,y.w4)(o,i,s)},factionGains:t=>(n,r,a)=>{e(t);const o=g.BM.person(t,n),i=(0,k.x)(m.FactionWorkType,g.BM.string(t,"_workType",r));if(!i)throw new Error(`Invalid faction work type: ${r}`);const s=g.BM.number(t,"favor",a),l=(0,y.r0)(o,i),c=(0,y.EV)(o,i,s);return l.reputation=c,l},companyGains:t=>(n,r,a,o)=>{e(t);const i=g.BM.person(t,n),s=(0,k.x)(m.JobName,g.BM.string(t,"_positionName",a));if(!s)throw new Error(`Invalid company position: ${a}`);const l=E.A[s],c=g.BM.string(t,"_companyName",r),u=Object.values(b.O).find((e=>e.name===c));if(!u)throw new Error(`Invalid company name: ${c}`);const f=g.BM.number(t,"favor",o);return(0,y.zP)(i,u,l,f)}}};return(0,p.G)(t.work,{classGains:{version:"2.2.0",replacement:"formulas.work.universityGains or formulas.work.gymGains"}}),t}},82120:(e,t,n)=>{"use strict";n.d(t,{j:()=>m});var r=n(49173),a=n(33244),o=n(87811),i=n(59471),s=n(99225),l=n(59018),c=n(23122),u=n(50862);function m(){const e=function(e){if(!r.J5.gang)throw c.BM.makeRuntimeErrorMsg(e,"Must have joined gang","API ACCESS");return r.J5.gang},t=function(t,n){const r=e(t);for(const e of r.members)if(e.name===n)return e;throw c.BM.makeRuntimeErrorMsg(t,`Invalid gang member: '${n}'`)};return{createGang:e=>t=>{const n=(0,u.m)("FactionName").nsGetMember(e,t);if(!r.J5.canAccessGang()||!o.m.Names.includes(n))return!1;if(r.J5.gang)return!1;if(!r.J5.factions.includes(n))return!1;const i=n===a.FactionName.NiteSec||n===a.FactionName.TheBlackHand;return r.J5.startGang(n,i),!0},inGang:()=>()=>!!r.J5.gang,getMemberNames:t=>()=>e(t).members.map((e=>e.name)),getGangInformation:t=>()=>{const n=e(t);return{faction:n.facName,isHacking:n.isHackingGang,moneyGainRate:n.moneyGainRate,power:n.getPower(),respect:n.respect,respectGainRate:n.respectGainRate,territory:n.getTerritory(),territoryClashChance:n.territoryClashChance,territoryWarfareEngaged:n.territoryWarfareEngaged,wantedLevel:n.wanted,wantedLevelGainRate:n.wantedGainRate,wantedPenalty:n.getWantedPenalty()}},getOtherGangInformation:t=>()=>{e(t);const n={};for(const e of Object.keys(i.vS))n[e]=Object.assign({},i.vS[e]);return n},getMemberInformation:n=>r=>{const a=c.BM.string(n,"memberName",r),o=e(n),i=t(n,a);return{name:i.name,task:i.task,earnedRespect:i.earnedRespect,hack:i.hack,str:i.str,def:i.def,dex:i.dex,agi:i.agi,cha:i.cha,hack_exp:i.hack_exp,str_exp:i.str_exp,def_exp:i.def_exp,dex_exp:i.dex_exp,agi_exp:i.agi_exp,cha_exp:i.cha_exp,hack_mult:i.hack_mult,str_mult:i.str_mult,def_mult:i.def_mult,dex_mult:i.dex_mult,agi_mult:i.agi_mult,cha_mult:i.cha_mult,hack_asc_mult:i.calculateAscensionMult(i.hack_asc_points),str_asc_mult:i.calculateAscensionMult(i.str_asc_points),def_asc_mult:i.calculateAscensionMult(i.def_asc_points),dex_asc_mult:i.calculateAscensionMult(i.dex_asc_points),agi_asc_mult:i.calculateAscensionMult(i.agi_asc_points),cha_asc_mult:i.calculateAscensionMult(i.cha_asc_points),hack_asc_points:i.hack_asc_points,str_asc_points:i.str_asc_points,def_asc_points:i.def_asc_points,dex_asc_points:i.dex_asc_points,agi_asc_points:i.agi_asc_points,cha_asc_points:i.cha_asc_points,upgrades:i.upgrades.slice(),augmentations:i.augmentations.slice(),respectGain:i.calculateRespectGain(o),wantedLevelGain:i.calculateWantedLevelGain(o),moneyGain:i.calculateMoneyGain(o)}},canRecruitMember:t=>()=>e(t).canRecruitMember(),recruitMember:t=>n=>{const r=c.BM.string(t,"memberName",n),a=e(t).recruitMember(r);return a?t.workerScript.log("gang.recruitMember",(()=>`Successfully recruited Gang Member '${r}'`)):t.workerScript.log("gang.recruitMember",(()=>`Failed to recruit Gang Member '${r}'`)),a},getTaskNames:t=>()=>{const n=e(t).getAllTaskNames();return n.unshift("Unassigned"),n},setMemberTask:n=>(r,a)=>{const o=c.BM.string(n,"memberName",r),i=c.BM.string(n,"taskName",a),s=e(n),l=t(n,o);if(!s.getAllTaskNames().includes(i))return n.workerScript.log("gang.setMemberTask",(()=>`Failed to assign Gang Member '${o}' to Invalid task '${i}'. '${o}' is now Unassigned`)),l.assignToTask("Unassigned");const u=l.assignToTask(i);return u?n.workerScript.log("gang.setMemberTask",(()=>`Successfully assigned Gang Member '${o}' to '${i}' task`)):n.workerScript.log("gang.setMemberTask",(()=>`Failed to assign Gang Member '${o}' to '${i}' task. '${o}' is now Unassigned`)),u},getTaskStats:t=>n=>{const r=c.BM.string(t,"taskName",n);e(t);const a=function(e,t){const n=s.H[t];if(!n)throw c.BM.makeRuntimeErrorMsg(e,`Invalid task: '${t}'`);return n}(t,r),o=Object.assign({},a);return o.territory=Object.assign({},a.territory),o},getEquipmentNames:t=>()=>(e(t),Object.keys(l.o)),getEquipmentCost:t=>n=>{const r=c.BM.string(t,"equipName",n),a=e(t),o=l.o[r];return null===o?1/0:a.getUpgradeCost(o)},getEquipmentType:t=>n=>{const r=c.BM.string(t,"equipName",n);e(t);const a=l.o[r];return null==a?"":a.getType()},getEquipmentStats:t=>n=>{const r=c.BM.string(t,"equipName",n);e(t);const a=l.o[r];if(!a)throw c.BM.makeRuntimeErrorMsg(t,`Invalid equipment: ${r}`);const o=a.mults;return Object.assign({},o)},purchaseEquipment:n=>(r,a)=>{const o=c.BM.string(n,"memberName",r),i=c.BM.string(n,"equipName",a);e(n);const s=t(n,o),u=l.o[i];if(!u)return!1;const m=s.buyUpgrade(u);return m?n.workerScript.log("gang.purchaseEquipment",(()=>`Purchased '${i}' for Gang member '${o}'`)):n.workerScript.log("gang.purchaseEquipment",(()=>`Failed to purchase '${i}' for Gang member '${o}'`)),m},ascendMember:n=>r=>{const a=c.BM.string(n,"memberName",r),o=e(n),i=t(n,a);if(i.canAscend())return o.ascendMember(i,n.workerScript)},getAscensionResult:n=>r=>{const a=c.BM.string(n,"memberName",r);e(n);const o=t(n,a);if(o.canAscend())return{respect:o.earnedRespect,...o.getAscensionResults()}},setTerritoryWarfare:t=>n=>{const r=!!n,a=e(t);r?(a.territoryWarfareEngaged=!0,t.workerScript.log("gang.setTerritoryWarfare",(()=>"Engaging in Gang Territory Warfare"))):(a.territoryWarfareEngaged=!1,t.workerScript.log("gang.setTerritoryWarfare",(()=>"Disengaging in Gang Territory Warfare")))},getChanceToWinClash:t=>n=>{const r=c.BM.string(t,"otherGang",n),a=e(t);if(null==i.vS[r])throw c.BM.makeRuntimeErrorMsg(t,`Invalid gang: ${r}`);const o=i.vS[a.facName].power;return o/(i.vS[r].power+o)},getBonusTime:t=>()=>{const n=e(t);return 1e3*Math.round(n.storedCycles/5)}}}},82439:(e,t,n)=>{"use strict";n.d(t,{u:()=>d});var r=n(49173),a=n(33244),o=n(73440),i=n(94542),s=n(51278),l=n(16771),c=n(52947),u=n(24815),m=n(64315),f=n(23122),h=n(50862);function d(){const e=e=>{if(!r.J5.canAccessGrafting())throw f.BM.makeRuntimeErrorMsg(e,"You do not currently have access to the Grafting API. This is either because you are not in BitNode 10 or because you do not have Source-File 10")},t=e=>(0,l.Kg)().includes(e);return{getAugmentationGraftPrice:n=>r=>{const a=(0,h.m)("AugmentationName").nsGetMember(n,r);if(e(n),!t(a))throw f.BM.makeRuntimeErrorMsg(n,`Invalid aug: ${a}`);return new s.W(o.x[a]).cost},getAugmentationGraftTime:n=>r=>{const a=(0,h.m)("AugmentationName").nsGetMember(n,r);if(e(n),!t(a))throw f.BM.makeRuntimeErrorMsg(n,`Invalid aug: ${a}`);const i=new s.W(o.x[a]);return(0,l.i1)(i)},getGraftableAugmentations:t=>()=>(e(t),(0,l.Kg)()),graftAugmentation:n=>function(l){let d=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const p=(0,h.m)("AugmentationName").nsGetMember(n,l),g=!!d;if(e(n),r.J5.city!==a.CityName.NewTokyo)throw f.BM.makeRuntimeErrorMsg(n,"You must be in New Tokyo to begin grafting an Augmentation.");if(!t(p))return f.BM.log(n,(()=>`Invalid aug: ${p}`)),!1;const y=r.J5.focus,b=new s.W(o.x[p]);return r.J5.money`You don't have enough money to craft ${p}`)),!1):(0,i.id)(b.augmentation)?(r.J5.startWork(new m.Y({singularity:!0,augmentation:p})),g?(r.J5.startFocusing(),c.F.toPage(u.T3.Work)):y&&(r.J5.stopFocusing(),c.F.toPage(u.T3.Terminal)),f.BM.log(n,(()=>`Began grafting Augmentation ${p}.`)),!0):(f.BM.log(n,(()=>`You don't have the pre-requisites for ${p}`)),!1)}}}},47837:(e,t,n)=>{"use strict";n.d(t,{p:()=>m});var r=n(49173),a=n(93430),o=n(29538),i=n(3853),s=n(55782),l=n(94043),c=n(97467),u=n(23122);function m(){const e=function(e,t){if(t<0||t>=r.J5.hacknetNodes.length)throw u.BM.makeRuntimeErrorMsg(e,"Index specified for Hacknet Node is out-of-bounds: "+t);if((0,o.kw)()){const n=r.J5.hacknetNodes[t];if("string"!=typeof n)throw new Error("hacknet node was not a string");const a=(0,c.WT)(n);if(!(a instanceof i.u))throw new Error("hacknet server was not actually hacknet server");if(null==a)throw u.BM.makeRuntimeErrorMsg(e,`Could not get Hacknet Server for index ${t}. This is probably a bug, please report to game dev`);return a}{const e=r.J5.hacknetNodes[t];if(!(e instanceof s.Q))throw new Error("hacknet node was not node.");return e}};return{numNodes:()=>()=>r.J5.hacknetNodes.length,maxNumNodes:()=>()=>(0,o.kw)()?a.B5.MaxServers:1/0,purchaseNode:()=>()=>(0,o.N0)(),getPurchaseNodeCost:()=>()=>(0,o.kw)()?(0,o.BF)():(0,o.b_)(),getNodeStats:t=>n=>{const r=u.BM.number(t,"i",n),a=e(t,r),s=(0,o.kw)(),l={name:a instanceof i.u?a.hostname:a.name,level:a.level,ram:a instanceof i.u?a.maxRam:a.ram,cores:a.cores,production:a instanceof i.u?a.hashRate:a.moneyGainRatePerSecond,timeOnline:a.onlineTimeSeconds,totalProduction:a instanceof i.u?a.totalHashesGenerated:a.totalMoneyGenerated};return s&&a instanceof i.u&&(l.cache=a.cache,l.hashCapacity=a.hashCapacity,l.ramUsed=a.ramUsed),l},upgradeLevel:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=u.BM.number(t,"i",n),i=u.BM.number(t,"n",r),s=e(t,a);return(0,o.Tw)(s,i)},upgradeRam:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=u.BM.number(t,"i",n),i=u.BM.number(t,"n",r),s=e(t,a);return(0,o.Fy)(s,i)},upgradeCore:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=u.BM.number(t,"i",n),i=u.BM.number(t,"n",r),s=e(t,a);return(0,o.UL)(s,i)},upgradeCache:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=u.BM.number(t,"i",n),s=u.BM.number(t,"n",r);if(!(0,o.kw)())return!1;const l=e(t,a);if(!(l instanceof i.u))return u.BM.log(t,(()=>"Can only be called on hacknet servers")),!1;const c=(0,o.Px)(l,s);return c&&(0,o.TN)(),c},getLevelUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const o=u.BM.number(t,"i",n),i=u.BM.number(t,"n",a),s=e(t,o);return s.calculateLevelUpgradeCost(i,r.J5.mults.hacknet_node_level_cost)},getRamUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const o=u.BM.number(t,"i",n),i=u.BM.number(t,"n",a),s=e(t,o);return s.calculateRamUpgradeCost(i,r.J5.mults.hacknet_node_ram_cost)},getCoreUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const o=u.BM.number(t,"i",n),i=u.BM.number(t,"n",a),s=e(t,o);return s.calculateCoreUpgradeCost(i,r.J5.mults.hacknet_node_core_cost)},getCacheUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=u.BM.number(t,"i",n),s=u.BM.number(t,"n",r);if(!(0,o.kw)())return 1/0;const l=e(t,a);return l instanceof i.u?l.calculateCacheUpgradeCost(s):(u.BM.log(t,(()=>"Can only be called on hacknet servers")),-1)},numHashes:()=>()=>(0,o.kw)()?r.J5.hashManager.hashes:0,hashCapacity:()=>()=>(0,o.kw)()?r.J5.hashManager.capacity:0,hashCost:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=u.BM.string(e,"upgName",t),i=u.BM.number(e,"count",n);return(0,o.kw)()?r.J5.hashManager.getUpgradeCost(a,i):1/0},spendHashes:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=u.BM.string(e,"upgName",t),i=u.BM.string(e,"upgTarget",n),s=u.BM.number(e,"count",r);return!!(0,o.kw)()&&(0,o.fE)(a,i,s)},getHashUpgrades:()=>()=>(0,o.kw)()?Object.values(l.L).map((e=>e.name)):[],getHashUpgradeLevel:e=>t=>{const n=u.BM.string(e,"upgName",t),a=r.J5.hashManager.upgrades[n];if(void 0===a)throw u.BM.makeRuntimeErrorMsg(e,`Invalid Hash Upgrade: ${n}`);return a},getStudyMult:()=>()=>(0,o.kw)()?r.J5.hashManager.getStudyMult():1,getTrainingMult:()=>()=>(0,o.kw)()?r.J5.hashManager.getTrainingMult():1}}},53331:(e,t,n)=>{"use strict";n.d(t,{d:()=>m});var r=n(33244),a=n(81881),o=n(80366),i=n(20567),s=n(58427),l=n(50862),c=n(23122),u=n(72326);function m(){const e=Object.values(a.t).filter((e=>e.infiltrationData));return{getPossibleLocations:()=>()=>(0,u.m)(e.map((e=>!!e.city&&{city:e.city,name:e.name}))),getInfiltration:e=>t=>{const n=(0,l.m)("LocationName").nsGetMember(e,t);return((e,t)=>{const n=a.t[t];if(void 0===n)throw c.BM.makeRuntimeErrorMsg(e,`Location '${n}' does not exists.`);if(void 0===n.infiltrationData)throw c.BM.makeRuntimeErrorMsg(e,`Location '${n}' does not provide infiltrations.`);const l=n.infiltrationData.startingSecurityLevel,u=(0,o.o)(l),m=(0,o.y)(l),f=n.infiltrationData.maxClearanceLevel;return{location:JSON.parse(JSON.stringify(n)),reward:{tradeRep:(0,i.Ek)(m,f,l),sellCash:(0,i.kS)(m,f,l),SoARep:(0,i.tB)(s.i[r.FactionName.ShadowsOfAnarchy],l)},difficulty:u}})(e,n)}}}},56704:(e,t,n)=>{"use strict";n.d(t,{h:()=>Y});var r=n(49173),a=n(33244),o=n(94542),i=n(7872),s=n(73440),l=n(27889),c=n(72938),u=n(19918),m=n(30518),f=n(35100),h=n(11124),d=n(4852),p=n(52947),g=n(24815),y=n(40425),b=n(81881),v=n(97467),k=n(58073),w=n(22115),E=n(97740),S=n(62586),C=n(58427),x=n(23122),N=n(49802),M=n(2517),A=n(65065),T=n(49708),L=n(89916),R=n(42805),F=n(98865),_=n(23248),I=n(40811),P=n(98235),B=n(94337),O=n(95814),D=n(16632),Z=n(75522),G=n(93936),J=n(34716),W=n(97093),H=n(51544),U=n(2827),j=n(50862),$=n(69917),q=n(27757),z=n(68507),V=n(21623);function Y(){const e=function(e){if(!e)return;const t=r.J5.getHomeComputer(),n=t.scripts.get(e);if(!n)return;const a=n.getRamUsage(t.scripts);if(!a)return A.o.error(`Attempted to launch ${e} after reset but could not calculate ram usage.`);if(a>t.maxRam-t.ramUsed+.001)return A.o.error(`Attempted to launch ${e} after reset but there was not enough ram.`);const o=new u.X(n,a,[]);(0,i.dU)(o,t)},t={getOwnedAugmentations:e=>t=>{x.BM.checkSingularityAccess(e);const n=!!t,a=[];for(let e=0;e()=>[...r.J5.sourceFiles].map((e=>{let[t,n]=e;return{n:t,lvl:n}})),getAugmentationFactions:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t);return s.x[n].factions.slice()},getAugmentationsFromFaction:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t),r=C.i[n];return(0,o.qW)(r)},getAugmentationPrereq:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t);return s.x[n].prereqs.slice()},getAugmentationBasePrice:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t);return s.x[n].baseCost*E.dQ.AugmentationMoneyCost},getAugmentationPrice:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t),r=s.x[n];return(0,l.hV)(r).moneyCost},getAugmentationRepReq:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t),r=s.x[n];return(0,l.hV)(r).repCost},getAugmentationStats:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t),r=s.x[n];return Object.assign({},r.mults)},purchaseAugmentation:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const i=(0,j.m)("FactionName").nsGetMember(e,t),u=(0,j.m)("AugmentationName").nsGetMember(e,n),m=C.i[i],f=s.x[u],h=(0,o.qW)(m);if(!r.J5.factions.includes(i))return x.BM.log(e,(()=>`You can't purchase augmentations from '${i}' because you aren't a member`)),!1;if(!h.includes(u))return x.BM.log(e,(()=>`Faction '${i}' does not have the '${u}' augmentation.`)),!1;if(f.name!==a.AugmentationName.NeuroFluxGovernor){for(let t=0;t`You already have the '${u}' augmentation.`)),!1;for(let t=0;t`You already have the '${u}' augmentation.`)),!1}if(m.playerReputation<(0,l.hV)(f).repCost)return x.BM.log(e,(()=>`You do not have enough reputation with '${m.name}'.`)),!1;const d=(0,o.Gl)(f,m,!0);return x.BM.log(e,(()=>d)),!!d.startsWith("You purchased")&&(r.J5.gainIntelligenceExp(10*c.t.IntelligenceSingFnBaseExpGain),!0)},softReset:t=>n=>{x.BM.checkSingularityAccess(t);const r=!!n&&(0,$.L6)(x.BM.string(t,"cbScript",n),t.workerScript.name);if(null===r)throw x.BM.makeRuntimeErrorMsg(t,`Could not resolve file path: ${n}`);x.BM.log(t,(()=>"Soft resetting. This will cause this script to be killed")),(0,l.Kq)(!0),r&&setTimeout((()=>e(r)),500)},installAugmentations:t=>n=>{x.BM.checkSingularityAccess(t);const a=!!n&&(0,$.L6)(x.BM.string(t,"cbScript",n),t.workerScript.name);if(null===a)throw x.BM.makeRuntimeErrorMsg(t,`Could not resolve file path: ${n}`);if(0===r.J5.queuedAugmentations.length)return x.BM.log(t,(()=>"You do not have any Augmentations to be installed.")),!1;r.J5.gainIntelligenceExp(10*c.t.IntelligenceSingFnBaseExpGain),x.BM.log(t,(()=>"Installing Augmentations. This will cause this script to be killed")),(0,l.Kq)(),a&&setTimeout((()=>e(a)),500)},goToLocation:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"locationName",t),o=Object.values(b.t).find((e=>e.name===n));return o?o.city&&r.J5.city!==o.city?(x.BM.log(e,(()=>`No location named ${n} in ${r.J5.city}`)),!1):(o.name===a.LocationName.TravelAgency?p.F.toPage(g.T3.Travel):o.name===a.LocationName.WorldStockExchange?p.F.toPage(g.T3.StockMarket):p.F.toPage(g.T3.Location,{location:o}),r.J5.gainIntelligenceExp(c.t.IntelligenceSingFnBaseExpGain/5e4),!0):(x.BM.log(e,(()=>`No location named ${n}`)),!1)},universityCourse:e=>function(t,n){let o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];x.BM.checkSingularityAccess(e);const i=x.BM.string(e,"universityName",t),s=(0,H.x)(a.UniversityClassType,x.BM.string(e,"className",n));if(!s)return x.BM.log(e,(()=>`Invalid class name: ${n}.`)),!1;const l=!!o,c=r.J5.focus;switch(i.toLowerCase()){case a.LocationName.AevumSummitUniversity.toLowerCase():if(r.J5.city!=a.CityName.Aevum)return x.BM.log(e,(()=>`You cannot study at 'Summit University' because you are not in '${a.CityName.Aevum}'.`)),!1;r.J5.gotoLocation(a.LocationName.AevumSummitUniversity);break;case a.LocationName.Sector12RothmanUniversity.toLowerCase():if(r.J5.city!=a.CityName.Sector12)return x.BM.log(e,(()=>`You cannot study at 'Rothman University' because you are not in '${a.CityName.Sector12}'.`)),!1;r.J5.location=a.LocationName.Sector12RothmanUniversity;break;case a.LocationName.VolhavenZBInstituteOfTechnology.toLowerCase():if(r.J5.city!=a.CityName.Volhaven)return x.BM.log(e,(()=>`You cannot study at 'ZB Institute of Technology' because you are not in '${a.CityName.Volhaven}'.`)),!1;r.J5.location=a.LocationName.VolhavenZBInstituteOfTechnology;break;default:return x.BM.log(e,(()=>`Invalid university name: '${i}'.`)),!1}return r.J5.startWork(new B.LA({classType:s,location:r.J5.location,singularity:!0})),l?(r.J5.startFocusing(),p.F.toPage(g.T3.Work)):c&&(r.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started ${s} at ${i}`)),!0},gymWorkout:e=>function(t,n){let o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];x.BM.checkSingularityAccess(e);const i=x.BM.string(e,"gymName",t),s=(0,H.x)(a.GymType,x.BM.string(e,"stat",n));if(!s)return x.BM.log(e,(()=>`Invalid stat: ${n}.`)),!1;const l=!!o,c=r.J5.focus;switch(i.toLowerCase()){case a.LocationName.AevumCrushFitnessGym.toLowerCase():if(r.J5.city!=a.CityName.Aevum)return x.BM.log(e,(()=>`You cannot workout at '${a.LocationName.AevumCrushFitnessGym}' because you are not in '${a.CityName.Aevum}'.`)),!1;r.J5.location=a.LocationName.AevumCrushFitnessGym;break;case a.LocationName.AevumSnapFitnessGym.toLowerCase():if(r.J5.city!=a.CityName.Aevum)return x.BM.log(e,(()=>`You cannot workout at '${a.LocationName.AevumSnapFitnessGym}' because you are not in '${a.CityName.Aevum}'.`)),!1;r.J5.location=a.LocationName.AevumSnapFitnessGym;break;case a.LocationName.Sector12IronGym.toLowerCase():if(r.J5.city!=a.CityName.Sector12)return x.BM.log(e,(()=>`You cannot workout at '${a.LocationName.Sector12IronGym}' because you are not in '${a.CityName.Sector12}'.`)),!1;r.J5.location=a.LocationName.Sector12IronGym;break;case a.LocationName.Sector12PowerhouseGym.toLowerCase():if(r.J5.city!=a.CityName.Sector12)return x.BM.log(e,(()=>`You cannot workout at '${a.LocationName.Sector12PowerhouseGym}' because you are not in '${a.CityName.Sector12}'.`)),!1;r.J5.location=a.LocationName.Sector12PowerhouseGym;break;case a.LocationName.VolhavenMilleniumFitnessGym.toLowerCase():if(r.J5.city!=a.CityName.Volhaven)return x.BM.log(e,(()=>`You cannot workout at '${a.LocationName.VolhavenMilleniumFitnessGym}' because you are not in '${a.CityName.Volhaven}'.`)),!1;r.J5.location=a.LocationName.VolhavenMilleniumFitnessGym;break;default:return x.BM.log(e,(()=>`Invalid gym name: ${i}. gymWorkout() failed`)),!1}return r.J5.startWork(new B.LA({classType:s,location:r.J5.location,singularity:!0})),l?(r.J5.startFocusing(),p.F.toPage(g.T3.Work)):c&&(r.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started training ${s} at ${i}`)),!0},travelToCity:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CityName").nsGetMember(e,t);switch(n){case a.CityName.Aevum:case a.CityName.Chongqing:case a.CityName.Sector12:case a.CityName.NewTokyo:case a.CityName.Ishima:case a.CityName.Volhaven:return r.J5.money"Not enough money to travel.")),!1):(r.J5.loseMoney(c.t.TravelCost,"other"),r.J5.city=n,x.BM.log(e,(()=>`Traveled to ${n}`)),r.J5.gainIntelligenceExp(c.t.IntelligenceSingFnBaseExpGain/5e4),!0);default:throw x.BM.makeRuntimeErrorMsg(e,`Invalid city name: '${n}'.`)}},purchaseTor:e=>()=>{if(x.BM.checkSingularityAccess(e),r.J5.hasTorRouter())return x.BM.log(e,(()=>"You already have a TOR router!")),!0;if(r.J5.money"You cannot afford to purchase a Tor router.")),!1;r.J5.loseMoney(c.t.TorRouterCost,"other");const t=(0,v.WT)(y.r.DarkWeb);if(!t)throw x.BM.makeRuntimeErrorMsg(e,"DarkWeb was not a server but should have been");return r.J5.getHomeComputer().serversOnNetwork.push(t.hostname),t.serversOnNetwork.push(r.J5.getHomeComputer().hostname),r.J5.gainIntelligenceExp(c.t.IntelligenceSingFnBaseExpGain/500),x.BM.log(e,(()=>"You have purchased a Tor router!")),!0},purchaseProgram:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"programName",t).toLowerCase();if(!r.J5.hasTorRouter())return x.BM.log(e,(()=>"You do not have the TOR router.")),!1;const a=Object.values(d.L).find((e=>e.program.toLowerCase()===n));return null==a?(x.BM.log(e,(()=>`Invalid program name: '${n}.`)),!1):r.J5.money`Not enough money to purchase '${a.program}'. Need ${(0,w.lb)(a.price)}`)),!1):r.J5.hasProgram(a.program)?(x.BM.log(e,(()=>`You already have the '${a.program}' program`)),!0):(r.J5.getHomeComputer().pushProgram(a.program),(0,O.o)(r.J5.currentWork)&&r.J5.currentWork.programName===a.program&&r.J5.finishWork(!0),r.J5.loseMoney(a.price,"other"),x.BM.log(e,(()=>`You have purchased the '${a.program}' program. The new program can be found on your home computer.`)),r.J5.gainIntelligenceExp(c.t.IntelligenceSingFnBaseExpGain/5e3),!0)},getCurrentServer:e=>()=>(x.BM.checkSingularityAccess(e),r.J5.getCurrentServer().hostname),connect:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"hostname",t);if(!n)throw x.BM.makeRuntimeErrorMsg(e,`Invalid hostname: '${n}'`);const a=(0,v.WT)(n);if(null==a)throw x.BM.makeRuntimeErrorMsg(e,`Invalid hostname: '${n}'`);if("home"===n)return r.J5.getCurrentServer().isConnectedTo=!1,r.J5.currentServer=r.J5.getHomeComputer().hostname,r.J5.getCurrentServer().isConnectedTo=!0,A.o.setcwd(q.Jz),!0;const o=r.J5.getCurrentServer();for(let e=0;e()=>{x.BM.checkSingularityAccess(e);const t=r.J5.getCurrentServer();return x.BM.hack(e,t.hostname,!0)},installBackdoor:e=>async()=>{x.BM.checkSingularityAccess(e);const t=r.J5.getCurrentServer();if(!(t instanceof L.x))return x.BM.log(e,(()=>"cannot backdoor this kind of server")),Promise.resolve();const n=t,a=(0,T.sI)(n,r.J5)/4*1e3,o=(0,R.uN)(n);if(!o.res)throw x.BM.makeRuntimeErrorMsg(e,o.msg||"");return x.BM.log(e,(()=>`Installing backdoor on '${n.hostname}' in ${(0,N.UF)(a,!0)}`)),x.BM.netscriptDelay(e,a).then((function(){if(x.BM.log(e,(()=>`Successfully installed backdoor on '${n.hostname}'`)),n.backdoorInstalled=!0,y.r.WorldDaemon===n.hostname)return p.F.toPage(g.T3.BitVerse,{flume:!1,quick:!1});U.D.Counters.checkFactionInvitations=0,U.D.checkCounters()}))},isFocused:e=>()=>(x.BM.checkSingularityAccess(e),r.J5.focus),setFocus:e=>t=>{x.BM.checkSingularityAccess(e);const n=!!t;if(null===r.J5.currentWork)throw x.BM.makeRuntimeErrorMsg(e,"Not currently working");return!r.J5.focus&&n?(r.J5.startFocusing(),p.F.toPage(g.T3.Work),!0):!(!r.J5.focus||n||(r.J5.stopFocusing(),p.F.toPage(g.T3.Terminal),0))},hospitalize:e=>()=>{x.BM.checkSingularityAccess(e),r.J5.currentWork||p.F.page()===g.T3.Infiltration||p.F.page()===g.T3.BitVerse?x.BM.log(e,(()=>"Cannot go to the hospital because the player is busy.")):r.J5.hospitalize()},isBusy:e=>()=>(x.BM.checkSingularityAccess(e),null!==r.J5.currentWork||p.F.page()===g.T3.Infiltration||p.F.page()===g.T3.BitVerse),stopAction:e=>()=>{x.BM.checkSingularityAccess(e);const t=null!==r.J5.currentWork;return r.J5.finishWork(!0),t},upgradeHomeCores:e=>()=>{x.BM.checkSingularityAccess(e);const t=r.J5.getHomeComputer();if(t.cpuCores>=8)return x.BM.log(e,(()=>"Your home computer is at max cores.")),!1;const n=r.J5.getUpgradeHomeCoresCost();return r.J5.money`You don't have enough money. Need ${(0,w.lb)(n)}`)),!1):(t.cpuCores+=1,r.J5.loseMoney(n,"servers"),r.J5.gainIntelligenceExp(2*c.t.IntelligenceSingFnBaseExpGain),x.BM.log(e,(()=>`Purchased an additional core for home computer! It now has ${t.cpuCores} cores.`)),!0)},getUpgradeHomeCoresCost:e=>()=>(x.BM.checkSingularityAccess(e),r.J5.getUpgradeHomeCoresCost()),upgradeHomeRam:e=>()=>{x.BM.checkSingularityAccess(e);const t=r.J5.getHomeComputer();if(t.maxRam>=c.t.HomeComputerMaxRam)return x.BM.log(e,(()=>"Your home computer is at max RAM.")),!1;const n=r.J5.getUpgradeHomeRamCost();return r.J5.money`You don't have enough money. Need ${(0,w.lb)(n)}`)),!1):(t.maxRam*=2,r.J5.loseMoney(n,"servers"),r.J5.gainIntelligenceExp(2*c.t.IntelligenceSingFnBaseExpGain),x.BM.log(e,(()=>`Purchased additional RAM for home computer! It now has ${(0,w.$1)(t.maxRam)} of RAM.`)),!0)},getUpgradeHomeRamCost:e=>()=>(x.BM.checkSingularityAccess(e),r.J5.getUpgradeHomeRamCost()),getCompanyPositions:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);return(0,V.m0)(h.A).filter((e=>S.O[n].hasPosition(e[0]))).map((e=>e[1].name))},getCompanyPositionInfo:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const r=(0,j.m)("CompanyName").nsGetMember(e,t),a=(0,j.m)("JobName").nsGetMember(e,n,"positionName"),o=S.O[r];if(!o.hasPosition(a))throw x.BM.makeRuntimeErrorMsg(e,`Company '${r}' does not have position '${a}'`);const i=h.A[a];return{name:h.A[a].name,nextPosition:h.A[a].nextPosition,salary:h.A[a].baseSalary*o.salaryMultiplier,requiredReputation:h.A[a].requiredReputation,requiredSkills:{hacking:i.requiredHacking>0?i.requiredHacking+o.jobStatReqOffset:0,strength:i.requiredStrength>0?i.requiredStrength+o.jobStatReqOffset:0,defense:i.requiredDefense>0?i.requiredDefense+o.jobStatReqOffset:0,dexterity:i.requiredDexterity>0?i.requiredDexterity+o.jobStatReqOffset:0,agility:i.requiredAgility>0?i.requiredAgility+o.jobStatReqOffset:0,charisma:i.requiredCharisma>0?i.requiredCharisma+o.jobStatReqOffset:0,intelligence:0}}},workForCompany:e=>function(t){let n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];x.BM.checkSingularityAccess(e);const a=(0,j.m)("CompanyName").nsGetMember(e,t),o=!!n,i=r.J5.jobs[a];if(!i)throw x.BM.makeRuntimeErrorMsg(e,`You do not have a job at: '${a}'`);const s=r.J5.focus;return r.J5.startWork(new Z.t({singularity:!0,companyName:a})),o?(r.J5.startFocusing(),p.F.toPage(g.T3.Work)):s&&(r.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Began working at '${a}' with position '${i}'`)),!0},applyToCompany:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const a=(0,j.m)("CompanyName").nsGetMember(e,t),o=x.BM.string(e,"field",n);let i;switch(r.J5.location=(0,z.$)(a),o.toLowerCase()){case"software":i=r.J5.applyForSoftwareJob(!0);break;case"software consultant":i=r.J5.applyForSoftwareConsultantJob(!0);break;case"it":i=r.J5.applyForItJob(!0);break;case"security engineer":i=r.J5.applyForSecurityEngineerJob(!0);break;case"network engineer":i=r.J5.applyForNetworkEngineerJob(!0);break;case"business":i=r.J5.applyForBusinessJob(!0);break;case"business consultant":i=r.J5.applyForBusinessConsultantJob(!0);break;case"security":i=r.J5.applyForSecurityJob(!0);break;case"agent":i=r.J5.applyForAgentJob(!0);break;case"employee":i=r.J5.applyForEmployeeJob(!0);break;case"part-time employee":i=r.J5.applyForPartTimeEmployeeJob(!0);break;case"waiter":i=r.J5.applyForWaiterJob(!0);break;case"part-time waiter":i=r.J5.applyForPartTimeWaiterJob(!0);break;default:return x.BM.log(e,(()=>`Invalid job: '${o}'.`)),!1}return i?x.BM.log(e,(()=>`You were offered a new job at '${a}' with position '${r.J5.jobs[a]}'`)):x.BM.log(e,(()=>`You failed to get a new job/promotion at '${a}' in the '${o}' field.`)),i},quitJob:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);r.J5.quitJob(n)},getCompanyRep:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);return S.O[n].playerReputation},getCompanyFavor:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);return S.O[n].favor},getCompanyFavorGain:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);return S.O[n].getFavorGain()},checkFactionInvitations:e=>()=>(x.BM.checkSingularityAccess(e),U.D.Counters.checkFactionInvitations=0,U.D.checkCounters(),r.J5.factionInvitations.slice()),joinFaction:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t);if(!r.J5.factionInvitations.includes(n))return x.BM.log(e,(()=>`You have not been invited by faction '${n}'`)),!1;const a=C.i[n];(0,o.Bj)(a);for(let e=0;e`Joined the '${n}' faction.`)),!0},workForFaction:e=>function(t,n){let o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];x.BM.checkSingularityAccess(e);const i=(0,j.m)("FactionName").nsGetMember(e,t),s=x.BM.string(e,"type",n),l=!!o,c=C.i[i];if(r.J5.gang&&c.name===r.J5.getGangFaction().name)return x.BM.log(e,(()=>`You can't work for '${i}' because youre managing a gang for it`)),!1;if(!r.J5.factions.includes(i))return x.BM.log(e,(()=>`You are not a member of '${i}'`)),!1;const u=r.J5.focus;switch(s.toLowerCase()){case"hacking":case"hacking contracts":case"hackingcontracts":return F.G[c.name].offerHackingWork?(r.J5.startWork(new D.s({singularity:!0,factionWorkType:a.FactionWorkType.hacking,faction:c.name})),l?(r.J5.startFocusing(),p.F.toPage(g.T3.Work)):u&&(r.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started carrying out hacking contracts for '${c.name}'`)),!0):(x.BM.log(e,(()=>`Faction '${c.name}' do not need help with hacking contracts.`)),!1);case"field":case"fieldwork":case"field work":return F.G[c.name].offerFieldWork?(r.J5.startWork(new D.s({singularity:!0,factionWorkType:a.FactionWorkType.field,faction:c.name})),l?(r.J5.startFocusing(),p.F.toPage(g.T3.Work)):u&&(r.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started carrying out field missions for '${c.name}'`)),!0):(x.BM.log(e,(()=>`Faction '${c.name}' do not need help with field missions.`)),!1);case"security":case"securitywork":case"security work":return F.G[c.name].offerSecurityWork?(r.J5.startWork(new D.s({singularity:!0,factionWorkType:a.FactionWorkType.security,faction:c.name})),l?(r.J5.startFocusing(),p.F.toPage(g.T3.Work)):u&&(r.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started carrying out security work for '${c.name}'`)),!0):(x.BM.log(e,(()=>`Faction '${c.name}' do not need help with security work.`)),!1);default:return x.BM.log(e,(()=>`Invalid work type: '${s}`)),!1}},getFactionRep:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t);return C.i[n].playerReputation},getFactionFavor:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t);return C.i[n].favor},getFactionFavorGain:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t);return C.i[n].getFavorGain()},donateToFaction:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const o=(0,j.m)("FactionName").nsGetMember(e,t),i=x.BM.number(e,"amt",n),s=C.i[o];if(!r.J5.factions.includes(s.name))return x.BM.log(e,(()=>`You can't donate to '${o}' because you aren't a member`)),!1;if(r.J5.gang&&s.name===r.J5.getGangFaction().name)return x.BM.log(e,(()=>`You can't donate to '${o}' because youre managing a gang for it`)),!1;if(s.name===a.FactionName.ChurchOfTheMachineGod||s.name===a.FactionName.Bladeburners)return x.BM.log(e,(()=>`You can't donate to '${o}' because they do not accept donations`)),!1;if("number"!=typeof i||i<=0||isNaN(i))return x.BM.log(e,(()=>`Invalid donation amount: '${i}'.`)),!1;if(r.J5.money`You do not have enough money to donate ${(0,w.lb)(i)} to '${o}'`)),!1;if(s.favor<(0,_.Tv)())return x.BM.log(e,(()=>`You do not have enough favor to donate to this faction. Have ${s.favor}, need ${(0,_.Tv)()}`)),!1;const l=(0,_.HC)(i,s);return x.BM.log(e,(()=>`${(0,w.lb)(i)} donated to '${o}' for ${(0,w.$n)(l)} reputation`)),!0},createProgram:e=>function(t){let n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];x.BM.checkSingularityAccess(e);const a=x.BM.string(e,"programName",t).toLowerCase(),o=!!n,i=r.J5.focus,s=Object.values(k.B).find((e=>e.name.toLowerCase()===a));if(null==s)return x.BM.log(e,(()=>`The specified program does not exist: '${a}`)),!1;if(r.J5.hasProgram(s.name))return x.BM.log(e,(()=>`You already have the '${s.name}' program`)),!1;const l=s.create;return null===l?(x.BM.log(e,(()=>`You cannot create the '${s.name}' program`)),!1):l.req()?(r.J5.startWork(new O.m({programName:s.name,singularity:!0})),o?(r.J5.startFocusing(),p.F.toPage(g.T3.Work)):i&&(r.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Began creating program: '${a}'`)),!0):(x.BM.log(e,(()=>`Hacking level is too low to create '${s.name}' (level ${l.level} req)`)),!1)},commitCrime:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const o=x.BM.string(e,"crimeType",t),i=void 0===n||!!n,s=r.J5.focus;null!==r.J5.currentWork&&r.J5.finishWork(!0),r.J5.gotoLocation(a.LocationName.Slums);const l=(0,f.K)(o);if(null==l)throw x.BM.makeRuntimeErrorMsg(e,`Invalid crime: '${o}'`);x.BM.log(e,(()=>`Attempting to commit ${l.type}...`));const c=l.commit(1,e.workerScript);return i?(r.J5.startFocusing(),p.F.toPage(g.T3.Work)):s&&(r.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),c},getCrimeChance:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"crimeType",t),a=(0,f.K)(n);if(null==a)throw x.BM.makeRuntimeErrorMsg(e,`Invalid crime: '${n}'`);return a.successRate(r.J5)},getCrimeStats:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"crimeType",t),a=(0,f.K)(n);if(null==a)throw x.BM.makeRuntimeErrorMsg(e,`Invalid crime: '${n}'`);const o=(0,W.jI)(r.J5,a);return Object.assign({},a,{money:o.money,reputation:o.reputation,hacking_exp:o.hackExp,strength_exp:o.strExp,defense_exp:o.defExp,dexterity_exp:o.dexExp,agility_exp:o.agiExp,charisma_exp:o.chaExp,intelligence_exp:o.intExp})},getDarkwebPrograms:e=>()=>(x.BM.checkSingularityAccess(e),r.J5.hasTorRouter()?Object.values(d.L).map((e=>e.program)):(x.BM.log(e,(()=>"You do not have the TOR router.")),[])),getDarkwebProgramCost:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"programName",t).toLowerCase();if(!r.J5.hasTorRouter())return x.BM.log(e,(()=>"You do not have the TOR router.")),-1;const a=Object.values(d.L).find((e=>e.program.toLowerCase()===n));if(null==a)throw x.BM.makeRuntimeErrorMsg(e,`No such exploit ('${n}') found on the darkweb! \nThis function is not case-sensitive. Did you perhaps forget .exe at the end?`);return r.J5.hasProgram(a.program)?(x.BM.log(e,(()=>`You already have the '${a.program}' program`)),0):a.price},b1tflum3:t=>(n,a)=>{x.BM.checkSingularityAccess(t);const o=x.BM.number(t,"nextBN",n),i=!!a&&(0,$.L6)(x.BM.string(t,"cbScript",a),t.workerScript.name);if(null===i)throw x.BM.makeRuntimeErrorMsg(t,`Could not resolve file path: ${a}`);(0,P.i)(!0,r.J5.bitNodeN,o),i&&setTimeout((()=>e(i)),500)},destroyW0r1dD43m0n:t=>(n,o)=>{x.BM.checkSingularityAccess(t);const i=x.BM.number(t,"nextBN",n);if(i>13||i<1||!Number.isInteger(i))throw new Error(`Invalid bitnode specified: ${n}`);const s=!!o&&(0,$.L6)(x.BM.string(t,"cbScript",o),t.workerScript.name);if(null===s)throw x.BM.makeRuntimeErrorMsg(t,`Could not resolve file path: ${o}`);const l=(0,v.WT)(y.r.WorldDaemon);if(!(l instanceof L.x))throw new Error("WorldDaemon was not a normal server. This is a bug contact dev.");!(r.J5.skills.hackinge(s)),500)):x.BM.log(t,(()=>"Requirements not met to destroy the world daemon"))},getCurrentWork:()=>()=>r.J5.currentWork?r.J5.currentWork.APICopy():null,exportGame:e=>()=>(x.BM.checkSingularityAccess(e),(0,G.uL)(),J.Ex.exportGame()),exportGameBonus:e=>()=>(x.BM.checkSingularityAccess(e),(0,G.B0)())};return(0,I.G)(t,{getAugmentationCost:{version:"2.2.0",replacement:"singularity.getAugmentationPrice and singularity.getAugmentationRepReq"}}),t}},12093:(e,t,n)=>{"use strict";n.d(t,{T:()=>p});var r=n(49173),a=n(73440),o=n(35100),i=n(50862),s=n(40811),l=n(57566),c=n(73328),u=n(9666),m=n(23122),f=n(96486),h=n(27889),d=n(58427);function p(){const e=function(e){if(10!==r.J5.bitNodeN&&!r.J5.sourceFileLvl(10))throw m.BM.makeRuntimeErrorMsg(e,"You do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10")},t=function(e,t){if(t>=r.J5.sleeves.length||t<0){const n=`Invalid sleeve number: ${t}`;throw m.BM.log(e,(()=>n)),m.BM.makeRuntimeErrorMsg(e,n)}},n={getNumSleeves:t=>()=>(e(t),r.J5.sleeves.length),setToIdle:n=>a=>{const o=m.BM.number(n,"sleeveNumber",a);e(n),t(n,o),r.J5.sleeves[o].stopWork()},setToShockRecovery:n=>a=>{const o=m.BM.number(n,"sleeveNumber",a);return e(n),t(n,o),r.J5.sleeves[o].shockRecovery()},setToSynchronize:n=>a=>{const o=m.BM.number(n,"sleeveNumber",a);return e(n),t(n,o),r.J5.sleeves[o].synchronize()},setToCommitCrime:n=>(a,i)=>{const s=m.BM.number(n,"sleeveNumber",a),l=m.BM.string(n,"crimeType",i);e(n),t(n,s);const c=(0,o.K)(l);return null!=c&&r.J5.sleeves[s].commitCrime(c.type)},setToUniversityCourse:n=>(a,o,i)=>{const s=m.BM.number(n,"sleeveNumber",a),l=m.BM.string(n,"universityName",o),c=m.BM.string(n,"className",i);return e(n),t(n,s),r.J5.sleeves[s].takeUniversityCourse(l,c)},travel:n=>(a,o)=>{const s=m.BM.number(n,"sleeveNumber",a),l=(0,i.m)("CityName").nsGetMember(n,o);return e(n),t(n,s),r.J5.sleeves[s].travel(l)},setToCompanyWork:n=>(a,o)=>{const s=m.BM.number(n,"sleeveNumber",a),l=(0,i.m)("CompanyName").nsGetMember(n,o);e(n),t(n,s);for(let e=0;e(a,o,s)=>{const l=m.BM.number(n,"sleeveNumber",a),u=(0,i.m)("FactionName").nsGetMember(n,o),f=m.BM.string(n,"workType",s);if(e(n),t(n,l),!d.i[u].isMember)throw m.BM.makeRuntimeErrorMsg(n,`Cannot work for faction ${u} without being a member.`);for(let e=0;e(a,o,i)=>{const s=m.BM.number(n,"sleeveNumber",a),l=m.BM.string(n,"gymName",o),c=m.BM.string(n,"stat",i);return e(n),t(n,s),r.J5.sleeves[s].workoutAtGym(l,c)},getTask:n=>a=>{const o=m.BM.number(n,"sleeveNumber",a);e(n),t(n,o);const i=r.J5.sleeves[o];return null===i.currentWork?null:i.currentWork.APICopy(i)},getSleeve:n=>a=>{const o=m.BM.number(n,"sleeveNumber",a);e(n),t(n,o);const i=r.J5.sleeves[o];return{hp:(0,f.cloneDeep)(i.hp),skills:(0,f.cloneDeep)(i.skills),exp:(0,f.cloneDeep)(i.exp),mults:(0,f.cloneDeep)(i.mults),city:i.city,shock:i.shock,sync:i.sync,memory:i.memory,storedCycles:i.storedCycles}},getSleeveAugmentations:n=>a=>{const o=m.BM.number(n,"sleeveNumber",a);e(n),t(n,o);const i=[];for(let e=0;ea=>{const o=m.BM.number(n,"sleeveNumber",a);e(n),t(n,o);const i=r.J5.sleeves[o].findPurchasableAugs(),s=[];for(let e=0;e(o,s)=>{const l=m.BM.number(n,"sleeveNumber",o),c=(0,i.m)("AugmentationName").nsGetMember(n,s);if(e(n),t(n,l),r.J5.sleeves[l].shock>0)throw m.BM.makeRuntimeErrorMsg(n,`Sleeve shock too high: Sleeve ${l}`);const u=a.x[c];if(!u)throw m.BM.makeRuntimeErrorMsg(n,`Invalid aug: ${c}`);return r.J5.sleeves[l].tryBuyAugmentation(u)},getSleeveAugmentationPrice:t=>n=>{e(t);const r=(0,i.m)("AugmentationName").nsGetMember(t,n);return a.x[r].baseCost},getSleeveAugmentationRepReq:t=>n=>{e(t);const r=(0,i.m)("AugmentationName").nsGetMember(t,n),o=a.x[r];return(0,h.hV)(o).repCost},setToBladeburnerAction:n=>(a,o,i)=>{const s=m.BM.number(n,"sleeveNumber",a),c=m.BM.string(n,"action",o);let u;if(u=void 0===i?"------":m.BM.string(n,"contract",i),e(n),t(n,s),"Take on contracts"===c)for(let e=0;e{"use strict";n.d(t,{T:()=>f});var r=n(49173),a=n(33244),o=n(78573),i=n(93772),s=n(32864),l=n(27889),c=n(94542),u=n(58427),m=n(23122);function f(){function e(e){if(!r.J5.hasAugmentation(a.AugmentationName.StaneksGift1,!0))throw m.BM.makeRuntimeErrorMsg(e,"Stanek's Gift is not installed")}return{giftWidth:t=>()=>(e(t),o.y$.width()),giftHeight:t=>()=>(e(t),o.y$.height()),chargeFragment:t=>(n,r)=>{const a=m.BM.number(t,"rootX",n),i=m.BM.number(t,"rootY",r);e(t);const l=o.y$.findFragment(a,i);if(!l)throw m.BM.makeRuntimeErrorMsg(t,`No fragment with root (${a}, ${i}).`);if(l.fragment().type==s.E.Booster)throw m.BM.makeRuntimeErrorMsg(t,`The fragment with root (${a}, ${i}) is a Booster Fragment and thus cannot be charged.`);const c=o.y$.inBonus(),u=c?200:1e3;return c&&(o.y$.isBonusCharging=!0),m.BM.netscriptDelay(t,u).then((function(){return o.y$.charge(l,t.workerScript.scriptRef.threads),m.BM.log(t,(()=>`Charged fragment with ${t.workerScript.scriptRef.threads} threads.`)),Promise.resolve()}))},fragmentDefinitions:t=>()=>(e(t),m.BM.log(t,(()=>`Returned ${i.nB.length} fragments`)),i.nB.map((e=>e.copy()))),activeFragments:t=>()=>(e(t),m.BM.log(t,(()=>`Returned ${o.y$.fragments.length} fragments`)),o.y$.fragments.map((e=>({...e.copy(),...e.fragment().copy()})))),clearGift:t=>()=>{e(t),m.BM.log(t,(()=>"Cleared Stanek's Gift.")),o.y$.clear()},canPlaceFragment:t=>(n,r,a,s)=>{const l=m.BM.number(t,"rootX",n),c=m.BM.number(t,"rootY",r),u=m.BM.number(t,"rotation",a),f=m.BM.number(t,"fragmentId",s);e(t);const h=(0,i.pM)(f);if(!h)throw m.BM.makeRuntimeErrorMsg(t,`Invalid fragment id: ${f}`);return o.y$.canPlace(l,c,u,h)},placeFragment:t=>(n,r,a,s)=>{const l=m.BM.number(t,"rootX",n),c=m.BM.number(t,"rootY",r),u=m.BM.number(t,"rotation",a),f=m.BM.number(t,"fragmentId",s);e(t);const h=(0,i.pM)(f);if(!h)throw m.BM.makeRuntimeErrorMsg(t,`Invalid fragment id: ${f}`);return o.y$.place(l,c,u,h)},getFragment:t=>(n,r)=>{const a=m.BM.number(t,"rootX",n),i=m.BM.number(t,"rootY",r);e(t);const s=o.y$.findFragment(a,i);if(void 0!==s)return s.copy()},removeFragment:t=>(n,r)=>{const a=m.BM.number(t,"rootX",n),i=m.BM.number(t,"rootY",r);return e(t),o.y$.delete(a,i)},acceptGift:e=>()=>(r.J5.canAccessCotMG()&&0==r.J5.augmentations.filter((e=>e.name!==a.AugmentationName.NeuroFluxGovernor)).length&&0==r.J5.queuedAugmentations.filter((e=>e.name!==a.AugmentationName.NeuroFluxGovernor)).length&&((0,c.Bj)(u.i[a.FactionName.ChurchOfTheMachineGod]),r.J5.hasAugmentation(a.AugmentationName.StaneksGift1)||r.J5.queuedAugmentations.some((e=>e.name===a.AugmentationName.StaneksGift1))||((0,l.kk)({name:a.AugmentationName.StaneksGift1,level:1}),m.BM.log(e,(()=>`'${a.FactionName.ChurchOfTheMachineGod}' joined and '${a.AugmentationName.StaneksGift1}' installed.`)))),u.i[a.FactionName.ChurchOfTheMachineGod].isMember&&r.J5.hasAugmentation(a.AugmentationName.StaneksGift1,!0))}}},67828:(e,t,n)=>{"use strict";n.d(t,{V:()=>f});var r=n(49173),a=n(82427),o=n(35102),i=n(38456),s=n(33244),l=n(4605),c=n(23122),u=n(96486),m=n(83190);function f(){const e=function(e){if(!r.J5.hasWseAccount)throw c.BM.makeRuntimeErrorMsg(e,`You don't have WSE Access! Cannot use ${e.function}()`);if(!r.J5.hasTixApiAccess)throw c.BM.makeRuntimeErrorMsg(e,`You don't have TIX API Access! Cannot use ${e.function}()`)},t=function(e,t){const n=o.tD[t];if(null==n)throw c.BM.makeRuntimeErrorMsg(e,`Invalid stock symbol: '${t}'`);return n};return{getConstants:()=>()=>(0,u.cloneDeep)(m.M),hasWSEAccount:()=>()=>r.J5.hasWseAccount,hasTIXAPIAccess:()=>()=>r.J5.hasTixApiAccess,has4SData:()=>()=>r.J5.has4SData,has4SDataTIXAPI:()=>()=>r.J5.has4SDataTixApi,getSymbols:t=>()=>(e(t),Object.values(s.StockSymbol)),getPrice:n=>r=>{const a=c.BM.string(n,"symbol",r);return e(n),t(n,a).price},getOrganization:n=>r=>{const a=c.BM.string(n,"symbol",r);return e(n),t(n,a).name},getAskPrice:n=>r=>{const a=c.BM.string(n,"symbol",r);return e(n),t(n,a).getAskPrice()},getBidPrice:n=>r=>{const a=c.BM.string(n,"symbol",r);return e(n),t(n,a).getBidPrice()},getPosition:t=>n=>{const r=c.BM.string(t,"symbol",n);e(t);const a=o.tD[r];if(null==a)throw c.BM.makeRuntimeErrorMsg(t,`Invalid stock symbol: ${r}`);return[a.playerShares,a.playerAvgPx,a.playerShortShares,a.playerAvgShortPx]},getMaxShares:n=>r=>{const a=c.BM.string(n,"symbol",r);return e(n),t(n,a).maxShares},getPurchaseCost:n=>(r,a,o)=>{const l=c.BM.string(n,"symbol",r);let u=c.BM.number(n,"shares",a);const m=c.BM.string(n,"posType",o);e(n);const f=t(n,l);let h;u=Math.round(u);const d=m.toLowerCase();if(d.includes("l"))h=s.PositionType.Long;else{if(!d.includes("s"))return 1/0;h=s.PositionType.Short}const p=(0,i.Cb)(f,u,h);return null==p?1/0:p},getSaleGain:n=>(r,a,o)=>{const l=c.BM.string(n,"symbol",r);let u=c.BM.number(n,"shares",a);const m=c.BM.string(n,"posType",o);e(n);const f=t(n,l);let h;u=Math.round(u);const d=m.toLowerCase();if(d.includes("l"))h=s.PositionType.Long;else{if(!d.includes("s"))return 0;h=s.PositionType.Short}const p=(0,i.WZ)(f,u,h);return null==p?0:p},buyStock:n=>(r,o)=>{const i=c.BM.string(n,"symbol",r),s=c.BM.number(n,"shares",o);e(n);const l=t(n,i);return(0,a.TR)(l,s,n,{})?l.getAskPrice():0},sellStock:n=>(r,o)=>{const i=c.BM.string(n,"symbol",r),s=c.BM.number(n,"shares",o);e(n);const l=t(n,i);return(0,a.Ne)(l,s,n,{})?l.getBidPrice():0},buyShort:n=>(o,i)=>{const s=c.BM.string(n,"symbol",o),l=c.BM.number(n,"shares",i);if(e(n),8!==r.J5.bitNodeN&&r.J5.sourceFileLvl(8)<=1)throw c.BM.makeRuntimeErrorMsg(n,"You must either be in BitNode-8 or you must have Source-File 8 Level 2.");const u=t(n,s);return(0,a.BN)(u,l,n,{})?u.getBidPrice():0},sellShort:n=>(o,i)=>{const s=c.BM.string(n,"symbol",o),l=c.BM.number(n,"shares",i);if(e(n),8!==r.J5.bitNodeN&&r.J5.sourceFileLvl(8)<=1)throw c.BM.makeRuntimeErrorMsg(n,"You must either be in BitNode-8 or you must have Source-File 8 Level 2.");const u=t(n,s);return(0,a.no)(u,l,n,{})?u.getAskPrice():0},placeOrder:n=>(a,i,l,u,m)=>{const f=c.BM.string(n,"symbol",a),h=c.BM.number(n,"shares",i),d=c.BM.number(n,"price",l),p=c.BM.string(n,"type",u),g=c.BM.string(n,"pos",m);if(e(n),8!==r.J5.bitNodeN&&r.J5.sourceFileLvl(8)<=2)throw c.BM.makeRuntimeErrorMsg(n,"You must either be in BitNode-8 or you must have Source-File 8 Level 3.");const y=t(n,f);let b,v;const k=p.toLowerCase();if(k.includes("limit")&&k.includes("buy"))b=s.OrderType.LimitBuy;else if(k.includes("limit")&&k.includes("sell"))b=s.OrderType.LimitSell;else if(k.includes("stop")&&k.includes("buy"))b=s.OrderType.StopBuy;else{if(!k.includes("stop")||!k.includes("sell"))throw c.BM.makeRuntimeErrorMsg(n,`Invalid order type: ${p}`);b=s.OrderType.StopSell}const w=g.toLowerCase();if(w.includes("l"))v=s.PositionType.Long;else{if(!w.includes("s"))throw c.BM.makeRuntimeErrorMsg(n,`Invalid position type: ${g}`);v=s.PositionType.Short}return(0,o.s1)(y,h,d,b,v,n)},cancelOrder:n=>(a,i,l,u,m)=>{const f=c.BM.string(n,"symbol",a),h=c.BM.number(n,"shares",i),d=c.BM.number(n,"price",l),p=c.BM.string(n,"type",u),g=c.BM.string(n,"pos",m);if(e(n),8!==r.J5.bitNodeN&&r.J5.sourceFileLvl(8)<=2)throw c.BM.makeRuntimeErrorMsg(n,"You must either be in BitNode-8 or you must have Source-File 8 Level 3.");const y=t(n,f);if(isNaN(h)||isNaN(d))throw c.BM.makeRuntimeErrorMsg(n,`Invalid shares or price. Must be numeric. shares=${h}, price=${d}`);let b,v;const k=p.toLowerCase();if(k.includes("limit")&&k.includes("buy"))b=s.OrderType.LimitBuy;else if(k.includes("limit")&&k.includes("sell"))b=s.OrderType.LimitSell;else if(k.includes("stop")&&k.includes("buy"))b=s.OrderType.StopBuy;else{if(!k.includes("stop")||!k.includes("sell"))throw c.BM.makeRuntimeErrorMsg(n,`Invalid order type: ${p}`);b=s.OrderType.StopSell}const w=g.toLowerCase();if(w.includes("l"))v=s.PositionType.Long;else{if(!w.includes("s"))throw c.BM.makeRuntimeErrorMsg(n,`Invalid position type: ${g}`);v=s.PositionType.Short}const E={stock:y,shares:h,price:d,type:b,pos:v};return(0,o.sl)(E,n)},getOrders:t=>()=>{if(e(t),8!==r.J5.bitNodeN&&r.J5.sourceFileLvl(8)<=2)throw c.BM.makeRuntimeErrorMsg(t,"You must either be in BitNode-8 or have Source-File 8 Level 3.");const n={},a=o.xO.Orders;for(const e of Object.keys(a)){const t=a[e];if(t.constructor===Array&&t.length>0){n[e]=[];for(let r=0;rn=>{const a=c.BM.string(e,"symbol",n);if(!r.J5.has4SDataTixApi)throw c.BM.makeRuntimeErrorMsg(e,"You don't have 4S Market Data TIX API Access!");return t(e,a).mv/100},getForecast:e=>n=>{const a=c.BM.string(e,"symbol",n);if(!r.J5.has4SDataTixApi)throw c.BM.makeRuntimeErrorMsg(e,"You don't have 4S Market Data TIX API Access!");const o=t(e,a);let i=50;return o.b?i+=o.otlkMag:i-=o.otlkMag,i/100},purchase4SMarketData:e=>()=>r.J5.has4SData?(c.BM.log(e,(()=>"Already purchased 4S Market Data.")),!0):r.J5.money<(0,l.yG)()?(c.BM.log(e,(()=>"Not enough money to purchase 4S Market Data.")),!1):(r.J5.has4SData=!0,r.J5.loseMoney((0,l.yG)(),"stock"),c.BM.log(e,(()=>"Purchased 4S Market Data")),!0),purchase4SMarketDataTixApi:t=>()=>(e(t),r.J5.has4SDataTixApi?(c.BM.log(t,(()=>"Already purchased 4S Market Data TIX API")),!0):r.J5.money<(0,l.ND)()?(c.BM.log(t,(()=>"Not enough money to purchase 4S Market Data TIX API")),!1):(r.J5.has4SDataTixApi=!0,r.J5.loseMoney((0,l.ND)(),"stock"),c.BM.log(t,(()=>"Purchased 4S Market Data TIX API")),!0)),purchaseWseAccount:e=>()=>r.J5.hasWseAccount?(c.BM.log(e,(()=>"Already purchased WSE Account")),!0):r.J5.money<(0,l.FL)()?(c.BM.log(e,(()=>"Not enough money to purchase WSE Account Access")),!1):(r.J5.hasWseAccount=!0,(0,o.T_)(),r.J5.loseMoney((0,l.FL)(),"stock"),c.BM.log(e,(()=>"Purchased WSE Account Access")),!0),purchaseTixApi:e=>()=>r.J5.hasTixApiAccess?(c.BM.log(e,(()=>"Already purchased TIX API")),!0):r.J5.money<(0,l.Zh)()?(c.BM.log(e,(()=>"Not enough money to purchase TIX API Access")),!1):(r.J5.hasTixApiAccess=!0,r.J5.loseMoney((0,l.Zh)(),"stock"),c.BM.log(e,(()=>"Purchased TIX API")),!0)}}},32730:(e,t,n)=>{"use strict";n.d(t,{z:()=>m});var r=n(51087),a=n(10425),o=n(18746),i=n(15975),s=n(72938),l=n(90936),c=n(65065),u=n(23122);function m(){return{windowSize:()=>()=>[window.innerWidth,window.innerHeight],getTheme:()=>()=>({...r.Z.theme}),getStyles:()=>()=>({...r.Z.styles}),setTheme:e=>t=>{(0,u.Z6)(e,"newTheme",t,{});const n=/^(#)((?:[A-Fa-f0-9]{2}){3,4}|(?:[A-Fa-f0-9]{3}))$/,o={...r.Z.theme},i=[];for(const e of Object.keys(t))o[e]?n.test(t[e]??"")?o[e]=t[e]:i.push(`Invalid color "${e}": ${t[e]}`):i.push(`Invalid key "${e}"`);0===i.length?(Object.assign(r.Z.theme,o),a.bS.emit(),u.BM.log(e,(()=>"Successfully set theme"))):u.BM.log(e,(()=>`Failed to set theme. Errors: ${i.join(", ")}`))},setStyles:e=>t=>{(0,u.Z6)(e,"newStyles",t,{});const n={...r.Z.styles},o=[];for(const e of Object.keys(t))n[e]?n[e]=t[e]:o.push(`Invalid key "${e}"`);0===o.length?(Object.assign(r.Z.styles,n),a.bS.emit(),u.BM.log(e,(()=>"Successfully set styles"))):u.BM.log(e,(()=>`Failed to set styles. Errors: ${o.join(", ")}`))},resetTheme:e=>()=>{r.Z.theme={...o.u},a.bS.emit(),u.BM.log(e,(()=>"Reinitialized theme to default"))},resetStyles:e=>()=>{r.Z.styles={...i.j},a.bS.emit(),u.BM.log(e,(()=>"Reinitialized styles to default"))},getGameInfo:()=>()=>({version:s.t.VersionString,commit:(0,l.v)(),platform:navigator.userAgent.toLowerCase().includes(" electron/")?"Steam":"Browser"}),clearTerminal:e=>()=>{u.BM.log(e,(()=>"Clearing terminal")),c.o.clear()}}}},32938:(e,t,n)=>{"use strict";n.d(t,{l:()=>a});const r=new(n(46277).N)("",(()=>{}));function a(e){if(null==e)return null;if(!((t=e)&&"object"==typeof t&&Object.hasOwn(t,"properties")&&Object.hasOwn(t,"getter")&&Object.hasOwn(t,"setter")&&Object.hasOwn(t,"proto")))return e;var t;if(Object.hasOwn(e,"class")&&"Array"===e.class){const t=[],n=r.getProperty(e,"length");if("number"==typeof n)for(let o=0;o{"use strict";n.d(t,{M:()=>m});var r=n(49667),a=n(63230),o=n(28274),i=n(69917),s=n(27757);const l=e=>import(e),c=new Map,u=new FinalizationRegistry((e=>{var t;void 0===(null===(t=c.get(e))||void 0===t?void 0:t.deref())&&c.delete(e)}));function m(e,t){return e.mod||(e.mod=h(e,t,[])),e.mod.module}function f(e,t){if(!e.mod)throw new Error(`addDependencyInfo called without a LoadedModule (${e.filename})`);if(t.length){e.dependents.add(t[t.length-1]);for(const n of t)n.dependencies.set(e.mod.url,e)}e.dependencies.set(e.mod.url,e)}function h(e,t,n){var m;if(e.mod)return f(e,n),e.mod;const d=(0,a.Qc)(e.code,{sourceType:"module",ecmaVersion:"latest",ranges:!0}),p=[];r.lC(d,{ImportDeclaration(e){e.source&&p.push({filename:e.source.value,start:e.source.range[0]+1,end:e.source.range[1]-1})},ExportNamedDeclaration(e){e.source&&p.push({filename:e.source.value,start:e.source.range[0]+1,end:e.source.range[1]-1})},ExportAllDeclaration(e){e.source&&p.push({filename:e.source.value,start:e.source.range[0]+1,end:e.source.range[1]-1})}}),p.sort(((e,t)=>t.start-e.start));let g=e.code;for(const r of p){const a=(0,i.L6)(r.filename,s.Jz,".js");if(!a)throw new Error(`Failed to parse import: ${r.filename}`);const o=t.get(a);o&&(n.push(e),o.mod=h(o,t,n),n.pop(),g=g.substring(0,r.start)+o.mod.url+g.substring(r.end))}const y=null===(m=c.get(g))||void 0===m?void 0:m.deref();if(y)e.mod=y;else{const t=g+`\n//# sourceURL=${e.server}/${e.filename}`,n=URL.createObjectURL(new Blob([t],{type:"text/javascript"})),r=l(n).catch((t=>{throw e.invalidateModule(),console.error(`Error occurred while attempting to compile ${e.filename} on ${e.server}:`),console.error(t),t}));URL.revokeObjectURL(n),e.mod=new o.w(n,r),c.set(g,new WeakRef(e.mod)),u.register(e.mod,g)}return f(e,n),e.mod}},24302:(e,t,n)=>{"use strict";n.d(t,{KV:()=>h,TR:()=>c,h:()=>m,i5:()=>f,vN:()=>u,y6:()=>l});var r=n(51087),a=n(7872);const o="NULL PORT DATA";function i(e){let t=a.s9.get(e);return t||(t=new s,a.s9.set(e,t),t)}class s{data=[];resolvers=[]}function l(e){return{write:t=>c(e,t),tryWrite:t=>u(e,t),read:()=>m(e),peek:()=>f(e),nextWrite:()=>function(e){const{resolvers:t}=i(e);return new Promise((e=>t.push(e)))}(e),full:()=>function(e){const t=a.s9.get(e);return!!t&&t.data.length>=r.Z.MaxPortCapacity}(e),empty:()=>function(e){const t=a.s9.get(e);return!t||0===t.data.length}(e),clear:()=>h(e)}}function c(e,t){if("number"!=typeof t&&"string"!=typeof t)throw new Error(`port.write: Tried to write type ${typeof t}. Only string and number types may be written to ports.`);const{data:n,resolvers:a}=i(e);for(n.push(t);a.length>0;){var o;null===(o=a.pop())||void 0===o||o()}return n.length>r.Z.MaxPortCapacity?n.shift():null}function u(e,t){if("number"!=typeof t&&"string"!=typeof t)throw new Error(`port.write: Tried to write type ${typeof t}. Only string and number types may be written to ports.`);const{data:n,resolvers:a}=i(e);if(n.length>=r.Z.MaxPortCapacity)return!1;for(n.push(t);a.length>0;){var o;null===(o=a.pop())||void 0===o||o()}return!0}function m(e){const t=a.s9.get(e);if(!t||!t.data.length)return o;const n=t.data.shift();return t.data.length||t.resolvers.length||a.s9.delete(e),n}function f(e){const t=a.s9.get(e);return t&&t.data.length?t.data[0]:o}function h(e){const t=a.s9.get(e);t&&(t.resolvers.length||a.s9.delete(e),t.data.length=0)}},7872:(e,t,n)=>{"use strict";n.d(t,{JP:()=>O,K7:()=>_,Yf:()=>B,Zh:()=>T,dU:()=>F,s9:()=>A});var r=n(21951),a=n(60520),o=n(40185),i=n(75350),s=n(46570),l=n(72938),c=n(46277),u=n(96393),m=n(50663),f=n(19918),h=n(10364),d=n(97467),p=n(51087),g=n(90312),y=n(39463),b=n(22115),v=n(72326),k=n(99953),w=n(63230),E=n(49667),S=n(91371),C=n(65065),x=n(23122),N=n(69917),M=n(27757);const A=new Map;function T(){for(const e of i.R.values())(0,r.i)(e);A.clear()}async function L(e){const t=e.getServer().scripts,n=e.getScript();if(!n)throw"workerScript had no associated script. This is a bug.";const r=e.env.vars;if(!r)throw`${n.filename} cannot be run because the NS object hasn't been constructed properly.`;const a=await(0,m.M)(n,t);if(!a)throw`${n.filename} cannot be run because the script module won't load`;if("function"!=typeof a.main)throw`${n.filename} cannot be run because it does not have a main function.`;await a.main(r)}async function R(e){const t=e.code;let n,r,a;try{const n=function(e,t){const n=(0,w.Qc)(e,{ecmaVersion:9,allowReserved:!0,sourceType:"module"}),r=t.getServer();if(null==r)throw new Error("Failed to find underlying Server object for script");let a="",o=!1;if((0,E.lC)(n,{ImportDeclaration:e=>{o=!0;const t=(0,N.L6)(e.source.value,M.Jz,".script");if(!t)throw new Error("'Import' failed due to invalid path: "+t);const n=function(e){return r.scripts.get(e)??null}(t);if(!n)throw new Error("'Import' failed due to script not found: "+t);const i=(0,w.Qc)(n.code,{ecmaVersion:9,allowReserved:!0,sourceType:"module"});if(1===e.specifiers.length&&"ImportNamespaceSpecifier"===e.specifiers[0].type){const t=e.specifiers[0].local.name,n=[],r=[];(0,E.lC)(i,{FunctionDeclaration:e=>{n.push(e.id.name),r.push(e)}}),a+=`var ${t};\n(function (namespace) {\n`,r.forEach((e=>{a+=(0,g.R_)(e),a+="\n"})),n.forEach((e=>{a+="namespace."+e+" = "+e,a+="\n"})),a+=`})(${t} || (" + namespace + " = {}));\n`}else{const t=[];e.specifiers.forEach((e=>{t.push(e.local.name)}));const n=[];(0,E.lC)(i,{FunctionDeclaration:e=>{t.includes(e.id.name)&&n.push(e)}}),n.forEach((e=>{a+=(0,g.R_)(e),a+="\n"}))}}}),!o)return{code:e,lineOffset:0};let i=0;if("Program"!==n.type||null==n.body)throw new Error("Code could not be properly parsed");for(let e=n.body.length-1;e>=0;--e)"ImportDeclaration"===n.body[e].type&&(n.body.splice(e,1),++i);const s=(a.match(/\n/g)||[]).length-i;e=(0,g.R_)(n);return{code:e=a+e,lineOffset:s}}(t,e);r=n.code,a=n.lineOffset}catch(t){throw`Error processing Imports in ${e.name}@${e.hostname}:\n\n${t}`}const o=(0,u.q)(e);let i;try{i=new c.N(r,(function e(t,r){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o;for(const[o,i]of Object.entries(a))if("function"==typeof i){const e=async function(){try{for(var e=arguments.length,r=new Array(e),a=0;at.pseudoToNative(e))));return n(t.nativeToPseudo(o))}catch(e){n=e}};t.setProperty(r,o,t.createAsyncFunction(e))}else Array.isArray(i)||"object"!=typeof i?t.setProperty(r,o,t.nativeToPseudo(i)):(t.setProperty(r,o,t.nativeToPseudo({})),e(t,r.properties[o],a[o]))}),a)}catch(t){throw`Syntax ERROR in ${e.name}@${e.hostname}:\n\n${String(t)}`}let s=!0;for(;s;){if(n)throw n;if(e.env.stopFlag)return;for(let e=0;s&&e<3;e++)s=i.step();s&&await new Promise((e=>setTimeout(e,p.Z.CodeInstructionRunTime)))}}function F(e,t,n){return t.hostname!==e.server?(console.error(`Tried to launch a worker script on a different server ${t.hostname} than the runningScript's server ${e.server}`),0):function(e,t,n){const l=(0,k.S)(e.ramUsage*e.threads),c=t.maxRam-t.ramUsed;if(l>c+.001)return I(`Not enough RAM to run script ${e.filename} with args ${(0,v.N)(e.args)}, needed ${(0,b.$1)(l)} but only have ${(0,b.$1)(c)} free\nIf you are seeing this on startup, likely causes are that the autoexec script is too big to fit in RAM, or it took up too much space and other previously running scripts couldn't fit on home.\nOtherwise, this can also occur if you have attempted to launch a script from a tail window with insufficient RAM.`),!1;const m=(0,s.L)();if(-1===m)return I("Failed to start script because could not find available PID. This is most because you have too many scripts running."),!1;t.updateRamUsed((0,k.S)(t.ramUsed+l));const f=new o.h(e,m,u.q);return i.R.set(m,f),(f.name.endsWith(".js")?L:R)(f).then((function(){n&&!n.env.stopFlag&&(n.scriptRef.onlineExpGained+=e.onlineExpGained,n.scriptRef.onlineMoneyMade+=e.onlineMoneyMade),(0,r.i)(f),f.log("",(()=>"Script finished running"))})).catch((function(e){(0,x.ac)(e,f),f.log("",(()=>e instanceof a.w?"Script killed.":"Script crashed due to an error.")),(0,r.i)(f)})),!0}(e,t,n)?(t.runScript(e),e.pid):0}function _(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const t=e*l.t.MilliPerCycle/1e3;for(const e of i.R.values())e.scriptRef.onlineRunningTime+=t}function I(e){setTimeout((()=>(0,y.X)(e)),0)}function P(e){const t=(0,S.$4)(p.Z.AutoexecScript);if(0===t.length)return null;const n=String(t[0]),r=(0,N.L6)(n);if(!r)return I(`While running autoexec script:\n"${n}" is invalid for a script name (maybe missing suffix?)`),null;const a=e.scripts.get(r);if(!a)return I(`While running autoexec script:\n"${n}" does not exist!`),null;const o=a.getRamUsage(e.scripts);if(null===o)return I(`While running autoexec script:\n"${n}" has errors!`),null;t.shift();const i=new f.X(a,o,t);return i.temporary=!0,i}function B(){const e=window.location.href.toLowerCase().includes("?noscripts");e&&(C.o.warn("Skipped loading player scripts during startup"),console.info("Skipping the load of any scripts during startup"));for(const t of(0,d.XX)()){t.ramUsed=0;const n=t.savedScripts;if(t.savedScripts=void 0,!e&&n){if("home"===t.hostname){const e=P(t);e&&n.unshift(e)}for(const e of n)F(e,t),(0,h.F9)(e)}}}function O(e,t,n,r,a,o){const i=t.scripts.get(n);if(!i)return a.log(e,(()=>`Could not find script '${n}' on '${t.hostname}'`)),0;if(o.preventDuplicates&&null!==(0,x.bZ)({workerScript:a,function:"runScriptFromScript",functionPath:"internal.runScriptFromScript"},n,t.hostname,r))return a.log(e,(()=>`'${n}' is already running on '${t.hostname}'`)),0;const s=o.ramOverride??i.getRamUsage(t.scripts);if(!s)return a.log(e,(()=>`Ram usage could not be calculated for ${n}`)),0;if(!t.hasAdminRights)return a.log(e,(()=>`You do not have root access on '${t.hostname}'`)),0;if(s*o.threads>t.maxRam-t.ramUsed+.001)return a.log(e,(()=>`Cannot run script '${n}' (t=${o.threads}) on '${t.hostname}' because there is not enough available RAM!`)),0;a.log(e,(()=>`'${n}' on '${t.hostname}' with ${o.threads} threads and args: ${(0,v.N)(r)}.`));const l=new f.X(i,s,r);return l.threads=o.threads,l.temporary=o.temporary,F(l,t,a)}},27178:(e,t,n)=>{"use strict";n.d(t,{HX:()=>o,J6:()=>i});var r=n(21211);let a=1;function o(e){return a+=e,()=>a-=e}function i(){return(0,r.J)(a)}},21211:(e,t,n)=>{"use strict";function r(e){const t=1+Math.log(e)/25;return isNaN(t)||!isFinite(t)?1:t}n.d(t,{J:()=>r})},37042:(e,t,n)=>{"use strict";function*r(e){yield*e.scripts,yield*e.textFiles}n.d(t,{F:()=>r})},61835:(e,t,n)=>{"use strict";n.d(t,{G:()=>a,h:()=>o});var r=n(64962);function a(e){return e.endsWith(".cct")}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const n=(0,r.Iw)(e,t);return n&&a(n)?n:null}},27757:(e,t,n)=>{"use strict";n.d(t,{H0:()=>h,II:()=>i,Jz:()=>o,O5:()=>m,RL:()=>f,Z1:()=>p,cx:()=>g,iL:()=>d,nD:()=>s});var r=n(37042),a=n(96486);const o="",i=`[^${(0,a.escapeRegExp)(["/","*","?","[","]","!","\\","~","|","#",'"',"'"," "].join(""))}]`,s=`^(?(?:${i}+\\/)*)`,l=new RegExp(s+"$");function c(e){return l.test(e)}const u=/(?:^|\/)\.{1,2}\//;function m(e){return!u.test(e)}function f(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o;return e.startsWith("/")&&(t=o,e=e.substring(1)),e&&!e.endsWith("/")&&(e+="/"),c(e)?h(e,t):null}function h(e,t){if(!e)return t;const n=e.split(/(?<=\/)/),r=t.split(/(?<=\/)/).filter(Boolean);for(;n.length;){const e=n.shift();switch(e){case"./":break;case"../":if(!r.length)return null;r.pop();break;default:r.push(e)}}return r.join("")}function d(e,t){for(const n of t.scripts.keys())if(n.startsWith(e))return!0;for(const n of t.textFiles.keys())if(n.startsWith(e))return!0;return!1}function p(e){const t=e.indexOf("/");return-1===t?null:e.substring(0,t+1)}function g(e){const t=new Set([o]);function n(e){const r=e.lastIndexOf("/",e.length-2);if(-1===r)return;const a=e.substring(0,r+1);t.has(a)||(t.add(a),n(a))}for(const[t]of(0,r.F)(e))n(t);return t}if(!c(o)||!m(o))throw new Error("Root failed to validate")},64962:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>u,Tp:()=>s,Vf:()=>i,bW:()=>f,uP:()=>l,ws:()=>h});var r=n(27757);const a=`(?${r.II}+\\.${r.II}+)$`,o=new RegExp(r.nD+a);function i(e){return o.test(e)}function s(e){if(i(e)&&(0,r.O5)(e))return e;throw new Error(`${e} failed to validate as a FilePath.`)}function l(e){const t=e.lastIndexOf("/")+1;return e.substring(t)}function c(e){const t=o.exec(e);return t?t.groups:null}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if((0,r.O5)(e))return e.startsWith("/")&&(e=e.substring(1)),i(e)?e:null;t=m(t);const n=c(e);if(!n)return null;const a=(0,r.H0)(n.directory,t);return null===a?null:f(a,n.file)}function m(e){return e.replace(/[^/]+\.[^/]+$/,"")}function f(e,t){return e+t}function h(e,t){return t.startsWith(e)?t.substring(e.length):null}},20706:(e,t,n)=>{"use strict";n.d(t,{m:()=>o});var r=n(27757),a=n(37042);function o(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.Jz;const o=new Map;e.startsWith("/")&&(n=r.Jz,e=e.substring(1)),e=n+e;const i=new Set(["/","\\","^","$",".","|","+","(",")","[","{"]);e=e.split("").map((e=>"*"===e?".*":"?"===e?".":i.has(e)?"\\"+e:e)).join("");const s=new RegExp(`^${e}$`);for(const[e,n]of(0,a.F)(t))s.test(e)&&o.set(e,n);return o}},84555:(e,t,n)=>{"use strict";n.d(t,{LL:()=>o,P1:()=>i});var r=n(27757),a=n(64962);function o(e){if(e.endsWith(".exe"))return!0;const t=e.substring(e.indexOf("."));return/^\.exe-[0-9]{1,2}\.[0-9]{2}%-INC$/.test(t)}function i(e){if((0,a.Vf)(e)&&o(e)&&(0,r.O5)(e))return e;throw new Error(`${e} failed to validate as a ProgramFilePath.`)}},69917:(e,t,n)=>{"use strict";n.d(t,{L6:()=>o,UH:()=>i,a0:()=>a});var r=n(64962);const a=[".js",".script"];function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0;n&&!e.endsWith(n)&&(e+=n);const a=(0,r.Iw)(e,t);return a&&i(a)?a:null}function i(e){return a.some((t=>e.endsWith(t)))}},48897:(e,t,n)=>{"use strict";n.d(t,{T:()=>o,e:()=>a});var r=n(64962);function a(e){return e.endsWith(".txt")}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const n=(0,r.Iw)(e,t);return n&&a(n)?n:null}},28562:(e,t,n)=>{"use strict";n.d(t,{k:()=>o});var r=n(72938),a=n(49173);const o=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const t=r.t.EntropyEffect**e;return{hacking_chance:a.J5.mults.hacking_chance*t,hacking_speed:a.J5.mults.hacking_speed*t,hacking_money:a.J5.mults.hacking_money*t,hacking_grow:a.J5.mults.hacking_grow*t,hacking:a.J5.mults.hacking*t,strength:a.J5.mults.strength*t,defense:a.J5.mults.defense*t,dexterity:a.J5.mults.dexterity*t,agility:a.J5.mults.agility*t,charisma:a.J5.mults.charisma*t,hacking_exp:a.J5.mults.hacking_exp*t,strength_exp:a.J5.mults.strength_exp*t,defense_exp:a.J5.mults.defense_exp*t,dexterity_exp:a.J5.mults.dexterity_exp*t,agility_exp:a.J5.mults.agility_exp*t,charisma_exp:a.J5.mults.charisma_exp*t,company_rep:a.J5.mults.company_rep*t,faction_rep:a.J5.mults.faction_rep*t,crime_money:a.J5.mults.crime_money*t,crime_success:a.J5.mults.crime_success*t,hacknet_node_money:a.J5.mults.hacknet_node_money*t,hacknet_node_purchase_cost:a.J5.mults.hacknet_node_purchase_cost*t,hacknet_node_ram_cost:a.J5.mults.hacknet_node_ram_cost*t,hacknet_node_core_cost:a.J5.mults.hacknet_node_core_cost*t,hacknet_node_level_cost:a.J5.mults.hacknet_node_level_cost*t,work_money:a.J5.mults.work_money*t,bladeburner_max_stamina:a.J5.mults.bladeburner_max_stamina*t,bladeburner_stamina_gain:a.J5.mults.bladeburner_stamina_gain*t,bladeburner_analysis:a.J5.mults.bladeburner_analysis*t,bladeburner_success_chance:a.J5.mults.bladeburner_success_chance*t}}},51278:(e,t,n)=>{"use strict";n.d(t,{W:()=>o});var r=n(96486),a=n(72938);class o{constructor(e){this.augmentation=e}get cost(){return this.augmentation.baseCost*a.t.AugmentationGraftingCostMult}get time(){const e=Math.max((0,r.sum)(Object.values(this.augmentation.mults).filter((e=>1!==e))),1),t=Math.log2(e);return(a.t.AugmentationGraftingTimeBase*t+a.t.MillisecondsPerHalfHour)/2}}},16771:(e,t,n)=>{"use strict";n.d(t,{Kg:()=>l,hI:()=>c,i1:()=>u});var r=n(49173),a=n(33244),o=n(73440),i=n(46085),s=n(21623);const l=()=>{const e=[];for(const[t,n]of(0,s.m0)(o.x)){if(r.J5.factions.includes(a.FactionName.Bladeburners)){if(n.isSpecial&&!n.factions.includes(a.FactionName.Bladeburners))continue}else if(n.isSpecial)continue;e.push(t)}return e.filter((e=>!r.J5.hasAugmentation(e)))},c=()=>1+((0,i.f)(r.J5.skills.intelligence,3)-1)/3,u=e=>e.time/c()},72390:(e,t,n)=>{"use strict";n.d(t,{M:()=>R,q:()=>I});var r=n(49173),a=n(33244),o=n(67294),i=n(90912),s=n(68426),l=n(98168),c=n(81138),u=n(78016),m=n(56798),f=n(30120),h=n(28881),d=n(97212),p=n(95309),g=n(64315),y=n(73440),b=n(72938),v=n(94542),k=n(56412),w=n(51087),E=n(52947),S=n(24815),C=n(54538),x=n(72360),N=n(22115),M=n(49802),A=n(51278),T=n(16771),L=n(88775);const R=()=>{const e={};for(const t of Object.values(y.x)){const n=t.name,r=new A.W(t);e[n]=r}return e},F=e=>!(r.J5.money{const t=e.aug;return o.createElement(c.Z,{color:w.Z.theme.money},o.createElement("b",null,"Pre-Requisites:"),o.createElement("br",null),t.prereqs.map((e=>o.createElement("span",{key:e,style:{display:"flex",alignItems:"center"}},r.J5.hasAugmentation(e)?o.createElement(i.Z,{sx:{mr:1}}):o.createElement(s.Z,{sx:{mr:1}}),e))))},I=()=>{const e=(0,o.useState)(R())[0],[t,n]=(0,o.useState)((0,T.Kg)()[0]),[i,s]=(0,o.useState)(!1),v=y.x[t],A=(0,L.S)(200),I=e=>{w.Z.PurchaseAugmentationsOrder=e,A()};return o.createElement(u.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0}},o.createElement(m.Z,{onClick:()=>E.F.back()},"Back"),o.createElement(c.Z,{variant:"h4"},"Grafting Laboratory"),o.createElement(c.Z,null,"You find yourself in a secret laboratory, owned by a mysterious researcher.",o.createElement("br",null),"The scientist explains that they've been studying Augmentation grafting, the process of applying Augmentations without requiring a body reset.",o.createElement("br",null),o.createElement("br",null),"Through legally questionable connections, the scientist has access to a vast array of Augmentation blueprints, even private designs. They offer to build and graft the Augmentations to you, in exchange for both a hefty sum of money, and being a lab rat."),o.createElement(f.Z,{sx:{my:3}},o.createElement(h.Z,{sx:{p:1}},o.createElement(c.Z,{variant:"h5"},"Graft Augmentations"),o.createElement(f.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},o.createElement(m.Z,{sx:{width:"100%"},onClick:()=>I(k.L.Cost)},"Sort by Cost"),o.createElement(m.Z,{sx:{width:"100%"},onClick:()=>I(k.L.Default)},"Sort by Default Order"))),(0,T.Kg)().length>0?o.createElement(h.Z,{sx:{mb:1,width:"fit-content",display:"grid",gridTemplateColumns:"1fr 3fr"}},o.createElement(d.Z,{sx:{height:400,overflowY:"scroll",borderRight:`1px solid ${w.Z.theme.welllight}`}},(()=>{const t=(0,T.Kg)();return w.Z.PurchaseAugmentationsOrder===k.L.Cost?t.sort(((t,n)=>e[t].cost-e[n].cost)):t})().map(((r,a)=>o.createElement(p.Z,{key:a+1,onClick:()=>n(r),selected:t===r},o.createElement(c.Z,{sx:{color:F(e[r])?w.Z.theme.primary:w.Z.theme.disabled}},r))))),o.createElement(f.Z,{sx:{m:1}},o.createElement(c.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},o.createElement(l.Z,{sx:{mr:1}})," ",t),o.createElement(m.Z,{onClick:()=>s(!0),sx:{width:"100%"},disabled:!F(e[t])},"Graft Augmentation (",o.createElement(c.Z,null,o.createElement(x.W,{money:e[t].cost,forPurchase:!0})),")"),o.createElement(C.c,{open:i,onClose:()=>s(!1),onConfirm:()=>{r.J5.startWork(new g.Y({augmentation:t,singularity:!1})),r.J5.startFocusing(),E.F.toPage(S.T3.Work)},confirmationText:o.createElement(o.Fragment,null,"Cancelling grafting will ",o.createElement("b",null,"not")," save grafting progress, and the money you spend will ",o.createElement("b",null,"not")," ","be returned.",!r.J5.hasAugmentation(a.AugmentationName.CongruityImplant)&&o.createElement(o.Fragment,null,o.createElement("br",null),o.createElement("br",null),"Additionally, grafting an Augmentation will increase the potency of the Entropy virus."))}),o.createElement(f.Z,{sx:{maxHeight:330,overflowY:"scroll"}},o.createElement(c.Z,{color:w.Z.theme.info},o.createElement("b",null,"Time to Graft:")," ",(0,M.UF)((0,T.i1)(e[t]))),v.prereqs.length>0&&o.createElement(_,{aug:v}),o.createElement("br",null),o.createElement(c.Z,{whiteSpace:"pre-wrap"},(()=>{const e="string"==typeof v.info?o.createElement("span",null,v.info):v.info;return o.createElement(o.Fragment,null,e,o.createElement("br",null),o.createElement("br",null),v.stats)})())))):o.createElement(c.Z,null,"All Augmentations owned")),o.createElement(f.Z,{sx:{my:3}},o.createElement(c.Z,{variant:"h5"},"Entropy Virus"),o.createElement(h.Z,{sx:{my:1,p:1,width:"fit-content"}},o.createElement(c.Z,null,o.createElement("b",null,"Entropy strength:")," ",r.J5.entropy,o.createElement("br",null),o.createElement("b",null,"All multipliers decreased by:")," ",(0,N.$j)(100*(1-b.t.EntropyEffect**r.J5.entropy),3),"% (multiplicative)")),o.createElement(c.Z,null,"When installed on an unconscious individual, Augmentations are scanned by the body on awakening, eliminating hidden malware. However, grafted Augmentations do not provide this security measure.",o.createElement("br",null),o.createElement("br",null),'Individuals who tested Augmentation grafting have reported symptoms of an unknown virus, which they\'ve dubbed "Entropy". This virus seems to grow more potent with each grafted Augmentation...')))}},62850:(e,t,n)=>{"use strict";n.d(t,{A7:()=>r,Rc:()=>o,VA:()=>a});const r=()=>({hacking_chance:1,hacking_speed:1,hacking_money:1,hacking_grow:1,hacking:1,hacking_exp:1,strength:1,strength_exp:1,defense:1,defense_exp:1,dexterity:1,dexterity_exp:1,agility:1,agility_exp:1,charisma:1,charisma_exp:1,hacknet_node_money:1,hacknet_node_purchase_cost:1,hacknet_node_ram_cost:1,hacknet_node_core_cost:1,hacknet_node_level_cost:1,company_rep:1,faction_rep:1,work_money:1,crime_success:1,crime_money:1,bladeburner_max_stamina:1,bladeburner_stamina_gain:1,bladeburner_analysis:1,bladeburner_success_chance:1}),a=(e,t)=>({hacking_chance:e.hacking_chance*t.hacking_chance,hacking_speed:e.hacking_speed*t.hacking_speed,hacking_money:e.hacking_money*t.hacking_money,hacking_grow:e.hacking_grow*t.hacking_grow,hacking:e.hacking*t.hacking,hacking_exp:e.hacking_exp*t.hacking_exp,strength:e.strength*t.strength,strength_exp:e.strength_exp*t.strength_exp,defense:e.defense*t.defense,defense_exp:e.defense_exp*t.defense_exp,dexterity:e.dexterity*t.dexterity,dexterity_exp:e.dexterity_exp*t.dexterity_exp,agility:e.agility*t.agility,agility_exp:e.agility_exp*t.agility_exp,charisma:e.charisma*t.charisma,charisma_exp:e.charisma_exp*t.charisma_exp,hacknet_node_money:e.hacknet_node_money*t.hacknet_node_money,hacknet_node_purchase_cost:e.hacknet_node_purchase_cost*t.hacknet_node_purchase_cost,hacknet_node_ram_cost:e.hacknet_node_ram_cost*t.hacknet_node_ram_cost,hacknet_node_core_cost:e.hacknet_node_core_cost*t.hacknet_node_core_cost,hacknet_node_level_cost:e.hacknet_node_level_cost*t.hacknet_node_level_cost,company_rep:e.company_rep*t.company_rep,faction_rep:e.faction_rep*t.faction_rep,work_money:e.work_money*t.work_money,crime_success:e.crime_success*t.crime_success,crime_money:e.crime_money*t.crime_money,bladeburner_max_stamina:e.bladeburner_max_stamina*t.bladeburner_max_stamina,bladeburner_stamina_gain:e.bladeburner_stamina_gain*t.bladeburner_stamina_gain,bladeburner_analysis:e.bladeburner_analysis*t.bladeburner_analysis,bladeburner_success_chance:e.bladeburner_success_chance*t.bladeburner_success_chance}),o=(e,t)=>({hacking_chance:(e.hacking_chance-1)*t+1,hacking_speed:(e.hacking_speed-1)*t+1,hacking_money:(e.hacking_money-1)*t+1,hacking_grow:(e.hacking_grow-1)*t+1,hacking:(e.hacking-1)*t+1,hacking_exp:(e.hacking_exp-1)*t+1,strength:(e.strength-1)*t+1,strength_exp:(e.strength_exp-1)*t+1,defense:(e.defense-1)*t+1,defense_exp:(e.defense_exp-1)*t+1,dexterity:(e.dexterity-1)*t+1,dexterity_exp:(e.dexterity_exp-1)*t+1,agility:(e.agility-1)*t+1,agility_exp:(e.agility_exp-1)*t+1,charisma:(e.charisma-1)*t+1,charisma_exp:(e.charisma_exp-1)*t+1,hacknet_node_money:(e.hacknet_node_money-1)*t+1,hacknet_node_purchase_cost:(e.hacknet_node_purchase_cost-1)*t+1,hacknet_node_ram_cost:(e.hacknet_node_ram_cost-1)*t+1,hacknet_node_core_cost:(e.hacknet_node_core_cost-1)*t+1,hacknet_node_level_cost:(e.hacknet_node_level_cost-1)*t+1,company_rep:(e.company_rep-1)*t+1,faction_rep:(e.faction_rep-1)*t+1,work_money:(e.work_money-1)*t+1,crime_success:(e.crime_success-1)*t+1,crime_money:(e.crime_money-1)*t+1,bladeburner_max_stamina:(e.bladeburner_max_stamina-1)*t+1,bladeburner_stamina_gain:(e.bladeburner_stamina_gain-1)*t+1,bladeburner_analysis:(e.bladeburner_analysis-1)*t+1,bladeburner_success_chance:(e.bladeburner_success_chance-1)*t+1})},27435:(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var r=n(19043),a=n(33244),o=n(22738),i=n(62850);class s{hp={current:10,max:10};skills={hacking:1,strength:1,defense:1,dexterity:1,agility:1,charisma:1,intelligence:0};exp={hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0};mults=(0,i.A7)();augmentations=[];queuedAugmentations=[];city=a.CityName.Sector12;gainHackingExp=r.XD;gainStrengthExp=r.jD;gainDefenseExp=r.g1;gainDexterityExp=r.KZ;gainAgilityExp=r.QB;gainCharismaExp=r.Xl;gainIntelligenceExp=r._G;gainStats=r.d4;regenerateHp=r.bw;queryStatFromString=r.qu;updateSkillLevels=r.n4;hasAugmentation=r.IO;calculateSkill=o.gX;resetMultipliers(){this.mults=(0,i.A7)()}}},19043:(e,t,n)=>{"use strict";n.d(t,{IO:()=>y,KZ:()=>c,QB:()=>u,XD:()=>i,Xl:()=>m,_G:()=>f,bw:()=>p,d4:()=>h,g1:()=>l,jD:()=>s,n4:()=>g,qu:()=>d});var r=n(22738),a=n(97740),o=n(49173);function i(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainHackingExp()"):(this.exp.hacking+=e,this.exp.hacking<0&&(this.exp.hacking=0),this.skills.hacking=(0,r.gX)(this.exp.hacking,this.mults.hacking*a.dQ.HackingLevelMultiplier))}function s(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainStrengthExp()"):(this.exp.strength+=e,this.exp.strength<0&&(this.exp.strength=0),this.skills.strength=(0,r.gX)(this.exp.strength,this.mults.strength*a.dQ.StrengthLevelMultiplier))}function l(e){if(isNaN(e))return void console.error("ERR: NaN passed into player.gainDefenseExp()");this.exp.defense+=e,this.exp.defense<0&&(this.exp.defense=0),this.skills.defense=(0,r.gX)(this.exp.defense,this.mults.defense*a.dQ.DefenseLevelMultiplier);const t=this.hp.current/this.hp.max;this.hp.max=Math.floor(10+this.skills.defense/10),this.hp.current=Math.round(this.hp.max*t)}function c(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainDexterityExp()"):(this.exp.dexterity+=e,this.exp.dexterity<0&&(this.exp.dexterity=0),this.skills.dexterity=(0,r.gX)(this.exp.dexterity,this.mults.dexterity*a.dQ.DexterityLevelMultiplier))}function u(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainAgilityExp()"):(this.exp.agility+=e,this.exp.agility<0&&(this.exp.agility=0),this.skills.agility=(0,r.gX)(this.exp.agility,this.mults.agility*a.dQ.AgilityLevelMultiplier))}function m(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainCharismaExp()"):(this.exp.charisma+=e,this.exp.charisma<0&&(this.exp.charisma=0),this.skills.charisma=(0,r.gX)(this.exp.charisma,this.mults.charisma*a.dQ.CharismaLevelMultiplier))}function f(e){isNaN(e)?console.error("ERROR: NaN passed into Player.gainIntelligenceExp()"):(o.J5.sourceFileLvl(5)>0||this.skills.intelligence>0||5===o.J5.bitNodeN)&&(this.exp.intelligence+=e,this.skills.intelligence=Math.floor(this.calculateSkill(this.exp.intelligence,1)))}function h(e){this.gainHackingExp(e.hackExp*this.mults.hacking_exp),this.gainStrengthExp(e.strExp*this.mults.strength_exp),this.gainDefenseExp(e.defExp*this.mults.defense_exp),this.gainDexterityExp(e.dexExp*this.mults.dexterity_exp),this.gainAgilityExp(e.agiExp*this.mults.agility_exp),this.gainCharismaExp(e.chaExp*this.mults.charisma_exp),this.gainIntelligenceExp(e.intExp)}function d(e){const t=e.toLowerCase();return t.includes("hack")?this.skills.hacking:t.includes("str")?this.skills.strength:t.includes("def")?this.skills.defense:t.includes("dex")?this.skills.dexterity:t.includes("agi")?this.skills.agility:t.includes("cha")?this.skills.charisma:t.includes("int")?this.skills.intelligence:0}function p(e){"number"==typeof e?(this.hp.current+=e,this.hp.current>this.hp.max&&(this.hp.current=this.hp.max)):console.warn(`Player.regenerateHp() called without a numeric argument: ${e}`)}function g(){this.skills.hacking=Math.max(1,Math.floor(this.calculateSkill(this.exp.hacking,this.mults.hacking*a.dQ.HackingLevelMultiplier))),this.skills.strength=Math.max(1,Math.floor(this.calculateSkill(this.exp.strength,this.mults.strength*a.dQ.StrengthLevelMultiplier))),this.skills.defense=Math.max(1,Math.floor(this.calculateSkill(this.exp.defense,this.mults.defense*a.dQ.DefenseLevelMultiplier))),this.skills.dexterity=Math.max(1,Math.floor(this.calculateSkill(this.exp.dexterity,this.mults.dexterity*a.dQ.DexterityLevelMultiplier))),this.skills.agility=Math.max(1,Math.floor(this.calculateSkill(this.exp.agility,this.mults.agility*a.dQ.AgilityLevelMultiplier))),this.skills.charisma=Math.max(1,Math.floor(this.calculateSkill(this.exp.charisma,this.mults.charisma*a.dQ.CharismaLevelMultiplier)));const e=Math.min(this.hp.current/this.hp.max,1);this.hp.max=Math.floor(10+this.skills.defense/10),this.hp.current=Math.round(this.hp.max*e)}function y(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!!this.augmentations.some((t=>t.name===e))||!(t||!this.queuedAugmentations.some((t=>t.name===e)))}},43196:(e,t,n)=>{"use strict";var r=n(23466),a=n(61952),o=n(2391),i=n(21774),s=n(24528),l=n(6089),c=n(4601),u=n(49173),m=n(33244),f=n(16466),h=n(57499),d=n(94515),p=n(7165),g=n(49802),y=n(92666),b=n(72938),v=n(27435),k=n(50862);class w extends v.F{bitNodeN=1;corporation=null;gang=null;bladeburner=null;currentServer="";factions=[];factionInvitations=[];hacknetNodes=[];has4SData=!1;has4SDataTixApi=!1;hashManager=new f.F;hasTixApiAccess=!1;hasWseAccount=!1;jobs={};karma=0;numPeopleKilled=0;location=m.LocationName.TravelAgency;money=1e3+b.t.Donations;moneySourceA=new h.S;moneySourceB=new h.S;playtimeSinceLastAug=0;playtimeSinceLastBitnode=0;lastAugReset=-1;lastNodeReset=-1;purchasedServers=[];scriptProdSinceLastAug=0;sleeves=[];sleevesFromCovenant=0;sourceFiles=new p.X;exploits=[];achievements=[];terminalCommandHistory=[];lastUpdate=0;lastSave=0;totalPlaytime=0;currentWork=null;focus=!1;entropy=0;init=s.S1;startWork=c.VM;processWork=c.A7;finishWork=c.th;applyForSoftwareJob=s.nl;applyForSoftwareConsultantJob=s.jQ;applyForItJob=s.IM;applyForSecurityEngineerJob=s.fM;applyForNetworkEngineerJob=s.GP;applyForBusinessJob=s.$7;applyForBusinessConsultantJob=s.D_;applyForSecurityJob=s.uL;applyForAgentJob=s.vJ;applyForEmployeeJob=s.f0;applyForPartTimeEmployeeJob=s.Zg;applyForWaiterJob=s.xS;applyForPartTimeWaiterJob=s.Oo;applyForJob=s.HT;canAccessBladeburner=a.x;canAccessCorporation=o.Y;canAccessGang=i.tv;canAccessGrafting=s.$d;canAfford=s.kb;gainMoney=s.Zr;getCurrentServer=l.uW;getGangFaction=i.Oh;getGangName=i.zI;getHomeComputer=l.bm;getNextCompanyPosition=s.ER;getUpgradeHomeRamCost=l.Pv;getUpgradeHomeCoresCost=l.nd;gotoLocation=s.D;hasGangWith=i.Gq;hasTorRouter=l.ZS;hasProgram=s.e$;inGang=i.Mr;isAwareOfGang=i.xf;isQualified=s.a_;loseMoney=s.cG;reapplyAllAugmentations=s.j2;reapplyAllSourceFiles=s.Iu;recordMoneySource=s.AW;setMoney=s.FI;startBladeburner=a.W;startCorporation=o.O;startFocusing=s.OG;startGang=i.v4;takeDamage=s.FE;travel=s.Hm;giveExploit=s._h;giveAchievement=s.Ru;getCasinoWinnings=s.$0;quitJob=s.ln;hasJob=s.Um;createHacknetServer=l.Ml;queueAugmentation=s.Yn;receiveInvite=s.OM;gainCodingContractReward=s.b2;stopFocusing=s.K2;prestigeAugmentation=s.Ye;prestigeSourceFile=s.Wg;calculateSkillProgress=s.VI;hospitalize=s.VU;checkForFactionInvitations=s.Rp;setBitNodeNumber=s.CZ;canAccessCotMG=s.vW;sourceFileLvl=s.$G;applyEntropy=r.x;focusPenalty=s.te;constructor(){super(),this.identifier=(0,g.d4)("I-"+(new Date).getTime()+navigator.userAgent+window.innerWidth+window.innerHeight+(0,y.X)(100,999))}whoAmI(){return"Player"}toJSON(){return(0,d.L3)("PlayerObject",this)}static fromJSON(e){var t,n;const r=(0,d.Id)(w,e.data);r.hp={current:(null===(t=r.hp)||void 0===t?void 0:t.current)??10,max:(null===(n=r.hp)||void 0===n?void 0:n.max)??10},r.money??(r.money=0),r.augmentations=r.augmentations.filter((e=>(0,k.R)("AugmentationName",e.name))),r.queuedAugmentations=r.queuedAugmentations.filter((e=>(0,k.R)("AugmentationName",e.name))),r.updateSkillLevels(),Array.isArray(r.sourceFiles)&&(r.sourceFiles=new p.X(r.sourceFiles.map((e=>{let{n:t,lvl:n}=e;return[t,n]}))));for(const[e,t]of Object.entries(r.jobs))(0,k.R)("CompanyName",e)&&(0,k.R)("JobName",t)||delete r.jobs[e];return r}}(0,u.Sl)(new w),d.gY.PlayerObject=w},23466:(e,t,n)=>{"use strict";n.d(t,{x:()=>a});var r=n(28562);function a(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.reapplyAllAugmentations(),this.reapplyAllSourceFiles(),this.mults=(0,r.k)(e)}},61952:(e,t,n)=>{"use strict";n.d(t,{W:()=>o,x:()=>a});var r=n(79267);function a(){return 6===this.bitNodeN||7===this.bitNodeN||this.sourceFileLvl(6)>0||this.sourceFileLvl(7)>0}function o(){this.bladeburner=new r.T}},2391:(e,t,n)=>{"use strict";n.d(t,{O:()=>s,Y:()=>i});var r=n(33244),a=n(32927),o=n(63303);function i(){return 3===this.bitNodeN||this.sourceFileLvl(3)>0}function s(e,t){this.corporation=new o.D({name:e,seedFunded:t}),(0,a.s8)(),3!==this.bitNodeN&&3!==this.sourceFileLvl(3)||(this.corporation.unlocks.add(r.CorpUnlockName.WarehouseAPI),this.corporation.unlocks.add(r.CorpUnlockName.OfficeAPI)),this.corporation.totalShares+=t?5e8:0}},21774:(e,t,n)=>{"use strict";n.d(t,{Gq:()=>m,Mr:()=>h,Oh:()=>c,tv:()=>s,v4:()=>f,xf:()=>l,zI:()=>u});var r=n(58427),a=n(61512),o=n(87811),i=n(16632);function s(){return 2===this.bitNodeN||!(this.sourceFileLvl(2)<=0)&&this.karma<=o.m.GangKarmaRequirement}function l(){return 2===this.bitNodeN||this.sourceFileLvl(2)>=1}function c(){const e=this.gang;if(null===e)throw new Error("Cannot get gang faction because player is not in a gang.");const t=r.i[e.facName];if(null==t)throw new Error(`Gang has invalid faction name: ${e.facName}`);return t}function u(){const e=this.gang;return e?e.facName:""}function m(e){const t=this.gang;return!!t&&t.facName===e}function f(e,t){(0,i.D)(this.currentWork)&&this.currentWork.factionName===e&&this.finishWork(!1),this.gang=new a.v(e,t);const n=r.i[e];if(null==n)throw new Error(`Invalid faction name when creating gang: ${e}`);n.playerReputation=0}function h(){return Boolean(this.gang)}},24528:(e,t,n)=>{"use strict";n.d(t,{$0:()=>Me,$7:()=>se,$G:()=>Te,$d:()=>Ce,AW:()=>q,CZ:()=>ve,D:()=>Se,D_:()=>le,ER:()=>Q,FE:()=>Y,FI:()=>H,GP:()=>ie,HT:()=>X,Hm:()=>Ee,IM:()=>ae,Iu:()=>ye,K2:()=>V,OG:()=>z,OM:()=>G,Oo:()=>de,Rp:()=>be,Ru:()=>Ne,S1:()=>O,Um:()=>te,VI:()=>J,VU:()=>K,Wg:()=>Z,Ye:()=>D,Yn:()=>ke,Zg:()=>fe,Zr:()=>U,_h:()=>xe,a_:()=>pe,b2:()=>we,cG:()=>j,e$:()=>W,f0:()=>me,fM:()=>oe,j2:()=>ge,jQ:()=>re,kb:()=>$,ln:()=>ee,nl:()=>ne,te:()=>Le,uL:()=>ce,vJ:()=>ue,vW:()=>Ae,xS:()=>he});var r=n(33244),a=n(27889),o=n(15571),i=n(97740),s=n(62725),l=n(62586),c=n(40465),u=n(6332),m=n(11124),f=n(72938),h=n(58427),d=n(59471),p=n(75669),g=n(81881),y=n(80307),b=n(9666),v=n(22738),k=n(97467),w=n(89916),E=n(2517),S=n(40425),C=n(29618),x=n(69704),N=n(16264),M=n(2228),A=n(3853),T=n(22115),L=n(57499),R=n(39463),F=n(32369),_=n(30518),I=n(75522),P=n(16014),B=n(50862);function O(){const e=(0,E.iw)({adminRights:!0,hostname:"home",ip:(0,k.hG)(),isConnectedTo:!0,maxRam:8,organizationName:"Home PC",purchasedByPlayer:!0});this.currentServer=S.r.Home,(0,k.jG)(e),this.getHomeComputer().programs.push(r.CompletedProgramName.nuke)}function D(){this.currentServer=S.r.Home,this.numPeopleKilled=0,this.skills.hacking=1,this.skills.strength=1,this.skills.defense=1,this.skills.dexterity=1,this.skills.agility=1,this.skills.charisma=1,this.exp.hacking=0,this.exp.strength=0,this.exp.defense=0,this.exp.dexterity=0,this.exp.agility=0,this.exp.charisma=0,this.money=1e3+f.t.Donations,this.city=r.CityName.Sector12,this.location=r.LocationName.TravelAgency,this.jobs={},this.purchasedServers=[],this.factions=[],this.factionInvitations=[],this.queuedAugmentations=[];const e=Math.min(3,this.sourceFileLvl(10)+(10===this.bitNodeN?1:0))+this.sleevesFromCovenant;this.sleeves.length>e&&(this.sleeves.length=e);for(let t=this.sleeves.length;te.shock<=0?e.synchronize():e.shockRecovery())),this.lastUpdate=(new Date).getTime(),this.playtimeSinceLastAug=0,this.lastAugReset=this.lastUpdate,this.scriptProdSinceLastAug=0,this.moneySourceA.reset(),this.hacknetNodes.length=0,this.hashManager.prestige(),this.reapplyAllAugmentations(!0),this.hp.current=this.hp.max,this.finishWork(!0)}function Z(){if(this.entropy=0,this.prestigeAugmentation(),this.karma=0,this.sleeves.forEach((e=>e.prestige())),10===this.bitNodeN)for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1;return(0,v.VI)(e,t)}function W(e){return this.getHomeComputer().programs.includes(e)}function H(e){isNaN(e)?console.error("NaN passed into Player.setMoney()"):this.money=e}function U(e,t){isNaN(e)?console.error("NaN passed into Player.gainMoney()"):(this.money=this.money+e,this.recordMoneySource(e,t))}function j(e,t){isNaN(e)?console.error("NaN passed into Player.loseMoney()"):this.money===1/0&&e===1/0||(this.money=this.money-e,this.recordMoneySource(-1*e,t))}function $(e){return isNaN(e)?(console.error("NaN passed into Player.canAfford()"),!1):this.money>=e}function q(e,t){this.moneySourceA instanceof L.S||(console.warn("Player.moneySourceA was not properly initialized. Resetting"),this.moneySourceA=new L.S),this.moneySourceB instanceof L.S||(console.warn("Player.moneySourceB was not properly initialized. Resetting"),this.moneySourceB=new L.S),this.moneySourceA.record(e,t),this.moneySourceB.record(e,t)}function z(){this.focus=!0}function V(){this.focus=!1}function Y(e){return"number"!=typeof e?(console.warn(`Player.takeDamage() called without a numeric argument: ${e}`),!1):(this.hp.current-=e,this.hp.current<=0&&(this.hospitalize(),!0))}function K(){const e=(0,M.B)();return F.sC.emit(`You've been Hospitalized for ${(0,T.lb)(e)}`,r.ToastVariant.SUCCESS,2e3),this.loseMoney(e,"hospitalization"),this.hp.current=this.hp.max,e}function X(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=(0,B.m)("CompanyName").getMember(this.location);if(!n)return!1;const r=l.O[n];let a=e;if(!this.isQualified(r,a))return t||(0,R.X)("Unfortunately, you do not qualify for this position\n"+(0,u.c)(r,a)),!1;if(!r.hasPosition(a))return console.error(`Company ${r.name} does not have position ${a}. Player.applyToCompany() failed`),!1;let o=(0,c.v)(a);for(;o&&r.hasPosition(o)&&this.isQualified(r,o);)a=o,o=(0,c.v)(a);if(this.jobs[r.name]===a.name){if(!t){const e=(0,c.v)(a);if(null!=e&&r.hasPosition(e)){const t=(0,u.c)(r,e);(0,R.X)("Unfortunately, you do not qualify for a promotion\n"+t)}else(0,R.X)("You are already at the highest position for your field! No promotion available")}return!1}return this.jobs[r.name]=a.name,t||(0,R.X)(`Congratulations! You were offered a new job at ${r.name} for position ${a.name}!`),!0}function Q(e,t){const n=l.O[e.name];if(null==n||n.name!=e.name)return t;const r=this.jobs[e.name];if(!r)return t;const a=m.A[r];return a.isSoftwareJob()&&t.isSoftwareJob()||a.isITJob()&&t.isITJob()||a.isBusinessJob()&&t.isBusinessJob()||a.isSecurityEngineerJob()&&t.isSecurityEngineerJob()||a.isNetworkEngineerJob()&&t.isNetworkEngineerJob()||a.isSecurityJob()&&t.isSecurityJob()||a.isAgentJob()&&t.isAgentJob()||a.isSoftwareConsultantJob()&&t.isSoftwareConsultantJob()||a.isBusinessConsultantJob()&&t.isBusinessConsultantJob()||a.isPartTimeJob()&&t.isPartTimeJob()?(0,c.v)(a):t}function ee(e){(0,I.d)(this.currentWork)&&this.currentWork.companyName===e&&this.finishWork(!0);for(const t of this.sleeves)(0,b.i)(t.currentWork)&&t.currentWork.companyName===e&&(t.stopWork(),(0,R.X)(`You quit ${e} while one of your sleeves was working there. The sleeve is now idle.`));delete this.jobs[e]}function te(){return Boolean(Object.keys(this.jobs).length)}function ne(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[r.JobName.software0],e)}function re(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[r.JobName.softwareConsult0],e)}function ae(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[r.JobName.IT0],e)}function oe(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t];return this.isQualified(n,m.A[r.JobName.securityEng])?this.applyForJob(m.A[r.JobName.securityEng],e):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1)}function ie(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t];if(this.isQualified(n,m.A[r.JobName.networkEng0])){const t=m.A[r.JobName.networkEng0];return this.applyForJob(t,e)}return e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1}function se(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[r.JobName.business0],e)}function le(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[r.JobName.businessConsult0],e)}function ce(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[r.JobName.security0],e)}function ue(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t];if(this.isQualified(n,m.A[r.JobName.agent0])){const t=m.A[r.JobName.agent0];return this.applyForJob(t,e)}return e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1}function me(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t],a=r.JobName.employee;return!!n.hasPosition(a)&&(this.isQualified(n,m.A[a])?(this.jobs[n.name]=a,e||(0,R.X)("Congratulations, you are now employed at "+this.location),!0):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1))}function fe(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t],a=r.JobName.employeePT;return!!n.hasPosition(a)&&(this.isQualified(n,m.A[a])?(this.jobs[n.name]=a,e||(0,R.X)("Congratulations, you are now employed part-time at "+this.location),!0):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1))}function he(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t],a=r.JobName.waiter;return!!n.hasPosition(a)&&(this.isQualified(n,m.A[a])?(this.jobs[n.name]=a,e||(0,R.X)("Congratulations, you are now employed as a waiter at "+this.location),!0):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1))}function de(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t],a=r.JobName.waiterPT;return!!n.hasPosition(a)&&(this.isQualified(n,m.A[a])?(this.jobs[n.name]=a,e||(0,R.X)("Congratulations, you are now employed as a part-time waiter at "+this.location),!0):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1))}function pe(e,t){const n=e.jobStatReqOffset,r=t.requiredHacking>0?t.requiredHacking+n:0,a=t.requiredStrength>0?t.requiredStrength+n:0,o=t.requiredDefense>0?t.requiredDefense+n:0,i=t.requiredDexterity>0?t.requiredDexterity+n:0,s=t.requiredDexterity>0?t.requiredDexterity+n:0,l=t.requiredCharisma>0?t.requiredCharisma+n:0;return this.skills.hacking>=r&&this.skills.strength>=a&&this.skills.defense>=o&&this.skills.dexterity>=i&&this.skills.agility>=s&&this.skills.charisma>=l&&e.playerReputation>=t.requiredReputation}function ge(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e&&this.resetMultipliers();for(const e of this.augmentations)if(e.name!=r.AugmentationName.NeuroFluxGovernor)(0,a.kk)(e,!0);else for(let t=0;tt.specialName===e)),r=(0,k.WT)(t?t.hostname:"").backdoorInstalled?-1e5:0;return n.includes(e)&&function(e){return l.O[e].playerReputation}(e)>f.t.CorpFactionRepRequirement+r}const s=h.i[r.FactionName.Illuminati];!s.isBanned&&!s.isMember&&!s.alreadyInvited&&t>=30&&this.money>=15e10&&this.skills.hacking>=1500&&this.skills.strength>=1200&&this.skills.defense>=1200&&this.skills.dexterity>=1200&&this.skills.agility>=1200&&e.push(s);const c=h.i[r.FactionName.Daedalus];!c.isBanned&&!c.isMember&&!c.alreadyInvited&&t>=i.dQ.DaedalusAugsRequirement&&this.money>=1e11&&(this.skills.hacking>=2500||this.skills.strength>=1500&&this.skills.defense>=1500&&this.skills.dexterity>=1500&&this.skills.agility>=1500)&&e.push(c);const u=h.i[r.FactionName.TheCovenant];!u.isBanned&&!u.isMember&&!u.alreadyInvited&&t>=20&&this.money>=75e9&&this.skills.hacking>=850&&this.skills.strength>=850&&this.skills.defense>=850&&this.skills.dexterity>=850&&this.skills.agility>=850&&e.push(u);const m=h.i[r.FactionName.ECorp];m.isBanned||m.isMember||m.alreadyInvited||!o(r.CompanyName.ECorp)||e.push(m);const d=h.i[r.FactionName.MegaCorp];d.isBanned||d.isMember||d.alreadyInvited||!o(r.CompanyName.MegaCorp)||e.push(d);const p=h.i[r.FactionName.BachmanAssociates];p.isBanned||p.isMember||p.alreadyInvited||!o(r.CompanyName.BachmanAndAssociates)||e.push(p);const g=h.i[r.FactionName.BladeIndustries];g.isBanned||g.isMember||g.alreadyInvited||!o(r.CompanyName.BladeIndustries)||e.push(g);const y=h.i[r.FactionName.NWO];y.isBanned||y.isMember||y.alreadyInvited||!o(r.CompanyName.NWO)||e.push(y);const b=h.i[r.FactionName.ClarkeIncorporated];b.isBanned||b.isMember||b.alreadyInvited||!o(r.CompanyName.ClarkeIncorporated)||e.push(b);const v=h.i[r.FactionName.OmniTekIncorporated];v.isBanned||v.isMember||v.alreadyInvited||!o(r.CompanyName.OmniTekIncorporated)||e.push(v);const E=h.i[r.FactionName.FourSigma];E.isBanned||E.isMember||E.alreadyInvited||!o(r.CompanyName.FourSigma)||e.push(E);const C=h.i[r.FactionName.KuaiGongInternational];C.isBanned||C.isMember||C.alreadyInvited||!o(r.CompanyName.KuaiGongInternational)||e.push(C);const x=h.i[r.FactionName.FulcrumSecretTechnologies],N=(0,k.WT)(S.r.FulcrumSecretTechnologies);if(!(N instanceof w.x))throw new Error(`${r.FactionName.FulcrumSecretTechnologies} should be normal server`);null==N?console.error(`Could not find ${r.FactionName.FulcrumSecretTechnologies} Server`):x.isBanned||x.isMember||x.alreadyInvited||!N.backdoorInstalled||!o(r.CompanyName.FulcrumTechnologies)||e.push(x);const M=h.i[r.FactionName.BitRunners],T=(0,k.WT)(S.r.BitRunnersServer);if(!(T instanceof w.x))throw new Error(`${r.FactionName.BitRunners} should be normal server`);null==T?console.error(`Could not find ${r.FactionName.BitRunners} Server`):M.isBanned||M.isMember||!T.backdoorInstalled||M.alreadyInvited||e.push(M);const L=h.i[r.FactionName.TheBlackHand],R=(0,k.WT)(S.r.TheBlackHandServer);if(!(R instanceof w.x))throw new Error(`${r.FactionName.TheBlackHand} should be normal server`);null==R?console.error(`Could not find ${r.FactionName.TheBlackHand} Server`):L.isBanned||L.isMember||!R.backdoorInstalled||L.alreadyInvited||e.push(L);const F=h.i[r.FactionName.NiteSec],_=(0,k.WT)(S.r.NiteSecServer);if(!(_ instanceof w.x))throw new Error(`${r.FactionName.NiteSec} should be normal server`);null==_?console.error(`Could not find ${r.FactionName.NiteSec} Server`):F.isBanned||F.isMember||!_.backdoorInstalled||F.alreadyInvited||e.push(F);const I=h.i[r.FactionName.Chongqing];!I.isBanned&&!I.isMember&&!I.alreadyInvited&&this.money>=2e7&&this.city==r.CityName.Chongqing&&e.push(I);const B=h.i[r.FactionName.Sector12];!B.isBanned&&!B.isMember&&!B.alreadyInvited&&this.money>=15e6&&this.city==r.CityName.Sector12&&e.push(B);const O=h.i[r.FactionName.NewTokyo];!O.isBanned&&!O.isMember&&!O.alreadyInvited&&this.money>=2e7&&this.city==r.CityName.NewTokyo&&e.push(O);const D=h.i[r.FactionName.Aevum];!D.isBanned&&!D.isMember&&!D.alreadyInvited&&this.money>=4e7&&this.city==r.CityName.Aevum&&e.push(D);const Z=h.i[r.FactionName.Ishima];!Z.isBanned&&!Z.isMember&&!Z.alreadyInvited&&this.money>=3e7&&this.city==r.CityName.Ishima&&e.push(Z);const G=h.i[r.FactionName.Volhaven];!G.isBanned&&!G.isMember&&!G.alreadyInvited&&this.money>=5e7&&this.city==r.CityName.Volhaven&&e.push(G);const J=h.i[r.FactionName.SpeakersForTheDead];!J.isBanned&&!J.isMember&&!J.alreadyInvited&&this.skills.hacking>=100&&this.skills.strength>=300&&this.skills.defense>=300&&this.skills.dexterity>=300&&this.skills.agility>=300&&this.numPeopleKilled>=30&&this.karma<=-45&&!n.includes(r.LocationName.Sector12CIA)&&!n.includes(r.LocationName.Sector12NSA)&&e.push(J);const W=h.i[r.FactionName.TheDarkArmy];!W.isBanned&&!W.isMember&&!W.alreadyInvited&&this.skills.hacking>=300&&this.skills.strength>=300&&this.skills.defense>=300&&this.skills.dexterity>=300&&this.skills.agility>=300&&this.city==r.CityName.Chongqing&&this.numPeopleKilled>=5&&this.karma<=-45&&!n.includes(r.LocationName.Sector12CIA)&&!n.includes(r.LocationName.Sector12NSA)&&e.push(W);const H=h.i[r.FactionName.TheSyndicate];!H.isBanned&&!H.isMember&&!H.alreadyInvited&&this.skills.hacking>=200&&this.skills.strength>=200&&this.skills.defense>=200&&this.skills.dexterity>=200&&this.skills.agility>=200&&(this.city==r.CityName.Aevum||this.city==r.CityName.Sector12)&&this.money>=1e7&&this.karma<=-90&&!n.includes(r.LocationName.Sector12CIA)&&!n.includes(r.LocationName.Sector12NSA)&&e.push(H);const U=h.i[r.FactionName.Silhouette];!U.isBanned&&!U.isMember&&!U.alreadyInvited&&(a.includes(r.JobName.software7)||a.includes(r.JobName.business4)||a.includes(r.JobName.business5))&&this.money>=15e6&&this.karma<=-22&&e.push(U);const j=h.i[r.FactionName.Tetrads];!j.isBanned&&!j.isMember&&!j.alreadyInvited&&(this.city==r.CityName.Chongqing||this.city==r.CityName.NewTokyo||this.city==r.CityName.Ishima)&&this.skills.strength>=75&&this.skills.defense>=75&&this.skills.dexterity>=75&&this.skills.agility>=75&&this.karma<=-18&&e.push(j);const $=h.i[r.FactionName.SlumSnakes];!$.isBanned&&!$.isMember&&!$.alreadyInvited&&this.skills.strength>=30&&this.skills.defense>=30&&this.skills.dexterity>=30&&this.skills.agility>=30&&this.karma<=-9&&this.money>=1e6&&e.push($);const q=h.i[r.FactionName.Netburners];let z=0,V=0,Y=0;for(let e=0;e=80&&z>=8&&V>=4&&Y>=100&&e.push(q);const K=h.i[r.FactionName.TianDiHui];!K.isBanned&&!K.isMember&&!K.alreadyInvited&&this.money>=1e6&&this.skills.hacking>=50&&(this.city==r.CityName.Chongqing||this.city==r.CityName.NewTokyo||this.city==r.CityName.Ishima)&&e.push(K);const X=h.i[r.FactionName.CyberSec],Q=(0,k.WT)(S.r.CyberSecServer);if(!(Q instanceof w.x))throw new Error(`${r.FactionName.CyberSec} should be normal server`);return null==Q?console.error(`Could not find ${r.FactionName.CyberSec} Server`):X.isBanned||X.isMember||!Q.backdoorInstalled||X.alreadyInvited||e.push(X),e}function ve(e){this.bitNodeN=e}function ke(e){for(const t of this.queuedAugmentations)if(t.name==e)return void console.warn(`tried to queue ${e} twice, this may be a bug`);for(const t of this.augmentations)if(t.name==e)return void console.warn(`tried to queue ${e} twice, this may be a bug`);this.queuedAugmentations.push(new o.e(e))}function we(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!e)return"No reward for this contract";switch(e.type){case s.$O.FactionReputation:{if(!h.i[e.name])return this.gainCodingContractReward({type:s.$O.FactionReputationAll});const n=f.t.CodingContractBaseFactionRepGain*t;return h.i[e.name].playerReputation+=n,`Gained ${n} faction reputation for ${e.name}`}case s.$O.FactionReputationAll:{const e=f.t.CodingContractBaseFactionRepGain*t,n=[r.FactionName.Bladeburners,r.FactionName.ShadowsOfAnarchy,r.FactionName.ChurchOfTheMachineGod],a=this.factions.slice().filter((e=>!n.includes(e)));if(0==a.length)return this.gainCodingContractReward({type:s.$O.Money},t);const o=Math.floor(e/a.length);for(const e of a)h.i[e]&&(h.i[e].playerReputation+=o);return`Gained ${o} reputation for each of the following factions: ${a.join(", ")}`}case s.$O.CompanyReputation:{if(!(0,B.R)("CompanyName",e.name))return this.gainCodingContractReward({type:s.$O.FactionReputationAll});const n=f.t.CodingContractBaseCompanyRepGain*t;return l.O[e.name].playerReputation+=n,`Gained ${n} company reputation for ${e.name}`}case s.$O.Money:default:{const e=f.t.CodingContractBaseMoneyGain*t*i.dQ.CodingContractMoney;return this.gainMoney(e,"codingcontract"),`Gained ${(0,T.lb)(e)}`}}}function Ee(e){return null==p.S[e]?(console.warn(`Player.travel() called with invalid city: ${e}`),!1):(this.city=e,!0)}function Se(e){return null==g.t[e]?(console.warn(`Player.gotoLocation() called with invalid location: ${e}`),!1):(this.location=e,!0)}function Ce(){return 10===this.bitNodeN||this.sourceFileLvl(10)>0}function xe(e){this.exploits.includes(e)||(this.exploits.push(e),F.sC.emit("SF -1 acquired!",r.ToastVariant.SUCCESS,2e3))}function Ne(e){const t=_.E[e];t&&(this.achievements.map((e=>e.ID)).includes(e)||(this.achievements.push({ID:e,unlockedOn:(new Date).getTime()}),F.sC.emit(`Unlocked Achievement: "${t.Name}"`,r.ToastVariant.SUCCESS,2e3)))}function Me(){return this.moneySourceA.casino}function Ae(){return 13===this.bitNodeN||this.sourceFileLvl(13)>0}function Te(e){return this.sourceFiles.get(e)??0}function Le(){let e=1;return this.hasAugmentation(r.AugmentationName.NeuroreceptorManager,!0)||(e=this.focus?1:f.t.BaseFocusBonus),e}},6089:(e,t,n)=>{"use strict";n.d(t,{Ml:()=>p,Pv:()=>h,ZS:()=>u,bm:()=>f,nd:()=>d,uW:()=>m});var r=n(72938),a=n(97740),o=n(89916),i=n(3853),s=n(97467),l=n(40425),c=n(29538);function u(){return this.getHomeComputer().serversOnNetwork.includes(l.r.DarkWeb)}function m(){const e=(0,s.WT)(this.currentServer);if(null===e)throw new Error(`somehow connected to a server that does not exist. ${this.currentServer}`);return e}function f(){const e=(0,s.WT)("home");if(e instanceof o.x)return e;throw new Error("home computer was not a normal server")}function h(){const e=this.getHomeComputer().maxRam,t=Math.log2(e),n=Math.pow(1.58,t);return e*r.t.BaseCostFor1GBOfRamHome*n*a.dQ.HomeComputerRamCost}function d(){return 1e9*Math.pow(7.5,this.getHomeComputer().cpuCores)}function p(){const e=this.hacknetNodes.length,t=(0,c.kw)()?`hacknet-server-${e}`:`hacknet-node-${e}`,n=new i.u({adminRights:!0,hostname:t,ip:(0,s.hG)()});return this.hacknetNodes.push(n.hostname),(0,s.jG)(n),this.getHomeComputer().serversOnNetwork.push(n.hostname),n.serversOnNetwork.push(l.r.Home),n}},4601:(e,t,n)=>{"use strict";function r(e){null!==this.currentWork&&this.currentWork.finish(!0),this.currentWork=e}function a(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;if(null===this.currentWork)return;const t=this.currentWork.process(e);t&&this.finishWork(!1)}function o(e){null!==this.currentWork&&(this.currentWork.finish(e),this.currentWork=null,this.focus=!1)}n.d(t,{A7:()=>a,VM:()=>r,th:()=>o})},80307:(e,t,n)=>{"use strict";n.d(t,{J:()=>S});var r=n(49173),a=n(27435),o=n(18992),i=n(72938),s=n(33244),l=n(58427),c=n(94515),u=n(22115),m=n(58014),f=n(64392),h=n(1560),d=n(73328),p=n(9666),g=n(72885),y=n(69293),b=n(57566),v=n(45892),k=n(77440),w=n(46085),E=n(50862);class S extends a.F{currentWork=null;memory=1;shock=100;storedCycles=0;sync=1;constructor(){super(),this.shockRecovery()}applyAugmentation=k.k;findPurchasableAugs=k.p;shockBonus(){return(100-this.shock)/100}syncBonus(){return this.sync/100}startWork(e){this.currentWork&&this.currentWork.finish(),this.currentWork=e}stopWork(){this.currentWork&&this.currentWork.finish(),this.currentWork=null}commitCrime(e){return this.startWork(new v.w(e)),!0}getMemoryUpgradeCost(e){const t=Math.round(e);if(t<0)return 0;if(this.memory+t>100)return this.getMemoryUpgradeCost(100-this.memory);let n=0,r=this.memory-1;for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:1;const t=1e3/i.t.MilliPerCycle;if(this.storedCycles+=e,this.storedCycles=1?"100%":`${(0,u.T3)(a[0])} - ${(0,u.T3)(a[1])}`}takeDamage(e){return"number"!=typeof e?(console.warn(`Player.takeDamage() called without a numeric argument: ${e}`),!1):(this.hp.current-=e,this.hp.current<=0&&(this.shock=Math.min(100,this.shock+.5),this.hp.current=this.hp.max,!0))}whoAmI(){return"Sleeve"}toJSON(){return(0,c.L3)("Sleeve",this)}static fromJSON(e){var t,n;const r=(0,c.Id)(S,e.data);return null!==(t=r.hp)&&void 0!==t&&t.current&&null!==(n=r.hp)&&void 0!==n&&n.max||(r.hp={current:10,max:10}),r.augmentations=r.augmentations.filter((e=>(0,E.m)("AugmentationName").isMember(e.name))),r.queuedAugmentations=r.queuedAugmentations.filter((e=>(0,E.m)("AugmentationName").isMember(e.name))),r}}c.gY.Sleeve=S},65396:(e,t,n)=>{"use strict";n.d(t,{A:()=>a,J:()=>r});const r=5,a=1e13},77440:(e,t,n)=>{"use strict";n.d(t,{k:()=>u,p:()=>m});var r=n(49173),a=n(33244),o=n(73440),i=n(58427),s=n(62850),l=n(94542),c=n(27889);function u(e){this.mults=(0,s.VA)(this.mults,e.mults)}function m(){const e=this.augmentations.map((e=>e.name)),t=[];function n(n){if(e.includes(n.name))return!1;if(t.includes(n))return!1;if(n.isSpecial)return!1;const r=["hacking","strength","defense","dexterity","agility","charisma","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","company_rep","faction_rep","crime_money","crime_success","work_money"];for(const e of r)if(1!==n.mults[e])return!0;return!1}if(r.J5.gang){const e=r.J5.getGangFaction(),a=(0,l.qW)(e);for(const r of a){const a=o.x[r];n(a)&&e.playerReputation>(0,c.hV)(a).repCost&&t.push(a)}}for(const e of r.J5.factions){if(e===a.FactionName.Bladeburners)continue;if(e===a.FactionName.Netburners)continue;const r=i.i[e];if(r)for(const e of r.augmentations){const a=o.x[e];n(a)&&r.playerReputation>(0,c.hV)(a).repCost&&t.push(a)}}if(!e.includes(a.AugmentationName.ZOE)&&r.J5.factions.includes(a.FactionName.ChurchOfTheMachineGod)){const e=o.x[a.AugmentationName.ZOE];t.push(e)}return t}},57566:(e,t,n)=>{"use strict";n.d(t,{N:()=>c,l:()=>u});var r=n(49173),a=n(94515),o=n(94402),i=n(72938),s=n(53977),l=n(15485);const c=e=>null!==e&&e.type===o.qG.BLADEBURNER;class u extends o.z${type=o.qG.BLADEBURNER;cyclesWorked=0;constructor(e){super(),this.actionType=(null==e?void 0:e.type)??"General",this.actionName=(null==e?void 0:e.name)??"Field Analysis"}cyclesNeeded(e){var t;const n=null===(t=r.J5.bladeburner)||void 0===t?void 0:t.getActionTimeNetscriptFn(e,this.actionType,this.actionName);if(!n||"string"==typeof n)throw new Error(`Error querying ${this.actionName} time`);return n/i.t.MilliPerCycle}process(e,t){if(!r.J5.bladeburner)return e.stopWork();this.cyclesWorked+=t;const n=r.J5.bladeburner.getActionIdFromTypeAndName(this.actionType,this.actionName);if(!n)throw new Error(`Error getting ${this.actionName} action`);if("Contracts"===this.actionType){const t=r.J5.bladeburner.getActionObject(n);if(!t)throw new Error(`Error getting ${this.actionName} action object`);if(t.count<=0)return e.stopWork()}for(;this.cyclesWorked>this.cyclesNeeded(e);){if("Contracts"===this.actionType){const t=r.J5.bladeburner.getActionObject(n);if(!t)throw new Error(`Error getting ${this.actionName} action object`);if(t.count<=0)return e.stopWork()}const t=r.J5.bladeburner.completeAction(e,n,!1);if("General"===this.actionType){var a;const t=null===(a=s.H[this.actionName])||void 0===a?void 0:a.exp;if(!t)throw new Error(`Somehow there was no exp for action ${this.actionType} ${this.actionName}`);(0,o.sd)(e,(0,l.U9)(t,e.shockBonus(),!1))}"Contracts"===this.actionType&&(0,o.sd)(e,(0,l.U9)(t,e.shockBonus(),!1)),this.cyclesWorked-=this.cyclesNeeded(e)}}APICopy(e){return{type:o.qG.BLADEBURNER,actionType:this.actionType,actionName:this.actionName,cyclesWorked:this.cyclesWorked,cyclesNeeded:this.cyclesNeeded(e)}}toJSON(){return(0,a.L3)("SleeveBladeburnerWork",this)}static fromJSON(e){return(0,a.Id)(u,e.data)}}a.gY.SleeveBladeburnerWork=u},58014:(e,t,n)=>{"use strict";n.d(t,{C:()=>f,E:()=>m});var r=n(33244),a=n(94515),o=n(94402),i=n(94337),s=n(97093),l=n(15485),c=n(81881),u=n(50862);const m=e=>null!==e&&e.type===o.qG.CLASS;class f extends o.z${type=o.qG.CLASS;constructor(e){super(),this.classType=(null==e?void 0:e.classType)??r.UniversityClassType.computerScience,this.location=(null==e?void 0:e.location)??r.LocationName.Sector12RothmanUniversity}calculateRates(e){return(0,l.U9)((0,s.w4)(e,this.classType,this.location),e.shockBonus(),!1)}isGym(){return(0,u.R)("GymType",this.classType)}process(e,t){const n=this.calculateRates(e);(0,o.sd)(e,n,t)}APICopy(){return{type:o.qG.CLASS,classType:this.classType,location:this.location}}toJSON(){return(0,a.L3)("SleeveClassWork",this)}static fromJSON(e){return e.data.classType in i.PZ||(e.data.classType="Computer Science"),e.data.location in c.t||(e.data.location=r.LocationName.Sector12RothmanUniversity),(0,a.Id)(f,e.data)}}a.gY.SleeveClassWork=f},9666:(e,t,n)=>{"use strict";n.d(t,{K:()=>p,i:()=>d});var r=n(49173),a=n(33244),o=n(94515),i=n(94402),s=n(62586),l=n(97093),c=n(15485),u=n(62734),m=n(11124),f=n(50862),h=n(82141);const d=e=>null!==e&&e.type===i.qG.COMPANY;class p extends i.z${type=i.qG.COMPANY;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.CompanyName.NoodleBar;super(),this.companyName=e}getCompany(){return s.O[this.companyName]}getGainRates(e,t){const n=this.getCompany();return(0,c.U9)((0,l.zP)(e,n,m.A[t],n.favor),e.shockBonus(),!1)}process(e,t){const n=this.getCompany(),a=r.J5.jobs[this.companyName];if(!a)return e.stopWork();const o=this.getGainRates(e,a);(0,i.sd)(e,o,t),n.playerReputation+=o.reputation*t,(0,u.gz)(n,o.reputation,t)}APICopy(){return{type:i.qG.COMPANY,companyName:this.companyName}}toJSON(){return(0,o.L3)("SleeveCompanyWork",this)}static fromJSON(e){const t=(0,o.Id)(p,e.data);return(0,f.R)("CompanyName",t.companyName)?t:(0,h.v)()}}o.gY.SleeveCompanyWork=p},45892:(e,t,n)=>{"use strict";n.d(t,{h:()=>f,w:()=>h});var r=n(49173),a=n(94515),o=n(94402),i=n(33244),s=n(35333),l=n(15485),c=n(72938),u=n(97093),m=n(35100);const f=e=>null!==e&&e.type===o.qG.CRIME;class h extends o.z${type=o.qG.CRIME;cyclesWorked=0;constructor(e){super(),this.crimeType=e??i.CrimeType.shoplift}getCrime(){return s.W[this.crimeType]}getExp(e){return(0,l.U9)((0,u.jI)(e,this.getCrime()),e.shockBonus(),!1)}cyclesNeeded(){return this.getCrime().time/c.t.MilliPerCycle}process(e,t){if(this.cyclesWorked+=t,this.cyclesWorked{"use strict";n.d(t,{_:()=>f,n:()=>m});var r=n(49173),a=n(94515),o=n(94402),i=n(33244),s=n(58427),l=n(97093),c=n(15485),u=n(50862);const m=e=>null!==e&&e.type===o.qG.FACTION;class f extends o.z${type=o.qG.FACTION;constructor(e){super(),this.factionWorkType=(null==e?void 0:e.factionWorkType)??i.FactionWorkType.hacking,this.factionName=(null==e?void 0:e.factionName)??i.FactionName.Sector12}getExpRates(e){return(0,c.U9)((0,l.r0)(e,this.factionWorkType),e.shockBonus(),!1)}getReputationRate(e){return(0,l.EV)(e,this.factionWorkType,this.getFaction().favor)*e.shockBonus()}getFaction(){const e=s.i[this.factionName];if(!e)throw new Error(`Faction work started with invalid / unknown faction: '${this.factionName}'`);return e}process(e,t){var n;if(this.factionName===(null===(n=r.J5.gang)||void 0===n?void 0:n.facName))return e.stopWork();const a=this.getExpRates(e);(0,o.sd)(e,a,t);const i=this.getReputationRate(e);this.getFaction().playerReputation+=i*t}APICopy(){return{type:o.qG.FACTION,factionWorkType:this.factionWorkType,factionName:this.factionName}}toJSON(){return(0,a.L3)("SleeveFactionWork",this)}static fromJSON(e){const t=(0,a.Id)(f,e.data);return t.factionWorkType=(0,u.m)("FactionWorkType").fuzzyGetMember(t.factionWorkType,!0),t.factionName=(0,u.m)("FactionName").fuzzyGetMember(t.factionName,!0),t}}a.gY.SleeveFactionWork=f},72885:(e,t,n)=>{"use strict";n.d(t,{$:()=>s,T:()=>l});var r=n(49173),a=n(94515),o=n(94402);const i=6e4/n(72938).t.MilliPerCycle,s=e=>null!==e&&e.type===o.qG.INFILTRATE;class l extends o.z${type=o.qG.INFILTRATE;cyclesWorked=0;cyclesNeeded(){return i}process(e,t){if(!r.J5.bladeburner)return e.stopWork();this.cyclesWorked+=t,this.cyclesWorked>this.cyclesNeeded()&&(this.cyclesWorked-=this.cyclesNeeded(),r.J5.bladeburner.infiltrateSynthoidCommunities())}APICopy(){return{type:o.qG.INFILTRATE,cyclesWorked:this.cyclesWorked,cyclesNeeded:this.cyclesNeeded()}}toJSON(){return(0,a.L3)("SleeveInfiltrateWork",this)}static fromJSON(e){return(0,a.Id)(l,e.data)}}a.gY.SleeveInfiltrateWork=l},1560:(e,t,n)=>{"use strict";n.d(t,{F:()=>i});var r=n(94515),a=n(94402),o=n(46085);class i extends a.z${type=a.qG.RECOVERY;process(e,t){e.shock=Math.max(0,e.shock-2e-4*(0,o.f)(e.skills.intelligence,.75)*t),e.shock<=0&&e.stopWork()}APICopy(){return{type:a.qG.RECOVERY}}toJSON(){return(0,r.L3)("SleeveRecoveryWork",this)}static fromJSON(e){return(0,r.Id)(i,e.data)}}r.gY.SleeveRecoveryWork=i},69293:(e,t,n)=>{"use strict";n.d(t,{D:()=>s,O:()=>i});var r=n(49173),a=n(94515),o=n(94402);const i=e=>null!==e&&e.type===o.qG.SUPPORT;class s extends o.z${type=o.qG.SUPPORT;constructor(){var e;super(),null===(e=r.J5.bladeburner)||void 0===e||e.sleeveSupport(!0)}process(){}finish(){var e;null===(e=r.J5.bladeburner)||void 0===e||e.sleeveSupport(!1)}APICopy(){return{type:o.qG.SUPPORT}}toJSON(){return(0,a.L3)("SleeveSupportWork",this)}static fromJSON(e){return(0,a.Id)(s,e.data)}}a.gY.SleeveSupportWork=s},64392:(e,t,n)=>{"use strict";n.d(t,{j:()=>s});var r=n(49173),a=n(94515),o=n(94402),i=n(46085);class s extends o.z${type=o.qG.SYNCHRO;process(e,t){e.sync=Math.min(100,e.sync+2e-4*(0,i.f)(r.J5.skills.intelligence,.5)*t),e.sync>=100&&e.stopWork()}APICopy(){return{type:o.qG.SYNCHRO}}toJSON(){return(0,a.L3)("SleeveSynchroWork",this)}static fromJSON(e){return(0,a.Id)(s,e.data)}}a.gY.SleeveSynchroWork=s},94402:(e,t,n)=>{"use strict";n.d(t,{qG:()=>s,sd:()=>o,z$:()=>i});var r=n(49173),a=n(15485);const o=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;(0,a.ki)(e,t,n),r.J5.gainMoney(t.money*n,"sleeves");const o=e.syncBonus();(0,a.ki)(r.J5,t,n*o),r.J5.sleeves.forEach((r=>r!==e&&(0,a.ki)(r,t,n*o*r.shockBonus())))};class i{finish(){}}let s;!function(e){e.COMPANY="COMPANY",e.FACTION="FACTION",e.CRIME="CRIME",e.CLASS="CLASS",e.RECOVERY="RECOVERY",e.SYNCHRO="SYNCHRO",e.BLADEBURNER="BLADEBURNER",e.INFILTRATE="INFILTRATE",e.SUPPORT="SUPPORT"}(s||(s={}))},40810:(e,t,n)=>{"use strict";n.d(t,{r:()=>p});var r=n(67294),a=n(84777),o=n(80307),i=n(65396),s=n(72360),l=n(48672),c=n(49173),u=n(39463),m=n(81138),f=n(56798),h=n(33244),d=n(88775);function p(e){const t=(0,d.S)();function n(){return Math.pow(10,c.J5.sleevesFromCovenant)*i.A}let p=!1;c.J5.canAfford(n())||(p=!0),c.J5.sleevesFromCovenant>=i.J&&(p=!0);const g=[];for(let e=0;e=i.J||(c.J5.canAfford(n())?(c.J5.loseMoney(n(),"sleeves"),c.J5.sleevesFromCovenant+=1,c.J5.sleeves.push(new o.J),t()):(0,u.X)("You cannot afford to purchase a Duplicate Sleeve"))}},"Purchase - ",r.createElement(s.W,{money:n(),forPurchase:!0}))),r.createElement("br",null),r.createElement("br",null),r.createElement(m.Z,null,"You can also purchase upgrades for your Sleeves. These upgrades are also permanent."),g))}},84777:(e,t,n)=>{"use strict";n.d(t,{Y:()=>f});var r=n(67294),a=n(49173),o=n(22115),i=n(72360),s=n(81138),l=n(66351),c=n(56798),u=n(30120),m=n(28881);function f(e){const[t,n]=(0,r.useState)(1);function f(){if(isNaN(t))return 1/0;const n=100-e.sleeve.memory;return t>n?1/0:e.sleeve.getMemoryUpgradeCost(t)}const h=f(),d=!a.J5.canAfford(h);let p=r.createElement(r.Fragment,null);return p=isNaN(t)?r.createElement(r.Fragment,null,"Invalid value"):r.createElement(r.Fragment,null,"Purchase ",t," memory - ",r.createElement(i.W,{money:h,forPurchase:!0})),r.createElement(m.Z,{sx:{my:1,p:1}},r.createElement(s.Z,{variant:"h6",color:"primary"},"Upgrade Memory of Sleeve ",e.index),r.createElement(s.Z,null,"Purchase a memory upgrade for your sleeve. Note that a sleeve's max memory is 100 (current:"," ",(0,o.Kq)(e.sleeve.memory),")"),r.createElement(u.Z,{display:"flex",flexDirection:"row",alignItems:"center"},r.createElement(s.Z,null,"Amount of memory to purchase (must be an integer): "),r.createElement(l.Z,{onChange:function(t){let r=parseInt(t.target.value);isNaN(r)&&(r=1),r<1&&(r=1);const a=100-e.sleeve.memory;r>a&&(r=a),n(r)},type:"number",value:t})),r.createElement("br",null),r.createElement(c.Z,{disabled:d,onClick:function(){const n=f();a.J5.canAfford(n)&&(e.sleeve.upgradeMemory(t),a.J5.loseMoney(n,"sleeves"),e.rerender())}},p))}},56010:(e,t,n)=>{"use strict";n.d(t,{J:()=>s});var r=n(67294),a=n(48672),o=n(81138),i=n(33244);function s(e){let{open:t,onClose:n}=e;return r.createElement(a.u,{open:t,onClose:n},r.createElement(r.Fragment,null,r.createElement(o.Z,{variant:"h4"},"How do Duplicate Sleeves work?"),r.createElement("br",null),r.createElement(o.Z,null,"Duplicate Sleeves are essentially clones. You can use them to perform any work type action, such as working for a company/faction or committing a crime. Having sleeves perform these tasks earns you money, experience, and reputation."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,null,"Sleeves are their own individuals, which means they each have their own experience and stats."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,null,"When a sleeve earns experience, it earns experience for itself, the player's original 'consciousness', as well as all of the player's other sleeves."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,{variant:"h4"},"What is Synchronization (Sync)?"),r.createElement("br",null),r.createElement(o.Z,null,"Synchronization is a measure of how aligned your consciousness is with that of your Duplicate Sleeves. It is a numerical value between 1 and 100, and it affects how much experience is earned when the sleeve is performing a task."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,null,"Let N be the sleeve's synchronization. When the sleeve earns experience by performing a task, both the sleeve and the player's original host consciousness earn N% of the amount of experience normally earned by the task. All of the player's other sleeves earn ((N/100)^2 * 100)% of the experience."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,null,"Synchronization can be increased by assigning sleeves to the 'Synchronize' task."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,{variant:"h4"},"What is Shock?"),r.createElement("br",null),r.createElement(o.Z,null,"Sleeve shock is a measure of how much trauma the sleeve has due to being placed in a new body. It is a numerical value between 0 and 99, where 99 indicates full shock and 0 indicates no shock. Shock affects the amount of experience earned by the sleeve."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,null,"Sleeve shock slowly decreases over time. You can further increase the rate at which it decreases by assigning sleeves to the 'Shock Recovery' task."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,{variant:"h4"},"Why can't I work for this company or faction?"),r.createElement("br",null),r.createElement(o.Z,null,"Only one of your sleeves can work for a given company/faction a time. To clarify further, if you have two sleeves they can work for two different companies/factions, but they cannot both work for the same company/faction."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,{variant:"h4"},"How do I buy Augmentations for my Sleeves?"),r.createElement("br",null),r.createElement(o.Z,null,"Your Sleeve needs to have a Shock of 0 in order for you to buy Augmentations for it."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,{variant:"h4"},"Why can't I buy the X Augmentation for my sleeve?"),r.createElement("br",null),r.createElement(o.Z,null,"Certain Augmentations, like ",i.FactionName.Bladeburners,"-specific ones and NeuroFlux Governor, are not available for sleeves. You also need enough current reputation on some faction that offers that Augmentation."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,{variant:"h4"},"Do sleeves get reset when installing Augmentations or switching BitNodes?"),r.createElement("br",null),r.createElement(o.Z,null,"Sleeves are reset when switching BitNodes, but not when installing Augmentations. However installing Augmentations on a sleeve does reset their stats."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,{variant:"h4"},"What is Memory?"),r.createElement("br",null),r.createElement(o.Z,null,"Sleeve memory dictates what a sleeve's synchronization will be when it's reset by switching BitNodes. For example, if a sleeve has a memory of 25, then when you switch BitNodes its synchronization will initially be set to 25, rather than 1."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,null,"Memory can only be increased by purchasing upgrades from ",i.FactionName.TheCovenant,". It is a persistent stat, meaning it never gets resets back to 1. The maximum possible value for a sleeve's memory is 100.")))}},91467:(e,t,n)=>{"use strict";n.d(t,{h:()=>u});var r=n(22115),a=n(49802),o=n(72938),i=n(81138),s=n(97534),l=n(48672),c=n(67294);function u(e){return c.createElement(l.u,{open:e.open,onClose:e.onClose},c.createElement(s.C,{rows:[[c.createElement(c.Fragment,null,"Hacking: "),e.sleeve.skills.hacking,c.createElement(c.Fragment,null," (",(0,r.Mf)(e.sleeve.exp.hacking)," exp)")],[c.createElement(c.Fragment,null,"Strength: "),e.sleeve.skills.strength,c.createElement(c.Fragment,null," (",(0,r.Mf)(e.sleeve.exp.strength)," exp)")],[c.createElement(c.Fragment,null,"Defense: "),e.sleeve.skills.defense,c.createElement(c.Fragment,null," (",(0,r.Mf)(e.sleeve.exp.defense)," exp)")],[c.createElement(c.Fragment,null,"Dexterity: "),e.sleeve.skills.dexterity,c.createElement(c.Fragment,null," (",(0,r.Mf)(e.sleeve.exp.dexterity)," exp)")],[c.createElement(c.Fragment,null,"Agility: "),e.sleeve.skills.agility,c.createElement(c.Fragment,null," (",(0,r.Mf)(e.sleeve.exp.agility)," exp)")],[c.createElement(c.Fragment,null,"Charisma: "),e.sleeve.skills.charisma,c.createElement(c.Fragment,null," (",(0,r.Mf)(e.sleeve.exp.charisma)," exp)")]],title:"Stats:"}),c.createElement("br",null),c.createElement(s.C,{rows:[[c.createElement(c.Fragment,null,"Hacking Level multiplier: "),(0,r.T3)(e.sleeve.mults.hacking)],[c.createElement(c.Fragment,null,"Hacking Experience multiplier: "),(0,r.T3)(e.sleeve.mults.hacking_exp)],[c.createElement(c.Fragment,null,"Strength Level multiplier: "),(0,r.T3)(e.sleeve.mults.strength)],[c.createElement(c.Fragment,null,"Strength Experience multiplier: "),(0,r.T3)(e.sleeve.mults.strength_exp)],[c.createElement(c.Fragment,null,"Defense Level multiplier: "),(0,r.T3)(e.sleeve.mults.defense)],[c.createElement(c.Fragment,null,"Defense Experience multiplier: "),(0,r.T3)(e.sleeve.mults.defense_exp)],[c.createElement(c.Fragment,null,"Dexterity Level multiplier: "),(0,r.T3)(e.sleeve.mults.dexterity)],[c.createElement(c.Fragment,null,"Dexterity Experience multiplier: "),(0,r.T3)(e.sleeve.mults.dexterity_exp)],[c.createElement(c.Fragment,null,"Agility Level multiplier: "),(0,r.T3)(e.sleeve.mults.agility)],[c.createElement(c.Fragment,null,"Agility Experience multiplier: "),(0,r.T3)(e.sleeve.mults.agility_exp)],[c.createElement(c.Fragment,null,"Charisma Level multiplier: "),(0,r.T3)(e.sleeve.mults.charisma)],[c.createElement(c.Fragment,null,"Charisma Experience multiplier: "),(0,r.T3)(e.sleeve.mults.charisma_exp)],[c.createElement(c.Fragment,null,"Faction Reputation Gain multiplier: "),(0,r.T3)(e.sleeve.mults.faction_rep)],[c.createElement(c.Fragment,null,"Company Reputation Gain multiplier: "),(0,r.T3)(e.sleeve.mults.company_rep)],[c.createElement(c.Fragment,null,"Salary multiplier: "),(0,r.T3)(e.sleeve.mults.work_money)],[c.createElement(c.Fragment,null,"Crime Money multiplier: "),(0,r.T3)(e.sleeve.mults.crime_money)],[c.createElement(c.Fragment,null,"Crime Success multiplier: "),(0,r.T3)(e.sleeve.mults.crime_success)]],title:"Multipliers:"}),e.sleeve.storedCycles>10&&c.createElement(i.Z,{sx:{py:2}},"Bonus Time: ",(0,a.UF)(e.sleeve.storedCycles*o.t.MilliPerCycle)))}},74210:(e,t,n)=>{"use strict";n.d(t,{m:()=>m});var r=n(78016),a=n(28881),o=n(81138),i=n(67294),s=n(75012),l=n(49173),c=n(48672),u=n(88775);function m(e){const t=(0,u.S)(150),n=e.sleeve.augmentations.map((e=>e.name)),m=e.sleeve.findPurchasableAugs();return i.createElement(c.u,{open:e.open,onClose:e.onClose},i.createElement(r.Z,{component:a.Z,disableGutters:!0,maxWidth:"lg",sx:{mx:0,mb:1,p:1}},i.createElement(o.Z,null,"You can purchase Augmentations for your Duplicate Sleeves. These Augmentations have the same effect as they would for you. You can only purchase Augmentations that you have unlocked through Factions.",i.createElement("br",null),i.createElement("br",null),"When purchasing an Augmentation for a Duplicate Sleeve, they are immediately installed. This means that the Duplicate Sleeve will immediately lose all of its stat experience.",i.createElement("br",null),i.createElement("br",null),"Augmentations will appear below as they become available.")),i.createElement(s.b,{augNames:m.map((e=>e.name)),ownedAugNames:n,canPurchase:e=>l.J5.money>e.baseCost,purchaseAugmentation:n=>{e.sleeve.tryBuyAugmentation(n),t()},rerender:t,sleeveAugs:!0}))}},39246:(e,t,n)=>{"use strict";n.d(t,{Q:()=>E});var r=n(28881),a=n(30120),o=n(56798),i=n(17575),s=n(81138),l=n(67294),c=n(33244),u=n(72938),m=n(49173),f=n(22115),h=n(3197),d=n(91467),p=n(74210),g=n(35283),y=n(97441),b=n(97714),v=n(35100),k=n(94402),w=n(50862);function E(e){const[t,n]=(0,l.useState)(!1),[E,S]=(0,l.useState)(!1),[C,x]=(0,l.useState)(!1),[N,M]=(0,l.useState)(["------","------","------"]);let A=0,T=l.createElement(l.Fragment,null);const L=e.sleeve.currentWork;if(L)switch(L.type){case k.qG.BLADEBURNER:case k.qG.CRIME:case k.qG.INFILTRATE:A=L.cyclesWorked/L.cyclesNeeded(e.sleeve),T=l.createElement(h.k,{variant:"determinate",value:100*A,color:"primary"})}const R=function(e,t){const n=e.currentWork;if(!n)return"This sleeve is currently idle.";switch(n.type){case k.qG.COMPANY:return`This sleeve is currently working your job at ${n.companyName}`;case k.qG.SUPPORT:return"This sleeve is currently supporting you in your bladeburner activities.";case k.qG.CLASS:return`This sleeve is currently ${n.isGym()?"working out":"studying"} at ${n.location}`;case k.qG.RECOVERY:return"This sleeve is currently set to focus on shock recovery. This causes the Sleeve's shock to decrease at a faster rate.";case k.qG.SYNCHRO:return"This sleeve is currently set to synchronize with the original consciousness. This causes the Sleeve's synchronization to increase.";case k.qG.BLADEBURNER:return`This sleeve is currently attempting to perform ${n.actionName}.\n\nProgress: ${(0,f.T3)(t)}`;case k.qG.CRIME:{const r=n.getCrime();return`This sleeve is currently attempting ${r.workName} (Success Rate: ${(0,f.T3)(r.successRate(e))}).\n\nProgress: ${(0,f.T3)(t)}`}case k.qG.FACTION:return`This sleeve is currently doing ${{[c.FactionWorkType.field]:"Field Work",[c.FactionWorkType.hacking]:"Hacking Contracts",[c.FactionWorkType.security]:"Security Work"}[n.factionWorkType]??"nothing"} for ${n.factionName}.`;case k.qG.INFILTRATE:return`This sleeve is currently attempting to infiltrate synthoid communities to generate additional contracts and operations.\nThis activity is less efficient the more sleeves are assigned to it.\n\nProgress: ${(0,f.T3)(t)}`}}(e.sleeve,A);return l.createElement(l.Fragment,null,l.createElement(r.Z,{sx:{p:1,display:"grid",gridTemplateColumns:"1fr 1fr",width:"auto",gap:1}},l.createElement("span",null,l.createElement(g.V,{sleeve:e.sleeve}),l.createElement(a.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr",width:"100%"}},l.createElement(o.Z,{onClick:()=>n(!0)},"More Stats"),l.createElement(i.Z,{title:m.J5.moneyS(!0),disabled:m.J5.money0?l.createElement(s.Z,null,"Unlocked when sleeve has fully recovered"):""},l.createElement("span",null,l.createElement(o.Z,{onClick:()=>x(!0),disabled:e.sleeve.shock>0,sx:{width:"100%",height:"100%"}},"Manage Augmentations"))))),l.createElement("span",null,l.createElement(g.Y,{sleeve:e.sleeve}),l.createElement(y.o,{sleeve:e.sleeve,setABC:M}),l.createElement(o.Z,{onClick:function(){var t;switch(N[0]){case"------":break;case"Work for Company":(0,w.m)("CompanyName").isMember(N[1])?e.sleeve.workForCompany(N[1]):console.error(`Invalid company name in setSleeveTask: ${N[1]}`);break;case"Work for Faction":(0,w.m)("FactionName").isMember(N[1])?e.sleeve.workForFaction(N[1],N[2]):console.error(`Invalid faction name in setSleeveTask: ${N[1]}`);break;case"Commit Crime":e.sleeve.commitCrime((null===(t=(0,v.K)(N[1]))||void 0===t?void 0:t.type)??c.CrimeType.shoplift);break;case"Take University Course":e.sleeve.takeUniversityCourse(N[2],N[1]);break;case"Workout at Gym":e.sleeve.workoutAtGym(N[2],N[1]);break;case"Perform Bladeburner Actions":e.sleeve.bladeburner(N[1],N[2]);break;case"Shock Recovery":e.sleeve.shockRecovery();break;case"Synchronize":e.sleeve.synchronize();break;default:console.error(`Invalid/Unrecognized taskValue in setSleeveTask(): ${N[0]}`)}e.rerender()},sx:{width:"100%"}},"Set Task"),l.createElement(s.Z,{whiteSpace:"pre-wrap"},R),T)),l.createElement(d.h,{open:t,onClose:()=>n(!1),sleeve:e.sleeve}),l.createElement(b.i,{open:E,onClose:()=>S(!1),sleeve:e.sleeve,rerender:e.rerender}),l.createElement(p.m,{open:C,onClose:()=>x(!1),sleeve:e.sleeve}))}},45693:(e,t,n)=>{"use strict";n.d(t,{X:()=>f});var r=n(67294),a=n(78016),o=n(81138),i=n(56798),s=n(30120),l=n(49173),c=n(39246),u=n(56010),m=n(88775);function f(){const[e,t]=(0,r.useState)(!1),n=(0,m.S)(200);return r.createElement(r.Fragment,null,r.createElement(a.Z,{disableGutters:!0,maxWidth:"md",sx:{mx:0}},r.createElement(o.Z,{variant:"h4"},"Sleeves"),r.createElement(o.Z,null,"Duplicate Sleeves are MK-V Synthoids (synthetic androids) into which your consciousness has been copied. In other words, these Synthoids contain a perfect duplicate of your mind.",r.createElement("br",null),r.createElement("br",null),"Sleeves can be used to perform different tasks simultaneously.",r.createElement("br",null),r.createElement("br",null))),r.createElement(i.Z,{onClick:()=>t(!0)},"FAQ"),r.createElement(s.Z,{display:"grid",sx:{gridTemplateColumns:"repeat(2, 1fr)",mt:1}},l.J5.sleeves.map(((e,t)=>r.createElement(c.Q,{key:t,rerender:n,sleeve:e})))),r.createElement(u.J,{open:e,onClose:()=>t(!1)}))}},35283:(e,t,n)=>{"use strict";n.d(t,{V:()=>S,Y:()=>C});var r=n(67294),a=n(47542),o=n(46948),i=n(49557),s=n(7272),l=n(81138),c=n(49173),u=n(72938),m=n(22115),f=n(51087),h=n(21927),d=n(43480),p=n(72360),g=n(85882),y=n(74192),b=n(58014),v=n(73328),k=n(9666),w=n(45892);const E=1e3/u.t.MilliPerCycle;function S(e){const t=(0,d.yK)();return r.createElement(a.Z,{sx:{display:"table",mb:1,width:"100%"}},r.createElement(o.Z,null,r.createElement(h.j,{name:"City",color:f.Z.theme.primary,data:{content:e.sleeve.city}}),r.createElement(h.j,{name:"HP",color:f.Z.theme.hp,data:{content:`${(0,m.nC)(e.sleeve.hp.current)} / ${(0,m.nC)(e.sleeve.hp.max)}`}}),r.createElement(h.j,{name:"Hacking",color:f.Z.theme.hack,data:{level:e.sleeve.skills.hacking,exp:e.sleeve.exp.hacking}}),r.createElement(h.j,{name:"Strength",color:f.Z.theme.combat,data:{level:e.sleeve.skills.strength,exp:e.sleeve.exp.strength}}),r.createElement(h.j,{name:"Defense",color:f.Z.theme.combat,data:{level:e.sleeve.skills.defense,exp:e.sleeve.exp.defense}}),r.createElement(h.j,{name:"Dexterity",color:f.Z.theme.combat,data:{level:e.sleeve.skills.dexterity,exp:e.sleeve.exp.dexterity}}),r.createElement(h.j,{name:"Agility",color:f.Z.theme.combat,data:{level:e.sleeve.skills.agility,exp:e.sleeve.exp.agility}}),r.createElement(h.j,{name:"Charisma",color:f.Z.theme.cha,data:{level:e.sleeve.skills.charisma,exp:e.sleeve.exp.charisma}}),r.createElement(i.Z,null,r.createElement(s.Z,{classes:{root:t.cellNone}},r.createElement("br",null))),r.createElement(h.j,{name:"Shock",color:f.Z.theme.primary,data:{content:(0,m.wu)(e.sleeve.shock)}}),r.createElement(h.j,{name:"Sync",color:f.Z.theme.primary,data:{content:(0,m.w5)(e.sleeve.sync)}}),r.createElement(h.j,{name:"Memory",color:f.Z.theme.primary,data:{content:(0,m.Kq)(e.sleeve.memory)}})))}function C(e){const t=(0,d.yK)();let n=[];if((0,w.h)(e.sleeve.currentWork)){const t=e.sleeve.currentWork.getExp(e.sleeve);n=[["Money:",r.createElement(p.W,{key:"money",money:t.money})],["Hacking Exp:",`${(0,m.Mf)(t.hackExp)}`],["Strength Exp:",`${(0,m.Mf)(t.strExp)}`],["Defense Exp:",`${(0,m.Mf)(t.defExp)}`],["Dexterity Exp:",`${(0,m.Mf)(t.dexExp)}`],["Agility Exp:",`${(0,m.Mf)(t.agiExp)}`],["Charisma Exp:",`${(0,m.Mf)(t.chaExp)}`]]}if((0,b.E)(e.sleeve.currentWork)){const t=e.sleeve.currentWork.calculateRates(e.sleeve);n=[["Money:",r.createElement(g.G,{key:"money-rate",money:E*t.money})],["Hacking Exp:",`${(0,m.Mf)(E*t.hackExp)} / sec`],["Strength Exp:",`${(0,m.Mf)(E*t.strExp)} / sec`],["Defense Exp:",`${(0,m.Mf)(E*t.defExp)} / sec`],["Dexterity Exp:",`${(0,m.Mf)(E*t.dexExp)} / sec`],["Agility Exp:",`${(0,m.Mf)(E*t.agiExp)} / sec`],["Charisma Exp:",`${(0,m.Mf)(E*t.chaExp)} / sec`]]}if((0,v.n)(e.sleeve.currentWork)){const t=e.sleeve.currentWork.getExpRates(e.sleeve),a=e.sleeve.currentWork.getReputationRate(e.sleeve);n=[["Hacking Exp:",`${(0,m.Mf)(E*t.hackExp)} / sec`],["Strength Exp:",`${(0,m.Mf)(E*t.strExp)} / sec`],["Defense Exp:",`${(0,m.Mf)(E*t.defExp)} / sec`],["Dexterity Exp:",`${(0,m.Mf)(E*t.dexExp)} / sec`],["Agility Exp:",`${(0,m.Mf)(E*t.agiExp)} / sec`],["Charisma Exp:",`${(0,m.Mf)(E*t.chaExp)} / sec`],["Reputation:",r.createElement(y.y,{key:"reputation-rate",reputation:E*a})]]}e:if((0,k.i)(e.sleeve.currentWork)){const t=c.J5.jobs[e.sleeve.currentWork.companyName];if(!t)break e;const a=e.sleeve.currentWork.getGainRates(e.sleeve,t);n=[["Money:",r.createElement(g.G,{key:"money-rate",money:E*a.money})],["Hacking Exp:",`${(0,m.Mf)(E*a.hackExp)} / sec`],["Strength Exp:",`${(0,m.Mf)(E*a.strExp)} / sec`],["Defense Exp:",`${(0,m.Mf)(E*a.defExp)} / sec`],["Dexterity Exp:",`${(0,m.Mf)(E*a.dexExp)} / sec`],["Agility Exp:",`${(0,m.Mf)(E*a.agiExp)} / sec`],["Charisma Exp:",`${(0,m.Mf)(E*a.chaExp)} / sec`],["Reputation:",r.createElement(y.y,{key:"reputation-rate",reputation:E*a.reputation})]]}return r.createElement(a.Z,{sx:{display:"table",mb:1,width:"100%",lineHeight:0}},r.createElement(o.Z,null,r.createElement(i.Z,null,r.createElement(s.Z,{classes:{root:t.cellNone}},r.createElement(l.Z,{variant:"h6"},"Earnings ",e.sleeve.storedCycles>50?"(overclock)":""))),n.map((e=>{let[n,a]=e;return r.createElement(i.Z,{key:n.toString()+a.toString()},r.createElement(s.Z,{classes:{root:t.cellNone}},r.createElement(l.Z,null,n)),r.createElement(s.Z,{align:"right",classes:{root:t.cellNone}},r.createElement(l.Z,null,a)))}))))}},97441:(e,t,n)=>{"use strict";n.d(t,{o:()=>E});var r=n(67294),a=n(49173),o=n(35333),i=n(33244),s=n(58427),l=n(26023),c=n(98649),u=n(73328),m=n(9666),f=n(57566),h=n(50862),d=n(94402);const p=["Computer Science","Data Structures","Networks","Algorithms","Management","Leadership"],g=["Train Strength","Train Defense","Train Dexterity","Train Agility"],y=["Field Analysis","Recruitment","Diplomacy","Hyperbolic Regeneration Chamber","Infiltrate Synthoids","Support main sleeve","Take on contracts"];function b(e){const t=[];for(const n of a.J5.sleeves)e!==n&&(0,m.i)(n.currentWork)&&t.push(n.currentWork.companyName);return Object.keys(a.J5.jobs).filter((e=>!t.includes(e)))}function v(e){const t=[i.FactionName.Bladeburners,i.FactionName.ShadowsOfAnarchy];a.J5.gang&&t.push(a.J5.gang.facName);for(const n of a.J5.sleeves)e!==n&&(0,u.n)(n.currentWork)&&t.push(n.currentWork.factionName);const n=[];for(const e of a.J5.factions)t.includes(e)||n.push(e);return n.filter((e=>{const t=s.i[e];if(!t)return!1;const n=t.getInfo();return n.offerHackingWork||n.offerFieldWork||n.offerSecurityWork}))}const k={"------":()=>({first:["------"],second:()=>["------"]}),"Work for Company":e=>{let t=b(e);return 0===t.length&&(t=["------"]),{first:t,second:()=>["------"]}},"Work for Faction":e=>{let t=v(e);return 0===t.length&&(t=["------"]),{first:t,second:e=>{if(!(0,h.m)("FactionName").isMember(e))return["------"];const t=s.i[e].getInfo(),n=[];return t.offerHackingWork&&n.push("Hacking Contracts"),t.offerFieldWork&&n.push("Field Work"),t.offerSecurityWork&&n.push("Security Work"),n}}},"Commit Crime":()=>({first:Object.keys(o.W),second:()=>["------"]}),"Take University Course":e=>{let t=[];switch(e.city){case i.CityName.Aevum:t=[i.LocationName.AevumSummitUniversity];break;case i.CityName.Sector12:t=[i.LocationName.Sector12RothmanUniversity];break;case i.CityName.Volhaven:t=[i.LocationName.VolhavenZBInstituteOfTechnology];break;default:t=["No university available in city!"]}return{first:p,second:()=>t}},"Workout at Gym":e=>{let t=[];switch(e.city){case i.CityName.Aevum:t=[i.LocationName.AevumCrushFitnessGym,i.LocationName.AevumSnapFitnessGym];break;case i.CityName.Sector12:t=[i.LocationName.Sector12IronGym,i.LocationName.Sector12PowerhouseGym];break;case i.CityName.Volhaven:t=[i.LocationName.VolhavenMilleniumFitnessGym];break;default:t=["No gym available in city!"]}return{first:g,second:()=>t}},"Perform Bladeburner Actions":e=>({first:y,second:t=>"Take on contracts"===t?function(e){const t=a.J5.bladeburner;if(null===t)return["------"];let n=t.getContractNamesNetscriptFn();for(const t of a.J5.sleeves)if(e!==t&&(0,f.N)(t.currentWork)&&"Contracts"===t.currentWork.actionType){const e=t.currentWork;n=n.filter((t=>t!=e.actionName))}return 0===n.length?["------"]:n}(e):["------"]}),"Shock Recovery":()=>({first:["------"],second:()=>["------"]}),Synchronize:()=>({first:["------"],second:()=>["------"]})},w={"------":()=>!0,"Work for Company":e=>b(e).length>0,"Work for Faction":e=>v(e).length>0,"Commit Crime":()=>!0,"Take University Course":e=>[i.CityName.Aevum,i.CityName.Sector12,i.CityName.Volhaven].includes(e.city),"Workout at Gym":e=>[i.CityName.Aevum,i.CityName.Sector12,i.CityName.Volhaven].includes(e.city),"Perform Bladeburner Actions":()=>!!a.J5.bladeburner,"Shock Recovery":e=>e.shock>0,Synchronize:e=>e.sync<100};function E(e){const t=function(e){const t=e.currentWork;if(null===t)return["------","------","------"];switch(t.type){case d.qG.COMPANY:return["Work for Company",t.companyName,"------"];case d.qG.FACTION:{const e={[i.FactionWorkType.field]:"Field Work",[i.FactionWorkType.hacking]:"Hacking Contracts",[i.FactionWorkType.security]:"Security Work"};return["Work for Faction",t.factionName,e[t.factionWorkType]??""]}case d.qG.BLADEBURNER:return"Contracts"===t.actionType?["Perform Bladeburner Actions","Take on contracts",t.actionName]:["Perform Bladeburner Actions",t.actionName,"------"];case d.qG.CLASS:return t.isGym()?["Workout at Gym",{[i.GymType.strength]:"Train Strength",[i.GymType.defense]:"Train Defense",[i.GymType.dexterity]:"Train Dexterity",[i.GymType.agility]:"Train Agility"}[t.classType],t.location]:["Take University Course",t.classType,t.location];case d.qG.CRIME:return["Commit Crime",(0,h.m)("CrimeType").fuzzyGetMember(t.crimeType,!0),"------"];case d.qG.SUPPORT:return["Perform Bladeburner Actions","Support main sleeve","------"];case d.qG.INFILTRATE:return["Perform Bladeburner Actions","Infiltrate Synthoids","------"];case d.qG.RECOVERY:return["Shock Recovery","------","------"];case d.qG.SYNCHRO:return["Synchronize","------","------"]}}(e.sleeve),[n,a]=(0,r.useState)(t[0]),[o,s]=(0,r.useState)(t[1]),[u,m]=(0,r.useState)(t[2]),f=Object.keys(w).filter((t=>w[t](e.sleeve))),p=k[n];if(void 0===p)throw new Error(`No function for task '${n}'`);const g=p(e.sleeve),y=g.second(o);return g.first.length>0&&!g.first.includes(o)&&(s(g.first[0]),e.setABC([n,g.first[0],u])),y.length>0&&!y.includes(u)&&(m(y[0]),e.setABC([n,o,y[0]])),r.createElement(r.Fragment,null,r.createElement(l.Z,{onChange:function(t){const r=t.target.value,o=k[r];if(void 0===o)throw new Error(`No function for task '${n}'`);const i=o(e.sleeve),l=i.second(i.first[0])??["------"];m(l[0]),s(i.first[0]),a(r),e.setABC([r,i.first[0],l[0]])},value:n,sx:{width:"100%"}},f.map((e=>r.createElement(c.Z,{key:e,value:e},e)))),!(1===g.first.length&&"------"===g.first[0])&&r.createElement(r.Fragment,null,r.createElement(l.Z,{onChange:function(t){s(t.target.value),e.setABC([n,t.target.value,u])},value:o,sx:{width:"100%"}},g.first.map((e=>r.createElement(c.Z,{key:e,value:e},e))))),!(1===y.length&&"------"===y[0])&&r.createElement(r.Fragment,null,r.createElement(l.Z,{onChange:function(t){m(t.target.value),e.setABC([n,o,t.target.value])},value:u,sx:{width:"100%"}},y.map((e=>r.createElement(c.Z,{key:e,value:e},e))))))}},97714:(e,t,n)=>{"use strict";n.d(t,{i:()=>d});var r=n(67294),a=n(81138),o=n(56798),i=n(49173),s=n(33244),l=n(72938),c=n(72360),u=n(86091),m=n(51087),f=n(39463),h=n(48672);function d(e){function t(t){i.J5.canAfford(l.t.TravelCost)||(0,f.X)("You cannot afford to have this sleeve travel to another city"),e.sleeve.city=t,i.J5.loseMoney(l.t.TravelCost,"sleeves"),e.sleeve.stopWork(),e.rerender(),e.onClose()}return r.createElement(h.u,{open:e.open,onClose:e.onClose},r.createElement(r.Fragment,null,r.createElement(a.Z,null,"Have this sleeve travel to a different city. This affects the gyms and universities at which this sleeve can study. Traveling to a different city costs ",r.createElement(c.W,{money:l.t.TravelCost,forPurchase:!0}),". It will also set your current sleeve task to idle."),m.Z.DisableASCIIArt?Object.values(s.CityName).map((e=>r.createElement(o.Z,{key:e,onClick:()=>t(e)},e))):r.createElement(u.b,{currentCity:e.sleeve.city,onTravel:e=>t(e)})))}},46085:(e,t,n)=>{"use strict";function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return 1+t*Math.pow(e,.8)/600}n.d(t,{f:()=>r})},509:(e,t,n)=>{"use strict";n.d(t,{He:()=>l,Zz:()=>c,_h:()=>u});var r=n(72938),a=n(97740),o=n(27178),i=n(46085);function s(e){let t=1+e/100;return isNaN(t)&&(t=1),t*a.dQ.FactionWorkRepGain}function l(e,t){return(e.skills.hacking+e.skills.intelligence/3)/r.t.MaxSkillLevel*e.mults.faction_rep*(0,i.f)(e.skills.intelligence,1)*s(t)*(0,o.J6)()}function c(e,t){return.9*(e.skills.strength+e.skills.defense+e.skills.dexterity+e.skills.agility+(e.skills.hacking+e.skills.intelligence)*(0,o.J6)())/r.t.MaxSkillLevel/4.5*e.mults.faction_rep*s(t)*(0,i.f)(e.skills.intelligence,1)}function u(e,t){return.9*(e.skills.strength+e.skills.defense+e.skills.dexterity+e.skills.agility+e.skills.charisma+(e.skills.hacking+e.skills.intelligence)*(0,o.J6)())/r.t.MaxSkillLevel/5.5*e.mults.faction_rep*s(t)*(0,i.f)(e.skills.intelligence,1)}},22738:(e,t,n)=>{"use strict";function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.max(Math.floor(t*(32*Math.log(e+534.6)-200)),1)}function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.exp((e/t+200)/32)-534.6}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=r(e,t),o=n+1;let i=a(n,t);i<0&&(i=0);let s=a(o,t);s<0&&(s=0);const l=e=>100*(e-i)/(s-i);let c=s-i!=0?l(e):99.99;c<0&&(c=0),c>100&&(c=100);let u=e-i,m=s-e;return u<0&&(u=0),m<0&&(m=0),{currentSkill:n,nextSkill:o,baseExperience:i,experience:e,nextExperience:s,currentExperience:u,remainingExperience:m,progress:c}}n.d(t,{DA:()=>a,VI:()=>o,gX:()=>r})},49173:(e,t,n)=>{"use strict";n.d(t,{J5:()=>o,Sl:()=>i,bX:()=>s});var r=n(52107),a=n(94515);let o;function i(e){o=e}function s(e){const t=JSON.parse(e,a.Ro);return t.money=parseFloat(t.money+""),t.exploits=(0,r.bx)(t.exploits),t}},72805:(e,t,n)=>{"use strict";n.d(t,{W:()=>T,Y:()=>A});var r=n(33244),a=n(99745),o=n(62586),i=n(32927),s=n(58427),l=n(94542),c=n(29538),u=n(7872),m=n(49173),f=n(71828),h=n(46570),d=n(97467),p=n(2517),g=n(40425),y=n(35102),b=n(65065),v=n(39463),k=n(78573),w=n(30286),E=n(1041),S=n(72938),C=n(85167),x=n(73440);const N=25e7;function M(e){setTimeout((()=>(0,v.X)(e)),200)}function A(){(0,a.j2)();const e=m.J5.factions.concat(m.J5.factionInvitations).filter((function(e){return s.i[e].getInfo().keep}));m.J5.prestigeAugmentation(),(0,u.Zh)();const t=m.J5.getHomeComputer();(0,d.a9)(),(0,d.jG)(t),(0,p.VQ)(t),m.J5.hasAugmentation(r.AugmentationName.Neurolink,!0)&&(t.programs.push(r.CompletedProgramName.ftpCrack),t.programs.push(r.CompletedProgramName.relaySmtp)),m.J5.hasAugmentation(r.AugmentationName.CashRoot,!0)&&(m.J5.setMoney(1e6),t.programs.push(r.CompletedProgramName.bruteSsh)),m.J5.hasAugmentation(r.AugmentationName.PCMatrix,!0)&&(t.programs.push(r.CompletedProgramName.deepScan1),t.programs.push(r.CompletedProgramName.autoLink)),(m.J5.sourceFileLvl(5)>0||5===m.J5.bitNodeN)&&t.programs.push(r.CompletedProgramName.formulas),(0,d.Bj)(m.J5.getHomeComputer());for(const e of Object.values(o.O))e.prestigeAugmentation();for(const e of Object.values(s.i))e.prestigeAugmentation();null!==b.o.action&&b.o.finishAction(!0),b.o.clear(),C.sx.emit(),(0,x.p)(),m.J5.factionInvitations=m.J5.factionInvitations.concat(e);for(const t of e)s.i[t].alreadyInvited=!0;m.J5.reapplyAllAugmentations(),m.J5.reapplyAllSourceFiles(),m.J5.hp.current=m.J5.hp.max,m.J5.applyEntropy(m.J5.entropy);const n=m.J5.gang;if(n){const e=s.i[n.facName];e&&(0,l.Bj)(e);const t=.95;for(const e of n.members)e.hack_asc_points*=t,e.str_asc_points*=t,e.def_asc_points*=t,e.dex_asc_points*=t,e.agi_asc_points*=t,e.cha_asc_points*=t}if(3===m.J5.bitNodeN&&t.messages.push(r.LiteratureName.CorporationManagementHandbook),m.J5.bladeburner&&m.J5.bladeburner.prestige(),8===m.J5.bitNodeN&&(m.J5.money=N),(8===m.J5.bitNodeN||m.J5.sourceFileLvl(8)>0)&&(m.J5.hasWseAccount=!0,m.J5.hasTixApiAccess=!0),m.J5.hasWseAccount&&(0,y.T_)(),m.J5.hasAugmentation(r.AugmentationName.TheRedPill,!0)){const e=(0,d.WT)(g.r.WorldDaemon),t=(0,d.WT)(g.r.DaedalusServer);e&&t&&(e.serversOnNetwork.push(t.hostname),t.serversOnNetwork.push(e.hostname))}m.J5.hasAugmentation(r.AugmentationName.StaneksGift1,!0)&&(0,l.Bj)(s.i[r.FactionName.ChurchOfTheMachineGod]),k.y$.prestigeAugmentation(),(0,h.i)(),w.Q.clear(),E.Y.clear()}function T(e){(0,a.j2)(),m.J5.prestigeSourceFile(),(0,u.Zh)();const t=m.J5.getHomeComputer();null!==b.o.action&&b.o.finishAction(!0),b.o.clear(),C.sx.emit(),(0,d.a9)(),(0,d.jG)(t),(0,p.VQ)(t);for(const e of t.scripts.values())e.ramUsage=null;(0,d.Bj)(m.J5.getHomeComputer()),m.J5.sourceFileLvl(9)>=2?t.setMaxRam(128):m.J5.sourceFileLvl(1)>0?t.setMaxRam(32):t.setMaxRam(8),t.cpuCores=1;for(const e of Object.values(o.O))e.prestigeSourceFile();for(const e of Object.values(s.i))e.prestigeSourceFile();if(null!==b.o.action&&b.o.finishAction(!0),m.J5.sourceFileLvl(12)>0&&m.J5.augmentations.push({name:r.AugmentationName.NeuroFluxGovernor,level:m.J5.sourceFileLvl(12)}),(0,x.p)(),m.J5.reapplyAllAugmentations(),m.J5.reapplyAllSourceFiles(),(m.J5.sourceFileLvl(5)>0||5===m.J5.bitNodeN)&&t.programs.push(r.CompletedProgramName.formulas),3===m.J5.bitNodeN&&(t.messages.push(r.LiteratureName.CorporationManagementHandbook),M("You received a copy of the Corporation Management Handbook on your home computer. Read it if you need help getting started with Corporations!")),6!==m.J5.bitNodeN&&7!==m.J5.bitNodeN||M("NSA would like to have a word with you once you're ready."),8===m.J5.bitNodeN&&(m.J5.money=N),(8===m.J5.bitNodeN||m.J5.sourceFileLvl(8)>0)&&(m.J5.hasWseAccount=!0,m.J5.hasTixApiAccess=!0),10===m.J5.bitNodeN&&M("Seek out The Covenant if you'd like to purchase a new sleeve or two! And see what VitaLife in New Tokyo has to offer for you"),12===m.J5.bitNodeN&&m.J5.sourceFileLvl(10)>100&&M("Saynt_Garmo is watching you"),13===m.J5.bitNodeN&&M(`Trouble is brewing in ${r.CityName.Chongqing}`),m.J5.hasWseAccount?(0,y.T_)():(0,y.wW)(),(0,i.s8)(),m.J5.sourceFileLvl(9)>=3||9===m.J5.bitNodeN){const e=m.J5.createHacknetServer();e.level=100,e.cores=10,e.cache=5,e.updateHashRate(m.J5.mults.hacknet_node_money),e.updateHashCapacity(),(0,c.TN)()}13===m.J5.bitNodeN&&(m.J5.money=S.t.TravelCost),k.y$.prestigeSourceFile(),0===m.J5.sourceFileLvl(5)||e||m.J5.gainIntelligenceExp(300),f.$.splice(0,f.$.length),(0,h.i)()}},45813:(e,t,n)=>{"use strict";let r;n.d(t,{V:()=>r}),function(e){e.nuke="NUKE.exe",e.bruteSsh="BruteSSH.exe",e.ftpCrack="FTPCrack.exe",e.relaySmtp="relaySMTP.exe",e.httpWorm="HTTPWorm.exe",e.sqlInject="SQLInject.exe",e.deepScan1="DeepscanV1.exe",e.deepScan2="DeepscanV2.exe",e.serverProfiler="ServerProfiler.exe",e.autoLink="AutoLink.exe",e.formulas="Formulas.exe",e.bitFlume="b1t_flum3.exe",e.flight="fl1ght.exe"}(r||(r={}))},67207:(e,t,n)=>{"use strict";n.d(t,{$:()=>a});var r=n(84555);class a{constructor(e){let{name:t,create:n,run:a}=e;this.name=(0,r.P1)(t),this.create=n,this.run=a}}},11397:(e,t,n)=>{"use strict";n.d(t,{c:()=>i});var r=n(49173),a=n(58073),o=n(21623);function i(){const e=[];for(const[t,n]of(0,o.m0)(a.B)){const a=n.create;null!=a&&(r.J5.hasProgram(t)||a.req()&&e.push(n))}return e}},58073:(e,t,n)=>{"use strict";n.d(t,{B:()=>g});var r=n(67207),a=n(72938),o=n(89916),i=n(65065),s=n(49173),l=n(49802),c=n(97467),u=n(22115),m=n(97740),f=n(37334),h=n(49708),d=n(33244);function p(e){return function(){return s.J5.skills.hacking+s.J5.skills.intelligence/2>=e}}const g={[d.CompletedProgramName.nuke]:new r.$({name:d.CompletedProgramName.nuke,create:{level:1,tooltip:"This virus is used to gain root access to a machine if enough ports are opened.",req:p(1),time:a.t.MillisecondsPerFiveMinutes},run:(e,t)=>{if(t instanceof o.x)return t.hasAdminRights?(i.o.print("You already have root access to this computer. There is no reason to run NUKE.exe"),void i.o.print("You can now run scripts on this server.")):t.openPortCount>=t.numOpenPortsRequired?(t.hasAdminRights=!0,i.o.print("NUKE successful! Gained root access to "+t.hostname),void i.o.print("You can now run scripts on this server.")):void i.o.print("NUKE unsuccessful. Not enough ports have been opened");i.o.error("Cannot nuke this kind of server.")}}),[d.CompletedProgramName.bruteSsh]:new r.$({name:d.CompletedProgramName.bruteSsh,create:{level:50,tooltip:"This program executes a brute force attack that opens SSH ports",req:p(50),time:2*a.t.MillisecondsPerFiveMinutes},run:(e,t)=>{t instanceof o.x?t.sshPortOpen?i.o.print("SSH Port (22) is already open!"):(t.sshPortOpen=!0,i.o.print("Opened SSH Port(22)!"),t.openPortCount++):i.o.error("Cannot run BruteSSH.exe on this kind of server.")}}),[d.CompletedProgramName.ftpCrack]:new r.$({name:d.CompletedProgramName.ftpCrack,create:{level:100,tooltip:"This program cracks open FTP ports",req:p(100),time:a.t.MillisecondsPerHalfHour},run:(e,t)=>{t instanceof o.x?t.ftpPortOpen?i.o.print("FTP Port (21) is already open!"):(t.ftpPortOpen=!0,i.o.print("Opened FTP Port (21)!"),t.openPortCount++):i.o.error("Cannot run FTPCrack.exe on this kind of server.")}}),[d.CompletedProgramName.relaySmtp]:new r.$({name:d.CompletedProgramName.relaySmtp,create:{level:250,tooltip:"This program opens SMTP ports by redirecting data",req:p(250),time:a.t.MillisecondsPer2Hours},run:(e,t)=>{t instanceof o.x?t.smtpPortOpen?i.o.print("SMTP Port (25) is already open!"):(t.smtpPortOpen=!0,i.o.print("Opened SMTP Port (25)!"),t.openPortCount++):i.o.error("Cannot run relaySMTP.exe on this kind of server.")}}),[d.CompletedProgramName.httpWorm]:new r.$({name:d.CompletedProgramName.httpWorm,create:{level:500,tooltip:"This virus opens up HTTP ports",req:p(500),time:a.t.MillisecondsPer4Hours},run:(e,t)=>{t instanceof o.x?t.httpPortOpen?i.o.print("HTTP Port (80) is already open!"):(t.httpPortOpen=!0,i.o.print("Opened HTTP Port (80)!"),t.openPortCount++):i.o.error("Cannot run HTTPWorm.exe on this kind of server.")}}),[d.CompletedProgramName.sqlInject]:new r.$({name:d.CompletedProgramName.sqlInject,create:{level:750,tooltip:"This virus opens SQL ports",req:p(750),time:a.t.MillisecondsPer8Hours},run:(e,t)=>{t instanceof o.x?t.sqlPortOpen?i.o.print("SQL Port (1433) is already open!"):(t.sqlPortOpen=!0,i.o.print("Opened SQL Port (1433)!"),t.openPortCount++):i.o.error("Cannot run SQLInject.exe on this kind of server.")}}),[d.CompletedProgramName.deepScan1]:new r.$({name:d.CompletedProgramName.deepScan1,create:{level:75,tooltip:"This program allows you to use the scan-analyze command with a depth up to 5",req:p(75),time:a.t.MillisecondsPerQuarterHour},run:()=>{i.o.print("This executable cannot be run."),i.o.print("DeepscanV1.exe lets you run 'scan-analyze' with a depth up to 5.")}}),[d.CompletedProgramName.deepScan2]:new r.$({name:d.CompletedProgramName.deepScan2,create:{level:400,tooltip:"This program allows you to use the scan-analyze command with a depth up to 10",req:p(400),time:a.t.MillisecondsPer2Hours},run:()=>{i.o.print("This executable cannot be run."),i.o.print("DeepscanV2.exe lets you run 'scan-analyze' with a depth up to 10.")}}),[d.CompletedProgramName.serverProfiler]:new r.$({name:d.CompletedProgramName.serverProfiler,create:{level:75,tooltip:"This program is used to display hacking and Netscript-related information about servers",req:p(75),time:a.t.MillisecondsPerHalfHour},run:e=>{if(1!==e.length)return void i.o.error("Must pass a server hostname or IP as an argument for ServerProfiler.exe");const t=(0,c.WT)(e[0]);null!=t?t instanceof o.x?(i.o.print(t.hostname+":"),i.o.print("Server base security level: "+t.baseDifficulty),i.o.print("Server current security level: "+t.hackDifficulty),i.o.print("Server growth rate: "+t.serverGrowth),i.o.print(`Netscript hack() execution time: ${(0,l.UF)(1e3*(0,h.sI)(t,s.J5),!0)}`),i.o.print(`Netscript grow() execution time: ${(0,l.UF)(1e3*(0,h.Md)(t,s.J5),!0)}`),i.o.print(`Netscript weaken() execution time: ${(0,l.UF)(1e3*(0,h.Vp)(t,s.J5),!0)}`)):i.o.error("ServerProfiler.exe can only be run on normal servers."):i.o.error("Invalid server IP/hostname")}}),[d.CompletedProgramName.autoLink]:new r.$({name:d.CompletedProgramName.autoLink,create:{level:25,tooltip:"This program allows you to directly connect to other servers through the 'scan-analyze' command",req:p(25),time:a.t.MillisecondsPerQuarterHour},run:()=>{i.o.print("This executable cannot be run."),i.o.print("AutoLink.exe lets you automatically connect to other servers when using 'scan-analyze'."),i.o.print("When using scan-analyze, click on a server's hostname to connect to it.")}}),[d.CompletedProgramName.formulas]:new r.$({name:d.CompletedProgramName.formulas,create:{level:1e3,tooltip:"This program allows you to use the formulas API",req:p(1e3),time:a.t.MillisecondsPer4Hours},run:()=>{i.o.print("This executable cannot be run."),i.o.print("Formulas.exe lets you use the formulas API.")}}),[d.CompletedProgramName.bitFlume]:new r.$({name:d.CompletedProgramName.bitFlume,create:{level:1,tooltip:"This program creates a portal to the BitNode Nexus (allows you to restart and switch BitNodes)",req:function(){return s.J5.sourceFiles.size>0&&s.J5.skills.hacking>=1},time:a.t.MillisecondsPerFiveMinutes/20},run:()=>{f.n.emit()}}),[d.CompletedProgramName.flight]:new r.$({name:d.CompletedProgramName.flight,create:null,run:()=>{const e=m.dQ.DaedalusAugsRequirement;if(!(s.J5.augmentations.length>=e&&s.J5.money>1e11&&s.J5.skills.hacking>=2500))return i.o.print(`Augmentations: ${s.J5.augmentations.length} / ${e}`),i.o.print(`Money: ${(0,u.lb)(s.J5.money)} / $100b`),void i.o.print(`Hacking skill: ${s.J5.skills.hacking} / 2500`);i.o.print("We will contact you."),i.o.print(`-- ${d.FactionName.Daedalus} --`)}})}},30286:(e,t,n)=>{"use strict";n.d(t,{Q:()=>w,d:()=>E});var r=n(67294),a=n(96486),o=n(78016),i=n(81138),s=n(30120),l=n(28881),c=n(56798),u=n(62026),m=n(21366),f=n(19620),h=n(49173),d=n(33244),p=n(52947),g=n(24815),y=n(51087),b=n(58073),v=n(95814),k=n(88775);const w=new Set;function E(){(0,k.S)(200);const e=[...Object.values(b.B)].filter((e=>{const t=e.create;return null!==t&&(e.name!==d.CompletedProgramName.bitFlume||t.req())})).sort(((e,t)=>{var n,r;return h.J5.hasProgram(e.name)?1:h.J5.hasProgram(t.name)?-1:((null===(n=e.create)||void 0===n?void 0:n.level)??0)-((null===(r=t.create)||void 0===r?void 0:r.level)??0)}));(0,r.useEffect)((()=>{e.forEach((e=>{w.add(e.name)}))}));const t=e=>Math.ceil(Math.max(e-(h.J5.skills.hacking+h.J5.skills.intelligence/2),0));return r.createElement(o.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0,mb:10}},r.createElement(i.Z,{variant:"h4"},"Create program"),r.createElement(i.Z,null,"This page displays any programs that you are able to create. Writing the code for a program takes time, which can vary based on how complex the program is. If you are working on creating a program you can cancel at any time. Your progress will be saved and you can continue later."),r.createElement(s.Z,{sx:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",my:1}},e.map((e=>{const n=e.create;if(null===n)return r.createElement(r.Fragment,null);const o=(e=>{const t=(0,a.find)(h.J5.getHomeComputer().programs,(t=>t.startsWith(e)&&t.endsWith("%-INC")));if(!t)return-1;const n=t.split("-");if(3!=n.length)return-1;const r=Number(n[1].slice(0,-1));return isNaN(r)||r<0||r>=100?-1:r})(e.name);return r.createElement(s.Z,{component:l.Z,sx:{p:1,opacity:h.J5.hasProgram(e.name)?.75:1},key:e.name},r.createElement(r.Fragment,null,r.createElement(i.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},h.J5.hasProgram(e.name)&&r.createElement(u.Z,{sx:{mr:1}})||n.req()&&r.createElement(m.Z,{sx:{mr:1}})||r.createElement(f.Z,{sx:{mr:1}}),e.name),!h.J5.hasProgram(e.name)&&n.req()&&((0,v.o)(h.J5.currentWork)&&h.J5.currentWork.programName===e.name?r.createElement(c.Z,{sx:{my:1,width:"100%"},onClick:e=>{e.isTrusted&&(h.J5.startFocusing(),p.F.toPage(g.T3.Work))}},"Resume focus"):r.createElement(c.Z,{sx:{my:1,width:"100%"},onClick:t=>{t.isTrusted&&((0,v.o)(h.J5.currentWork)&&h.J5.finishWork(!0),h.J5.startWork(new v.m({singularity:!1,programName:e.name})),h.J5.startFocusing(),p.F.toPage(g.T3.Work))}},"Create program")),h.J5.hasProgram(e.name)||0===t(n.level)||r.createElement(i.Z,{color:y.Z.theme.hack},r.createElement("b",null,"Unlocks in:")," ",t(n.level)," hacking levels"),-1!==o&&r.createElement(i.Z,{color:y.Z.theme.infolight},r.createElement("b",null,"Current completion:")," ",o,"%"),(0,v.o)(h.J5.currentWork)&&h.J5.currentWork.programName===e.name&&r.createElement(i.Z,{color:y.Z.theme.infolight},r.createElement("b",null,"Current completion:")," ",(100*h.J5.currentWork.unitCompleted/h.J5.currentWork.unitNeeded()).toFixed(2),"%"),r.createElement(i.Z,null,n.tooltip)))}))))}},98235:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(67294),a=n(49173),o=n(16264),i=n(39463),s=n(52947),l=n(24815),c=n(72805);function u(e,t,n){e?0===a.J5.sourceFileLvl(5)&&5!==n&&(a.J5.skills.intelligence=0,a.J5.exp.intelligence=0):function(e){const t="SourceFile"+e.toString(),n=o.J[t];if(!n)return void console.error(`Could not find source file for Bit node: ${e}`);let s=a.J5.sourceFileLvl(e);s>0?s>=3&&12!==e?(0,i.X)(`The Source-File for the BitNode you just destroyed, ${n.name}, is already at max level!`):(s++,a.J5.sourceFiles.set(e,s),(0,i.X)(`${n.name} was upgraded to level ${s} for destroying its corresponding BitNode!`)):(a.J5.sourceFiles.set(e,1),5===e&&0===a.J5.skills.intelligence&&(a.J5.skills.intelligence=1),(0,i.X)(r.createElement(r.Fragment,null,"You received a Source-File for destroying a BitNode!",r.createElement("br",null),r.createElement("br",null),n.name,r.createElement("br",null),r.createElement("br",null),n.info)))}(t),5===n&&0===a.J5.skills.intelligence&&(a.J5.skills.intelligence=1),a.J5.bitNodeN=n,6===n?s.F.toPage(l.T3.BladeburnerCinematic):s.F.toPage(l.T3.Terminal),(0,c.W)(e)}},72612:(e,t,n)=>{"use strict";n.d(t,{N1:()=>o,Ow:()=>i,ZE:()=>r,g$:()=>a});class r{jsonrpc="2.0";constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.method=e.method,this.result=e.result,this.params=e.params,this.error=e.error,this.id=e.id}}function a(e){const t=e;return"string"==typeof t.server&&"string"==typeof t.filename&&"string"==typeof t.content}function o(e){const t=e;return"string"==typeof t.server&&"string"==typeof t.filename}function i(e){return"string"==typeof e.server}},41375:(e,t,n)=>{"use strict";n.d(t,{b:()=>u});var r=n(64962),a=n(48897),o=n(69917),i=n(97467),s=n(72612),l=n(42923);function c(e,t){let{id:n}=t;return new s.ZE({error:e,id:n})}const u={pushFile:function(e){if(!(0,s.g$)(e.params))return c("Misses parameters",e);const t=e.params,n=(0,r.Iw)(t.filename);if(!n)return c("Invalid file path",e);const l=(0,i.WT)(t.server);return l?(0,a.e)(n)||(0,o.UH)(n)?(l.writeToContentFile(n,t.content),new s.ZE({result:"OK",id:e.id})):c("Invalid file extension",e):c("Server hostname invalid",e)},getFile:function(e){if(!(0,s.N1)(e.params))return c("Message misses parameters",e);const t=e.params,n=(0,r.Iw)(t.filename);if(!n)return c("Invalid file path",e);const l=(0,i.WT)(t.server);if(!l)return c("Server hostname invalid",e);if(!(0,a.e)(n)&&!(0,o.UH)(n))return c("Invalid file extension",e);const u=l.getContentFile(n);return u?new s.ZE({result:u.content,id:e.id}):c("File doesn't exist",e)},deleteFile:function(e){if(!(0,s.N1)(e.params))return c("Message misses parameters",e);const t=e.params,n=(0,r.Iw)(t.filename);if(!n)return c("Invalid filename",e);const a=(0,i.WT)(t.server);if(!a)return c("Server hostname invalid",e);const o=a.removeFile(n);return o.res?new s.ZE({result:"OK",id:e.id}):c(o.msg??"Failed",e)},getFileNames:function(e){if(!(0,s.Ow)(e.params))return c("Message misses parameters",e);const t=(0,i.WT)(e.params.server);if(!t)return c("Server hostname invalid",e);const n=[...t.textFiles.keys(),...t.scripts.keys()];return new s.ZE({result:n,id:e.id})},getAllFiles:function(e){if(!(0,s.Ow)(e.params))return c("Message misses parameters",e);const t=(0,i.WT)(e.params.server);if(!t)return c("Server hostname invalid",e);const n=[...t.scripts,...t.textFiles].map((e=>{let[t,n]=e;return{filename:t,content:n.content}}));return new s.ZE({result:n,id:e.id})},calculateRam:function(e){if(!(0,s.N1)(e.params))return c("Message misses parameters",e);const t=e.params,n=(0,r.Iw)(t.filename);if(!n)return c("Invalid filename",e);const a=(0,i.WT)(t.server);if(!a)return c("Server hostname invalid",e);if(!(0,o.UH)(n))return c("Filename isn't a script filename",e);const l=a.scripts.get(n);if(!l)return c("File doesn't exist",e);const u=l.getRamUsage(a.scripts);return u?new s.ZE({result:u,id:e.id}):c("Ram cost could not be calculated",e)},getDefinitionFile:function(e){return new s.ZE({result:l.Z+"",id:e.id})}}},10278:(e,t,n)=>{"use strict";n.d(t,{N:()=>s});var r=n(72612),a=n(41375),o=n(32369),i=n(33244);class s{static protocol="ws";constructor(e,t){this.ipaddr=e,this.port=t}stopConnection(){var e;null===(e=this.connection)||void 0===e||e.close()}startConnection(){const e=s.protocol+"://"+this.ipaddr+":"+this.port;this.connection=new WebSocket(e),this.connection.addEventListener("error",(t=>o.sC.emit(`Error with websocket ${e}, details: ${JSON.stringify(t)}`,i.ToastVariant.ERROR,5e3))),this.connection.addEventListener("message",l),this.connection.addEventListener("open",(()=>o.sC.emit(`Remote API connection established on ${this.ipaddr}:${this.port}`,i.ToastVariant.SUCCESS,2e3))),this.connection.addEventListener("close",(()=>o.sC.emit("Remote API connection closed",i.ToastVariant.WARNING,2e3)))}}function l(e){const t=JSON.parse(e.data);if(!t.method||!a.b[t.method]){const e=new r.ZE({error:"Unknown message received",id:t.id});return void this.send(JSON.stringify(e))}const n=a.b[t.method](t);n&&this.send(JSON.stringify(n))}},60468:(e,t,n)=>{"use strict";n.d(t,{j:()=>i,v:()=>s});var r=n(51087),a=n(10278);let o;function i(){o&&o.stopConnection(),0!==r.Z.RemoteFileApiPort&&(o=new a.N("localhost",r.Z.RemoteFileApiPort),o.startConnection())}function s(){return o&&null!=o.connection&&1==o.connection.readyState}},34716:(e,t,n)=>{"use strict";n.d(t,{Ex:()=>P,LR:()=>I,wc:()=>F});var r=n(69895),a=n(62586),o=n(72938),i=n(58427),s=n(59471),l=n(49173),c=n(97467),u=n(51087),m=n(35102),f=n(78573),h=n(32369),d=n(93936),p=n(39463),g=n(94515),y=n(22573),b=n(18476),v=n(33244),k=n(15571),w=n(10333),E=n(19652),S=n(4478),C=n(2517),x=n(40425),N=n(72739),M=n(65065),A=n(21623),T=n(33563);class L{PlayerSave="";AllServersSave="";CompaniesSave="";FactionsSave="";AliasesSave="";GlobalAliasesSave="";StockMarketSave="";SettingsSave="";VersionSave="";AllGangsSave="";LastExportBonus="0";StaneksGiftSave="";getSaveString(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.PlayerSave=JSON.stringify(l.J5);const t=u.Z.ExcludeRunningScriptsFromSave;return e&&(u.Z.ExcludeRunningScriptsFromSave=!0),this.AllServersSave=(0,c.oU)(),u.Z.ExcludeRunningScriptsFromSave=t,this.CompaniesSave=JSON.stringify(a.O),this.FactionsSave=JSON.stringify(i.i),this.AliasesSave=JSON.stringify(Object.fromEntries(r.$z.entries())),this.GlobalAliasesSave=JSON.stringify(Object.fromEntries(r.Ui.entries())),this.StockMarketSave=JSON.stringify(m.xO),this.SettingsSave=JSON.stringify(u.Z),this.VersionSave=JSON.stringify(o.t.VersionNumber),this.LastExportBonus=JSON.stringify(d.GO),this.StaneksGiftSave=JSON.stringify(f.y$),l.J5.gang&&(this.AllGangsSave=JSON.stringify(s.vS)),btoa(unescape(encodeURIComponent(JSON.stringify(this))))}saveGame(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const t=(new Date).getTime();l.J5.lastSave=t;const n=this.getSaveString();return new Promise(((r,a)=>{(0,y.a1)(n).then((()=>{const a={playerIdentifier:l.J5.identifier,fileName:this.getSaveFileName(),save:n,savedOn:t};return(0,w.cq)(a),e&&h.sC.emit("Game Saved!",v.ToastVariant.INFO,2e3),r()})).catch((e=>(console.error(e),a())))}))}getSaveFileName(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=Math.round(Date.now()/1e3),n=l.J5.bitNodeN;let r=`bitburnerSave_${t}_BN${n}x${l.J5.sourceFileLvl(n)+1}.json`;return e&&(r="RECOVERY"+r),r}exportGame(){const e=this.getSaveString();I(this.getSaveFileName(),e)}importGame(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!e||""===e)throw new Error("Invalid import string");return(0,y.a1)(e).then((()=>(t&&setTimeout((()=>location.reload()),1e3),Promise.resolve())))}getImportStringFromFile(e){if(null===e)return Promise.reject(new Error("No file selected"));const t=e[0];if(!t)return Promise.reject(new Error("Invalid file selected"));const n=new FileReader,r=new Promise(((e,t)=>{n.onload=function(n){const r=n.target;if(null===r)return t(new Error("Error importing file"));const a=r.result;if("string"!=typeof a)return t(new Error("FileReader event was not type string"));e(a)}}));return n.readAsText(t),r}async getImportDataFromString(e){var t,n,r;if(!e||""===e)throw new Error("Invalid import string");let a,o;try{a=window.atob(e),a=a.trim()}catch(e){console.error(e)}if(!a||""===a)return Promise.reject(new Error("Save game had not content or was not base64 encoded"));try{o=JSON.parse(a)}catch(e){console.error(e)}if(!o||"BitburnerSaveObject"!==o.ctor||!o.data)return Promise.reject(new Error("Save game did not seem valid"));const i={base64:e},s=(0,l.bX)(o.data.PlayerSave),c={identifier:s.identifier,lastSave:s.lastSave,totalPlaytime:s.totalPlaytime,money:s.money,skills:s.skills,augmentations:(null===(t=s.augmentations)||void 0===t?void 0:t.reduce(((e,t)=>e+t.level),0))??0,factions:(null===(n=s.factions)||void 0===n?void 0:n.length)??0,achievements:(null===(r=s.achievements)||void 0===r?void 0:r.length)??0,bitNode:s.bitNodeN,bitNodeLevel:s.sourceFileLvl(l.J5.bitNodeN)+1,sourceFiles:[...s.sourceFiles].reduce(((e,t)=>{let[n,r]=t;return e+r}),0)};return i.playerData=c,Promise.resolve(i)}toJSON(){return(0,g.L3)("BitburnerSaveObject",this)}static fromJSON(e){return(0,g.Id)(L,e.data)}}function R(e,t){for(const n of t)e=e.replace(n[0],n[1]);return e}function F(e){if(navigator.userAgent.includes("wv")&&navigator.userAgent.includes("Chrome/")&&setInterval((()=>{(0,p.X)("SCAM ALERT. This app is not official and you should uninstall it.")}),1e3),!e)return!1;e=decodeURIComponent(escape(atob(e)));const t=JSON.parse(e,g.Ro);if((0,l.Sl)((0,l.bX)(t.PlayerSave)),(0,c.mh)(t.AllServersSave),(0,a.U)(t.CompaniesSave),(0,i.m)(t.FactionsSave),Object.hasOwn(t,"StaneksGiftSave")?(0,f.n1)(t.StaneksGiftSave):(console.warn("Could not load Staneks Gift from save"),(0,f.n1)("")),Object.hasOwn(t,"AliasesSave"))try{(0,r.fW)(t.AliasesSave)}catch(e){console.warn("Could not load Aliases from save"),(0,r.fW)("")}else console.warn("Save file did not contain an Aliases property"),(0,r.fW)("");if(Object.hasOwn(t,"GlobalAliasesSave"))try{(0,r.Jm)(t.GlobalAliasesSave)}catch(e){console.warn("Could not load GlobalAliases from save"),(0,r.Jm)("")}else console.warn("Save file did not contain a GlobalAliases property"),(0,r.Jm)("");if(Object.hasOwn(t,"StockMarketSave"))try{(0,m.J9)(t.StockMarketSave)}catch(e){console.error("Couldn't load stock market:",e),(0,m.J9)("")}else(0,m.J9)("");if(Object.hasOwn(t,"SettingsSave"))try{u.Z.load(t.SettingsSave)}catch(e){console.error("SettingsSave was present but an error occurred while loading:"),console.error(e)}if(Object.hasOwn(t,"LastExportBonus"))try{d.ju(JSON.parse(t.LastExportBonus))}catch(e){d.ju((new Date).getTime()),console.error("ERROR: Failed to parse last export bonus Settings "+e)}if(l.J5.gang&&Object.hasOwn(t,"AllGangsSave"))try{(0,s.s9)(t.AllGangsSave)}catch(e){console.error("ERROR: Failed to parse AllGangsSave: "+e)}if(Object.hasOwn(t,"VersionSave"))try{const e=JSON.parse(t.VersionSave,g.Ro);!function(e){const t=l.J5;if("string"==typeof e){if(e<="0.41.2"&&null!=t.companyPosition&&"string"!=typeof t.companyPosition&&(t.companyPosition=t.companyPosition.data.positionName,null==t.companyPosition&&(t.companyPosition="")),e<"0.43.0"&&(""!==t.companyName&&null!=t.companyPosition&&""!==t.companyPosition&&(t.jobs[t.companyName]=t.companyPosition),delete t.companyPosition),e<"0.56.0"){for(const e of t.queuedAugmentations)"Graphene BranchiBlades Upgrade"===e.name&&(e.name="Graphene BrachiBlades Upgrade");for(const e of t.augmentations)"Graphene BranchiBlades Upgrade"===e.name&&(e.name="Graphene BrachiBlades Upgrade")}if(e<"0.56.1"){0===t.bladeburner&&(t.bladeburner=null),0===t.gang&&(t.gang=null);const e=t.getHomeComputer();for(let t=0;t0)for(const e of t.sleeves)if(e.augmentations&&0!==e.augmentations.length)for(const t of e.augmentations)"Graphene BranchiBlades Upgrade"===t.name&&(t.name="Graphene BrachiBlades Upgrade");if(e<12&&void 0!==t.resleeves&&delete t.resleeves,e<15&&(u.Z.EditorTheme={...E.Co}),e<16){i.i[v.FactionName.ShadowsOfAnarchy]=new S.a(v.FactionName.ShadowsOfAnarchy);for(const e of(0,c.XX)())for(const t of e.contracts)"HammingCodes: Integer to encoded Binary"==t.type&&(t.type="HammingCodes: Integer to Encoded Binary")}const n=()=>{t.hp={current:1,max:1};for(const e of t.sleeves)e.hp={current:1,max:1};t.exp.hacking=t.hacking_exp,t.exp.strength=t.strength_exp,t.exp.defense=t.defense_exp,t.exp.dexterity=t.dexterity_exp,t.exp.agility=t.agility_exp,t.exp.charisma=t.charisma_exp,t.exp.intelligence=t.intelligence_exp};if(e<17){let e=[...l.J5.augmentations];e=e.filter((e=>e.name===v.AugmentationName.NeuroFluxGovernor));const t=new k.e(v.AugmentationName.NeuroFluxGovernor);t.level=0;for(const n of e)t.level+=n.level;l.J5.augmentations=[...l.J5.augmentations.filter((e=>e.name!==v.AugmentationName.NeuroFluxGovernor)),t],n(),l.J5.reapplyAllAugmentations(),l.J5.reapplyAllSourceFiles()}if(e<20&&!(0,c.WT)(x.r.DarkWeb)){const e=(0,C.iw)({ip:(0,c.hG)(),hostname:x.r.DarkWeb,organizationName:"",isConnectedTo:!1,adminRights:!1,purchasedByPlayer:!1,maxRam:1});(0,c.jG)(e)}if(e<21){(0,b.y)(10);const e=t.createProgramName;e&&l.J5.getHomeComputer().pushProgram(e);const n=t.graftAugmentationName;n&&l.J5.augmentations.push({name:n,level:1})}if(e<22&&(n(),(0,N.b)()),e<23&&(t.currentWork=null),e<25){const e=["hacking_chance_mult","hacking_speed_mult","hacking_money_mult","hacking_grow_mult","hacking_mult","strength_mult","defense_mult","dexterity_mult","agility_mult","charisma_mult","hacking_exp_mult","strength_exp_mult","defense_exp_mult","dexterity_exp_mult","agility_exp_mult","charisma_exp_mult","company_rep_mult","faction_rep_mult","crime_money_mult","crime_success_mult","work_money_mult","hacknet_node_money_mult","hacknet_node_purchase_cost_mult","hacknet_node_ram_cost_mult","hacknet_node_core_cost_mult","hacknet_node_level_cost_mult","bladeburner_max_stamina_mult","bladeburner_stamina_gain_mult","bladeburner_analysis_mult","bladeburner_success_chance_mult","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","intelligence_exp","companyName","isWorking","workType","workCostMult","workExpMult","currentWorkFactionName","currentWorkFactionDescription","workHackExpGainRate","workStrExpGainRate","workDefExpGainRate","workDexExpGainRate","workAgiExpGainRate","workChaExpGainRate","workRepGainRate","workMoneyGainRate","workMoneyLossRate","workHackExpGained","workStrExpGained","workDefExpGained","workDexExpGained","workAgiExpGained","workChaExpGained","workRepGained","workMoneyGained","createProgramName","createProgramReqLvl","graftAugmentationName","timeWorkedGraftAugmentation","className","crimeType","timeWorked","timeWorkedCreateProgram","timeNeededToCompleteWork","factionWorkType","committingCrimeThruSingFn","singFnCrimeWorkerScript","hacking","max_hp","strength","defense","dexterity","agility","charisma","intelligence"],n=["gymStatType","bbAction","bbContract","hacking","strength","defense","dexterity","agility","charisma","intelligence","max_hp","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","intelligence_exp","hacking_mult","strength_mult","defense_mult","dexterity_mult","agility_mult","charisma_mult","hacking_exp_mult","strength_exp_mult","defense_exp_mult","dexterity_exp_mult","agility_exp_mult","charisma_exp_mult","hacking_chance_mult","hacking_speed_mult","hacking_money_mult","hacking_grow_mult","company_rep_mult","faction_rep_mult","crime_money_mult","crime_success_mult","work_money_mult","hacknet_node_money_mult","hacknet_node_purchase_cost_mult","hacknet_node_ram_cost_mult","hacknet_node_core_cost_mult","hacknet_node_level_cost_mult","bladeburner_max_stamina_mult","bladeburner_stamina_gain_mult","bladeburner_analysis_mult","bladeburner_success_chance_mult","className","crimeType","currentTask","currentTaskLocation","currentTaskMaxTime","currentTaskTime","earningsForSleeves","earningsForPlayer","earningsForTask","factionWorkType","gainRatesForTask","logs"];let r=Number(t.intelligence_exp);isNaN(r)&&(r=0),t.exp.intelligence+=r;for(const n of e)delete t[n];for(const e of t.sleeves){const t=e;let r=Number(t.intelligence_exp);isNaN(r)&&(r=0),t.exp.intelligence+=r;for(const t of n)delete e[t]}}if(e<27)for(const e of l.J5.sleeves)e.shock=100-e.shock;if(e<31){var r,a;M.o.warn("Migrating to 2.3.0, loading with no scripts.");for(const e of(0,c.XX)())e.savedScripts=[];null!==(r=t.hashManager)&&void 0!==r&&r.upgrades&&((a=t.hashManager.upgrades)["Company Favor"]??(a["Company Favor"]=0)),t.lastAugReset&&-1!==t.lastAugReset||(t.lastAugReset=t.lastUpdate-t.playtimeSinceLastAug),t.lastNodeRest&&-1!==t.lastNodeReset||(t.lastNodeReset=t.lastUpdate-t.playtimeSinceLastBitnode);const e=t.corporation;if(e&&Array.isArray(e.divisions)){var o;let t=2*e.valuation+100*e.revenue;isNaN(t)&&(t=3e11),l.J5.startCorporation(String(e.name),!!e.seedFunded),null===(o=l.J5.corporation)||void 0===o||o.addFunds(t),M.o.warn("Loading corporation from version prior to 2.3. Corporation has been reset.")}}if(e<32){let e=!1;if(l.J5.corporation)for(const t of l.J5.corporation.divisions.values())for(const n of(0,A.R3)(t.warehouses))for(const r of(0,A.R3)(n.materials)){const a=r.exports;r.exports=[];for(const o of a)try{const e=l.J5.corporation.divisions.get(o.division);if(!e)throw new Error(`Target division ${o.division} did not exist`);(0,T.DY)(e,o.city,r,o.amount)}catch(a){e=!0,console.error(`Failed to load export of material ${r.name} (${t.name} ${n.city})\nOriginal export details: ${JSON.stringify(o)}\nError: ${a}`)}}e&&M.o.error("Some material exports failed to validate while loading and have been removed. See console for more info.")}if(e<33)for(const e of(0,c.XX)())for(const t of e.scripts.values())t.server!==e.hostname&&(console.warn(`Detected script ${t.filename} on ${e.hostname} with incorrect server property: ${t.server}. Repairing.`),t.server=e.hostname)}(e),o.t.isDevBranch?setTimeout((()=>(0,p.X)("You are playing on the beta environment! This branch of the game features the latest developments in the game. This version may be unstable.\nPlease report any bugs/issues through the github repository (https://github.com/bitburner-official/bitburner-src/issues) or the Bitburner subreddit (reddit.com/r/bitburner).\n\n"+o.t.LatestUpdate)),1e3):e!==o.t.VersionNumber&&_()}catch(e){console.error("Error upgrading versions:",e),_()}else _();return!0}function _(){setTimeout((()=>(0,p.X)("New update!\nPlease report any bugs/issues through the GitHub repository or the Bitburner subreddit (reddit.com/r/bitburner).\n\n"+o.t.LatestUpdate)),1e3)}function I(e,t){const n=new Blob([t],{type:"text/plain"}),r=document.createElement("a"),a=URL.createObjectURL(n);r.href=a,r.download=e,document.body.appendChild(r),r.click(),setTimeout((function(){document.body.removeChild(r),window.URL.revokeObjectURL(a)}),0)}g.gY.BitburnerSaveObject=L;const P=new L},28274:(e,t,n)=>{"use strict";n.d(t,{w:()=>r});class r{constructor(e,t){this.url=e,this.module=t}}},1986:(e,t,n)=>{"use strict";let r;n.d(t,{m:()=>r}),function(e){e[e.SyntaxError=-1]="SyntaxError",e[e.ImportError=-2]="ImportError"}(r||(r={}))},6221:(e,t,n)=>{"use strict";n.d(t,{J:()=>f,w:()=>m});var r=n(49667),a=n(63230),o=n(1986),i=n(32310),s=n(69917),l=n(27757);const c="__SPECIAL_referenceWhile",u=".__GLOBAL__";function m(e){let t;try{t=(0,a.Qc)(e,{sourceType:"module",ecmaVersion:"latest"})}catch(e){return-1}let n=-1;return r.BE(t,{},{WhileStatement:(t,a,o)=>{!function(e){return"Literal"===e.type&&"raw"in e&&"true"===e.raw}(t.test)||function(e){let t=!1;return r.BE(e,{},{AwaitExpression:()=>{t=!0}}),t}(t)?t.body&&o(t.body,a):n=(e.slice(0,t.start).match(/\n/g)||[]).length+1}}),n}function f(e,t,n){try{return function(e,t,n){let m={};const f=new Set,h=[];function d(e,t){const n=function(e,t){const n=(0,a.Qc)(e,{sourceType:"module",ecmaVersion:"latest"}),o=t+u,i={};i[o]=new Set;const s={},l=[];function m(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;const a=i[e]||(i[e]=new Set),o=s[n];void 0!==o&&a.add(o),a.add(r+"."+n),a.add(n)}const f=Object.getOwnPropertyNames(Object.prototype);function h(){return{Identifier:(e,t)=>{f.includes(e.name)||m(t.key,e.name)},WhileStatement:(e,t,n)=>{m(t.key,c),e.test&&n(e.test,t),e.body&&n(e.body,t)},DoWhileStatement:(e,t,n)=>{m(t.key,c),e.test&&n(e.test,t),e.body&&n(e.body,t)},ForStatement:(e,t,n)=>{m(t.key,"__SPECIAL_referenceFor"),e.init&&n(e.init,t),e.test&&n(e.test,t),e.update&&n(e.update,t),e.body&&n(e.body,t)},IfStatement:(e,t,n)=>{m(t.key,"__SPECIAL_referenceIf"),e.test&&n(e.test,t),e.consequent&&n(e.consequent,t),e.alternate&&n(e.alternate,t)},MemberExpression:(e,t,n)=>{e.object&&n(e.object,t),e.property&&n(e.property,t)}}}return r.BE(n,{key:o},Object.assign({ImportDeclaration:(e,t)=>{const n=e.source.value;l.push(n);const r=i[t.key];if(void 0===r)throw new Error("set should not be undefined");r.add(n+u);for(let r=0;r{const n=t+"."+(null===e.id?"__SPECIAL_DEFAULT_EXPORT__":e.id.name);r.BE(e,{key:n},h())},ExportNamedDeclaration:(e,n,r)=>{if(null===e.declaration)for(const n of e.specifiers){const r=t+"."+n.exported.name;null!==e.source?(m(r,n.local.name,e.source.value),l.push(e.source.value)):n.exported.name!==n.local.name&&m(r,n.local.name)}else r(e.declaration,n)}},h())),{dependencyMap:i,additionalModules:l}}(e,t);f.add(t);for(let e=0;e0;){const t=h.shift();if(void 0===t)throw new Error("nextModule should not be undefined");if(t.startsWith("https://")||t.startsWith("http://"))continue;const r=(0,s.L6)(t,l.Jz,n?".script":".js");if(!r)return{errorCode:o.m.ImportError,errorMessage:`Invalid import path: "${t}"`};const a=e.get(r);if(!a)return{errorCode:o.m.ImportError,errorMessage:`No such file on server: "${r}"`};d(a.code,t)}let g=i.qS.Base;const y=[{type:"misc",name:"baseCost",cost:i.qS.Base}],b=Object.keys(m).filter((e=>e.startsWith(p))),v=new Set,k={};for(;b.length>0;){const e=b.shift();if(void 0===e)throw new Error("ref should not be undefined");if("hacknet"!==e||v.has("hacknet")||(g+=i.qS.HacknetNodes,y.push({type:"ns",name:"hacknet",cost:i.qS.HacknetNodes})),"document"!==e||v.has("document")||(g+=i.qS.Dom,y.push({type:"dom",name:"document",cost:i.qS.Dom})),"window"!==e||v.has("window")||(g+=i.qS.Dom,y.push({type:"dom",name:"window",cost:i.qS.Dom})),v.add(e),e.endsWith(".*")){const t=e.slice(0,e.length-2);for(const e of Object.keys(m).filter((e=>e.startsWith(t))))for(const t of m[e]||[])v.has(t)||b.push(t)}else for(const t of m[e]||[])v.has(t)||b.push(t);try{if(k[e])continue;k[e]=!0;const t=(e,n,r)=>{if(!n)return;const a=Object.entries(n).find((e=>{let[t]=e;return t===r}));if(void 0!==a&&("function"==typeof a[1]||"number"==typeof a[1]))return{func:a[1],refDetail:`${e}${r}`};for(const[e,a]of Object.entries(n)){const n=t(`${e}.`,a,r);if(n)return n}},n=t("",i.IK,e),r="function"==typeof(w=(null==n?void 0:n.func)??0)?w():w;g+=r,y.push({type:"fn",name:(null==n?void 0:n.refDetail)??"",cost:r})}catch(e){console.error(e);continue}}var w;return g>i.qS.Max&&(g=i.qS.Max,y.push({type:"misc",name:"Max Ram Cap",cost:i.qS.Max})),{cost:g,entries:y.filter((e=>e.cost>0))}}(t,e,n)}catch(e){return{errorCode:o.m.SyntaxError,errorMessage:e instanceof Error?e.message:void 0}}}},19918:(e,t,n)=>{"use strict";n.d(t,{X:()=>u});var r=n(51087),a=n(65065),o=n(94515),i=n(30282),s=n(32310),l=n(89194),c=n(70769);class u{args=[];dataMap={};filename="default.js";logs=[];logUpd=!1;offlineExpGained=0;offlineMoneyMade=0;offlineRunningTime=.01;onlineExpGained=0;onlineMoneyMade=0;onlineRunningTime=.01;pid=-1;ramUsage=s.qS.Base;server="";scriptKey="";tailProps=null;title="";threads=1;temporary=!1;dependencies=new Map;constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(e){if(!t)throw new Error("Must provide a ramUsage for RunningScript initialization.");this.filename=e.filename,this.args=n,this.scriptKey=(0,c.Wl)(this.filename,n),this.server=e.server,this.ramUsage=t,this.dependencies=e.dependencies,this.title=`${this.filename} ${n.join(" ")}`}}log(e){this.logs.length>r.Z.MaxLogCapacity&&this.logs.shift();let t=e;r.Z.TimestampsFormat&&"string"==typeof e&&(t="["+(0,i.m)(r.Z.TimestampsFormat)+"] "+t),this.logs.push(t),this.logUpd=!0}displayLog(){for(const e of this.logs)"string"==typeof e?a.o.print(e):a.o.printRaw(e)}clearLog(){this.logs.length=0}recordHack(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;null!=this.dataMap[e]&&this.dataMap[e].constructor===Array||(this.dataMap[e]=[0,0,0,0]),this.dataMap[e][0]+=t,this.dataMap[e][1]+=n}recordGrow(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;null!=this.dataMap[e]&&this.dataMap[e].constructor===Array||(this.dataMap[e]=[0,0,0,0]),this.dataMap[e][2]+=t}recordWeaken(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;null!=this.dataMap[e]&&this.dataMap[e].constructor===Array||(this.dataMap[e]=[0,0,0,0]),this.dataMap[e][3]+=t}toJSON(){return(0,o.L3)("RunningScript",this,"string"==typeof this.title?m:f)}static fromJSON(e){const t=(0,o.Id)(u,e.data,m);return t.scriptKey||(t.scriptKey=(0,c.Wl)(t.filename,t.args)),t.title||(t.title=`${t.filename} ${t.args.join(" ")}`),t}}const m=(0,l.i)(u,{removedKeys:["logs","dependencies","logUpd","pid","tailProps"]}),f=m.filter((e=>"title"!==e));o.gY.RunningScript=u},79173:(e,t,n)=>{"use strict";n.d(t,{X:()=>s});var r=n(6221),a=n(94515),o=n(99953),i=n(32310);class s{ramUsage=null;ramUsageEntries=[];ramCalculationError=null;mod=null;dependents=new Set;dependencies=new Map;get content(){return this.code}set content(e){this.code!==e&&(this.code=e,this.invalidateModule())}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default.js",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";this.filename=e,this.code=t,this.server=n}download(){const e=this.filename,t=new Blob([this.code],{type:"text/plain"}),n=document.createElement("a"),r=URL.createObjectURL(t);n.href=r,n.download=e,document.body.appendChild(n),n.click(),setTimeout((function(){document.body.removeChild(n),window.URL.revokeObjectURL(r)}),0)}invalidateModule(){if(this.ramUsage=null,this.ramUsageEntries.length=0,this.ramCalculationError=null,this.mod){this.mod=null;for(const e of this.dependents)e.invalidateModule();this.dependents.clear(),this.dependencies=new Map}}getRamUsage(e){return this.ramUsage||this.updateRamUsage(e),this.ramUsage}updateRamUsage(e){const t=(0,r.J)(this.code,e,this.filename.endsWith(".script"));if(t.cost&&t.cost>=i.qS.Base)return this.ramUsage=(0,o.S)(t.cost),this.ramUsageEntries=t.entries,void(this.ramCalculationError=null);this.ramUsage=null,this.ramCalculationError=t.errorMessage??null}deleteFromServer(e){return this.server===e.hostname&&!e.isRunning(this.filename)&&(this.invalidateModule(),e.scripts.delete(this.filename),!0)}static savedKeys=["code","filename","server"];toJSON(){return(0,a.L3)("Script",this,s.savedKeys)}static fromJSON(e){return(0,a.Id)(s,e.data,s.savedKeys)}}a.gY.Script=s},10364:(e,t,n)=>{"use strict";n.d(t,{$o:()=>h,Es:()=>f,F9:()=>m});var r=n(72938),a=n(49173),o=n(89916),i=n(2517),s=n(97467),l=n(22115),c=n(75350),u=n(70769);function m(e){const t=((new Date).getTime()-a.J5.lastUpdate)/1e3;let n=e.onlineRunningTime/14400;n>=1&&(n=1);for(const n of Object.keys(e.dataMap))if(Object.hasOwn(e.dataMap,n)){if(0==e.dataMap[n][2]||null==e.dataMap[n][2])continue;const r=(0,s.WT)(n);if(null==r)continue;const a=Math.round(.5*e.dataMap[n][2]/e.onlineRunningTime*t);e.log(`Called on ${r.hostname} ${a} times while offline`);const c=(0,s.WT)(e.server);if(null===c)throw new Error("getServer of null key?");if(!(r instanceof o.x))throw new Error("trying to grow a non-normal server");const u=(0,i.pw)(r,a,c.cpuCores);e.log(`'${r.hostname}' grown by ${(0,l.T3)(u-1,6)} while offline`)}const c=n*(e.onlineExpGained/e.onlineRunningTime)*t;a.J5.gainHackingExp(c),e.offlineRunningTime+=t,e.offlineExpGained+=c;for(const n of Object.keys(e.dataMap))if(Object.hasOwn(e.dataMap,n)){if(0==e.dataMap[n][3]||null==e.dataMap[n][3])continue;const a=(0,s.WT)(n);if(null==a)continue;if(!(a instanceof o.x))throw new Error("trying to weaken a non-normal server");const i=(0,s.WT)(e.server);if(null===i)throw new Error("getServer of null key?");const l=Math.round(.5*e.dataMap[n][3]/e.onlineRunningTime*t);e.log(`Called weaken() on ${a.hostname} ${l} times while offline`);const c=1+(i.cpuCores-1)/16;a.weaken(r.t.ServerWeakenAmount*l*c)}}function f(e,t,n){return n.runningScriptMap.get((0,u.Wl)(e,t))??null}function h(e,t){const n=c.R.get(e);return n?n.scriptRef.server!==t.hostname?null:n.scriptRef:null}},42281:(e,t,n)=>{"use strict";n.d(t,{M:()=>r});const r=new class{constructor(){this.positions=new Map}saveCursor(e,t){this.positions.set(e,t)}getCursor(e){return this.positions.get(e)||{row:-1,column:-1}}}},3152:(e,t,n)=>{"use strict";n.d(t,{M:()=>i});var r=n(67294),a=n(36640),o=n(57681);function i(e){let{beforeMount:t,onMount:n,onChange:i}=e;const s=(0,r.useRef)(null),l=(0,r.useRef)(null),c=(0,r.useRef)(null),{options:u}=(0,o.B)();return(0,r.useEffect)((()=>{if(s.current)return t(),l.current=a.editor.create(s.current,{value:"",automaticLayout:!0,language:"javascript",...u,glyphMargin:!0}),n(l.current),c.current=l.current.onDidChangeModelContent((()=>{var e;i(null===(e=l.current)||void 0===e?void 0:e.getValue())})),()=>{var e,t,n,r;null===(e=c.current)||void 0===e||e.dispose(),null===(t=l.current)||void 0===t||null===(n=t.getModel())||void 0===n||n.dispose(),null===(r=l.current)||void 0===r||r.dispose()}}),[]),r.createElement("div",{ref:s,style:{height:"1px",width:"100%",flexGrow:1}})}},41052:(e,t,n)=>{"use strict";n.d(t,{v:()=>i});var r=n(67294),a=n(81138),o=n(51087);function i(){return r.createElement("div",{style:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},r.createElement("span",{style:{color:o.Z.theme.primary,fontSize:"20px",textAlign:"center"}},r.createElement(a.Z,{variant:"h4"},"No open files"),r.createElement(a.Z,{variant:"h5"},"Use ",r.createElement("code",null,"nano FILENAME")," in",r.createElement("br",null),"the terminal to open files")))}},59110:(e,t,n)=>{"use strict";n.d(t,{K:()=>r});class r{constructor(e,t,n,r,a){this.path=e,this.code=t,this.hostname=n,this.lastPosition=r,this.model=a,this.isTxt=e.endsWith(".txt")}}},53817:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(67294),a=n(56798),o=n(81138),i=n(26023),s=n(16056),l=n(98649),c=n(66351),u=n(77957),m=n(88775),f=n(48672),h=n(27711);const d=["line","block","underline","line-thin","block-outline","underline-thin"],p=["blink","smooth","phase","expand","solid"];function g(e){const[t,{on:n,off:g}]=(0,m.k)(!1);return r.createElement(f.u,{open:e.open,onClose:e.onClose},r.createElement(h.y,{open:t,onChange:e.onThemeChange,onClose:g}),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,null,"Theme: "),r.createElement(i.Z,{onChange:t=>e.onOptionChange("theme",t.target.value),value:e.options.theme},r.createElement(l.Z,{value:"monokai"},"monokai"),r.createElement(l.Z,{value:"solarized-dark"},"solarized-dark"),r.createElement(l.Z,{value:"solarized-light"},"solarized-light"),r.createElement(l.Z,{value:"vs-dark"},"dark"),r.createElement(l.Z,{value:"light"},"light"),r.createElement(l.Z,{value:"dracula"},"dracula"),r.createElement(l.Z,{value:"one-dark"},"one-dark"),r.createElement(l.Z,{value:"customTheme"},"Custom theme")),r.createElement(a.Z,{onClick:n,sx:{ml:1},startIcon:r.createElement(u.Z,null)},"Edit custom theme")),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Indent using spaces: "),r.createElement(s.Z,{onChange:t=>e.onOptionChange("insertSpaces",t.target.checked),checked:e.options.insertSpaces})),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Tab size: "),r.createElement(c.Z,{type:"number",value:e.options.tabSize,onChange:t=>{const n=parseInt(t.target.value);!Number.isFinite(n)||n<1||e.onOptionChange("tabSize",n)}})),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Auto-detect indentation: "),r.createElement(s.Z,{onChange:t=>e.onOptionChange("detectIndentation",t.target.checked),checked:e.options.detectIndentation})),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Word wrap: "),r.createElement(i.Z,{onChange:t=>e.onOptionChange("wordWrap",t.target.value),value:e.options.wordWrap},r.createElement(l.Z,{value:"off"},"Off"),r.createElement(l.Z,{value:"on"},"On"),r.createElement(l.Z,{value:"bounded"},"Bounded"),r.createElement(l.Z,{value:"wordWrapColumn"},"Word Wrap Column"))),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Enable vim mode: "),r.createElement(s.Z,{onChange:t=>e.onOptionChange("vim",t.target.checked),checked:e.options.vim})),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Font family: "),r.createElement(c.Z,{type:"text",value:e.options.fontFamily,onChange:t=>e.onOptionChange("fontFamily",t.target.value)})),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Font size: "),r.createElement(c.Z,{type:"number",value:e.options.fontSize,onChange:t=>{const n=parseInt(t.target.value);!Number.isFinite(n)||n<1||e.onOptionChange("fontSize",n)}})),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Enable font ligatures: "),r.createElement(s.Z,{onChange:t=>e.onOptionChange("fontLigatures",t.target.checked),checked:e.options.fontLigatures})),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Cursor style: "),r.createElement(i.Z,{onChange:t=>e.onOptionChange("cursorStyle",t.target.value),value:e.options.cursorStyle},d.map((e=>r.createElement(l.Z,{key:e,value:e},e))))),r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(o.Z,{marginRight:"auto"},"Cursor blinking: "),r.createElement(i.Z,{onChange:t=>e.onOptionChange("cursorBlinking",t.target.value),value:e.options.cursorBlinking},p.map((e=>r.createElement(l.Z,{key:e,value:e},e))))))}},57681:(e,t,n)=>{"use strict";n.d(t,{B:()=>m,j:()=>u});var r=n(67294),a=n(51087),o=n(6221),i=n(1986),s=n(22115),l=n(88775);const c=r.createContext({});function u(e){let{children:t,vim:n}=e;const[u,m]=(0,r.useState)("RAM: ???"),[f,h]=(0,r.useState)([["???",""]]),[d,{on:p,off:g}]=(0,l.k)(!1),[y,b]=(0,r.useState)({theme:a.Z.MonacoTheme,insertSpaces:a.Z.MonacoInsertSpaces,tabSize:a.Z.MonacoTabSize,detectIndentation:a.Z.MonacoDetectIndentation,fontFamily:a.Z.MonacoFontFamily,fontSize:a.Z.MonacoFontSize,fontLigatures:a.Z.MonacoFontLigatures,wordWrap:a.Z.MonacoWordWrap,vim:n||a.Z.MonacoVim,cursorStyle:a.Z.MonacoCursorStyle,cursorBlinking:a.Z.MonacoCursorBlinking});return r.createElement(c.Provider,{value:{ram:u,ramEntries:f,updateRAM:(e,t)=>{if(null===e||null===t)return m("N/A"),void h([["N/A",""]]);const n=(0,o.J)(e,t.scripts);if(n.cost&&n.cost>0){var r;const e=(null===(r=n.entries)||void 0===r?void 0:r.sort(((e,t)=>t.cost-e.cost)))??[],t=[];for(const n of e)t.push([`${n.name} (${n.type})`,(0,s.$1)(n.cost)]);return m("RAM: "+(0,s.$1)(n.cost)),void h(t)}if(void 0!==n.errorCode)switch(h([["Syntax Error",n.errorMessage??""]]),n.errorCode){case i.m.ImportError:m("RAM: Import Error");break;case i.m.SyntaxError:m("RAM: Syntax Error")}else m("RAM: Syntax Error"),h([["Syntax Error",""]])},isUpdatingRAM:d,startUpdatingRAM:p,finishUpdatingRAM:g,options:y,saveOptions:function(e){b(e),a.Z.MonacoTheme=e.theme,a.Z.MonacoInsertSpaces=e.insertSpaces,a.Z.MonacoTabSize=e.tabSize,a.Z.MonacoDetectIndentation=e.detectIndentation,a.Z.MonacoFontFamily=e.fontFamily,a.Z.MonacoFontSize=e.fontSize,a.Z.MonacoFontLigatures=e.fontLigatures,a.Z.MonacoCursorStyle=e.cursorStyle,a.Z.MonacoCursorBlinking=e.cursorBlinking,a.Z.MonacoWordWrap=e.wordWrap,a.Z.MonacoVim=e.vim}}},t)}const m=()=>(0,r.useContext)(c)},99363:(e,t,n)=>{"use strict";n.d(t,{h:()=>L,z:()=>I});var r=n(67294),a=n(36640),o=n(3152),i=n(52947),s=n(24815),l=n(39463),c=n(6221),u=n(96393),m=n(51087),f=n(40780),h=n(96486),d=n(34716),p=n(19652),g=n(97467),y=n(23001),b=n(42923),v=n(88775),k=n(30180),w=n(39602),E=n(59110),S=n(84108),C=n(47989),x=n(41052),N=n(57681),M=n(88305);let A=!1;const T=[];function L(){const e={args:[],pid:1,enums:u.k,...u.ns},t=(0,k.C)();!function n(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e;for(const[a,o]of Object.entries(r))r===e&&a in t||(T.push(a),"object"==typeof o&&n(o))}()}const R=[];let F=null;function _(e){const t=(0,v.S)(),n=(0,r.useRef)(null),{options:u,updateRAM:k,startUpdatingRAM:L,finishUpdatingRAM:_}=(0,N.B)();let I;for(let e=R.length-1;e>=0;e--)null===(0,g.WT)(R[e].hostname)&&R.splice(e,1);function P(e){e.model=a.editor.createModel(e.code,e.isTxt?"plaintext":"javascript")}F&&null===(0,g.WT)(F.hostname)&&(F=R[0]??null),(0,r.useEffect)((()=>{function e(e){m.Z.DisableHotkeys||("KeyB"==e.code&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),i.F.toPage(s.T3.Terminal)),"KeyS"==e.code&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),e.stopPropagation(),Z()))}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)}));const B=(0,h.debounce)((e=>{!function(e){if(null===n.current||null===F)return;if(I||(I=n.current.createDecorationsCollection()),!F.path.endsWith(".js"))return;const t=(0,c.w)(e);-1!==t?I.set([{range:{startLineNumber:t,startColumn:1,endLineNumber:t,endColumn:10},options:{isWholeLine:!0,glyphMarginClassName:"myGlyphMarginClass",glyphMarginHoverMessage:{value:"Possible infinite loop, await something."}}}]):I.clear()}(e),k(!F||F.isTxt?null:e,F&&(0,g.WT)(F.hostname)),_()}),300),O=e=>{L(),B(e)};function D(e){const t=(0,g.WT)(e.hostname);if(!t)throw new Error("Server should not be null but it is.");t.writeToContentFile(e.path,e.code),m.Z.SaveGameOnFileSave&&d.Ex.saveGame()}function Z(){if(null===F)return void console.error("currentScript is null when it shouldn't be. Unable to save script");if(f.wP.isRunning&&f.wP.currStep===f.$o.TerminalTypeScript){if("n00dles.script"!==F.path&&"n00dles.js"!==F.path)return void(0,l.X)("Don't change the script name for now.");const e=F.code.replace(/\s/g,""),t="while(true){hack('n00dles');}",n="exportasyncfunctionmain(ns){while(true){awaitns.hack('n00dles');}}";return e.includes(t)||e.includes(n)?(D(F),i.F.toPage(s.T3.Terminal),void(0,f.ZF)()):void(0,l.X)("Please copy and paste the code from the tutorial!")}const e=(0,g.WT)(F.hostname);if(null===e)throw new Error("Server should not be null but it is.");e.writeToContentFile(F.path,F.code),m.Z.SaveGameOnFileSave&&d.Ex.saveGame(),t()}function G(){if(F)return R.findIndex((e=>F===e))}function J(e){if(null!==F){const e=G();void 0!==e&&(R[e]=F)}F=R[e],null!==n.current&&null!==R[e]&&((void 0===F.model||F.model.isDisposed())&&P(F),n.current.setModel(F.model),n.current.setPosition(F.lastPosition),n.current.revealLineInCenter(F.lastPosition.lineNumber),O(F.code),n.current.focus())}const{VimStatus:W}=(0,M.S)({editor:n.current,vim:u.vim,onSave:Z,onOpenNextTab:function(e){const t=G();void 0!==t&&J((t+e)%R.length)},onOpenPreviousTab:function(e){const t=G();if(void 0!==t){let n=t-e;for(;n<0;)n+=R.length;J(n)}}});return(0,r.useEffect)((()=>{if(null!==F){const e=G();"number"==typeof e&&J(e),O(F.code)}}),[]),r.createElement(r.Fragment,null,r.createElement("div",{style:{display:null!==F?"flex":"none",height:"100%",width:"100%",flexDirection:"column"}},r.createElement(S.m,{scripts:R,currentScript:F,onTabClick:J,onTabClose:function(e){const r=R[e],a=r.code,o=R[e]===F;if((0,w.ii)(R,e)&&y.H.emit({txt:`Do you want to save changes to ${r.path} on ${r.hostname}?`,resolve:e=>{e&&(r.code=a,D(r),i.F.toPage(s.T3.Terminal))}}),R.splice(e,1),0===R.length)return F=null,void i.F.toPage(s.T3.Terminal);if(o){const t=R.length===e?-1:0;F=R[e+t],null!==n.current&&(!F.model.isDisposed()&&F.model||P(F),n.current.setModel(F.model),n.current.setPosition(F.lastPosition),n.current.revealLineInCenter(F.lastPosition.lineNumber),n.current.focus())}t()},onTabUpdate:function(e){const t=R[e],r=(0,w.nr)(R,e);null!==r&&t.code!==r&&y.H.emit({txt:"Do you want to overwrite the current editor content with the contents of "+t.path+" on the server? This cannot be undone.",resolve:a=>{a&&(t.code=r,J(e),null!==n.current&&null!==t&&((void 0===t.model||t.model.isDisposed())&&P(t),n.current.setModel(t.model),n.current.setValue(t.code),O(t.code),n.current.focus()))}})}}),r.createElement("div",{style:{flex:"0 0 5px"}}),r.createElement(o.M,{beforeMount:function(){if(A)return;A=!0,async function(){const e=a.languages.getLanguages().find((e=>"javascript"===e.id)),t=await e.loader();t.language.tokenizer.root.unshift([new RegExp("\\bns\\b"),{token:"ns"}]);for(const e of T)t.language.tokenizer.root.unshift([new RegExp(`\\b${e}\\b`),{token:"netscriptfunction"}]);["let","const","var","function"].forEach((e=>t.language.tokenizer.root.unshift([new RegExp(`\\b${e}\\b`),{token:"otherkeywords"}]))),["true","false","null","undefined"].forEach((e=>t.language.tokenizer.root.unshift([new RegExp(`\\b${e}\\b`),{token:"otherkeyvars"}]))),t.language.tokenizer.root.unshift([new RegExp("\\bthis\\b"),{token:"this"}])}();const e=(b.Z+"").replace(/export /g,"");a.languages.typescript.javascriptDefaults.addExtraLib(e,"netscript.d.ts"),a.languages.typescript.typescriptDefaults.addExtraLib(e,"netscript.d.ts"),(0,p.c4)(a.editor.defineTheme),(0,p.Gp)(m.Z.EditorTheme),a.editor.defineTheme("customTheme",(0,p.lB)(m.Z.EditorTheme))},onMount:function(t){if(n.current=t,!e.files&&null!==F)return P(F),n.current.setModel(F.model),n.current.setPosition(F.lastPosition),n.current.revealLineInCenter(F.lastPosition.lineNumber),O(F.code),void n.current.focus();if(e.files){const t=e.files;if(!t.size)return void n.current.focus();for(const[r,o]of t){const t=R.find((t=>t.path===r&&t.hostname===e.hostname));if(t)(void 0===t.model||null===t.model||t.model.isDisposed())&&P(t),F=t,n.current.setModel(t.model),n.current.setPosition(t.lastPosition),n.current.revealLineInCenter(t.lastPosition.lineNumber),O(t.code);else{const t=new E.K(r,o,e.hostname,new a.Position(0,0),a.editor.createModel(o,r.endsWith(".txt")?"plaintext":"javascript"));R.push(t),F=t,n.current.setModel(t.model),O(t.code)}}}n.current.focus()},onChange:function(e){if(void 0===e)return;if(O(e),null===n.current)return;const t=n.current.getPosition();null!==t&&null!==F&&(F.code=e,F.lastPosition=t)}}),W,r.createElement(C.o,{onSave:Z,editor:n.current})),!F&&r.createElement(x.v,null))}function I(e){return r.createElement(N.j,{vim:e.vim},r.createElement(_,e))}},25312:(e,t,n)=>{"use strict";n.d(t,{O:()=>m});var r=n(67294),a=n(56798),o=n(17575),i=n(51334),s=n(50594),l=n(51087);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var e;b.current&&m&&(null===(e=b.current)||void 0===e||e.scrollIntoView())}),[m]),r.createElement("div",c({ref:e=>{b.current=e,t.innerRef(e)}},t.draggableProps,t.dragHandleProps,{style:{...t.draggableProps.style,marginRight:5,flexShrink:0,border:"1px solid "+l.Z.theme.well}}),r.createElement(o.Z,{title:n},r.createElement(a.Z,{onClick:h,onMouseDown:e=>{e.preventDefault(),1===e.button&&d()},style:{minHeight:u,overflow:"hidden",...g}},r.createElement("span",{style:{overflow:"hidden",direction:"rtl",textOverflow:"ellipsis"}},n))),r.createElement(o.Z,{title:"Overwrite editor content with saved file content"},r.createElement(a.Z,{onClick:p,style:y},r.createElement(i.Z,{fontSize:"small"}))),r.createElement(a.Z,{onClick:d,style:y},r.createElement(s.Z,{fontSize:"small"})))}},84108:(e,t,n)=>{"use strict";n.d(t,{m:()=>y});var r=n(67294),a=n(15948),o=n(30120),i=n(56798),s=n(92557),l=n(66351),c=n(17575),u=n(50594),m=n(42761),f=n(88775),h=n(51087),d=n(39602),p=n(25312);function g(){return g=Object.assign?Object.assign.bind():function(e){for(var t=1;t({script:e,originalIndex:t}))).filter((e=>{let{script:t}=e;return t.hostname.includes(k)||t.path.includes(k)}));function T(){w(""),N(!x),C()}function L(e){e.currentTarget.scrollLeft+=e.deltaY}return r.createElement(o.Z,{display:"flex",flexGrow:"0",flexDirection:"row",alignItems:"center"},r.createElement(c.Z,{title:"Search Open Scripts",open:E,onOpen:S,onClose:C},r.createElement("span",{style:{marginRight:5}},x?r.createElement(l.Z,{value:k,onChange:function(e){w(e.target.value)},autoFocus:!0,sx:{minWidth:180,maxWidth:180},InputProps:{startAdornment:r.createElement(m.Z,null),spellCheck:!1,endAdornment:r.createElement(s.Z,{onClick:T},r.createElement(u.Z,null))}}):r.createElement(i.Z,{onClick:T},r.createElement(m.Z,null)))),r.createElement(a.Z5,{onDragEnd:function(e){e.destination&&((0,d.HP)(t,A[e.source.index].originalIndex,A[e.destination.index].originalIndex),M())}},r.createElement(a.bK,{droppableId:"tabs",direction:"horizontal"},((e,i)=>r.createElement(o.Z,g({maxWidth:"1640px",display:"flex",flexGrow:"1",flexDirection:"row",alignItems:"center",whiteSpace:"nowrap",ref:e.innerRef},e.droppableProps,{style:{backgroundColor:i.isDraggingOver?h.Z.theme.backgroundsecondary:h.Z.theme.backgroundprimary,overflowX:"scroll"},onWheel:L}),A.map(((e,o)=>{let{script:i,originalIndex:s}=e;const{path:l,hostname:c}=i,u=(null==n?void 0:n.path)===i.path&&n.hostname===i.hostname,m=`${c}:~${l.startsWith("/")?"":"/"}${l} ${(0,d.ii)(t,o)}`;return r.createElement(a._l,{key:l+c,draggableId:l+c,index:o,disableInteractiveElementBlocking:!0},(e=>r.createElement(p.O,{provided:e,title:m,isActive:u,isExternal:"home"!==c,onClick:()=>y(s),onClose:()=>b(s),onUpdate:()=>v(s)})))})),e.placeholder)))))}},27711:(e,t,n)=>{"use strict";n.d(t,{y:()=>S});var r=n(67294),a=n(96486),o=n.n(a),i=n(17575),s=n(66351),l=n(92557),c=n(81138),u=n(28881),m=n(31990),f=n(30120),h=n(56798),d=n(7244),p=n(26522),g=n(63638),y=n(51087),b=n(88775),v=n(48672),k=n(15460),w=n(19652);function E(e){let{label:t,themePath:n,onColorChange:a,color:o,defaultColor:c}=e;return void 0===o&&(console.error(`color ${n} was undefined, reverting to default`),o=c),r.createElement(i.Z,{title:t},r.createElement("span",null,r.createElement(s.Z,{label:n,value:"#"+o,sx:{display:"block",my:1},InputProps:{readOnly:!0,startAdornment:r.createElement(g.zH,{hideTextfield:!0,deferred:!0,value:"#"+o,onChange:e=>a(n,e.hex),disableAlpha:!0}),endAdornment:r.createElement(l.Z,{onClick:()=>a(n,c)},r.createElement(d.Z,{color:"primary"}))}})))}function S(e){const t=(0,b.S)();function n(n,r){o().set(y.Z.EditorTheme,n,r),e.onChange(),t()}return r.createElement(v.u,{open:e.open,onClose:e.onClose},r.createElement(c.Z,{variant:"h4"},"Customize Editor theme"),r.createElement(c.Z,null,"Hover over input boxes for more information"),r.createElement(u.Z,{sx:{p:1,my:1}},r.createElement(k.V,{checked:"vs"===y.Z.EditorTheme.base,onChange:e=>{n("base",e?"vs":"vs-dark")},text:"Use light theme as base",tooltip:r.createElement(r.Fragment,null,"If enabled, the ",r.createElement("code",null,"vs")," light theme will be used as the theme base, otherwise,"," ",r.createElement("code",null,"vs-dark")," will be used.")}),r.createElement(m.ZP,{container:!0,gap:1,columns:2},r.createElement(m.ZP,{item:!0},r.createElement(c.Z,{variant:"h6"},"UI"),r.createElement(E,{label:"Background color",themePath:"common.bg",onColorChange:n,color:y.Z.EditorTheme.common.bg,defaultColor:w.Co.common.bg}),r.createElement(E,{label:"Current line and minimap background color",themePath:"ui.line",onColorChange:n,color:y.Z.EditorTheme.ui.line,defaultColor:w.Co.ui.line}),r.createElement(E,{label:"Base text color",themePath:"common.fg",onColorChange:n,color:y.Z.EditorTheme.common.fg,defaultColor:w.Co.common.fg}),r.createElement(E,{label:"Popup background color",themePath:"ui.panel.bg",onColorChange:n,color:y.Z.EditorTheme.ui.panel.bg,defaultColor:w.Co.ui.panel.bg}),r.createElement(E,{label:"Background color for selected item in popup",themePath:"ui.panel.selected",onColorChange:n,color:y.Z.EditorTheme.ui.panel.selected,defaultColor:w.Co.ui.panel.selected}),r.createElement(E,{label:"Popup border color",themePath:"ui.panel.border",onColorChange:n,color:y.Z.EditorTheme.ui.panel.border,defaultColor:w.Co.ui.panel.border}),r.createElement(E,{label:"Background color of highlighted text",themePath:"ui.selection.bg",onColorChange:n,color:y.Z.EditorTheme.ui.selection.bg,defaultColor:w.Co.ui.selection.bg})),r.createElement(m.ZP,{item:!0},r.createElement(c.Z,{variant:"h6"},"Syntax"),r.createElement(E,{label:"Numbers, function names, and other key vars",themePath:"common.accent",onColorChange:n,color:y.Z.EditorTheme.common.accent,defaultColor:w.Co.common.accent}),r.createElement(E,{label:"Keywords",themePath:"syntax.keyword",onColorChange:n,color:y.Z.EditorTheme.syntax.keyword,defaultColor:w.Co.syntax.keyword}),r.createElement(E,{label:"Strings",themePath:"syntax.string",onColorChange:n,color:y.Z.EditorTheme.syntax.string,defaultColor:w.Co.syntax.string}),r.createElement(E,{label:"Regexp literals as well as escapes within strings",themePath:"syntax.regexp",onColorChange:n,color:y.Z.EditorTheme.syntax.regexp,defaultColor:w.Co.syntax.regexp}),r.createElement(E,{label:"Constants",themePath:"syntax.constant",onColorChange:n,color:y.Z.EditorTheme.syntax.constant,defaultColor:w.Co.syntax.constant}),r.createElement(E,{label:"Entities",themePath:"syntax.entity",onColorChange:n,color:y.Z.EditorTheme.syntax.entity,defaultColor:w.Co.syntax.entity}),r.createElement(E,{label:"'this', 'ns', types, and tags",themePath:"syntax.tag",onColorChange:n,color:y.Z.EditorTheme.syntax.tag,defaultColor:w.Co.syntax.tag}),r.createElement(E,{label:"Netscript functions and constructors",themePath:"syntax.markup",onColorChange:n,color:y.Z.EditorTheme.syntax.markup,defaultColor:w.Co.syntax.markup}),r.createElement(E,{label:"Errors",themePath:"syntax.error",onColorChange:n,color:y.Z.EditorTheme.syntax.error,defaultColor:w.Co.syntax.error}),r.createElement(E,{label:"Comments",themePath:"syntax.comment",onColorChange:n,color:y.Z.EditorTheme.syntax.comment,defaultColor:w.Co.syntax.comment})))),r.createElement(u.Z,{sx:{p:1}},r.createElement(s.Z,{multiline:!0,fullWidth:!0,maxRows:10,label:"import / export theme",value:JSON.stringify(y.Z.EditorTheme,void 0,2),onChange:function(t){try{const n=JSON.parse(t.target.value);if("object"!=typeof n)return;y.Z.EditorTheme=n,e.onChange()}catch(e){}}}),r.createElement(f.Z,{sx:{mt:1}},r.createElement(h.Z,{onClick:()=>{y.Z.EditorTheme=w.Co,e.onChange(),t()},startIcon:r.createElement(p.Z,null)},"Reset to default"))))}},47989:(e,t,n)=>{"use strict";n.d(t,{o:()=>E});var r=n(67294),a=n(36640),o=n(30120),i=n(56798),s=n(39401),l=n(47542),c=n(7272),u=n(49557),m=n(46948),f=n(81138),h=n(94229),d=n(19652),p=n(48672),g=n(24815),y=n(52947),b=n(88775),v=n(51087),k=n(53817),w=n(57681);function E(e){let{editor:t,onSave:n}=e;const[E,{on:S,off:C}]=(0,b.k)(!1),[x,{on:N,off:M}]=(0,b.k)(!1),{ram:A,ramEntries:T,isUpdatingRAM:L,options:R,saveOptions:F}=(0,w.B)();return r.createElement(r.Fragment,null,r.createElement(o.Z,{display:"flex",flexDirection:"row",sx:{m:1},alignItems:"center"},r.createElement(i.Z,{startIcon:r.createElement(h.Z,null),onClick:N,sx:{mr:1}},"Options"),r.createElement(i.Z,{onClick:function(){var e;null==t||null===(e=t.getAction("editor.action.formatDocument"))||void 0===e||e.run()}},"Beautify"),r.createElement(i.Z,{color:L?"secondary":"primary",sx:{mx:1},onClick:S},A),r.createElement(i.Z,{onClick:n},"Save (Ctrl/Cmd + s)"),r.createElement(i.Z,{sx:{mx:1},onClick:()=>y.F.toPage(g.T3.Terminal)},"Terminal (Ctrl/Cmd + b)"),r.createElement(f.Z,null,r.createElement(s.Z,{target:"_blank",href:"https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md"},"Documentation"))),r.createElement(k.A,{open:x,options:R,onClose:M,onOptionChange:(e,n)=>{const r={...R,[e]:n};F(r),setTimeout((()=>{null==t||t.updateOptions(r)}),100)},onThemeChange:()=>{(0,d.Gp)(v.Z.EditorTheme),a.editor.defineTheme("customTheme",(0,d.lB)(v.Z.EditorTheme))}}),r.createElement(p.u,{open:E,onClose:C},r.createElement(l.Z,null,r.createElement(m.Z,null,T.map((e=>{let[t,n]=e;return r.createElement(r.Fragment,{key:t+n},r.createElement(u.Z,null,r.createElement(c.Z,{sx:{color:v.Z.theme.primary}},t),r.createElement(c.Z,{align:"right",sx:{color:v.Z.theme.primary}},n)))}))))))}},19652:(e,t,n)=>{"use strict";n.d(t,{Co:()=>i,Gp:()=>l,c4:()=>u,lB:()=>c});var r=n(21623),a=n(51087),o=n(96486);const i={base:"vs-dark",inherit:!0,common:{accent:"B5CEA8",bg:"1E1E1E",fg:"D4D4D4"},syntax:{tag:"569CD6",entity:"569CD6",string:"CE9178",regexp:"646695",markup:"569CD6",keyword:"569CD6",comment:"6A9955",constant:"569CD6",error:"F44747"},ui:{line:"1E1E1E",panel:{bg:"252526",selected:"252526",border:"1E1E1E"},selection:{bg:"ADD6FF26"}}},s=/^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/,l=e=>{if("object"==typeof e)for(const t of(0,r.nd)(e)){switch("object"!=typeof e[t]&&delete e[t],t){case"base":["vs-dark","vs"].includes(e.base)||(e.base="vs-dark");continue;case"inherit":"boolean"!=typeof e.inherit&&(e.inherit=!0);continue}const n=e[t],r=e=>{for(const[t,n]of Object.entries(e))!n||"string"!=typeof n&&"object"!=typeof n?e[t]="FF0000":"object"==typeof n?r(n):n.match(s)||(e[t]="FF0000")};r(n)}else a.Z.EditorTheme=(0,o.cloneDeep)(i)};function c(e){const t=[{token:"",background:e.ui.line,foreground:e.common.fg},{token:"identifier",foreground:e.common.accent},{token:"keyword",foreground:e.syntax.keyword},{token:"string",foreground:e.syntax.string},{token:"string.escape",foreground:e.syntax.regexp},{token:"comment",foreground:e.syntax.comment},{token:"constant",foreground:e.syntax.constant},{token:"entity",foreground:e.syntax.entity},{token:"type",foreground:e.syntax.tag},{token:"tag",foreground:e.syntax.tag},{token:"regexp",foreground:e.syntax.regexp},{token:"attribute",foreground:e.syntax.tag},{token:"constructor",foreground:e.syntax.markup},{token:"invalid",foreground:e.syntax.error},{token:"number",foreground:e.common.accent},{token:"delimiter",foreground:e.common.fg},{token:"ns",foreground:e.syntax.tag},{token:"netscriptfunction",foreground:e.syntax.markup},{token:"otherkeywords",foreground:e.syntax.keyword},{token:"otherkeyvars",foreground:e.common.accent},{token:"this",foreground:e.syntax.tag}],n=Object.fromEntries([["editor.background",e.common.bg],["editor.foreground",e.common.fg],["editor.lineHighlightBackground",e.ui.line],["editor.selectionBackground",e.ui.selection.bg],["editorSuggestWidget.background",e.ui.panel.bg],["editorSuggestWidget.border",e.ui.panel.border],["editorSuggestWidget.selectedBackground",e.ui.panel.selected],["editorHoverWidget.background",e.ui.panel.bg],["editorHoverWidget.border",e.ui.panel.border],["editorWidget.background",e.ui.panel.bg],["editorWidget.border",e.ui.panel.border],["input.background",e.ui.panel.bg],["input.border",e.ui.panel.border]].map((e=>{let[t,n]=e;return[t,"#"+n]})));return{base:e.base,inherit:e.inherit,rules:t,colors:n}}async function u(e){e("monokai",{base:"vs-dark",inherit:!0,rules:[{background:"272822",token:""},{foreground:"75715e",token:"comment"},{foreground:"e6db74",token:"string"},{token:"number",foreground:"ae81ff"},{token:"otherkeyvars",foreground:"ae81ff"},{foreground:"ae81ff",token:"function"},{foreground:"f92672",token:"keyword"},{token:"storage.type.function.js",foreground:"ae81ff"},{token:"ns",foreground:"97d92b"},{token:"netscriptfunction",foreground:"53d3e4"},{token:"otherkeywords",foreground:"53d3e4"},{token:"this",foreground:"fd971f"}],colors:{"editor.foreground":"#F8F8F2","editor.background":"#272822","editor.selectionBackground":"#49483E","editor.lineHighlightBackground":"#3E3D32","editorCursor.foreground":"#F8F8F0","editorWhitespace.foreground":"#3B3A32","editorIndentGuide.activeBackground":"#9D550FB0","editor.selectionHighlightBorder":"#222218"}}),e("solarized-dark",{base:"vs-dark",inherit:!0,rules:[{background:"002b36",token:""},{foreground:"586e75",token:"comment"},{foreground:"00afaf",token:"string"},{token:"number",foreground:"00afaf"},{token:"otherkeyvars",foreground:"268bd2"},{foreground:"268bd2",token:"function"},{foreground:"859900",token:"keyword"},{token:"storage.type.function.js",foreground:"cb4b16"},{token:"ns",foreground:"cb4b16"},{token:"netscriptfunction",foreground:"268bd2"},{token:"otherkeywords",foreground:"268bd2"},{token:"type.identifier.js",foreground:"b58900"},{token:"delimiter.square.js",foreground:"0087ff"},{token:"delimiter.bracket.js",foreground:"0087ff"},{token:"this",foreground:"cb4b16"}],colors:{"editor.foreground":"#839496","editor.background":"#002b36","editor.selectionBackground":"#073642","editor.lineHighlightBackground":"#073642","editorCursor.foreground":"#819090","editorWhitespace.foreground":"#073642","editorIndentGuide.activeBackground":"#9D550FB0","editor.selectionHighlightBorder":"#222218"}}),e("solarized-light",{base:"vs",inherit:!0,rules:[{foreground:"657b83",background:"fdf6e3",token:""},{foreground:"586e75",token:"comment"},{foreground:"2aa198",token:"string"},{token:"number",foreground:"2aa198"},{token:"otherkeyvars",foreground:"268bd2"},{foreground:"268bd2",token:"function"},{foreground:"859900",token:"keyword"},{token:"storage.type.function.js",foreground:"bc4b16"},{token:"ns",foreground:"cb4b16"},{token:"netscriptfunction",foreground:"268bd2"},{token:"otherkeywords",foreground:"268bd2"},{token:"type.identifier.js",foreground:"b58900"},{token:"delimiter.square.js",foreground:"0087ff"},{token:"delimiter.bracket.js",foreground:"0087ff"},{token:"this",foreground:"cb4b16"}],colors:{"editor.foreground":"#657b83","editor.background":"#fdf6e3","editor.selectionBackground":"#eee8d5","editor.lineHighlightBackground":"#eee8d5","editorCursor.foreground":"#657b83","editorWhitespace.foreground":"#eee8d5","editorIndentGuide.activeBackground":"#eee8d5","editor.selectionHighlightBorder":"#073642"}}),e("dracula",{base:"vs-dark",inherit:!0,rules:[{background:"282A36",foreground:"F8F8F2",token:""},{foreground:"6272A4",token:"comment"},{foreground:"F1FA8C",token:"string"},{token:"number",foreground:"BD93F9"},{token:"otherkeyvars",foreground:"BD93F9"},{foreground:"FF79C6",token:"function"},{foreground:"FF79C6",token:"keyword"},{token:"storage.type.function.js",foreground:"FF79C6"},{token:"ns",foreground:"FFB86C",fontStyle:"italic"},{token:"netscriptfunction",foreground:"FF79C6"},{token:"otherkeywords",foreground:"FF68A7"},{token:"type.identifier.js",foreground:"7EE9FD",fontStyle:"italic"},{token:"delimiter.square.js",foreground:"FFD709"},{token:"delimiter.parenthesis.js",foreground:"FFD709"},{token:"delimiter.bracket.js",foreground:"FFD709"},{token:"this",foreground:"BD93F9",fontStyle:"italic"}],colors:{"editor.foreground":"#F8F8F2","editor.background":"#282A36","editorLineNumber.foreground":"#6272A4","editor.selectionBackground":"#44475A","editor.selectionHighlightBackground":"#424450","editor.foldBackground":"#21222C","editor.wordHighlightBackground":"#8BE9FD50","editor.wordHighlightStrongBackground":"#50FA7B50","editor.findMatchBackground":"#FFB86C80","editor.findMatchHighlightBackground":"#FFFFFF40","editor.findRangeHighlightBackground":"#44475A75","editor.hoverHighlightBackground":"#8BE9FD50","editor.lineHighlightBorder":"#44475A","editor.rangeHighlightBackground":"#BD93F915","editor.snippetTabstopHighlightBackground":"#282A36","editor.snippetTabstopHighlightBorder":"#6272A4","editor.snippetFinalTabstopHighlightBackground":"#282A36","editor.snippetFinalTabstopHighlightBorder":"#50FA7B"}}),e("one-dark",{base:"vs-dark",inherit:!0,rules:[{token:"",background:"333842",foreground:"ABB2BF"},{token:"comment",foreground:"5C6370"},{token:"string",foreground:"98C379"},{token:"number",foreground:"D19A66"},{token:"function",foreground:"C678DD"},{token:"keyword",foreground:"C678DD"},{token:"otherkeyvars",foreground:"D19A66"},{token:"otherkeywords",foreground:"C678DD"},{token:"ns",foreground:"E06C75"},{token:"netscriptfunction",foreground:"61AFEF"},{token:"type.identifier",foreground:"E5C07B"},{token:"delimiter",foreground:"ABB2BF"},{token:"this",foreground:"E06C75"}],colors:{"editor.background":"#282C34","editor.foreground":"#ABB2BF","editor.lineHighlightBackground":"#99BBFF0A","editor.selectionBackground":"#3E4451","editor.findMatchHighlightBackground":"#528BFF3D","editorCursor.foreground":"#528BFF","editorHoverWidget.background":"#21252B","editorHoverWidget.border":"#181A1F","editorIndentGuide.background":"#ABB2BF26","editorIndentGuide.activeBackground":"#626772","editorLineNumber.foreground":"#636D83","editorLineNumber.activeForeground":"#ABB2BF","editorSuggestWidget.background":"#21252B","editorSuggestWidget.border":"#181A1F","editorSuggestWidget.selectedBackground":"#2C313A","editorWhitespace.foreground":"#ABB2BF26","editorWidget.background":"#21252B","editorWidget.border":"#3A3F4B","input.background":"#1B1D23","input.border":"#181A1F","peekView.border":"#528BFF","peekViewResult.background":"#21252B","peekViewResult.selectionBackground":"#2C313A","peekViewTitle.background":"#1B1D23","peekViewEditor.background":"#1B1D23","scrollbarSlider.background":"#4E566680","scrollbarSlider.activeBackground":"#747D9180","scrollbarSlider.hoverBackground":"#5A637580"}})}},88305:(e,t,n)=>{"use strict";n.d(t,{S:()=>l});var r=n(67294),a=n(46447),o=n(30120),i=n(52947),s=n(24815);function l(e){let{editor:t,vim:n,onOpenNextTab:l,onOpenPreviousTab:c,onSave:u}=e;const[m,f]=(0,r.useState)(null),h=(0,r.useRef)(null),d=(0,r.useRef)({save:u,openNextTab:l,openPreviousTab:c});return d.current={save:u,openNextTab:l,openPreviousTab:c},(0,r.useEffect)((()=>{if(n&&t&&!m)try{f(a.vM(t,h.current)),a.hD.Vim.defineEx("write","w",(function(){d.current.save()})),a.hD.Vim.defineEx("quit","q",(function(){i.F.toPage(s.T3.Terminal)}));const e=()=>{d.current.save(),i.F.toPage(s.T3.Terminal)};a.hD.Vim.defineEx("wqriteandquit","wq",e),a.hD.Vim.defineEx("xriteandquit","x",e),a.hD.Vim.defineAction("nextTabs",(function(e,t){let{repeat:n=1}=t;d.current.openNextTab(n)})),a.hD.Vim.defineAction("prevTabs",(function(e,t){let{repeat:n=1}=t;d.current.openPreviousTab(n)})),a.hD.Vim.mapCommand("gt","action","nextTabs",{},{context:"normal"}),a.hD.Vim.mapCommand("gT","action","prevTabs",{},{context:"normal"}),t.focus()}catch(e){console.error("An error occurred while loading monaco-vim:"),console.error(e)}else n||(null==m||m.dispose(),f(null));return()=>{null==m||m.dispose()}}),[n,t,m]),{VimStatus:r.createElement(o.Z,{ref:h,className:"vim-display",display:"flex",flexGrow:"0",flexDirection:"row",sx:{p:1},alignItems:"center"})}}},39602:(e,t,n)=>{"use strict";n.d(t,{HP:()=>i,ii:()=>o,nr:()=>a});var r=n(97467);function a(e,t){var n;const a=e[t],o=(0,r.WT)(a.hostname);if(null===o)throw new Error(`Server '${a.hostname}' should not be null, but it is.`);return(null===(n=o.getContentFile(a.path))||void 0===n?void 0:n.content)??null}function o(e,t){const n=e[t],r=a(e,t);return null===r||r!==n.code?" *":""}function i(e,t,n){const[r]=e.splice(t,1);e.splice(n,0,r)}},97467:(e,t,n)=>{"use strict";n.d(t,{Bj:()=>v,T$:()=>d,TJ:()=>p,WT:()=>f,XX:()=>h,a9:()=>k,gd:()=>b,hG:()=>g,jG:()=>y,mh:()=>w,oU:()=>E});var r=n(89916),a=n(16014),o=n(37931),i=n(92666),s=n(94515),l=n(40425),c=n(97740),u=n(473);n(19918);let m={};function f(e){if(Object.hasOwn(m,e)){const t=m[e];if(t)return t}if(!(0,u.O)(e))return function(e){for(const t of Object.keys(m)){const n=m[t];if(n.hostname==e)return n}return null}(e);const t=function(e){for(const t of Object.keys(m)){const n=m[t];if(n.ip===e)return n}}(e);return void 0!==t?t:null}function h(){const e=[];for(const t of Object.keys(m))e.push(m[t]);return e}function d(e){for(const t of Object.keys(m)){const n=m[t];if(n.ip===e||n.hostname===e){delete m[t];break}}}function p(e){for(const t in m)if(m[t].ip===e)return!0;return!1}function g(){let e;do{e=(0,o.r)()}while(p(e));return e}function y(e){if(f(e.hostname))throw console.warn(`Hostname of the server thats being added: ${e.hostname}`),console.warn(`The server that already has this IP is: ${m[e.hostname].hostname}`),new Error("Error: Trying to add a server with an existing IP");m[e.hostname]=e}const b=(e,t)=>{m[t]=m[e],delete m[e]};function v(e){const t=[];for(let e=0;e<15;e++)t.push([]);const n=e=>"number"==typeof e?e:(0,i.X)(e.min,e.max);for(const e of a.q){const a={hostname:e.hostname,ip:g(),numOpenPortsRequired:e.numOpenPortsRequired,organizationName:e.organizationName};void 0!==e.maxRamExponent&&(a.maxRam=Math.pow(2,n(e.maxRamExponent))),e.hackDifficulty&&(a.hackDifficulty=n(e.hackDifficulty)),e.moneyAvailable&&(a.moneyAvailable=n(e.moneyAvailable)),e.requiredHackingSkill&&(a.requiredHackingSkill=n(e.requiredHackingSkill)),e.serverGrowth&&(a.serverGrowth=n(e.serverGrowth));const o=new r.x(a);for(const t of e.literature||[])o.messages.push(t);o.hostname===l.r.WorldDaemon&&(o.requiredHackingSkill*=c.dQ.WorldDaemonDifficulty),y(o),void 0!==e.networkLayer&&t[n(e.networkLayer)-1].push(o)}const o=(e,t)=>{for(const a of e)n=a,r=t(),n.serversOnNetwork.push(r.hostname),r.serversOnNetwork.push(n.hostname);var n,r};o(t[0],(()=>e));for(let e=1;e{return(n=t[e-1])[Math.floor(Math.random()*n.length)];var n}))}function k(){for(const e of Object.keys(m))delete m[e];m={}}function w(e){m=JSON.parse(e,s.Ro)}function E(){return JSON.stringify(m)}},14750:(e,t,n)=>{"use strict";n.d(t,{W:()=>y});var r=n(79173),a=n(73741),o=n(69917),i=n(27757),s=n(48897),l=n(94515),c=n(70769),u=n(37931),m=n(7165),f=n(84555),h=n(89194),d=n(96486),p=n.n(d),g=n(51087);class y{contracts=[];cpuCores=1;ftpPortOpen=!1;hasAdminRights=!1;hostname="home";httpPortOpen=!1;ip="1.1.1.1";isConnectedTo=!1;maxRam=0;messages=[];organizationName="";programs=[];ramUsed=0;runningScriptMap=new Map;savedScripts=void 0;scripts=new m.X;serversOnNetwork=[];smtpPortOpen=!1;sqlPortOpen=!1;sshPortOpen=!1;textFiles=new m.X;purchasedByPlayer=!1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{hostname:"",ip:(0,u.r)()};this.ip=e.ip?e.ip:(0,u.r)(),this.hostname=e.hostname,this.organizationName=null!=e.organizationName?e.organizationName:"",this.isConnectedTo=null!=e.isConnectedTo&&e.isConnectedTo,this.hasAdminRights=null!=e.adminRights&&e.adminRights}addContract(e){this.contracts.push(e)}getContract(e){for(const t of this.contracts)if(t.fn===e)return t;return null}getContentFile(e){return((0,s.e)(e)?this.textFiles.get(e):this.scripts.get(e))??null}isRunning(e){const t=(0,c.jz)(p().escapeRegExp(e));for(const e of this.runningScriptMap.keys())if(t.test(e))return!0;return!1}removeContract(e){const t=this.contracts.findIndex((t=>t.fn===("string"==typeof e?e:e.fn)));t>-1&&this.contracts.splice(t,1)}removeFile(e){if((0,s.e)(e))return this.textFiles.get(e)?(this.textFiles.delete(e),{res:!0}):{res:!1,msg:`Text file ${e} not found.`};if((0,o.UH)(e)){const t=this.scripts.get(e);return t?this.isRunning(e)?{res:!1,msg:"Cannot delete a script that is currently running!"}:(t.invalidateModule(),this.scripts.delete(e),{res:!0}):{res:!1,msg:`Script ${e} not found.`}}if((0,f.LL)(e)){const t=this.programs.findIndex((t=>t===e));return-1===t?{res:!1,msg:`Program ${e} does not exist`}:(this.programs.splice(t,1),{res:!0})}if(e.endsWith(".lit")){const t=this.messages.findIndex((t=>t===e));return-1===t?{res:!1,msg:`Literature file ${e} does not exist`}:(this.messages.splice(t,1),{res:!0})}if(e.endsWith(".cct")){const t=this.contracts.findIndex((e=>e));return-1===t?{res:!1,msg:`Contract file ${e} does not exist`}:(this.contracts.splice(t,1),{res:!0})}return{res:!1,msg:`Unhandled file extension on file path ${e}`}}runScript(e){let t=this.runningScriptMap.get(e.scriptKey);t||(t=new Map,this.runningScriptMap.set(e.scriptKey,t)),t.set(e.pid,e)}setMaxRam(e){this.maxRam=e}updateRamUsed(e){this.ramUsed=e}pushProgram(e){if(this.programs.includes(e))return;const t=this.programs.findIndex((t=>t.startsWith(e)));t>-1&&this.programs.splice(t,1),this.programs.push(e)}writeToScriptFile(e,t){const n=this.scripts.get(e);if(n)return n.content=t,{overwritten:!0};const a=new r.X(e,t,this.hostname);return this.scripts.set(e,a),{overwritten:!1}}writeToTextFile(e,t){const n=this.textFiles.get(e);if(n)return n.text=t,{overwritten:!0};const r=new a.w(e,t);return this.textFiles.set(e,r),{overwritten:!1}}writeToContentFile(e,t){return(0,s.e)(e)?this.writeToTextFile(e,t):this.writeToScriptFile(e,t)}toJSONBase(e,t){const n=(0,l.L3)(e,this,t);if(g.Z.ExcludeRunningScriptsFromSave)return n.data.runningScripts=[],n;const r=[];for(const e of this.runningScriptMap.values())for(const t of e.values())t.temporary||r.push(t);return n.data.runningScripts=r,n}static fromJSONBase(e,t,n){const r=(0,l.Id)(t,e.data,n);if(r.savedScripts=e.data.runningScripts,!Array.isArray(r.textFiles))return r;const a=(0,i.RL)("v2.3FileChanges/");let c=0;const u=Array.isArray(r.scripts)?r.scripts:[...r.scripts.values()];r.scripts=new m.X;for(const e of u){e.filename.endsWith(".ns")&&(e.filename=e.filename+".js");let t=(0,o.L6)(e.filename);t||(t=`${a}script${++c}.js`,e.content=`// Original path: ${e.filename}. Path was no longer valid\n`+e.content),e.filename=t,r.scripts.set(t,e)}let f=0;const h=r.textFiles;r.textFiles=new m.X;for(const e of h){const t=e.fn??e.filename;delete e.fn;let n=(0,s.T)(t);n||(n=`${a}text${++f}.txt`,e.content=`// Original path: ${e.filename}. Path was no longer valid\n`+e.content),e.filename=n,r.textFiles.set(n,e)}return(c||f)&&(r.savedScripts=[]),r}static getIncludedKeys(e){return(0,h.i)(e,{removedKeys:["runningScriptMap","savedScripts","ramUsed"]})}}},89916:(e,t,n)=>{"use strict";n.d(t,{x:()=>l});var r=n(14750),a=n(97740),o=n(23999),i=n(37931),s=n(94515);class l extends r.W{backdoorInstalled=!1;baseDifficulty=1;hackDifficulty=1;minDifficulty=1;moneyAvailable=0;moneyMax=0;numOpenPortsRequired=5;openPortCount=0;requiredHackingSkill=1;serverGrowth=1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{hostname:"",ip:(0,i.r)()};super(e),(this.hostname.startsWith("hacknet-node-")||this.hostname.startsWith("hacknet-server-"))&&(this.hostname=(0,o.v)(10)),this.purchasedByPlayer=null!=e.purchasedByPlayer&&e.purchasedByPlayer,this.maxRam=null!=e.maxRam?e.maxRam:0,this.requiredHackingSkill=null!=e.requiredHackingSkill?e.requiredHackingSkill:1;const t=e.moneyAvailable??0;this.moneyAvailable=t*a.dQ.ServerStartingMoney,this.moneyMax=25*t*a.dQ.ServerMaxMoney;const n=null!=e.hackDifficulty?e.hackDifficulty*a.dQ.ServerStartingSecurity:1;this.hackDifficulty=Math.min(n,100),this.baseDifficulty=this.hackDifficulty,this.minDifficulty=Math.min(Math.max(1,Math.round(n/3)),100),this.serverGrowth=null!=e.serverGrowth?e.serverGrowth:1,this.numOpenPortsRequired=null!=e.numOpenPortsRequired?e.numOpenPortsRequired:5}capDifficulty(){this.hackDifficulty100&&(this.hackDifficulty=100)}changeMinimumSecurity(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?this.minDifficulty*=e:this.minDifficulty+=e,this.minDifficulty=Math.max(1,this.minDifficulty)}changeMaximumMoney(e){const t=1e13;if(this.moneyMax>t){const n=this.moneyMax-t;e=1+(e-1)/Math.log(n)/Math.log(8)}this.moneyMax*=e}fortify(e){this.hackDifficulty+=e,this.capDifficulty()}weaken(e){this.hackDifficulty-=e*a.dQ.ServerWeakenRate,this.capDifficulty()}toJSON(){return this.toJSONBase("Server",c)}static fromJSON(e){return r.W.fromJSONBase(e,l,c)}}const c=r.W.getIncludedKeys(l);s.gY.Server=l},2517:(e,t,n)=>{"use strict";n.d(t,{T_:()=>v,VQ:()=>y,a_:()=>d,iw:()=>h,pw:()=>g,xy:()=>b,yk:()=>p});var r=n(97467),a=n(89916),o=n(7987),i=n(97740),s=n(72938),l=n(49173),c=n(33244),u=n(21430),m=n(75350),f=n(21951);function h(e){let t=e.hostname.replace(/ /g,"-");if(null!=e.ip&&(0,r.TJ)(e.ip)&&(e.ip=(0,r.hG)()),null!=(0,r.WT)(t)){"-0"!=t.slice(-2)&&(t=`${t}-0`);for(let e=0;e<200&&(t=t.replace(/-[0-9]+$/,`-${e}`),null!=(0,r.WT)(t));++e);}return e.hostname=t,new a.x(e)}function d(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(!e.serverGrowth)return 1/0;const r=e.hackDifficulty??100;let a=1+(s.t.ServerBaseGrowthRate-1)/r;a>s.t.ServerMaxGrowthRate&&(a=s.t.ServerMaxGrowthRate);const o=e.serverGrowth/100,c=1+(n-1)/16,u=Math.log(t)/(Math.log(a)*l.J5.mults.hacking_grow*o*i.dQ.ServerGrowthRate*c);return u}function p(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:l.J5;if(!e.serverGrowth)return 1/0;const o=e.moneyMax??1,c=e.hackDifficulty??100;if(n<0&&(n=0),t>o&&(t=o),t<=n)return 0;const u=1+(s.t.ServerBaseGrowthRate-1)/c,m=Math.min(u,s.t.ServerMaxGrowthRate),f=e.serverGrowth/100,h=1+(r-1)/16,d=f*a.mults.hacking_grow*h*i.dQ.ServerGrowthRate,p=d*Math.log(m),g=n*p+Math.log(t*p);let y;if(g0&&(y-=Math.log(g));let b=y/p-n,v=m**d;v==1/0&&(v=1e300);let k=1/0;do{let e=v**b;e==1/0&&(e=1e300);const r=n+b;let a=r*e-t;a==1/0&&(a=1e300),k=a/(r*p+1)/e,b-=k}while(Math.abs(k)>=1);const w=Math.floor(b);if(t<=(n+w)*Math.pow(m,w*d))return w;const E=Math.ceil(b);return t<=(n+E)*Math.pow(m,E*d)?E:E+1}function g(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=(0,o.C)(e,t,l.J5,n);r<1&&(console.warn("serverGrowth calculated to be less than 1"),r=1);const a=e.moneyAvailable;if(e.moneyAvailable+=1*t,e.moneyAvailable*=r,(0,u.q)(e.moneyMax)&&isNaN(e.moneyAvailable)&&(e.moneyAvailable=e.moneyMax),(0,u.q)(e.moneyMax)&&e.moneyAvailable>e.moneyMax&&(e.moneyAvailable=e.moneyMax),a!==e.moneyAvailable){let r=p(e,e.moneyAvailable,a,n);r=Math.min(Math.max(0,Math.ceil(r)),t),e.fortify(2*s.t.ServerFortifyAmount*r)}return e.moneyAvailable/a}function y(e){const t=e.programs.includes(c.CompletedProgramName.bitFlume);if(e.programs.length=0,e.serversOnNetwork=[],e.isConnectedTo=!0,e.ramUsed=0,e.programs.push(c.CompletedProgramName.nuke),t&&e.programs.push(c.CompletedProgramName.bitFlume),e.messages.length=0,e.messages.push(c.LiteratureName.HackersStartingHandbook),0!==e.runningScriptMap.size){console.error("Some runningScripts were still present on home during prestige");for(const[t,n]of e.runningScriptMap){console.error(`script key: ${t}: ${n.size} scripts`);for(const e of n.keys())m.R.has(e)&&(0,f._)(e);n.clear()}e.runningScriptMap.clear()}}function b(e,t){return t>e.serversOnNetwork.length?(console.error("Tried to get server on network that was out of range"),null):(0,r.WT)(e.serversOnNetwork[t])}function v(e){return e instanceof a.x&&e.backdoorInstalled}},89673:(e,t,n)=>{"use strict";n.d(t,{Or:()=>d,RI:()=>g,VZ:()=>h,aZ:()=>m,ax:()=>b,eV:()=>f,kq:()=>p,y7:()=>y});var r=n(97467),a=n(2517),o=n(97740),i=n(72938),s=n(49173),l=n(39463),c=n(66579),u=n(75350);function m(e){const t=Math.round(e);if(isNaN(t)||!(0,c.w)(t)||1!==Math.sign(t))return 1/0;if(t>g())return 1/0;const n=Math.max(0,Math.log(t)/Math.log(2)-6);return t*i.t.BaseCostFor1GBOfRamServer*o.dQ.PurchasedServerCost*Math.pow(o.dQ.PurchasedServerSoftcap,n)}const f=(e,t)=>{const n=(0,r.WT)(e);if(!n)throw new Error(`Server '${e}' not found.`);if(!s.J5.purchasedServers.includes(e))throw new Error(`Server '${e}' not a purchased server.`);if(isNaN(t)||!(0,c.w)(t)||1!==Math.sign(t))throw new Error(`${t} is not a positive power of 2`);if(n.maxRam>=t)throw new Error(`'${e}' current ram (${n.maxRam}) is not bigger than new ram (${t})`);return m(t)-m(n.maxRam)},h=(e,t)=>{const n=(0,r.WT)(e);if(!n)throw new Error(`Server '${e}' not found.`);const a=f(e,t);if(!s.J5.canAfford(a))throw new Error(`You don't have enough money to upgrade '${e}'.`);s.J5.loseMoney(a,"servers"),n.maxRam=t},d=(e,t)=>{const n=(0,r.WT)(e);if(!n)throw new Error(`Server '${e}' doesn't exists.`);if((0,r.WT)(t))throw new Error(`Server '${t}' already exists.`);if(!s.J5.purchasedServers.includes(e))throw new Error(`Server '${e}' is not a player server.`);const a=(e,t,n)=>e.map((e=>e===t?n:e));s.J5.purchasedServers=a(s.J5.purchasedServers,e,t),s.J5.currentServer===e&&(s.J5.currentServer=t);const o=s.J5.getHomeComputer();o.serversOnNetwork=a(o.serversOnNetwork,e,t),n.serversOnNetwork=a(n.serversOnNetwork,e,t);for(const e of n.runningScriptMap.values())for(const n of e.values()){n.server=t;const e=u.R.get(n.pid);e&&(e.hostname=t)}n.scripts.forEach((e=>e.server=t)),n.hostname=t,(0,r.gd)(e,t)};function p(){return Math.round(i.t.PurchasedServerLimit*o.dQ.PurchasedServerLimit)}function g(){const e=Math.round(i.t.PurchasedServerMaxRam*o.dQ.PurchasedServerMaxRam);return 1<<31-Math.clz32(e)}function y(e,t,n){if(!s.J5.canAfford(n))return void(0,l.X)("You don't have enough money to purchase this server!");if(s.J5.purchasedServers.length>=p())return void(0,l.X)("You have reached the maximum limit of "+p()+" servers. You cannot purchase any more. You can delete some of your purchased servers using the deleteServer() Netscript function in a script");if(""==e)return void(0,l.X)("You must enter a hostname for your new server!");const o=(0,a.iw)({adminRights:!0,hostname:e,ip:(0,r.hG)(),isConnectedTo:!1,maxRam:t,organizationName:"",purchasedByPlayer:!0});(0,r.jG)(o),s.J5.purchasedServers.push(o.hostname);const i=s.J5.getHomeComputer();i.serversOnNetwork.push(o.hostname),o.serversOnNetwork.push(i.hostname),s.J5.loseMoney(n,"servers"),(0,l.X)("Server successfully purchased with hostname "+o.hostname)}function b(){const e=s.J5.getUpgradeHomeRamCost();if(!s.J5.canAfford(e))return void(0,l.X)("You do not have enough money to purchase additional RAM for your home computer");const t=s.J5.getHomeComputer();t.maxRam>=i.t.HomeComputerMaxRam?(0,l.X)("You cannot upgrade your home computer RAM because it is at its maximum possible value"):(t.maxRam*=2,s.J5.loseMoney(e,"servers"))}},40425:(e,t,n)=>{"use strict";n.d(t,{r:()=>r});const r={Home:"home",FulcrumSecretTechnologies:"fulcrumassets",CyberSecServer:"CSEC",NiteSecServer:"avmnite-02h",TheBlackHandServer:"I.I.I.I",BitRunnersServer:"run4theh111z",TheDarkArmyServer:".",DaedalusServer:"The-Cave",WorldDaemon:"w0r1d_d43m0n",DarkWeb:"darkweb"}},16014:(e,t,n)=>{"use strict";n.d(t,{q:()=>o});var r=n(33244),a=n(40425);const o=[{hackDifficulty:99,hostname:r.LocationName.AevumECorp.toLowerCase(),moneyAvailable:{max:7e10,min:3e10},networkLayer:15,numOpenPortsRequired:5,organizationName:r.LocationName.AevumECorp,requiredHackingSkill:{max:1400,min:1050},serverGrowth:99,specialName:r.LocationName.AevumECorp},{hackDifficulty:99,hostname:r.LocationName.Sector12MegaCorp.toLowerCase(),moneyAvailable:{max:6e10,min:4e10},networkLayer:15,numOpenPortsRequired:5,organizationName:r.LocationName.Sector12MegaCorp,requiredHackingSkill:{max:1350,min:1100},serverGrowth:99,specialName:r.LocationName.Sector12MegaCorp},{hackDifficulty:{max:88,min:72},hostname:"b-and-a",moneyAvailable:{max:3e10,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:r.LocationName.AevumBachmanAndAssociates,requiredHackingSkill:{max:1150,min:900},serverGrowth:{max:80,min:60},specialName:r.LocationName.AevumBachmanAndAssociates},{hackDifficulty:{max:97,min:88},hostname:"blade",literature:[r.LiteratureName.BeyondMan],maxRamExponent:{max:9,min:5},moneyAvailable:{max:4e10,min:1e10},networkLayer:14,numOpenPortsRequired:5,organizationName:r.LocationName.Sector12BladeIndustries,requiredHackingSkill:{max:1200,min:900},serverGrowth:{max:85,min:55},specialName:r.LocationName.Sector12BladeIndustries},{hackDifficulty:99,hostname:r.LocationName.VolhavenNWO.toLowerCase(),literature:[r.LiteratureName.TheHiddenWorld],moneyAvailable:{max:4e10,min:2e10},networkLayer:14,numOpenPortsRequired:5,organizationName:r.LocationName.VolhavenNWO,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:95,min:65},specialName:r.LocationName.VolhavenNWO},{hackDifficulty:{max:65,min:45},hostname:"clarkinc",literature:[r.LiteratureName.BeyondMan,r.LiteratureName.CostOfImmortality],moneyAvailable:{max:25e9,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:r.LocationName.AevumClarkeIncorporated,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:75,min:45},specialName:r.LocationName.AevumClarkeIncorporated},{hackDifficulty:{max:99,min:90},hostname:"omnitek",literature:[r.LiteratureName.CodedIntelligence,r.LiteratureName.HistoryOfSynthoids],maxRamExponent:{max:9,min:7},moneyAvailable:{max:22e9,min:13e9},networkLayer:13,numOpenPortsRequired:5,organizationName:r.LocationName.VolhavenOmniTekIncorporated,requiredHackingSkill:{max:1100,min:900},serverGrowth:{max:99,min:95},specialName:r.LocationName.VolhavenOmniTekIncorporated},{hackDifficulty:{max:75,min:55},hostname:"4sigma",moneyAvailable:{max:25e9,min:15e9},networkLayer:13,numOpenPortsRequired:5,organizationName:r.LocationName.Sector12FourSigma,requiredHackingSkill:{max:1250,min:900},serverGrowth:{max:99,min:75},specialName:r.LocationName.Sector12FourSigma},{hackDifficulty:{max:99,min:95},hostname:"kuai-gong",moneyAvailable:{max:3e10,min:2e10},networkLayer:13,numOpenPortsRequired:5,organizationName:r.LocationName.ChongqingKuaiGongInternational,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:99,min:90},specialName:r.LocationName.ChongqingKuaiGongInternational},{hackDifficulty:{max:97,min:83},hostname:"fulcrumtech",literature:[r.LiteratureName.SimulatedReality],maxRamExponent:{max:11,min:7},moneyAvailable:{max:18e8,min:14e8},networkLayer:12,numOpenPortsRequired:5,organizationName:r.LocationName.AevumFulcrumTechnologies,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:99,min:80},specialName:r.LocationName.AevumFulcrumTechnologies},{hackDifficulty:99,hostname:"fulcrumassets",moneyAvailable:1e6,networkLayer:15,numOpenPortsRequired:5,organizationName:r.LocationName.AevumFulcrumTechnologies,requiredHackingSkill:{max:1600,min:1100},serverGrowth:1,specialName:a.r.FulcrumSecretTechnologies},{hackDifficulty:{max:92,min:78},hostname:"stormtech",moneyAvailable:{max:12e8,min:1e9},networkLayer:12,numOpenPortsRequired:5,organizationName:r.LocationName.IshimaStormTechnologies,requiredHackingSkill:{max:1075,min:875},serverGrowth:{max:92,min:68},specialName:r.LocationName.IshimaStormTechnologies},{hackDifficulty:{max:96,min:84},hostname:"defcomm",moneyAvailable:{max:95e7,min:8e8},networkLayer:9,numOpenPortsRequired:5,organizationName:r.LocationName.NewTokyoDefComm,requiredHackingSkill:{max:1050,min:850},serverGrowth:{max:73,min:47},specialName:r.LocationName.NewTokyoDefComm},{hackDifficulty:{max:90,min:70},hostname:"infocomm",moneyAvailable:{max:9e8,min:6e8},networkLayer:10,numOpenPortsRequired:5,organizationName:"InfoComm",requiredHackingSkill:{max:950,min:875},serverGrowth:{max:75,min:35}},{hackDifficulty:{max:95,min:85},hostname:"helios",literature:[r.LiteratureName.BeyondMan],maxRamExponent:{max:8,min:5},moneyAvailable:{max:75e7,min:55e7},networkLayer:12,numOpenPortsRequired:5,organizationName:r.LocationName.VolhavenHeliosLabs,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:80,min:70},specialName:r.LocationName.VolhavenHeliosLabs},{hackDifficulty:{max:90,min:80},hostname:r.LocationName.NewTokyoVitaLife.toLowerCase(),literature:[r.LiteratureName.AGreenTomorrow],maxRamExponent:{max:7,min:4},moneyAvailable:{max:8e8,min:7e8},networkLayer:12,numOpenPortsRequired:5,organizationName:r.LocationName.NewTokyoVitaLife,requiredHackingSkill:{max:900,min:775},serverGrowth:{max:80,min:60},specialName:r.LocationName.NewTokyoVitaLife},{hackDifficulty:{max:95,min:85},hostname:"icarus",moneyAvailable:{max:1e9,min:9e8},networkLayer:9,numOpenPortsRequired:5,organizationName:r.LocationName.Sector12IcarusMicrosystems,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:95,min:85},specialName:r.LocationName.Sector12IcarusMicrosystems},{hackDifficulty:{max:90,min:80},hostname:"univ-energy",maxRamExponent:{max:7,min:4},moneyAvailable:{max:12e8,min:11e8},networkLayer:9,numOpenPortsRequired:4,organizationName:r.LocationName.Sector12UniversalEnergy,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:90,min:80},specialName:r.LocationName.Sector12UniversalEnergy},{hackDifficulty:{max:80,min:70},hostname:"titan-labs",literature:[r.LiteratureName.CodedIntelligence],maxRamExponent:{max:7,min:4},moneyAvailable:{max:9e8,min:75e7},networkLayer:11,numOpenPortsRequired:5,organizationName:"Titan Laboratories",requiredHackingSkill:{max:875,min:800},serverGrowth:{max:80,min:60}},{hackDifficulty:{max:75,min:65},hostname:"microdyne",literature:[r.LiteratureName.SyntheticMuscles],maxRamExponent:{max:6,min:4},moneyAvailable:{max:7e8,min:5e8},networkLayer:11,numOpenPortsRequired:5,organizationName:"Microdyne Technologies",requiredHackingSkill:{max:875,min:800},serverGrowth:{max:90,min:70}},{hackDifficulty:{max:80,min:70},hostname:"taiyang-digital",literature:[r.LiteratureName.AGreenTomorrow,r.LiteratureName.BrighterThanTheSun],moneyAvailable:{max:9e8,min:8e8},networkLayer:10,numOpenPortsRequired:5,organizationName:"Taiyang Digital",requiredHackingSkill:{max:950,min:850},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:65,min:55},hostname:"galactic-cyber",moneyAvailable:{max:85e7,min:75e7},networkLayer:7,numOpenPortsRequired:5,organizationName:r.LocationName.AevumGalacticCybersystems,requiredHackingSkill:{max:875,min:825},serverGrowth:{max:90,min:70},specialName:r.LocationName.AevumGalacticCybersystems},{hackDifficulty:{max:90,min:80},hostname:r.LocationName.AevumAeroCorp.toLowerCase(),literature:[r.LiteratureName.ManAndMachine],moneyAvailable:{max:12e8,min:1e9},networkLayer:7,numOpenPortsRequired:5,organizationName:r.LocationName.AevumAeroCorp,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:65,min:55},specialName:r.LocationName.AevumAeroCorp},{hackDifficulty:{max:95,min:85},hostname:"omnia",literature:[r.LiteratureName.HistoryOfSynthoids],maxRamExponent:{max:6,min:4},moneyAvailable:{max:1e9,min:9e8},networkLayer:8,numOpenPortsRequired:5,organizationName:r.LocationName.VolhavenOmniaCybersystems,requiredHackingSkill:{max:950,min:850},serverGrowth:{max:70,min:60},specialName:r.LocationName.VolhavenOmniaCybersystems},{hackDifficulty:{max:65,min:55},hostname:"zb-def",literature:[r.LiteratureName.SyntheticMuscles],moneyAvailable:{max:11e8,min:9e8},networkLayer:10,numOpenPortsRequired:4,organizationName:"ZB Defense Industries",requiredHackingSkill:{max:825,min:775},serverGrowth:{max:75,min:65}},{hackDifficulty:{max:80,min:60},hostname:"applied-energetics",moneyAvailable:{max:1e9,min:7e8},networkLayer:11,numOpenPortsRequired:4,organizationName:"Applied Energetics",requiredHackingSkill:{max:850,min:775},serverGrowth:{max:75,min:70}},{hackDifficulty:{max:80,min:70},hostname:"solaris",literature:[r.LiteratureName.AGreenTomorrow,r.LiteratureName.TheFailedFrontier],maxRamExponent:{max:7,min:4},moneyAvailable:{max:9e8,min:7e8},networkLayer:9,numOpenPortsRequired:5,organizationName:r.LocationName.ChongqingSolarisSpaceSystems,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:80,min:70},specialName:r.LocationName.ChongqingSolarisSpaceSystems},{hackDifficulty:{max:85,min:75},hostname:r.LocationName.Sector12DeltaOne.toLowerCase(),moneyAvailable:{max:17e8,min:13e8},networkLayer:8,numOpenPortsRequired:5,organizationName:r.LocationName.Sector12DeltaOne,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:70,min:50},specialName:r.LocationName.Sector12DeltaOne},{hackDifficulty:{max:85,min:75},hostname:"global-pharm",literature:[r.LiteratureName.AGreenTomorrow],maxRamExponent:{max:6,min:3},moneyAvailable:{max:175e7,min:15e8},networkLayer:7,numOpenPortsRequired:4,organizationName:r.LocationName.NewTokyoGlobalPharmaceuticals,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:90,min:80},specialName:r.LocationName.NewTokyoGlobalPharmaceuticals},{hackDifficulty:{max:80,min:60},hostname:"nova-med",moneyAvailable:{max:125e7,min:11e8},networkLayer:10,numOpenPortsRequired:4,organizationName:r.LocationName.IshimaNovaMedical,requiredHackingSkill:{max:850,min:775},serverGrowth:{max:85,min:65},specialName:r.LocationName.IshimaNovaMedical},{hackDifficulty:{max:90,min:70},hostname:"zeus-med",moneyAvailable:{max:15e8,min:13e8},networkLayer:9,numOpenPortsRequired:5,organizationName:"Zeus Medical",requiredHackingSkill:{max:850,min:800},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:80,min:70},hostname:"unitalife",maxRamExponent:{max:6,min:4},moneyAvailable:{max:11e8,min:1e9},networkLayer:8,numOpenPortsRequired:4,organizationName:"UnitaLife Group",requiredHackingSkill:{max:825,min:775},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:80,min:60},hostname:"lexo-corp",maxRamExponent:{max:7,min:4},moneyAvailable:{max:8e8,min:7e8},networkLayer:6,numOpenPortsRequired:4,organizationName:r.LocationName.VolhavenLexoCorp,requiredHackingSkill:{max:750,min:650},serverGrowth:{max:65,min:55},specialName:r.LocationName.VolhavenLexoCorp},{hackDifficulty:{max:60,min:40},hostname:"rho-construction",maxRamExponent:{max:6,min:4},moneyAvailable:{max:7e8,min:5e8},networkLayer:6,numOpenPortsRequired:3,organizationName:r.LocationName.AevumRhoConstruction,requiredHackingSkill:{max:525,min:475},serverGrowth:{max:60,min:40},specialName:r.LocationName.AevumRhoConstruction},{hackDifficulty:{max:70,min:50},hostname:"alpha-ent",literature:[r.LiteratureName.Sector12Crime],maxRamExponent:{max:7,min:4},moneyAvailable:{max:75e7,min:6e8},networkLayer:6,numOpenPortsRequired:4,organizationName:r.LocationName.Sector12AlphaEnterprises,requiredHackingSkill:{max:600,min:500},serverGrowth:{max:60,min:50},specialName:r.LocationName.Sector12AlphaEnterprises},{hackDifficulty:{max:80,min:70},hostname:"aevum-police",maxRamExponent:{max:6,min:4},moneyAvailable:{max:4e8,min:2e8},networkLayer:6,numOpenPortsRequired:4,organizationName:r.LocationName.AevumPolice,requiredHackingSkill:{max:450,min:400},serverGrowth:{max:50,min:30},specialName:r.LocationName.AevumPolice},{hackDifficulty:{max:55,min:45},hostname:"rothman-uni",literature:[r.LiteratureName.SecretSocieties,r.LiteratureName.TheFailedFrontier,r.LiteratureName.TensionsInTechRace],maxRamExponent:{max:7,min:4},moneyAvailable:{max:25e7,min:175e6},networkLayer:5,numOpenPortsRequired:3,organizationName:r.LocationName.Sector12RothmanUniversity,requiredHackingSkill:{max:430,min:370},serverGrowth:{max:45,min:35},specialName:r.LocationName.Sector12RothmanUniversity},{hackDifficulty:{max:85,min:65},hostname:"zb-institute",maxRamExponent:{max:7,min:4},moneyAvailable:{max:11e8,min:8e8},networkLayer:5,numOpenPortsRequired:5,organizationName:r.LocationName.VolhavenZBInstituteOfTechnology,requiredHackingSkill:{max:775,min:725},serverGrowth:{max:85,min:75},specialName:r.LocationName.VolhavenZBInstituteOfTechnology},{hackDifficulty:{max:65,min:45},hostname:"summit-uni",literature:[r.LiteratureName.SecretSocieties,r.LiteratureName.TheFailedFrontier,r.LiteratureName.SyntheticMuscles],maxRamExponent:{max:6,min:4},moneyAvailable:{max:35e7,min:2e8},networkLayer:5,numOpenPortsRequired:3,organizationName:r.LocationName.AevumSummitUniversity,requiredHackingSkill:{max:475,min:425},serverGrowth:{max:60,min:40},specialName:r.LocationName.AevumSummitUniversity},{hackDifficulty:{max:80,min:60},hostname:"syscore",moneyAvailable:{max:6e8,min:4e8},networkLayer:5,numOpenPortsRequired:4,organizationName:r.LocationName.VolhavenSysCoreSecurities,requiredHackingSkill:{max:650,min:550},serverGrowth:{max:70,min:60},specialName:r.LocationName.VolhavenSysCoreSecurities},{hackDifficulty:{max:70,min:60},hostname:"catalyst",literature:[r.LiteratureName.TensionsInTechRace],maxRamExponent:{max:7,min:4},moneyAvailable:{max:55e7,min:3e8},networkLayer:5,numOpenPortsRequired:3,organizationName:"Catalyst Ventures",requiredHackingSkill:{max:450,min:400},serverGrowth:{max:55,min:25}},{hackDifficulty:{max:45,min:35},hostname:"the-hub",maxRamExponent:{max:6,min:3},moneyAvailable:{max:2e8,min:15e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"The Hub",requiredHackingSkill:{max:325,min:275},serverGrowth:{max:55,min:45}},{hackDifficulty:{max:65,min:55},hostname:r.LocationName.VolhavenCompuTek.toLowerCase(),literature:[r.LiteratureName.ManAndMachine],moneyAvailable:{max:25e7,min:22e7},networkLayer:4,numOpenPortsRequired:3,organizationName:r.LocationName.VolhavenCompuTek,requiredHackingSkill:{max:400,min:300},serverGrowth:{max:65,min:45},specialName:r.LocationName.VolhavenCompuTek},{hackDifficulty:{max:80,min:60},hostname:"netlink",literature:[r.LiteratureName.SimulatedReality],maxRamExponent:{max:7,min:4},moneyAvailable:275e6,networkLayer:4,numOpenPortsRequired:3,organizationName:r.LocationName.AevumNetLinkTechnologies,requiredHackingSkill:{max:425,min:375},serverGrowth:{max:75,min:45},specialName:r.LocationName.AevumNetLinkTechnologies},{hackDifficulty:{max:65,min:35},hostname:"johnson-ortho",moneyAvailable:{max:85e6,min:7e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"Johnson Orthopedics",requiredHackingSkill:{max:300,min:250},serverGrowth:{max:65,min:35}},{hackDifficulty:1,hostname:"n00dles",literature:[],maxRamExponent:2,moneyAvailable:7e4,networkLayer:1,numOpenPortsRequired:0,organizationName:r.LocationName.NewTokyoNoodleBar,requiredHackingSkill:1,serverGrowth:3e3,specialName:r.LocationName.NewTokyoNoodleBar},{hackDifficulty:10,hostname:r.LocationName.Sector12FoodNStuff.toLowerCase(),literature:[r.LiteratureName.Sector12Crime],maxRamExponent:4,moneyAvailable:2e6,networkLayer:1,numOpenPortsRequired:0,organizationName:r.LocationName.Sector12FoodNStuff,requiredHackingSkill:1,serverGrowth:5,specialName:r.LocationName.Sector12FoodNStuff},{hackDifficulty:10,hostname:"sigma-cosmetics",maxRamExponent:4,moneyAvailable:23e5,networkLayer:1,numOpenPortsRequired:0,organizationName:"Sigma Cosmetics",requiredHackingSkill:5,serverGrowth:10},{hackDifficulty:15,hostname:"joesguns",maxRamExponent:4,moneyAvailable:25e5,networkLayer:1,numOpenPortsRequired:0,organizationName:r.LocationName.Sector12JoesGuns,requiredHackingSkill:10,serverGrowth:20,specialName:r.LocationName.Sector12JoesGuns},{hackDifficulty:25,hostname:"zer0",maxRamExponent:5,moneyAvailable:75e5,networkLayer:2,numOpenPortsRequired:1,organizationName:"ZER0 Nightclub",requiredHackingSkill:75,serverGrowth:40},{hackDifficulty:20,hostname:"nectar-net",maxRamExponent:4,moneyAvailable:275e4,networkLayer:2,numOpenPortsRequired:0,organizationName:"Nectar Nightclub Network",requiredHackingSkill:20,serverGrowth:25},{hackDifficulty:25,hostname:"neo-net",literature:[r.LiteratureName.TheHiddenWorld],maxRamExponent:5,moneyAvailable:5e6,networkLayer:3,numOpenPortsRequired:1,organizationName:"Neo Nightclub Network",requiredHackingSkill:50,serverGrowth:25},{hackDifficulty:30,hostname:"silver-helix",literature:[r.LiteratureName.NewTriads],maxRamExponent:6,moneyAvailable:45e6,networkLayer:3,numOpenPortsRequired:2,organizationName:"Silver Helix",requiredHackingSkill:150,serverGrowth:30},{hackDifficulty:15,hostname:"hong-fang-tea",literature:[r.LiteratureName.BrighterThanTheSun],maxRamExponent:4,moneyAvailable:3e6,networkLayer:1,numOpenPortsRequired:0,organizationName:"HongFang Teahouse",requiredHackingSkill:30,serverGrowth:20},{hackDifficulty:15,hostname:"harakiri-sushi",maxRamExponent:4,moneyAvailable:4e6,networkLayer:1,numOpenPortsRequired:0,organizationName:"HaraKiri Sushi Bar Network",requiredHackingSkill:40,serverGrowth:40},{hackDifficulty:20,hostname:"phantasy",maxRamExponent:5,moneyAvailable:24e6,networkLayer:3,numOpenPortsRequired:2,organizationName:"Phantasy Club",requiredHackingSkill:100,serverGrowth:35},{hackDifficulty:15,hostname:"max-hardware",maxRamExponent:5,moneyAvailable:1e7,networkLayer:2,numOpenPortsRequired:1,organizationName:"Max Hardware Store",requiredHackingSkill:80,serverGrowth:30},{hackDifficulty:{max:35,min:25},hostname:"omega-net",literature:[r.LiteratureName.TheNewGod],maxRamExponent:5,moneyAvailable:{max:7e7,min:6e7},networkLayer:3,numOpenPortsRequired:2,organizationName:r.LocationName.IshimaOmegaSoftware,requiredHackingSkill:{max:220,min:180},serverGrowth:{max:40,min:30},specialName:r.LocationName.IshimaOmegaSoftware},{hackDifficulty:{max:45,min:35},hostname:"crush-fitness",moneyAvailable:{max:6e7,min:4e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"Crush Fitness",requiredHackingSkill:{max:275,min:225},serverGrowth:{max:33,min:27},specialName:r.LocationName.AevumCrushFitnessGym},{hackDifficulty:30,hostname:"iron-gym",maxRamExponent:5,moneyAvailable:2e7,networkLayer:1,numOpenPortsRequired:1,organizationName:`${r.LocationName.Sector12IronGym} Network`,requiredHackingSkill:100,serverGrowth:20,specialName:r.LocationName.Sector12IronGym},{hackDifficulty:{max:55,min:45},hostname:"millenium-fitness",maxRamExponent:{max:8,min:4},moneyAvailable:25e7,networkLayer:6,numOpenPortsRequired:3,organizationName:"Millenium Fitness Network",requiredHackingSkill:{max:525,min:475},serverGrowth:{max:45,min:25},specialName:r.LocationName.VolhavenMilleniumFitnessGym},{hackDifficulty:{max:65,min:55},hostname:"powerhouse-fitness",maxRamExponent:{max:6,min:4},moneyAvailable:9e8,networkLayer:14,numOpenPortsRequired:5,organizationName:"Powerhouse Fitness",requiredHackingSkill:{max:1100,min:950},serverGrowth:{max:60,min:50},specialName:r.LocationName.Sector12PowerhouseGym},{hackDifficulty:{max:60,min:40},hostname:"snap-fitness",moneyAvailable:45e7,networkLayer:7,numOpenPortsRequired:4,organizationName:"Snap Fitness",requiredHackingSkill:{max:800,min:675},serverGrowth:{max:60,min:40},specialName:r.LocationName.AevumSnapFitnessGym},{hackDifficulty:0,hostname:"run4theh111z",literature:[r.LiteratureName.SimulatedReality,r.LiteratureName.TheNewGod],maxRamExponent:{max:9,min:5},moneyAvailable:0,networkLayer:11,numOpenPortsRequired:4,organizationName:"The Runners",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:a.r.BitRunnersServer},{hackDifficulty:0,hostname:"I.I.I.I",literature:[r.LiteratureName.DemocracyIsDead],maxRamExponent:{max:8,min:4},moneyAvailable:0,networkLayer:5,numOpenPortsRequired:3,organizationName:"I.I.I.I",requiredHackingSkill:{max:365,min:340},serverGrowth:0,specialName:a.r.TheBlackHandServer},{hackDifficulty:0,hostname:"avmnite-02h",literature:[r.LiteratureName.DemocracyIsDead],maxRamExponent:{max:7,min:4},moneyAvailable:0,networkLayer:4,numOpenPortsRequired:2,organizationName:r.FactionName.NiteSec,requiredHackingSkill:{max:220,min:202},serverGrowth:0,specialName:a.r.NiteSecServer},{hackDifficulty:0,hostname:".",maxRamExponent:4,moneyAvailable:0,networkLayer:13,numOpenPortsRequired:4,organizationName:".",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:a.r.TheDarkArmyServer},{hackDifficulty:0,hostname:"CSEC",literature:[r.LiteratureName.DemocracyIsDead],maxRamExponent:3,moneyAvailable:0,networkLayer:2,numOpenPortsRequired:1,organizationName:r.FactionName.CyberSec,requiredHackingSkill:{max:60,min:51},serverGrowth:0,specialName:a.r.CyberSecServer},{hackDifficulty:0,hostname:"The-Cave",literature:[r.LiteratureName.AlphaOmega],moneyAvailable:0,networkLayer:15,numOpenPortsRequired:5,organizationName:"Helios",requiredHackingSkill:925,serverGrowth:0,specialName:a.r.DaedalusServer},{hackDifficulty:0,hostname:"w0r1d_d43m0n",moneyAvailable:0,numOpenPortsRequired:5,organizationName:"w0r1d_d43m0n",requiredHackingSkill:3e3,serverGrowth:0,specialName:a.r.WorldDaemon},{hostname:a.r.DarkWeb,moneyAvailable:0,numOpenPortsRequired:5,organizationName:a.r.DarkWeb,requiredHackingSkill:1,specialName:a.r.DarkWeb}]},7987:(e,t,n)=>{"use strict";n.d(t,{C:()=>o});var r=n(72938),a=n(97740);function o(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(!e.serverGrowth)return 0;const i=e.hackDifficulty??100,s=Math.max(Math.floor(t),0),l=r.t.ServerBaseGrowthRate;let c=1+(l-1)/i;c>r.t.ServerMaxGrowthRate&&(c=r.t.ServerMaxGrowthRate);const u=e.serverGrowth/100,m=s*u*a.dQ.ServerGrowthRate,f=1+(o-1)/16;return Math.pow(c,m*n.mults.hacking_grow*f)}},56412:(e,t,n)=>{"use strict";let r,a;n.d(t,{E:()=>a,L:()=>r}),function(e){e[e.Cost=0]="Cost",e[e.Default=1]="Default",e[e.Reputation=2]="Reputation",e[e.Purchasable=3]="Purchasable"}(r||(r={})),function(e){e[e.Alphabetically=0]="Alphabetically",e[e.AcquirementTime=1]="AcquirementTime"}(a||(a={}))},51087:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(56412),a=n(18746),o=n(15975),i=n(19652);const s={ActiveScriptsServerPageSize:10,ActiveScriptsScriptPageSize:10,AutoexecScript:"",AutosaveInterval:60,CodeInstructionRunTime:25,DisableASCIIArt:!1,DisableHotkeys:!1,DisableTextEffects:!1,DisableOverviewProgressBars:!1,EnableBashHotkeys:!1,EnableHistorySearch:!1,TimestampsFormat:"",Locale:"en",MaxRecentScriptsCapacity:50,MaxLogCapacity:50,MaxPortCapacity:50,MaxTerminalCapacity:500,RemoteFileApiPort:0,SaveGameOnFileSave:!0,SuppressBuyAugmentationConfirmation:!1,SuppressFactionInvites:!1,SuppressMessages:!1,SuppressTravelConfirmation:!1,SuppressBladeburnerPopup:!1,SuppressTIXPopup:!1,SuppressSavedGameToast:!1,SuppressAutosaveDisabledWarnings:!1,UseIEC60027_2:!1,ShowMiddleNullTimeUnit:!1,ExcludeRunningScriptsFromSave:!1,IsSidebarOpened:!0,theme:{...a.u},styles:{...o.j},overview:{x:0,y:0,opened:!0},EditorTheme:{...i.Co},OwnedAugmentationsOrder:r.E.AcquirementTime,PurchaseAugmentationsOrder:r.L.Default,MonacoTheme:"monokai",MonacoInsertSpaces:!0,MonacoTabSize:2,MonacoDetectIndentation:!1,MonacoFontFamily:"Lucida Console",MonacoFontSize:20,MonacoFontLigatures:!1,MonacoVim:!1,MonacoWordWrap:"off",MonacoCursorStyle:"line",MonacoCursorBlinking:"blink",hideTrailingDecimalZeros:!1,hideThousandsSeparator:!1,useEngineeringNotation:!1,disableSuffixes:!1,load(e){const t=JSON.parse(e);t.theme&&Object.assign(s.theme,t.theme),t.styles&&Object.assign(s.styles,t.styles),t.overview&&Object.assign(s.overview,t.overview),t.EditorTheme&&Object.assign(s.EditorTheme,t.EditorTheme),delete t.theme,t.styles,t.overview,t.EditorTheme,Object.assign(s,t)}}},72611:(e,t,n)=>{"use strict";n.d(t,{x:()=>p});var r=n(67294),a=n(51627),o=n(10848),i=n(29894),s=n(61702),l=n(17575),c=n(81138),u=n(60181),m=n(23508),f=n(47206);const h=new WeakMap;function d(e,t){var n;let r=h.get(e);return void 0===r&&(r={},h.set(e,r)),(n=r)[t]??(n[t]=()=>e(t))}function p(e){let{classes:t,icon:n,sidebarOpen:h,key_:p,items:g,page:y,clickPage:b,flash:v}=e;const[k,w]=(0,r.useState)(!0),E=(0,r.useMemo)((()=>({root:t.listitem})),[t.listitem]);return r.createElement(r.Fragment,null,(0,r.useMemo)((()=>r.createElement(o.ZP,{classes:E,button:!0,onClick:()=>w((e=>!e))},r.createElement(i.Z,null,r.createElement(l.Z,{title:h?"":p},r.createElement(n,{color:"primary"}))),r.createElement(s.Z,{primary:r.createElement(c.Z,null,p)}),k?r.createElement(u.Z,{color:"primary"}):r.createElement(m.Z,{color:"primary"}))),[E,h,p,k,n]),r.createElement(a.Z,{in:k,timeout:"auto",unmountOnExit:!0},g.map((e=>{if("object"!=typeof e)return null;const{key_:n,icon:a,count:o,active:i}=e;return r.createElement(f.R,{key:n,key_:n,icon:a,count:o,active:i??y===n,clickFn:d(b,n),flash:v===n,classes:t,sidebarOpen:h})}))))}},47206:(e,t,n)=>{"use strict";n.d(t,{R:()=>u});var r=n(67294),a=n(55274),o=n(10848),i=n(29894),s=n(61702),l=n(17575),c=n(81138);const u=(0,r.memo)((function(e){const t=e.flash?"error":e.active?"primary":"secondary";return r.createElement(o.ZP,{classes:{root:e.classes.listitem},button:!0,key:e.key_,className:e.active?e.classes.active:"",onClick:e.clickFn},r.createElement(i.Z,null,r.createElement(a.Z,{badgeContent:(e.count??0)>0?e.count:void 0,color:"error"},r.createElement(l.Z,{title:e.sidebarOpen?"":e.key_},r.createElement(e.icon,{color:t})))),r.createElement(s.Z,null,r.createElement(c.Z,{color:t},e.key_)))}))},24326:(e,t,n)=>{"use strict";n.d(t,{F:()=>ce});var r=n(67294),a=n(81055),o=n(81719),i=n(73327),s=n(77541),l=n(73310),c=n(97212),u=n(44373),m=n(17575),f=n(19572),h=n(26215),d=n(10848),p=n(29894),g=n(61702),y=n(81138),b=n(65434),v=n(91290),k=n(75058),w=n(81261),E=n(14465),S=n(84855),C=n(58617),x=n(5499),N=n(30061),M=n(52428),A=n(3816),T=n(86235),L=n(28333),R=n(43117),F=n(87703),_=n(54788),I=n(31122),P=n(27036),B=n(9944),O=n(94229),D=n(45225),Z=n(25089),G=n(15573),J=n(89055),W=n(82461),H=n(52947),U=n(24815),j=n(72611),$=n(49173),q=n(72938),z=n(40780),V=n(11397),Y=n(51087),K=n(33244),X=n(30286),Q=n(1041),ee=n(90936),te=n(81881),ne=n(88775);function re(){return re=Object.assign?Object.assign.bind():function(e){for(var t=1;t({width:e.spacing(31),transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.enteringScreen}),overflowX:"hidden"}),ie=e=>({transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen}),overflowX:"hidden",width:`calc(${e.spacing(2)} + 1px)`,[e.breakpoints.up("sm")]:{width:`calc(${e.spacing(7)} + 1px)`}}),se=(0,o.ZP)(l.ZP,{shouldForwardProp:e=>"open"!==e})((e=>{let{theme:t,open:n}=e;return{width:t.spacing(31),whiteSpace:"nowrap",boxSizing:"border-box",...n&&{...oe(t),"& .MuiDrawer-paper":oe(t)},...!n&&{...ie(t),"& .MuiDrawer-paper":ie(t)}}})),le=(0,s.Z)((e=>(0,i.Z)({active:{borderLeft:"3px solid "+e.palette.primary.main},listitem:{}})));function ce(e){(0,ne.S)(200);let t=null;switch(z.wP.currStep){case z.$o.CharacterGoToTerminalPage:case z.$o.ActiveScriptsPage:t=U.T3.Terminal;break;case z.$o.GoToCharacterPage:t=U.T3.Stats;break;case z.$o.TerminalGoToActiveScriptsPage:t=U.T3.ActiveScripts;break;case z.$o.GoToHacknetNodesPage:t=U.T3.Hacknet;break;case z.$o.HacknetNodesGoToWorldPage:t=U.T3.City;break;case z.$o.WorldDescription:t=U.T3.Documentation}const n=$.J5.queuedAugmentations.length,o=$.J5.factionInvitations.filter((e=>!Q.Y.has(e))).length,i=(0,V.c)().length-X.Q.size,s=$.J5.factionInvitations.length>0||$.J5.factions.length>0||$.J5.augmentations.length>0||$.J5.queuedAugmentations.length>0||$.J5.sourceFiles.size>0,l=$.J5.augmentations.length>0||$.J5.queuedAugmentations.length>0||$.J5.sourceFiles.size>0||$.J5.exploits.length>0,x=$.J5.sleeves.length>0,re=!!$.J5.corporation,oe=!!$.J5.gang,ie=Object.values($.J5.jobs).length>0,ce=$.J5.hasWseAccount,ue=!!$.J5.bladeburner,me=$.J5.augmentations.some((e=>e.name===K.AugmentationName.StaneksGift1)),fe=(0,r.useCallback)((e=>{if(e===U.T3.Job)H.F.toPage(e,{location:te.t[Object.keys($.J5.jobs)[0]]});else if(e==U.T3.ScriptEditor)H.F.toPage(e,{});else{if(!(0,U.Pg)(e))throw new Error("Can't handle click on Page "+e);H.F.toPage(e)}t===e&&(0,z.ZF)()}),[t]);(0,r.useEffect)((()=>{function t(t){if(!Y.Z.DisableHotkeys&&!($.J5.currentWork&&$.J5.focus||H.F.page()===U.T3.BitVerse))if(t.code===a.P.T&&t.altKey)t.preventDefault(),fe(U.T3.Terminal);else if(t.code===a.P.C&&t.altKey)t.preventDefault(),fe(U.T3.Stats);else if(t.code===a.P.E&&t.altKey)t.preventDefault(),fe(U.T3.ScriptEditor);else if(t.code===a.P.S&&t.altKey)t.preventDefault(),fe(U.T3.ActiveScripts);else if(t.code===a.P.H&&t.altKey)t.preventDefault(),fe(U.T3.Hacknet);else if(t.code===a.P.W&&t.altKey)t.preventDefault(),fe(U.T3.City);else if(t.code===a.P.J&&t.altKey&&!t.ctrlKey&&!t.metaKey&&ie)t.preventDefault(),fe(U.T3.Job);else if(t.code===a.P.R&&t.altKey)t.preventDefault(),fe(U.T3.Travel);else if(t.code===a.P.P&&t.altKey)t.preventDefault(),fe(U.T3.CreateProgram);else if(t.code===a.P.F&&t.altKey){if(e.page==U.T3.Terminal&&Y.Z.EnableBashHotkeys)return;t.preventDefault(),fe(U.T3.Factions)}else t.code===a.P.A&&t.altKey?(t.preventDefault(),fe(U.T3.Augmentations)):t.code===a.P.U&&t.altKey?(t.preventDefault(),fe(U.T3.Documentation)):t.code===a.P.O&&t.altKey?(t.preventDefault(),fe(U.T3.Options)):t.code===a.P.B&&t.altKey&&$.J5.bladeburner?(t.preventDefault(),fe(U.T3.Bladeburner)):t.code===a.P.G&&t.altKey&&$.J5.gang&&(t.preventDefault(),fe(U.T3.Gang))}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)}),[ie,fe,e.page]);const he=le(),[de,pe]=(0,r.useState)(Y.Z.IsSidebarOpened),ge=()=>pe((e=>(Y.Z.IsSidebarOpened=!e,!e))),ye=(0,r.useMemo)((()=>({root:he.listitem})),[he.listitem]),be=de?f.Z:h.Z;return r.createElement(se,{open:de,anchor:"left",variant:"permanent"},(0,r.useMemo)((()=>r.createElement(d.ZP,{classes:ye,button:!0,onClick:ge},r.createElement(p.Z,null,r.createElement(be,{color:"primary"})),r.createElement(g.Z,{primary:r.createElement(m.Z,{title:(0,ee.v)()},r.createElement(y.Z,null,"Bitburner v",q.t.VersionString))}))),[be,ye]),r.createElement(u.Z,null),r.createElement(c.Z,null,r.createElement(j.x,{key_:"Hacking",page:e.page,clickPage:fe,flash:t,icon:b.Z,sidebarOpen:de,classes:he,items:[{key_:U.T3.Terminal,icon:v.Z},{key_:U.T3.ScriptEditor,icon:k.Z},{key_:U.T3.ActiveScripts,icon:w.Z},{key_:U.T3.CreateProgram,icon:E.Z,count:i},me&&{key_:U.T3.StaneksGift,icon:D.Z}]}),r.createElement(u.Z,null),r.createElement(j.x,{key_:"Character",page:e.page,clickPage:fe,flash:t,icon:G.Z,sidebarOpen:de,classes:he,items:[{key_:U.T3.Stats,icon:S.Z},s&&{key_:U.T3.Factions,icon:C.Z,active:[U.T3.Factions,U.T3.Faction].includes(e.page),count:o},l&&{key_:U.T3.Augmentations,icon:ae,count:n},{key_:U.T3.Hacknet,icon:N.Z},x&&{key_:U.T3.Sleeves,icon:M.Z}]}),r.createElement(u.Z,null),r.createElement(j.x,{key_:"World",page:e.page,clickPage:fe,flash:t,icon:J.Z,sidebarOpen:de,classes:he,items:[{key_:U.T3.City,icon:A.Z,active:[U.T3.City,U.T3.Grafting,U.T3.Location].includes(e.page)},{key_:U.T3.Travel,icon:T.Z},ie&&{key_:U.T3.Job,icon:L.Z},ce&&{key_:U.T3.StockMarket,icon:R.Z},ue&&{key_:U.T3.Bladeburner,icon:F.Z},re&&{key_:U.T3.Corporation,icon:_.Z},oe&&{key_:U.T3.Gang,icon:I.Z}]}),r.createElement(u.Z,null),r.createElement(j.x,{key_:"Help",page:e.page,clickPage:fe,flash:t,icon:W.Z,sidebarOpen:de,classes:he,items:[{key_:U.T3.Milestones,icon:P.Z},{key_:U.T3.Documentation,icon:B.Z},{key_:U.T3.Achievements,icon:Z.Z},{key_:U.T3.Options,icon:O.Z},!1]})))}},14029:(e,t,n)=>{"use strict";n.d(t,{n:()=>a});var r=n(99745);class a{lvl=1;owned=!1;constructor(e,t){const n="BitNode"+e,a=r.tK[n];if(null==a)throw new Error("Invalid Bit Node for this Source File");this.n=e,this.name=`Source-File ${e}: ${a.name}`,this.info=t}}},16264:(e,t,n)=>{"use strict";n.d(t,{J:()=>i,c:()=>s});var r=n(67294),a=n(14029),o=n(99745);const i={};function s(){(0,o.JN)(),i.SourceFile1=new a.n(1,r.createElement(r.Fragment,null,"This Source-File lets the player start with 32GB of RAM on his/her home computer. It also increases all of the player's multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 16%",r.createElement("br",null),"Level 2: 24%",r.createElement("br",null),"Level 3: 28%")),i.SourceFile2=new a.n(2,r.createElement(r.Fragment,null,"This Source-File allows you to form gangs in other BitNodes once your karma decreases to a certain value. It also increases the player's crime success rate, crime money, and charisma multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 24%",r.createElement("br",null),"Level 2: 36%",r.createElement("br",null),"Level 3: 42%")),i.SourceFile3=new a.n(3,r.createElement(r.Fragment,null,"This Source-File lets you create corporations on other BitNodes (although some BitNodes will disable this mechanic) and level 3 permanently unlocks the full API. This Source-File also increases your charisma and company salary multipliers by:",r.createElement("br",null),"Level 1: 8%",r.createElement("br",null),"Level 2: 12%",r.createElement("br",null),"Level 3: 14%")),i.SourceFile4=new a.n(4,r.createElement(r.Fragment,null,"This Source-File lets you access and use the Singularity Functions in every BitNode. Every level of this Source-File reduces the RAM cost of Singularity functions:",r.createElement("br",null),"Level 1: 16x",r.createElement("br",null),"Level 2: 4x",r.createElement("br",null),"Level 3: 1x")),i.SourceFile5=new a.n(5,r.createElement(r.Fragment,null,"This Source-File grants a special new stat called Intelligence. Intelligence is unique because it is permanent and persistent (it never gets reset back to 1). However, gaining Intelligence experience is much slower than other stats. Higher Intelligence levels will boost your production for many actions in the game. In addition, this Source-File will unlock:",r.createElement("br",null),r.createElement("ul",null,r.createElement("li",null,"The ",r.createElement("code",null,"getBitNodeMultipliers()")," Netscript function"),r.createElement("li",null,"Permanent access to Formulas.exe"),r.createElement("li",null,"Access to BitNode multiplier information on the ",r.createElement("b",null,"Stats")," page")),"It will also raise all of your hacking-related multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 8%",r.createElement("br",null),"Level 2: 12%",r.createElement("br",null),"Level 3: 14%")),i.SourceFile6=new a.n(6,r.createElement(r.Fragment,null,"This Source-File allows you to access the NSA's Bladeburner Division in other BitNodes. In addition, this Source-File will raise both the level and experience gain rate of all your combat stats by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 8%",r.createElement("br",null),"Level 2: 12%",r.createElement("br",null),"Level 3: 14%")),i.SourceFile7=new a.n(7,r.createElement(r.Fragment,null,"This Source-File allows you to access the Bladeburner Netscript API in other BitNodes. In addition, this Source-File will increase all of your Bladeburner multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 8%",r.createElement("br",null),"Level 2: 12%",r.createElement("br",null),"Level 3: 14%")),i.SourceFile8=new a.n(8,r.createElement(r.Fragment,null,"This Source-File grants the following benefits:",r.createElement("br",null),r.createElement("br",null),"Level 1: Permanent access to WSE and TIX API",r.createElement("br",null),"Level 2: Ability to short stocks in other BitNodes",r.createElement("br",null),"Level 3: Ability to use limit/stop orders in other BitNodes",r.createElement("br",null),r.createElement("br",null),"This Source-File also increases your hacking growth multipliers by:",r.createElement("br",null),"Level 1: 12%",r.createElement("br",null),"Level 2: 18%",r.createElement("br",null),"Level 3: 21%")),i.SourceFile9=new a.n(9,r.createElement(r.Fragment,null,"This Source-File grants the following benefits:",r.createElement("br",null),r.createElement("br",null),"Level 1: Permanently unlocks the Hacknet Server in other BitNodes",r.createElement("br",null),"Level 2: You start with 128GB of RAM on your home computer when entering a new BitNode",r.createElement("br",null),"Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode",r.createElement("br",null),r.createElement("br",null),"(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT when installing Augmentations)",r.createElement("br",null),r.createElement("br",null),"This Source-File also increases hacknet production and reduces hacknet costs by:",r.createElement("br",null),"Level 1: 12%",r.createElement("br",null),"Level 2: 18%",r.createElement("br",null),"Level 3: 21%")),i.SourceFile10=new a.n(10,r.createElement(r.Fragment,null,"This Source-File unlocks Sleeve technology, and the Grafting API in other BitNodes. Each level of this Source-File also grants you a Duplicate Sleeve")),i.SourceFile11=new a.n(11,r.createElement(r.Fragment,null,"This Source-File makes it so that company favor increases BOTH the player's salary and reputation gain rate at that company by 1% per favor (rather than just the reputation gain). This Source-File also increases the player's company salary and reputation gain multipliers by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 32%",r.createElement("br",null),"Level 2: 48%",r.createElement("br",null),"Level 3: 56%",r.createElement("br",null),r.createElement("br",null),"It also reduces the price increase for every aug bought by:",r.createElement("br",null),r.createElement("br",null),"Level 1: 4%",r.createElement("br",null),"Level 2: 6%",r.createElement("br",null),"Level 3: 7%")),i.SourceFile12=new a.n(12,r.createElement(r.Fragment,null,"This Source-File lets the player start with Neuroflux Governor equal to the level of this Source-File.")),i.SourceFile13=new a.n(13,r.createElement(r.Fragment,null,"Each level of this Source-File increases the size of Stanek's Gift."))}},29618:(e,t,n)=>{"use strict";n.d(t,{P:()=>o});var r=n(16264),a=n(49173);function o(e,t){const n="SourceFile"+e,o=r.J[n];if(null!=o){switch(e){case 1:{let e=0;for(let n=0;n{"use strict";n.d(t,{BN:()=>d,Ne:()=>h,TR:()=>f,no:()=>p});var r=n(38456),a=n(33244),o=n(83190),i=n(49173),s=n(22115),l=n(72360),c=n(39463),u=n(67294),m=n(23122);function f(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if((t=Math.round(t))<=0)return!1;if(null==e||isNaN(t))return n?m.BM.log(n,(()=>`Invalid arguments: stock='${e}' shares='${t}'`)):!0!==f.suppressDialog&&(0,c.X)("Failed to buy stock. This may be a bug, contact developer"),!1;const h=(0,r.Cb)(e,t,a.PositionType.Long);if(null==h)return!1;if(i.J5.money`You do not have enough money to purchase this position. You need ${(0,s.lb)(h)}.`)):!0!==f.suppressDialog&&(0,c.X)(u.createElement(u.Fragment,null,"You do not have enough money to purchase this. You need ",u.createElement(l.W,{money:h}))),!1;if(t+e.playerShares+e.playerShortShares>e.maxShares)return n?m.BM.log(n,(()=>`Purchasing '${t+e.playerShares+e.playerShortShares}' shares would exceed ${e.symbol}'s maximum (${e.maxShares}) number of shares`)):!0!==f.suppressDialog&&(0,c.X)(`You cannot purchase this many shares. ${e.symbol} has a maximum of ${(0,s.O3)(e.maxShares)} shares.`),!1;const d=e.playerShares*e.playerAvgPx;i.J5.loseMoney(h,"stock");const p=d+h-o.M.StockMarketCommission;if(e.playerShares=Math.round(e.playerShares+t),e.playerAvgPx=p/e.playerShares,(0,r.L0)(e,t),null!=f.rerenderFn&&"function"==typeof f.rerenderFn&&f.rerenderFn(),n){const r=`Bought ${(0,s.O3)(t)} shares of ${e.symbol} for ${(0,s.lb)(h)}. Paid ${(0,s.lb)(o.M.StockMarketCommission)} in commission fees.`;m.BM.log(n,(()=>r))}else!0!==f.suppressDialog&&(0,c.X)(u.createElement(u.Fragment,null,"Bought ",(0,s.O3)(t)," shares of ",e.symbol," for ",u.createElement(l.W,{money:h}),". Paid"," ",u.createElement(l.W,{money:o.M.StockMarketCommission})," in commission fees."));return!0}function h(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(null==e||t<0||isNaN(t))return n?m.BM.log(n,(()=>`Invalid arguments: stock='${e}' shares='${t}'`)):!0!==o.suppressDialog&&(0,c.X)("Failed to sell stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, contact developer"),!1;if((t=Math.round(t))>e.playerShares&&(t=e.playerShares),0===t)return!1;const f=(0,r.WZ)(e,t,a.PositionType.Long);if(null==f)return!1;let h=f-e.playerAvgPx*t;if(isNaN(h)&&(h=0),i.J5.gainMoney(f,"stock"),n&&(n.workerScript.scriptRef.onlineMoneyMade+=h,i.J5.scriptProdSinceLastAug+=h),e.playerShares=Math.round(e.playerShares-t),0===e.playerShares&&(e.playerAvgPx=0),(0,r.L0)(e,t),null!=o.rerenderFn&&"function"==typeof o.rerenderFn&&o.rerenderFn(),n){const r=`Sold ${(0,s.O3)(t)} shares of ${e.symbol}. After commissions, you gained a total of ${(0,s.lb)(f)}.`;m.BM.log(n,(()=>r))}else!0!==o.suppressDialog&&(0,c.X)(u.createElement(u.Fragment,null,"Sold ",(0,s.O3)(t)," shares of ",e.symbol,". After commissions, you gained a total of"," ",u.createElement(l.W,{money:f}),"."));return!0}function d(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if((t=Math.round(t))<=0)return!1;if(null==e||isNaN(t))return n?m.BM.log(n,(()=>`Invalid arguments: stock='${e}' shares='${t}'`)):!0!==f.suppressDialog&&(0,c.X)("Failed to initiate a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;const h=(0,r.Cb)(e,t,a.PositionType.Short);if(null==h)return!1;if(i.J5.money"You do not have enough money to purchase this short position. You need "+(0,s.lb)(h))):!0!==f.suppressDialog&&(0,c.X)(u.createElement(u.Fragment,null,"You do not have enough money to purchase this short position. You need ",u.createElement(l.W,{money:h}))),!1;if(t+e.playerShares+e.playerShortShares>e.maxShares)return n?m.BM.log(n,(()=>`This '${t+e.playerShares+e.playerShortShares}' short shares would exceed ${e.symbol}'s maximum (${e.maxShares}) number of shares.`)):!0!==f.suppressDialog&&(0,c.X)(`You cannot purchase this many shares. ${e.symbol} has a maximum of ${e.maxShares} shares.`),!1;const d=e.playerShortShares*e.playerAvgShortPx;i.J5.loseMoney(h,"stock");const p=d+h-o.M.StockMarketCommission;if(e.playerShortShares=Math.round(e.playerShortShares+t),e.playerAvgShortPx=p/e.playerShortShares,(0,r.L0)(e,t),null!=f.rerenderFn&&"function"==typeof f.rerenderFn&&f.rerenderFn(),n){const r=`Bought a short position of ${(0,s.O3)(t)} shares of ${e.symbol} for ${(0,s.lb)(h)}. Paid ${(0,s.lb)(o.M.StockMarketCommission)} in commission fees.`;m.BM.log(n,(()=>r))}else f.suppressDialog||(0,c.X)(u.createElement(u.Fragment,null,"Bought a short position of ",(0,s.O3)(t)," shares of ",e.symbol," for ",u.createElement(l.W,{money:h}),". Paid ",u.createElement(l.W,{money:o.M.StockMarketCommission})," in commission fees."));return!0}function p(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(null==e||isNaN(t)||t<0)return n?m.BM.log(n,(()=>`Invalid arguments: stock='${e}' shares='${t}'`)):o.suppressDialog||(0,c.X)("Failed to sell a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;if((t=Math.round(t))>e.playerShortShares&&(t=e.playerShortShares),0===t)return!1;const f=t*e.playerAvgShortPx,h=(0,r.WZ)(e,t,a.PositionType.Short);if(null==h||isNaN(h)||null==f)return n?m.BM.log(n,(()=>"Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug")):o.suppressDialog||(0,c.X)("Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug"),!1;let d=h-f;if(isNaN(d)&&(d=0),i.J5.gainMoney(h,"stock"),n&&(n.workerScript.scriptRef.onlineMoneyMade+=d,i.J5.scriptProdSinceLastAug+=d),e.playerShortShares=Math.round(e.playerShortShares-t),0===e.playerShortShares&&(e.playerAvgShortPx=0),(0,r.L0)(e,t),null!=o.rerenderFn&&"function"==typeof o.rerenderFn&&o.rerenderFn(),n){const r=`Sold your short position of ${(0,s.O3)(t)} shares of ${e.symbol}. After commissions, you gained a total of ${(0,s.lb)(h)}`;m.BM.log(n,(()=>r))}else o.suppressDialog||(0,c.X)(u.createElement(u.Fragment,null,"Sold your short position of ",(0,s.O3)(t)," shares of ",e.symbol,". After commissions, you gained a total of ",u.createElement(l.W,{money:h})));return!0}},41485:(e,t,n)=>{"use strict";n.d(t,{QT:()=>i,d:()=>o,mr:()=>a});var r=n(33244);let a,o;!function(e){e.LimitBuy="Limit Buy Order",e.LimitSell="Limit Sell Order",e.StopBuy="Stop Buy Order",e.StopSell="Stop Sell Order"}(a||(a={})),function(e){e.Long="L",e.Short="S"}(o||(o={}));const i={[r.LocationName.AevumECorp]:"ECP",[r.LocationName.Sector12MegaCorp]:"MGCP",[r.LocationName.Sector12BladeIndustries]:"BLD",[r.LocationName.AevumClarkeIncorporated]:"CLRK",[r.LocationName.VolhavenOmniTekIncorporated]:"OMTK",[r.LocationName.Sector12FourSigma]:"FSIG",[r.LocationName.ChongqingKuaiGongInternational]:"KGI",[r.LocationName.AevumFulcrumTechnologies]:"FLCM",[r.LocationName.IshimaStormTechnologies]:"STM",[r.LocationName.NewTokyoDefComm]:"DCOMM",[r.LocationName.VolhavenHeliosLabs]:"HLS",[r.LocationName.NewTokyoVitaLife]:"VITA",[r.LocationName.Sector12IcarusMicrosystems]:"ICRS",[r.LocationName.Sector12UniversalEnergy]:"UNV",[r.LocationName.AevumAeroCorp]:"AERO",[r.LocationName.VolhavenOmniaCybersystems]:"OMN",[r.LocationName.ChongqingSolarisSpaceSystems]:"SLRS",[r.LocationName.NewTokyoGlobalPharmaceuticals]:"GPH",[r.LocationName.IshimaNovaMedical]:"NVMD",[r.LocationName.AevumWatchdogSecurity]:"WDS",[r.LocationName.VolhavenLexoCorp]:"LXO",[r.LocationName.AevumRhoConstruction]:"RHOC",[r.LocationName.Sector12AlphaEnterprises]:"APHE",[r.LocationName.VolhavenSysCoreSecurities]:"SYSC",[r.LocationName.VolhavenCompuTek]:"CTK",[r.LocationName.AevumNetLinkTechnologies]:"NTLK",[r.LocationName.IshimaOmegaSoftware]:"OMGA",[r.LocationName.Sector12FoodNStuff]:"FNS",[r.LocationName.Sector12JoesGuns]:"JGN","Sigma Cosmetics":"SGC","Catalyst Ventures":"CTYS","Microdyne Technologies":"MDYN","Titan Laboratories":"TITN"}},49170:(e,t,n)=>{"use strict";n.d(t,{K:()=>o});var r=n(33244),a=n(94515);class o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:r.OrderType.LimitBuy,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:r.PositionType.Long,i=!1;if("number"==typeof t&&"number"==typeof n||(i=!0),(isNaN(t)||isNaN(n))&&(i=!0),"string"!=typeof e&&(i=!0),i)throw new Error("Invalid constructor parameters for Order");this.stockSymbol=e,this.shares=t,this.price=n,this.type=a,this.pos=o}toJSON(){return(0,a.L3)("Order",this)}static fromJSON(e){return(0,a.Id)(o,e.data)}}a.gY.Order=o},85896:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var r=n(82427),a=n(22213),o=n(33244),i=n(22115),s=n(72360),l=n(39463),c=n(51087),u=n(67294);function m(e,t,n,r){const i=r.stockMarket.Orders;if(null==i){const e={};for(const t of Object.keys(r.stockMarket)){const n=r.stockMarket[t];n instanceof a.W&&(e[n.symbol]=[])}return void(r.stockMarket.Orders=e)}let s=i[e.symbol];if(null==s||s.constructor!==Array)return console.error(`Invalid Order book for ${e.symbol} in processOrders(): ${s}`),void(s=[]);for(const a of s)if(a.type===t&&a.pos===n)switch(a.type){case o.OrderType.LimitBuy:(a.pos===o.PositionType.Long&&e.price<=a.price||a.pos===o.PositionType.Short&&e.price>=a.price)&&f(a,r);break;case o.OrderType.LimitSell:case o.OrderType.StopBuy:(a.pos===o.PositionType.Long&&e.price>=a.price||a.pos===o.PositionType.Short&&e.price<=a.price)&&f(a,r);break;case o.OrderType.StopSell:(a.pos===o.PositionType.Long&&e.price<=a.price||a.pos===o.PositionType.Short&&e.price>=a.price)&&f(a,r);break;default:return void console.warn(`Invalid order type: ${a.type}`)}}function f(e,t){const n=t.symbolToStockMap[e.stockSymbol];if(!(n instanceof a.W))return void console.error(`Could not find stock for this order: ${e.stockSymbol}`);const m=t.stockMarket.Orders[n.symbol],f={suppressDialog:!0};let h=!0,d=!1;switch(e.type){case o.OrderType.LimitBuy:case o.OrderType.StopBuy:d=!0,e.pos===o.PositionType.Long?h=(0,r.TR)(n,e.shares,null,f)&&h:e.pos===o.PositionType.Short&&(h=(0,r.BN)(n,e.shares,null,f)&&h);break;case o.OrderType.LimitSell:case o.OrderType.StopSell:e.pos===o.PositionType.Long?h=(0,r.Ne)(n,e.shares,null,f)&&h:e.pos===o.PositionType.Short&&(h=(0,r.no)(n,e.shares,null,f)&&h);break;default:return void console.warn(`Invalid order type: ${e.type}`)}const p=e.pos===o.PositionType.Long?"Long":"Short";if(h){for(let t=0;t{"use strict";n.d(t,{Bh:()=>i,Bu:()=>o,gz:()=>s});var r=n(22213),a=n(35102);function o(e,t){const n=e.organizationName;let o=null;if("string"==typeof n&&""!==n&&(o=a.xO[n]),!(o instanceof r.W))return;const i=t/e.moneyMax;Math.random(){"use strict";n.d(t,{W:()=>s});var r=n(94515),a=n(92666);const o={b:!0,initPrice:1e4,marketCap:1e12,mv:1,name:"",otlkMag:0,spreadPerc:0,shareTxForMovement:1e6,symbol:""};function i(e){let t;switch(typeof e){case"number":return e;case"object":{const n=e;t=(0,a.X)(n.min,n.max);break}default:throw Error(`Do not know how to convert the type '${typeof e}' to a number`)}return"object"==typeof e&&"number"==typeof e.divisor?t/e.divisor:t}class s{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;this.name=e.name,this.symbol=e.symbol,this.price=i(e.initPrice),this.lastPrice=this.price,this.playerShares=0,this.playerAvgPx=0,this.playerShortShares=0,this.playerAvgShortPx=0,this.mv=i(e.mv),this.b=e.b,this.otlkMag=e.otlkMag,this.otlkMagForecast=this.getAbsoluteForecast(),this.cap=(0,a.X)(1e3*this.price,25e3*this.price),this.spreadPerc=i(e.spreadPerc),this.shareTxForMovement=i(e.shareTxForMovement),this.shareTxUntilMovement=this.shareTxForMovement;const t=e.marketCap/this.price;this.totalShares=1e5*Math.round(t/1e5),this.maxShares=1e5*Math.round(.2*this.totalShares/1e5)}changeForecastForecast(e){this.otlkMagForecast=e,this.otlkMagForecast>100?this.otlkMagForecast=100:this.otlkMagForecast<0&&(this.otlkMagForecast=0)}changePrice(e){this.lastPrice=this.price,this.price=e}cycleForecast(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.1;const t=this.getForecastIncreaseChance();Math.random()0&&void 0!==arguments[0]?arguments[0]:.1;Math.random()<.5?this.changeForecastForecast(this.otlkMagForecast+e):this.changeForecastForecast(this.otlkMagForecast-e)}flipForecastForecast(){this.otlkMagForecast=100-this.otlkMagForecast}getAbsoluteForecast(){return this.b?50+this.otlkMag:50-this.otlkMag}getAskPrice(){return this.price*(1+this.spreadPerc/100)}getBidPrice(){return this.price*(1-this.spreadPerc/100)}getForecastIncreaseChance(){const e=this.otlkMagForecast-this.getAbsoluteForecast();return(50+Math.min(Math.max(e,-45),45))/100}influenceForecast(e){this.otlkMag>5&&(this.otlkMag=Math.max(5,this.otlkMag-e))}influenceForecastForecast(e){this.otlkMagForecast>50?(this.otlkMagForecast-=e,this.otlkMagForecast=Math.max(50,this.otlkMagForecast)):this.otlkMagForecast<50&&(this.otlkMagForecast+=e,this.otlkMagForecast=Math.min(50,this.otlkMagForecast))}toJSON(){return(0,r.L3)("Stock",this)}static fromJSON(e){return(0,r.Id)(s,e.data)}}r.gY.Stock=s},35102:(e,t,n)=>{"use strict";n.d(t,{J9:()=>b,T_:()=>k,aW:()=>C,nD:()=>w,s1:()=>g,sl:()=>y,tD:()=>p,wW:()=>v,xO:()=>d});var r=n(49170),a=n(83190),o=n(85896),i=n(22213),s=n(47579),l=n(33244),c=n(72938),u=n(22115),m=n(39463),f=n(94515),h=n(23122);let d={lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0};const p={};function g(e,t,n,a,s,l){if(!(e instanceof i.W))return l?h.BM.log(l,(()=>`Invalid stock: '${e}'`)):(0,m.X)("ERROR: Invalid stock passed to placeOrder() function"),!1;if("number"!=typeof t||"number"!=typeof n)return l?h.BM.log(l,(()=>`Invalid arguments: shares='${t}' price='${n}'`)):(0,m.X)("ERROR: Invalid numeric value provided for either 'shares' or 'price' argument"),!1;const c=new r.K(e.symbol,t,n,a,s);if(null==d.Orders){const e={};for(const t of Object.keys(d)){const n=d[t];n instanceof i.W&&(e[n.symbol]=[])}d.Orders=e}d.Orders[e.symbol].push(c);const u={stockMarket:d,symbolToStockMap:p};return(0,o.A)(e,c.type,c.pos,u),!0}function y(e,t){if(null==d.Orders)return!1;if(e.order&&e.order instanceof r.K){const t=e.order,n=d.Orders[t.stockSymbol];for(let e=0;e"Successfully cancelled order: "+r)),!0}return t&&h.BM.log(t,(()=>"Failed to cancel order: "+r)),!1}return!1}function b(e){d=""===e?{lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0}:JSON.parse(e,f.Ro)}function v(){d={lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0}}function k(){for(const e of Object.getOwnPropertyNames(d))delete d[e];for(const e of s.s){const t=e.name;d[t]=new i.W(e)}const e={};for(const t of Object.keys(d)){const n=d[t];n instanceof i.W&&(e[n.symbol]=[])}d.Orders=e,d.storedCycles=0,d.lastUpdate=0,d.ticksUntilCycle=a.M.TicksPerCycle,w()}function w(){for(const[e,t]of Object.entries(l.StockSymbol)){const n=d[e];null!=n?p[t]=n:console.error(`Could not find Stock for ${e}`)}}function E(){for(const e of Object.keys(d)){const t=d[e];t instanceof i.W&&(Math.random()<.45&&(t.b=!t.b,t.flipForecastForecast()),d.ticksUntilCycle=a.M.TicksPerCycle)}}const S=a.M.msPerStockUpdate/c.t.MilliPerCycle;function C(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;if((null==d.storedCycles||isNaN(d.storedCycles))&&(d.storedCycles=0),d.storedCycles+=e,d.storedCycles=t.cap&&(a=.1,t.b=!1),isNaN(a)&&(a=.5);const s=Math.random(),c={stockMarket:d,symbolToStockMap:p};s{"use strict";n.d(t,{FL:()=>s,ND:()=>i,Zh:()=>l,yG:()=>o});var r=n(97740),a=n(83190);function o(){return a.M.MarketData4SCost*r.dQ.FourSigmaMarketDataCost}function i(){return a.M.MarketDataTixApi4SCost*r.dQ.FourSigmaMarketDataApiCost}function s(){return a.M.WSEAccountCost}function l(){return a.M.TIXAPICost}},38456:(e,t,n)=>{"use strict";n.d(t,{Cb:()=>s,L0:()=>c,Sq:()=>u,WZ:()=>l});var r=n(22213),a=n(33244),o=n(83190);const i=.006;function s(e,t,n){return isNaN(t)||t<=0||!(e instanceof r.W)?null:(t=Math.min(t,e.maxShares),n===a.PositionType.Long?t*e.getAskPrice()+o.M.StockMarketCommission:t*e.getBidPrice()+o.M.StockMarketCommission)}function l(e,t,n){return isNaN(t)||t<=0||!(e instanceof r.W)?null:(t=Math.min(t,e.maxShares),n===a.PositionType.Long?t*e.getBidPrice()-o.M.StockMarketCommission:t*e.playerAvgShortPx+((e.playerAvgShortPx-e.getAskPrice())*t-o.M.StockMarketCommission))}function c(e,t){if(isNaN(t)||t<=0||!(e instanceof r.W))return;t=Math.min(t,e.maxShares);const n=e.shareTxUntilMovement;if(t<=n)return e.shareTxUntilMovement-=t,void(e.shareTxUntilMovement<=0&&(e.shareTxUntilMovement=e.shareTxForMovement,e.influenceForecast(i),e.influenceForecastForecast(i*(e.mv/100))));const a=t-n;let o=1+Math.ceil(a/e.shareTxForMovement);e.shareTxUntilMovement=e.shareTxForMovement-(t-e.shareTxUntilMovement)%e.shareTxForMovement,(e.shareTxUntilMovement===e.shareTxForMovement||e.shareTxUntilMovement<=0)&&(++o,e.shareTxUntilMovement=e.shareTxForMovement);const s=i*(o-1),l=s*(e.mv/100);e.influenceForecast(s),e.influenceForecastForecast(l)}function u(e,t,n){if(!(e instanceof r.W))return 0;const i=t===a.PositionType.Long,s=n-o.M.StockMarketCommission,l=i?e.getAskPrice():e.getBidPrice();return Math.floor(s/l)}},83190:(e,t,n)=>{"use strict";n.d(t,{M:()=>r});const r={msPerStockUpdate:6e3,msPerStockUpdateMin:4e3,TicksPerCycle:75,WSEAccountCost:2e8,TIXAPICost:5e9,MarketData4SCost:1e9,MarketDataTixApi4SCost:25e9,StockMarketCommission:1e5}},47579:(e,t,n)=>{"use strict";n.d(t,{s:()=>a});var r=n(33244);const a=[{b:!0,initPrice:{max:28e3,min:17e3},marketCap:24e11,mv:{divisor:100,max:50,min:40},name:r.LocationName.AevumECorp,otlkMag:19,spreadPerc:{divisor:10,max:5,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.AevumECorp]},{b:!0,initPrice:{max:34e3,min:24e3},marketCap:24e11,mv:{divisor:100,max:50,min:40},name:r.LocationName.Sector12MegaCorp,otlkMag:19,spreadPerc:{divisor:10,max:5,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.Sector12MegaCorp]},{b:!0,initPrice:{max:25e3,min:12e3},marketCap:16e11,mv:{divisor:100,max:80,min:70},name:r.LocationName.Sector12BladeIndustries,otlkMag:13,spreadPerc:{divisor:10,max:6,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.Sector12BladeIndustries]},{b:!0,initPrice:{max:25e3,min:1e4},marketCap:15e11,mv:{divisor:100,max:75,min:65},name:r.LocationName.AevumClarkeIncorporated,otlkMag:12,spreadPerc:{divisor:10,max:5,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.AevumClarkeIncorporated]},{b:!0,initPrice:{max:43e3,min:32e3},marketCap:18e11,mv:{divisor:100,max:70,min:60},name:r.LocationName.VolhavenOmniTekIncorporated,otlkMag:12,spreadPerc:{divisor:10,max:6,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.VolhavenOmniTekIncorporated]},{b:!0,initPrice:{max:8e4,min:5e4},marketCap:2e12,mv:{divisor:100,max:110,min:100},name:r.LocationName.Sector12FourSigma,otlkMag:17,spreadPerc:{divisor:10,max:10,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.Sector12FourSigma]},{b:!0,initPrice:{max:28e3,min:16e3},marketCap:19e11,mv:{divisor:100,max:85,min:75},name:r.LocationName.ChongqingKuaiGongInternational,otlkMag:10,spreadPerc:{divisor:10,max:7,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.ChongqingKuaiGongInternational]},{b:!0,initPrice:{max:36e3,min:29e3},marketCap:2e12,mv:{divisor:100,max:130,min:120},name:r.LocationName.AevumFulcrumTechnologies,otlkMag:16,spreadPerc:{divisor:10,max:10,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.AevumFulcrumTechnologies]},{b:!0,initPrice:{max:25e3,min:2e4},marketCap:12e11,mv:{divisor:100,max:90,min:80},name:r.LocationName.IshimaStormTechnologies,otlkMag:7,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:r.StockSymbol[r.LocationName.IshimaStormTechnologies]},{b:!0,initPrice:{max:19e3,min:6e3},marketCap:9e11,mv:{divisor:100,max:70,min:60},name:r.LocationName.NewTokyoDefComm,otlkMag:10,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:r.StockSymbol[r.LocationName.NewTokyoDefComm]},{b:!0,initPrice:{max:18e3,min:1e4},marketCap:825e9,mv:{divisor:100,max:65,min:55},name:r.LocationName.VolhavenHeliosLabs,otlkMag:9,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:r.StockSymbol[r.LocationName.VolhavenHeliosLabs]},{b:!0,initPrice:{max:14e3,min:8e3},marketCap:1e12,mv:{divisor:100,max:80,min:70},name:r.LocationName.NewTokyoVitaLife,otlkMag:7,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:r.StockSymbol[r.LocationName.NewTokyoVitaLife]},{b:!0,initPrice:{max:24e3,min:12e3},marketCap:8e11,mv:{divisor:100,max:70,min:60},name:r.LocationName.Sector12IcarusMicrosystems,otlkMag:7.5,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:108e3,min:36e3},symbol:r.StockSymbol[r.LocationName.Sector12IcarusMicrosystems]},{b:!0,initPrice:{max:29e3,min:16e3},marketCap:9e11,mv:{divisor:100,max:60,min:50},name:r.LocationName.Sector12UniversalEnergy,otlkMag:10,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:r.StockSymbol[r.LocationName.Sector12UniversalEnergy]},{b:!0,initPrice:{max:17e3,min:8e3},marketCap:64e10,mv:{divisor:100,max:65,min:55},name:r.LocationName.AevumAeroCorp,otlkMag:6,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:126e3,min:42e3},symbol:r.StockSymbol[r.LocationName.AevumAeroCorp]},{b:!0,initPrice:{max:15e3,min:6e3},marketCap:6e11,mv:{divisor:100,max:75,min:65},name:r.LocationName.VolhavenOmniaCybersystems,otlkMag:4.5,spreadPerc:{divisor:10,max:11,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:r.StockSymbol[r.LocationName.VolhavenOmniaCybersystems]},{b:!0,initPrice:{max:28e3,min:14e3},marketCap:705e9,mv:{divisor:100,max:80,min:70},name:r.LocationName.ChongqingSolarisSpaceSystems,otlkMag:8.5,spreadPerc:{divisor:10,max:12,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:r.StockSymbol[r.LocationName.ChongqingSolarisSpaceSystems]},{b:!0,initPrice:{max:3e4,min:12e3},marketCap:695e9,mv:{divisor:100,max:65,min:55},name:r.LocationName.NewTokyoGlobalPharmaceuticals,otlkMag:10.5,spreadPerc:{divisor:10,max:10,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:r.StockSymbol[r.LocationName.NewTokyoGlobalPharmaceuticals]},{b:!0,initPrice:{max:27e3,min:15e3},marketCap:6e11,mv:{divisor:100,max:80,min:70},name:r.LocationName.IshimaNovaMedical,otlkMag:5,spreadPerc:{divisor:10,max:11,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:r.StockSymbol[r.LocationName.IshimaNovaMedical]},{b:!0,initPrice:{max:8500,min:4e3},marketCap:45e10,mv:{divisor:100,max:260,min:240},name:r.LocationName.AevumWatchdogSecurity,otlkMag:1.5,spreadPerc:{divisor:10,max:12,min:5},shareTxForMovement:{max:54e3,min:12e3},symbol:r.StockSymbol[r.LocationName.AevumWatchdogSecurity]},{b:!0,initPrice:{max:8e3,min:4500},marketCap:3e11,mv:{divisor:100,max:135,min:115},name:r.LocationName.VolhavenLexoCorp,otlkMag:6,spreadPerc:{divisor:10,max:12,min:5},shareTxForMovement:{max:108e3,min:36e3},symbol:r.StockSymbol[r.LocationName.VolhavenLexoCorp]},{b:!0,initPrice:{max:7e3,min:2e3},marketCap:18e10,mv:{divisor:100,max:70,min:50},name:r.LocationName.AevumRhoConstruction,otlkMag:1,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:126e3,min:6e4},symbol:r.StockSymbol[r.LocationName.AevumRhoConstruction]},{b:!0,initPrice:{max:8500,min:4e3},marketCap:24e10,mv:{divisor:100,max:205,min:175},name:r.LocationName.Sector12AlphaEnterprises,otlkMag:10,spreadPerc:{divisor:10,max:16,min:5},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.Sector12AlphaEnterprises]},{b:!0,initPrice:{max:8e3,min:3e3},marketCap:2e11,mv:{divisor:100,max:170,min:150},name:r.LocationName.VolhavenSysCoreSecurities,otlkMag:3,spreadPerc:{divisor:10,max:12,min:5},shareTxForMovement:{max:9e4,min:15e3},symbol:r.StockSymbol[r.LocationName.VolhavenSysCoreSecurities]},{b:!0,initPrice:{max:6e3,min:1e3},marketCap:185e9,mv:{divisor:100,max:100,min:80},name:r.LocationName.VolhavenCompuTek,otlkMag:4,spreadPerc:{divisor:10,max:12,min:4},shareTxForMovement:{max:126e3,min:6e4},symbol:r.StockSymbol[r.LocationName.VolhavenCompuTek]},{b:!0,initPrice:{max:5e3,min:1e3},marketCap:58e9,mv:{divisor:100,max:400,min:200},name:r.LocationName.AevumNetLinkTechnologies,otlkMag:1,spreadPerc:{divisor:10,max:20,min:5},shareTxForMovement:{max:54e3,min:18e3},symbol:r.StockSymbol[r.LocationName.AevumNetLinkTechnologies]},{b:!0,initPrice:{max:8e3,min:1e3},marketCap:6e10,mv:{divisor:100,max:110,min:90},name:r.LocationName.IshimaOmegaSoftware,otlkMag:.5,spreadPerc:{divisor:10,max:13,min:4},shareTxForMovement:{max:9e4,min:3e4},symbol:r.StockSymbol[r.LocationName.IshimaOmegaSoftware]},{b:!1,initPrice:{max:4500,min:500},marketCap:45e9,mv:{divisor:100,max:80,min:70},name:r.LocationName.Sector12FoodNStuff,otlkMag:1,spreadPerc:{divisor:10,max:10,min:6},shareTxForMovement:{max:18e4,min:6e4},symbol:r.StockSymbol[r.LocationName.Sector12FoodNStuff]},{b:!0,initPrice:{max:3500,min:1500},marketCap:3e10,mv:{divisor:100,max:275,min:100},name:"Sigma Cosmetics",otlkMag:0,spreadPerc:{divisor:10,max:14,min:6},shareTxForMovement:{max:7e4,min:2e4},symbol:r.StockSymbol["Sigma Cosmetics"]},{b:!0,initPrice:{max:1500,min:250},marketCap:42e9,mv:{divisor:100,max:350,min:200},name:r.LocationName.Sector12JoesGuns,otlkMag:1,spreadPerc:{divisor:10,max:14,min:6},shareTxForMovement:{max:52e3,min:15e3},symbol:r.StockSymbol[r.LocationName.Sector12JoesGuns]},{b:!0,initPrice:{max:1500,min:250},marketCap:1e11,mv:{divisor:100,max:175,min:120},name:"Catalyst Ventures",otlkMag:13.5,spreadPerc:{divisor:10,max:14,min:5},shareTxForMovement:{max:72e3,min:24e3},symbol:r.StockSymbol["Catalyst Ventures"]},{b:!0,initPrice:{max:3e4,min:15e3},marketCap:36e10,mv:{divisor:100,max:80,min:70},name:"Microdyne Technologies",otlkMag:8,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:216e3,min:9e4},symbol:r.StockSymbol["Microdyne Technologies"]},{b:!0,initPrice:{max:24e3,min:12e3},marketCap:42e10,mv:{divisor:100,max:70,min:50},name:"Titan Laboratories",otlkMag:11,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:216e3,min:9e4},symbol:r.StockSymbol["Titan Laboratories"]}]},32728:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(21623),a=n(33244);const o={longestName:0,longestSymbol:0};for(const[e,t]of(0,r.m0)(a.StockSymbol))o.longestName=Math.max(e.length,o.longestName),o.longestSymbol=Math.max(t.length,o.longestSymbol)},16396:(e,t,n)=>{"use strict";n.d(t,{X:()=>w});var r=n(67294),a=n(4605),o=n(83190),i=n(49173),s=n(72360),l=n(35102),c=n(81138),u=n(56798),m=n(17575),f=n(92557),h=n(9944),d=n(27036),p=n(6248),g=n(33244);function y(e){if(i.J5.has4SDataTixApi)return r.createElement(c.Z,null,"Market Data TIX API Access ",r.createElement(d.Z,null));{const t=(0,a.ND)();return r.createElement(m.Z,{title:i.J5.hasTixApiAccess?r.createElement(c.Z,null,"Let you access 4S Market Data through Netscript"):r.createElement(c.Z,null,"Requires TIX API Access")},r.createElement("span",null,r.createElement(u.Z,{disabled:!i.J5.hasTixApiAccess||!i.J5.canAfford(t),onClick:function(){i.J5.has4SDataTixApi||i.J5.canAfford((0,a.ND)())&&(i.J5.has4SDataTixApi=!0,i.J5.loseMoney((0,a.ND)(),"stock"),e.rerender())}},"Buy 4S Market Data TIX API Access - ",r.createElement(s.W,{money:t,forPurchase:!0}))))}}function b(e){if(i.J5.hasWseAccount)return r.createElement(c.Z,null,"WSE Account ",r.createElement(d.Z,null));const t=o.M.WSEAccountCost;return r.createElement(r.Fragment,null,r.createElement(c.Z,null,"To begin trading, you must first purchase an account:"),r.createElement(u.Z,{disabled:!i.J5.canAfford(t),onClick:function(){i.J5.hasWseAccount||i.J5.canAfford(o.M.WSEAccountCost)&&(i.J5.hasWseAccount=!0,(0,l.T_)(),i.J5.loseMoney(o.M.WSEAccountCost,"stock"),e.rerender())}},"Buy WSE Account - ",r.createElement(s.W,{money:t,forPurchase:!0})))}function v(e){if(i.J5.hasTixApiAccess)return r.createElement(c.Z,null,"TIX API Access ",r.createElement(d.Z,null));{const t=o.M.TIXAPICost;return r.createElement(u.Z,{disabled:!i.J5.canAfford(t)||!i.J5.hasWseAccount,onClick:function(){i.J5.hasTixApiAccess||i.J5.canAfford(o.M.TIXAPICost)&&(i.J5.hasTixApiAccess=!0,i.J5.loseMoney(o.M.TIXAPICost,"stock"),e.rerender())}},"Buy Trade Information eXchange (TIX) API Access - ",r.createElement(s.W,{money:t,forPurchase:!0}))}}function k(e){if(i.J5.has4SData)return r.createElement(c.Z,null,"4S Market Data Access ",r.createElement(d.Z,null));{const t=(0,a.yG)();return r.createElement(m.Z,{title:r.createElement(c.Z,null,"Lets you view additional pricing and volatility information about stocks")},r.createElement("span",null,r.createElement(u.Z,{disabled:!i.J5.canAfford(t)||!i.J5.hasWseAccount,onClick:function(){i.J5.has4SData||i.J5.canAfford((0,a.yG)())&&(i.J5.has4SData=!0,i.J5.loseMoney((0,a.yG)(),"stock"),e.rerender())}},"Buy 4S Market Data Access - ",r.createElement(s.W,{money:t,forPurchase:!0}))))}}function w(e){const[t,n]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,r.createElement(c.Z,{variant:"h4"},"Welcome to the World Stock Exchange (WSE)!"),r.createElement(b,e),r.createElement(c.Z,{variant:"h5",color:"primary"},"Trade Information eXchange (TIX) API"),r.createElement(c.Z,null,"TIX, short for Trade Information eXchange, is the communications protocol used by the WSE. Purchasing access to the TIX API lets you write code to create your own algorithmic/automated trading strategies."),r.createElement(v,e),r.createElement(c.Z,{variant:"h5",color:"primary"},g.FactionName.FourSigma," (4S) Market Data Feed"),r.createElement(c.Z,null,g.FactionName.FourSigma,"'s (4S) Market Data Feed provides information about stocks that will help your trading strategies.",r.createElement(f.Z,{onClick:()=>n(!0)},r.createElement(h.Z,null))),r.createElement(y,e),r.createElement(k,e),r.createElement(c.Z,null,"Commission Fees: Every transaction you make has a"," ",r.createElement(s.W,{money:o.M.StockMarketCommission,forPurchase:!0})," commission fee."),r.createElement("br",null),r.createElement(c.Z,null,"WARNING: When you reset after installing Augmentations, the Stock Market is reset. You will retain your WSE Account, access to the TIX API, and 4S Market Data access. However, all of your stock positions are lost, so make sure to sell your stocks before installing Augmentations!"),r.createElement(p.t,{open:t,onClose:()=>n(!1)},r.createElement(c.Z,null,"Access to the 4S Market Data feed will display two additional pieces of information about each stock: Price Forecast & Volatility",r.createElement("br",null),r.createElement("br",null),"Price Forecast indicates the probability the stock has of increasing or decreasing. A '+' forecast means the stock has a higher chance of increasing than decreasing, and a '-' means the opposite. The number of '+/-' symbols is used to illustrate the magnitude of these probabilities. For example, '+++' means that the stock has a significantly higher chance of increasing than decreasing, while '+' means that the stock only has a slightly higher chance of increasing than decreasing.",r.createElement("br",null),r.createElement("br",null),"Volatility represents the maximum percentage by which a stock's price can change every tick (a tick occurs every few seconds while the game is running).",r.createElement("br",null),r.createElement("br",null),"A stock's price forecast can change over time. This is also affected by volatility. The more volatile a stock is, the more its price forecast will change.")))}},4403:(e,t,n)=>{"use strict";n.d(t,{E:()=>l});var r=n(67294),a=n(48672),o=n(81138),i=n(66351),s=n(56798);function l(e){const[t,n]=(0,r.useState)(null);return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(o.Z,null,e.text),r.createElement(i.Z,{autoFocus:!0,type:"number",onChange:function(e){""===e.target.value?n(null):n(parseFloat(e.target.value))},placeholder:"price",InputProps:{endAdornment:r.createElement(s.Z,{onClick:function(){null!==t&&(isNaN(t)||(e.place(t),e.onClose()))}},e.placeText)}}))}},51801:(e,t,n)=>{"use strict";n.d(t,{j:()=>l});var r=n(67294),a=n(16396),o=n(13915),i=n(49173),s=n(88775);function l(e){const t=(0,s.S)(200);return r.createElement(r.Fragment,null,r.createElement(a.X,{rerender:t}),i.J5.hasWseAccount&&r.createElement(o.K,{stockMarket:e.stockMarket}))}},27900:(e,t,n)=>{"use strict";n.d(t,{x:()=>A});var r,a=n(67294),o=n(82352),i=n(9313),s=n(77942),l=n(36265),c=n(4403),u=n(38456),m=n(33244),f=n(35102),h=n(82427),d=n(49173),p=n(22115),g=n(72360),y=n(39463),b=n(30120),v=n(66351),k=n(98649),w=n(26023),E=n(95309),S=n(61702),C=n(28881),x=n(51627),N=n(23508),M=n(60181);function A(e){const[t,n]=(0,a.useState)(r.Market),[A,T]=(0,a.useState)(m.PositionType.Long),[L,R]=(0,a.useState)(""),[F,_]=(0,a.useState)(!1),[I,P]=(0,a.useState)(!1),[B,O]=(0,a.useState)({text:"",placeText:"",place:()=>!1});function D(){return Math.round(parseFloat(L))}function Z(){return 8===d.J5.bitNodeN||d.J5.sourceFileLvl(8)>=3}return a.createElement(b.Z,{component:C.Z},a.createElement(E.Z,{onClick:()=>P((e=>!e))},a.createElement(S.Z,{primary:a.createElement(o.t,{stock:e.stock})}),I?a.createElement(M.Z,{color:"primary"}):a.createElement(N.Z,{color:"primary"})),a.createElement(x.Z,{in:I,unmountOnExit:!0},a.createElement(b.Z,{sx:{mx:4}},a.createElement(b.Z,{display:"flex",alignItems:"center"},a.createElement(v.Z,{onChange:function(e){R(e.target.value)},placeholder:"Quantity (Shares)",value:L}),a.createElement(w.Z,{onChange:function(e){e.target.value===m.PositionType.Short?T(m.PositionType.Short):T(m.PositionType.Long)},value:A},a.createElement(k.Z,{value:m.PositionType.Long},"Long"),(8===d.J5.bitNodeN||d.J5.sourceFileLvl(8)>=2)&&a.createElement(k.Z,{value:m.PositionType.Short},"Short")),a.createElement(w.Z,{onChange:function(e){switch(e.target.value){case r.Limit:n(r.Limit);break;case r.Stop:n(r.Stop);break;case r.Market:default:n(r.Market)}},value:t},a.createElement(k.Z,{value:r.Market},r.Market),Z()&&a.createElement(k.Z,{value:r.Limit},r.Limit),Z()&&a.createElement(k.Z,{value:r.Stop},r.Stop)),a.createElement(l.m,{onClick:function(){const n=D();if(isNaN(n))(0,y.X)(`Invalid input for quantity (number of shares): ${L}`);else switch(t){case r.Market:A===m.PositionType.Short?(0,h.BN)(e.stock,n):(0,h.TR)(e.stock,n),e.rerenderAllTickers();break;case r.Limit:_(!0),O({text:"Enter the price for your Limit Order",placeText:"Place Buy Limit Order",place:t=>(0,f.s1)(e.stock,n,t,m.OrderType.LimitBuy,A)});break;case r.Stop:_(!0),O({text:"Enter the price for your Stop Order",placeText:"Place Buy Stop Order",place:t=>(0,f.s1)(e.stock,n,t,m.OrderType.StopBuy,A)})}},text:"Buy",tooltip:function(){const t=e.stock,n=D();if(isNaN(n))return null;const r=(0,u.Cb)(t,n,A);return null==r?null:a.createElement(a.Fragment,null,"Purchasing ",(0,p.O3)(n)," shares (",A===m.PositionType.Long?"Long":"Short",") will cost ",a.createElement(g.W,{money:r}),".")}()}),a.createElement(l.m,{onClick:function(){const n=D();if(isNaN(n))(0,y.X)(`Invalid input for quantity (number of shares): ${L}`);else switch(t){case r.Market:A===m.PositionType.Short?(0,h.no)(e.stock,n):(0,h.Ne)(e.stock,n),e.rerenderAllTickers();break;case r.Limit:_(!0),O({text:"Enter the price for your Limit Order",placeText:"Place Sell Limit Order",place:t=>(0,f.s1)(e.stock,n,t,m.OrderType.LimitSell,A)});break;case r.Stop:_(!0),O({text:"Enter the price for your Stop Order",placeText:"Place Sell Stop Order",place:t=>(0,f.s1)(e.stock,n,t,m.OrderType.StopSell,A)})}},text:"Sell",tooltip:function(){const t=e.stock,n=D();if(isNaN(n))return null;if(A===m.PositionType.Long){if(n>t.playerShares)return a.createElement(a.Fragment,null,"You do not have this many shares in the Long position")}else if(n>t.playerShortShares)return a.createElement(a.Fragment,null,"You do not have this many shares in the Short position");const r=(0,u.WZ)(t,n,A);return null==r?null:a.createElement(a.Fragment,null,"Selling ",(0,p.O3)(n)," shares (",A===m.PositionType.Long?"Long":"Short",") will result in a gain of ",a.createElement(g.W,{money:r}),".")}()}),a.createElement(l.m,{onClick:function(){const n=d.J5.money,a=e.stock;let o=(0,u.Sq)(a,A,n);o=Math.min(o,Math.round(a.maxShares-a.playerShares-a.playerShortShares)),t===r.Market?(A===m.PositionType.Short?(0,h.BN)(a,o):(0,h.TR)(a,o),e.rerenderAllTickers()):(0,y.X)("ERROR: 'Buy Max' only works for Market Orders")},text:"Buy MAX"}),a.createElement(l.m,{onClick:function(){const n=e.stock;t===r.Market?(A===m.PositionType.Short?(0,h.no)(n,n.playerShortShares):(0,h.Ne)(n,n.playerShares),e.rerenderAllTickers()):(0,y.X)("ERROR: 'Sell All' only works for Market Orders")},text:"Sell ALL"})),a.createElement(s.u,{stock:e.stock}),a.createElement(i.O,{orders:e.orders,stock:e.stock}),a.createElement(c.E,{text:B.text,placeText:B.placeText,place:B.place,open:F,onClose:()=>_(!1)}))))}!function(e){e.Market="Market Order",e.Limit="Limit Order",e.Stop="Stop Order"}(r||(r={}))},82352:(e,t,n)=>{"use strict";n.d(t,{t:()=>u});var r=n(67294),a=n(32728),o=n(49173),i=n(51087),s=n(22115),l=n(81138);const c=["cs","lv","pl","ru"];function u(e){const t=e.stock,n=(0,s.lb)(t.price),u=c.includes(i.Z.Locale)?15:12,m=" ".repeat(1+a.c.longestName-t.name.length+(a.c.longestSymbol-t.symbol.length)),f=" ".repeat(u-n.length);let h=`${t.name}${m}${t.symbol} -${f}${n}`;if(o.J5.has4SData){h+=` - Volatility: ${(0,s.T3)(t.mv/100)} - Price Forecast: `;let e=t.b;t.otlkMag<0&&(e=!e),h+=(e?"+":"-").repeat(Math.floor(Math.abs(t.otlkMag)/10)+1)}let d="primary";return t.lastPrice===t.price?d="secondary":t.lastPrice>t.price&&(d="error"),r.createElement(l.Z,{style:{whiteSpace:"pre"},color:d},h)}},73267:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m});var r=n(67294),a=n(33244),o=n(22115),i=n(72360),s=n(81138),l=n(56798),c=n(30120),u=n(35102);function m(e){const t=e.order,n=t.pos===a.PositionType.Long?"Long Position":"Short Position",m=r.createElement(r.Fragment,null,t.type," - ",n," - ",(0,o.O3)(t.shares)," @ ",r.createElement(i.W,{money:t.price}));return r.createElement(c.Z,{display:"flex",alignItems:"center"},r.createElement(s.Z,null,m),r.createElement(l.Z,{onClick:function(){(0,u.sl)({order:e.order})}},"Cancel Order"))}},9313:(e,t,n)=>{"use strict";n.d(t,{O:()=>o});var r=n(67294),a=n(73267);function o(e){const t=[];for(let n=0;n{"use strict";n.d(t,{u:()=>f});var r=n(67294),a=n(49173),o=n(22115),i=n(72360),s=n(81138),l=n(17575),c=n(30120);function u(e){const t=e.stock,n=t.playerShares*t.playerAvgPx,a=(t.getBidPrice()-t.playerAvgPx)*t.playerShares;let u=a/n;return isNaN(u)&&(u=0),r.createElement(r.Fragment,null,r.createElement(c.Z,{display:"flex"},r.createElement(l.Z,{title:r.createElement(s.Z,null,"Shares in the long position will increase in value if the price of the corresponding stock increases")},r.createElement(s.Z,{variant:"h5",color:"primary"},"Long Position:"))),r.createElement(s.Z,null,"Shares: ",(0,o.O3)(t.playerShares)),r.createElement(s.Z,null,"Average Price: ",r.createElement(i.W,{money:t.playerAvgPx})," (Total Cost: ",r.createElement(i.W,{money:n}),")"),r.createElement(s.Z,null,"Profit: ",r.createElement(i.W,{money:a})," (",(0,o.T3)(u),")"))}function m(e){const t=e.stock,n=t.playerShortShares*t.playerAvgShortPx,u=(t.playerAvgShortPx-t.getAskPrice())*t.playerShortShares;let m=u/n;return isNaN(m)&&(m=0),8===a.J5.bitNodeN||a.J5.sourceFileLvl(8)>=2?r.createElement(r.Fragment,null,r.createElement(c.Z,{display:"flex"},r.createElement(l.Z,{title:r.createElement(s.Z,null,"Shares in the short position will increase in value if the price of the corresponding stock decreases")},r.createElement(s.Z,{variant:"h5",color:"primary"},"Short Position:"))),r.createElement(s.Z,null,"Shares: ",(0,o.O3)(t.playerShortShares)),r.createElement(s.Z,null,"Average Price: ",r.createElement(i.W,{money:t.playerAvgShortPx})," (Total Cost: ",r.createElement(i.W,{money:n}),")"),r.createElement(s.Z,null,"Profit: ",r.createElement(i.W,{money:u})," (",(0,o.T3)(m),")")):r.createElement(r.Fragment,null)}function f(e){const t=e.stock;return r.createElement(r.Fragment,null,r.createElement(s.Z,null,"Max Shares: ",(0,o.O3)(t.maxShares)),r.createElement(s.Z,null,"Ask Price: ",r.createElement(i.W,{money:t.getAskPrice()})),r.createElement("br",null),r.createElement(s.Z,null,"Bid Price: ",r.createElement(i.W,{money:t.getBidPrice()})),r.createElement(u,e),r.createElement(m,e))}},36265:(e,t,n)=>{"use strict";n.d(t,{m:()=>s});var r=n(67294),a=n(81138),o=n(17575),i=n(56798);function s(e){return r.createElement(o.Z,{title:null!=e.tooltip?r.createElement(a.Z,null,e.tooltip):""},r.createElement(i.Z,{onClick:e.onClick},e.text))}},13915:(e,t,n)=>{"use strict";n.d(t,{K:()=>l});var r=n(67294),a=n(27900),o=n(56006),i=n(22213),s=n(88775);function l(e){const t=(0,s.S)(),[n,l]=(0,r.useState)(o.v.AllStocks),[c,u]=(0,r.useState)([]),m=[];for(const s of Object.keys(e.stockMarket)){const l=e.stockMarket[s];if(l instanceof i.W){if(c.length>0&&!c.includes(l.symbol))continue;let i=e.stockMarket.Orders[l.symbol];if(null==i&&(i=[]),n===o.v.Portfolio&&0===l.playerShares&&0===l.playerShortShares&&0===i.length)continue;m.push(r.createElement(a.x,{key:l.symbol,orders:i,rerenderAllTickers:t,stock:l}))}}return r.createElement(r.Fragment,null,r.createElement(o.T,{changeDisplayMode:function(){n===o.v.AllStocks?l(o.v.Portfolio):l(o.v.AllStocks)},changeWatchlistFilter:function(e){const t=e.target.value.replace(/\s/g,"");u(""!==t?t.split(","):[])},tickerDisplayMode:n}),m)}},56006:(e,t,n)=>{"use strict";n.d(t,{T:()=>u,v:()=>l});var r=n(67294),a=n(81138),o=n(17575),i=n(56798),s=n(66351);let l;function c(e){let t="",n="";return e.tickerDisplayMode===l.Portfolio?(t="Switch to 'All Stocks' Mode",n="Displays all stocks on the WSE"):(t="Switch to 'Portfolio' Mode",n="Displays only the stocks for which you have shares or orders"),r.createElement(o.Z,{title:r.createElement(a.Z,null,n)},r.createElement(i.Z,{onClick:e.changeDisplayMode},t))}function u(e){return r.createElement(r.Fragment,null,r.createElement(c,e),r.createElement("br",null),r.createElement(s.Z,{sx:{width:"100%"},onChange:e.changeWatchlistFilter,placeholder:"Filter Stocks by symbol (comma-separated list)",type:"text"}))}!function(e){e[e.AllStocks=0]="AllStocks",e[e.Portfolio=1]="Portfolio"}(l||(l={}))},65065:(e,t,n)=>{"use strict";n.d(t,{o:()=>r});const r=new(n(31492).o)},57082:(e,t,n)=>{"use strict";n.d(t,{N:()=>r,s:()=>o});const r=["Type 'help name' to learn more about the command "," ",' alias [-g] [name="value"] Create or display Terminal aliases'," analyze Get information about the current machine "," backdoor Install a backdoor on the current machine "," buy [-l/-a/program] Purchase a program through the Dark Web"," cat [file] Display a .msg, .lit, or .txt file"," cd [dir] Change to a new directory"," check [script] [args...] Print a script's logs to Terminal"," clear Clear all text on the terminal "," cls See 'clear' command "," connect [hostname] Connects to a remote server"," cp [src] [dst] Copy a file"," download [script/text file] Downloads scripts or text files to your computer"," expr [math expression] Evaluate a mathematical expression"," free Check the machine's memory (RAM) usage"," grow Spoof money in a servers bank account, increasing the amount available."," hack Hack the current machine"," help [command] Display this help text, or the help text for a command"," history [-c] Display the terminal history"," home Connect to home computer"," hostname Displays the hostname of the machine"," kill [script/pid] [args...] Stops the specified script on the current server "," killall Stops all running scripts on the current machine"," ls [dir] [--grep pattern] Displays all files on the machine"," lscpu Displays the number of CPU cores on the machine"," mem [script] [-t n] Displays the amount of RAM required to run the script"," mv [src] [dest] Move/rename a text or script file"," nano [file ...] Text editor - Open up and edit one or more scripts or text files"," ps Display all scripts that are currently running"," rm [file] Delete a file from the server"," run [name] [-t n] [--tail] [args...] Execute a program or script"," scan Prints all immediately-available network connections"," scan-analyze [d] [-a] Prints info for all servers up to d nodes away"," scp [file ...] [server] Copies a file to a destination server"," sudov Shows whether you have root access on this computer"," tail [script] [args...] Displays dynamic logs for the specified script"," top Displays all running scripts and their RAM usage"," unalias [alias name] Deletes the specified alias"," vim [file ...] Text editor - Open up and edit one or more scripts or text files in vim mode"," weaken Reduce the security of the current machine"," wget [url] [target file] Retrieves code/text from a web server"," "],a=e=>[`Usage: ${e} [file ...] | [glob]`," ","Opens up the specified file(s) in the Script Editor. Only scripts (.js, or .script) or text files (.txt) ","can be edited using the Script Editor. If a file does not exist a new one will be created"," ",`If provided a glob as the only argument, ${e} can spider directories and open all matching `,`files at once. ${e} cannot create files using globs, so your scripts must already exist.`," ","Examples:"," ",` ${e} test.js`,` ${e} test.js test2.js`," ",` ${e} test.*`,` ${e} /my-dir/*.js`," "],o={alias:['Usage: alias [-g] [name="value"] '," ","Create or display aliases. An alias enables a replacement of a word with another string. ","It can be used to abbreviate a commonly used command, or commonly used parts of a command. The NAME ","of an alias defines the word that will be replaced, while the VALUE defines what it will be replaced by. For example, ","you could create the alias 'nuke' for the Terminal command 'run NUKE.exe' using the following: "," ",' alias nuke="run NUKE.exe"'," ","Then, to run the NUKE.exe program you would just have to enter 'nuke' in Terminal rather than the full command. ","It is important to note that 'default' aliases will only be substituted for the first word of a Terminal command. For ","example, if the following alias was set: "," ",' alias worm="HTTPWorm.exe"'," ","and then you tried to run the following terminal command: "," "," run worm"," ","This would fail because the worm alias is not the first word of a Terminal command. To allow an alias to be substituted ","anywhere in a Terminal command, rather than just the first word, you must set it to be a global alias using the -g flag: "," ",' alias -g worm="HTTPWorm.exe"'," ","Now, the 'worm' alias will be substituted anytime it shows up as an individual word in a Terminal command. "," ","Entering just the command 'alias' without any arguments prints the list of all defined aliases in the reusable form ","'alias NAME=VALUE' on the Terminal. "," ","The 'unalias' command can be used to remove aliases."," "],analyze:["Usage: analyze"," ","Prints details and statistics about the current server. The information that is printed includes basic ","server details such as the hostname, whether the player has root access, what ports are opened/closed, and also ","hacking-related information such as an estimated chance to successfully hack, an estimate of how much money is ","available on the server, etc."," "],backdoor:["Usage: backdoor"," ","Install a backdoor on the current machine, grants a secret bonus depending on the machine."," ","Requires root access to run."," "],buy:["Usage: buy [-l / -a / program]"," ","Purchase a program through the Dark Web. Requires a TOR router to use."," ","If this command is ran with the '-l' flag, it will display a list of all programs that can be bought through the ","dark web to the Terminal, as well as their costs."," ","If this command is ran with the '-a' flag, it will attempt to purchase all unowned programs."," ","Otherwise, the name of the program must be passed in as a parameter. This name is NOT case-sensitive."," "],cat:["Usage: cat [file]"," ","Display message (.msg), literature (.lit), or text (.txt) files. Examples:"," "," cat j1.msg"," "," cat foo.lit"," "," cat servers.txt"," "],cd:["Usage: cd [dir]"," ","Change to the specified directory. Note that this works even for directories that don't exist. If you ","change to a directory that does not exist, it will not be 'created'. Examples:"," "," cd scripts/hacking"," "," cd /logs"," "," cd ../"," "],check:["Usage: check [script name] [args...]"," ","Print the logs of the script specified by the script name and arguments to the Terminal. Each argument must be separated by ","a space. Remember that a running script is uniquely ","identified both by its name and the arguments that are used to start it. So, if a script was ran with the following arguments: "," "," run foo.script 1 2 foodnstuff"," ","Then to run the 'check' command on this script you would have to pass the same arguments in: "," "," check foo.script 1 2 foodnstuff"," "],clear:["Usage: clear"," ","Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up ","and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'cls' command"," "],cls:["Usage: cls"," ","Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up ","and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'clear' command"," "],connect:["Usage: connect [hostname]"," ","Connect to a remote server. The hostname of the remote server must be given as the argument ","to this command. Note that only servers that are immediately adjacent to the current server in the network and the ones that have","a backdoor installed can be connected to. To see which servers can be connected to, use the 'scan' command."," "],cp:["Usage: cp [src] [dst]"," ","Copy a file on this server. To copy a file to another server use scp."," "],download:["Usage: download [script/text file]"," ","Downloads a script or text file to your computer (like your real life computer)."," ","You can also download all of your scripts/text files as a zip file using the following Terminal commands:"," ","Download all scripts and text files: download *"," ","Download all scripts: download *.script"," ","Download all text files: download *.txt"," "],expr:["Usage: expr [mathematical expression]"," ","Evaluate a simple mathematical expression. Supports native JavaScript operators:"," ","+, -, /, *, **, %"," ","Example:"," "," expr 25 * 2 ** 10"," ","Note that letters (non-digits) are not allowed and will be removed from the input."," "],free:["Usage: free"," ","Displays the memory usage on the current machine. Print the amount of RAM that is available on the current server as well as ","how much of it is being used."," "],grow:["Usage: grow"," ","Spoof transactions in the current server. Increasing the money available by hacking. Requires root access.","See the wiki page for hacking mechanics."," "],hack:["Usage: hack"," ","Attempt to hack the current server. Requires root access in order to be run. See the wiki page for hacking mechanics"," "],help:["Usage: help [command]"," ","Display Terminal help information. Without arguments, 'help' prints a list of all valid Terminal commands and a brief ","description of their functionality. You can also pass the name of a Terminal command as an argument to 'help' to print ","more detailed information about the Terminal command. Examples: "," "," help alias"," "," help scan-analyze"," "],history:["Usage: history [-c]"," ","Without arguments, displays the terminal command history. To clear the history, pass in the '-c' argument."," "],home:["Usage: home"," ","Connect to your home computer. This will work no matter what server you are currently connected to."," "],hostname:["Usage: hostname"," ","Prints the hostname of the current server"," "],kill:["Usage: kill [script name] [args...] or kill [pid]"," ","Kill the script specified by the script name and arguments OR by its PID."," ","If you are killing the script using its filename and arguments, then each ","argument must be separated by a space. Remember that a running script is ","uniquely identified by both its name and the arguments that are used to start ","it. So, if a script was ran with the following arguments:"," "," run foo.script 1 sigma-cosmetics"," ","Then to kill this script the same arguments would have to be used:"," "," kill foo.script 1 sigma-cosmetics"," ","If you are killing the script using its PID, then the PID argument must be numeric"," "],killall:["Usage: killall"," ","Kills all scripts on the current server. ","Note that after the 'kill' command is issued for a script, it may take a while for the script to actually stop running. ","This will happen if the script is in the middle of a command such as grow() or weaken() that takes time to execute. ","The script will not be stopped/killed until after that time has elapsed."," "],ls:["Usage: ls [dir] [-l] [--grep pattern]"," ","The ls command, with no arguments, prints all files and directories on the current server's directory to the Terminal screen. ","The files will be displayed in alphabetical order. "," ","The 'dir' optional parameter can be used to display files/directories in another directory."," ","The '-l' optional parameter allows you to force each item onto a single line."," ","The '--grep pattern' optional parameter can be used to only display files whose filenames match the specified pattern."," ","Examples:"," ","List all files with the '.script' extension in the current directory:"," "," ls -l --grep .script"," ","List all files with the '.js' extension in the root directory:"," "," ls / -l --grep .js"," ","List all files with the word 'purchase' in the filename, in the 'scripts' directory:"," "," ls scripts -l --grep purchase"," "],lscpu:["Usage: lscpu"," ","Prints the number of CPU Cores the current server has"," "],mem:["Usage: mem [script name] [-t num_threads]"," ","Displays the amount of RAM needed to run the specified script with a single thread. The command can also be used to print ","the amount of RAM needed to run a script with multiple threads using the '-t' flag. If the '-t' flag is specified, then ","an argument for the number of threads must be passed in afterwards. Examples:"," "," mem foo.script"," "," mem foo.script -t 50"," ","The first example above will print the amount of RAM needed to run 'foo.script' with a single thread. The second example ","above will print the amount of RAM needed to run 'foo.script' with 50 threads."," "],mv:["Usage: mv [src] [dest]"," ","Move the source file to the specified destination. This can also be used to rename files. ","This command only works for scripts and text files (.txt). This command CANNOT be used to ","convert to different file types"," ","Note that, unlike the Linux 'mv' command, the destination argument must be the ","full filepath. ","Examples: "," "," mv hacking-controller.script scripts/hacking-controller.script"," "," mv myScript.js myOldScript.js"," "],nano:a("nano"),ps:["Usage: ps"," ","Prints all scripts that are running on the current server"," "],rm:["Usage: rm [file]"," ","Removes the specified file from the current server. A file can be a script, a program, or a message file. "," ","WARNING: This is permanent and cannot be undone"," "],run:["Usage: run [file name] [-t] [num threads] [args...]"," ","Execute a program, script or coding contract."," ","The '[-t]', '[num threads]', and '[args...]' arguments are only valid when running a script. The '-t' flag is used ","to indicate that the script should be run with the specified number of threads. If the flag is omitted, ","then the script will be run with a single thread by default. ","If the '-t' flag is used, then it MUST come immediately ","after the script name, and the [num threads] argument MUST come immediately afterwards. "," ","[args...] represents a variable number of arguments that will be passed into the script. See the documentation ","about script arguments. Each specified argument must be separated by a space. "," "],scan:["Usage: scan"," ","Prints all immediately-available network connection. This will print a list of all servers that you can currently connect ","to using the 'connect' Terminal command."," "],"scan-analyze":["Usage: scan-analyze [depth] [-a]"," ","Prints detailed information about all servers up to [depth] nodes away on the network. Calling ","'scan-analyze 1' will display information for the same servers that are shown by the 'scan' Terminal ","command. This command also shows the relative paths to reach each server."," ","By default, the maximum depth that can be specified for 'scan-analyze' is 3. However, once you have ","the DeepscanV1.exe and DeepscanV2.exe programs, you can execute 'scan-analyze' with a depth up to ","5 and 10, respectively."," ","The information 'scan-analyze' displays about each server includes whether or not you have root access to it, ","its required hacking level, the number of open ports required to run NUKE.exe on it, and how much RAM ","it has."," ","By default, this command will not display servers that you have purchased. However, you can pass in the ","-a flag at the end of the command if you would like to enable that."," "],scp:["Usage: scp [filename ...] [target server]"," ","Copies the specified file(s) from the current server to the target server. ","This command only works for script files (.script or .js extension), literature files (.lit extension), ","and text files (.txt extension). ","The second argument passed in must be the hostname or IP of the target server. Examples:"," "," scp foo.script n00dles"," "," scp foo.script bar.script n00dles"," "],sudov:["Usage: sudov"," ","Prints whether or not you have root access to the current machine"," "],tail:["Usage: tail [script name] [args...]"," ","Displays dynamic logs for the script specified by the script name and arguments. Each argument must be separated ","by a space. Remember that a running script is uniquely identified by both its name and the arguments that were used ","to run it. So, if a script was ran with the following arguments: "," "," run foo.script 10 50000"," ","Then in order to check its logs with 'tail' the same arguments must be used: "," "," tail foo.script 10 50000"," "],top:["Usage: top"," ","Prints a list of all scripts running on the current server as well as their thread count and how much ","RAM they are using in total."," "],unalias:["Usage: unalias [alias name]"," ","Deletes the specified alias. Note that the double quotation marks are required. "," ","As an example, if an alias was declared using:"," ",' alias r="run"'," ","Then it could be removed using:"," "," unalias r"," ","It is not necessary to differentiate between global and non-global aliases when using 'unalias'"," "],vim:a("vim"),weaken:["Usage: weaken"," ","Reduces the security level of the current server. Decreasing the time it takes for all operations on this server.","Requires root access. See the wiki page for hacking mechanics."," "],wget:["Usage: wget [url] [target file]"," ","Retrieves data from a URL and downloads it to a file on the current server. The data can only ","be downloaded to a script (.script or .js) or a text file (.txt). If the file already exists, ","it will be overwritten by this command."," ","Note that it will not be possible to download data from many websites because they do not allow ","cross-origin resource sharing (CORS). Example:"," "," wget https://raw.githubusercontent.com/bitburner-official/bitburner-src/master/README.md game_readme.txt"," "]}},86142:(e,t,n)=>{"use strict";n.d(t,{Jm:()=>s,TE:()=>c,rU:()=>l,r_:()=>i});var r=n(67294),a=n(51087),o=n(30282);class i{constructor(e,t){a.Z.TimestampsFormat&&(e="["+(0,o.m)(a.Z.TimestampsFormat)+"] "+e),this.text=e,this.color=t}}class s{constructor(e){a.Z.TimestampsFormat&&(e=r.createElement(r.Fragment,null,"[",(0,o.m)(a.Z.TimestampsFormat),"] ",e)),this.raw=e}}class l{constructor(e,t){a.Z.TimestampsFormat&&(e="["+(0,o.m)(a.Z.TimestampsFormat)+"] "+e),this.hostname=t,this.dashes=e}}class c{constructor(e,t,n){this.time=e,this.timeLeft=e,this.action=t,this.server=n}}},91371:(e,t,n)=>{"use strict";n.d(t,{$4:()=>l,CL:()=>s});var r=n(22392),a=n(69895);function o(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return isNaN(t)?(0,r.g)(e):t}function i(e){const t=e.match(/(?:'[^']*'|"[^"]*"|[^;])*/g);return t?t.map((e=>e.trim())):[]}function s(e){return i(e).map(a.lg).flatMap(i).filter(Boolean)}function l(e){const t=e.match(/(?:([^ ;"']*"[^"]*"|[^ ;"']*'[^']*'|[^\s]+))/g);return t?t.map(o):[]}},31492:(e,t,n)=>{"use strict";n.d(t,{o:()=>ye});var r=n(86142),a=n(52947),o=n(24815),i=n(49173),s=n(3853),l=n(89916),c=n(33244),u=n(62725),m=n(68028),f=n(69917),h=n(72938),d=n(97467),p=n(19468),g=n(40780),y=n(2517),b=n(91371),v=n(40425),k=n(51087),w=n(93826),E=n(49708),S=n(22115),C=n(49802),x=n(85875),N=n(96139),M=n(23140),A=n(6984),T=n(41201),L=n(25995),R=n(33586),F=n(69247),_=n(70179),I=n(66798),P=n(7855),B=n(88172),O=n(31937),D=n(64545),Z=n(44050),G=n(19805),J=n(34909),W=n(94393),H=n(23692),U=n(65802),j=n(82524),$=n(30969),q=n(5222),z=n(88863),V=n(42698),Y=n(28736),K=n(13447),X=n(20741),Q=n(51439),ee=n(64199),te=n(93057),ne=n(30741),re=n(38686),ae=n(1512),oe=n(46463),ie=n(87436),se=n(10649),le=n(19551),ce=n(90936),ue=n(97017),me=n(15122),fe=n(97740),he=n(2827),de=n(27757),pe=n(64962),ge=n(48897);class ye{action=null;commandHistory=[];commandHistoryIndex=0;outputHistory=[new r.r_(`Bitburner v${h.t.VersionString} (${(0,ce.v)()})`,"primary")];contractOpen=!1;currDir="";process(e){null!==this.action&&(this.action.timeLeft-=h.t.MilliPerCycle*e/1e3,this.action.timeLeft<.01&&this.finishAction(!1))}append(e){this.outputHistory.push(e),this.outputHistory.length>k.Z.MaxTerminalCapacity&&this.outputHistory.splice(0,this.outputHistory.length-k.Z.MaxTerminalCapacity),m.t.emit()}print(e){this.append(new r.r_(e,"primary"))}printRaw(e){this.append(new r.Jm(e))}error(e){this.append(new r.r_(e,"error"))}success(e){this.append(new r.r_(e,"success"))}info(e){this.append(new r.r_(e,"info"))}warn(e){this.append(new r.r_(e,"warn"))}startHack(){const e=i.J5.getCurrentServer();if(e instanceof s.u)this.error("Cannot hack this kind of server");else{if(!(e instanceof l.x))throw new Error("server should be normal server");this.startAction((0,E.sI)(e,i.J5)/4,"h",e)}}startGrow(){const e=i.J5.getCurrentServer();if(e instanceof s.u)this.error("Cannot grow this kind of server");else{if(!(e instanceof l.x))throw new Error("server should be normal server");this.startAction((0,E.Md)(e,i.J5)/16,"g",e)}}startWeaken(){const e=i.J5.getCurrentServer();if(e instanceof s.u)this.error("Cannot weaken this kind of server");else{if(!(e instanceof l.x))throw new Error("server should be normal server");this.startAction((0,E.Vp)(e,i.J5)/16,"w",e)}}startBackdoor(){const e=i.J5.getCurrentServer();if(e instanceof s.u)this.error("Cannot backdoor this kind of server");else{if(!(e instanceof l.x))throw new Error("server should be normal server");this.startAction((0,E.sI)(e,i.J5)/4,"b",e)}}startAnalyze(){this.print("Analyzing system...");const e=i.J5.getCurrentServer();this.startAction(1,"a",e)}startAction(e,t,n){this.action=new r.TE(e,t,n)}finishHack(e){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1])return;if(e instanceof s.u)return void this.error("Cannot hack this kind of server");if(!(e instanceof l.x))throw new Error("server should be normal server");const t=(0,E.gb)(e,i.J5),n=Math.random(),r=(0,E.iG)(e,i.J5),c=r/4;if(n1&&void 0!==arguments[1]&&arguments[1])return;if(e instanceof s.u)return void this.error("Cannot grow this kind of server");if(!(e instanceof l.x))throw new Error("server should be normal server");const t=(0,E.iG)(e,i.J5),n=e.hackDifficulty,r=(0,y.pw)(e,25,e.cpuCores)-1,a=e.hackDifficulty;i.J5.gainHackingExp(t),this.print(`Available money on '${e.hostname}' grown by ${(0,S.T3)(r,6)}. Gained ${(0,S.Mf)(t)} hacking exp.`),this.print(`Security increased on '${e.hostname}' from ${(0,S.L7)(n)} to ${(0,S.L7)(a)}`)}finishWeaken(e){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1])return;if(e instanceof s.u)return void this.error("Cannot weaken this kind of server");if(!(e instanceof l.x))throw new Error("server should be normal server");const t=(0,E.iG)(e,i.J5),n=e.hackDifficulty;e.weaken(h.t.ServerWeakenAmount);const r=e.hackDifficulty;i.J5.gainHackingExp(t),this.print(`Security decreased on '${e.hostname}' from ${(0,S.L7)(n)} to ${(0,S.L7)(r)} (min: ${(0,S.L7)(e.minDifficulty)}) and Gained ${(0,S.Mf)(t)} hacking exp.`)}finishBackdoor(e){if(!(arguments.length>1&&void 0!==arguments[1]&&arguments[1])){if(e instanceof s.u)return void this.error("Cannot hack this kind of server");if(!(e instanceof l.x))throw new Error("server should be normal server");if(e.backdoorInstalled=!0,v.r.WorldDaemon===e.hostname)return null==i.J5.bitNodeN&&(i.J5.bitNodeN=1),void a.F.toPage(o.T3.BitVerse,{flume:!1,quick:!1});he.D.Counters.checkFactionInvitations=0,he.D.checkCounters(),this.print(`Backdoor on '${e.hostname}' successful!`)}}finishAnalyze(e){if(!(arguments.length>1&&void 0!==arguments[1]&&arguments[1])){const t=e instanceof s.u;this.print(e.hostname+": ");const n=e.organizationName;this.print("Organization name: "+(t?"player":n));const r=!t&&e.hasAdminRights||t;this.print("Root Access: "+(r?"YES":"NO"));const a=r&&e.maxRam>0;if(this.print("Can run scripts on this host: "+(a?"YES":"NO")),this.print("RAM: "+(0,S.$1)(e.maxRam)),e instanceof l.x){this.print("Backdoor: "+(e.backdoorInstalled?"YES":"NO"));const n=e.requiredHackingSkill;this.print("Required hacking skill for hack() and backdoor: "+(t?"N/A":n));const r=e.hackDifficulty;this.print("Server security level: "+(t?"N/A":(0,S.L7)(r)));const a=(0,E.gb)(e,i.J5);this.print("Chance to hack: "+(t?"N/A":(0,S.T3)(a)));const o=1e3*(0,E.sI)(e,i.J5);this.print("Time to hack: "+(t?"N/A":(0,C.UF)(o,!0)))}if(this.print(`Total money available on server: ${e instanceof l.x?(0,S.lb)(e.moneyAvailable):"N/A"}`),e instanceof l.x){const n=e.numOpenPortsRequired;this.print("Required number of open ports for NUKE: "+(t?"N/A":n)),this.print("SSH port: "+(e.sshPortOpen?"Open":"Closed")),this.print("FTP port: "+(e.ftpPortOpen?"Open":"Closed")),this.print("SMTP port: "+(e.smtpPortOpen?"Open":"Closed")),this.print("HTTP port: "+(e.httpPortOpen?"Open":"Closed")),this.print("SQL port: "+(e.sqlPortOpen?"Open":"Closed"))}}}finishAction(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(null!==this.action){if(!this.action.server)throw new Error("Missing action target server");this.print(this.getProgressText()),"h"===this.action.action?this.finishHack(this.action.server,e):"g"===this.action.action?this.finishGrow(this.action.server,e):"w"===this.action.action?this.finishWeaken(this.action.server,e):"b"===this.action.action?this.finishBackdoor(this.action.server,e):"a"===this.action.action&&this.finishAnalyze(this.action.server,e),e&&this.print("Cancelled"),this.action=null,m.t.emit()}else if(!e)throw new Error("Finish action called when there was no action")}getFile(e){return(0,f.UH)(e)?this.getScript(e):(0,ge.e)(e)?this.getTextFile(e):e.endsWith(".lit")?this.getLitFile(e):null}getFilepath(e,t){return t||e.startsWith("/")?(0,pe.Iw)(e):(e="./"+e,(0,pe.Iw)(e,this.currDir))}getDirectory(e,t){return t||e.startsWith("/")?(0,de.RL)(e):(e="./"+e,(0,de.RL)(e,this.currDir))}getScript(e){const t=i.J5.getCurrentServer(),n=this.getFilepath(e);return n&&(0,f.UH)(n)?t.scripts.get(n)??null:null}getTextFile(e){const t=i.J5.getCurrentServer(),n=this.getFilepath(e);return n&&(0,ge.e)(n)?t.textFiles.get(n)??null:null}getLitFile(e){const t=i.J5.getCurrentServer(),n=this.getFilepath(e);if(!n)return null;for(const e of t.messages)if("string"==typeof e&&n===e)return e;return null}cwd(){return this.currDir}setcwd(e){this.currDir=e,m.t.emit()}async runContract(e){if(this.contractOpen)return this.error("There's already a Coding Contract in Progress");const t=i.J5.getCurrentServer(),n=t.getContract(e);if(!n)return this.error("No such contract");this.contractOpen=!0;const r=await n.prompt();if(null==t.getContract(e))return this.contractOpen=!1,this.error("Contract no longer exists (Was it solved by a script?)");switch(r){case u.cu.Success:if(null!==n.reward){const e=i.J5.gainCodingContractReward(n.reward,n.getDifficulty());this.print(`Contract SUCCESS - ${e}`)}t.removeContract(n);break;case u.cu.Failure:++n.tries,n.tries>=n.getMaxNumTries()?(this.error("Contract FAILED - Contract is now self-destructing"),t.removeContract(n)):this.error(`Contract FAILED - ${n.getMaxNumTries()-n.tries} tries remaining`);break;case u.cu.Cancelled:default:this.print("Contract cancelled")}this.contractOpen=!1}executeScanAnalyzeCommand(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const a=(e,r)=>!n&&e.purchasedByPlayer&&"home"!=e.hostname||r>t||!n&&e instanceof s.u,o=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return{hostname:t.hostname,children:t.serversOnNetwork.filter((t=>t!=e)).map((e=>(0,d.WT)(e))).filter((e=>!!e)).filter((e=>!a(e,n))).map((e=>o(t.hostname,e,n+1)))}},u=o(i.J5.getCurrentServer().hostname,i.J5.getCurrentServer()),m=function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[" "],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=n.slice(0,n.length-1).join("")+(a?"┗ ":"┣ "),s=n.join("")+(t.children.length>0?"┃ ":" ");i.J5.hasProgram(c.CompletedProgramName.autoLink)?e.append(new r.rU(o,t.hostname)):e.print(o+t.hostname+"\n");const u=(0,d.WT)(t.hostname);if(u){if(u instanceof l.x){const t=u.hasAdminRights?"YES":"NO";e.print(`${s}Root Access: ${t}, Required hacking skill: ${u.requiredHackingSkill}\n`),e.print(`${s}Number of open ports required to NUKE: ${u.numOpenPortsRequired}\n`)}e.print(`${s}RAM: ${(0,S.$1)(u.maxRam)}\n`),t.children.forEach(((e,r)=>m(e,[...n,r===t.children.length-1?" ":"┃ "],r===t.children.length-1)))}};m(u)}connectToServer(e){const t=(0,d.WT)(e);null!=t?(i.J5.getCurrentServer().isConnectedTo=!1,i.J5.currentServer=t.hostname,i.J5.getCurrentServer().isConnectedTo=!0,this.print("Connected to "+t.hostname),this.setcwd(de.Jz),"darkweb"==i.J5.getCurrentServer().hostname&&(0,p.u2)()):this.error("Invalid server. Connection failed.")}executeCommands(e){this.commandHistory[this.commandHistory.length-1]!=e&&(this.commandHistory.push(e),this.commandHistory.length>50&&this.commandHistory.splice(0,1),i.J5.terminalCommandHistory=this.commandHistory),this.commandHistoryIndex=this.commandHistory.length;const t=(0,b.CL)(e);for(const e of t)this.executeCommand(e)}clear(){this.outputHistory=[new r.r_(`Bitburner v${h.t.VersionString} (${(0,ce.v)()})`,"primary")],m.t.emit(),m.m.emit()}prestige(){this.action=null,this.clear()}executeCommand(e){if(null!==this.action)return this.error(`Cannot execute command (${e}) while an action is in progress`);const t=(0,b.$4)(e);if(!t.length)return;const n=i.J5.getCurrentServer();if(g.wP.isRunning){const e=(0,d.WT)("n00dles");if(null==e)throw new Error("Could not get n00dles server");switch(g.wP.currStep){case g.$o.TerminalHelp:if(1!==t.length||"help"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalLs:if(1!==t.length||"ls"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalScan:if(1!==t.length||"scan"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalScanAnalyze1:if(1!=t.length||"scan-analyze"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalScanAnalyze2:if(2!=t.length||"scan-analyze"!=t[0]||2!==t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalConnect:if(2!=t.length)return void this.error("Bad command. Please follow the tutorial");if("connect"!=t[0]||"n00dles"!=t[1]&&t[1]!=e.hostname)return void this.error("Wrong command! Try again!");(0,g.ZF)();break;case g.$o.TerminalAnalyze:if(1!==t.length||"analyze"!==t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalNuke:if(2!=t.length||"run"!=t[0]||"NUKE.exe"!=t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalManualHack:if(1!=t.length||"hack"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalHackingMechanics:if(1!==t.length||!["grow","weaken","hack"].includes(t[0]+""))return void this.error("Bad command. Please follow the tutorial");break;case g.$o.TerminalGoHome:if(1!=t.length||"home"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalCreateScript:if(2!=t.length||"nano"!=t[0]||"n00dles.script"!=t[1]&&"n00dles.js"!=t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalFree:if(1!=t.length||"free"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalRunScript:if(2!=t.length||"run"!=t[0]||"n00dles.script"!=t[1]&&"n00dles.js"!=t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.ActiveScriptsToTerminal:if(2!=t.length||"tail"!=t[0]||"n00dles.script"!=t[1]&&"n00dles.js"!=t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;default:return void this.error("Please follow the tutorial, or click 'EXIT' if you'd like to skip it")}}const r=t[0];if("string"!=typeof r)return this.error(`${r} is not a valid command.`);if((0,pe.Vf)(r))return(0,X.K)(t,n);t.shift();const a={"scan-analyze":ee.h,alias:x.b,analyze:N.B,backdoor:M.c,buy:A.b,cat:T.d,cd:L.cd,changelog:me.V,check:R.B,clear:()=>this.clear(),cls:()=>this.clear(),connect:F.$,cp:_.cp,download:I.L,expr:P.Y,free:B.g,grow:O.t,hack:D.U,help:Z.R,history:G.m,home:J.L,hostname:W.K,kill:H.V,killall:U.G,ls:j.ls,lscpu:$.Z,mem:q.$,mv:z.mv,nano:V.J,ps:Y.ps,rm:K.rm,run:X.K,scan:Q.R,scp:te.D,sudov:ne.C,tail:re.G,apr1:ue.W,top:ae.w,unalias:oe.r,vim:ie.d,weaken:se.H,wget:le.R}[r.toLowerCase()];if(!a)return this.error(`Command ${r} not found`);a(t,n)}getProgressText(){if(null===this.action)throw new Error("trying to get the progress text when there's no action");return(0,w.x)({progress:(this.action.time-this.action.timeLeft)/this.action.time,totalTicks:50})}}},68028:(e,t,n)=>{"use strict";n.d(t,{m:()=>o,t:()=>a});var r=n(13342);const a=new r.v,o=new r.v},85875:(e,t,n)=>{"use strict";n.d(t,{b:()=>o});var r=n(65065),a=n(69895);function o(e){0!==e.length?1===e.length&&(0,a.nS)(e[0]+"")?r.o.print(`Set alias ${e[0]}`):2===e.length&&"-g"===e[0]&&(0,a.nS)(e[1]+"",!0)?r.o.print(`Set global alias ${e[1]}`):r.o.error('Incorrect usage of alias command. Usage: alias [-g] [aliasname="value"]'):(0,a.aX)()}},96139:(e,t,n)=>{"use strict";n.d(t,{B:()=>a});var r=n(65065);function a(e){0===e.length?r.o.startAnalyze():r.o.error("Incorrect usage of analyze command. Usage: analyze")}},97017:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(51674);function a(){r.Z.emit()}},23140:(e,t,n)=>{"use strict";n.d(t,{c:()=>s});var r=n(65065),a=n(49173),o=n(89916),i=n(3853);function s(e,t){if(0!==e.length)return void r.o.error("Incorrect usage of backdoor command. Usage: backdoor");t instanceof o.x||r.o.error("Can only backdoor normal servers");const n=t;n.purchasedByPlayer?r.o.error("Cannot use backdoor on your own machines! You are currently connected to your home PC or one of your purchased servers"):n.hasAdminRights?n.requiredHackingSkill>a.J5.skills.hacking?r.o.error("Your hacking skill is not high enough to use backdoor on this machine. Try analyzing the machine to determine the required hacking skill"):n instanceof i.u?r.o.error("Cannot use backdoor on this type of Server"):r.o.startBackdoor():r.o.error("You do not have admin rights for this machine! Cannot backdoor")}},6984:(e,t,n)=>{"use strict";n.d(t,{b:()=>i});var r=n(65065),a=n(49173),o=n(19468);function i(e){if(!a.J5.hasTorRouter())return void r.o.error("You need to be able to connect to the Dark Web to use the buy command. (Maybe there's a TOR router you can buy somewhere)");if(1!=e.length)return r.o.print("Incorrect number of arguments. Usage: "),r.o.print("buy -l"),r.o.print("buy -a"),void r.o.print("buy [item name]");const t=e[0]+"";"-l"==t||"-1"==t||"--list"==t?(0,o.uN)():"-a"==t||"--all"==t?(0,o.Km)():(0,o.y$)(t)}},41201:(e,t,n)=>{"use strict";n.d(t,{d:()=>u});var r=n(65065),a=n(72198),o=n(20404),i=n(39463),s=n(69917),l=n(48897),c=n(50862);function u(e,t){if(1!==e.length)return r.o.error("Incorrect usage of cat command. Usage: cat [file]");const n=e[0]+"",u=r.o.getFilepath(n);if(!u)return r.o.error(`Invalid filename: ${n}`);if((0,s.UH)(u)||(0,l.e)(u)){const e=t.getContentFile(u);return e?(0,i.X)(`${e.filename}\n\n${e.content}`):r.o.error(`No file at path ${u}`)}return u.endsWith(".msg")||u.endsWith(".lit")?(0,c.R)("MessageFilename",u)&&t.messages.includes(u)?(0,a.PV)(u):(0,c.R)("LiteratureName",u)&&t.messages.includes(u)?(0,o.O)(u):void r.o.error(`No file at path ${u}`):r.o.error("Invalid file extension. Filename must end with .msg, .txt, .lit, .script or .js")}},25995:(e,t,n)=>{"use strict";n.d(t,{cd:()=>o});var r=n(65065),a=n(27757);function o(e,t){if(e.length>1)return r.o.error("Incorrect number of arguments. Usage: cd [dir]");const n=String(e[0]??"/"),o=(0,a.RL)(n,r.o.currDir);return null===o?r.o.error(`Could not resolve directory ${n}`):(0,a.iL)(o,t)?void r.o.setcwd(o):r.o.error(`Directory ${o} does not exist.`)}},15122:(e,t,n)=>{"use strict";n.d(t,{V:()=>o});var r=n(72938),a=n(39463);const o=()=>(0,a.X)("Most recent changelog info:\n\n"+r.t.LatestUpdate)},33586:(e,t,n)=>{"use strict";n.d(t,{B:()=>i});var r=n(65065),a=n(10364),o=n(69917);function i(e,t){if(e.length<1)r.o.error("Incorrect number of arguments. Usage: check [script] [arg1] [arg2]...");else{const n=r.o.getFilepath(e[0]+"");if(!n)return r.o.error(`Invalid filename: ${e[0]}`);if(!(0,o.UH)(n))return r.o.error(`check: File extension must be one of ${o.a0.join(", ")})`);const i=(0,a.Es)(n,e.slice(1),t);if(null===i)return void r.o.error(`No script named ${n} is running on the server`);i.values().next().value.displayLog()}}},17010:(e,t,n)=>{"use strict";n.d(t,{a:()=>m});var r=n(65065),a=n(24815),o=n(52947),i=n(42281),s=n(69917),l=n(48897),c=n(20706);const u="/** @param {NS} ns */\nexport async function main(ns) {\n\n}";function m(e,t,n){let{args:m,server:f}=t;if(m.length<1)return r.o.error(`Incorrect usage of ${e} command. Usage: ${e} [scriptname]`);const h=new Map;for(const t of m){const n=String(t);if(n.includes("*")||n.includes("?")){for(const[e,t]of(0,c.m)(n,f,r.o.currDir))h.set(e,t.content);continue}const a=r.o.getFilepath(n);if(!a)return r.o.error(`Invalid file path ${t}`);if(!(0,s.UH)(a)&&!(0,l.e)(a))return r.o.error(`${e}: Only scripts or text files can be edited. Invalid file type: ${t}`);const o=f.getContentFile(a),m=o?o.content:a.endsWith(".js")?u:"";h.set(a,m),m===u&&i.M.saveCursor(a,{row:3,column:5})}o.F.toPage(a.T3.ScriptEditor,{files:h,options:n})}},69247:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(65065),a=n(2517),o=n(97467);function i(e,t){if(1!==e.length)return void r.o.error("Incorrect usage of connect command. Usage: connect [hostname]");const n=e[0]+"";for(let e=0;e{"use strict";n.d(t,{cp:()=>s});var r=n(65065),a=n(64962),o=n(48897),i=n(69917);function s(e,t){if(2!==e.length)return r.o.error("Incorrect usage of cp command. Usage: cp [source filename] [destination]");const n=r.o.getFilepath(String(e[0]));if(!n)return r.o.error(`Invalid source filename ${e[0]}`);if(!(0,o.e)(n)&&!(0,i.UH)(n))return r.o.error("cp: Can only be performed on script and text files");const s=t.getContentFile(n);if(!s)return r.o.error(`File not found: ${n}`);const l=String(e[1]);let c=r.o.getFilepath(l);if(!c){const e=r.o.getDirectory(l);if(!e)return r.o.error(`Could not resolve ${l} as a FilePath or Directory`);c=(0,a.bW)(e,(0,a.uP)(n))}if(!(0,o.e)(c)&&!(0,i.UH)(c))return r.o.error(`cp: Can only copy to script and text files (${c} is invalid destination)`);const u=t.writeToContentFile(c,s.content);r.o.print(`File ${n} copied to ${c}`),u.overwritten&&r.o.warn(`${c} was overwritten.`)}},66798:(e,t,n)=>{"use strict";n.d(t,{L:()=>h,e:()=>f});var r=n(65065),a=n(93162),o=n.n(a),i=n(55733),s=n.n(i),l=n(27757),c=n(69917),u=n(48897),m=n(20706);function f(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l.Jz;const r=new(s());for(const[a,o]of(0,m.m)(e,t,n))r.file(a,new Blob([o.content],{type:"text/plain"}));if(0==Object.keys(r.files).length)throw new Error(`No files match the pattern ${e}`);const a=`bitburner${(0,c.UH)(e)?"Scripts":e.endsWith(".txt")?"Texts":"Files"}.zip`;r.generateAsync({type:"blob"}).then((e=>o().saveAs(e,a)))}function h(e,t){if(1!==e.length)return r.o.error("Incorrect usage of download command. Usage: download [script/text file]");const n=String(e[0]);if(n.includes("*")||n.includes("?"))try{return void f(n,t,r.o.currDir)}catch(e){const t=String((null==e?void 0:e.message)??e);return r.o.error(t)}const a=r.o.getFilepath(n);if(!a)return r.o.error(`Could not resolve path ${n}`);if(!(0,c.UH)(a)&&!(0,u.e)(a))return r.o.error("Can only download script and text files");const o=t.getContentFile(a);return o?o.download():r.o.error(`File not found: ${a}`)}},7855:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{Y:()=>expr});var _Terminal__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(65065);function expr(args){if(0===args.length)return void _Terminal__WEBPACK_IMPORTED_MODULE_0__.o.error("Incorrect usage of expr command. Usage: expr [math expression]");const expr=args.join(""),sanitizedExpr=expr.replace(/s+/g,"").replace(/[^-()\d/*+.%]/g,"");let result;try{result=eval(sanitizedExpr)}catch(e){return void _Terminal__WEBPACK_IMPORTED_MODULE_0__.o.error(`Could not evaluate expression: ${sanitizedExpr}`)}_Terminal__WEBPACK_IMPORTED_MODULE_0__.o.print(result)}},88172:(e,t,n)=>{"use strict";n.d(t,{g:()=>o});var r=n(65065),a=n(22115);function o(e,t){if(0!==e.length)return void r.o.error("Incorrect usage of free command. Usage: free");const n=(0,a.$1)(t.maxRam),o=(0,a.$1)(t.ramUsed),i=(0,a.$1)(t.maxRam-t.ramUsed),s=Math.max(n.length,Math.max(o.length,i.length)),l=(0,a.T3)(t.ramUsed/t.maxRam);r.o.print(`Total: ${" ".repeat(s-n.length)}${n}`),r.o.print(`Used: ${" ".repeat(s-o.length)}${o} (${l})`),r.o.print(`Available: ${" ".repeat(s-i.length)}${i}`)}},31937:(e,t,n)=>{"use strict";n.d(t,{t:()=>a});var r=n(65065);function a(e,t){return 0!==e.length?r.o.error("Incorrect usage of grow command. Usage: grow"):t.purchasedByPlayer?r.o.error("Cannot grow your own machines!"):t.hasAdminRights?void 0===t.requiredHackingSkill?r.o.error("Cannot grow this server."):void r.o.startGrow():r.o.error("You do not have admin rights for this machine!")}},64545:(e,t,n)=>{"use strict";n.d(t,{U:()=>o});var r=n(65065),a=n(49173);function o(e,t){return 0!==e.length?r.o.error("Incorrect usage of hack command. Usage: hack"):t.purchasedByPlayer?r.o.error("Cannot hack your own machines!"):t.hasAdminRights?void 0===t.requiredHackingSkill?r.o.error("Cannot hack this server."):t.requiredHackingSkill>a.J5.skills.hacking?r.o.error("Your hacking skill is not high enough to hack this machine. Try analyzing the machine to determine the required hacking skill"):void r.o.startHack():r.o.error("You do not have admin rights for this machine!")}},44050:(e,t,n)=>{"use strict";n.d(t,{R:()=>o});var r=n(65065),a=n(57082);function o(e){if(0===e.length||1===e.length)if(0===e.length)a.N.forEach((e=>r.o.print(e)));else{const t=e[0]+"",n=a.s[t];if(null==n)return void r.o.error("No help topics match '"+t+"'");n.forEach((e=>r.o.print(e)))}else r.o.error("Incorrect usage of help command. Usage: help")}},19805:(e,t,n)=>{"use strict";n.d(t,{m:()=>o});var r=n(65065),a=n(49173);function o(e){if(0===e.length)return void r.o.commandHistory.forEach(((e,t)=>{r.o.print(`${t.toString().padStart(2)} ${e}`)}));const t=e[0]+"";"-c"===t||"--clear"===t?(a.J5.terminalCommandHistory=[],r.o.commandHistory=[],r.o.commandHistoryIndex=1):r.o.error("Incorrect usage of history command. usage: history [-c]")}},34909:(e,t,n)=>{"use strict";n.d(t,{L:()=>i});var r=n(27757),a=n(65065),o=n(49173);function i(e){0===e.length?(o.J5.getCurrentServer().isConnectedTo=!1,o.J5.currentServer=o.J5.getHomeComputer().hostname,o.J5.getCurrentServer().isConnectedTo=!0,a.o.print("Connected to home"),a.o.setcwd(r.Jz)):a.o.error("Incorrect usage of home command. Usage: home")}},94393:(e,t,n)=>{"use strict";n.d(t,{K:()=>a});var r=n(65065);function a(e,t){0===e.length?r.o.print(t.hostname):r.o.error("Incorrect usage of hostname command. Usage: hostname")}},23692:(e,t,n)=>{"use strict";n.d(t,{V:()=>s});var r=n(65065),a=n(10364),o=n(21951),i=n(69917);function s(e,t){try{if(e.length<1||"boolean"==typeof e[0])return void r.o.error("Incorrect usage of kill command. Usage: kill [pid] or kill [scriptname] [arg1] [arg2]...");if("number"==typeof e[0]){const t=e[0];return void((0,o._)(t)?r.o.print(`Killing script with PID ${t}`):r.o.error(`Failed to kill script with PID ${t}. No such script is running`))}const n=r.o.getFilepath(e[0]);if(!n)return r.o.error(`Invalid filename: ${e[0]}`);if(!(0,i.UH)(n))return r.o.error("Invalid file extension. Kill can only be used on scripts.");const s=(0,a.Es)(n,e.slice(1),t);if(null===s)return void r.o.error("No such script is running. Nothing to kill");let l=0;for(const e of s.keys())l++,l<5&&r.o.print(`Killing ${n} with pid ${e}`),(0,o._)(e);l>=5&&r.o.print(`... killed ${l} instances total`)}catch(e){r.o.error(e+"")}}},65802:(e,t,n)=>{"use strict";n.d(t,{G:()=>o});var r=n(65065),a=n(21951);function o(e,t){r.o.print("Killing all running scripts");for(const e of t.runningScriptMap.values())for(const t of e.values())(0,a._)(t.pid)}},82524:(e,t,n)=>{"use strict";n.d(t,{ls:()=>g});var r=n(67294),a=n(73327),o=n(77541),i=n(52947),s=n(24815),l=n(65065),c=n(86021),u=n.n(c),m=n(20404),f=n(72198),h=n(64962),d=n(27757),p=n(50862);function g(e,t){let n;try{n=u()({"-l":Boolean,"--grep":String,"-g":"--grep"},{argv:e})}catch(e){return void g()}const c=n["--grep"]??"";function g(){l.o.error("Incorrect usage of ls command. Usage: ls [dir] [-l] [-g, --grep pattern]")}if(e.length>4)return g();let y=l.o.currDir;if(e[0]&&"string"==typeof e[0]&&!e[0].startsWith("-")){const n=(0,d.RL)(e[0],e[0].startsWith("/")?d.Jz:l.o.currDir);if(null===n||!(0,d.iL)(n,t))return g();y=n}const b=[],v=[],k=[],w=[],E=[],S=[];function C(e,t){const n=(0,h.ws)(y,e);if(!n)return;if(!n.includes(c))return;const r=(0,d.Z1)(n);if(r){if(!r.includes(c)||S.includes(r))return;S.push(r)}else t.push(n)}for(const e of t.programs)C(e,b);for(const e of t.scripts.keys())C(e,v);for(const e of t.textFiles.keys())C(e,k);for(const e of t.contracts)C(e.fn,w);for(const e of t.messages)C(e,E);function x(e){const t=(0,o.Z)({segmentGrid:{display:"grid",gridTemplateColumns:"repeat(auto-fill, var(--colSize))"}})(),n={"--colSize":e.colSize};return r.createElement("span",{style:n,className:t.segmentGrid},e.children)}function N(e){const n=(0,o.Z)((e=>(0,a.Z)({link:{cursor:"pointer",textDecorationLine:"underline",color:e.palette.warning.main}})))(),l=(0,h.bW)(y,e.path);return r.createElement("span",null,r.createElement("span",{className:n.link,onClick:function(){var e;const n=(null===(e=t.scripts.get(l))||void 0===e?void 0:e.content)??"",r=new Map;r.set(l,n),i.F.toPage(s.T3.ScriptEditor,{files:r})}},e.path))}function M(e){const n=(0,o.Z)({link:{cursor:"pointer",textDecorationLine:"underline"}})();return r.createElement("span",null,r.createElement("span",{className:n.link,onClick:function(){if(!t.isConnectedTo)return l.o.error(`File is not on this server, connect to ${t.hostname} and try again`);(0,p.R)("MessageFilename",e.path)?(0,f.PV)(e.path):(0,p.R)("LiteratureName",e.path)&&(0,m.O)(e.path)}},e.path))}let A;function T(e,t){let n,{type:a,segments:o}=e;const i=t["-l"]?"100%":Math.ceil(.7*Math.max(...o.map((e=>e.length))))+"em";switch(a){case A.Folder:n=o.map((e=>r.createElement("span",{key:e,style:{color:"cyan"}},e)));break;case A.Message:n=o.map((e=>r.createElement(M,{key:e,path:e})));break;case A.Script:n=o.map((e=>r.createElement(N,{key:e,path:e})));break;default:n=o.map((e=>r.createElement("span",{key:e},e)))}l.o.printRaw(r.createElement(x,{colSize:i},n))}b.sort(),v.sort(),k.sort(),w.sort(),E.sort(),S.sort(),function(e){e[e.Folder=0]="Folder",e[e.Message=1]="Message",e[e.TextFile=2]="TextFile",e[e.Program=3]="Program",e[e.Contract=4]="Contract",e[e.Script=5]="Script"}(A||(A={}));const L=[{type:A.Folder,segments:S},{type:A.Message,segments:E},{type:A.TextFile,segments:k},{type:A.Program,segments:b},{type:A.Contract,segments:w},{type:A.Script,segments:v}];for(const e of L)e.segments.length>0&&T(e,n)}},30969:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(65065);function a(e,t){r.o.print(t.cpuCores+" Core(s)")}},5222:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(65065),a=n(22115),o=n(51087);function i(e,t){try{if(1!==e.length&&3!==e.length)return void r.o.error("Incorrect usage of mem command. usage: mem [scriptname] [-t] [number threads]");const n=e[0]+"";let i=1;if(3===e.length&&"-t"===e[1]&&(i=Math.round(parseInt(e[2]+"")),isNaN(i)||i<1))return void r.o.error("Invalid number of threads specified. Number of threads must be greater than 1");const s=r.o.getScript(n);if(null==s)return void r.o.error("mem failed. No such script exists!");const l=s.getRamUsage(t.scripts);if(!l)return r.o.error(`Could not calculate ram usage for ${n}`);const c=l*i;r.o.print(`This script requires ${(0,a.$1)(c)} of RAM to run for ${i} thread(s)`);const u=s.ramUsageEntries.sort(((e,t)=>t.cost-e.cost))??[],m=o.Z.UseIEC60027_2?9:8;for(const e of u)r.o.print(`${(0,a.$1)(e.cost*i).padStart(m)} | ${e.name} (${e.type})`);c>0&&0===u.length&&r.o.warn("You might have to open & save this script to see the detailed RAM usage information.")}catch(e){r.o.error(e+"")}}},88863:(e,t,n)=>{"use strict";n.d(t,{mv:()=>i});var r=n(65065),a=n(69917),o=n(48897);function i(e,t){if(2!==e.length)return void r.o.error("Incorrect number of arguments. Usage: mv [src] [dest]");const[n,i]=e.map((e=>e+"")),s=r.o.getFilepath(n);if(!s)return r.o.error(`Invalid source filename: ${n}`);const l=r.o.getFilepath(i);if(!l)return r.o.error(`Invalid destination filename: ${l}`);if(!(0,a.UH)(s)&&!(0,o.e)(s)||!(0,a.UH)(l)&&!(0,o.e)(l))return r.o.error("'mv' can only be used on scripts and text files (.txt)");const c=t.getContentFile(s);if(!c)return r.o.error(`Source file ${s} does not exist`);if(!c.deleteFromServer(t))return r.o.error(`Could not remove source file ${s} from existing location.`);r.o.print(`Moved ${s} to ${l}`);const{overwritten:u}=t.writeToContentFile(l,c.content);u&&r.o.warn(`${l} was overwritten.`)}},42698:(e,t,n)=>{"use strict";n.d(t,{J:()=>a});var r=n(17010);function a(e,t){return(0,r.a)("nano",{args:e,server:t})}},28736:(e,t,n)=>{"use strict";n.d(t,{ps:()=>i});var r=n(65065),a=n(70769),o=n(86021);function i(e,t){let n;try{n=o({"--grep":String,"-g":"--grep"},{argv:e})}catch(e){return void r.o.error("Incorrect usage of ps command. Usage: ps [-g, --grep pattern]")}let i=n["--grep"];i||(i=".*");const s=(0,a.lr)(i);for(const[e,n]of t.runningScriptMap)if(s.test(e))for(const e of n.values()){const t=`(PID - ${e.pid}) ${e.filename} ${e.args.join(" ")}`;r.o.print(t)}}},13447:(e,t,n)=>{"use strict";n.d(t,{rm:()=>a});var r=n(65065);function a(e,t){if(1!==e.length)return r.o.error("Incorrect number of arguments. Usage: rm [program/script]");const n=r.o.getFilepath(e[0]+"");if(!n)return r.o.error(`Invalid filename: ${e[0]}`);const a=t.removeFile(n);!a.res&&a.msg&&r.o.error(a.msg)}},20741:(e,t,n)=>{"use strict";n.d(t,{K:()=>c});var r=n(65065),a=n(55086),o=n(99580),i=n(69917),s=n(61835),l=n(84555);function c(e,t){const n=e.shift();if(!n)return r.o.error("Usage: run [program/script] [-t] [num threads] [arg1] [arg2]...");const c=r.o.getFilepath(String(n));return c?(0,i.UH)(c)?(0,a.T)(c,e,t):(0,s.G)(c)?void r.o.runContract(c):(0,l.LL)(c)?(0,o._)(c,e,t):void r.o.error("Invalid file extension. Only .js, .script, .cct, and .exe files can be ran."):r.o.error(`${n} is not a valid filepath.`)}},99580:(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var r=n(65065),a=n(49173),o=n(58073),i=n(21623);function s(e,t,n){const s=e.toLowerCase(),l=(0,i.nd)(o.B).find((e=>e.toLowerCase()===s));l&&a.J5.hasProgram(l)?o.B[l].run(t.map(String),n):r.o.error(`No such (exe, script, js, or cct) file! (Only finished programs that exist on your home computer or scripts on ${n.hostname} can be run)`)}},55086:(e,t,n)=>{"use strict";n.d(t,{T:()=>u});var r=n(65065),a=n(85167),o=n(7872),i=n(19918),s=n(86021),l=n(22115),c=n(20145);function u(e,t,n){const u=n.scripts.get(e);if(!u)return r.o.error(`Script ${e} does not exist on this server.`);const m={"--tail":Boolean,"-t":Number},f=s(m,{permissive:!0,argv:t}),h=!0===f["--tail"],d=parseFloat(f["-t"]??1);if(!(0,c.a)(d))return r.o.error("Invalid number of threads specified. Number of threads must be an integer greater than 0");if(!n.hasAdminRights)return r.o.error("Need root access to run script");const p=f._,g=u.getRamUsage(n.scripts);if(!g)return r.o.error(`Error while calculating ram usage for this script. ${u.ramCalculationError}`);const y=g*d;if(y>n.maxRam-n.ramUsed+.001)return r.o.error("This machine does not have enough RAM to run this script"+(1===d?"":` with ${d} threads`)+`. Script requires ${(0,l.$1)(y)} of RAM`);const b=new i.X(u,g,p);if(b.threads=d,!(0,o.dU)(b,n))return r.o.error("Failed to start script");r.o.print(`Running script with ${d} thread(s), pid ${b.pid} and args: ${JSON.stringify(p)}.`),h&&a.ki.emit(b)}},51439:(e,t,n)=>{"use strict";n.d(t,{R:()=>o});var r=n(65065),a=n(2517);function o(e,t){if(0!==e.length)return void r.o.error("Incorrect usage of scan command. Usage: scan");const n=t.serversOnNetwork.map(((e,n)=>{const r=(0,a.xy)(t,n);if(null===r)throw new Error("Server should not be null");return{hostname:r.hostname,ip:r.ip,hasRoot:r.hasAdminRights?"Y":"N"}}));n.unshift({hostname:"Hostname",ip:"IP",hasRoot:"Root Access"});const o=Math.max(...n.map((e=>e.hostname.length))),i=Math.max(...n.map((e=>e.ip.length)));for(const e of n){if(!e)continue;let t=e.hostname;t+=" ".repeat(o-e.hostname.length+1),t+=e.ip,t+=" ".repeat(i-e.ip.length+1),t+=e.hasRoot,r.o.print(t)}}},64199:(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var r=n(49173),a=n(33244),o=n(65065);function i(e){if(0===e.length)o.o.executeScanAnalyzeCommand();else{if(e.length>2)return void o.o.error("Incorrect usage of scan-analyze command. usage: scan-analyze [depth]");let t=!1;2===e.length&&"-a"===e[1]&&(t=!0);const n=parseInt(e[0]+"");if(isNaN(n)||n<0)return o.o.error("Incorrect usage of scan-analyze command. depth argument must be positive numeric");if(n>3&&!r.J5.hasProgram(a.CompletedProgramName.deepScan1)&&!r.J5.hasProgram(a.CompletedProgramName.deepScan2))return o.o.error("You cannot scan-analyze with that high of a depth. Maximum depth is 3");if(n>5&&!r.J5.hasProgram(a.CompletedProgramName.deepScan2))return o.o.error("You cannot scan-analyze with that high of a depth. Maximum depth is 5");if(n>10)return o.o.error("You cannot scan-analyze with that high of a depth. Maximum depth is 10");o.o.executeScanAnalyzeCommand(n,t)}}},93057:(e,t,n)=>{"use strict";n.d(t,{D:()=>l});var r=n(65065),a=n(97467),o=n(69917),i=n(48897),s=n(50862);function l(e,t){if(e.length<2)return r.o.error("Incorrect usage of scp command. Usage: scp [source filename] [destination hostname]");const n=String(e.pop()),l=(0,a.WT)(n);if(!l)return r.o.error(`Invalid destination server: ${n}`);const c=e.map(String),u=[];for(const e of c){const n=r.o.getFilepath(e);if(!n)return r.o.error(`Invalid file path: ${e}`);if(n.endsWith(".lit")){if(!(0,s.R)("LiteratureName",n)||!t.messages.includes(n))return r.o.error(`scp failed: ${n} does not exist on server ${t.hostname}`);u.push(n);continue}if(!(0,o.UH)(n)&&!(0,i.e)(n))return r.o.error(`scp failed: ${n} has invalid extension. scp only works for scripts (.js or .script), text files (.txt), and literature files (.lit)`);const a=t.getContentFile(n);if(!a)return r.o.error(`scp failed: ${n} does not exist on server ${t.hostname}`);u.push(a)}for(const e of u){if((0,s.R)("LiteratureName",e)){if(l.messages.includes(e)){r.o.print(`${e} was already on ${n}, file skipped`);continue}l.messages.push(e),r.o.print(`${e} copied to ${n}`);continue}const{filename:t,content:a}=e,{overwritten:o}=l.writeToContentFile(t,a);o?r.o.warn(`${t} already existed on ${n} and was overwritten`):r.o.print(`${t} copied to ${n}`)}}},30741:(e,t,n)=>{"use strict";n.d(t,{C:()=>a});var r=n(65065);function a(e,t){0===e.length?t.hasAdminRights?r.o.print("You have ROOT access to this machine"):r.o.print("You do NOT have root access to this machine"):r.o.error("Incorrect number of arguments. Usage: sudov")}},38686:(e,t,n)=>{"use strict";n.d(t,{G:()=>s});var r=n(65065),a=n(10364),o=n(85167),i=n(69917);function s(e,t){try{if(e.length<1)r.o.error("Incorrect number of arguments. Usage: tail [script] [arg1] [arg2]...");else if("string"==typeof e[0]){const[n,...s]=e,l=r.o.getFilepath(n);if(!l)return r.o.error(`Invalid filename: ${n}`);if(!(0,i.UH)(l))return r.o.error("Invalid file extension. Tail can only be used on scripts.");const c=(0,a.Es)(l,s,t);if(null===c)return void r.o.error(`No script named ${l} with args ${JSON.stringify(s)} is running on the server`);o.ki.emit(c.values().next().value)}else if("number"==typeof e[0]){const n=(0,a.$o)(e[0],t);if(null==n)return void r.o.error(`No script with PID ${e[0]} is running on the server`);o.ki.emit(n)}}catch(e){r.o.error(e+"")}}},1512:(e,t,n)=>{"use strict";n.d(t,{w:()=>o});var r=n(65065),a=n(22115);function o(e,t){if(0!==e.length)return void r.o.error("Incorrect usage of top command. Usage: top");const n="Script",o="Threads",i=`${n}${" ".repeat(40-n.length)}PID${" ".repeat(10-"PID".length)}${o}${" ".repeat(16-o.length)}RAM Usage`;r.o.print(i);const s=t.runningScriptMap;for(const e of s.values())for(const t of e.values()){const e=Math.max(0,40-t.filename.length),n=" ".repeat(e),o=Math.max(0,10-(t.pid+"").length),i=" ".repeat(o),s=Math.max(0,16-(t.threads+"").length),l=" ".repeat(s),c=(0,a.$1)(t.ramUsage*t.threads),u=[t.filename,n,t.pid,i,t.threads,l,c].join("");r.o.print(u)}}},46463:(e,t,n)=>{"use strict";n.d(t,{r:()=>o});var r=n(65065),a=n(69895);function o(e){1===e.length?(0,a.z7)(e[0]+"")?r.o.print(`Removed alias ${e[0]}`):r.o.error(`No such alias exists: ${e[0]}`):r.o.error("Incorrect usage of unalias name. Usage: unalias [alias]")}},87436:(e,t,n)=>{"use strict";n.d(t,{d:()=>a});var r=n(17010);function a(e,t){return(0,r.a)("vim",{args:e,server:t},{vim:!0})}},10649:(e,t,n)=>{"use strict";n.d(t,{H:()=>a});var r=n(65065);function a(e,t){return 0!==e.length?r.o.error("Incorrect usage of weaken command. Usage: weaken"):t.purchasedByPlayer?r.o.error("Cannot weaken your own machines!"):t.hasAdminRights?void 0===t.requiredHackingSkill?r.o.error("Cannot weaken this server."):void r.o.startWeaken():r.o.error("You do not have admin rights for this machine!")}},19551:(e,t,n)=>{"use strict";n.d(t,{R:()=>l});var r=n(19755),a=n.n(r),o=n(65065),i=n(69917),s=n(48897);function l(e,t){if(2!==e.length)return void o.o.error("Incorrect usage of wget command. Usage: wget [url] [target file]");const n=e[0]+"",r=o.o.getFilepath(e[1]+"");if(!r||!(0,i.UH)(r)&&!(0,s.e)(r))return o.o.error("wget failed: Invalid target file. Target file must be script or text file");a().get(n,(function(e){let n;return n=(0,s.e)(r)?t.writeToTextFile(r,String(e)):t.writeToScriptFile(r,String(e)),n.overwritten?o.o.print(`wget successfully retrieved content and overwrote ${r}`):o.o.print(`wget successfully retrieved content to new file ${r}`)}),"text").fail((function(e){return o.o.error("wget failed: "+JSON.stringify(e))}))}},35968:(e,t,n)=>{"use strict";n.d(t,{t:()=>p});var r=n(69895),a=n(4852),o=n(49173),i=n(97467),s=n(91371),l=n(57082),c=n(50663),u=n(21278),m=n(86021),f=n(27757),h=n(69917);const d=["alias","analyze","backdoor","cat","cd","changelog","check","clear","cls","connect","cp","download","expr","free","grow","hack","help","home","hostname","ifconfig","kill","killall","ls","lscpu","mem","mv","nano","ps","rm","run","scan-analyze","scan","scp","sudov","tail","theme","top","vim","weaken"];async function p(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.Jz;const p=(null===(t=/[^ ]*$/.exec(e))||void 0===t?void 0:t[0])??"",g=e.substring(0,e.length-p.length),y=(0,s.CL)(g);y.length||y.push("");const b=(0,s.$4)(y[y.length-1]).map(String);b.push(p);const v=b.length,k=p.toLowerCase();let w=p.toLowerCase(),E="";const S=p.lastIndexOf("/");if(-1!==S){E=p.substring(0,S+1);const e=(0,f.RL)(E,n);if(null===e)return[];n=e,w=p.replace(/^.*\//,e).toLowerCase()}else n!==f.Jz&&(w=(n+p).toLowerCase());const C=[],x=o.J5.getCurrentServer(),N=o.J5.getHomeComputer();function M(e){let{iterable:t,usePathing:r,ignoreCurrent:a}=e;const o=r?w:k;for(const e of t)a&&e.length<=o.length||e.toLowerCase().startsWith(o)&&C.push(r?E+e.substring(n.length):e)}const A=()=>M({iterable:r.$z.keys()}),T=()=>M({iterable:r.Ui.keys()}),L=()=>M({iterable:d}),R=()=>M({iterable:Object.values(a.L).map((e=>e.program))}),F=()=>M({iterable:(0,i.XX)().map((e=>e.hostname))}),_=()=>M({iterable:x.scripts.keys(),usePathing:!0}),I=()=>M({iterable:x.textFiles.keys(),usePathing:!0}),P=()=>{M({iterable:x.contracts.map((e=>e.fn)),usePathing:!0})},B=()=>{M({iterable:x.messages.filter((e=>e.endsWith(".lit"))),usePathing:!0})},O=()=>{M({iterable:x.messages.filter((e=>e.endsWith(".msg"))),usePathing:!0})},D=()=>{M({iterable:(0,i.XX)().filter((e=>e.backdoorInstalled||x.serversOnNetwork.includes(e.hostname))).map((e=>e.hostname))})},Z=()=>{const e=N.programs.filter((e=>e.endsWith(".exe")));M({iterable:e}),N.isConnectedTo&&E&&M({iterable:e,usePathing:!0})},G=()=>{M({iterable:(0,f.cx)(x),usePathing:!0,ignoreCurrent:!0})},J=1===v,W=2===v;switch(T(),E&&G(),J&&(A(),L(),E&&(_(),Z(),P())),b[0]){case"buy":return R(),C;case"cat":return _(),I(),O(),B(),C;case"cd":case"ls":return W&&!E&&G(),C;case"mem":return W&&_(),C;case"connect":return W&&D(),C;case"cp":case"download":case"mv":return W&&(_(),I()),C;case"help":return W&&M({iterable:Object.keys(l.s),usePathing:!1}),C;case"nano":case"vim":return _(),I(),C;case"scp":return W||F(),_(),I(),B(),C;case"rm":return _(),Z(),B(),I(),P(),C;case"run":if(W)Z(),P(),_();else{const e=await H();e&&M({iterable:e,usePathing:!1})}return C;case"check":case"tail":case"kill":if(W)_();else{const e=await H();e&&M({iterable:e,usePathing:!1})}return C;default:return C}async function H(){let e=b.join(" ");1===v&&(e="run "+e);const t=(0,s.CL)(e);if(0===t.length)return;const r=(0,s.$4)(t[t.length-1]),a=(0,h.L6)(String(r[1]),n);if(!a)return;if(a.endsWith(".script"))return;const o=x.scripts.get(a);if(!o)return;let l;try{l=await(0,c.M)(o,x.scripts)}catch(e){return}if(!l||!l.autocomplete)return;const f={"--tail":Boolean,"-t":Number},d=m(f,{permissive:!0,argv:r.slice(2)}),p=(0,u.v)(d._),g={servers:(0,i.XX)().map((e=>e.hostname)),scripts:[...x.scripts.keys()],txts:[...x.textFiles.keys()],flags:e=>{if(!Array.isArray(e))throw new Error("flags require an array of array");k=e.map((e=>{if(!Array.isArray(e))throw new Error("flags require an array of array");return 1===e[0].length?"-"+e[0]:"--"+e[0]}));try{return p(e)}catch(e){return{}}}};let y=[],k=[];const w=l.autocomplete(g,d._);if(!Array.isArray(w))throw new Error("autocomplete did not return list of strings");return y=y.concat(w.map((e=>String(e)))),y.concat(k)}}},83530:(e,t,n)=>{"use strict";n.d(t,{E:()=>s});var r=n(67294),a=n(81138),o=n(88775),i=n(65065);function s(){return(0,o.S)(200),r.createElement(a.Z,{color:"primary"},i.o.action&&i.o.getProgressText())}},1944:(e,t,n)=>{"use strict";n.d(t,{i:()=>b});var r=n(67294),a=n(81138),o=n(77541),i=n(73327),s=n(28881),l=n(62937),c=n(66351),u=n(81055),m=n(65065),f=n(49173),h=n(35968),d=n(51087),p=n(49802);const g=(0,o.Z)((e=>(0,i.Z)({textfield:{margin:e.spacing(0)},input:{backgroundColor:e.colors.backgroundprimary},nopadding:{padding:e.spacing(0)},preformatted:{margin:e.spacing(0)},list:{padding:e.spacing(0),height:"100%"},absolute:{margin:e.spacing(0),position:"absolute",bottom:"5px",opacity:"0.75",maxWidth:"100%",whiteSpace:"pre",overflow:"hidden",pointerEvents:"none"}})));let y="";function b(){const e=(0,r.useRef)(null),[t,n]=(0,r.useState)(y),[o,i]=(0,r.useState)(),[b,v]=(0,r.useState)([]),[k,w]=(0,r.useState)([]),[E,S]=(0,r.useState)(0),[C,x]=(0,r.useState)(!1),N=g();function M(e,t){y=e,n(e),t&&i({postUpdate:t})}function A(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];w([]),x(e),S(0)}function T(n){const r=e.current;if(!r)return;const a=t.length,o=r.selectionStart;if(null===o)return;const i=r.value;switch(n.toLowerCase()){case"backspace":o>0&&o<=a+1&&M(i.substr(0,o-1)+i.substr(o));break;case"deletewordbefore":for(let t=o-1;t>-2;--t)if((i.charAt(t)===u.F.SPACE||-1===t)&&t!==o-1)return void M(i.substr(0,t+1)+i.substr(o),(()=>{const n=e.current;null==n||n.setSelectionRange(t+1,t+1)}));break;case"deletewordafter":for(let n=o+1;n<=t.length+1;++n)if(i.charAt(n)===u.F.SPACE||n===t.length+1)return void M(i.substr(0,o)+i.substr(n+1),(()=>{const t=e.current;null==t||t.setSelectionRange(o,o)}));break;case"clearafter":M(i.substr(0,o));break;case"clearbefore":M(i.substr(o),(()=>L("home")));break;case"clearall":M("")}}function L(n){const r=e.current;if(!r)return;const a=t.length,o=r.selectionStart;if(null!==o)switch(n.toLowerCase()){case"home":r.setSelectionRange(0,0);break;case"end":r.setSelectionRange(a,a);break;case"prevchar":o>0&&r.setSelectionRange(o-1,o-1);break;case"prevword":for(let e=o-2;e>=0;--e)if(r.value.charAt(e)===u.F.SPACE)return void r.setSelectionRange(e+1,e+1);r.setSelectionRange(0,0);break;case"nextchar":r.setSelectionRange(o+1,o+1);break;case"nextword":for(let e=o+1;e<=a;++e)if(r.value.charAt(e)===u.F.SPACE)return void r.setSelectionRange(e,e);r.setSelectionRange(a,a);break;default:console.warn("Invalid loc argument in Terminal.moveTextCursor()")}}return 0===m.o.commandHistory.length&&f.J5.terminalCommandHistory.length>0&&(m.o.commandHistory=f.J5.terminalCommandHistory,m.o.commandHistoryIndex=m.o.commandHistory.length),(0,r.useEffect)((()=>{null!=o&&o.postUpdate&&(o.postUpdate(),i(null))}),[o]),(0,r.useEffect)((()=>{function t(t){if(m.o.contractOpen)return;if(null!==m.o.action&&t.key===u.F.C&&t.ctrlKey)return void m.o.finishAction(!0);const n=e.current;t.ctrlKey||t.metaKey||t.key===u.F.C&&(t.ctrlKey||t.metaKey)||n&&n.focus()}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)})),r.createElement(r.Fragment,null,r.createElement(c.Z,{fullWidth:!0,color:null===m.o.action?"primary":"secondary",autoFocus:!0,disabled:null!==m.o.action,autoComplete:"off",value:t,classes:{root:N.textfield},onChange:function(e){M(e.target.value),v([]),w([]),x(!1)},inputRef:e,InputProps:{id:"terminal-input",className:N.input,startAdornment:r.createElement(a.Z,{color:null===m.o.action?"primary":"secondary",flexShrink:0},"[",f.J5.getCurrentServer().hostname," /",m.o.cwd(),"]> "),spellCheck:!1,onBlur:()=>{v([]),A()},onKeyDown:async function(n){const r=e.current;if(n.key===u.F.ENTER){n.preventDefault();const e=k.length?k[E]:t;return m.o.print(`[${f.J5.getCurrentServer().hostname} /${m.o.cwd()}]> ${e}`),void(e&&(m.o.executeCommands(e),M(""),A()))}if(n.key===u.F.TAB){if(n.preventDefault(),k.length)return M(k[E]),void A(!0);const e=await(0,h.t)(t,m.o.cwd());if(0===e.length)return;if(w([]),1===e.length)return void M(t.replace(/[^ ]*$/,e[0])+" ");const r=(0,p.n0)(e);M(t.replace(/[^ ]*$/,r)),v(e)}if(n.key===u.F.L&&n.ctrlKey&&(n.preventDefault(),m.o.clear()),n.key===u.F.UP_ARROW||d.Z.EnableBashHotkeys&&n.key===u.F.P&&n.ctrlKey){(d.Z.EnableBashHotkeys||d.Z.EnableHistorySearch&&t)&&n.preventDefault();const e=m.o.commandHistoryIndex,a=m.o.commandHistory.length;if(0==a)return;if(t&&!C&&d.Z.EnableHistorySearch){if(k.length>0)return void S((E+1)%k.length);const e=[...new Set(m.o.commandHistory.filter((e=>null==e?void 0:e.startsWith(t))).reverse())];return void(e.length&&w(e))}(e<0||e>a)&&(m.o.commandHistoryIndex=a),0!=e&&--m.o.commandHistoryIndex,M(m.o.commandHistory[m.o.commandHistoryIndex]),A(!0),r&&setTimeout((function(){r.selectionStart=r.selectionEnd=1e4}),10)}if(n.key===u.F.DOWN_ARROW||d.Z.EnableBashHotkeys&&n.key===u.F.M&&n.ctrlKey){if(d.Z.EnableBashHotkeys&&n.preventDefault(),k.length>0)return void S(0===E?k.length-1:E-1);const e=m.o.commandHistoryIndex,t=m.o.commandHistory.length;if(0==t)return;(e<0||e>t)&&(m.o.commandHistoryIndex=t),e==t||e==t-1?(m.o.commandHistoryIndex=t,M(""),A()):(++m.o.commandHistoryIndex,M(m.o.commandHistory[m.o.commandHistoryIndex]),A(!0))}n.key===u.F.ESC&&k.length&&A(),d.Z.EnableBashHotkeys&&(n.code===u.P.C&&n.ctrlKey&&r&&r.selectionStart===r.selectionEnd&&(n.preventDefault(),m.o.print(`[${f.J5.getCurrentServer().hostname} /${m.o.cwd()}]> ${t}`),T("clearall")),n.code===u.P.A&&n.ctrlKey&&(n.preventDefault(),L("home")),n.code===u.P.E&&n.ctrlKey&&(n.preventDefault(),L("end")),n.code===u.P.B&&n.ctrlKey&&(n.preventDefault(),L("prevchar")),n.code===u.P.B&&n.altKey&&(n.preventDefault(),L("prevword")),n.code===u.P.F&&n.ctrlKey&&(n.preventDefault(),L("nextchar")),n.code===u.P.F&&n.altKey&&(n.preventDefault(),L("nextword")),n.code!==u.P.H&&n.code!==u.P.D||!n.ctrlKey||(T("backspace"),n.preventDefault()),n.code===u.P.W&&n.ctrlKey&&(n.preventDefault(),T("deletewordbefore")),n.code===u.P.D&&n.altKey&&(n.preventDefault(),T("deletewordafter")),n.code===u.P.U&&n.ctrlKey&&(n.preventDefault(),T("clearbefore")),n.code===u.P.K&&n.ctrlKey&&(n.preventDefault(),T("clearafter")))}}}),r.createElement(l.Z,{open:b.length>0,anchorEl:e.current,placement:"top",sx:{maxWidth:"75%"}},r.createElement(s.Z,{sx:{m:1,p:2}},r.createElement(a.Z,{classes:{root:N.preformatted},color:"primary",paragraph:!1},"Possible autocomplete candidates:"),r.createElement(a.Z,{classes:{root:N.preformatted},color:"primary",paragraph:!1},b.join(" ")))),r.createElement(a.Z,{classes:{root:N.absolute},color:"primary",paragraph:!1},function(){const e=`[${f.J5.getCurrentServer().hostname} /${m.o.cwd()}]> ${t}`.length;return Array(e).fill(" ")}(),(k[E]??"").substring(t.length)))}},55482:(e,t,n)=>{"use strict";n.d(t,{F:()=>S});var r=n(67294),a=n(81138),o=n(97212),i=n(10848),s=n(39401),l=n(77541),c=n(73327),u=n(30120),m=n(96486),f=n.n(m),h=n(86142),d=n(65065),p=n(1944),g=n(68028),y=n(37334),b=n(51020),v=n(86378),k=n(88775),w=n(83530);const E=(0,l.Z)((e=>(0,c.Z)({nopadding:{padding:e.spacing(0)},preformatted:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),width:"100%"},list:{padding:e.spacing(0),height:"100%",width:"100%"}})));function S(){const e=(0,r.useRef)(null),t=(0,k.S)(),[n,l]=(0,r.useState)(0);function c(){const t=e.current;if(null!==t)return window.setTimeout((()=>t.scrollIntoView(!0)),50)}(0,r.useEffect)((()=>{const e=f().debounce((async()=>t()),25,{maxWait:50}),n=g.t.subscribe(e);return()=>{e.cancel(),n()}}),[t]),(0,r.useEffect)((()=>{const e=f().debounce((async()=>l((e=>e+1))),25,{maxWait:50}),t=g.m.subscribe(e);return()=>{e.cancel(),t()}}),[]),c(),(0,r.useEffect)((()=>{let e;const t=setTimeout((()=>{e=c()??0}),50);return()=>{clearTimeout(t),clearTimeout(e)}}),[]);const m=E();return r.createElement(r.Fragment,null,r.createElement(u.Z,{width:"100%",minHeight:"100vh",display:"flex",alignItems:"flex-end"},r.createElement(o.Z,{key:n,id:"terminal",classes:{root:m.list}},d.o.outputHistory.map(((e,t)=>r.createElement(i.ZP,{key:t,classes:{root:m.nopadding}},e instanceof h.r_&&r.createElement(v.m,{text:e.text,color:e.color}),e instanceof h.Jm&&r.createElement(a.Z,{classes:{root:m.preformatted},paragraph:!1},e.raw),e instanceof h.rU&&r.createElement(a.Z,{classes:{root:m.preformatted}},e.dashes,r.createElement(s.Z,{onClick:()=>d.o.connectToServer(e.hostname)},e.hostname))))),null!==d.o.action&&r.createElement(i.ZP,{classes:{root:m.nopadding}},r.createElement(w.E,null)," ")),r.createElement("div",{ref:e})),r.createElement(u.Z,{position:"sticky",bottom:0,width:"100%",px:0},r.createElement(p.i,null)),r.createElement(y.Z,null),r.createElement(b.W,null))}},73741:(e,t,n)=>{"use strict";n.d(t,{w:()=>o});var r=n(39463),a=n(94515);class o{get content(){return this.text}set content(e){this.text=e}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default.txt",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.filename=e,this.text=t}append(e){this.text+=e}download(){const e=new Blob([this.text],{type:"text/plain"}),t=document.createElement("a"),n=URL.createObjectURL(e);t.href=n,t.download=this.filename,document.body.appendChild(t),t.click(),setTimeout((()=>{document.body.removeChild(t),window.URL.revokeObjectURL(n)}),0)}read(){return this.text}show(){(0,r.X)(`${this.filename}\n\n${this.text}`)}toJSON(){return(0,a.L3)("TextFile",this)}write(e){this.text=e}deleteFromServer(e){return!!e.textFiles.has(this.filename)&&(e.textFiles.delete(this.filename),!0)}static fromJSON(e){return(0,a.Id)(o,e.data)}}a.gY.TextFile=o},15975:(e,t,n)=>{"use strict";n.d(t,{j:()=>r});const r={lineHeight:1.5,fontFamily:"Lucida Console, Lucida Sans Unicode, Fira Mono, Consolas, Courier New, Courier, monospace, Times New Roman"}},18746:(e,t,n)=>{"use strict";n.d(t,{H:()=>o,u:()=>a});var r=n(26571);const a={...r.Default.colors},o=()=>({...r})},82694:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Dark Blue",description:"Very dark with a blue/purplelly primary",credit:"Saynt_Garmo",reference:"https://discord.com/channels/415207508303544321/921991895230611466/923084732718264340",screenshot:n(58233),colors:{primarylight:"#023DDE",primary:"#4A41C8",primarydark:"#005299",successlight:"#00FF00",success:"#D1DAD1",successdark:"#BFCABF",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#040505",white:"#fff",black:"#000000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#091419",backgroundsecondary:"#000000",button:"#000000"}}},90603:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Dark+",credit:"LoganMD",description:"VSCode Dark+",reference:"https://discord.com/channels/415207508303544321/921991895230611466/921999975867617310",screenshot:n(82345),colors:{primarylight:"#E0E0BC",primary:"#CCCCAE",primarydark:"#B8B89C",successlight:"#00F000",success:"#00D200",successdark:"#00B400",errorlight:"#F00000",error:"#C80000",errordark:"#A00000",secondarylight:"#B4AEAE",secondary:"#969090",secondarydark:"#787272",warninglight:"#F0F000",warning:"#C8C800",warningdark:"#A0A000",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#1E1E1E",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#1E1E1E",backgroundsecondary:"#252525",button:"#333"}}},87789:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Default-lite",description:"Less eye-straining default theme",credit:"NmuGmu",reference:"https://discord.com/channels/415207508303544321/921991895230611466/925263801564151888",screenshot:n(97565),colors:{primarylight:"#28CF28",primary:"#21A821",primarydark:"#177317",successlight:"#1CFF1C",success:"#16CA16",successdark:"#0D910D",errorlight:"#FF3B3B",error:"#C32D2D",errordark:"#8E2121",secondarylight:"#B3B3B3",secondary:"#838383",secondarydark:"#676767",warninglight:"#FFFF3A",warning:"#C3C32A",warningdark:"#8C8C1E",infolight:"#64CBFF",info:"#3399CC",infodark:"#246D91",welllight:"#404040",well:"#1C1C1C",white:"#C3C3C3",black:"#0A0B0B",hp:"#C62E2E",money:"#D6BB27",hack:"#ADFF2F",combat:"#E8EDCD",cha:"#8B5FAF",int:"#537CC8",rep:"#E8EDCD",disabled:"#5AB5A5",backgroundprimary:"#0C0D0E",backgroundsecondary:"#121415",button:"#252829"}}},2296:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Default",description:"Default game theme, most supported",credit:"hydroflame",screenshot:n(55653),colors:{primarylight:"#0f0",primary:"#0c0",primarydark:"#090",successlight:"#0f0",success:"#0c0",successdark:"#090",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#000",backgroundsecondary:"#000",button:"#333"}}},975:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Discord-like",description:"Discord inspired theme",credit:"Thermite",reference:"https://discord.com/channels/415207508303544321/921991895230611466/924305252017143818",screenshot:n(21246),colors:{primarylight:"#7389DC",primary:"#7389DC",primarydark:"#5964F1",successlight:"#00CC00",success:"#20DF20",successdark:"#0CB80C",errorlight:"#EA5558",error:"#EC4145",errordark:"#E82528",secondarylight:"#C3C3C3",secondary:"#9C9C9C",secondarydark:"#4E4E4E",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#1C4FB3",welllight:"#999999",well:"#35383C",white:"#FFFFFF",black:"#202225",hp:"#FF5656",money:"#43FF43",hack:"#FFAB3D",combat:"#8A90FD",cha:"#FF51D9",int:"#6495ed",rep:"#FFFF30",disabled:"#474B51",backgroundprimary:"#2F3136",backgroundsecondary:"#35393E",button:"#333"}}},75759:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Dracula",description:"Dracula Look-alike",credit:"H3draut3r",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922296307836678144",screenshot:n(67456),colors:{primarylight:"#7082B8",primary:"#F8F8F2",primarydark:"#FF79C6",successlight:"#0f0",success:"#0c0",successdark:"#090",errorlight:"#FD4545",error:"#FF2D2D",errordark:"#C62424",secondarylight:"#AAA",secondary:"#8BE9FD",secondarydark:"#666",warninglight:"#FFC281",warning:"#FFB86C",warningdark:"#E6A055",infolight:"#A0A0FF",info:"#7070FF",infodark:"#4040FF",welllight:"#44475A",well:"#363948",white:"#fff",black:"#282A36",hp:"#D34448",money:"#50FA7B",hack:"#F1FA8C",combat:"#BD93F9",cha:"#FF79C6",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#282A36",backgroundsecondary:"#21222C",button:"#21222C"}}},26571:(e,t,n)=>{"use strict";n.r(t),n.d(t,{DarkBlue:()=>f.Q,DarkPlus:()=>s.Q,Default:()=>r.Q,DefaultLite:()=>a.Q,DiscordLike:()=>h.Q,Dracula:()=>m.Q,IronMan:()=>y.Q,Light:()=>g.Q,MayukaiDark:()=>l.Q,Monokai:()=>o.Q,MutedGoldBlue:()=>p.Q,OneDark:()=>d.Q,Purple:()=>c.Q,SmoothGreen:()=>u.Q,Warmer:()=>i.Q,Zerenity:()=>b.Q});var r=n(2296),a=n(87789),o=n(53891),i=n(54312),s=n(90603),l=n(52259),c=n(32478),u=n(30993),m=n(75759),f=n(82694),h=n(975),d=n(40034),p=n(67990),g=n(99445),y=n(91646),b=n(73133)},91646:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Iron Man",credit:"Matti#2942",description:"Mark 42. Threw a little hot rod red in there.",reference:"https://discord.com/channels/415207508303544321/921991895230611466/1069233364927787089",screenshot:n(89204),colors:{primarylight:"#FFFEFC",primary:"#FFA95E",primarydark:"#E8BC71",successlight:"#00FF00",success:"#0c0",successdark:"#090",errorlight:"#FF0B0B",error:"#FF0000",errordark:"#770000",secondarylight:"#FFC596",secondary:"#DA3F3F",secondarydark:"#6E1D1D",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#FFFFFF",info:"#B6E9FF",infodark:"#5596CF",welllight:"#8A2121",well:"#350000",white:"#fff",black:"#000",hp:"#FF4E4E",money:"#C2F26F",hack:"#D5FFB2",combat:"#E39C5A",cha:"#CA4444",int:"#6495ed",rep:"#E39C5A",disabled:"#3C0C0C",backgroundprimary:"#2C0707",backgroundsecondary:"#551212",button:"#8A2121"}}},99445:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Light",description:"Cobbled Together Light Theme",credit:"matt",reference:"https://discord.com/channels/415207508303544321/921991895230611466/926114005456658432",screenshot:n(9657),colors:{primarylight:"#535353",primary:"#1A1A1A",primarydark:"#0d0d0d",successlight:"#63c439",success:"#428226",successdark:"#2E5A1B",errorlight:"#df7051",error:"#C94824",errordark:"#91341B",secondarylight:"#b3b3b3",secondary:"#9B9B9B",secondarydark:"#7A7979",warninglight:"#e8d464",warning:"#C6AD20",warningdark:"#9F8A16",infolight:"#6299cf",info:"#3778B7",infodark:"#30689C",welllight:"#f9f9f9",well:"#eaeaea",white:"#F7F7F7",black:"#F7F7F7",hp:"#BF5C41",money:"#E1B121",hack:"#47BC38",combat:"#656262",cha:"#A568AC",int:"#889BCF",rep:"#656262",disabled:"#70B4BF",backgroundprimary:"#F7F7F7",backgroundsecondary:"#f9f9f9",button:"#eaeaea"}}},52259:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Mayukai Dark",description:"Mayukai Dark-esque",credit:"Festive Noire",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922037502334889994",screenshot:n(6683),colors:{primarylight:"#DDDFC5",primary:"#CDCFB6",primarydark:"#9D9F8C",successlight:"#00EF00",success:"#00A500",successdark:"#007A00",errorlight:"#F92672",error:"#CA1C5C",errordark:"#90274A",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#D3D300",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#00010A",white:"#fff",black:"#020509",hp:"#dd3434",money:"#ffd700",hack:"#8CCF27",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#080C11",backgroundsecondary:"#03080F",button:"#00010A"}}},53891:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Monokai'ish",description:"Monokai'ish",credit:"eltea",screenshot:n(99425),colors:{primarylight:"#FFF",primary:"#F8F8F2",primarydark:"#FAFAEB",successlight:"#ADE146",success:"#A6E22E",successdark:"#98E104",errorlight:"#FF69A0",error:"#F92672",errordark:"#D10F56",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#E1D992",warning:"#E6DB74",warningdark:"#EDDD54",infolight:"#92E1F1",info:"#66D9EF",infodark:"#31CDED",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#F92672",money:"#E6DB74",hack:"#A6E22E",combat:"#75715E",cha:"#AE81FF",int:"#66D9EF",rep:"#E69F66",disabled:"#66cfbc",backgroundprimary:"#272822",backgroundsecondary:"#1B1C18",button:"#333"}}},67990:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Muted Gold & Blue",description:"Muted gold with blue accents.",credit:"Sloth",reference:"https://discord.com/channels/415207508303544321/921991895230611466/924672660758208563",screenshot:n(95519),colors:{primarylight:"#E3B54A",primary:"#CAA243",primarydark:"#7E6937",successlight:"#82FF82",success:"#6FDA6F",successdark:"#64C364",errorlight:"#FD5555",error:"#D84A4A",errordark:"#AC3939",secondarylight:"#D8D0B8",secondary:"#B1AA95",secondarydark:"#736E5E",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#111111",white:"#fff",black:"#070300",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#0A0A0E",backgroundsecondary:"#0E0E10",button:"#222222"}}},40034:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"One Dark",description:"Dark with a greenish tint",credit:"Dexalt142",reference:"https://discord.com/channels/415207508303544321/921991895230611466/924650660694208512",screenshot:n(90407),colors:{primarylight:"#98C379",primary:"#98C379",primarydark:"#98C379",successlight:"#98C379",success:"#98C379",successdark:"#98C379",errorlight:"#E06C75",error:"#BE5046",errordark:"#BE5046",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#E5C07B",warning:"#E5C07B",warningdark:"#D19A66",infolight:"#61AFEF",info:"#61AFEF",infodark:"#61AFEF",welllight:"#4B5263",well:"#282C34",white:"#ABB2BF",black:"#282C34",hp:"#E06C75",money:"#E5C07B",hack:"#98C379",combat:"#ABB2BF",cha:"#C678DD",int:"#61AFEF",rep:"#ABB2BF",disabled:"#56B6C2",backgroundprimary:"#282C34",backgroundsecondary:"#21252B",button:"#4B5263"}}},32478:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Purple",credit:"zer0ney",description:"Essentially all defaults except for purple replacing the main colors",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922091815849570395",screenshot:n(37581),colors:{primarylight:"#BA55D3",primary:"#9370DB",primarydark:"#8A2BE2",successlight:"#BA55D3",success:"#9370DB",successdark:"#8A2BE2",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#000",backgroundsecondary:"#000",button:"#333"}}},30993:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Smooth Green",description:"A nice green theme that doesn't hurt your eyes.",credit:"Swidt",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922243957986033725",screenshot:n(76525),colors:{primarylight:"#E0E0BC",primary:"#B0D9A3",primarydark:"#B8B89C",successlight:"#00F000",success:"#6BC16B",successdark:"#00B400",errorlight:"#F00000",error:"#3D713D",errordark:"#A00000",secondarylight:"#B4AEAE",secondary:"#8FAF85",secondarydark:"#787272",warninglight:"#F0F000",warning:"#38F100",warningdark:"#A0A000",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#2F3C2B",white:"#fff",black:"#1E1E1E",hp:"#dd3434",money:"#4AA52E",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#35A135",disabled:"#66cfbc",backgroundprimary:"#1E1E1E",backgroundsecondary:"#252525",button:"#2F3C2B"}}},54312:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Warmer",credit:"hexnaught",description:"Warmer, softer theme",reference:"https://discord.com/channels/415207508303544321/921991895230611466/921999581020028938",screenshot:n(33855),colors:{primarylight:"#EA9062",primary:"#DD7B4A",primarydark:"#D3591C",successlight:"#6ACF6A",success:"#43BF43",successdark:"#3E913E",errorlight:"#C15757",error:"#B34141",errordark:"#752525",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#E6E69D",warning:"#DADA56",warningdark:"#A1A106",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#AD84CF",int:"#6495ed",rep:"#faffdf",disabled:"#76C6B7",backgroundprimary:"#000",backgroundsecondary:"#000",button:"#333"}}},73133:(e,t,n)=>{"use strict";n.d(t,{Q:()=>r});const r={name:"Zerenity",description:"Calm purple and grey theme with some bright colors subtly popping up.",credit:"Zelow",reference:"https://discord.com/channels/415207508303544321/921991895230611466/1137934426832130168",screenshot:n(41458),colors:{primarylight:"#9B9BFF",primary:"#9B9BFF",primarydark:"#7373D7",successlight:"#32FF32",success:"#00FF00",successdark:"#00CD00",errorlight:"#FF3232",error:"#FF0000",errordark:"#CD0000",secondarylight:"#9B9BE1",secondary:"#9B9BB9",secondarydark:"#373755",warninglight:"#FFFF32",warning:"#FFFF00",warningdark:"#CDCD00",infolight:"#5A9BFF",info:"#3C7DFF",infodark:"#2869CD",welllight:"#444",well:"#111111",white:"#FFFFFF",black:"#000000",hp:"#FF1B1B",money:"#FFEE33",hack:"#00FF00",combat:"#F2FFFC",cha:"#893BC8",int:"#3179FF",rep:"#EDDEFF",disabled:"#515164",backgroundprimary:"#191919",backgroundsecondary:"#111011",button:"#232337"}}},20331:(e,t,n)=>{"use strict";n.d(t,{D:()=>l});var r=n(67294),a=n(56798),o=n(17575),i=n(92777),s=n(95317);function l(){const[e,t]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,r.createElement(o.Z,{title:"The style editor allows you to modify certain CSS rules used by the game."},r.createElement(a.Z,{startIcon:r.createElement(i.Z,null),onClick:()=>t(!0)},"Style Editor")),r.createElement(s.l,{open:e,onClose:()=>t(!1)}))}},95317:(e,t,n)=>{"use strict";n.d(t,{l:()=>b});var r=n(67294),a=n(48672),o=n(56798),i=n(34265),s=n(81138),l=n(28881),c=n(66351),u=n(64459),m=n(66818),f=n(10425),h=n(51087),d=n(15975),p=n(17575);function g(e){let{value:t,onChange:n}=e;const[a,o]=(0,r.useState)(),[i,s]=(0,r.useState)(t);return r.createElement(c.Z,{sx:{my:1},label:"Font-Family",error:!!a,value:i,helperText:a,onChange:e=>(e=>{const t=e?"":"Must have a value";s(e),o(t),n(e,t)})(e.target.value),fullWidth:!0})}function y(e){let{value:t,onChange:n}=e;const[a,o]=(0,r.useState)(),[i,s]=(0,r.useState)(t);return r.createElement(c.Z,{sx:{my:1},label:"Line Height",error:!!a,value:i,helperText:a,onChange:e=>(e=>{const t=e?isNaN(Number(e))?"Must be a number":"":"Must have a value";s(e),o(t),n(e,t)})(e.target.value)})}function b(e){const[t,n]=(0,r.useState)(),[c,b]=(0,r.useState)({...h.Z.styles});function v(e){Object.assign(h.Z.styles,e),f.bS.emit()}function k(e,t){n(t),t||b(e)}return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(s.Z,{variant:"h6"},"Styles Editor"),r.createElement(s.Z,null,"WARNING: Changing styles ",r.createElement("strong",null,"may mess up")," the interface. Drastic changes are"," ",r.createElement("strong",null,"NOT recommended"),"."),r.createElement(l.Z,{sx:{p:2,my:2}},r.createElement(g,{value:c.fontFamily,onChange:(e,t)=>k({...c,fontFamily:e??""},t)}),r.createElement("br",null),r.createElement(y,{value:c.lineHeight,onChange:(e,t)=>k({...c,lineHeight:Number(e)??0},t)}),r.createElement("br",null),r.createElement(i.Z,{sx:{my:1}},r.createElement(o.Z,{onClick:function(){const e={...d.j};b(e),v(e)},startIcon:r.createElement(u.Z,null),color:"secondary",variant:"outlined"},"Revert to Defaults"),r.createElement(p.Z,{title:"Save styles to settings"},r.createElement(o.Z,{onClick:function(){v(c)},endIcon:r.createElement(m.Z,null),color:t?"error":"primary",disabled:!!t},"Save Modifications")))))}},10425:(e,t,n)=>{"use strict";n.d(t,{On:()=>f,Rl:()=>m,bS:()=>c});var r=n(67294),a=n(21969),o=n(94810),i=n(61817),s=n(13342),l=n(51087);const c=new s.v;let u;function m(){var e;u=(0,a.Z)({colors:{hp:l.Z.theme.hp,money:l.Z.theme.money,hack:l.Z.theme.hack,combat:l.Z.theme.combat,cha:l.Z.theme.cha,int:l.Z.theme.int,rep:l.Z.theme.rep,backgroundprimary:l.Z.theme.backgroundprimary,backgroundsecondary:l.Z.theme.backgroundsecondary,button:l.Z.theme.button,successlight:l.Z.theme.successlight,success:l.Z.theme.success,successdark:l.Z.theme.successdark,white:l.Z.theme.white,black:l.Z.theme.black},palette:{primary:{light:l.Z.theme.primarylight,main:l.Z.theme.primary,dark:l.Z.theme.primarydark},secondary:{light:l.Z.theme.secondarylight,main:l.Z.theme.secondary,dark:l.Z.theme.secondarydark},error:{light:l.Z.theme.errorlight,main:l.Z.theme.error,dark:l.Z.theme.errordark},info:{light:l.Z.theme.infolight,main:l.Z.theme.info,dark:l.Z.theme.infodark},warning:{light:l.Z.theme.warninglight,main:l.Z.theme.warning,dark:l.Z.theme.warningdark},success:{light:l.Z.theme.successlight,main:l.Z.theme.success,dark:l.Z.theme.successdark},background:{default:l.Z.theme.backgroundprimary,paper:l.Z.theme.well},action:{disabled:l.Z.theme.disabled}},typography:{fontFamily:l.Z.styles.fontFamily,button:{textTransform:"none"}},components:{MuiInputBase:{styleOverrides:{root:{backgroundColor:l.Z.theme.well,color:l.Z.theme.primary},input:{"&::placeholder":{userSelect:"none",color:l.Z.theme.primarydark}}}},MuiInput:{styleOverrides:{root:{backgroundColor:l.Z.theme.well,borderBottomColor:"#fff"},underline:{"&:hover":{borderBottomColor:l.Z.theme.primarydark},"&:before":{borderBottomColor:l.Z.theme.primary},"&:after":{borderBottomColor:l.Z.theme.primarylight}}}},MuiInputLabel:{styleOverrides:{root:{color:l.Z.theme.primarydark,userSelect:"none","&:before":{color:l.Z.theme.primarylight}}}},MuiButtonGroup:{styleOverrides:{root:{"& .MuiButton-root:not(:last-of-type)":{marginRight:"1px"}}}},MuiButton:{styleOverrides:{root:{backgroundColor:l.Z.theme.button,border:"1px solid "+l.Z.theme.well,"&:hover":{backgroundColor:l.Z.theme.backgroundsecondary},borderRadius:0}}},MuiSelect:{styleOverrides:{icon:{color:l.Z.theme.primary}},defaultProps:{variant:"standard"}},MuiTextField:{defaultProps:{variant:"standard"}},MuiTypography:{defaultProps:{color:"primary"},styleOverrides:{root:{lineHeight:l.Z.styles.lineHeight}}},MuiMenu:{styleOverrides:{list:{backgroundColor:l.Z.theme.well}}},MuiMenuItem:{styleOverrides:{root:{color:l.Z.theme.primary}}},MuiAccordionSummary:{styleOverrides:{root:{backgroundColor:"#111"}}},MuiAccordionDetails:{styleOverrides:{root:{backgroundColor:l.Z.theme.backgroundsecondary}}},MuiIconButton:{styleOverrides:{root:{color:l.Z.theme.primary}}},MuiTooltip:{styleOverrides:{tooltip:{fontSize:"1em",color:l.Z.theme.primary,backgroundColor:l.Z.theme.well,borderRadius:0,border:"2px solid white",maxWidth:"100vh"}},defaultProps:{disableInteractive:!0}},MuiSlider:{styleOverrides:{valueLabel:{color:l.Z.theme.primary,backgroundColor:l.Z.theme.well}}},MuiDrawer:{styleOverrides:{paper:{"&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none",backgroundColor:l.Z.theme.backgroundsecondary},paperAnchorDockedLeft:{borderRight:"1px solid "+l.Z.theme.welllight}}},MuiDivider:{styleOverrides:{root:{backgroundColor:l.Z.theme.welllight}}},MuiFormControlLabel:{styleOverrides:{root:{color:l.Z.theme.primary}}},MuiSwitch:{styleOverrides:{switchBase:{color:l.Z.theme.primarydark},track:{backgroundColor:l.Z.theme.welllight}}},MuiPaper:{styleOverrides:{root:{borderRadius:0,backgroundColor:l.Z.theme.backgroundsecondary,border:"1px solid "+l.Z.theme.welllight}}},MuiTablePagination:{styleOverrides:{select:{color:l.Z.theme.primary},selectLabel:{color:l.Z.theme.primary},displayedRows:{color:l.Z.theme.primary}}},MuiTab:{styleOverrides:{textColorPrimary:{color:l.Z.theme.secondary,"&.Mui-selected":{color:l.Z.theme.primary}},root:{backgroundColor:l.Z.theme.backgroundsecondary,border:"1px solid "+l.Z.theme.well,margin:"3px","&.Mui-selected":{backgroundColor:l.Z.theme.button}}}},MuiTabs:{styleOverrides:{scrollButtons:{backgroundColor:l.Z.theme.backgroundsecondary,color:l.Z.theme.secondary,margin:"3px",opacity:1,width:"fit-content","&.Mui-disabled":{opacity:.5}}},defaultProps:{TabIndicatorProps:{style:{display:"none"}}}},MuiAlert:{styleOverrides:{root:{backgroundColor:l.Z.theme.black,borderRadius:0,border:"1px solid "+l.Z.theme.well},standardSuccess:{color:l.Z.theme.successlight},standardError:{color:l.Z.theme.errorlight},standardWarning:{color:l.Z.theme.warninglight},standardInfo:{color:l.Z.theme.infolight}}}}}),document.body.style.backgroundColor=(null===(e=u.colors.backgroundprimary)||void 0===e?void 0:e.toString())??"black"}m();const f=e=>{let{children:t}=e;return r.createElement(o.Z,{injectFirst:!0},r.createElement(i.Z,{theme:u},t))}},11590:(e,t,n)=>{"use strict";n.d(t,{C:()=>k});var r=n(67294),a=n(81138),o=n(28881),i=n(10425),s=n(51087),l=n(18746),c=n(56798),u=n(30120),m=n(34265),f=n(31288),h=n(20331),d=n(89231),p=n(43524),g=n(48672),y=n(32369),b=n(33244);let v=0;function k(){const[e,t]=(0,r.useState)(!1),[n,k]=(0,r.useState)(),w=(0,l.H)(),E=w&&Object.entries(w).map((e=>{let[t,n]=e;return r.createElement(d.R,{key:t,theme:n,onActivated:()=>function(e){v=window.scrollY;const t={...s.Z.theme};Object.assign(s.Z.theme,e.colors),i.bS.emit(),y.sC.emit(r.createElement(r.Fragment,null,'Updated theme to "',r.createElement("strong",null,e.name),'"',r.createElement(c.Z,{sx:{ml:1},color:"secondary",size:"small",onClick:()=>{Object.assign(s.Z.theme,t),i.bS.emit()}},"UNDO")),b.ToastVariant.INFO,3e4)}(n),onImageClick:S})}))||r.createElement(r.Fragment,null);function S(e){v=window.scrollY,k(e),t(!0)}return(0,r.useEffect)((()=>{requestAnimationFrame((()=>window.scrollTo(0,v)))})),r.createElement(u.Z,{sx:{mx:2}},r.createElement(a.Z,{variant:"h4"},"Theme Browser"),r.createElement(o.Z,{sx:{px:2,py:1,my:1}},r.createElement(p.G,null),r.createElement(m.Z,{sx:{mb:2,display:"block"}},r.createElement(f.T,null),r.createElement(h.D,null)),r.createElement(u.Z,{sx:{display:"flex",flexWrap:"wrap"}},E),r.createElement(g.u,{open:e,onClose:function(){v=window.scrollY,t(!1)}},r.createElement("img",{src:n,style:{width:"100%"}}))))}},43524:(e,t,n)=>{"use strict";n.d(t,{G:()=>i});var r=n(67294),a=n(81138),o=n(39401);function i(){return r.createElement(r.Fragment,null,r.createElement(a.Z,{sx:{my:1}},"If you've created a theme that you believe should be added in game's theme browser, feel free to"," ",r.createElement(o.Z,{href:"https://github.com/bitburner-official/bitburner-src/tree/dev/src/Themes/README.md",target:"_blank"},"create a pull request"),"."),r.createElement(a.Z,{sx:{my:1}},"Head over to the"," ",r.createElement(o.Z,{href:"https://discord.com/channels/415207508303544321/921991895230611466",target:"_blank"},"theme-sharing")," ","discord channel for more."))}},31288:(e,t,n)=>{"use strict";n.d(t,{T:()=>l});var r=n(67294),a=n(56798),o=n(17575),i=n(40729),s=n(14534);function l(){const[e,t]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,r.createElement(o.Z,{title:"The theme editor allows you to modify the colors the game uses."},r.createElement(a.Z,{id:"bb-theme-editor-button",startIcon:r.createElement(s.Z,null),onClick:()=>t(!0)},"Theme Editor")),r.createElement(i.y,{open:e,onClose:()=>t(!1)}))}},40729:(e,t,n)=>{"use strict";n.d(t,{y:()=>S});var r=n(67294),a=n(48672),o=n(56798),i=n(34265),s=n(81138),l=n(17575),c=n(28881),u=n(66351),m=n(92557),f=n(64459),h=n(83519),d=n(32457),p=n(63638),g=n(10425),y=n(51087),b=n(18746),v=n(52947),k=n(24815),w=n(43524);function E(e){let{name:t,onColorChange:n,color:a,defaultColor:o}=e;return void 0===a&&(console.error(`color ${t} was undefined, reverting to default`),a=o),r.createElement(r.Fragment,null,r.createElement(u.Z,{sx:{mx:1},label:t,value:a,InputProps:{startAdornment:r.createElement(r.Fragment,null,r.createElement(p.zH,{hideTextfield:!0,deferred:!0,value:a,onChange:e=>n(t,"#"+e.hex),disableAlpha:!0})),endAdornment:r.createElement(r.Fragment,null,r.createElement(m.Z,{onClick:()=>n(t,o)},r.createElement(f.Z,{color:"primary"})))}}))}function S(e){const[t,n]=(0,r.useState)({...y.Z.theme});function m(e,t){n((n=>(n[e]=t,n))),y.Z.theme[e]=t,g.bS.emit()}return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(c.Z,{sx:{px:1,py:1,my:1}},r.createElement(l.Z,{open:!0,placement:"top",title:r.createElement(s.Z,null,"Example tooltip")},r.createElement(o.Z,{color:"primary",size:"small"},"primary button")),r.createElement(o.Z,{color:"secondary",size:"small"},"secondary button"),r.createElement(o.Z,{color:"warning",size:"small"},"warning button"),r.createElement(o.Z,{color:"info",size:"small"},"info button"),r.createElement(o.Z,{color:"error",size:"small"},"error button"),r.createElement(o.Z,{disabled:!0,size:"small"},"disabled button"),r.createElement("br",null),r.createElement(s.Z,{color:"primary",variant:"caption"},"text with primary color")," ",r.createElement(s.Z,{color:"secondary",variant:"caption"},"text with secondary color")," ",r.createElement(s.Z,{color:"error",variant:"caption"},"text with error color"),r.createElement("br",null),r.createElement(u.Z,{value:"Text field",size:"small"})),r.createElement(c.Z,{sx:{py:1,my:1}},r.createElement(E,{name:"primarylight",onColorChange:m,color:t.primarylight,defaultColor:b.u.primarylight}),r.createElement(E,{name:"primary",onColorChange:m,color:t.primary,defaultColor:b.u.primary}),r.createElement(E,{name:"primarydark",onColorChange:m,color:t.primarydark,defaultColor:b.u.primarydark}),r.createElement("br",null),r.createElement(E,{name:"successlight",onColorChange:m,color:t.successlight,defaultColor:b.u.successlight}),r.createElement(E,{name:"success",onColorChange:m,color:t.success,defaultColor:b.u.success}),r.createElement(E,{name:"successdark",onColorChange:m,color:t.successdark,defaultColor:b.u.successdark}),r.createElement("br",null),r.createElement(E,{name:"errorlight",onColorChange:m,color:t.errorlight,defaultColor:b.u.errorlight}),r.createElement(E,{name:"error",onColorChange:m,color:t.error,defaultColor:b.u.error}),r.createElement(E,{name:"errordark",onColorChange:m,color:t.errordark,defaultColor:b.u.errordark}),r.createElement("br",null),r.createElement(E,{name:"secondarylight",onColorChange:m,color:t.secondarylight,defaultColor:b.u.secondarylight}),r.createElement(E,{name:"secondary",onColorChange:m,color:t.secondary,defaultColor:b.u.secondary}),r.createElement(E,{name:"secondarydark",onColorChange:m,color:t.secondarydark,defaultColor:b.u.secondarydark}),r.createElement("br",null),r.createElement(E,{name:"warninglight",onColorChange:m,color:t.warninglight,defaultColor:b.u.warninglight}),r.createElement(E,{name:"warning",onColorChange:m,color:t.warning,defaultColor:b.u.warning}),r.createElement(E,{name:"warningdark",onColorChange:m,color:t.warningdark,defaultColor:b.u.warningdark}),r.createElement("br",null),r.createElement(E,{name:"infolight",onColorChange:m,color:t.infolight,defaultColor:b.u.infolight}),r.createElement(E,{name:"info",onColorChange:m,color:t.info,defaultColor:b.u.info}),r.createElement(E,{name:"infodark",onColorChange:m,color:t.infodark,defaultColor:b.u.infodark}),r.createElement("br",null),r.createElement(E,{name:"welllight",onColorChange:m,color:t.welllight,defaultColor:b.u.welllight}),r.createElement(E,{name:"well",onColorChange:m,color:t.well,defaultColor:b.u.well}),r.createElement(E,{name:"white",onColorChange:m,color:t.white,defaultColor:b.u.white}),r.createElement(E,{name:"black",onColorChange:m,color:t.black,defaultColor:b.u.black}),r.createElement(E,{name:"backgroundprimary",onColorChange:m,color:t.backgroundprimary,defaultColor:b.u.backgroundprimary}),r.createElement(E,{name:"backgroundsecondary",onColorChange:m,color:t.backgroundsecondary,defaultColor:b.u.backgroundsecondary}),r.createElement(E,{name:"button",onColorChange:m,color:t.button,defaultColor:b.u.button}),r.createElement("br",null),r.createElement(E,{name:"hp",onColorChange:m,color:t.hp,defaultColor:b.u.hp}),r.createElement(E,{name:"money",onColorChange:m,color:t.money,defaultColor:b.u.money}),r.createElement(E,{name:"hack",onColorChange:m,color:t.hack,defaultColor:b.u.hack}),r.createElement(E,{name:"combat",onColorChange:m,color:t.combat,defaultColor:b.u.combat}),r.createElement(E,{name:"cha",onColorChange:m,color:t.cha,defaultColor:b.u.cha}),r.createElement(E,{name:"int",onColorChange:m,color:t.int,defaultColor:b.u.int}),r.createElement(E,{name:"rep",onColorChange:m,color:t.rep,defaultColor:b.u.rep}),r.createElement(E,{name:"disabled",onColorChange:m,color:t.disabled,defaultColor:b.u.disabled})),r.createElement(c.Z,{sx:{px:1,py:1,my:1}},r.createElement(u.Z,{sx:{mb:1},multiline:!0,fullWidth:!0,maxRows:10,label:"import / export theme",value:JSON.stringify(t,void 0,2),onChange:function(e){try{const t=JSON.parse(e.target.value);if("object"!=typeof t)return;n(t);for(const e of Object.keys(t))y.Z.theme[e]=t[e];g.bS.emit()}catch(e){}}}),r.createElement(r.Fragment,null,r.createElement(s.Z,{sx:{my:1}},"Backup your theme or share it with others by copying the string above."),r.createElement(w.G,null),r.createElement(i.Z,null,r.createElement(l.Z,{title:"Reverts all modification back to the default theme. This is permanent."},r.createElement(o.Z,{onClick:()=>{!function(e){n(e),Object.assign(y.Z.theme,e),g.bS.emit()}(b.u)},startIcon:r.createElement(d.Z,null)},"Revert to Default")),r.createElement(l.Z,{title:"Move over to the theme browser's page to use one of our predefined themes."},r.createElement(o.Z,{startIcon:r.createElement(h.Z,null),onClick:()=>v.F.toPage(k.T3.ThemeBrowser)},"See more themes"))))))}},89231:(e,t,n)=>{"use strict";n.d(t,{R:()=>d});var r=n(67294),a=n(81138),o=n(17575),i=n(83519),s=n(51087),l=n(54278),c=n(69774),u=n(56798),m=n(39401),f=n(72213),h=n(59677);function d(e){let{theme:t,onActivated:n,onImageClick:d}=e;return t?r.createElement(l.Z,{key:t.screenshot,sx:{width:400,mr:1,mb:1}},r.createElement(c.Z,{action:r.createElement(o.Z,{title:"Use this theme"},r.createElement(u.Z,{startIcon:r.createElement(i.Z,null),onClick:n,variant:"outlined"},"Use")),title:t.name,subheader:r.createElement(r.Fragment,null,"by ",t.credit," ",t.reference&&r.createElement(r.Fragment,null,"(",r.createElement(m.Z,{href:t.reference,target:"_blank"},"ref"),")")),sx:{color:s.Z.theme.primary,"& .MuiCardHeader-subheader":{color:s.Z.theme.secondarydark},"& .MuiButton-outlined":{backgroundColor:"transparent"}}}),r.createElement(f.Z,{component:"img",width:"400",image:t.screenshot,alt:`Theme Screenshot of "${t.name}"`,sx:{borderTop:`1px solid ${s.Z.theme.welllight}`,borderBottom:`1px solid ${s.Z.theme.welllight}`,cursor:"zoom-in"},onClick:()=>d(t.screenshot)}),r.createElement(h.Z,null,r.createElement(a.Z,{variant:"body2",color:"text.secondary",sx:{color:s.Z.theme.primarydark}},t.description))):r.createElement(r.Fragment,null)}},46277:(e,t,n)=>{"use strict";n.d(t,{N:()=>a});var r=n(63230),a=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.sourceCode=e,this.sourceCodeLineOffset=n,"string"==typeof e&&(e=r.Qc(e,a.PARSE_OPTIONS)),this.ast=e,this.initFunc_=t,this.paused_=!1,this.polyfills_=[],this.functionCounter_=0,this.stepFunctions_=Object.create(null);var o,i,s=/^step([A-Z]\w*)$/;for(var l in this)"function"==typeof this[l]&&(o=l.match(s))&&(this.stepFunctions_[o[1]]=this[l].bind(this));this.global=this.createScope(this.ast,null),this.ast=r.Qc(this.polyfills_.join("\n"),a.PARSE_OPTIONS),this.polyfills_=void 0,this.stripLocations_(this.ast,void 0,void 0),(i=new a.State(this.ast,this.global)).done=!1,this.stateStack=[i],this.run(),this.value=void 0,this.ast=e,(i=new a.State(this.ast,this.global)).done=!1,this.stateStack.length=0,this.stateStack[0]=i,this.nodeConstructor=i.node.constructor,this.stateStack=this.stateStack};a.PARSE_OPTIONS={ecmaVersion:5,locations:!0},a.READONLY_DESCRIPTOR={configurable:!0,enumerable:!0,writable:!1},a.NONENUMERABLE_DESCRIPTOR={configurable:!0,enumerable:!1,writable:!0},a.READONLY_NONENUMERABLE_DESCRIPTOR={configurable:!0,enumerable:!1,writable:!1},a.VARIABLE_DESCRIPTOR={configurable:!1,enumerable:!0,writable:!0},a.STEP_ERROR={},a.SCOPE_REFERENCE={},a.VALUE_IN_DESCRIPTOR={},a.toStringCycles_=[],a.prototype.getErrorLineNumber=function(e){var t=this.sourceCode;if(null==e||null==e.start)return NaN;try{return((t=t.substring(0,e.start)).match(/\n/g)||[]).length+1-this.sourceCodeLineOffset}catch(e){return NaN}},a.prototype.getErrorLineNumberMessage=function(e){return isNaN(e)?" (Unknown line number)":e<=0?" (Error occurred in an imported function)":" (Line Number "+e+". This line number is probably incorrect if your script is importing any functions. This is being worked on)"},a.prototype.appendCode=function(e){var t=this.stateStack[0];if(!t||"Program"!==t.node.type)throw Error("Expecting original AST to start with a Program node.");if("string"==typeof e&&(e=r.Qc(e,a.PARSE_OPTIONS)),!e||"Program"!==e.type)throw Error("Expecting new AST to start with a Program node.");this.populateScope_(e,t.scope);for(var n,o=0;n=e.body[o];o++)t.node.body.push(n);t.done=!1},a.prototype.step=function(){var e=this.stateStack,t=e[e.length-1];if(!t)return!1;var n=t.node,r=n.type;if("Program"===r&&t.done)return!1;if(this.paused_)return!0;try{var o=this.stepFunctions_[r](e,t,n)}catch(e){if(e!==a.STEP_ERROR)throw e}return o&&e.push(o),!!n.end||this.step()},a.prototype.run=function(){for(;!this.paused_&&this.step(););return this.paused_},a.prototype.initGlobalScope=function(e){this.setProperty(e,"NaN",NaN,a.READONLY_DESCRIPTOR),this.setProperty(e,"Infinity",1/0,a.READONLY_DESCRIPTOR),this.setProperty(e,"undefined",void 0,a.READONLY_DESCRIPTOR),this.setProperty(e,"window",e,a.READONLY_DESCRIPTOR),this.setProperty(e,"this",e,a.READONLY_DESCRIPTOR),this.setProperty(e,"self",e),this.OBJECT_PROTO=new a.Object(null),this.FUNCTION_PROTO=new a.Object(this.OBJECT_PROTO),this.initFunction(e),this.initObject(e),e.proto=this.OBJECT_PROTO,this.setProperty(e,"constructor",this.OBJECT,a.NONENUMERABLE_DESCRIPTOR),this.initArray(e),this.initString(e),this.initBoolean(e),this.initNumber(e),this.initDate(e),this.initRegExp(e),this.initError(e),this.initMath(e),this.initJSON(e);var t=this,n=this.createNativeFunction((function(e){throw EvalError("Can't happen")}),!1);n.eval=!0,this.setProperty(e,"eval",n),this.setProperty(e,"parseInt",this.createNativeFunction(parseInt,!1)),this.setProperty(e,"parseFloat",this.createNativeFunction(parseFloat,!1)),this.setProperty(e,"isNaN",this.createNativeFunction(isNaN,!1)),this.setProperty(e,"isFinite",this.createNativeFunction(isFinite,!1));for(var r=[[escape,"escape"],[unescape,"unescape"],[decodeURI,"decodeURI"],[decodeURIComponent,"decodeURIComponent"],[encodeURI,"encodeURI"],[encodeURIComponent,"encodeURIComponent"]],o=0;o>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O && !callbackfn.call(T, O[k], k, O)) return false;","k++;","}","return true;","}","});","Object.defineProperty(Array.prototype, 'filter',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var res = [];","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t) {","var val = t[i];","if (fun.call(thisArg, val, i, t)) res.push(val);","}","}","return res;","}","});","if (!Array.prototype.find) {","Object.defineProperty(Array.prototype, 'find', {","value: function(predicate) {","if (this == null) {","throw new TypeError('\"this\" is null or not defined');","}","var o = Object(this);","var len = o.length >>> 0;","if (typeof predicate !== 'function') {","throw new TypeError('predicate must be a function');","}","var thisArg = arguments[1];","var k = 0;","while (k < len) {","var kValue = o[k];","if (predicate.call(thisArg, kValue, k, o)) {","return kValue;","}","k++;","}","return undefined;","},","configurable: true,","writable: true","});","}","if (!Array.prototype.findIndex) {","Object.defineProperty(Array.prototype, 'findIndex', {","value: function(predicate) {","if (this == null) {","throw new TypeError('\"this\" is null or not defined');","}","var o = Object(this);","var len = o.length >>> 0;","if (typeof predicate !== 'function') {","throw new TypeError('predicate must be a function');","}","var thisArg = arguments[1];","var k = 0;","while (k < len) {","var kValue = o[k];","if (predicate.call(thisArg, kValue, k, o)) {","return k;","}","k++;","}","return -1;","},","configurable: true,","writable: true","});","}","Object.defineProperty(Array.prototype, 'forEach',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') throw TypeError();","var T, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O) callback.call(T, O[k], k, O);","k++;","}","}","});","Object.defineProperty(Array.prototype, 'includes', {","value: function(searchElement, fromIndex) {","if (this == null) {","throw new TypeError('\"this\" is null or not defined');","}","// 1. Let O be ? ToObject(this value).","var o = Object(this);",'// 2. Let len be ? ToLength(? Get(O, "length")).',"var len = o.length >>> 0;","// 3. If len is 0, return false.","if (len === 0) {","return false;","}","// 4. Let n be ? ToInteger(fromIndex).","// (If fromIndex is undefined, this step produces the value 0.)","var n = fromIndex | 0;","// 5. If n ≥ 0, then","// a. Let k be n.","// 6. Else n < 0,","// a. Let k be len + n.","// b. If k < 0, let k be 0.","var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);","function sameValueZero(x, y) {","return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));","}","// 7. Repeat, while k < len","while (k < len) {","// a. Let elementK be the result of ? Get(O, ! ToString(k)).","// b. If SameValueZero(searchElement, elementK) is true, return true.","if (sameValueZero(o[k], searchElement)) {","return true;","}","// c. Increase k by 1. ","k++;","}","// 8. Return false","return false;","}","});","Object.defineProperty(Array.prototype, 'map',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') new TypeError;","var T, A, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","A = new Array(len);","k = 0;","while (k < len) {","if (k in O) A[k] = callback.call(T, O[k], k, O);","k++;","}","return A;","}","});","Object.defineProperty(Array.prototype, 'reduce',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (!this || typeof callback !== 'function') throw TypeError();","var t = Object(this), len = t.length >>> 0, k = 0, value;","if (arguments.length === 2) {","value = arguments[1];","} else {","while (k < len && !(k in t)) k++;","if (k >= len) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k++];","}","for (; k < len; k++) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'reduceRight',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();","var t = Object(this), len = t.length >>> 0, k = len - 1, value;","if (arguments.length >= 2) {","value = arguments[1];","} else {","while (k >= 0 && !(k in t)) k--;","if (k < 0) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k--];","}","for (; k >= 0; k--) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'some',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (!this || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t && fun.call(thisArg, t[i], i, t)) {","return true;","}","}","return false;","}","});","(function() {","var sort_ = Array.prototype.sort;","Array.prototype.sort = function(opt_comp) {","if (typeof opt_comp !== 'function') {","return sort_.call(this);","}","for (var i = 0; i < this.length; i++) {","var changes = 0;","for (var j = 0; j < this.length - i - 1; j++) {","if (opt_comp(this[j], this[j + 1]) > 0) {","var swap = this[j];","this[j] = this[j + 1];","this[j + 1] = swap;","changes++;","}","}","if (!changes) break;","}","return this;","};","})();","Object.defineProperty(Array.prototype, 'toLocaleString',","{configurable: true, writable: true, value:","function() {","var out = [];","for (var i = 0; i < this.length; i++) {","out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();","}","return out.join(',');","}","});","")},a.prototype.initString=function(e){var t,n=this;t=function(e){return e=String(e),n.calledWithNew()?(this.data=e,this):e},this.STRING=this.createNativeFunction(t,!0),this.setProperty(e,"String",this.STRING),this.setProperty(this.STRING,"fromCharCode",this.createNativeFunction(String.fromCharCode,!1),a.NONENUMERABLE_DESCRIPTOR);for(var r=["charAt","charCodeAt","concat","indexOf","lastIndexOf","slice","substr","substring","toLocaleLowerCase","toLocaleUpperCase","toLowerCase","toUpperCase","trim"],o=0;o= 0; i--) {","str = str.substring(0, subs[i][0]) + subs[i][2] + str.substring(subs[i][0] + subs[i][1]);","}","} else {","var i = str.indexOf(substr);","if (i !== -1) {","var inject = newSubstr(str.substr(i, substr.length), i, str);","str = str.substring(0, i) + inject + str.substring(i + substr.length);","}","}","return str;","};","})();","if (!String.prototype.endsWith) {","String.prototype.endsWith = function(search, this_len) {","if (this_len === undefined || this_len > this.length) {","this_len = this.length;","}","return this.substring(this_len - search.length, this_len) === search;","};","}","if (!String.prototype.includes) {","String.prototype.includes = function(search, start) {","'use strict';","if (typeof start !== 'number') {","start = 0;","}"," ","if (start + search.length > this.length) {","return false;","} else {","return this.indexOf(search, start) !== -1;","}","};","}","if (!String.prototype.startsWith) {","String.prototype.startsWith = function(search, pos) {","return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;","};","}","")},a.prototype.initBoolean=function(e){var t,n=this;t=function(e){return e=Boolean(e),n.calledWithNew()?(this.data=e,this):e},this.BOOLEAN=this.createNativeFunction(t,!0),this.setProperty(e,"Boolean",this.BOOLEAN)},a.prototype.initNumber=function(e){var t,n=this;t=function(e){return e=Number(e),n.calledWithNew()?(this.data=e,this):e},this.NUMBER=this.createNativeFunction(t,!0),this.setProperty(e,"Number",this.NUMBER);for(var r=["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"],o=0;o>>0;return t===Number(e)?t:NaN},a.legalArrayIndex=function(e){var t=e>>>0;return String(t)===String(e)&&4294967295!==t?t:NaN},a.Value,a.Object=function(e){this.getter=Object.create(null),this.setter=Object.create(null),this.properties=Object.create(null),this.proto=e},a.Object.prototype.proto=null,a.Object.prototype.isObject=!0,a.Object.prototype.class="Object",a.Object.prototype.data=null,a.Object.prototype.toString=function(){if("Array"===this.class){(r=a.toStringCycles_).push(this);try{for(var e=[],t=0;t3&&void 0!==arguments[3]?arguments[3]:"";return function(e){if(e===a.Completion.NORMAL)throw TypeError("Should not unwind for NORMAL completions");for(var i=r.stateStack;i.length>0;i.pop()){var s=i[i.length-1];switch(s.node.type){case"TryStatement":return void(s.cv={type:e,value:t,label:n});case"CallExpression":case"NewExpression":if(e===a.Completion.RETURN)return void(s.value=t);if(e!==a.Completion.THROW)throw Error("Unsynatctic break/continue not rejected by Acorn")}if(e===a.Completion.BREAK){if(n?s.labels&&-1!==s.labels.indexOf(n):s.isLoop||s.isSwitch)return void i.pop()}else if(e===a.Completion.CONTINUE&&(n?s.labels&&-1!==s.labels.indexOf(n):s.isLoop))return}var l;if(r.isa(t,r.ERROR)){var c={EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError},u=r.getProperty(t,"name").toString(),m=r.getProperty(t,"message").valueOf();l=(e=c[u]||Error)(m+o)}else l=String(t)+o;throw l}(e)},a.prototype.createGetter_=function(e,t){var n=Array.isArray(t)?t[0]:t,r=new this.nodeConstructor;r.type="CallExpression";var o=new a.State(r,this.stateStack[this.stateStack.length-1].scope);return o.doneCallee_=!0,o.funcThis_=n,o.func_=e,o.doneArgs_=!0,o.arguments_=[],o},a.prototype.createSetter_=function(e,t,n){var r=Array.isArray(t)?t[0]:this.global,o=new this.nodeConstructor;o.type="CallExpression";var i=new a.State(o,this.stateStack[this.stateStack.length-1].scope);return i.doneCallee_=!0,i.funcThis_=r,i.func_=e,i.doneArgs_=!0,i.arguments_=[n],i},a.State=function(e,t){this.node=e,this.scope=t},a.prototype.stepArrayExpression=function(e,t,n){var r=n.elements,o=t.n_||0;for(t.array_?(this.setProperty(t.array_,o,t.value),o++):(t.array_=this.createObjectProto(this.ARRAY_PROTO),t.array_.properties.length=r.length);o>=":s>>=l;break;case">>>=":s>>>=l;break;case"&=":s&=l;break;case"^=":s^=l;break;case"|=":s|=l;break;default:throw SyntaxError("Unknown assignment expression: "+n.operator)}var c=this.setValue(t.leftReference_,s);if(c)return t.doneSetter_=!0,t.setterValue_=s,this.createSetter_(c,t.leftReference_,s);e.pop(),e[e.length-1].value=s},a.prototype.stepBinaryExpression=function(e,t,n){if(!t.doneLeft_)return t.doneLeft_=!0,new a.State(n.left,t.scope);if(!t.doneRight_)return t.doneRight_=!0,t.leftValue_=t.value,new a.State(n.right,t.scope);e.pop();var r,o=t.leftValue_,i=t.value;switch(n.operator){case"==":r=o==i;break;case"!=":r=o!=i;break;case"===":r=o===i;break;case"!==":r=o!==i;break;case">":r=o>i;break;case">=":r=o>=i;break;case"<":r=o>":r=o>>i;break;case">>>":r=o>>>i;break;case"in":if(!i||!i.isObject){let e=this.getErrorLineNumber(n);this.throwException(this.TYPE_ERROR,"'in' expects an object, not '"+i+"'",e)}r=this.hasProperty(i,o);break;case"instanceof":if(!this.isa(i,this.FUNCTION)){let e=this.getErrorLineNumber(n);this.throwException(this.TYPE_ERROR,"Right-hand side of instanceof is not an object",e)}r=!!o.isObject&&this.isa(o,i);break;default:throw SyntaxError("Unknown binary operator: "+n.operator)}e[e.length-1].value=r},a.prototype.stepBlockStatement=function(e,t,n){var r=t.n_||0,o=n.body[r];if(o)return t.n_=r+1,new a.State(o,t.scope);e.pop()},a.prototype.stepBreakStatement=function(e,t,n){var r=n.label&&n.label.name;this.unwind(a.Completion.BREAK,void 0,r)},a.prototype.stepCallExpression=function(e,t,n){if(!t.doneCallee_){t.doneCallee_=1;var o=new a.State(n.callee,t.scope);return o.components=!0,o}if(1===t.doneCallee_){t.doneCallee_=2;var i=t.value;if(Array.isArray(i)){if(t.func_=this.getValue(i,n),i[0]===a.SCOPE_REFERENCE?t.directEval_="eval"===i[1]:t.funcThis_=i[0],(i=t.func_)&&"object"==typeof i&&i.isGetter)return i.isGetter=!1,t.doneCallee_=1,this.createGetter_(i,t.value)}else t.func_=i;t.arguments_=[],t.n_=0}if(i=t.func_,!t.doneArgs_){if(0!==t.n_&&t.arguments_.push(t.value),n.arguments[t.n_])return new a.State(n.arguments[t.n_++],t.scope);if("NewExpression"===n.type){if(i.illegalConstructor){let e=this.getErrorLineNumber(n);this.throwException(this.TYPE_ERROR,i+" is not a constructor",e)}var s=i.properties.prototype;"object"==typeof s&&null!==s||(s=this.OBJECT_PROTO),t.funcThis_=this.createObjectProto(s),t.isConstructor=!0}else void 0===t.funcThis_&&(t.funcThis_=t.scope.strict?void 0:this.global);t.doneArgs_=!0}if(t.doneExec_)e.pop(),t.isConstructor&&"object"!=typeof t.value?e[e.length-1].value=t.funcThis_:e[e.length-1].value=t.value;else{if(t.doneExec_=!0,!i||!i.isObject){let e=this.getErrorLineNumber(n);this.throwException(this.TYPE_ERROR,i+" is not a function",e)}var l=i.node;if(l){for(var c=this.createScope(l.body,i.parentScope),u=0;uu?t.arguments_[u]:void 0;this.setProperty(c,m,f)}var h=this.createObjectProto(this.ARRAY_PROTO);for(u=0;u{"use strict";n.d(t,{P:()=>o});class r{constructor(e,t,n){this.set(e,t,n)}toString(){return`rgb(${Math.round(this.r)}, ${Math.round(this.g)}, ${Math.round(this.b)})`}set(e,t,n){this.r=this.clamp(e),this.g=this.clamp(t),this.b=this.clamp(n)}hueRotate(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=e/180*Math.PI;const t=Math.sin(e),n=Math.cos(e);this.multiply([.213+.787*n-.213*t,.715-.715*n-.715*t,.072-.072*n+.928*t,.213-.213*n+.143*t,.715+.285*n+.14*t,.072-.072*n-.283*t,.213-.213*n-.787*t,.715-.715*n+.715*t,.072+.928*n+.072*t])}grayscale(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.multiply([.2126+.7874*(1-e),.7152-.7152*(1-e),.0722-.0722*(1-e),.2126-.2126*(1-e),.7152+.2848*(1-e),.0722-.0722*(1-e),.2126-.2126*(1-e),.7152-.7152*(1-e),.0722+.9278*(1-e)])}sepia(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.multiply([.393+.607*(1-e),.769-.769*(1-e),.189-.189*(1-e),.349-.349*(1-e),.686+.314*(1-e),.168-.168*(1-e),.272-.272*(1-e),.534-.534*(1-e),.131+.869*(1-e)])}saturate(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.multiply([.213+.787*e,.715-.715*e,.072-.072*e,.213-.213*e,.715+.285*e,.072-.072*e,.213-.213*e,.715-.715*e,.072+.928*e])}multiply(e){const t=this.clamp(this.r*e[0]+this.g*e[1]+this.b*e[2]),n=this.clamp(this.r*e[3]+this.g*e[4]+this.b*e[5]),r=this.clamp(this.r*e[6]+this.g*e[7]+this.b*e[8]);this.r=t,this.g=n,this.b=r}brightness(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.linear(e)}contrast(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.linear(e,-.5*e+.5)}linear(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.r=this.clamp(this.r*e+255*t),this.g=this.clamp(this.g*e+255*t),this.b=this.clamp(this.b*e+255*t)}invert(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.r=this.clamp(255*(e+this.r/255*(1-2*e))),this.g=this.clamp(255*(e+this.g/255*(1-2*e))),this.b=this.clamp(255*(e+this.b/255*(1-2*e)))}hsl(){const e=this.r/255,t=this.g/255,n=this.b/255,r=Math.max(e,t,n),a=Math.min(e,t,n);let o,i,s=(r+a)/2;if(r===a)o=i=0;else{const l=r-a;switch(i=s>.5?l/(2-r-a):l/(r+a),r){case e:o=(t-n)/l+(t255?e=255:e<0&&(e=0),e}}class a{constructor(e){this.target=e,this.targetHSL=e.hsl(),this.reusedColor=new r(0,0,0)}solve(){const e=this.solveNarrow(this.solveWide());return{values:e.values,loss:e.loss,filter:this.css(e.values)}}solveWide(){const e=[60,180,18e3,600,1.2,1.2];let t={loss:1/0};for(let n=0;t.loss>25&&n<3;n++){const n=[50,20,3750,50,100,100],r=this.spsa(5,e,15,n,1e3);r.loss.5?1:-1,l[e]=r[e]+a*s[e],c[e]=r[e]-a*s[e];const f=this.loss(l)-this.loss(c);for(let n=0;n<6;n++){const o=f/(2*a)*s[n],i=t[n]/Math.pow(e+m+1,1);r[n]=u(r[n]-i*o,n)}const h=this.loss(r);hn?e%=n:e<0&&(e=n+e%n):e<0?e=0:e>n&&(e=n),e}}loss(e){const t=this.reusedColor;t.set(0,0,0),t.invert(e[0]/100),t.sepia(e[1]/100),t.saturate(e[2]/100),t.hueRotate(3.6*e[3]),t.brightness(e[4]/100),t.contrast(e[5]/100);const n=t.hsl();return Math.abs(t.r-this.target.r)+Math.abs(t.g-this.target.g)+Math.abs(t.b-this.target.b)+Math.abs(n.h-this.targetHSL.h)+Math.abs(n.s-this.targetHSL.s)+Math.abs(n.l-this.targetHSL.l)}css(e){function t(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.round(e[t]*n)}return`invert(${t(0)}%) sepia(${t(1)}%) saturate(${t(2)}%) hue-rotate(${t(3,3.6)}deg) brightness(${t(4)}%) contrast(${t(5)}%)`}}function o(e){const t=function(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,((e,t,n,r)=>t+t+n+n+r+r));const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null}(e);if(!t)return"";const[n,o,i]=t,s=new r(n,o,i);return new a(s).solve().filter}},7165:(e,t,n)=>{"use strict";n.d(t,{X:()=>a,z:()=>r});class r extends Set{toJSON(){return{ctor:"JSONSet",data:Array.from(this)}}static fromJSON(e){return new r(e.data)}}class a extends Map{toJSON(){return{ctor:"JSONMap",data:Array.from(this)}}static fromJSON(e){return new a(e.data)}}},21623:(e,t,n)=>{"use strict";n.d(t,{KW:()=>s,R3:()=>r,cD:()=>i,m0:()=>o,nd:()=>a});const r=Object.values,a=Object.keys,o=Object.entries,i=Object.fromEntries;function s(e,t){return i(Object.values(e).map((e=>[e,t(e)])))}Object.fromEntries},473:(e,t,n)=>{"use strict";function r(e){return/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e)}n.d(t,{O:()=>r})},91893:(e,t,n)=>{"use strict";n.d(t,{k:()=>a});var r=n(23122);function a(){window.addEventListener("unhandledrejection",(e=>{e.preventDefault(),(0,r.ac)(e.reason,null,"UNCAUGHT PROMISE ERROR\nYou forgot to await a promise\nmaybe hack / grow / weaken ?\n\n")}))}},94337:(e,t,n)=>{"use strict";n.d(t,{LA:()=>v,PZ:()=>y,tG:()=>b});var r=n(67294),a=n(94515),o=n(72938),i=n(22115),s=n(33244),l=n(39463),c=n(72360),u=n(49802),m=n(49173),f=n(97093),h=n(29882),d=n(15485),p=n(51544),g=n(50862);const y={[s.UniversityClassType.computerScience]:{type:s.UniversityClassType.computerScience,youAreCurrently:"studying Computer Science",earnings:(0,d.fC)({hackExp:.5,intExp:.01})},[s.UniversityClassType.dataStructures]:{type:s.UniversityClassType.dataStructures,youAreCurrently:"taking a Data Structures course",earnings:(0,d.fC)({money:-40,hackExp:1,intExp:.01})},[s.UniversityClassType.networks]:{type:s.UniversityClassType.networks,youAreCurrently:"taking a Networks course",earnings:(0,d.fC)({money:-80,hackExp:2,intExp:.01})},[s.UniversityClassType.algorithms]:{type:s.UniversityClassType.algorithms,youAreCurrently:"taking an Algorithms course",earnings:(0,d.fC)({money:-320,hackExp:4,intExp:.01})},[s.UniversityClassType.management]:{type:s.UniversityClassType.management,youAreCurrently:"taking a Management course",earnings:(0,d.fC)({money:-160,chaExp:2,intExp:.01})},[s.UniversityClassType.leadership]:{type:s.UniversityClassType.leadership,youAreCurrently:"taking a Leadership course",earnings:(0,d.fC)({money:-320,chaExp:4,intExp:.01})},[s.GymType.strength]:{type:s.GymType.strength,youAreCurrently:"training your strength at a gym",earnings:(0,d.fC)({money:-120,strExp:1})},[s.GymType.defense]:{type:s.GymType.defense,youAreCurrently:"training your defense at a gym",earnings:(0,d.fC)({money:-120,defExp:1})},[s.GymType.dexterity]:{type:s.GymType.dexterity,youAreCurrently:"training your dexterity at a gym",earnings:(0,d.fC)({money:-120,dexExp:1})},[s.GymType.agility]:{type:s.GymType.agility,youAreCurrently:"training your agility at a gym",earnings:(0,d.fC)({money:-120,agiExp:1})}},b=e=>null!==e&&e.type===h.C.CLASS;class v extends h.m{earnings=(0,d.fC)();constructor(e){super(h.C.CLASS,(null==e?void 0:e.singularity)??!0),this.classType=(null==e?void 0:e.classType)??s.UniversityClassType.computerScience,this.location=(null==e?void 0:e.location)??s.LocationName.Sector12RothmanUniversity}isGym(){return(0,g.R)("GymType",this.classType)}getClass(){return y[this.classType]}calculateRates(){return(0,f.w4)(m.J5,this.classType,this.location)}process(e){this.cyclesWorked+=e;const t=this.calculateRates(),n=(0,d.SR)(m.J5,t,e,"class");return this.earnings=(0,d.AD)(this.earnings,n),!1}finish(){this.singularity||(0,l.X)(r.createElement(r.Fragment,null,"After ",this.getClass().youAreCurrently," for"," ",(0,u.UF)(this.cyclesWorked*o.t.MilliPerCycle),", ",r.createElement("br",null),"you spent a total of ",r.createElement(c.W,{money:-this.earnings.money}),". ",r.createElement("br",null),r.createElement("br",null),"You earned a total of: ",r.createElement("br",null),(0,i.Mf)(this.earnings.hackExp)," hacking exp ",r.createElement("br",null),(0,i.Mf)(this.earnings.strExp)," strength exp ",r.createElement("br",null),(0,i.Mf)(this.earnings.defExp)," defense exp ",r.createElement("br",null),(0,i.Mf)(this.earnings.dexExp)," dexterity exp ",r.createElement("br",null),(0,i.Mf)(this.earnings.agiExp)," agility exp ",r.createElement("br",null),(0,i.Mf)(this.earnings.chaExp)," charisma exp",r.createElement("br",null)))}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,classType:this.classType,location:this.location}}toJSON(){return(0,a.L3)("ClassWork",this)}static fromJSON(e){const t=(0,a.Id)(v,e.data);return t.classType=(0,p.x)(s.UniversityClassType,t.classType)??(0,p.x)(s.GymType,t.classType)??s.UniversityClassType.computerScience,t}}a.gY.ClassWork=v},75522:(e,t,n)=>{"use strict";n.d(t,{d:()=>b,t:()=>v});var r=n(67294),a=n(94515),o=n(49173),i=n(29882),s=n(62734),l=n(33244),c=n(97093),u=n(62586),m=n(15485),f=n(39463),h=n(17365),d=n(72938),p=n(11124),g=n(50862),y=n(82141);const b=e=>null!==e&&e.type===i.C.COMPANY;class v extends i.m{constructor(e){super(i.C.COMPANY,(null==e?void 0:e.singularity)??!1),this.companyName=(null==e?void 0:e.companyName)??l.CompanyName.NoodleBar}getCompany(){return u.O[this.companyName]}getGainRates(e){let t=1;o.J5.hasAugmentation(l.AugmentationName.NeuroreceptorManager,!0)||(t=o.J5.focus?1:d.t.BaseFocusBonus);const n=this.getCompany();return(0,m.U9)((0,c.zP)(o.J5,n,p.A[e],n.favor),t)}process(e){this.cyclesWorked+=e;const t=this.getCompany(),n=o.J5.jobs[this.companyName];if(!n)return!0;const r=this.getGainRates(n);return(0,m.SR)(o.J5,r,e,"work"),t.playerReputation+=r.reputation*e,(0,s.gz)(t,r.reputation,e),!1}finish(){this.singularity||(0,f.X)(r.createElement(r.Fragment,null,"You finished working for ",this.companyName,r.createElement("br",null),"You have ",r.createElement(h.Y,{reputation:this.getCompany().playerReputation})," reputation with them."))}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,companyName:this.companyName}}toJSON(){return(0,a.L3)("CompanyWork",this)}static fromJSON(e){const t=(0,a.Id)(v,e.data);return(0,g.R)("CompanyName",t.companyName)?t:(0,y.v)()}}a.gY.CompanyWork=v},95814:(e,t,n)=>{"use strict";n.d(t,{m:()=>h,o:()=>f});var r=n(39463),a=n(94515),o=n(33244),i=n(72938),s=n(49173),l=n(58073),c=n(29882),u=n(46085),m=n(84555);const f=e=>null!==e&&e.type===c.C.CREATE_PROGRAM;class h extends c.m{constructor(e){if(super(c.C.CREATE_PROGRAM,(null==e?void 0:e.singularity)??!0),this.unitCompleted=0,this.programName=(null==e?void 0:e.programName)??o.CompletedProgramName.bruteSsh,e)for(let e=0;e=100)break;this.unitCompleted=r/100*this.unitNeeded(),s.J5.getHomeComputer().programs.splice(e,1)}}}unitNeeded(){var e;return(null===(e=this.getProgram().create)||void 0===e?void 0:e.time)??0}getProgram(){return l.B[this.programName]}process(e){var t;let n=1;s.J5.hasAugmentation(o.AugmentationName.NeuroreceptorManager,!0)||(n=s.J5.focus?1:i.t.BaseFocusBonus);const r=(null===(t=this.getProgram().create)||void 0===t?void 0:t.level)??0;let a=s.J5.skills.hacking/r*(0,u.f)(s.J5.skills.intelligence,3);return a=1+(a-1)/5,a*=n,this.cyclesWorked+=e,this.unitCompleted+=i.t.MilliPerCycle*e*a,this.unitCompleted>=this.unitNeeded()}finish(e){const t=(0,m.P1)(this.programName);if(e){if(!s.J5.getHomeComputer().programs.includes(t)){const e=(100*this.unitCompleted/this.unitNeeded()).toFixed(2),n=(0,m.P1)(t+"-"+e+"%-INC");s.J5.getHomeComputer().programs.push(n)}}else{if(s.J5.gainIntelligenceExp(i.t.IntelligenceProgramBaseExpGain*this.cyclesWorked*i.t.MilliPerCycle/1e3),!this.singularity){const e=[`You've finished creating ${t}!`,"The new program can be found on your home computer."];(0,r.X)(e.join("\n"))}s.J5.getHomeComputer().programs.includes(t)||s.J5.getHomeComputer().programs.push(t)}}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,programName:this.programName}}toJSON(){return(0,a.L3)("CreateProgramWork",this)}static fromJSON(e){return(0,a.Id)(h,e.data)}}a.gY.CreateProgramWork=h},48196:(e,t,n)=>{"use strict";n.d(t,{Q:()=>p,s:()=>d});var r=n(49173),a=n(33244),o=n(94515),i=n(72938),s=n(35100),l=n(35333),c=n(39463),u=n(29882),m=n(15485),f=n(97093),h=n(50862);const d=e=>null!==e&&e.type===u.C.CRIME;class p extends u.m{constructor(e){super(u.C.CRIME,(null==e?void 0:e.singularity)??!0),this.crimeType=(null==e?void 0:e.crimeType)??a.CrimeType.shoplift,this.unitCompleted=0}getCrime(){return l.W[this.crimeType]}process(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.cyclesWorked+=t;const n=(null===(e=Object.values(l.W).find((e=>e.type===this.crimeType)))||void 0===e?void 0:e.time)??0;for(this.unitCompleted+=i.t.MilliPerCycle*t;this.unitCompleted>=n;)this.commit(),this.unitCompleted-=n;return!1}earnings(){return(0,f.jI)(r.J5,this.getCrime())}commit(){const e=this.getCrime();if(null==e)return void(0,c.X)(`ERR: Unrecognized crime type (${this.crimeType}). This is probably a bug please contact the developer`);const t=r.J5.focusPenalty();let n=(0,m.U9)(this.earnings(),t,!1),a=e.karma;(0,s.T)(e.type)?(r.J5.gainMoney(n.money,"crime"),r.J5.numPeopleKilled+=e.kills,r.J5.gainIntelligenceExp(n.intExp)):(n=(0,m.U9)(n,.25),a/=4),r.J5.gainHackingExp(n.hackExp),r.J5.gainStrengthExp(n.strExp),r.J5.gainDefenseExp(n.defExp),r.J5.gainDexterityExp(n.dexExp),r.J5.gainAgilityExp(n.agiExp),r.J5.gainCharismaExp(n.chaExp),r.J5.karma-=a*t}finish(){}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,crimeType:this.crimeType}}toJSON(){return(0,o.L3)("CrimeWork",this)}static fromJSON(e){const t=(0,o.Id)(p,e.data);return t.crimeType=(0,h.m)("CrimeType").fuzzyGetMember(t.crimeType,!0),t}}o.gY.CrimeWork=p},96707:(e,t,n)=>{"use strict";let r,a,o;n.d(t,{A$:()=>o,GK:()=>a,q3:()=>s,rF:()=>i,vD:()=>r}),function(e){e.hacking="hacking",e.field="field",e.security="security"}(r||(r={})),function(e){e.computerScience="Computer Science",e.dataStructures="Data Structures",e.networks="Networks",e.algorithms="Algorithms",e.management="Management",e.leadership="Leadership"}(a||(a={})),function(e){e.strength="str",e.defense="def",e.dexterity="dex",e.agility="agi"}(o||(o={}));const i={...a,...o};let s;!function(e){e.software0="Software Engineering Intern",e.software1="Junior Software Engineer",e.software2="Senior Software Engineer",e.software3="Lead Software Developer",e.software4="Head of Software",e.software5="Head of Engineering",e.software6="Vice President of Technology",e.software7="Chief Technology Officer",e.IT0="IT Intern",e.IT1="IT Analyst",e.IT2="IT Manager",e.IT3="Systems Administrator",e.securityEng="Security Engineer",e.networkEng0="Network Engineer",e.networkEng1="Network Administrator",e.business0="Business Intern",e.business1="Business Analyst",e.business2="Business Manager",e.business3="Operations Manager",e.business4="Chief Financial Officer",e.business5="Chief Executive Officer",e.security0="Security Guard",e.security1="Security Officer",e.security2="Security Supervisor",e.security3="Head of Security",e.agent0="Field Agent",e.agent1="Secret Agent",e.agent2="Special Operative",e.employee="Employee",e.employeePT="Part-time Employee",e.waiter="Waiter",e.waiterPT="Part-time Waiter",e.softwareConsult0="Software Consultant",e.softwareConsult1="Senior Software Consultant",e.businessConsult0="Business Consultant",e.businessConsult1="Senior Business Consultant"}(s||(s={}))},16632:(e,t,n)=>{"use strict";n.d(t,{D:()=>p,s:()=>g});var r=n(67294),a=n(29882),o=n(94515),i=n(49173),s=n(33244),l=n(58427),c=n(15485),u=n(39463),m=n(17365),f=n(72938),h=n(97093),d=n(50862);const p=e=>null!==e&&e.type===a.C.FACTION;class g extends a.m{constructor(e){super(a.C.FACTION,(null==e?void 0:e.singularity)??!0),this.factionWorkType=(null==e?void 0:e.factionWorkType)??s.FactionWorkType.hacking,this.factionName=(null==e?void 0:e.faction)??s.FactionName.Sector12}getFaction(){return l.i[this.factionName]}getReputationRate(){let e=1;return i.J5.hasAugmentation(s.AugmentationName.NeuroreceptorManager,!0)||(e=i.J5.focus?1:f.t.BaseFocusBonus),(0,h.EV)(i.J5,this.factionWorkType,this.getFaction().favor)*e}getExpRates(){let e=1;i.J5.hasAugmentation(s.AugmentationName.NeuroreceptorManager,!0)||(e=i.J5.focus?1:f.t.BaseFocusBonus);const t=(0,h.r0)(i.J5,this.factionWorkType);return(0,c.U9)(t,e,!1)}process(e){this.cyclesWorked+=e,this.getFaction().playerReputation+=this.getReputationRate()*e;const t=this.getExpRates();return(0,c.SR)(i.J5,t,e,"class"),!1}finish(){this.singularity||(0,u.X)(r.createElement(r.Fragment,null,"You worked for ",this.getFaction().name,".",r.createElement("br",null),"They now have a total of ",r.createElement(m.Y,{reputation:this.getFaction().playerReputation})," reputation."))}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,factionWorkType:this.factionWorkType,factionName:this.factionName}}toJSON(){return(0,o.L3)("FactionWork",this)}static fromJSON(e){const t=(0,o.Id)(g,e.data);return t.factionWorkType=(0,d.m)("FactionWorkType").fuzzyGetMember(t.factionWorkType,!0),t.factionName=(0,d.m)("FactionName").fuzzyGetMember(t.factionName,!0),t}}o.gY.FactionWork=g},97093:(e,t,n)=>{"use strict";n.d(t,{EV:()=>y,jI:()=>g,r0:()=>b,sk:()=>v,w4:()=>k,zP:()=>w});var r=n(97740),a=n(15485),o=n(72938),i=n(33244),s=n(509),l=n(81881),c=n(49173),u=n(94337),m=n(97467),f=n(16014),h=n(50862);const d=1e3/o.t.MilliPerCycle,p={[i.FactionWorkType.hacking]:(0,a.fC)({hackExp:2}),[i.FactionWorkType.field]:(0,a.fC)({hackExp:1,strExp:1,defExp:1,dexExp:1,agiExp:1,chaExp:1}),[i.FactionWorkType.security]:(0,a.fC)({hackExp:.5,strExp:1.5,defExp:1.5,dexExp:1.5,agiExp:1.5})};function g(e,t){return(0,a.U9)((0,a.Le)((0,a.fC)({money:t.money,hackExp:t.hacking_exp,strExp:t.strength_exp,defExp:t.defense_exp,dexExp:t.dexterity_exp,agiExp:t.agility_exp,chaExp:t.charisma_exp,intExp:t.intelligence_exp}),e.mults,e.mults.crime_money*r.dQ.CrimeMoney),r.dQ.CrimeExpGain,!1)}const y=(e,t,n)=>({[i.FactionWorkType.hacking]:s.He,[i.FactionWorkType.field]:s._h,[i.FactionWorkType.security]:s.Zz}[t](e,n));function b(e,t){return(0,a.U9)((0,a.Le)(p[t],e.mults),r.dQ.FactionWorkExpGain/d)}function v(e,t){const n=f.q.find((e=>e.specialName===t.name)),r=(0,m.WT)(n?n.hostname:"").backdoorInstalled?.9:1;return e.earnings.money*t.costMult*r}function k(e,t,n){const r=c.J5.hashManager,o=u.PZ[t],i=l.t[n],s=(0,h.R)("GymType",t)?r.getTrainingMult():r.getStudyMult(),m=(0,a.Le)((0,a.U9)(o.earnings,i.expMult/d*s,!1),e.mults);return m.money=v(o,i)/d,m}const w=(e,t,n,o)=>{const i=isNaN(o)?1:1+o/100,s=c.J5.sourceFileLvl(11)>0?i:1,l=(0,a.U9)((0,a.Le)({money:n.baseSalary*t.salaryMultiplier*s*r.dQ.CompanyWorkMoney,hackExp:n.hackingExpGain,strExp:n.strengthExpGain,defExp:n.defenseExpGain,dexExp:n.dexterityExpGain,agiExp:n.agilityExpGain,chaExp:n.charismaExpGain},e.mults,e.mults.work_money),t.expMultiplier*r.dQ.CompanyWorkExpGain,!1),u=n.calculateJobPerformance(e);return l.reputation=u*e.mults.company_rep*i,l}},64315:(e,t,n)=>{"use strict";n.d(t,{Y:()=>g,u:()=>p});var r=n(67294),a=n(72938),o=n(33244),i=n(72390),s=n(49173),l=n(29882),c=n(16771),u=n(27889),m=n(39463),f=n(94515),h=n(51278),d=n(73440);const p=e=>null!==e&&e.type===l.C.GRAFTING;class g extends l.m{constructor(e){super(l.C.GRAFTING,(null==e?void 0:e.singularity)??!0),this.unitCompleted=0,this.augmentation=(null==e?void 0:e.augmentation)??o.AugmentationName.Targeting1;const t=(0,i.M)();e&&s.J5.loseMoney(t[this.augmentation].cost,"augmentations")}unitNeeded(){return new h.W(d.x[this.augmentation]).time}process(e){let t=1;return s.J5.hasAugmentation(o.AugmentationName.NeuroreceptorManager,!0)||(t=s.J5.focus?1:a.t.BaseFocusBonus),this.cyclesWorked+=e,this.unitCompleted+=a.t.MilliPerCycle*e*(0,c.hI)()*t,this.unitCompleted>=this.unitNeeded()}finish(e){const t=this.augmentation;e?e&&!this.singularity&&(0,m.X)(r.createElement(r.Fragment,null,"You cancelled the grafting of ",t,".",r.createElement("br",null),"Your money was not returned to you.")):((0,u.kk)({name:t,level:1}),s.J5.hasAugmentation(o.AugmentationName.CongruityImplant,!0)||(s.J5.entropy+=1,s.J5.applyEntropy(s.J5.entropy)),this.singularity||(0,m.X)(r.createElement(r.Fragment,null,"You've finished grafting ",t,".",r.createElement("br",null),"The augmentation has been applied to your body"," ",s.J5.hasAugmentation(o.AugmentationName.CongruityImplant,!0)?".":", but you feel a bit off."))),e||s.J5.gainIntelligenceExp(a.t.IntelligenceGraftBaseExpGain*this.cyclesWorked*a.t.MilliPerCycle/1e4)}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,augmentation:this.augmentation}}toJSON(){return(0,f.L3)("GraftingWork",this)}static fromJSON(e){return(0,f.Id)(g,e.data)}}f.gY.GraftingWork=g},82141:(e,t,n)=>{"use strict";function r(){return null}n.d(t,{v:()=>r})},29882:(e,t,n)=>{"use strict";n.d(t,{C:()=>a,m:()=>r});class r{constructor(e,t){this.type=e,this.singularity=t,this.cyclesWorked=0}}let a;!function(e){e.CRIME="CRIME",e.CLASS="CLASS",e.CREATE_PROGRAM="CREATE_PROGRAM",e.GRAFTING="GRAFTING",e.FACTION="FACTION",e.COMPANY="COMPANY"}(a||(a={}))},15485:(e,t,n)=>{"use strict";n.d(t,{AD:()=>o,Le:()=>c,SR:()=>s,U9:()=>i,fC:()=>a,ki:()=>l});var r=n(49173);const a=e=>({money:(null==e?void 0:e.money)??0,reputation:(null==e?void 0:e.reputation)??0,hackExp:(null==e?void 0:e.hackExp)??0,strExp:(null==e?void 0:e.strExp)??0,defExp:(null==e?void 0:e.defExp)??0,dexExp:(null==e?void 0:e.dexExp)??0,agiExp:(null==e?void 0:e.agiExp)??0,chaExp:(null==e?void 0:e.chaExp)??0,intExp:(null==e?void 0:e.intExp)??0}),o=(e,t)=>({money:e.money+t.money,reputation:e.reputation+t.reputation,hackExp:e.hackExp+t.hackExp,strExp:e.strExp+t.strExp,defExp:e.defExp+t.defExp,dexExp:e.dexExp+t.dexExp,agiExp:e.agiExp+t.agiExp,chaExp:e.chaExp+t.chaExp,intExp:e.intExp+t.intExp}),i=function(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const r=n?t:1;return{money:e.money*r,reputation:e.reputation*t,hackExp:e.hackExp*t,strExp:e.strExp*t,defExp:e.defExp*t,dexExp:e.dexExp*t,agiExp:e.agiExp*t,chaExp:e.chaExp*t,intExp:e.intExp*t}},s=(e,t,n,a)=>{const o=l(e,t,n),i={money:t.money*n,reputation:0,hackExp:o.hackExp,strExp:o.strExp,defExp:o.defExp,dexExp:o.dexExp,agiExp:o.agiExp,chaExp:o.chaExp,intExp:o.intExp};return r.J5.gainMoney(i.money,a),i},l=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=i(t,n,!1);return r.money=0,r.reputation=0,e.gainHackingExp(r.hackExp),e.gainStrengthExp(r.strExp),e.gainDefenseExp(r.defExp),e.gainDexterityExp(r.dexExp),e.gainAgilityExp(r.agiExp),e.gainCharismaExp(r.chaExp),e.gainIntelligenceExp(r.intExp),r};function c(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{money:(e.money??0)*n,reputation:(e.reputation??0)*r,hackExp:(e.hackExp??0)*t.hacking_exp,strExp:(e.strExp??0)*t.strength_exp,defExp:(e.defExp??0)*t.defense_exp,dexExp:(e.dexExp??0)*t.dexterity_exp,agiExp:(e.agiExp??0)*t.agility_exp,chaExp:(e.chaExp??0)*t.charisma_exp,intExp:e.intExp??0}}},45628:(e,t,n)=>{"use strict";n.d(t,{X:()=>m});var r=n(92666),a=n(84874),o=n(30058),i=n(31375),s=n(72326);function l(e){let t=e;return t.startsWith("[")&&(t=t.slice(1)),t.endsWith("]")&&(t=t.slice(0,-1)),t}function c(e){let t=e;return(t.startsWith('"')||t.startsWith("'"))&&(t=t.slice(1)),(t.endsWith('"')||t.endsWith("'"))&&(t=t.slice(0,-1)),t}function u(e){const t=[];return e.forEach((e=>{let n=String(e);n=["[",n,"]"].join(""),t.push(n)})),t.join(",").replace(/\s/g,"")}const m=[{desc:e=>["A prime factor is a factor that is a prime number.",`What is the largest prime factor of ${e}?`].join(" "),difficulty:1,gen:()=>(0,r.X)(500,1e9),name:"Find Largest Prime Factor",numTries:10,solver:(e,t)=>{if("number"!=typeof e)throw new Error("solver expected number");let n=2,r=e;for(;r>(n-1)*(n-1);){for(;r%n==0;)r=Math.round(r/n);++n}return(1===r?n-1:r)===parseInt(t,10)}},{desc:e=>["Given the following integer array, find the contiguous subarray","(containing at least one number) which has the largest sum and return that sum.","'Sum' refers to the sum of all the numbers in the subarray.\n",`${e.toString()}`].join(" "),difficulty:1,gen:()=>{const e=(0,r.X)(5,40),t=[];t.length=e;for(let n=0;n{const n=e.slice();for(let e=1;e{if("number"!=typeof e)throw new Error("solver expected number");return["It is possible write four as a sum in exactly four different ways:\n\n","    3 + 1\n","    2 + 2\n","    2 + 1 + 1\n","    1 + 1 + 1 + 1\n\n",`How many different distinct ways can the number ${e} be written as a sum of at least`,"two positive integers?"].join(" ")},difficulty:1.5,gen:()=>(0,r.X)(8,100),name:"Total Ways to Sum",numTries:10,solver:(e,t)=>{if("number"!=typeof e)throw new Error("solver expected number");const n=[1];n.length=e+1,n.fill(0,1);for(let t=1;t{const t=e;return[`How many different distinct ways can the number ${t[0]} be written`,"as a sum of integers contained in the set:\n\n",`[${t[1]}]?\n\n`,"You may use each integer in the set zero or more times."].join(" ")},difficulty:2,gen:()=>{const e=(0,r.X)(12,200),t=(0,r.X)(8,12),n=[];for(let r=1;r<=e&&n.length!=t;r++)(Math.random()<.6||e-r{const n=e,r=n[0],a=n[1],o=[1];o.length=r+1,o.fill(0,1);for(let e=0;e{const t=e;let n=["Given the following array of arrays of numbers representing a 2D matrix,","return the elements of the matrix as an array in spiral order:\n\n"].join(" ");return n+="    [\n",n+=t.map((e=>"        ["+e.map((e=>`${e}`.padStart(2," "))).join(",")+"]")).join("\n"),n+="\n    ]\n",n+=["\nHere is an example of what spiral order should be:\n\n","    [\n","        [1, 2, 3]\n","        [4, 5, 6]\n","        [7, 8, 9]\n","    ]\n\n","Answer: [1, 2, 3, 6, 9, 8 ,7, 4, 5]\n\n","Note that the matrix will not always be square:\n\n","    [\n","        [1,  2,  3,  4]\n","        [5,  6,  7,  8]\n","        [9, 10, 11, 12]\n","    ]\n\n","Answer: [1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7]"].join(" "),n},difficulty:2,gen:()=>{const e=(0,r.X)(1,15),t=(0,r.X)(1,15),n=[];n.length=e;for(let r=0;r{const n=e,r=[];let a=0,o=n.length-1,i=0,s=n[0].length-1,c=0,u=!1;for(;!u;){for(let e=i;e<=s;e++)r[c]=n[a][e],++c;if(++a>o)u=!0;else{for(let e=a;e<=o;e++)r[c]=n[e][s],++c;if(--s=i;e--)r[c]=n[o][e],++c;if(--o=a;e--)r[c]=n[e][i],++c;++i>s&&(u=!0)}}}}const m=l(t).replace(/\s/g,"").split(",").map((e=>parseInt(e)));if(r.length!==m.length)return!1;for(let e=0;e["You are given the following array of integers:\n\n",`${e}\n\n`,"Each element in the array represents your MAXIMUM jump length","at that position. This means that if you are at position i and your","maximum jump length is n, you can jump to any position from","i to i+n.","\n\nAssuming you are initially positioned","at the start of the array, determine whether you are","able to reach the last index.\n\n","Your answer should be submitted as 1 or 0, representing true and false respectively"].join(" "),difficulty:2.5,gen:()=>{const e=(0,r.X)(3,25),t=[];t.length=e;for(let e=0;e{const n=e,r=n.length;let a=0;for(let e=0;a["You are given the following array of integers:\n\n",`${e}\n\n`,"Each element in the array represents your MAXIMUM jump length","at that position. This means that if you are at position i and your","maximum jump length is n, you can jump to any position from","i to i+n.","\n\nAssuming you are initially positioned","at the start of the array, determine the minimum number of","jumps to reach the end of the array.\n\n","If it's impossible to reach the end, then the answer should be 0."].join(" "),difficulty:3,gen:()=>{const e=(0,r.X)(3,25),t=[];t.length=e;for(let e=0;e{const n=e,r=n.length;let a=0,o=0,i=-1;for(;ai;t--)t+n[t]>a&&(a=t+n[t],e=t);if(-1===e){o=0;break}i=e,o++}return o===parseInt(t,10)}},{desc:e=>["Given the following array of arrays of numbers representing a list of","intervals, merge all overlapping intervals.\n\n",`[${u(e)}]\n\n`,"Example:\n\n","[[1, 3], [8, 10], [2, 6], [10, 16]]\n\n","would merge into [[1, 6], [8, 16]].\n\n","The intervals must be returned in ASCENDING order.","You can assume that in an interval, the first number will always be","smaller than the second."].join(" "),difficulty:3,gen:()=>{const e=[],t=(0,r.X)(3,20);for(let n=0;n{const n=e.slice();n.sort(((e,t)=>e[0]-t[0]));const r=[];let a=n[0][0],o=n[0][1];for(const e of n)e[0]<=o?o=Math.max(o,e[1]):(r.push([a,o]),a=e[0],o=e[1]);r.push([a,o]);const i=u(r),s=t.replace(/\s/g,"");return i===s||i===l(s)}},{desc:e=>["Given the following string containing only digits, return","an array with all possible valid IP address combinations","that can be created from the string:\n\n",`${e}\n\n`,"Note that an octet cannot begin with a '0' unless the number","itself is actually 0. For example, '192.168.010.1' is not a valid IP.\n\n","Examples:\n\n",'25525511135 -> ["255.255.11.135", "255.255.111.35"]\n','1938718066 -> ["193.87.180.66"]'].join(" "),difficulty:3,gen:()=>{let e="";for(let t=0;t<4;++t)e+=(0,r.X)(0,255).toString();return e},name:"Generate IP Addresses",numTries:10,solver:(e,t)=>{if("string"!=typeof e)throw new Error("solver expected string");const n=[];for(let t=1;t<=3;++t)for(let r=1;r<=3;++r)for(let a=1;a<=3;++a)for(let o=1;o<=3;++o)if(t+r+a+o===e.length){const i=parseInt(e.substring(0,t),10),s=parseInt(e.substring(t,t+r),10),l=parseInt(e.substring(t+r,t+r+a),10),c=parseInt(e.substring(t+r+a,t+r+a+o),10);if(i<=255&&s<=255&&l<=255&&c<=255){const t=[i.toString(),".",s.toString(),".",l.toString(),".",c.toString()].join("");t.length===e.length+3&&n.push(t)}}const r=l(t).replace(/\s/g,"").split(",").map((e=>e.replace(/^(?['"])([\d.]*)\k$/g,"$2")));if(r.length!==n.length)return!1;for(const e of r)if(!n.includes(e))return!1;return!0}},{desc:e=>["You are given the following array of stock prices (which are numbers)","where the i-th element represents the stock price on day i:\n\n",`${e}\n\n`,"Determine the maximum possible profit you can earn using at most","one transaction (i.e. you can only buy and sell the stock once). If no profit can be made","then the answer should be 0. Note","that you have to buy the stock before you can sell it"].join(" "),difficulty:1,gen:()=>{const e=(0,r.X)(3,50),t=[];t.length=e;for(let n=0;n{const n=e;let r=0,a=0;for(let e=1;e["You are given the following array of stock prices (which are numbers)","where the i-th element represents the stock price on day i:\n\n",`${e}\n\n`,"Determine the maximum possible profit you can earn using as many","transactions as you'd like. A transaction is defined as buying","and then selling one share of the stock. Note that you cannot","engage in multiple transactions at once. In other words, you","must sell the stock before you buy it again.\n\n","If no profit can be made, then the answer should be 0"].join(" "),difficulty:2,gen:()=>{const e=(0,r.X)(3,50),t=[];t.length=e;for(let n=0;n{const n=e;let r=0;for(let e=1;e["You are given the following array of stock prices (which are numbers)","where the i-th element represents the stock price on day i:\n\n",`${e}\n\n`,"Determine the maximum possible profit you can earn using at most","two transactions. A transaction is defined as buying","and then selling one share of the stock. Note that you cannot","engage in multiple transactions at once. In other words, you","must sell the stock before you buy it again.\n\n","If no profit can be made, then the answer should be 0"].join(" "),difficulty:5,gen:()=>{const e=(0,r.X)(3,50),t=[];t.length=e;for(let n=0;n{const n=e;let r=Number.MIN_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER,o=0,i=0;for(const e of n)i=Math.max(i,a+e),a=Math.max(a,o-e),o=Math.max(o,r+e),r=Math.max(r,-1*e);return i.toString()===t}},{desc:e=>{const t=e;return["You are given the following array with two elements:\n\n",`[${t[0]}, [${t[1]}]]\n\n`,"The first element is an integer k. The second element is an","array of stock prices (which are numbers) where the i-th element","represents the stock price on day i.\n\n","Determine the maximum possible profit you can earn using at most","k transactions. A transaction is defined as buying and then selling","one share of the stock. Note that you cannot engage in multiple","transactions at once. In other words, you must sell the stock before","you can buy it again.\n\n","If no profit can be made, then the answer should be 0."].join(" ")},difficulty:8,gen:()=>{const e=(0,r.X)(2,10),t=(0,r.X)(3,50),n=[];n.length=t;for(let e=0;e{const n=e,r=n[0],a=n[1],o=a.length;if(o<2)return 0===parseInt(t);if(r>o/2){let e=0;for(let t=1;t0;--e)s[e]=Math.max(s[e],i[e]+l),i[e]=Math.max(i[e],s[e-1]-l)}return parseInt(t)===s[r]}},{desc:e=>{function t(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const r=e.length;if(n>=r)return"";const a=r-n+1;let o=[" ".repeat(a),"[",e[n].toString(),"]"].join("");return n 3 -> 5 -> 1)."].join(" ")},difficulty:5,gen:()=>{const e=[],t=(0,r.X)(3,12);e.length=t;for(let n=0;n{const n=e,r=n.length,a=n[r-1].slice();for(let e=r-2;e>-1;--e)for(let t=0;t{const t=e,n=t[0],r=t[1];return["You are in a grid with",`${n} rows and ${r} columns, and you are`,"positioned in the top-left corner of that grid. You are trying to","reach the bottom-right corner of the grid, but you can only","move down or right on each step. Determine how many","unique paths there are from start to finish.\n\n","NOTE: The data returned for this contract is an array","with the number of rows and columns:\n\n",`[${n}, ${r}]`].join(" ")},difficulty:3,gen:()=>[(0,r.X)(2,14),(0,r.X)(2,14)],name:"Unique Paths in a Grid I",numTries:10,solver:(e,t)=>{const n=e,r=n[0],a=n[1],o=[];o.length=r;for(let e=0;e{const t=e;let n="";for(const e of t)n+=`${e.toString()},\n`;return["You are located in the top-left corner of the following grid:\n\n",`${n}\n`,"You are trying reach the bottom-right corner of the grid, but you can only","move down or right on each step. Furthermore, there are obstacles on the grid","that you cannot move onto. These obstacles are denoted by '1', while empty","spaces are denoted by 0.\n\n","Determine how many unique paths there are from start to finish.\n\n","NOTE: The data returned for this contract is an 2D array of numbers representing the grid."].join(" ")},difficulty:5,gen:()=>{const e=(0,r.X)(2,12),t=(0,r.X)(2,12),n=[];n.length=e;for(let r=0;r{const n=e,r=[];r.length=n.length;for(let e=0;e0?r[e-1][t]:0)+(t>0?r[e][t-1]:0);return r[r.length-1][r[0].length-1]===parseInt(t)}},{name:"Shortest Path in a Grid",desc:e=>["You are located in the top-left corner of the following grid:\n\n",`  [${e.map((e=>"["+e+"]")).join(",\n   ")}]\n\n`,"You are trying to find the shortest path to the bottom-right corner of the grid,","but there are obstacles on the grid that you cannot move onto.","These obstacles are denoted by '1', while empty spaces are denoted by 0.\n\n","Determine the shortest path from start to finish, if one exists.","The answer should be given as a string of UDLR characters, indicating the moves along the path\n\n","NOTE: If there are multiple equally short paths, any of them is accepted as answer.","If there is no path, the answer should be an empty string.\n","NOTE: The data returned for this contract is an 2D array of numbers representing the grid.\n\n","Examples:\n\n","    [[0,1,0,0,0],\n","     [0,0,0,1,0]]\n","\n","Answer: 'DRRURRD'\n\n","    [[0,1],\n","     [1,0]]\n","\n","Answer: ''\n\n"].join(" "),difficulty:7,numTries:10,gen:()=>{const e=(0,r.X)(6,12),t=(0,r.X)(6,12),n=e-1,a=t-1,o=n+a,i=new Array(e);for(let n=0;n{const n=e,r=n[0].length,o=n.length,i=o-1,s=r-1,l=new Array(o),c=new a.H;for(let e=0;e=0&&e=0&&t0;){const[e,t]=c.pop();for(const[n,r]of m(e,t)){const a=l[e][t]+1;a{let[t,a]=e;return t==n&&a==r}),a),l[n][r]=a)}}if(l[i][s]==1/0)return""==t;if(t.length>l[i][s])return!1;let f=0,h=0;for(const e of t){switch(e){case"U":h-=1;break;case"D":h+=1;break;case"L":f-=1;break;case"R":f+=1;break;default:return!1}if(!u(h,f))return!1}return h==i&&f==s}},{desc:e=>["Given the following string:\n\n",`${e}\n\n`,"remove the minimum number of invalid parentheses in order to validate","the string. If there are multiple minimal ways to validate the string,","provide all of the possible results. The answer should be provided","as an array of strings. If it is impossible to validate the string","the result should be an array with only an empty string.\n\n","IMPORTANT: The string may contain letters, not just parentheses.","Examples:\n",'"()())()" -> ["()()()", "(())()"]\n','"(a)())()" -> ["(a)()()", "(a())()"]\n','")(" -> [""]'].join(" "),difficulty:10,gen:()=>{const e=(0,r.X)(6,20),t=[];t.length=e,Math.random()<.8?t[0]="(":t[0]=")";for(let n=1;n{if("string"!=typeof e)throw new Error("solver expected string");let n=0,r=0;const a=[];for(let t=0;t0?--n:++r);!function e(t,n,r,a,o,i,s){if(o.length!==n)"("===o[n]?(r>0&&e(t,n+1,r-1,a,o,i,s),e(t+1,n+1,r,a,o,i+o[n],s)):")"===o[n]?(a>0&&e(t,n+1,r,a-1,o,i,s),t>0&&e(t-1,n+1,r,a,o,i+o[n],s)):e(t,n+1,r,a,o,i+o[n],s);else if(0===r&&0===a&&0===t){for(let e=0;e{const t=e,n=t[0],r=t[1];return["You are given the following string which contains only digits between 0 and 9:\n\n",`${n}\n\n`,`You are also given a target number of ${r}. Return all possible ways`,"you can add the +(add), -(subtract), and *(multiply) operators to the string such","that it evaluates to the target number. (Normal order of operations applies.)\n\n","The provided answer should be an array of strings containing the valid expressions.","The data provided by this problem is an array with two elements. The first element","is the string of digits, while the second element is the target number:\n\n",`["${n}", ${r}]\n\n`,"NOTE: The order of evaluation expects script operator precedence","NOTE: Numbers in the expression cannot have leading 0's. In other words,",'"1+01" is not a valid expression',"Examples:\n\n",'Input: digits = "123", target = 6\n',"Output: [1+2+3, 1*2*3]\n\n",'Input: digits = "105", target = 5\n',"Output: [1*0+5, 10-5]"].join(" ")},difficulty:10,gen:()=>{const e=(0,r.X)(4,12),t=[];t.length=e;for(let e=0;e{const n=e,r=n[0],a=n[1],o=l(t),i=(0,s.m)(o.split(","));for(let e=0;e["You are given the following decimal Value: \n",`${e} \n`,"Convert it to a binary representation and encode it as an 'extended Hamming code'. Eg:\n ","Value 8 is expressed in binary as '1000', which will be encoded","with the pattern 'pppdpddd', where p is a parity bit and d a data bit. The encoding of\n","8 is 11110000. As another example, '10101' (Value 21) will result into (pppdpdddpd) '1001101011'.\n","The answer should be given as a string containing only 1s and 0s.\n","NOTE: the endianness of the data bits is reversed in relation to the endianness of the parity bits.\n","NOTE: The bit at index zero is the overall parity bit, this should be set last.\n","NOTE 2: You should watch the Hamming Code video from 3Blue1Brown, which explains the 'rule' of encoding,","including the first index parity bit mentioned in the previous note.\n\n","Extra rule for encoding:\n","There should be no leading zeros in the 'data bit' section"].join(" "),gen:()=>(0,r.X)(Math.pow(2,4),Math.pow(2,(0,r.X)(1,57))),solver:(e,t)=>{if("number"!=typeof e)throw new Error("solver expected number");return t===(0,i.eP)(e)}},{name:"HammingCodes: Encoded Binary to Integer",difficulty:8,numTries:10,desc:e=>["You are given the following encoded binary string: \n",`'${e}' \n\n`,"Treat it as an extended Hamming code with 1 'possible' error at a random index.\n","Find the 'possible' wrong bit, fix it and extract the decimal value, which is hidden inside the string.\n\n","Note: The length of the binary string is dynamic, but its encoding/decoding follows Hamming's 'rule'\n","Note 2: Index 0 is an 'overall' parity bit. Watch the Hamming code video from 3Blue1Brown for more information\n","Note 3: There's a ~55% chance for an altered Bit. So... MAYBE there is an altered Bit 😉\n","Note: The endianness of the encoded decimal value is reversed in relation to the endianness of the Hamming code. Where","the Hamming code is expressed as little-endian (LSB at index 0), the decimal value encoded in it is expressed as big-endian","(MSB at index 0).\n","Extra note for automation: return the decimal value as a string"].join(" "),gen:()=>{const e=Math.round(Math.random()),t=(0,i.Mk)((0,r.X)(Math.pow(2,4),Math.pow(2,(0,r.X)(1,57)))).split("");if(e){const e=(0,r.X)(0,t.length-1);t[e]="0"==t[e]?"1":"0"}return t.join("")},solver:(e,t)=>{if("string"!=typeof e)throw new Error("solver expected string");return parseInt(t,10)===(0,i.ZH)(e)}},{name:"Proper 2-Coloring of a Graph",difficulty:7,numTries:5,desc:e=>{const t=e;return["You are given the following data, representing a graph:\n",`${JSON.stringify(t)}\n`,'Note that "graph", as used here, refers to the field of graph theory, and has',"no relation to statistics or plotting.","The first element of the data represents the number of vertices in the graph.",`Each vertex is a unique number between 0 and ${t[0]-1}.`,"The next element of the data represents the edges of the graph.","Two vertices u,v in a graph are said to be adjacent if there exists an edge [u,v].","Note that an edge [u,v] is the same as an edge [v,u], as order does not matter.","You must construct a 2-coloring of the graph, meaning that you have to assign each",'vertex in the graph a "color", either 0 or 1, such that no two adjacent vertices have',"the same color. Submit your answer in the form of an array, where element i","represents the color of vertex i. If it is impossible to construct a 2-coloring of","the given graph, instead submit an empty array.\n\n","Examples:\n\n","Input: [4, [[0, 2], [0, 3], [1, 2], [1, 3]]]\n","Output: [0, 0, 1, 1]\n\n","Input: [3, [[0, 1], [0, 2], [1, 2]]]\n","Output: []"].join(" ")},gen:()=>{const e=Math.floor(5*Math.random())+3,t=Math.floor(5*Math.random())+3,n=[];for(let r=0;r.5&&n.push([r,e+a]);let r=Math.floor(Math.random()*(e+t)),a=Math.floor(Math.random()*(e+t));function o(e){for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}}r>a&&([r,a]=[a,r]),r==a||n.includes([r,a])||n.push([r,a]);const i=Array.from(Array(e+t).keys());o(i);for(let e=0;en[e][1]&&([n[e][0],n[e][1]]=[n[e][1],n[e][0]]);return o(n),[e+t,n]},solver:(e,t)=>{function n(e){const t=r[1].filter((t=>{let[n]=t;return n==e})).map((e=>{let[,t]=e;return t})),n=r[1].filter((t=>{let[,n]=t;return n==e})).map((e=>{let[t]=e;return t}));return t.concat(n)}const r=e,a=l(t);if(""===a){const e=Array(r[0]).fill(void 0);for(;e.some((e=>void 0===e));){const t=e.findIndex((e=>void 0===e));e[t]=0;const r=[t];for(;r.length>0;){const t=r.pop()||0,a=n(t);for(const n in a){const o=a[n];if(void 0===e[o])0===e[t]?e[o]=1:e[o]=0,r.push(o);else if(e[o]===e[t])return!0}}}return!1}const o=a.split(",").map((e=>parseInt(e)));if(o.length==r[0]){const e=r[1],t=[0,1];return e.every((e=>{let[n,r]=e;const a=o[n],i=o[r];return t.includes(a)&&t.includes(i)&&a!=i}))}return!1}},{name:"Compression I: RLE Compression",difficulty:2,numTries:10,desc:e=>["Run-length encoding (RLE) is a data compression technique which encodes data as a series of runs of","a repeated single character. Runs are encoded as a length, followed by the character itself. Lengths","are encoded as a single ASCII digit; runs of 10 characters or more are encoded by splitting them","into multiple runs.\n\n","You are given the following input string:\n",`    ${e}\n`,"Encode it using run-length encoding with the minimum possible output length.\n\n","Examples:\n","    aaaaabccc            ->  5a1b3c\n","    aAaAaA               ->  1a1A1a1A1a1A\n","    111112333            ->  511233\n","    zzzzzzzzzzzzzzzzzzz  ->  9z9z1z  (or 9z8z2z, etc.)\n"].join(" "),gen:()=>{const e=50+Math.floor(25*(Math.random()+Math.random()));let t="";for(;t.length{if("string"!=typeof e)throw new Error("solver expected string");if(t.length%2!=0)return!1;let n="";for(let e=0;e+19)return!1;n+=t[e+1].repeat(r)}if(n!==e)return!1;let r=0;for(let t=0;t0;)n-=9,r+=2}return t.length<=r}},{name:"Compression II: LZ Decompression",difficulty:4,numTries:10,desc:e=>["Lempel-Ziv (LZ) compression is a data compression technique which encodes data using references to","earlier parts of the data. In this variant of LZ, data is encoded in two types of chunk. Each chunk","begins with a length L, encoded as a single ASCII digit from 1 to 9, followed by the chunk data,","which is either:\n\n","1. Exactly L characters, which are to be copied directly into the uncompressed data.\n","2. A reference to an earlier part of the uncompressed data. To do this, the length is followed","by a second ASCII digit X: each of the L output characters is a copy of the character X","places before it in the uncompressed data.\n\n","For both chunk types, a length of 0 instead means the chunk ends immediately, and the next character","is the start of a new chunk. The two chunk types alternate, starting with type 1, and the final","chunk may be of either type.\n\n","You are given the following LZ-encoded string:\n",`    ${e}\n`,"Decode it and output the original string.\n\n","Example: decoding '5aaabb450723abb' chunk-by-chunk\n","    5aaabb           ->  aaabb\n","    5aaabb45         ->  aaabbaaab\n","    5aaabb450        ->  aaabbaaab\n","    5aaabb45072      ->  aaabbaaababababa\n","    5aaabb450723abb  ->  aaabbaaababababaabb"].join(" "),gen:()=>(0,o.yH)((0,o._p)()),solver:(e,t)=>{if("string"!=typeof e)throw new Error("solver expected string");return t===(0,o.KH)(e)}},{name:"Compression III: LZ Compression",difficulty:10,numTries:10,desc:e=>["Lempel-Ziv (LZ) compression is a data compression technique which encodes data using references to","earlier parts of the data. In this variant of LZ, data is encoded in two types of chunk. Each chunk","begins with a length L, encoded as a single ASCII digit from 1 to 9, followed by the chunk data,","which is either:\n\n","1. Exactly L characters, which are to be copied directly into the uncompressed data.\n","2. A reference to an earlier part of the uncompressed data. To do this, the length is followed","by a second ASCII digit X: each of the L output characters is a copy of the character X","places before it in the uncompressed data.\n\n","For both chunk types, a length of 0 instead means the chunk ends immediately, and the next character","is the start of a new chunk. The two chunk types alternate, starting with type 1, and the final","chunk may be of either type.\n\n","You are given the following input string:\n",`    ${e}\n`,"Encode it using Lempel-Ziv encoding with the minimum possible output length.\n\n","Examples (some have other possible encodings of minimal length):\n","    abracadabra     ->  7abracad47\n","    mississippi     ->  4miss433ppi\n","    aAAaAAaAaAA     ->  3aAA53035\n","    2718281828      ->  627182844\n","    abcdefghijk     ->  9abcdefghi02jk\n","    aaaaaaaaaaaa    ->  3aaa91\n","    aaaaaaaaaaaaa   ->  1a91031\n","    aaaaaaaaaaaaaa  ->  1a91041"].join(" "),gen:()=>(0,o._p)(),solver:(e,t)=>{if("string"!=typeof e)throw new Error("solver expected string");return(0,o.KH)(t)===e&&t.length<=(0,o.yH)(e).length}},{desc:e=>{if(!Array.isArray(e))throw new Error("data should be array of string");const t=e;return["Caesar cipher is one of the simplest encryption technique.","It is a type of substitution cipher in which each letter in the plaintext ","is replaced by a letter some fixed number of positions down the alphabet.","For example, with a left shift of 3, D would be replaced by A, ","E would become B, and A would become X (because of rotation).\n\n","You are given an array with two elements:\n",`  ["${t[0]}", ${t[1]}]\n`,"The first element is the plaintext, the second element is the left shift value.\n\n","Return the ciphertext as uppercase string. Spaces remains the same."].join(" ")},difficulty:1,gen:()=>[["ARRAY","CACHE","CLOUD","DEBUG","EMAIL","ENTER","FLASH","FRAME","INBOX","LINUX","LOGIC","LOGIN","MACRO","MEDIA","MODEM","MOUSE","PASTE","POPUP","PRINT","QUEUE","SHELL","SHIFT","TABLE","TRASH","VIRUS"].sort((()=>Math.random()-.5)).slice(0,5).join(" "),Math.floor(25*Math.random()+1)],name:"Encryption I: Caesar Cipher",numTries:10,solver:(e,t)=>{if(!Array.isArray(e))throw new Error("data should be array of string");const n=e;return[...n[0]].map((e=>" "===e?e:String.fromCharCode((e.charCodeAt(0)-65-n[1]+26)%26+65))).join("")===t}},{desc:e=>{if(!Array.isArray(e))throw new Error("data should be array of string");const t=e;return["Vigenère cipher is a type of polyalphabetic substitution. It uses ","the Vigenère square to encrypt and decrypt plaintext with a keyword.\n\n","  Vigenère square:\n","         A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \n","       +----------------------------------------------------\n","     A | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \n","     B | B C D E F G H I J K L M N O P Q R S T U V W X Y Z A \n","     C | C D E F G H I J K L M N O P Q R S T U V W X Y Z A B\n","     D | D E F G H I J K L M N O P Q R S T U V W X Y Z A B C\n","     E | E F G H I J K L M N O P Q R S T U V W X Y Z A B C D\n","                ...\n","     Y | Y Z A B C D E F G H I J K L M N O P Q R S T U V W X\n","     Z | Z A B C D E F G H I J K L M N O P Q R S T U V W X Y\n\n","For encryption each letter of the plaintext is paired with the corresponding letter of a repeating keyword.","For example, the plaintext DASHBOARD is encrypted with the keyword LINUX:\n","   Plaintext: DASHBOARD\n","   Keyword:   LINUXLINU\n","So, the first letter D is paired with the first letter of the key L. Therefore, row D and column L of the ","Vigenère square are used to get the first cipher letter O. This must be repeated for the whole ciphertext.\n\n","You are given an array with two elements:\n",`  ["${t[0]}", "${t[1]}"]\n`,"The first element is the plaintext, the second element is the keyword.\n\n","Return the ciphertext as uppercase string."].join(" ")},difficulty:2,gen:()=>[["ARRAY","CACHE","CLOUD","DEBUG","EMAIL","ENTER","FLASH","FRAME","INBOX","LINUX","LOGIC","LOGIN","MACRO","MEDIA","MODEM","MOUSE","PASTE","POPUP","PRINT","QUEUE","SHELL","SHIFT","TABLE","TRASH","VIRUS"].sort((()=>Math.random()-.5)).slice(0,5).join(""),["ALGORITHM","BANDWIDTH","BLOGGER","BOOKMARK","BROADBAND","BROWSER","CAPTCHA","CLIPBOARD","COMPUTING","COMMAND","COMPILE","COMPRESS","COMPUTER","CONFIGURE","DASHBOARD","DATABASE","DESKTOP","DIGITAL","DOCUMENT","DOWNLOAD","DYNAMIC","EMOTICON","ENCRYPT","EXABYTE","FIREWALL","FIRMWARE","FLAMING","FLOWCHART","FREEWARE","GIGABYTE","GRAPHICS","HARDWARE","HYPERLINK","HYPERTEXT","INTEGER","INTERFACE","INTERNET","ITERATION","JOYSTICK","JUNKMAIL","KEYBOARD","KEYWORD","LURKING","MACINTOSH","MAINFRAME","MALWARE","MONITOR","NETWORK","NOTEBOOK","COMPUTER","OFFLINE","OPERATING","PASSWORD","PHISHING","PLATFORM","PODCAST","PRINTER","PRIVACY","PROCESS","PROGRAM","PROTOCOL","REALTIME","RESTORE","RUNTIME","SCANNER","SECURITY","SHAREWARE","SNAPSHOT","SOFTWARE","SPAMMER","SPYWARE","STORAGE","TERMINAL","TEMPLATE","TERABYTE","TOOLBAR","TYPEFACE","USERNAME","UTILITY","VERSION","VIRTUAL","WEBMASTER","WEBSITE","WINDOWS","WIRELESS","PROCESSOR"].sort((()=>Math.random()-.5))[0]],name:"Encryption II: Vigenère Cipher",numTries:10,solver:(e,t)=>{if(!Array.isArray(e))throw new Error("data should be array of string");const n=e;return[...n[0]].map(((e,t)=>" "===e?e:String.fromCharCode((e.charCodeAt(0)-130+n[1].charCodeAt(t%n[1].length))%26+65))).join("")===t}}]},22573:(e,t,n)=>{"use strict";function r(){return new Promise(((e,t)=>{window.indexedDB||t("Indexed DB does not exists");const n=window.indexedDB.open("bitburnerSave",1);n.onupgradeneeded=function(){this.result.createObjectStore("savestring")},n.onerror=function(e){t(`Failed to get IDB ${e}`)},n.onsuccess=function(){const n=this.result;n?e(n.transaction(["savestring"],"readwrite").objectStore("savestring")):t("database loading result was undefined")}}))}function a(){return new Promise(((e,t)=>{r().then((t=>new Promise(((e,n)=>{const r=t.get("save");r.onerror=function(e){n("Error in Database request to get savestring: "+e)},r.onsuccess=function(){e(this.result)}})).then((t=>e(t))))).catch((e=>t(e)))}))}function o(e){return r().then((t=>new Promise(((n,r)=>{const a=t.put(e,"save");a.onerror=function(e){r("Error saving game to IndexedDB: "+e)},a.onsuccess=()=>n()}))))}function i(){return r().then((e=>{e.delete("save")}))}n.d(t,{TT:()=>i,a1:()=>o,zD:()=>a})},2827:(e,t,n)=>{"use strict";n.d(t,{D:()=>Z});var r=n(49802),a=n(33244),o=n(99745),i=n(16264),s=n(58297),l=n(72938),c=n(58427),u=n(78573),m=n(94542),f=n(52947),h=n(24815),d=n(99363),p=(n(43196),n(509)),g=n(29538),y=n(40780),b=n(72198),v=n(7872),k=n(49173),w=n(34716),E=n(97467),S=n(51087),C=n(22115),x=n(35102),N=n(65065),M=n(72360),A=n(50411),T=n(17365),L=n(95173),R=n(43074),F=n(93573),_=n(30518),I=n(67294),P=n(91893),B=n(81138),O=n(56798),D=n(32369);const Z={_lastUpdate:(new Date).getTime(),updateGame:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const t=e*l.t.MilliPerCycle;null==k.J5.totalPlaytime&&(k.J5.totalPlaytime=0),null==k.J5.playtimeSinceLastAug&&(k.J5.playtimeSinceLastAug=0),null==k.J5.playtimeSinceLastBitnode&&(k.J5.playtimeSinceLastBitnode=0),k.J5.totalPlaytime+=t,k.J5.playtimeSinceLastAug+=t,k.J5.playtimeSinceLastBitnode+=t,N.o.process(e),k.J5.processWork(e),k.J5.hasWseAccount&&(0,x.aW)(e),k.J5.gang&&k.J5.gang.process(e),u.y$.process(e),k.J5.corporation&&(k.J5.corporation.storeCycles(e),k.J5.corporation.process()),k.J5.bladeburner&&k.J5.bladeburner.storeCycles(e),k.J5.sleeves.forEach((t=>t.process(e))),Z.decrementAllCounters(e),Z.checkCounters(),(0,v.K7)(e),(0,g.ZQ)(e)},Counters:{autoSaveCounter:300,updateSkillLevelsCounter:10,updateDisplays:3,updateDisplaysLong:15,updateActiveScriptsDisplay:5,createProgramNotifications:10,augmentationsNotifications:10,checkFactionInvitations:100,passiveFactionGrowth:5,messages:150,mechanicProcess:5,contractGeneration:3e3,achievementsCounter:60},decrementAllCounters:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;for(const[t,n]of Object.entries(Z.Counters)){if(void 0===n)throw new Error("counter should not be undefined");Z.Counters[t]=n-e}},checkCounters:function(){if(Z.Counters.autoSaveCounter<=0&&(null==S.Z.AutosaveInterval&&(S.Z.AutosaveInterval=60),0===S.Z.AutosaveInterval?(function(){if(S.Z.SuppressAutosaveDisabledWarnings)return;if([h.T3.Recovery,h.T3.ImportSave].includes(f.F.page()))return;const e=I.createElement(I.Fragment,null,"Auto-saves are ",I.createElement("strong",null,"disabled"),"!",I.createElement(O.Z,{sx:{ml:1},color:"warning",size:"small",onClick:()=>{S.Z.AutosaveInterval=60}},"Enable"));D.sC.emit(e,a.ToastVariant.WARNING,5e3)}(),Z.Counters.autoSaveCounter=300):(Z.Counters.autoSaveCounter=5*S.Z.AutosaveInterval,w.Ex.saveGame(!S.Z.SuppressSavedGameToast))),Z.Counters.checkFactionInvitations<=0){const e=k.J5.checkForFactionInvitations();if(e.length>0){const t=e[Math.floor(Math.random()*e.length)];(0,m.kl)(t)}Z.Counters.checkFactionInvitations=100}if(Z.Counters.passiveFactionGrowth<=0){const e=Math.floor(5-Z.Counters.passiveFactionGrowth);(0,m.AM)(e),Z.Counters.passiveFactionGrowth=5}if(Z.Counters.messages<=0&&((0,b.Uc)(),k.J5.hasAugmentation(a.AugmentationName.TheRedPill)?Z.Counters.messages=4500:Z.Counters.messages=150),Z.Counters.mechanicProcess<=0){if(k.J5.bladeburner)try{k.J5.bladeburner.process()}catch(e){(0,R.P)("Exception caught in Bladeburner.process(): "+e)}Z.Counters.mechanicProcess=5}Z.Counters.contractGeneration<=0&&(Math.random()<=.25&&(0,s._q)(),Z.Counters.contractGeneration=3e3),Z.Counters.achievementsCounter<=0&&((0,_.v)(),Z.Counters.achievementsCounter=300)},load:function(e){if((0,F.s)(),(0,P.k)(),(0,i.c)(),(0,w.wc)(e)){C.AR.emit(),(0,o.j2)(),k.J5.reapplyAllAugmentations(),k.J5.reapplyAllSourceFiles(),k.J5.hasWseAccount&&(0,x.nD)(),k.J5.applyEntropy(k.J5.entropy),Z._lastUpdate=(new Date).getTime();const e=k.J5.lastUpdate,t=Z._lastUpdate-e,n=Math.floor(t/l.t.MilliPerCycle),a=Math.floor(t/6e5);let i=0;if(a>100&&(i+=Math.floor(.25*a)),a>0&&a<=100)for(let e=0;ee.process(n)));const b=n*l.t.MilliPerCycle;k.J5.totalPlaytime??(k.J5.totalPlaytime=0),k.J5.playtimeSinceLastAug??(k.J5.playtimeSinceLastAug=0),k.J5.playtimeSinceLastBitnode??(k.J5.playtimeSinceLastBitnode=0),k.J5.totalPlaytime+=b,k.J5.playtimeSinceLastAug+=b,k.J5.playtimeSinceLastBitnode+=b,k.J5.lastUpdate=Z._lastUpdate,Z.start();const w=(0,r.UF)(b);setTimeout((()=>L.e.emit(I.createElement(I.Fragment,null,I.createElement(B.Z,null,"Offline for ",w,". While you were offline:"),I.createElement("ul",null,I.createElement("li",null,I.createElement(B.Z,null,"Your scripts generated ",I.createElement(M.W,{money:h}))),I.createElement("li",null,I.createElement(B.Z,null,"Your Hacknet Nodes generated ",y)),I.createElement("li",null,I.createElement(B.Z,null,"You gained ",I.createElement(T.Y,{reputation:f})," reputation divided amongst your factions")))))),250)}else C.AR.emit(),(0,o.j2)(),Z.start(),k.J5.init(),(0,E.Bj)(k.J5.getHomeComputer()),k.J5.reapplyAllAugmentations(),(0,y.mp)();(0,d.h)()},start:function(){const e=(new Date).getTime();let t=e-Z._lastUpdate;const n=t%l.t.MilliPerCycle;t=Math.floor(t/l.t.MilliPerCycle),t>0&&(Z._lastUpdate=e-n,k.J5.lastUpdate=e-n,Z.updateGame(t)),window.setTimeout(Z.start,l.t.MilliPerCycle-n)}}},90936:(e,t,n)=>{"use strict";function r(){try{return"de5ebc993"}catch{return"DEV"}}n.d(t,{v:()=>r})},73681:(e,t,n)=>{"use strict";var r=n(67294),a=n(73935),o=n(10425),i=n(77888),s=n(10333),l=n(60468);(0,s.jw)(),globalThis.React=r,globalThis.ReactDOM=a,a.render(r.createElement(o.On,null,r.createElement(i.a,null)),document.getElementById("root")),setTimeout(l.j,2e3),o.bS.subscribe((function(){(0,o.Rl)(),a.render(r.createElement(o.On,null,r.createElement(i.a,null)),document.getElementById("root"))})),location.href.startsWith("file://")||(window.onbeforeunload=function(){return"Your work will be lost."}),window.print=()=>{throw new Error("You accidentally called window.print instead of ns.print")},window.prompt=()=>{throw new Error("You accidentally called window.prompt instead of ns.prompt")}},20145:(e,t,n)=>{"use strict";n.d(t,{a:()=>r});const r=e=>(e=>Number.isInteger(e))(e)&&e>0},93542:(e,t,n)=>{"use strict";n.d(t,{s:()=>s});var r=n(67294),a=n(61718),o=n(26043),i=n(81138);function s(e){return r.createElement(r.Fragment,null,r.createElement(i.Z,null,"This page displays a list of all of your scripts that are currently running across every machine. It also provides information about each script's production. The scripts are categorized by the hostname of the servers on which they are running."),r.createElement(a.A,null),r.createElement(o.E,e))}},59656:(e,t,n)=>{"use strict";n.d(t,{M:()=>c});var r=n(67294),a=n(94004),o=n(30527),i=n(93542),s=n(72756),l=n(88775);function c(e){const[t,n]=(0,r.useState)("active");return(0,l.S)(400),r.createElement(r.Fragment,null,r.createElement(a.Z,{variant:"fullWidth",value:t,onChange:function(e,t){n(t)},sx:{minWidth:"fit-content",maxWidth:"25%"}},r.createElement(o.Z,{label:"Active",value:"active"}),r.createElement(o.Z,{label:"Recently Killed",value:"recent"})),"active"===t&&r.createElement(i.s,{workerScripts:e.workerScripts}),"recent"===t&&r.createElement(s.a,null))}},30418:(e,t,n)=>{"use strict";n.d(t,{D:()=>x});var r=n(67294),a=n(22115),o=n(47542),i=n(7272),s=n(49557),l=n(46948),c=n(30120),u=n(28881),m=n(81138),f=n(56798),h=n(95309),d=n(61702),p=n(77541),g=n(51627),y=n(60181),b=n(23508),v=n(49802),k=n(72326),w=n(72360),E=n(85882),S=n(85167);const C=(0,p.Z)({noborder:{borderBottom:"none"}});function x(e){const t=C(),[n,p]=r.useState(!1),x=e.recentScript,N=x.runningScript.onlineMoneyMade/x.runningScript.onlineRunningTime,M=x.runningScript.onlineExpGained/x.runningScript.onlineRunningTime;return r.createElement(r.Fragment,null,r.createElement(h.Z,{onClick:()=>p((e=>!e)),component:u.Z},r.createElement(d.Z,{primary:r.createElement(m.Z,null,"└ ",x.runningScript.filename," (died"," ",(0,v.UF)((new Date).getTime()-x.timeOfDeath.getTime())," ago)")}),n?r.createElement(y.Z,{color:"primary"}):r.createElement(b.Z,{color:"primary"})),r.createElement(g.Z,{in:n,timeout:0,unmountOnExit:!0},r.createElement(c.Z,{mx:6},r.createElement(o.Z,{padding:"none",size:"small"},r.createElement(l.Z,null,r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(m.Z,null,"└ Threads:")),r.createElement(i.Z,{className:t.noborder},r.createElement(m.Z,null,(0,a.jL)(x.runningScript.threads)))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder,colSpan:2},r.createElement(m.Z,null,"└ Args: ",(0,k.N)(x.runningScript.args)))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(m.Z,null,"└ Online Time:")),r.createElement(i.Z,{className:t.noborder},r.createElement(m.Z,null,(0,v.UF)(1e3*x.runningScript.onlineRunningTime)))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(m.Z,null,"└ Offline Time:")),r.createElement(i.Z,{className:t.noborder},r.createElement(m.Z,null,(0,v.UF)(1e3*x.runningScript.offlineRunningTime)))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(m.Z,null,"└ Total online production:")),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(m.Z,null,r.createElement(w.W,{money:x.runningScript.onlineMoneyMade})))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder,colSpan:1}),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(m.Z,null," ",(0,a.Mf)(x.runningScript.onlineExpGained)+" hacking exp"))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(m.Z,null,"└ Online production rate:")),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(m.Z,null,r.createElement(E.G,{money:N})))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder,colSpan:1}),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(m.Z,null," ",(0,a.Mf)(M)+" hacking exp / sec"))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(m.Z,null,"└ Total offline production:")),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(m.Z,null,r.createElement(w.W,{money:x.runningScript.offlineMoneyMade})))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder,colSpan:1}),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(m.Z,null," ",(0,a.Mf)(x.runningScript.offlineExpGained)+" hacking exp"))))),r.createElement(f.Z,{onClick:function(){S.ki.emit(x.runningScript)}},"LOG"))))}},72756:(e,t,n)=>{"use strict";n.d(t,{a:()=>s});var r=n(67294),a=n(81138),o=n(71828),i=n(30418);function s(){return r.createElement(r.Fragment,null,r.createElement(a.Z,null,"List of all recently killed scripts."),o.$.map((e=>r.createElement(i.D,{key:e.runningScript.pid,recentScript:e}))))}},61718:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(67294),a=n(72360),o=n(85882),i=n(49173),s=n(81138),l=n(77541),c=n(73327),u=n(47542),m=n(46948),f=n(7272),h=n(49557);const d=(0,l.Z)((e=>(0,c.Z)({cell:{borderBottom:"none",padding:e.spacing(1),margin:e.spacing(1),whiteSpace:"nowrap"},size:{width:"1px"}})));function p(){const e=d(),t=i.J5.scriptProdSinceLastAug/(i.J5.playtimeSinceLastAug/1e3);return r.createElement(u.Z,{size:"small",classes:{root:e.size}},r.createElement(m.Z,null,r.createElement(h.Z,null,r.createElement(f.Z,{component:"th",scope:"row",classes:{root:e.cell}},r.createElement(s.Z,{variant:"body2"},"Total production since last Augment Installation:")),r.createElement(f.Z,{align:"left",classes:{root:e.cell}},r.createElement(s.Z,{variant:"body2"},r.createElement(a.W,{money:i.J5.scriptProdSinceLastAug}))),r.createElement(f.Z,{align:"left",classes:{root:e.cell}},r.createElement(s.Z,{variant:"body2"},"(",r.createElement(o.G,{money:t}),")")))))}},93087:(e,t,n)=>{"use strict";n.d(t,{c:()=>d});var r=n(67294),a=n(81138),o=n(95309),i=n(61702),s=n(28881),l=n(30120),c=n(51627),u=n(23508),m=n(60181),f=n(7806),h=n(93826);function d(e){const[t,n]=r.useState(!1),d=e.server,p=`${d.hostname}${" ".repeat(18)}`.slice(0,Math.max(d.hostname.length,18)),g={progress:d.ramUsed/d.maxRam,totalTicks:30},y=`${p} ${(0,h.x)(g)}`;return r.createElement(l.Z,{component:s.Z},r.createElement(o.Z,{onClick:()=>n((e=>!e))},r.createElement(i.Z,{primary:r.createElement(a.Z,{style:{whiteSpace:"pre-wrap"}},y)}),t?r.createElement(m.Z,{color:"primary"}):r.createElement(u.Z,{color:"primary"})),r.createElement(l.Z,{mx:2},r.createElement(c.Z,{in:t,timeout:0,unmountOnExit:!0},r.createElement(f.j,{workerScripts:e.workerScripts}))))}},7806:(e,t,n)=>{"use strict";n.d(t,{j:()=>c});var r=n(67294),a=n(79255),o=n(97212),i=n(35300),s=n(77885),l=n(51087);function c(e){const[t,n]=(0,r.useState)(0),[c,u]=(0,r.useState)(l.Z.ActiveScriptsScriptPageSize);return r.createElement(r.Fragment,null,r.createElement(o.Z,{dense:!0,disablePadding:!0},e.workerScripts.slice(t*c,t*c+c).map((e=>r.createElement(a.l,{key:`${e.pid}`,workerScript:e})))),r.createElement(i.Z,{rowsPerPageOptions:[10,15,20,100],component:"div",count:e.workerScripts.length,rowsPerPage:c,page:t,onPageChange:(e,t)=>{n(t)},onRowsPerPageChange:e=>{l.Z.ActiveScriptsScriptPageSize=parseInt(e.target.value,10),u(parseInt(e.target.value,10)),n(0)},ActionsComponent:s.p}))}},26043:(e,t,n)=>{"use strict";n.d(t,{E:()=>p});var r=n(67294),a=n(93087),o=n(66351),i=n(97212),s=n(35300),l=n(97467),c=n(51087),u=n(77885),m=n(42761),f=n(70769),h=n(96486),d=n.n(h);function p(e){const[t,n]=(0,r.useState)(""),[h,p]=(0,r.useState)(0),[g,y]=(0,r.useState)(c.Z.ActiveScriptsServerPageSize),b={};for(const t of e.workerScripts.values()){const e=(0,l.WT)(t.hostname);if(null==e){console.warn(`WorkerScript has invalid hostname: ${t.hostname}`);continue}let n=b[e.hostname];void 0===n&&(b[e.hostname]={server:e,workerScripts:[]},n=b[e.hostname]),void 0!==n&&n.workerScripts.push(t)}const v=(0,f.lr)(d().escapeRegExp(t)),k=Object.values(b).filter((e=>{if(!e)return!1;if(e.server.hostname.includes(t))return!0;for(const t of e.server.runningScriptMap.keys())if(v.test(t))return!0;return!1}));return r.createElement(r.Fragment,null,r.createElement(o.Z,{value:t,onChange:function(e){n(e.target.value),p(0)},autoFocus:!0,InputProps:{startAdornment:r.createElement(m.Z,null),spellCheck:!1}}),r.createElement(i.Z,{dense:!0},k.slice(h*g,h*g+g).map((e=>e&&r.createElement(a.c,{key:e.server.hostname,server:e.server,workerScripts:e.workerScripts})))),r.createElement(s.Z,{rowsPerPageOptions:[10,15,20,100],component:"div",count:k.length,rowsPerPage:g,page:h,onPageChange:(e,t)=>{p(t)},onRowsPerPageChange:e=>{c.Z.ActiveScriptsServerPageSize=parseInt(e.target.value,10),y(parseInt(e.target.value,10)),p(0)},ActionsComponent:u.p}))}},79255:(e,t,n)=>{"use strict";n.d(t,{l:()=>T});var r=n(67294),a=n(22115),o=n(47542),i=n(7272),s=n(49557),l=n(46948),c=n(56798),u=n(30120),m=n(28881),f=n(81138),h=n(92557),d=n(41733),p=n(95309),g=n(61702),y=n(77541),b=n(51627),v=n(60181),k=n(23508),w=n(21951),E=n(39463),S=n(85167),C=n(49802),x=n(72326),N=n(72360),M=n(85882);const A=(0,y.Z)({noborder:{borderBottom:"none"}});function T(e){const t=A(),[n,y]=r.useState(!1),T=e.workerScript.scriptRef,L=w._.bind(null,T.pid),R=T.onlineMoneyMade/T.onlineRunningTime,F=T.onlineExpGained/T.onlineRunningTime;return r.createElement(r.Fragment,null,r.createElement(p.Z,{onClick:()=>y((e=>!e)),component:m.Z},r.createElement(g.Z,{primary:r.createElement(f.Z,null,"└ ",e.workerScript.name," ",JSON.stringify(e.workerScript.args))}),n?r.createElement(v.Z,{color:"primary"}):r.createElement(k.Z,{color:"primary"})),r.createElement(b.Z,{in:n,timeout:0,unmountOnExit:!0},r.createElement(u.Z,{mx:6},r.createElement(o.Z,{padding:"none",size:"small"},r.createElement(l.Z,null,r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(f.Z,null,"└ Threads:")),r.createElement(i.Z,{className:t.noborder},r.createElement(f.Z,null,(0,a.jL)(e.workerScript.scriptRef.threads)))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder,colSpan:2},r.createElement(f.Z,null,"└ Args: ",(0,x.N)(e.workerScript.args)))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(f.Z,null,"└ Online Time:")),r.createElement(i.Z,{className:t.noborder},r.createElement(f.Z,null,(0,C.UF)(1e3*T.onlineRunningTime)))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(f.Z,null,"└ Offline Time:")),r.createElement(i.Z,{className:t.noborder},r.createElement(f.Z,null,(0,C.UF)(1e3*T.offlineRunningTime)))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(f.Z,null,"└ Total online production:")),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(f.Z,null,r.createElement(N.W,{money:T.onlineMoneyMade})))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder,colSpan:1}),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(f.Z,null," ",(0,a.Mf)(T.onlineExpGained)+" hacking exp"))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(f.Z,null,"└ Online production rate:")),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(f.Z,null,r.createElement(M.G,{money:R})))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder,colSpan:1}),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(f.Z,null," ",(0,a.Mf)(F)+" hacking exp / sec"))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder},r.createElement(f.Z,null,"└ Total offline production:")),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(f.Z,null,r.createElement(N.W,{money:T.offlineMoneyMade})))),r.createElement(s.Z,null,r.createElement(i.Z,{className:t.noborder,colSpan:1}),r.createElement(i.Z,{className:t.noborder,align:"left"},r.createElement(f.Z,null," ",(0,a.Mf)(T.offlineExpGained)+" hacking exp"))))),r.createElement(c.Z,{onClick:function(){S.ki.emit(T)}},"LOG"),r.createElement(h.Z,{onClick:function(){L()&&(0,E.X)("Killing script")}},r.createElement(d.Z,{color:"error"})))))}},51674:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,g:()=>l});var r=n(67294),a=n(13342),o=n(48672);const i=["ttftfffttttttttttfffffffttftt1ttttttt111tttt1111111tttt1tt111tttt111111tttt1ttttttttttttttt111111111\nttfttttttttttttttttfLLLftfffffffffftttt111tt11111ttffffftttt1111111111111111ttttttfttttttttt111111t1\nttttttttttttttttffffLfftffffffffLLffttttttftt111ttfffffftttttttt111111ttttttffffttfffttttttt111111tt\nttttttttttttttttfffLfttffffffLLffffttttttttttt1tfffffffffftttttt111111tffffffffftttfffftttt11111ttt1\nttttttttttttffLfttfffttfffffffffttfftttttt1t1tt11tfffffftttttt111t111111ttffffLLffttfffftt111111tttt\nttttttttttffLLLLfttttffLLLfttttftfLftttttttffffttttffffttttfftt11t111tt111ttfffLffttfftttttt1111tttt\nttttttttffLLLLLLLffttfLLffttfffftfLfttttttffttt11111ttttffffffftt1111tft11111ttffffttt11tfftt11ttttt\ntttttttfffLLLLLLLLfftffttttffLffftfftttttft1i;;::::;iitffffffffftt111tft1tttt1ttffLfttttfffffttttttt\ntttttttfffLLLLLLLLfttttffftffffftfttttttff1:,,,,,,,,::itfffffffft11111111ttttttttttt1tfffffffffffttt\ntttffttffLLLLLLLLLfttfftffffffffLLLftttttt;::,:::;;;;::1tfffftfft11111ttt1ttt1tfttt11ttffffffffLfttt\ntffffffffLLLLLLLffftfLfffttfLLffLLLfttttti;;;iii11111;:i11ttffft111111tfft11t11tt1tttttfffLLLLLLfttf\ntfffffttttfLLLffttttfffffttLLLLfLLLftttfti:;;;iiiiiiii;it111tt111t1111tffttfftt11ttftttfffLLLLLLffff\nttttfttttffffftttttttttttttfLLLffLLfttttt1;;;;;;iiiiii;1tft11tt1111111tfftfffftttttttttttfLLfffttfff\ntfffffffffftttfffffffffttffttLLfffLfttttt11i;;;;iiiiiii1tt11tfftt11111ttt1fffttt1tttttttttfffftttttt\nttffffffffftttfffffffffttffftffttftttttff1ii;;;;iii1iii111tt1ttttt1111t111ffttffttfffffLffttttffffff\nttffffffffttttffffffffttttttttttffftttttft1ii;;;ii1iii111tfft11ttt111111t1tt1tfft1ttffffLLftttLLLLLL\ntttffffffffttfffffffftttttttt11fffftttt1t111iiii;iiiii11ttffft11111111ttttttt1tt11ttffffLfftttfLLLLf\ntttttttffffttfffttttttttffttt11tffttttttt11ttii;;;iiii11i1ffftt1111111tttt111tttt11ttttffffftffLLLff\ntfttttttttttttttttttttfffftttt11tfftttttt111t1i;;;iiii1i,,:;i1111t1111ttt111t1tfftt11111ttfftffffftt\nttttfffftttttttfffftttffffttffttttft111tt11111i;;;iiii1;,,....,:::;i11tt111tt11tffftttttttt1tttttttt\nt11ttffffftttffffffttttfffttffttttft1111111111;;;;;;;it;,...........,:it111ttt1tffftttttfft11ttfffff\ntt1ttfffftt1ttfffft111tffttfttttttt1111t1i;:;11i1i;;1t1:,,............,itt11tt1tfftt1tfffffft1tffLLf\ntfttttfttttt11tttt1ttt11ttttttftt111111i:,..:1111iii11;,...............;tt111t11ttttttttffttt11ffLLf\ntfftttttttfftttttttffftt111ttffftt11i;,.,...,iiii;;;;:,,...............:1ttt1111ttfffttttft1tt1ttfft\nttttttttttttttt11ttttttttttfffffft1:,..........::::::,,,...............,1ttttt11ttfffffttttffftttttt\ntfffttttffffftt11ttttttttttfffffft1:...........:;::;:..................,1tttttt1ttfffffttttttttftttf\ntfffttttfffffft1ttftttfftttttffft11:...........,:::::..................,1tttft11tfffffffttfffffffttf\ntfffttttffffff11tttttttttttttttttt1;...........,::::,...................;t1t1111tfffffLfttfffffffttf\ntfffttttfftttt11tttttttt1tfftttttt1:...........,::::,...... ............,1111tt11fffffLftttffttffttf\ntttttttttttttt11tttttttt1tffftttft1:...........,:::,,....................it1ttt11tfffffftttffttffttt\nttttt1tttttttt11ttttttttttffttttttt:...........,::,,.....................:111tt11tttttttt1tttttttttt\nttttt1tttttttt11tftttttftttttttttt1;,:;:.......,:,,,....................,,1111t11ttttttt11ttttttfttt\n1tttt1ttfffttt11ttffffffttttfffft11ii1i:.......,:,,,.....................,1tt1111ttttttt111tttttfttt\n1ttt11tttttttt11tttttttttttttttttti;;;;:.......,:,,,....... .............,itt1111tttt11t111ttttttt1t\n111111tttttttt11111111ttttttttttt1i;;;;:.......,:,,,......................itt11111111111111111111111\n1111111111111111111111ttttttttttt1;;;;;:...... ,:,,,,.....................itt11t11111111111111111111\n1111111111111111111111tttttttttt1;:,::;,...... ,:...,.....................ittttt11111111111111111111\n111111111111111111111111tttttttt1i,..... .... .:........................,i1tttt11111111111111111111\n1111111111111111111111111t11t11111;,....,,.... ,:::,,,...................,11ttttt11t1111111t11111111\n11111111111111111111111111111111111iiiiii. ... .::::::,..................,11t1ttt111t11111tttttt1111\n1111111111111111111111111111111111111111:.,.....::::::,..................:111tttttt1tttt11tttttt1111\n1111111111111111111111111111111111111111:::,...,::::;::,..,,.............:11tt1ttttttttttttttttt1111\n","ttftfffttttttttttffffffftfftttttttttt111tttt1111111ttttttt111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttftfLLLftfffffffffftt11111tt11111ttffffttttt1111111111111111ttttttfttttttttt111111tt\nttftttttttttttttffffLftttfffffffLLLfttttttftt111ttfffffftttttttt111111tttttffffftfffftttttt1111111tt\nttttttttttttttttfffLLttffffffLLffffttttttttttt1tffffffffffttttttt11111tffffffffftttfffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttfftttttt1tttt1ttftfffftt1ttt111t111111ttffffLLffttfffft1111111tttt\nttttttttttffLLLLfttttffLLLfttttttfLftttttttfft11i;;:;;i11ttfftt11t111tt111tttffffftttttttttt111ttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLttttttfff1;,,,,,,,,:;tffffft11111tft11111ttffffttt11tffftt1ttttt\ntttttttfffLLLLLLLLfftffttttffLffftfftttttfft1;:,,,,,::::,;tffftttt111tft1tttt1ttffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffffftfftttttfffti:;;;iiii11i;:tffffft11111111ttftttttttt1ttffffffffffttt\ntttffttffLLLLLLLLLftffftfLftfftfLLLftttttfft::i;iiiiii11i:1ffftft11111ttt1ttt1ttttt11ttfffffLLfLfttt\nttfLfffffLLLLLLLLfftfLLfffffLfffLLLfttttt1tt;:;;;;;iiiiiii1tffft11111tffft11t11tt1tttttfffLLLLLLffff\ntffftfttttfLLLffttttfffffttLLLLfLLLftttft111i;;;;;;iiiiii111tt111t1111tffttfftt11tfft1tfffLLLLLLLffL\ntttfftttttffLftttttttttttttfLfLffLLfttttttt1iii;;;;;ii11i1t11t11111111tffttfffttttttt11ttfLLLLffftff\nttfLffffffftttfffffffffttfftfLLfffLftttttfft1ii;;;;iii1i1tt1tfftt11111ttt1tffttt1ttt1tttttffffttffft\nttffffffffftttffffffffttfffftffffftttttfffft111;;;;iiii1111t1ttttt1111tt11ffttfftttfffffLfttttfffffL\nttffffffffttttffffffffttttttttttffftttttttt11ttii;iiiiii11tft11ttt111111t11t1tfft1tfffffLLftttLLLLLL\n1ttffffffffttfffffffftttttttt11ffffttttt1111tftiii;;iiii1;,;1111111111tttt11111111ttffffLfftttffLLLf\nttttttttfffttfffttttttttffttt11tffftttttt11ttf1;;;i;iiii1:,,.,,::;ii11tttt111tttt11ttffffffftffLLLff\ntfttttttttttttttttttttfffftttt11tfftttttt111tt1;;;i;;ii1t:,,........,:;1t111t1tfftt11111ttfftffffftt\ntftttffffttttttfftftttffffttffttttftt11tt111i;;;;;;;;;it1,,............,;11tt11tffffttttttt1tttttttt\ntttttffffftttfffffft1ttffftfffttttft111111;:,.;iii;;;i11,.,.............,1tttt1tffftttttfft111tfffff\n1tttffffftt1ttfffftt11tffttfttttttt1111i;,....,1iii;ii;,................,111tt1tfft11tffffftt1tLffLf\ntftttfftt1ttt1tttt1tttt1ttttttttt1111;:,.......i1;;;:::.................,it11t11ttttttttffftt11fffLf\ntfftttttttfftt1111ttfftt11ttfffftt1ti..........:i;::;:,..................ittt111t1tffttttft1tt1tffft\nttttttttttttttt11tttttttt1tffffffftti,.........,::::::,..................itttt11ttffffftttttfftttttt\ntfffttttfffffft11ttttttttttffffffft1i,.........,:,:::,...................,1tttt11tfffffttttttttffttf\ntfffttttfffffft11tftttfftttttffft1111:.........,:,:::,....................;tt111tfffffffttfffffffttf\ntfffttttfffffft1tttttttftttttttttt111;.........,:,::,,....................,111111fffffLfttfffffffttf\ntffftttttttffft11tttttttttffttttfft11i.........,:.:,,......................:1tt11fffffLftttffttffttf\ntttttttttttttt111ttttttt1tffftttfft111:....... ,:.:,,.......................1tt11tfffffftttffftffttt\nttttt1tttttttt11ttttttttttfttttttft111i,...... ,:,,,,......................,itt11ttttttt11ttttttfttt\nttttt1tttttttt11tfttttfftttttffttt1111i,...... ,:.,,,......................:11111ttttttt11ttttttfttt\n1tttt1ttftfttt11tfffffffttttfffft11111,....... ,,.,,....... ...............it1111ttttttt111tttttfttt\n1tttt1tttttttt11ttttttttttttttttt1111;,....... ,,.,,......................:tt11111ttt11t111ttttttt1t\n11t111tttttttt111t1111tttttttttt1iiii:,,...... ,,.........................;t111111111111111111111111\n111111111tt11111111111ttttttttt1;;iiii:....... ,,............ ...........;tttt1111111111111111111111\n1111111111111111111111ttttttttt1;;;iii;... ....,::::,....,:::,,.........;1ttttt111111111111111111111\n111111111111111111111111tttttttt1i;;ii: .,....,:::::... .;;;;;:,.....,;1ttttttttt111111111111111111\n1111111111111111111111111tt1111111i,,.,:;i: ...,:::::.....:;;;;;:.....,1ttttttttt11t1111111t11111111\n11111111111111111111111111111111111:.:1tti,....,:::::.... ,;;;;;;,.....ittttttttt111t11111ttttt11111\n1111111111111111111111111111111111111ttt;,,....,:::::,... .,;;;;:,.,,..:ttttttttttt1tttt11tttttt1111\n11111111111111111111111111111111111111t1,,,....:;;::::,.....:;;;:......,1ttttttttttttttttttttttt1111\n","ttftffftttttttttffffffLftfftttttttttt111tttt1111111tttt1tt111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttfffLLLftfffffffffttt11111tt11111ttfffft1ttt1111111111111111tttttffttttttttt111111tt\nttftttttttttttttffffLffttfffffffLLLfttttttfttt11tffffffftttttttt111111tttttffffftfffftttttt1111111tt\nttttttttttttttttfffLLttffffffLLffffttttttttttt1ttt1iiiii1tttttttt11111tffffffffftttfffffttt1111t1tt1\nttttttttttttffffttffftffffffffffttffttttt11tttt1i::,,,,,,:;111111t111111ttffffLLffttfLfftt11111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfft1i;,,,,,,,,,:;ttt11t111tt111tttffffftttftttttt111ttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLtttttffffti;::;;;;;iii::1ftt11111tft11111ttffffttt11tffftt1ttttt\ntttttttfffLLLLLLLLLftffttttffLffftffttttffffft;:;iiii11111i:iftttt111ttt1tttt11tffLfttttfffffttttttt\ntttttttffLLLLLLLLLfttttffftffLLftfftttttffffft;:;;;;;iiiiii;1fftt11111111ttftttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttttffffti;;;;;;;ii;iiitffft11111ttt1ttt1tfttt11ttfffffLLfLfttt\nttfLfffffLLLLLLLLffffLLfffffLfffLLLLtttttttff1iii;;i;;iii111tfft111111ffft11t11tt1tttttfffLLLLLLffff\ntffftftttffLLLffttttfffffttLLLLfLLLffttftt11t1iii;;;;;iiiii1tt111t1111tffttfftt11tfft1tfffLLLLLLLfff\nttffftttttffLftttttttttttttfLLLffLLftttttttft111i;;;;iiii1111111111111tffttfffttttttt11ttfLLffffftff\nttfLffffffftttfffffffffttfttfLLfffLftttttfffft11i;;;;iiii1t1ttttt11111ttt1tffttt11ttttttttfffftfttft\nttffffffffftttffffffffttfffftffffftttttfffft11t1i;;;;;iii1ii1ttttt1111t111ffttfft1tfffffLfttttfffffL\nttffffffffttttffffffffttttttttttffftttttttt11tft1i;;;;iii1i,:;i1ttt11111t11t1tfft1ttffffLLfttfLLLLLL\ntttffffffffttfffffffftttttttt11ffffttttt1111tfti;ii;;iiii1;,,...,:;ii1tttt1111tt11ttffffffftttffLLLf\nttttttttfffttfffttttttttffttt11tffftttttt11t1iii;;ii;;;i1t:,.........,:;1t111ttt111ttffffffftffLLLLf\ntfttttttttttttttttttttfffftttt11tfftt11tt1i:,.:;;;i;;;itti,,............,;1111ttttt11111ttfftffffftt\ntfttfffftttttttfffftttffffttffttttft1111i:....,;;;ii;i11;.,,.............:1tt1ttffffttttttt1ttttttft\ntttttffffftttffftffttttffftfffttttft1i:,.......:;;;;;;;:,................:tttt1tffftttttfft11ttfffff\n1t1tffffftt1ttfffftt11tffttftttttttt1,.........,ii;;;;;,.................:11tt1tfft11tfffffft1fLLfLf\ntftttfftt1ttt1tftt1ttt11ttttttttt111i,.........,11;:;;:,.................,1t1t11ttttttttfftt111fffLf\ntfftttttttffttt111ttfftt11ttffffftt11,.........,i;::::,..................,1tt11111ffft1ttt11tt1tffft\nttttttttttttttt11tttttttt1tffffffft11;..........::::::,...................;tt1111tfffftttttffftttttt\ntfffttttfffffft11ttttttttttffffffft11:..........:::::,..,;:,...............ittt1tttttffttttttttffttf\ntfffttttfffffft11tftttffttttfffft1111:..........:::::,..;1i;:,..............1t11tfffffffttfffffffttf\ntfffttttfffffft1tttttttftttttttttt111;..........::,:,...;ii;;;,.............:1111tffffLfttfffffffttf\ntffftttttttfft11ttttttttttfftttttft11i,.........::,,,...;;;;;i:..............;111tffffLfttfffttffttf\ntttttttttttttt111tttttttttffftttfft11i,.........::,,,...;;;;;i:..............:111tfffffftttffttffttt\ntttttttttttttt11ttttttttttfftttttft111:.........:,,,....::;;;;:.............,1t11ttttttt11tttttffttt\nttttt1tttttttt11tfttttfftttttfftttt111:.........:,,,......,::::..,.........,i1111ttttttt11ttttttfttt\n1tttt1ttfttttt11tfffffffttttfffft1111i:,........:,,,..... .......,,...... .it1111ttttttt111tttttft1t\n1tttt1tttttttt11ttttttttttttttttt1iiii;,........:........... ...........:itt11111ttt1t1111ttttttt1t\n111111tttttttt111tt111tttttttttti;;;iii:... ....:,,...................:i1tttt11111111111111111111111\n111111111tt11111111111tttttttttt1;;;;;;;. .,....::::..................:1tttttt1111111111111111111111\n1111111111111111111111ttttttttttt1i;;::..:;1,...::::...................;ttttttt111111111111111111111\n1111111111111111111111111tttttttt111i,.,it1;....::::,..................,1ttttttttt111111111111111111\n1111111111111111111111111tttt11111111ii1t1i:...,::::,........,..........itttttttt11t1111111tt1t11111\n11111111111111111111111111111111111111tt1;:....::::;:.......,...........:1ttttttt111t11111ttttt11111\n111111111111111111111111111111111111111ti,,....:;:;::,..................,ittttttttt1tttt11tttttt1111\n111111111111111111111111111111111111111t:,:.,.:;;;;:::,..................;111t1ttttttttttttttttt1111\n","ttftffftttttttttffffffLftfftttttttttt111tttt1111111tttt11t111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttfffLLLftfffffffffttttt1111t11111ttffffftttt1111111111111111tttttfftttttttt1111111tt\nttftttttttttttttffffLffttffffffffLLfttttttfttt11ttt1iiii;i11tttt111111tttttffffftffffttttttt111111tt\nttttttttttttttttfffLLttffffffLLffffttttttttttt1tt1::,,,,,,:;1ttt111111tfftfffffftttfffffttt1111t1tt1\nttttttttttttffffttffftffffffffffttfftttttt1ttt11i;:,,,,,,,,,:1111t1111111tffffLLffttfLfftt11111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttffft1;:::;;;;;;;::it11t111tt111tttffffftttfttttt1111ttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLtttttfffffti:;;ii111111i:itt11111tft11111ttffffttt1ttffftt1ttttt\ntttttttfffLLLLLLLLLftffftttffLffftffttttfffffft;:;;;;;iiiiii;ittt1111ttt1tttt11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLLftfftttttffffffti;;;;;;;ii;iiitttt11111111ttftttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttttfffff1iii;;i;;i1i1i1tttt11111ttt1ttt1tfttt111tfffffLLfLfttt\nttfLffffffLLLLLLLffffLLfffffLfffLLLftttttttfft1i;;;;;;;iiiiitfft111111ffft11t11tt1tttttffffLLLLLffft\ntffftfttttfLLLffttttffffftfLLLLfLLLftttftt1111111i;;;;iiii111t111t1111tffttfftt11tfft1tffLLLLLLLLfff\nttffftttttffLftttttttttttttfLLLffLLftttt1tttt11tti;;;iiiii111111111111tffttffftttttttt1ttfLLLfffffff\nttfLffffffftttfffffffffttfttfLLfffLftttttffft1111i;;;;;ii111tfttt11111ttt1tffttt11ttttttttfLfftfttft\nttffffffffftttfffffffffttffftffffftttttfffft11t11i;;;;iii1i:;1ttft11111111ffttfftttfffffLfttttfffffL\nttffffffffttttffffffffttttttttttffftttttft111tttiii;;iiii1;,,,:;i1111111111t1tfft1ttffffLLftttfLLLLL\ntttffffffffttffffffffttttttttttfffftttt1111i;:;iiii;;;i;11:,,.....,:;i1tft1111tt111tffffLfftttffLLLf\nttttttttfffttfffttttttttfftt111tfffttt11i;,,..:i;;;i;ii1t1,,..........,:i1111ttt1111tffffffftffLLLLf\ntfttttttttttttttttttttffffttttt1tffti;:,,.....,;;;iiii1ti,,,.............;1111ttttt11111ttfftffffftt\ntttttffffttttttfffftttffffttffttttf1:.........,;:;;;;;;;,.,,,............:1tt1ttffff11ttttt1ttttttft\ntttttffffftttffftfft1ttffftfffttttf1,..........,;;;;;;;:.:ii;;:,.........:tttt1tfffttttffft111tfffff\n1tttffffftt1ttfffftt11tffttfttttt1t1,...........ii;;;::,,;i;;ii:.........:tttt1tfft11tfffffft1fLLfLf\ntftttffttttt11tftt1tttt1ttttttttt11i,..........,1i;;::,.:i;;;;i:.........,1t1t11ttttttttfftt111fffLf\ntfftttttttffttt11tttffttt1tttffft11i,..........,ii;:::,.,:;;iii:..........it111111tfft1ttt11tt1tffft\nttttttttttttttt11tttttttt1tfffffftti,...........:::::,....:;;ii:..........:tt111ttfffftttttffftttttt\ntfffttttfffffft11ttttttttttfffffft1i,...........:::::,.....,:;;:.... ......,1t111ttttffttttttttffttf\ntfffttttfffffft11tftttffttttfffft111:...........:::::,........,..,..........,1111tffffffttfffffffttf\ntfffttttfffffft1tttttttftttttttttt11:...........::,:,........ ...:;,.........:111tffffLfttfffttffttf\ntffftttttttfft11ttttttttttffttttttti,...........:::,,.............,...........,i1tffffLfttfffttffttf\ntttttttttttttt111tttttttttffftttfft;,:;:........:::,.............. ...........:11tfffffftttffttffttt\ntttttttttttttt11ttttttttttfftttttftii1i;:.......:::,.......... ..............:t111tttttt11tttttffttt\nttttt1tttttttt11tfttttfftttttffttt1ii;ii;,......::,,........................:1111ttttttt11ttttttfttt\n1tttt1ttfttttt11tfffffffttttfffft11i;;ii;,......:,,,..........:........ .;t1111ttttttt111tttttft1t\n1tttt1tttttttt11tttttttttttttttttt11;:;i:,,.....:,.................. .;i;;1tt1111tttt1t1111ttttttt1t\n111111tttttttt111t111ttttttttttttt11i:,,:1;....,::....................:1ttttt11111111111111111111111\n111111111tt1111111111tttttttttttttt11i;;1t:....:::::...................;tttttttt11111111111111111111\n1111111111111111111111ttttttttttttt111ttt1,,,.,:::::,..................,1ttttttt11111111111111111111\n111111111111111111111111tttttttttt1111111i,::.,;::;:,...................;ttttttttt111111111111111111\n1111111111111111111111111ttttttt11111111t;.,,.,;;;;;,...................,1ttttttt11t1111111tttt11111\n111111111111111111111111111111111111111t1:..,,:;;;;;:,...................;ttttttt111t11111ttttt11111\n111111111111111111111111111111111111111ti,,,::;;;;;;;:,..................,1tttttttt1tttt11tttttt1111\n111111111111111111111111111111111111111t;,,::,;;;ii;;::,..................it1tttttttttttttttttt11111\n","ttftffftttttttttffffffLftfftttttttttt111tttt1111111tttt111111tttt1111111ttttttttttttttttttt11111111t\nttfttttttttttttttfffLLLftfffffffffttttt111tt11111ttffffftttt1111111111111111tttttfftttttttt1111111tt\nttftttttttttttttffffLffttfffffffLLLftttttttttt11ttt1iiii;i11tttt111111ttttttfffftffffttttttt111111t1\nttttttttttttttttfffLLttffffffLLffffttttttttttt1ttt;:,,,,,,,:itttt11111tfftfffffftttfffffttt1111t1ttt\nttttttttttttffffttffftffffffffffttfftttttt1tttt11i:,,,,,,,,,:i111t1111111tffffLLffttfLfft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttffft1;::;;;;;;;;;,;t111111tt111tttffffftttftt1tt1111ttttt\nttttttttffLLLLLLLffttfLLffttfffftfLLtttttffffff1,:iiii111111;:tt11111tft11111ttffffttt11tffft11ttttt\ntttttttfffLLLLLLLLLftffftttffLffftffttttfffffffi:;;;;;iiiii1;;ttt1111ttt1tttt11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLLftfftttttfffffff1;;;;;;;ii;;ii1ttt11111111ttftttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLffffftfLftffffLLLftttttfffff1iiiiii;;iiii1itttt11111ttt1ttt11tttt11ttfffffLLfLfttt\ntffLLffffLLLLLLLLffffLLftffLLLffLLLftttttttffftiii;;;;;ii1ii1tft111111ffft11t11tt1tttttffffLLLLLffft\ntfffffttftfLLLffttttfffffttLLLLfLLLftttft111tt111i;;;;iiiii1tt111t1111tffttfftt11tfft1tffLLLLLLLLfff\nttttfttfffffLftttttttttttttfLLLffLLftttt1tttt11tti;;;iiiii111t11111111tffttffftttttttt1ttfLLLfffffff\nttffffffffftttfffffffffttfftfLLfffLftttttffft11t1i;;;;;iii11ttttt11111ttt1tffttt11ttttttttfLfftftttt\nttffffffffftttfffffffffttffftffftftttttffft111t11i;;;;iii1ii11tttt1111tt11ffttfftttfffffLfttttffffff\nttffffffffttttffffffffttttttttttffftttttttt11111iii;;iiii1;,:;1tttt11111t11t1tfft1ttffffLLftttfLLLLL\ntttffffffffttffffffffttttttttt1tffftttt11i;:,:i;;i;;;;;i11,,..,,:;i111tttt1111tt11ttffffLfftttffLLLf\nttttttttfffttfffttttttttffttt11ttff1ii;:,....,;::;i;;i11ti,,.......,:;ittt111ttt1111ttffffffttfLLLLf\ntfttttttttttttttttttttfffftttt11tff;,,........;;;;iii1tti,,,,:;;::,....,i11111ttttt11111ttfftffffftt\ntfttfffffttttttfffft1tffffttfft1ttt:..........:;;;;;;;i;...,;i;iii:.....,i1tt1ttffff11ttt1t1ttttttft\nttttfffffftttfffffft11tffftffftttti,..........,:;;;;;;;,...,;;iiii,......;tttt1tffftttttftt111tfffff\n1tttffffftt1ttfffftt111ffttft11tt1;,...........;i;;;;;:,.....:;iii,......;tttt1tfft11tffffftt1fLLfLf\ntttttffttttt11tftt1tttt1tttt1tttti,............;1;::;;,......,;iii,......;t11t11ttttttttfftt111fffLf\ntfftttttttffttt111ttfftt111ttfffti.............;i;::::,.......,;;;,......;ttt11111tfft1tttt1tt1tffft\nttttttttttttttt11ttttttt11tffffffi,............,::;:::,..........,.......:ttt1111tfffftt1tttfftttttt\ntfffttttfffffft11tttttttttttffffti,............,:::::,..............,....,ittt11ttttttft1ttttttffttf\ntfffttttfffffft11tffttff11t1tfff1;...... ....,.,:::::,.....................;11111tffffffttfffffffttf\ntfffttttfffffft1tttttttfttttttti:,......:iiii;,,:::,:.......................,;111tffffffttfffttffttf\ntffftttttttfft11ttftttttttfftti,,::,.,:;1i;;;;.,::::,.........................,i1tffffLfttfffttffttf\ntttttttttttttt111ttttttt1ttfft1:::,,,:,:;;;;i:.,:::,,..........................;1tfffffftttffttffttt\nttttt1tttttttt11ttttttttttfttt1;,...,...:;;;:, ,:::,..........................;11ttttttt11ttttttfttt\nttttt1tttttttt11tfttttfftttttfti,..,....,,,....,:::,.........................:111ttttttt11ttttttfttt\n1tttt1ttfttttt11tfffffffttttffft1;::::,,.......,:,:,.................. .:1111ttttttt111tttttfttt\n1tttt1tttttttt11ttttttttttttttttttt11111:......,:,,,..................,::,:1tt1111ttt1t1111ttttttt1t\n111111tttttttt111t1111tttttttttttt111111:......,,.....................,1tttttt1111111111111111111111\n1111111111t11111111111ttttttttttttt11111:......,:,,....................:1t1ttttt11111111111111111111\n1111111111111111111111ttttttttttttt1111t:......,;;::....................:1ttttttt1111111111111111111\n111111111111111111111111ttttttttt1111111:......,::::,...................,itttttt11111111111111111111\n111111111111111111111111111tttt111111111:......,;;::,....................:1ttttttt1tt11111ttttt11111\n1111111111111111111111111111111111111111:......:;;;::,...................,ittttttt11t11111ttttt11111\n11111111111111111111111111111111111111t1:......:;i;;::,...................:11tttttt1tttt11ttttt11111\n1111111111111111111111111111111111111111,......:;;;;;::,..................,1tttttttttttttttttttt1111\n","ttftfffttttttttttfffffLftfftttttttttt111tttt1111111tttt111111ttttt11111tttttttttttttttttttt11111111t\nttfttttttttttttttfffLLLftffffffffftttttt111111111ttfffftt1tt1111111111111111ttttttftttttttt1111111tt\nttftttttttttttttffffLftttfffffffLLLft1tttttft111tfftttfttttttttt111111ttttttfffftffffttttttt11111tt1\nttttttttttttttttfffLfttffffffLLffffttttttttttt1ttti;;;;::;i1tttt111111tffffffffftttfffffttt11111ttt1\ntttttttttttfffffttffftffffffffffttfftttttt1ttt111i,,,,,,,,,;11111t1111111tffffLLffttfLfft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttffft1i::,,,,,,,,,:1t11t111tt1111ttffffftttftt1tt1111ttttt\nttttttttffLLLLLLLffttfLLLfttfLfftfLLtttttfffffti:;;iiiiiiii::1tt11111tftt1111ttffffttt11tffft11ttttt\ntttttttfffLLLLLLLLLftffftttffLffftfftttttffffft::;;iii1i111i:1ttt1111ttt1tttt11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLfftfftttttfffffft;;;;;;;iiiiii;tttt11111111ttftttttttt11tffffffffffttt\ntttfftfffLLLLLLLLLfttfftfLfffffffLLftttttfffft1ii;;;;;iiiiiitfttt11111ttt1ttt11tttt11ttfffffLLfLfttt\nttfLLfffffLLLLLLLfftfLLftfffLLffLLLftttttttfftiii;;i;;ii111itfft111111tfft11t11tt1tttttfffLLLLLLLfff\ntfffffttftfLLLffttttffffftfLLLLfLLLftttft111tt1iii;;;;iiiii1tt111tt111tffttfftt11tfftttffLLLLLLLLfff\nttttfttffttffftttttttttttttfLLLffLLftttt1tttt11t1i;;;iiii1111t11111111tffttffftttttttt1ttfLLLfffffff\nttfLffffffftttfffffffffttftttfLfffLftttttfffft11i;;;;iiii111tfttt11111ttt1fffttt1ttt1tttttfLLffftttt\nttffffffffftttfffffffffttfftttfttttttttffft11111i;;;;;iii1tt11tttt1111t111ffttffttfffffLLfttttfLffff\nttffffffffttttffffffffttttttttttffftt11ttt1111t1i;;;iii1i1itt11ttt111111t11t1ttft1ttffffLLftttfLLLLL\ntttffffffffttfffffffftttttt1111tffftttt11i;::i1iii;;;iii1i,:;i11t11111tttt1111tt11ttffffLfftttffLLLf\nttttttttfffttfffttttttttffttt11ttft1ii;:,....;i;;;ii;;i1t:,...,:;i1111tttt111ttt1111tttffffftfLLLLLf\ntfttttttttttttttttttttfffftttt11t1:,,........ii:;;iii1tt1,,,......,,;i1tt11111ttttt11111ttfftffffftt\ntfttfffffttttttfffft1tffffttfft11;,..........:;::;ii11t1:,,,...,,:,...,it11tt11tffffttttttt1ttttffft\nttttfffffftttfffffft11tfffttfttt1,....,,......,:;;;;;;i,.......:iii;;,.,1t1ttt1tffftttttfftt11tfffff\n1tttffffftt1ttfffft1111tfttft11ti,.............;i;;;;;:........:iiiii:..it11tt1tfftt1tfffffft1fLffLf\ntttttffttttt11tttt1tttt1tttt1tt;,..............i1;;;;;,........,;iii;,..it111t11ttttttttfftt111fffLf\ntfftttttttfftt1111ttfft11111tft:...............;i;;;;:,.........:;ii:..,ittt111111tfftttttt1tt1tffft\nttttttttttttttt11ttttttt11ttff1,...............,::::::......... ,;ii:...itttt111ttffffft1tttfttttttt\ntfffttttffftttt11ttttttt111tft;,........... ..,:;:::,...........,:;:...;ttttt11ttfffffttttttttffttf\ntfffttttfffffft11ttttttf11111;:,..... .....,:::::::::...............,...:1ttt1111fffffffttfffffffttf\ntfffttttfffffft11ttttttt11ti,,...........,:;i;;;:::::..................,.:tt11111tffffffttfffffffttf\ntffftttttttfff111ttttttt111,.,,,,...,,..,;;;;;i;:,::,....................,;i1t111tffffLfttfffftffttt\ntttttttttttttt111ttttttt11t:.......,....,:;;;;;:::,:,.......................:1t11tfffffftttffttffttt\nttttt11ttttttt11tttttttt11t1,............,,,...,::::.........................:111ttttttt11ttttttfttt\nttttt1tttttttt11ttttttfft1t1:,............ .. ,:::,........................,i111ttttttt11ttttttfttt\n1tttt1ttfttttt11tfftttfftttttt1;::,,::.........,:,,,........................i1111ttttttt111tttttfttt\n1ttt11tttttttt11tttttttttttttttttt111i.........,::,,................. . .;t11111ttt1tt111ttttttt1t\n11t111tttt1tt111111111tttttttttttt111i,........,:,,...................,..,itttt111111111111111111111\n1111111111111111111111tttttttttttt111i,....... ,:....................i111ttttttt11111111111111111111\n1111111111111111111111ttttttttttt1111i,....... ,:,::,................,i1t11tttttt1t11111111111111111\n111111111111111111111111tttttttt11111i,........,::;:,..................;1ttttttt11111111111111111111\n1111111111111111111111111tttt11111111i........ ,,:::,..................,1ttttttttttt1111111tt1t11111\n1111111111111111111111111111111111111i,........,,:::,...................it111ttttt11t11111ttttt11111\n111111111111111111111111111111111111t1,........,,,:::,..................,1t1ttttttt1tttt11ttttt11111\n11111111111111111111111111111111111111,........,,,;;::,..................i111ttttttttttttttttttt1111\n","ttftffftttttttffffffffLfttftttttttttt111tttt1111111tttt111111tttt1111111ttttttttttttttttttt11111111t\nttfttttttttttttttftfLLLftffftffffftttttt111111111ttfffftt1tt1111111111111111ttftttftttttttt1111111tt\nttftttttttttttttffffLftttfffffffLLLft11tttfft111tfffffffttt1ttttt11111ttttttfffftffffttttttt11111tt1\nttttttttttttttttfffffttffffffLLffffttt1ttttttt1tt111ii11tft1ttttt11111tfftfffffftttfffffttt11111ttt1\nttttttttttttffffttfffttfffffffffttffftttt111ttt1:,,,,,,,:i1111111t111111ttffffLLffttfLfft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLLfttttttftt1;:,,,,,,,,,;1tt111t1111t111tttffffftttftt1ttt111ttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLfttttffft1i;;;;;;;;;;::1tttt11111ttt11111ttffffttt11tffft11ttttt\ntttttttfffLLLLLLLLLftffftttffLLfftfftttttffffi:;iii111111i:ittttt1111ttt1tttt11tfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLfftfftttttfffff;:;;;;iiiiiii:ittttt11111111ttttttttttt11tffffffffffttt\ntttffftffLLLLLLLLLfttfftfLftfffffLLftttttffff1i;;;;;ii;iiiittttft11111ttt1ttt1ttttt11ttfffffLLfLfttt\nttfLLfffffLLLLLLLfftfLLftfffLfffLLLftttttttf1i1i;i;;iiii1i1tffft111111tfft11t11tt1tttttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttft1111iii;;;;ii1i1i11tt111t1111tffttfftt11tfftttfffLLLLLLLfff\ntttffttfftffLftttttttttttttfLLLffLLfttttttttt11i;;;;iiii11t11111111111tffttfffttttttt11ttfLLLfffffff\nttfLffffffftttfffffffffttftttfLfffLftttttffft11i;;;iiiii1t11ttttt11111ttt1fffttt1tttttttttfLLftftttt\nttffffffffftttfffffffffttffttfffttttttttfft1111i;;;;iii1111111tttt1111tt11ffttffttfffffLffttftffffff\nttffffffffttttffffffffttttttttttffftt11tttt11t1ii;;;iii11tfft11ttt111111t11tttfft1ttffffLLfttffLLLLL\ntttffffffffttfffffffftt1ttt1111fffft1tt11iiii1iiii;iiii1i:1tft11111111tttt111ttt11ttffffLfftttffLLLf\nttttttttfffttfffttttt1ttfft11111tft11i;:,..,;ti;;;i;iii1;,,,:;i1111111tttt111ttt1111tffffffftfLLLLLf\ntfttttttttttttttttttttfffftttt11i;::,,......iti::;i;iitt:,,....,:;i111ttt111t1ttttt11111ttfftffffftt\ntfttfffffttttttfffftttffffttft11:...........;ii::;i11tti,,,,.......,:itt111tt1ttffff11ttt111ttttttft\nttttfffffftttffftfft11tfffttftt;,............,:;;;;;11;,..............;1111ttt1tffftttttfftt1ttfffLf\n1t1tffffft11ttfffft1111tfttft11:.............,:ii;;;;;,...............:11t11tt1tfft11tfffffft1ffffLf\ntttttfftt1tt11tttt1ttt11t1111t;,..............:i1;;;;:,...............,111111t11ftttttttfftt11tfffLf\ntfftttttttfftt1111tttft11111t1,...............:ii;;;;,............,,,.,1tttt11111ttfftttttt1tt1tffft\nttttttttttttttt11ttttttt11ttfi................:;::;::,...........,;i;;:1tttttt11ttffffftttttfftttttf\ntfffttttftttttt11ttttttt11ttfi................,;;:::,............,;iiii1tttttft1ttffftfttttttttftttf\ntfffttttfffffft11ttttttt11111;........ .......:;:::,............:iiiii11ttftt11tfffffffttfffffffttf\ntfffttttftffff111ttttttt11ti:,....... ,:::;;:,.,;:::,............:;;ii:i11tt1111tfffffffttfffffffttf\ntffftttttfffft111ttttttt11i,.........,iii;;;,..,:::,.............::;;,.it1111tt11tffffffttfffftffttf\ntttttttttttttt111ttttttt11,.,,,,..,,,:;;;;;;,..,:::,.............,::;..:i111ttt11tfffffftttffttffttt\nttttt1tttttttt111ttttttt11;,,,...... .:;;;;:...,:,,,.....................:111tt11ttttttt11tttttffttt\nttttt1tttttttt11tttttttt111,..........,,,,.....,:,,.......................:111111ttttttt11tttttffttt\n1tttt1tttttttt11ttttttfft11i:,.....,.... .....,::,......................,1t11111ttttttt111tttttft1t\n1tttt1tttttttt11ttttttttttttt1ii;;;:...........,:,,.....................,it111111ttttttt111ttttttt1t\n11t1111tttttt111111111tt1tttttttt11:...........,:,,.............. .;t11111111111111111111111111\n1111111111111111111111ttttttttttt11,.......... ,,................,:,,,:i1tttt1t111111111111111111111\n1111111111111111111111tttttttttt11i,...........,,,,..............:1t11ttttttttttt1111111111111111111\n111111111111111111111111tttttt1111;........... ,,:;,..............:11ttttttttttttt111111111111111111\n11111111111111111111111111tttt1111;........... ,,:;:...............:111tttttttttt11t1111111tttt11111\n1111111111111111111111111111111111;....,,......,,,::................i1ttttttttttttt1t11111ttttt11111\n1111111111111111111111111111111111;............:,,;:,...............;1tttttttttttttttttt11ttttt11111\n1111111111111111111111111111111111:............,,:;;:...............,1t1tttttttttttttttttttttttt1111\n","ttftffftttttttfffffttfLfttftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttftffLLftffffffffttttttt111111111ttfffft1ttt1111111111111111ttttttftttttttt111111ttt\nttftttttttttttttffffLftttfffffffLLLftt1tttttt111ttfffffftttttttt111111tttttffffftffffttttttt111tttt1\nttttttttttttttttfffLfttffffffLLffffttt1tttttt11tffffffffffttttttt11111tffffffffftttfffffttt11111tttt\nttttttttttttffffttfffttfffffffffttffftttt11111111i;i11ttt11tt1111t111111ttffffLLffttfLfft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLLfttttttfti:::,,,,:;i1ttfttt11t111tt111tttffffftttftt1ttt11tttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLftttttft1;,,,,,,,,,,;tffffft11111tft11111ttffLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfLLfLftffttttfffti;:;;;;iii;::1fffffttt111ttt1tttt1ttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffLfftfftttttfffi;;iiiii1111i:iffffftt11111111ttttttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttttffi:;;;;iiiiiii:1ftttfftt1111ttt1ttt1ttttt111tffffffLfLfttt\ntffLLfffffLLLLLLLfftfLLftftfLfffLLLLttttt1t1i;;;;;ii;iiii1ttffft111111tfft1tt11tt1tt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttft11i1i;;;;i111iii111tt111t1111fffttfftt11tfftttfffLLLLLLLffL\ntttffttfftffLftttttttttttttfLLLffLLftttt1tti1i;;;;ii1iii1tt11111111111tffttffftttttttttttfLLLLfffffL\nttfLfffffffttffffffffffttftttfLfffLftttttfftt1;;;;iiii11ttt1ttftt11111tfttffftt111ttttttttfLLftftttt\nttffffffffftttfffffffffttffttfftttttttttfft111i;;;iiii1t111t1ttttt1111tt11ffttffttfffffLLfttffffffff\nttffffffffttttffffffffttttttttttfffttt1tft1111i;;;iiii111tfft11ttt111111t11tttfft1tfffffLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt1111tffft11t111111iiii;;iii111fffft11111111ttft111ttt11tfffffLfftttfLLLLf\ntttttttttffttfffttttt1ttfft1t11ttfftttt1iiii1i;;;iii1i1i,;i1ttt1111111tttt111tttt111tffffffftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tff11i;:,,,:11i;;iii;it;....,:;i111111ttt111t1ttftt11111ttfftffffftt\ntfttfffffttttttfffftttffffttfft1ii;:,,.....:11;:;;;;1tt;,,,.....,,;i11tt111tt1ttfffftttttt11ttttttft\nttttfffffftttffftfft11tfffttft1;,..........:1ii;;ii1tti,,,..........,it1111ttt1tfffttttffftt1ttfffLf\n1tttffffftt1ttfffft1111tfttft1i,............,:;ii;;i1i,..............:111111tt1tfft11tfffffft1ffffLf\ntftttffttttt11tttt1ttt11t1111t;..............,;1i;;;;,...............,1111111t11ftttttttfftt11tfffLf\ntfftttttttfftt1111ttttt11111tt:............. ,;ii;;;:,...............,i111tt11111tffftttttt1tttttfft\nttttttttttttttt11ttttttt11ttft,...............;;;;;:,.................ittttttt11ttffffftttttfffttttt\ntfffftttftttttt11ttttttt11ttf1,...............:;;;::,.......,,,.......;tttttfftttfffftfttttttttffttf\ntfffttttfffffft11ttttttt1111t1,...............:;;;::........,;i;:,....;t1ttfttt1tfffffffttfffffffttf\ntfffttttftffft111ttttttt11t111,...............,::::,........:iiiii:...;t11tt1111tffffLffttfffffffttf\ntffft1tttfffft111ttttttt11ttt1,..... ..........::::,.......,;iiii;,...it11111tt1tfffLfLfttfffftffttf\ntttttttttttttt111ttttttt11tt1:... .,..........,:::.........:;;i;,...,1t1t11tft11tfffffftttffttffttt\nttttt1tttttttt111ttttttt1tt1:,...:;ii:.........,::,.........,:;;:.....,it1111tt11ttttttt11tttttffttt\nttttt1tttttttt11ttttttttt1t;::,;iiii;,.........,:,,...........,,,......,;11111111ttttttt11tttttffttt\n1tttt1tttttttt11ttttttfft1ti:,,;;;:;;,.........,:,,.......... ..........:tttt1111ttttttt111tttttfttt\n11ttt1tttttttt11ttttttttttt1,.,::::;;:.........,:,,...............,....;ttttt1111ttttttt111ttttttt1t\n11tt11tttt1tt111111111111ttti:,,,::;:..........,:,,............ ......;ttttt11111111111111111111t111\n1111111111111111111111tttttttt1:,,,............,:,.............,. .,;11tttttt1111111111111111111111\n1111111111111111111111tttttttttt1:.............,,............ .11ii1ttttttt1111111111111111111111111\n111111111111111111111111tttttt111,.............,::,,...........ittttttttttttt11111111111111111111111\n11111111111111111111111111111111;..............,;;;:,..........:11tttttttttttttt11111111111111t11111\n11111111111111111111111111111111;..............,;;;:,...........:11tttttttttttttttt1111111ttttt11111\n11111111111111111111111111111111:..............,;;;;:...........:1ttttttttttttttttttttttt1ttttt11111\n11111111111111111111111111111111:..............,;i;::,..........,1tttttttttttttttttttttttttttttt1111\n","ttftffftttttttfffffttfffttftttttttttt111tttt1111111ttttt11111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttftffLLftffffffffttttttt111111111ttfffffttttt111111111111111ttffttftttttttt11111tttt\ntfttttttttttttttffffLffttfffffffLLLft11tttttt111tfffffffttttttttt11111ttttfffffftfLLfttttttt1111ttt1\nttttttttttttttttfffLfttffffffLLffffttt1ttttttt1ttfffffffffttttttt1111ttfftffffLftttfffffttt11111tttt\nttttttttttttffffttfffttffffffffftttfttttt111ttt1ttffffffttttt1111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttfLLLfftttttffLftttttttt11ii11fffft1ttfftt11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLfttttt1i:;:,,::;i1tttffffftt11111tft11111ttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLftffttttffLffftffttttfti:,,,,,,,,,:;tfffffttttt111tftttttt1ttffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLfftffttttttti:::::;;;;;,,1ffttffttt11111111ttttttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLfftfftffftffffLLLfttttti;iiiii11111;:1ttfffffftt1111ttt1ttt1tftttt11tfffffLLfLfttt\nttfLLffffLLLLLLLLfftfLLftttfffffLLLLttttt;;i;;iiiiii1;:i11tfffft111111ffft1tt11tt1tt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttft1ii;;;ii;;iii;tt11ttt111t1111tffttfftt11tfftttffLLLLLLLLffL\ntttffttfftffLftttttttttttttfLLLffLLftttt11ti;;;iiii1iii1ttt1ttt1111111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttftttfLfffLfttttt11i;;;iii1iii1tttt1tfftt11111tfttffftt11tttttttttfLLffftttt\nttffffffffftttfffffffffttfftttfftffttttfft11;;;iiiii11tt111ttttttt1111tt1tffttffttfffffLLfttftfLffff\nttffffffffttttffffffffttttttttttfffttt1tft11i;iii11i11111tfft11ttt11111tt11tttfft1tffffLLLfttfLLLLLL\nttfffffffffttfffffffftt1ttt111tfffftttt11111i;i;iiii111ttfffft11111111tttt11tttt11tffffLLfftttfLLLLf\nttttttttfffttfffttttt1ttfftt111tfffttt111111;;i;;iii11i1ttffft11111111tttt111tttt11ttfffffLftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tffttt1t1ii1;;i;;iiii1;,::i11tt1tt1111ttt11tt1tfftt11111ttfftfLffftt\ntfttfffffttttttfffft1tffffttfft11tft11i::,,1ii;:;ii;it:,,...,,:;i11111tt111tt1ttfffftttttt11tttttfft\nttttfffffftttffftfft11tfffttfttttt1i:,....,it1i;;;;i1t;,,,,.......,;111t111ttt1tfffttttffftt11tffLLf\n1tttffffftt1ttfffft111ttfttft11i;:,........i1tt1ii1tt1:,,...........:1111111tt1tfftt1tfffffft1ffffLf\ntftttffttttt11tttt1ttt11t1111t;,...........,;;;11;;;;:..............,1t111111t1tftttttttfftt11tfffLf\ntfftttttttfftt1111ttttt11111tt:..............:;ii;;:,................it111tt11111tffftttttt1tttttfft\nttttttttttttttt11ttttttt11ttf1,..............,;;;;::,................it1tttttt1ttfffffftttttfffttttt\ntfffttttffttttt11ttttttt11ttfi................;;;:::,,:;:,...........;tttttttftttffffffttttttttffttf\ntfffttttfffffft11ttttttt1111ti................:;:::,.:;iii;,.........:111ttfftt1tfffffffttfffffffttf\ntfffttttftffff111ttttttt11t11;................,;:::,.;iiiii:.........:tt11ttt111tfffLfLfttfffffffttf\ntffft1tttfffft111ttttttt1tttt;................,::::,.:;;ii;,.........;ttt1111tt1tfffLLLfttfffftffttf\ntttttttttttttt111tttt1tt11ttti.................:::,...,;;i;,.........itttt11ttt11ffffffftttfftfffttt\ntttttttttttttt111ttttttt11tt1;.................:::,....,:;:,.........,1tt1111tt11ttttttt11tttttffttt\nttttt1tttttttt11ttttttttt1t11:.................:::,.... ..............:1111111t11ttttttt11tttttffttt\n1tttt1tttttttt11ttttttfft11ti;,................,::,.........,......... :ttttt1111ttttttt111tttttfttt\n11tt11tttttttt11tttttttt1tt1iiii:..............::,,...................:1tttt111111tttttt111ttttttt1t\n11t1111tttttt1111111111t111iiiiii:.............,:,,,.................:1ttttt11111111111111111111t111\n11111111111111111111111t11i;;iiii;.............,:,,,........... .,;ttttttttt1111111111111111111111\n1111111111111111111111tt1t1i;;ii;,.............,,........... :i;;i1tttttttt1111111111111111111111111\n1111111111111111111111111ttti:,,...............,,,.......... :ttttttttttttttt1t111111111111111111111\n11111111111111111111111111111;::...............:;;::,........,i11ttttttttttttttt1111111111111tt11111\n111111111111111111111111111111t;...............:ii;;:,........;t1tttttttttttttttt1t1111111ttttt11111\n1111111111111111111111111111111:...............:;i;:::........:tttttttttttttttttttt1ttttt1ttttt11111\n1111111111111111111111111111111:............. ,;ii;;;:,..,,...:ttttttttttttttttttttttttttttttttt1111\n","ttfttfftttttttffffftfffftfftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttttffLLttffffffftttttt1t111111111tfffffftttt1111111111111111ttffttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffLLLftt1tttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt111ttttt\nttttttttttttttttfffffttffffffLLffffttttttttttt1tffffffffffttttttt11111tfffffffLftttfffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttffttttt1111tt1ttffffffttttt1111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffttttffffftttffftt11t111tt111ttfffLLftttftt1tt111tttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLftttttt11i;;;;i1tftttffffffftt1111tftt1111tffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLftffttttffLLfftffttttti:::,,,,::;i1tffffffffttt111tft1tttt1ttffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLfftfftttt11;,,,,,,,:,,,;tffffffffttt1111t11ttttttttttt1ttffffffLfffttt\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttt1i;;;;iiiii:,:1tttfffffftt1111ttt1ttt1tfttt111tfffffLLfLfttt\nttfLfffffLLLLLLLLfftfLLftttfLfffLLLLttt1i1iiiii1111i::1111ttffft111111ffft1tt11tt1tt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttt11;;;iiiiiii:;ttt111tt111tt111tffttfftt11tfftttffLLLLLLLLffL\ntttffttffttfLftttttttttttttfLLLffLLftttt1i;;;iii;iii;ittfft11tt1111111tfftfffftttttttttttfLLLLffffff\nttffffffffftttfffffffffttfttfLLfffLfttt111;;;i111111iitfttt1tfftt11111tfttfffttt1tttttttttfLLftfttft\nttffffffffftttfffffffffttffttffftfftttttt1i;;iiiii1i1tft11tttttttt1111tt1tffttffttfffffLLfttftffffff\nttffffffffftttffffffffttttttttttfffttt1ttti;;;i111iitt111tfft11ttt111111t1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111tfffftttt111ii;iii;ii11111tfffft11111111tfft11tttt11tffffLLfftttfLLLLL\nttttttttfffttfffttttt1ttfft1111tffftttt1111;;;i;;;i111ttttffftt1111111tttt111tttt11ttfffffLftfLLLLLf\ntfttttttttttttttttt1ttfffftttt11tfft111tt1i;;;i;;i1i1;i11tffftt11t1111ttt11tt1tfftt11111ttfftfLffftt\ntfttffffftt11ttfffftttffffttfft11tft11ii;ii;;;;:;iii1,.,,,:;iii1ttt111tt111tt1ttfffftttttt11ttttfftt\nttttfffffftttffftfft11tfffttftttttt1;:,..:11;;i;;;;11:,,,.....,,:i1111tt111ttt1tffftttttfftt1ttffLLf\ntt1tffffftt1ttfffft1111tfttft1111i:,.....,i11iiiii1tt:.,..........:111111t11tt1tffft1tfffffft1fLffLf\ntftttffttttt11tttt1ttt11t11111;:,.........;i11i1111t;..............;t11111111t1tfttttttfffftt1tfffLf\ntfftttttttfftt1111ttfft111111:.............,::;ii;;:...............:111111ttt111ttffftttfft1tttttfft\nttttttttttttttt11ttttttt11tt1,..............::;;;;;,...............,1111tttttt11tffLffftttttfftttttt\ntfffftttffttttt11ttttttt11tfi,..............,::;;::,,...............i111ttttfftttffffffttttttttffttf\ntfffttttfffffft11ttttttt111ti................::::::,:;;::,..........it111ttffttttfffLfLfttfffffffttf\ntfffttttftffff111ttttttt1tt1;................,;::::.:iiiii,.........;11111ttt11ttfffLfLfttfffffffttf\ntffft1tttfffft111ttttttt11tti,................::::,.:ii;ii:.........;tttt1111ttttfffLLLfttfffftffttf\ntttttttttttttt111ttttttt1ttf1.................,:::,.,:;iii:.. ......:ttttt11tft11tfffffftttfftfffttt\ntttttttttttttt111ttttttt1ttt;::...............,:::,. .:;ii:..........;ttt1111tt11tttttft11tttttffttt\nttttt1tttttttt11ttttttttt1t111i;,..............:::,....,::,...........;1111111t11ttttttt11tttttffttt\n1tttt1tttttttt11ttttttfftt1iiiiii:.............:::,.... ............. :ttttt1111ttttttt111ttttffttt\nt1ttt1tttttttt111ttttttttt1i;iiii;,............,:,,,................. ,1tttt111111tttttt111ttttttt1t\n11t1111tt1ttt11111111111111i;iii1i,............,::,,.................:1tttt11111111111111111111tt111\n11111111111111111111111111t1;;;;;,.............,:,,,.......... .:1tttttt111111111111111111111111\n1111111111111111111111111t11;,.................,:,,..........,;:::;1ttttttt1111111111111111111111111\n11111111111111111111111111111:..,..............,,............:ttttttttttttttttt111111111111111111111\n111111111111111111111111111111ii;..............,::,...........i111ttttttttttt11111t11111111111111111\n111111111111111111111111111111t;...............,;ii;::,.......:1ttttttttttttt11t1tt1111111ttttt11111\n111111111111111111111111111111i,...............:;ii;;;:,......,1ttttttttttttttttttt111111tttttt11111\n11111111111111111111111111111ti,...............:;ii;;;;:,..:..,1ttttttttttttttttttttttttttttttt11111\n","ttfttfffttttttffffttfffftfftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt1111111tt\nttfttttttttttttttttffLLttffffffffftttttt111111111tfffffftttt1111111111111111ttftttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffLLLftt1tttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttfffffttffffffLLffffttttttttttt1tffffffffffttttttt1111ttfffffffLftttfffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttffftttt1111tt1ttffffffttttt1111t111111ttffffLLLfttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffft1ttfffftttffftt11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLftttttfttttttttttftttffffffftt1111tftt1111tffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLftffttttffLffftffttttt1ii::::;111tttffffffffttt111tft1tttt1ttffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffLfftffttttt1:,,,,,,,,:;ittffffffffttt1111t11ttttttttttt1ttffffffffffttt\ntttffttffLLLLLLLLLftffftfLftffffLLLftttti::,::::::,,,;ttttfffffftt1111tft1ttt1tffttt11tfffffLLfLfttt\nttfLffffffLLLLLLLfftfLLftttfLfffLLLfftt11iiiii111i;,,;t111tfffft111111ffft1tt11ttttt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttt1iiiii1111i:,iftt111ttt11tt111tffttfftt11tfftttffLLLLLLLLffL\nttttftttttffLftttttttttttttfLLLffLLftttti;;;ii;iiii::1ttttt11tt1111111tfftfffftttttttttttfLLLLffffff\nttfLfffffffttffffffffffttfttfLLfffLfttt1i;;i1i;iiii:;tftttt1tfftt11111tfttfffttt1tttttttttfLLftftttt\nttffffffffftttffffffffftfffttffftffttttti;;iii111i1iitft11tttttttt1111tt11ffttffttfffffLLfttftfffffL\nttffffffffftttffffffffttttttttttfffttttti;;;ii1111ii1t111tfft11ttt111111t11tttfft1tfffffLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111tfffftttt1i;;;iiiiii11111ttfffft11111111tfftt1tttt11tfffffLfftttfLLLLf\nttttttttfffttfffttttt1ttfft1111ttffttt111i;;ii;;;itt11ttttfffft1111111tttt111tttt11tttfffffftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tfft1t1t1i;;;ii;;it111ttttffftt11t1111ttt111t1tfftt11111ttfftfLffftt\ntfttffffftt11ttfffftttffffttfft1ttft11ii1;;;;i;:;i1;;i11tttft111tt1111tt111tt1tffffftttttt11ttttfftt\nttttfffffftttffftfft11tfffttftttt1i;:,,:1i;;;;i;;;1;.,,,;;i11111111111tt111ttt1tffftttttfftt1ttffLLf\n1tttffffftt1ttfffft111tffttft1ii:,.....,11iiiiiii1t:,,,.....,:;i111111111t11tt1tffft1tfffffft1fLffLf\ntftttffttttt11tttt1ttt11t11i;:,........,i1tt1ii11tt:,,,,........:t11111111111t1tfftttttfffftt1tfffLf\ntfftttttttfftt1111ttfftt11i,............::;;iiiii1;,,............it1111111ttt111ttffftttfft1tttttfft\nttttttttttttttt11ttttttt11;...............:;;;;:;;...............:111111tttttttttffLffftttttfftttttt\ntfffftttffttttt11ttttttt11:...............,;;;;;;:,..............,111111ttttfftttffffffttttttttffttf\ntfffttttfffffft11ttttttt11,...............,:;;;;:,...............,1111111ttffttttfffLfLfttfffffffttf\ntfffttttftffff111ttttttt11:...... ........:;;;;:,...............,11111111ttt1tttfffLfLfttfffffffttf\ntffft1tttfffft111ttttttt11:.......:;;;:....,;;::::.......,::,....,1tt11tt1111tt1tfffLLLfttfffftffttf\ntttttttttttttt111ttttttt11:.....:;;;;;:.....:;:::,.......,:iii;,.,1t1t11tt11tft1tffffffftttfftfffttt\ntttttttttttttt111ttttttt1i,.....:;:;;;:.....,::::,........;;iii;..;t1111t1111tt11tttttftt1tttttffttt\nttttt1tttttttt11tttttttt1i,.....:::;;;,......::::,.......,;;ii;:..,;1t11111111t11ttttttt11tttttffttt\n1tttt1tttttttt11ttttttttti....,,,,:;;,.......,:::,,.......,;;;;,....,it11tttt1111ttttttt111ttttffttt\n11tt11tttttttt111ttttttt1:,,.,,,..,,,.........::::,........,:;,..... ,1tttttt11111ttttt1111ttttttt1t\n1111111tttttt11111111111i,,..,,,.... .........::::,..................itttt111111111111111111111tt111\n1111111111111111111111111,...,,...............,::,,,...........,,...;tttttt1111111111111111111111111\n11111111111111111111111111,..... .............,::,,,......... . .:1tttttt1111111111111111111111111\n1111111111111111111111111ti,,,.,,..............::,,..........,,,::i1tttttttttt1111111111111111111111\n11111111111111111111111111111i11;..............:,............,1tttttttttttttt11111111111111111111111\n1111111111111111111111111111111i...............:;:::::,.......;tttttttttttttt11t1ttt111111ttttt11111\n1111111111111111111111111111111:...............:iiii;;::,......ittttttttttttttttttttt1111tttttt11111\n1111111111111111111111111111111,...............:iiiii;;:,......,1tttttttttttttttttttttttttttttt11111\n","tttttfftttttttffffftfffftfftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt1111111tt\nttfttttttttttttttttffLLftfffffffffttt1tt111111111tfffffftttt1111111111111111ttftttftttttttt11111tttt\nttttttttttttttttfffffftttfffffffLLLftt1tttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttfffffttffffffLLffffttttttttttt1tffffffffffttttttt11111tfffffffLfttffffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttfftttttt11ttt1ttfffffftttttt11tt111111ttffffLLLfttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffft1tffffftttffftt11t111tt111ttfffLLffttfft1tt111tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLfttttttffffffttttftttffffffftt1111tftt1111tffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLftffttttfLLffftfftttttftttttttffttttffffffffftt111tftttttttttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftffttttttiii;::::i1ttttffffffffftt1111t11ttttttttttttttffffffffffttt\ntttffttffLLLLLLLLLftffftfLfttfffLLLfttt11:,,,,,,,:::itttttfffffft11111tft1ttt1tffttt11tfffffLLfLfttt\ntffLffffffLLLLLLLfftfLLftttfLfffLLLLfttt1i::::,,::,,,itt11tfffft111111ffft1tt11tt1tt1ttffLLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttttiiiiii1i;:,,:ttt111ttt11tt111tffttfftt1ttfftttffLLLLLLLLffL\nttttftttttffLftttttttttttttfLLLffLLftttti;iiii111i;:,iftftt11ttt11111tffftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttfttfLLfffLfttt1;;;ii;iiii;::1ffttt1tffft11111ffttfffttt11ttttttttfLfftftttt\nttffffffffftttffffffffftfffttffftfftttt1;;i1i;;iii;:itft11tttttfttt111tt1tffttffttfffffLLftfftfffffL\nttffffffffftttffffffffttttttttttffftttt1;;iiii111iii1t111tfft1tttt111111t1ttttfftttfffffLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111ttffftttti;;iiiiiiiii1111ttfffft11111111tffttttttt11tfffffLfftttfLLLLL\nttttttttfffttfffttttt1ttfft1111ttfftttt1;;;iiii;;itt11tffffffft1111111tttt111tftt11tttfffffftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tfftttt1i;;;;ii;;it1111tftfffft11t1111ttt111t1tfftt11111ttfftfLffftt\ntfttfffffttt1ttfffftttffftttfft11tft111i;;;;;ii;;i111111tttft111tt1111ttt11tt1tffffftttttt11ttttffft\nttttfffffftttffftfft11tfffttfttt11i;;:ii;;;;iiiii1;11tt111t11111tt1111tt111tft1tffffttfffftt11tffLLf\n1tttffffft11ttfffft1111tfttftii;:,....;1i;;;;ii111,,:;i1tt11tt11111111111t11tt1tffft1tfffffft1fLffLf\ntftttffttttt11ttt11ttt1111i;:,.......,i1tiiii;;11i,,,..,:;i1t1t111t1111111111t1tfftttttfffftt1tfffLf\ntfftttttttffttt111ttttt1i:...........,ii111iii11i:.,,......,:;1t111111111tttt111ttfLftttfftttttttfft\nttttttttttttttt11tttt11t;..............,::;;i1ti:,............,1t1111111tttffttttffLfffttttffffttttt\ntfffttttfftfttt11tttttt1,...............:;:;;;;;:..............;tt111111tttffftttffffffftttttttffttf\ntfffttttfffffft11tttttt1................,;;;;;;;:..............:t11111111ttffttttffLLfLfttfffffffttf\ntfffttttfttftt111tttttti............... .:;;;;;:,..............:1111111111tttttttffLLfLfttfffffffttf\ntffft1ttttttft111tttttt;............. .:;;;;;;:::..............:111tt11tt111ttt1tfffLLLfttfffftffttf\ntttttttttttttt111ttttt1,..............:;i;;i;::::..............:1ttt1111tt11tff1tffffffftttfftfffttt\nttttttttttt1tt111ttttt;..............:;;;;;i:::::..............;1111111111111tt11tttttftt1tttttffttt\nttttt1tttttttt11tttttt:..............:;;;::;:::::..............;t1111111111111t11ttttttt11tttttffttt\n1tttt1tttttttt11ttttt1,........... .,,:,...,:::::..............,11i;;i111tttt1111ttttttt111ttttffttt\n11tt11ttttttt1111tttt;............,..... ...,::::...............:i;:;;i1ttttt11111tttttt111ttttttt1t\n11111111t1tt111111111,............,.........,::::,..............,:::;ii1tt111111111111111111111tt111\n111111111111111111111,............ .........,,,::,..............::::;i11tt11111111111111111111111111\n1111111111111111111111:....... .............,,:,,..............,::::i111t11111111111111111111111111\n11111111111111111111111:....,,,,.............,:::,,..................,1t1111111111111111111111111111\n111111111111111111111111iiii11t; .............,:,..,........ ..:1tttttt11111111111111111111111\n111111111111111111111111111111t:...............:,,,:,,......,,,,,:;;1tttttttt1t111tt1111111tttt11111\n111111111111111111111111111111t: .............::;ii;::,.....,i111ttttttttttttttt11ttt111111tttt11111\n111111111111111111111111111111t:..............:;;iiii;:,.....,i1ttttttttttttttttttttttttttttttt11111\n","tttttfttttttttffffffffffffftttttttttt111tttt1111111ttttttt111tttt111111tttttttttttttttttttt1111111tt\nttfttttttttttttttttffLLftfffffffffttt1tt111111t11tfffffftttt1111111111111111ttftttftttttttt111111ttt\nttttttttttttttttffffLftttfffffffLLLfttttttttt111tfffffffftttttttt11111tttttffffftffLfttttttt11111ttt\nttttttttttttttttfffffttffffffLLffffttt1ttttttt1tffffffffffttttttt11111tfffffffLffttfffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttfftttttt11ttt1ttfffffftttttt11tt111111ttffffLLLfttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffft1ttfffffttffftt11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLfttttttffffffttttffttffffffftt1111tftt111ttffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfLLffftfftttttfftffffffftttfffffffffftt111tft1tttttttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftfftttttt1iii::;i1ttttfffffffffftt1111t11ttttttttttttttffffffffffttt\nttttfttfLLLLLLLLLLfftfftfLfttfffLLLfttt11:,::,,,,,:;1tttttfffffftt1111tft1ttt1tffttt11tfffffLLLLfttt\nttffffffffLLLLLLLfftfLLftttfLLffLLLffttt1;:,,,,,,,,,;ttt11tfffft111111ffft1tt11ttttt1ttffLLLLLLLLfff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttt1iiiiiiii;:,,iftt111ttt11tt111tffttfftt11tfftttffLLLLLLLLffL\nttttftttttffLftttttttttttttfLLLffLLfttt1i;iii1111i:,:1ftfft11ttt111111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttffttfLfffLfttt1;;;i;iii1i:,;tffttt1tffft11111tfttfffttt11ttttttttfLLftfttft\nttffffffffftttffffffffftffftttfffffttt11;;;ii;;iii::1fft11tttttfttt111tt1tffttffttfffffLLffffffffffL\nttffffffffftttffffffffttttttttttfffttt1i;;iiiii11i;itt111tfft1tttt111111t1ttttfftttffffLLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111ttfffttt1i;;iiiiiiiii1111ttfffft11t11111tffttttttt11ttffffLfftttfLLLLL\nttttttttfffttfffttttt1ttfft1111ttffttt1i;;;iiii;;;1t11tffffffft1111111ttttt1ttfft11ttffffLfftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tfftt111;;iiiii;;;1111ttftfffft11t1111tttt1tt1tffttt1111ttfftfLffftt\ntfttfffffttt1ttftfftttffftttfft11tft1i1i;;;;iii;;;111111tttft111tt1111ttt11tf1tffffftttttttttttttfft\n111tfffffftttffftttt11tfftttfttt11i;;;1;;;;;iiii;i1t11t111t11111tt1111tt111tft1fffffttfffftt11tffLLf\n1t1tffffft11ttffttt1111tftttti;:,,...:1i;;;;iiii1i:;i1ttt111tt11111111111t11tt1tffft1tffffffttfLffLf\ntftttfftt11t11ttt11ttt111i;:,,.......:11ii;;ii;11i,.,,:;11tt11tt11t1111111111t1tffttttffffftt1tfffLf\ntffttttttttftt1111ttttt1:............:1111iiii1ti;,,....,,;i1tttt11111111tttt111ttfLffttfftttttttfft\nttttttttttttttt111ttt1t;...............,:;;i1tt1;,..........,itttt111111tttttttttffLfffttttffffttttf\ntfffttttfftfttt11ttttt1,................:::::;i;:,...........,1ttt111111ttttfftttffffffftttttttffttf\ntffft1ttffffff111ttttti.................,;;;;;;;:,...........,1t111111111ttffttttffLLfLfttfffffffttf\ntffft1ttfttttt111ttttti................,,;;;;;;::,............it1111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt111ttttt;.............:;iii;;:;;:::,............it1111111tt111tttttfffLLLfttfffftffttf\nttttt1tttttttt111tttti,............,;;iiii::;::::,...........,1ttttt111ttt11tft1tfffffLftttfftfffttt\nttttt1tttt11tt111ttt1:.............:;;;iii;::::::............,1tttt1111111111tt1tttfttftt1tttttffttt\nttttt1tttttttt11tttti..............,;;;;:,,:::,,:............:tt11t11111111111t11ttttttt11tttttffttt\n1tttt1tttttttt11tttt:............. ,::,. .::,,,:........... :t1111111t111ttt1111ttttttt111ttttffttt\n11tt11tttttt111111ti.......................,:::::.............it111t11111tttt1111tttttt1111ttttttt1t\n1111111111111111111,.............,.........,:::::.............:1t11ii;:;11111111111111111111111tt111\n1111111111111111111:........................,,:::..............;ii;:;:;ii111111111111111111111111111\n11111111111111111111:....... ..............,,,:,...............,:::::;i1111111111111111111111111111\n111111111111111111111:......,,..............,,,:,...............:::;::;i11t1111111111111111111111111\n1111111111111111111111iiiiii1;...............,,,,.,..............,::::;11111111111111111111111111111\n11111111111111111111111111111;................,,:,,,...... .it1111111111111111111111111111\n1111111111111111111111111111t;...............;i;;;::,.....,,.....,,,;i1ttttttttt11tt111111ttttt11111\n1111111111111111111111111111t;...............:i;;i;::,....:i111111tttttttttttttttttttttttttttttt1111\n","tttttfttttttttffffftfffftfftttttttttt111tttt1111111ttttttt111tttt111111tttttttttttttttttttt1111111tt\nttfttttttttttttttttffLLftfffffffftttt1t1111111t11tfffffftttt1111111111111111ttftttftttttttt111111ttt\nttttttttttttttttffffLftttfffffffLLfftt1tttttt111tfffffffftttttttt11111tttttffffftffLfttttttt11111ttt\nttttttttttttttttfffffttffffffLLLfffttt1ttttttt1tffffffffffttttttt11111tfffffffLffttfffffttt1111ttttt\nttttttttttttffffttfffttffffffffftttftttttt11ttt1ttfffffftttttt11tt111111ttffffLLLfttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfffttttt1tfffft1ttfffffttfffft11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLftttttttfffffftttffttffffffftt1111tftt111ttffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfLLffftffttttt111i;iitfftttfffffffffftt111tft1tttttttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftfftttt1;:,::,,,:;ittttffffffffftt1111t11ttttttttttttttffffffffffttt\ntttffftfLLLLLLLLLLfttfftfffttfffLLLftt1i:,,,,,,,,,,:1tttttfffffftt1111tft1ttt1tffttt11tffffLLLLLfttt\nttffffffffLLLLLLLfftfLLftttfLLffLLLftt1i;;;;;;;i;:,:tftt11tfffft11111tffft1tt11ttttt1ttfffLLLLLLLfff\ntfffffttttfLLLffttttfffffttLLLLfLLLft1;iiiii11111i::tffft11tttt11t111tfffttfftt1ttfftttffLLLLLLLLffL\ntttfftttttffLftttttttttttttfLLLffLLftt11;;;iiiiiii:;tffffft11tt1111111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttffttLLfffLft11i;;;;i;;iii;tffffttt1tffft11111tfttfffttt1tttttttttfLLftffttt\nttffffffffftttffffffffftffffttfftfttt11i;;;i1iii1iitffft11tttttfft1111tt1tffttffttfffffLLfffftfLffLL\nttffffffffftttffffffffttttttttttffftt11i;;;iii111ii1tt111tfft1ttft111111t1ttttfftttffffLLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111ttffftttti;;;;iiiiii11111ttfffft11t11111tfftttttttt1tfffffLLftttfLLLLf\nttttttttfffttfffttttt1ttfft1111ttffttt1i;;;iiii;;itt11tffffffft1111111ttttt1ttfft11ttffffLfftfLLLLLf\ntftttttttttttt1tttt11tfffft1tt11tfft111;;;;;iii;;it111ttfffffft11t1111tttt1tt1tffftt1111ttfftfLffftt\ntfttffffftt11ttftfftttffftttfft11tti;;1;;;:;iii::i111111ttfft111tt1111ttt11tf1tffffftttttttttttttfft\n111tfffffftttffftttt11tfftttft1i;:,..,1i;;;;iii;i;:;;1t111t11111tt1111tt111tft1fffffttfffftt11tffLLf\n1tttffffft11ttffftt1111tt1ii:,,......,i1i;;;ii;11;...,:;i111tt11111111111t11tf1tfffttfffffffttfLffLf\ntfttttftt11t11ttt11ttt11;,,..........,11t1iiii1t1:,,.....,:i111111t1111111111t1tffttttffffttt1tfffLf\ntffttttttttfttt111ttttti,.............:;;iii11t1i,,.........,ittt11111111tttt11tttfLffttffttttttffft\nttttttttttttttt111tttt1:................:;;;;;i;:,...........:ttt1111111tttffttttffLLffttttffftttttf\ntfffttttftttttt11ttttti.................,;;;ii;;:............,1ttt11111ttttffftttffffffttttttttffttf\ntffft1ttfffftf111ttttti..................:;;;i;;:,...........,1tt11111111ttffttttffLLfLfttfffffffttf\ntffft1ttfttttt111ttttt;..................,;;;;;::,...........,1t1111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt111ttttt;...........,,.....,;;:;:::............,111111111tt111tttttfffLLLfttfffftffttf\nttttt1tttttttt111tttti,........,;ii:......:;:::::............,ittttt111ttt11tft1tfffffLftttfftfffttt\nttttt1tttt111t111tttt;........:;;;;:,.....,;:::::.............ittttt1111t1111tt1ttfttttttttttttffttt\nttttt1tttttttt11tttt1,.......,:::;;;,......::::::.............;tt1t1111111ttt1tttfttttttt1tttttffttt\n1tttt1tttttttt11tttti.........,:::;:.......,:::::..........,,:;1t11111111ttff1111ttttttt111ttttffttt\n111111tttttt111111t1,..........,:::........,:::::..........,:;;i1111t111ttttt11111ttttt1111ttttttt1t\n1111111111111111111;............,,.........,::::,.........,:;;;i1111111111111111111111111111111tt111\n11111111111111111111:.......................,:::,.. ......,:;;ii111111111111111111111111111111111111\n111111111111111111111:.......,..............,:::,..........,::i11t1111111111111111111111111111111111\n1111111111111111111111:,,..,, ..............,,,::,............,1111111111111111111111111111111111111\n1111111111111111111111111i11:...............,..,:,,..... ..:1t11111111111111111111111111111111111\n111111111111111111111111111;................,::::,,.....::::;i11tttt111111t1111111111111111111111111\n111111111111111111111111111,.................ii;;::,....:1tttt1ttttttttttttttttt11tt111111ttttt11111\n1111111111111111111111111ti..................;i;;;:,.....;t1ttttttttttttttttttttt1ttttttttttttt11111\n","ttffftfffttttttttftttfffttftttttttttt111tttt111111tttttttt111tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLLftfffffffftttt1t111t111t11tfffffftttt111111111111111tttftttfttttttttt1111tttt\nttttttttttttttttffffLftttfffffffLLffttttttttt111tfffffffftttttttt11111ttttfffffftfLLfttttttt111tttt1\nttttttttttttttftfffffttffffffLLffffttttttttttt1tffffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\nttttttttttttffffttfffttffffffffftttfttttt1111tt1ttffffffttttt1111tt11111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttffftttt11tttffttttfffffttfffft11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLftt11ii;i;;ii1tttffttffffffftt1111tftt111ttffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfLLffftfftt1:,,,,,,,,:iftttfffffffffftt111tft1tttttttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftff1i;;:,,,,,,,,:;ttttfffffffffftt1111t11ttttttttttttttffffffffffttt\ntttffftfLLLLLLLLLLfttfftfffttfffLLLt;,,:;;;;;iiii:ittttttffffffftt1111tft1ttt1tftttt11tffffLLLLLfttt\nttffffffffLLLLLLLfftfLLftttfLLffLLLfi,:iiii111111;1ffftt11tfffft11111tffftt1t1tttttt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfffffi:;;;;;iiiiiiitffffft11tttt11t111tfffttffft1ttfftttffLLLLLLLLffL\ntttfftttttfffftttttttttttttfLLLffLLti;;;;;i;;iiii1ftffffftt11tt1111111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttffttfLfffLtii;;;ii;;i1111tfffffttt1tffft11111tfttffftttttttttttttfLLfffffft\nttffffffffftttffffffffftffffttfftftt1ii;;;;;;iii11ttffft11tttttfftt111tt1tffttffttfffffLLffffffLffLL\nttffffffffftttffffffffttttttttttffftt11i;;;;;i111111tt111tfft1ttft11111tt1ttttfftttffffLLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt1111tfffttti;;;;;;iiiii11111ttfffft11t11111tfftttttttt1ttfffLLLftttfLLLLf\nttttttttfffttfffttttt1ttfft11111tfft11i;;;:;;ii;;itt11ttfffffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntftttttttttttt1tttt11ttffft1tt11ttti::i;;;:;iii;;;i;i1ttftfffft1tt1111tttt1tt1tffftt1111tffftfLffftt\ntfttffffftt11ttftfft1tffftttff1i;:,...;1;;;;;i;:;i,..,:;i1tft111tt1111ttt11tf1tffffftttttttttttttfft\n111tfffffftttffftttt11tfft11i;:,......,11;iii;;iii,,,....,:;i1111t1111tt111tft1fffffttfffftt11tffLLf\n1tttffffft11ttffftt1111t1;;,..........,i1t11ii11i:.,........,111111111111t11tt1tfffttfffffffttfLffLf\ntfttttftt11t11ttt11ttt11:..............;iiiiiii11,,,......,,,itt11t1111111111t1tffttttffffftt1tfffLf\ntffttttttttfttt111ttttt;................,;;;i;;ii,...........;ttt11111111ttt111tttfLffttfft1ttttffft\nttttttttttttttt111ttt11:.................:;;;i;::............;ttt1111111tttftttttffLLffttttffffttttf\ntfffttttftttttt11ttttt1,.................,;;;;;;:............:ttttt11111tttffftttffffffftttttttffttf\ntffft1ttfffftf111ttttt1,..................:;;;:::............:1tt11111111ttffttttffLLfLfttfffffffttf\ntffft1tttttttt111ttttti...................,;;::::............,111111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt111ttttt:...................,::::::,:::,.......,1t1t11111tt111tttttfffLLLfttfffftffttf\nttttt1tttttttt111tttt1,....................,::::::;;;ii:......ittt11111ttt1ttff1tfffffLftttfftfffttt\nttttt1ttttt11t111tttti.....................,:::::,;;;ii;,.....itttt1111tt111tttttttttttttttttttffttt\nttttt1tttttttt11ttttt;........ .............:::::,;;;ii;,.....:1t1t1111111tttttttfttttttt1tttttffttt\n1tttt1tttttttt11ttttt:.... :i;:.............:::::..,;;i:.......it11111111ttff1111tfttttt11tttttffttt\n11tt11tttttt1111111t1,...,;iiii;, ..........::::,. .,:,......;111111111ttttt1111ttttttt111ttttttt1t\n11111111111111111111i..,.,;;;iii;...........:::::.......,....itt1111111111111111111111111111111tt111\n11t111111111111111111;....::;;ii;...........::::,..........,;111111111111111111111111111111111111111\n1111111111111111111111, ...,:;;;,............,,:,.....,,:;11tt11111111111111111111111111111111111111\n1111111111111111111111i:,....... ............,,:,.....:1tttttt11111111111111111111111111111111111111\n1111111111111111111111111;.,. ..............;;;:,,....,it11ttt11111111111t11111111111111111111111111\n111111111111111111111111i,..................;ii;:,.....,1t1ttttt1111111111t1111111111111111111111111\n111111111111111111111111:...................;ii;;:......;ttttttttttt11tttt1t111111tt11111111ttt11111\n111111111111111111111111:...................:i;:;;,.....:t1tttttttttttttttttttttt1tttttttttttttt1111\n","ttffftfffttttttttttttfffttftt111ttttt111tttt111111ttttttttt11tttt111111ttttttttttttttttttttt111111tt\nttfftttttttttttttttffLLftfffffffftttt111111111t11tffffffttttt11111111111111tttftttfttttttttt1111tttt\nttttttttttttttttffffLftttfffffffLLfft111ttttt111tfffffffftttttttt11111ttttfffffftfLLfttttttt111ttttt\nttttttttttttttttfffffttffffffLLLfffttt1ttttttt1tffffffffffttttttt1111ttffffffLffttffffffttt1111tttt1\nttttttttttttfffftttffttffffffffftttftt1t1iii11111tfffffftttttt11tt111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttffft11i:,,,::::;1tfffftttfffft11t111tt111ttfffLLfttfftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfft1;:,,,,,,,,,:tttttttffffffftt1111tftt111tttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffLfftt1::,,,,,:::::;itfttttffffffffftt111tft1ttfttttfLLfttttfffffftttttt\ntttttttfLLLLLLLLLLfttttffftffffttf1,,,,:;iii1111itftttfffffffffftt1111t11ttffttttttttttffffffffffttt\ntttffftfLLLLLLLLLLfttfftfffttffffft:,,,:;iii111ii1tttttttffffffftt1111tft1ttt1tftttt11tffffLLLLLfttt\nttffffffffLLLLLLLfftfLLftttfLfffLft:,,:;;;;iiiiii1tffftt11tfffft111111ffftt1t1tttttttttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttfLLfffft;:::;;;iii;iii1tffffft11tttt11tt111fffttffft1ttfftttffLLLLLLLLffL\ntttfftttttfffftttttttttttttfLLLffffti;;;i;;iii;iitfffffffft1tttt1t1111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttffttfLftfft1i;;;;;iiiii11ffffftttt1tffft11111tfttffftttttttttttttfLLffffftt\nttffffffffftttfffffffftttfftttftttttt1;;;;;iiiii11ttffft11tttttfftt111tt1tffttffttfffffLLffffffLffLL\nttffffffffftttffffffffttttttttttfftt11i;;;;;;ii1111ttt111tfft1ttft11111tt1ttttfftttffffLLLfttffLLLLL\ntttffffffffttfffffffft11ttt1111ttff1;i;;;;;;;ii;iiii111ttfffft11t11111tfftttttttt1tffffLLLftttfLLLLf\nttttttttfffttffftt1tt1tttft1111tt1;,.:i;;;;;iii::;;,,:;i1tfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntfttttttttttttttttt11ttffft1tti;:,...,ii;;;;ii;::;;.....,:itftt1tt1111tttt1tt1tffftt1111tffftfLffftt\ntfttffffftt11ttftfft1tttft1i;:,.......:11iiii;;;:;:,,,,,,..;t111tt1111ttt11tf1tffffftttttttttttttfft\n111tfffffftttffttttt11tti;:,..........,1tt1ii11i;;,,.,.,,,,,1111t11111tt111tft1tffffttfffftt11tffLLf\n1tttffffft11ttttttt1111;...............:11iiii;;1;.,.,,.,..,1t11111111111t11tf1tfffttfffffffttfLffLf\ntfttttftt11t11ttt111tt1,................,;;;ii;i1:.........,111t1111111111111t1tffttttffffftt1tfffLf\ntffttttttttftt11111ttt;..................:;;;;:;i:..........itttt11111111ttt111tttfLffttfft1tttttfft\ntttttttttttttt1111ttt1:..................,;;;;:::,..,.......;tttt1111111tttffttttffLLffttttffftttttf\ntfffttttftttttt11tttt;....................:;;::::,,.........:ttttt111111ttttfftttffffffftttttttffttf\ntffft1ttfftttt111tttt:....................,;:::,:;;;;:,.....:1ttt11111111ttffttttffLLfLfttfffffffttf\ntffft1ttfttttt111ttt1,.....................:::,,::;iii;,.....itt1111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt111ttt;......................,::,,::;;;i;,.....:111111111tt111tttttfffLLLfttfffftffttf\nttttt11ttttttt111tt1:......................,:,..:,:;;i;.......:tttt1111ttt1ttffttffffffftttfftfffttt\nttttt1ttttt111111tt1:......................,:,..:. .:;:......,itttt1111tt111ttttttfttffft1tftttffttt\nttttt1tttttttt111tt1:........... .........,,,.,:...........,1tt11tt111111ttt1ttttffftttt1tftttffttt\nttttt1tttttttt11ttti,......... .,..........,,,.,:..........,it11111111111ttft1111ttttttt11tttttffttt\n11tt11ttttt111111tt:..........,::;,........,,,.,:......,:i11t11111111111ttttt1111ttttttt111ttttttt1t\n11111111111111111111:........:;;ii;.........,,.,,.....i1ttt11t11t111111111111111111111111111111tt111\n1111111111111111111ti........,:;;i;,...........,,.....;t11111111111111111111111111111111111111111111\n11111111111111111111ti;,......,:;;;. ......,:,.,:.....,1t1t11111111111111111111111111111111111111111\n11111111111111111111111;........,,,........:;::,,......;t1tttt11111111111111111111111111111111111111\n1111111111111111111111i......... ........:;;::,......,1ttttt11111111111t11111111111111111111111111\n1111111111111111111111:........ ...........:;;;::.......it1ttttt1111111111t1111111111111111111111111\n111111111111111111111i,........,......... ,ii;;::,......:ttttttttttt11ttt1tt11t111tt111111t1tttt1111\n11111111111111111111t;.........,..........:iiii;::,.....,1ttttttttttttttt1ttt1ttt1tttttttttttttt1111\n","ttttftfffttttttttttttfffttttt111ttttt111tttt111111ttttttttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLLftffftfffftttt111111111t11tffffffttttt11111111111111tttftttfttttttttt1111tttt\nttttttttttttttttfffffftttfffffffLLLft111tttttt11tfffffffftttttttt11111ttttfffffftfLLfttttttt111ttttt\nttttttttttttttttfffffttfffffffffffft11111;:::;;i1tffffffffttttttt1111ttffffffLffttffffffttt1111tttt1\nttttttttttttfffftttffttffffffffftttft1;::,,,,,,,,ifffffftttttt11tt111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttff1;:,,,,,,,,,,:itfffftttfffft11t111tt111ttfffLLfttfftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffttt1:,,,,:::;;i;;1tttftttffffffftt1111tftt111tttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffLfftt;,,,,,:;ii11t11tfttttffffffffftt111tft1ttfttttfLLfttttfffffftttttt\ntttttttfLLLLLLLLLLfttttffffffffttt;,,,,:;;;iii1111ttttfffffffffftt1111t11ttffttttttt1ttffffffffffttt\ntttffftfLLLLLLLLLLfttfftfffttttfft:,,,,:;;;iiiiii1tttttttffffffftt1111tft1ttt1tftttt11tffffLLLLLfttt\nttffffffffLLLLLLLfftfffftttfLftfLfi;;;;;;;iii1iii1tffftt11tfffft111111ffftt1t1tttttttttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttfLLftfffi;;;i;;;;iiiii1fffffft11tttt11tt111fffttffft1ttfftttffLLLLLLLLffL\ntttfftttttffffttttttttttttttffftffft;;;;;;;;iiii1tttfffffft1tttt1t1111tfftfffftttttttttttfLLLLffffff\nttffffffffftttfffffffffttftttffftfft1;;;;;;;;iii1ttfffffttt1tffft11111tfttfLftttttttttttttfLLftffftt\nttffffffffftttfffffffftttfftttftttt1i;;;;;;;;ii111tffftt11tttttfftt111tt1tffttffttfffffLLffffffLffLL\nttffffffffttttfffffffft1tt1111ttt1::i;;;;;;;i1i;i111ttt11tfft1ttft11111tt1ttttfftttffffLLLfttffLLLLL\ntttffffffffttffffffftt111tt111i;:,..;i;;i;iii11;;;;,::;1tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\nttttttttfffttffttttt111ttt1;:,......,ii;;iii;11;:;;,...,:1fffft1111111ttftt1ttfft11ttffffffftfLLLLLf\ntftttttttttttt11tt111tt1;:,..........;11iii;1t1;:;;,,,,,.:tfttt1tt1111tttt1tt1tffftt1111ttfftfLffftt\ntfttffffftt11tttttt111:..............:1tt1ii11i::;:,,,,,,,if1111tt1111ttt11tf1tfffffttttttttttttffft\n111tfffffft1tfftttt11;................:ii;;i;:,,;;,.,,.,..it1111111111tt111tft1tffffttfffftt1ttffLLf\n1tttffffft111tttttt1i,............,....:;;;;;;:,1i,..,,,..;ttt11111111111t11tt1tfffttfffffffttfLfLLL\ntfttttftt1t111ttt111;..................,;;;;;:,:1i,.......it111t11t1111111111t1tffttttffffftt1tffLLf\ntffttttttttft1111111,...................:;;;::,,;;,.......it1tttt11111111ttt111tttfLffttfft1tttttfft\ntttttttttttttt1111t;....................,;;:::,.:,..,.....:tttttt1111111tttffttttffLLffttttffffttttf\ntfffttttfttttt111t1,.....................;;:::..:,........,1tttttt111111ttttfftttffffffftttttttffttf\ntffft1ttfftttt111ti......................::::,..:,.....,:::i1ttt111111111ttffttttffLLfLfttfffffffttf\nttfft1tttttttt111t:......................,:::,..:,....,:;iiiitt11111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt1111;.......................,:,...:,....:;;iiii1111111111tt111tftttfffLLLfttfffftffttf\nttttt11ttttttt111t;...................,,,,,,,...,......,;;ii1111ttt1111ttt1tfffttffffffftttfftfffttt\nttttt11tt11111111i,.................,::::::,....:........,,:i1111tt1111tt111ttttttfffffft1tftttffttt\nttttt11ttttttt11t;.................,:;;;;;;,....:.... .. .,1t11ttt1111111ttt1ttttffffttt1tftttffttt\nttttt11ttttttt1111:................,::::;i:.....:.,..,,,:;i11tttt111111111tft1111ttttttt11tttttffttt\n111tt11ttt1111111t1:. ............::::;:.....,:....it11111tt1tt1111111ttttt1111ttttttt111ttttttt1t\n11111111111111111111i:,..............,,,,......,:....:1tt111111t1111111111111111111111111111111tt111\n11111111111111111111t11:........,.... . ..,....:.....it1t111t11111111111111111111111111111111111111\n11111111111111111111111:,..................:....:.....:1ttt11t11t11111111111111111111111111111111111\n1111111111111111111111i,...................:....:......it1ttttt1tt11111111111t1111111111111111111111\n1111111111111111111111;....................,,..,:,.....:tttttttt111111111111111111111111111111111111\n1111111111111111111111:.................. .::..,:......,1t1ttttt11t1t11111t1111111111111111111111111\n11111111111111111111ti,.................. ,;::,,:.......itttttttttttt111t1tt11t111tt111tttt1tttt1111\n11111111111111111111t;....................,;;;:,:.......:tttttttttttttttt1ttt1ttt1tttttttttttttt1111\n","tttttttttttttttttttttffftttt1111111tt1111tt1111111ttttttttt11tttt1111111ttttttttttttttttttt1111111tt\nttfttttttttttttttttffLfttffttfffttttt1111111111111tffffftttt111111111111111tttffttftttttttt11111tttt\nttttttttttttttttffffLftttfffffffffftt11111iii1i11ffffffffttttttt111111tttttffffftfLLfttttttt111ttttt\nttttttttttttttttffffftttffffffffffttt11;::,,,,,:;1ffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttffttffffffffttttt1;:,,,,,,,,,,:tffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLfttttttft;,,,,,,,,:::,:itfffftttfffft11t111tt111ttfffLLfttfftt1ttt11tttttt\nttttttttffLLLLLLLffttfLLLfttfffttt;,,,,,,:;ii1111tttttttffffffftt1111tftt111tttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLffttfttttffffft1:,,,,,:;iii11111fttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttfLLLLLLLLLffttttffftfffftt1:,,,,,:;;;iiiii1ftttfffffffffftt1111t11ttffttttttt1ttffffffffffttt\ntttffttfLLLLLLLLLLfttfttffftttttft::;;::;;iiiiiii1ttttttttfffffftt1111tft1ttt1tffttt11tffffLLLLLfttt\nttffffffffLLLLLLffftfffttttffftfLfi:;i;;;;;iiiiii1tffftt11tfffft111111ffftt1tt1tt1tttttfffLLLLLLffff\ntffftfttttfLLLfftttttffffttfLLftfff;:;;;;;;;iiiii1tffffftt1tttt11tt111fffttffft1ttfftttffLLLLLLLLffL\ntttttttttttfffttttttttttttttffffffft;;;;;;;;iiii1ttffffffft1ttt1111111tfftfffftttttttttttfLLLLffffff\nttffffffffftttfffffffffttft1tfffttt1i;;;;;;;;iii1ttfffftttt1tffft11111tfttffftttttttttttttfLLfffffft\nttffffffffftttfffffffftttffttttti::i;;;i;;;;ii1111tttttt11tttttfftt111tt1tffttffttfffffLLffffffLLfLL\nttffffffffttttfffffffft1ttt11i;:,.,ii;;iiiii11:i1111tt111tfft1ttft11111tt1ttttffttttfffLLLfttfLLLLLL\ntttffffffffttffffffftt111i;:,......:11;;iiiii1::;;;::;i1ttffft11t11111tfftttttttt1ttffffLfftttLLLLLf\nttttttttfffttfttt1111ii;:,.........,it1iii;;1ti::;;,..,:1tfffft1111111ttttt11tfft11ttffffffftfLLLLLf\ntfttttttttt1tt111111;,..............;1111ii1ti:;:;;,,,,.:tffftt11t1111tttt1tt1tffftt1111ttfftfLffftt\ntfttfffftt1111ttttti,................:;;;i;;;,,:;;:,,,,,,itt1111tt1111ttt11tf1tffffftttttt1tttttffft\n111tfffffft1ttttttt:..........,,......:;;;;;;,.,i;,,,,,,.;t111111111111t111tft1tffffttfffftt1ttffLLf\n111ttfffft111ttttt1,............,.....,;;;;;:,.:1i,......;11t111111111111t11tt1tfffttfffffffttfLfLLL\ntttt1tftt11111tt11;....................:;;;;:,.:1i,......:tt11111111111111111t1tffttttffffftt1tffLLf\nttft11ttttttt1111i,....................,:;:;:.,,;:,......:111tttt11111111tttt11tttfLffttfft1tttttfft\ntttttt1ttttttt111;......................,;:;:..,:,.......:11tttttt111111tttffttttffLLffttttffffttttf\ntffft11ttttttt11i,.......................:::,..,:,.......,1tttttttt11111ttttfftttffffffftttftttffttf\ntffft11ttttttt11;........................,:::,..:,........;11tttt11111111ttffttttffLLfLfttfffffffttf\ntttft11ttttttt11;......................,:;;;;;;,:,........,111tt1111111111tttttttffLLfLfttfffffffttf\ntfttt11ttttttt11i.....................:::;;;;;:.:,....... ,1t11111111111t111tftttfffLLLfttfffftffttf\ntttt111ttttttt11:....................,:::;;;;;.,:,..........,:;iii11111ttt11tffttffffffftttfftfffttt\nttttt11tt1111111,....................,:::;;;;,.,:.......... .::;;;;ii11111ttftttftfffft1tftttffttt\nttttt11ttttttt11i................. ....,,,,.....:.... ........,:::;;;;ii111tt1tttfffffttt1tftttffttt\nttttt11ttttttt11ti,. .........,... .. ....,..:,.. ....,:::;;;iii1ttt1111ttttttt11tttttffttt\n11111111ttt111111t1ii;;;,.......................:..,.:1;:,,.. ..,;i1i1t1ttt1111ttttttt111ttttttt1t\n1111111111111111111ttttt:,......................:.. ,tttt111i;;;;i1tt1111111111111111111111111tt111\n111111111111111111111111:,..................,...:.....it1t1ttttttttt11111111111111111111111111111111\n111111111111111111111111;,..................,...:.... ;tttt11t11t11111111111111111111111111111111111\n111111111111111111111111:...................,..,:.....:ttttttttttt1111111111111111111111111111111111\n11111111111111111111111i,...................:,.,:.....,1ttttttttt11111111111111111111111111111111111\n11111111111111111111111;...................,::..:.....,1ttttttttt1t11t1111t1111111111111111111111111\n11111111111111111111111:.................. :;:,,:......itttttttttttttt111ttt11t1111t111t1ttttttt1111\n111111111111111111111t1:.................. :;;:::......;ttttttttttttttttt1ttt1ttt11ttttttttttttt1111\n","tttftttttttttttttttttffftttt1111111tt1111tt11111111tttt1ttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLfftfftttffttttt111111111111ttffffftttt1111111111111111ttffttfttttttttt1111tttt\ntttttttttttttttttffffftttffffffffffft111tt111111ttffffffttttttttt11111tttttffffftfLLftttttt11111ttt1\nttttttttttttttttffffftttffffffLffftt111i;;:::::;1tffffffffttttttt11111tfffffffLfftfffffftttt111ttttt\nttttttttttttfffftttffttffffffffttttt1i;,,,,,,,,,,;fffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLftttttttti:,,,,,,,,,,,,;tfffftttfffft11t111tt111tttffLLfttfftt1tt111tttttt\nttttttttffLLLLLLLffttfLLffttfffttti,,,,,,:;;;ii;itttttttffffffftt1111tftt1tttttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffffft1:,,,,::;i111tt1tfttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttfLfLLLLLLLLfttttffftfffftti,,,,,,:;;iiii1i1ftttfffffffffft11111t11ttftttttttttttfffffLLfLfttt\ntttffttfLLLLLLLLLLfttfttffftttttf1,,::,:;iiiiiiii1ttttttttfffffftt1111tft1ttt1ttfttt11tffffLLLLLfttt\nttfffftfffLLLLLfffftfffttttffftfLf;:ii;;;;iii11ii1tfffft11tfffft111111ffft11t1ttt1tt1tffffLLLLLLLfff\ntffftfttttfLLLfttttttffffttfLLftff1:;ii;;;;iiiiii1ffffftt11tttt1ttt111fffttfffttttfft1tffLLLLLLLLffL\ntttttttttttfffttttttttttttttfffffff1;;;;;;;iiiii1tffffffftt1ttt1111111tfftfffftttttttttttfLLLLffffff\nttffffffffftttffffffffftttt1tffftft1i;;;;;;;iiii1ttfffffttt1tffft11111tfttfffttt1tttttttttfLLftfffft\nttffffffffttttfffffffft1tftt1tft1;ii;;;;;;;;ii1111ttftft11tttttfft1111tt1tffttffttfffffLLffffffLffLL\nttffffffffttttfffffffft1tttt1ii;,.:i;;;i;iii111t111ttt111tffttttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttfffftfttt111ii;:,....,i1;;iiiii1i:;;;i11111tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\ntttttttttffttfttt1111ii;:,.........;11iiii;;11;::;;,:;1tftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntft1ttttttt1t1111111:,.............:1tt1iii1t1;;:;:,,.,:1tffftt11t1111ttt11tt1tffftt1111ttfftfLLfftt\ntttttffttt1111ttttt;................:iiiiii11,:;:;:,,,,.:tttt111tt1111ttt11tf1tffffftttttt1ttttttfft\n1tttfffffft1tftttt1,.................,;;;;:;:.,:i:,,,,,,,it11111111111tt111tft1tffffttfffftt11tffLLf\n111ttfffft111ttttti...................:;;;;;:,,:1;.......;t1tt11111111111t11tf1tfffttfffffffttfLfLLf\ntttt1tftt11111ttt1:...................,;:;;;:..;1;.......:tt111t11t1111111111t1tffttttffffftt11ffLLf\nttft1111ttttt1111;.....................:;:;;,..,;:.......,111tttt11111111tttt11tttfLffttfft1tt1tffft\n1tttt11ttttttt111,.....................,::;;,..,:,.......,1ttttttt111111tttffttttffLLffttttffffttttf\ntfftt11ttttttt11;.......................:::;,..,:,........itttttttt1111tttttfftttffffffftttftttffttf\nttfft11ttttttt11,.......................,;;;;:,,:,........;11tttt11111111ttffttttffLLfLfttfffffffttf\ntttft11ttttttt1i,.....................,::;i;;;,,:.........:111tt1111111111tttttttffLLfLfttfffffffttf\nttttt11ttttttt1i.....................,:::;i;i:.,:,........,1t1111t111111t111ttfttffLLLLfttfffttffttf\ntttt111ttt11t11;.....................,:::;;;;,.,:..........1tt111tt11111ttt1tffttffffffftttffftffttt\nttttt11t1111111:......................:::::,...,:..........:i1tttt1tt111t1111tttttfttffft1tttttffttt\nttttt11tttt11t1i.......................... ....,,.......... .,,:i11iii11111tt1t1ttffffttt1ttttttfttt\nttttt11tttttt111;... ......................,:............ .,:::;iiii1111111tfttttt11ttttttfttt\n11111111t1111111t1i;;::::......................,:..,:.. .......,::;;;;;;iii11111tttttt111ttttttt1t\n11111111111111111ttttttt1,.....................,:......:,.. ..,:;;;:;;;iiii11111111111111111tt111\n111111111111111111111111i,.................,::..,.... ,tt1ii;,,.. ..,:i;;iii111111111111111111111111\n111111111111111111111111i,.................,;:,,,......1tttttt11i;;::itt11t1111111111111111111111111\n111111111111111111111111i,................ ,;:::,......it1t1tttttttttt11tt11t111111111111111111t1111\n111111111111111111111111;................. ,;;::,......it1tttttttt1111111t11111111111111111111111111\n111111111111111111111111:................. .;;:::......;t1ttttttt1ttttt111t1111111111111111111111111\n111111111111111111111111,...................;i;::,.....;tt1ttttttttttt11tttttttt111t111111tttttt1111\n111111111111111111111111:...................:i;:::.....ittttttttttttttttttttt1ttt111tttttttttttt1111\n","tttftttttttttttttttttffftttt1111111tt1111tt11111111tttt1ttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLfftfftttffttttt111111111111ttffffftttt1111111111111111ttffttfttttttttt1111tttt\ntttttttttttttttttffffftttffffffffffft1111tttt111ttffffffttttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttffffftttffffffLffftt11111i;iiii1tfffffffffttttttt11111tfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttffttffffffffttttt11;::,,,,,,::1fffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLftttttttf1;:,,,,,,,,,,,itfffftttfffft11t111tt111tttffLLfttfftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLffttfffttt1,,,,,,,::::::itttftttffffffftt1111tftt11t11tfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffLfft1:,,,,,:;ii11111ffttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttfLfLLLLLLLLfttttffftfffftt1:,,,,:;;iii1111fftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfLLLLLLLLLLfttfttffftttttf1,,,,,:;iiii;iii1ttttttttfffffftt1111ttt1ttt1ttfttt11tfffffLLLLfttt\nttfffftfffLLLLLfffftfffttttffftfLt:;;;:;;iiiiiii11tfffft11tfffft111111ffft1tt1ttt1tt1tfffLLLLLLLffff\ntffftfttttfLLLfttttttffftttfLLftff1;;;i;;;iii1iiitfffffft11tttt1ttt111fffttfffttttfftttffLLLLLLLLffL\ntttttttttttfffttttttttttttttffftfffi;;;;;;iiiiii1tffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttffffffffftttt1tffftffti;;;;;;iiiii1tttffffttt1tffft11111tfttfffttt1tttttttttfLLftfffft\nttffffffffftttfffffffftttftt1tftt111i;;;;;;;;ii111tfftft11tttttfft1111tt1tffttffttfffffLLffffffLffLL\ntttfffffffttttfffffffft1tt111111i::i;;;i;;;;i11t111ttt111tffttttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttfffftfftt111111i;:,..,ii;;iiiii11:;;;111111tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\ntttttttttffttfttt1111111i;:,.......:11;iiii;11;::;;,:i1tftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntfttttttttt1t1111111i;:,...........:1t1iii;itt;;;;:.,,,:itffftt11t1111ttt11tt1tffftt1111ttfftfLffftt\ntttttffftt1111ttttt1:..............,i111ii1tti:;;;:,,,,.,1tft111tt1111ttt11tf1tffffftttttt1ttttttftt\n111tfffffft1tfttttt;.................:;;;;;;;,.:i:.,,,,,.;t11111111111tt111tft1tffffttfffftt11tfffLf\n111ttfffft111ttttt1,..................:;;;;;:,.:1;.....,.:11tt11111111111t11tf1tfffttfffffffttfLfLLf\ntttt1tftt111111tt11,..................,;;;;;:,.;1;.......,1t111t11t1111111111tttffttttffffftt11fffLf\ntttt111tttttt11111;....................::;;;,..,;:.......,i11tttt11111111tttt11tttfLffttfft1tt1tffft\n1tttt11ttttttt111i.....................,::;;,..,:.........ittttttt111111tttffttttffLLffttttffffttttf\ntfftt11ttttttt111,......................::::,..,:,........itttttttt11111ttttfftttffffffftttttttffttf\nttfft11ttttttt11;.......................,:::,..,:,........;11tttt11111111ttffttttffLLfLfttfffffffttf\ntttft11ttttttt11:........................,:,,..,:,........,111tt1111111111tftttttffLLfLfttfffffffttf\nttttt11ttttttt11,.......................,,::,..,:..........it11111t11111t111tttttffLLLLfttffftfffttf\ntttt111tttt1t11i......................::;;;;;:.,:..........;t11tttt11111tt11tffttffffffftttffftffttt\nttttt11tt111111:....................,:::;i;;i,.,:..........;ttttttt1111111111tttttfttffft1tttttffttt\nttttt11ttttttt1;....................,:::;i;;:..,,...........:;iii1111111111tt1t1ttfffttt11ttttttfttt\nttttt11tttttt111:...................,:::;;;;...,,........... .,:;;;:;i1111ttt1111ttttttt11ttttttfttt\n11111111t11t11111;,.. ...............,,,....,:.... .......,:::::;;11tt11111111tt1tt1111ttttttt1t\n11111111111111111t11i;;;:.......,..... ......,,....,,. ...,::;::;i1111111111111111111111111tt111\n11111111111111111111tttti,...................,.,,... :1i:,. .,,;;i1111111111111111111111111111111\n111111111111111111111111i,...................:,,,.....ittt1i:,.. ,1tttt111111111111111111111111t1111\n111111111111111111111111;,...................,,::.... .111tttt1ii1ttt11111111t11111111111111111t1111\n111111111111111111111111;....................,:::......it1t11ttttt1111111111111111111111111111111111\n111111111111111111111111;....................,::,......;t1tttttt11tt1tt111t1111111111111111111111111\n11111111111111111111111t:....................::::......:1111ttttttttttt1tt11ttt11111111111tttttt1111\n11111111111111111111111t:....................:;::,.....,1tttttttttttttttttttttttt111tttttttttttt1111\n","tttftttttttttttttttttffftttttt11ttttt1111tt11111111tttt1ttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLfftfffttffttttt111111111t11ttffffftttt1111111111111111ttffttfttttttttt1111tttt\ntttttttttttttttttffffftttffffffffffft1111tttt111tfffffffttttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttffffftttffffffLfffttt1111ttttt1tffffffffffttttttt11111tfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttftttffffffffttttft1i;:;;;;;i11tfffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLfttttttfft1;:,,,,,,,,:1ttfffftttfffft11t111tt111tttffLLfttffft1ttt11tttttt\nttttttttfffLLLLLLffttfLLffttfffttti::,,,,,,,,,,;ttttftttffffffftt1111tftt11t11tfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfffffti,,,,::;;;iiiii1ffttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttfLLLLLLLLLLftttttfftfffftt1:,,,;iii1111111fftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfffLLLLLLLLfttfttffftttttff:,,:;;;iiii1ii1tttttttttfffffftt1111ttt1ttt1ttfttt11tfffffLLLLfttt\nttfffftfffLLLLLfffttfffttttffftfLt;:,:;;;;iiiiii11tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntffftfttttfLLffttttttffftttfLLftff1;;;;;iiiii;i11ttfffftt11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttfffLtfffii;;;;;ii;;iittffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttft1tffftffti;;;;;iiiii1ttttffffttt1tffft11111tfttfffttt1tttttttttfLLfffffft\nttffffffffftttfffffffftttfttttfttttti;;;;;iiii1111tfftft11ttttffff1111tt1tffttffttfffffLLffffffLffLL\nttffffffffttttfffffffft1tt11111tft11i;;;;;;;iit11111tt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffftttfffftfftt1111111111i:,;i;;;;;;ii1i;;;111111tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\nttttt1tttffttfttt11t111tttt1i;:,...:1i;ii;ii;1i:;;i;;i1tftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntfttttttttt1tt1111111ttt1;:,,.......;ti;iii;it1;;;;,..,:i1fffft11t1111ttt11tt1tffftt1111ttfftfLffftt\nttttfffftt1111ttttt111;:,...........;tt11iii1t1::;;,,,,,.,1ft111tt1111ttt11tf1tffffftttttt1ttttttftt\n111tfffffft1ttttttt11,..............:i11iii111:,;;,,,,,,,.;t1111t11111tt111tft1tffffttfffftt11tfffLf\n111ttfffft111ttttttt;.................:;;;;;;:.,ii,....,,.:1tt11111111111t11tf1tfffttfffffffttfLfLLf\ntttt1tftt11111ttt111:.................,;;i;;;,.,1i,.......:t111111t1111111111tttffttttffffftt11fffLf\ntttt11ttttttt1111111,..................:;;;;;,,,;;,.......:11tttt11111111tttt11tttfLffttfft1tt1tffft\n1tttt11ttttttt11111i...................,;;;;:,..:,........:1tttttt111111tttffttttfLLLLfttttffffttttf\ntfftt11ttttttt11111:....................:i;;:,.,:,........,1ttttttt1111ttttffftttffffffftttttttffttf\nttfft11ttftttt111ti,.....................;;::,..:,........,i1tttt11111111ttffttttffLLfLfttfffffffttf\ntttft11ttttttt111t;......................,::,...:,.........;11t11111111111ttt1tttffLLLLfttfffffffttf\nttttt11ttttttt111t:......................,::,...:,...,,....it11111111111t111tttttfffLLLfttfffftffttf\ntttt11tttt11tt1111,.......................,,,...:,...,:;;;;itt11ttt1111ttt1ttftttffffffftttffftffttt\nttttt11t111111111i.........................,,...:,...,:;iiii11111t111111t111tttttttttffft1tftttffttt\nttttt11ttttttt111,.........................,,...:....,:;;iii11111111111111ttttt1ttfffttt11ttttttfttt\nttttt11ttttttt111;...................,,,,..,....,......,:;ii1ttt1111111111ttt1111tfttttt11ttttttfttt\n11111111t11t11111t;...............,:::::::..,...:.........,,it11tt1111111tttt1111ttt1tt1111ttttttt1t\n1111111111111111111,.............:::::;;i:......:..... :1ttttt111111111111111111111111111111t111\n11111111111111111111;,.. ........,::::;;:.......,... ,i;;;i1tttt111111111111111111111111111111111111\n11111111111111111111t11i,.........,:::;;. ..,:,.:.....itttttttt1111111t111111111111111111111111t1111\n11111111111111111111111t;...........,,,.... ,:,,:......it1111ttt1111111111111111111111111111111t1111\n111111111111111111111111;.......... .... .:,,:,. ...:tttt11tt111111111111111111111111111111111111\n111111111111111111111111;....................::::..,,..,1tttttttt1tttt1111t1111111111111111111111111\n11111111111111111111111t;....................::::..,,...;t1tttttttttttt1t11ttttt111t111111tttttt1111\n11111111111111111111111ti....................:;::,......:11tttttttttttttttttttttt11t11t1111ttttt1111\n","tttftftttttttttttttttfffttttt1111tttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLfttfffttffttttt111111111t11tfffffftttt1111111111111111ttffttfttttttttt1111tttt\nttttttttttttttttfffffftttffffffffffftt11ttttt111tffffffftttttttt11111ttttttffffftfLLfttttttt1111ttt1\nttttttttttttttttffffftttffffffLfffttttt11tttt11tffffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttffttffffffffftttft1tttt11ttt1ttfffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLftttttttfft11iiiiiittt1ttfffffttfffft11t111tt111tttffLLfttffft1ttt11tttttt\nttttttttfffLLLLLLffttfLLffttfffttfft;::,,,,,,:itttttffttffffffftt1111tftt11t11tfLLftttt1tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffffft11i:,,,,,,,,:,;fffttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttfffttffftt1;:::::;;;iii;:tfftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfffLLLLLLLLfttfttfLfttttfft;:;iii111111i;1ttttttttffffffftt1111ttt1ttt1ttftt11ttfffffLLLLfttt\nttfffftfffLLLLLLffftfffttttfffffLf;:;;;;ii1iiiii11tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntffffftttffLLffftttttffffttfLLffffi:i;;;;;ii;ii11ttffffft11tttt1ttt11tfffttffft1ttfftttffLLLLLLLLffL\ntttttttttttffftttttttttttttfLfftffi;ii;ii;i11111tfffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttftttfLftf1;;;;;;;;i1111tttffffftttttffft11111tfttfffttt1tttttttttfLLfffffft\nttffffffffftttfffffffftttfftttftttt1i;;;;;iiii1111ttftft11ttttffff1111tt1tffttffttfffffLLfffffffffLL\ntttfffffffttttfffffffft1ttt1111tfftt1i;;;;iii1tt111ttt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttffffttftt111t11111ttfft1;;;;;;ii1ti;;i11111ttffft11t11111tfft1tttttt1tfffffLfftttfLLLLL\nttttt1tttffttfttt111111tttt11111tti:i;;;;;;iii1;:;i1i1ttftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntfttttttttt1tt11t1111ttfftt1tt1i;:..;i;;;;;iii1i:;;:,,:;i1ffftt11t1111ttt11tt1tffftt1111ttfftfLffftt\ntfttfffftt1111tttttt1tttttt1i;,.....:11;ii;;;iti:;;,,,...,:1t111tt1111ttt11tf1tffffftttttt1tttttfftt\n1t1tfffffft1tttttttt111tti:,....,...,i11iii;i1ti;i,,,,,,,,.,i111t11111tt111tft1tffffttfffftt11tffLLf\n1t1ttfffft111tttttt1111:,...........,i1t1iii11i,;1,....,,...;t11111111111t11tf1tfffttfffffffttfLLLLf\ntftt1tftt1tt11ttt111tt;..............,:;i;;;;;,.i1,.........:11111t1111111111tttffttttffffftt1tffLLf\ntfftttttttttt111111ttt:................,;;i;;:,,:;,.........:tttt11111111tttt11tttfLffttfft1tt1tffft\ntttttt1ttttttt1111ttti,................,:;;;;:,.,:..........,ttttt111111tttffttttfLLLLfttttffffttttf\ntffft11ttttttt1111ttt;..................,;;;::,.,,..........,1tttt111111tttffftttffffffftttttttffttf\ntffft11ttftttt111tttt:...................:;;::..::,,.........ittt11111111ttffttttffLLfLfttfffffffttf\ntffft11ttttttt111ttt1:...................,;::,,::;;;i;,......;t11111111111ttt1tttffLLLLfttfffffffttf\ntttft11ttttttt111ttt1,....................,::,,::;;iii;. ...,it11tt11111t111tttttfffLLLfttfffftffttf\nttttt1tttttttt111t1ti.....................,:,,,,::;iii;.....,it11tt1111ttt1ttftttffffffftttffftffttt\nttttt11tt11111111t1ti......................,:,. ,,,:;i:.......;11tt11111t111tttttttttffft1tttttffttt\nttttt11tttt11t11tttt;......................,,,..,, .,,.......,;11111111111ttttt1ttfffttt11ttttttfttt\nttttt1tttttttt111ttt:.......................,,..,,.....,....:1ttt111111111ttt1111tfttttt11ttttttfttt\n1111111ttt1t11111tt1,.......................,,..:,.........:1t11111111111tttt1111ttt1ttt111ttttttt1t\n11111111111111111111;....... ............,,..:,.....,;ii1t1t111111111111111111111111111111111t111\n111111111111111111111,.... .,::,................:....,11ttt11tt11t1111111111111111111111111111111111\n111111111111111111111;.....;i;;;,...............:,....it1111ttt1tt1111t111111111111111111111111t1111\n1111111111111111111111i:.,iii;;i:.......... ,::,:......itttttttt1111111111111111111111111111111t1111\n111111111111111111111111i,:;;;ii;,......... ,;;::,.....:1ttttttt11111111111t111111111111111111111111\n111111111111111111111111i,.,::;;:.......... ,;;;::......itttttttt1tttt11t1tt111111111111111111111111\n111111111111111111111111i..,.................;;;::,.,,..:1tt1tttttttttttt11ttttt11111111tttttttt1111\n111111111111111111111111i..... .............;i;:::,.....itttttttttttttt1tttttttt11t11t1111ttttt1111\n","tttfttfttttttttttttttfffttttt1111tttt111tttt111111ttttttttt11tttt111111tttttttttttttttttttt111111ttt\nttfftttttttttttttttffLfftfftttffftttt111111111111tfffffftttt111111111111111tttffttfttttttttt11111ttt\nttttttttttttttttffffLffttfffffffffffttttttttt111tffffffffttttttt111111ttttffffLfffLLfttttttt1111t1t1\nttttttttttttttttffffftttffffffLffffttttttttttt1tffffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttffttffffffffftttftttttt11ttt1ttfffffftttttt111t111111ttffffLLffttfLLfft111111tttt\nttttttttttffLLLLftttttfLLLftttttttfftttttttfffft1tffffftttfffft11t111tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLLfttfffftffft11i;ii1ttffttttffttffffffftt1111tftt11t11tfLLfftt11tffftttttttt\ntttttttfffLLLLLLLLffttfttttffLfLftti;:;:,,,:;;itffftttfffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffffftt1;,,,,,,,,::,:tfftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfffLLLLLLLLfttfftfLftttffff1;::::;;iii;,:1ttttttttffffffftt1111ttt1ttt1ttfttt1ttfffffLLLLfttt\nttfffftfffLLLLLfffftfffftttfLfffLfi;iiii11111i;:i1tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntffffftttffLLfffttttfffffttfLLffLf;;;;iiiiiiii;:1tfffffft11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttffLLffLt;;:;;ii;;iii;ttffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttftttfLftf11i;;;i1ii11ii1tfffffftttttffft11111tfttfffttt1tttttttttfLLfffffft\nttffffffffftttfffffffftttfftttfttt11i;;;;i1111i111ttffft11ttttffft1111tt1tffttffttfffffLLfffffffffLL\ntttfffffffttttfffffffftttttt111tfft11;;;;iiiii1t1111tt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttfffffffft111tt1111ttfft1i;;;iiiii1;;;111111ttffft11t11111tfft1tttttt1tfffffLfftttfLLLLL\nttttt1tttffttfftttttt11ttttt111tttft1i;;;;iiiii;;;1t11ttftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt11tffftt1tt11tff1ii;;;;;iiii:;;i;;i1tttffftt11t1111ttt11tt1tffftt1111ttfftfLffftt\nttttffffttt11tttttft1tttttt1ttt11i;,:i;;;;;iii;;;;:...,,,:;i1111tt1111ttt11tt1tffffftttttt1ttttttftt\n111tfffffft1ttfftttt11tttt1tfti;,...,i1i;;ii;;i1i;,.........,i11111111tt111tft1tffffttfffftt11tffLLf\n1t1ttfffft111tftttt1111ttt11;:,......;11iii;;1t11;......,.,,.,i1111111111t11tt1tfffttfffffffttfLLLLf\ntftt1tftt1tt11ttt11ttt11i;:,.........:1tt1i;i1111;............;t11t1111111111tttffttttffffftt1tffLLf\ntfftttttttttt111111tttt1,.............:;;;;;;;;:;:............:tt11111111tttt11tttffftttfft1tt1tffft\n1ttttt1ttttttt1111tt11ti................:;;;;;:,:,............,1tt111111tttffttttfLLLLfttttffffttttf\ntffftttttttttt111tttt1ti................,;;;;::,:,.............ittt11111tttffftttffffffftttttttffttf\ntfffttttfftttt111tttttt;.................:;;:::,:,.............:tt1111111ttffttttffLLfLfttfffffffttf\ntffftttttttttt111tttttt;.................,:;:::,:.,:,,.........,it11111111ttt1tttffLLLLfttfffffffttf\ntttft11ttttttt111tttttt:..................,::::,:,,;;;;;:,......itt11111t111tttttffLLLLfttfffftffttf\nttttt1tttttttt1111t1ttt;...................,::,,:,:;;;iii;.....,1tt1111ttt11tftttffffffftttffftffttt\nttttt11tt1111t111tt1ttt:...................,::,,:::;;iiii;,.....:i1t1111t111tttttttttffft1tftttffttt\nttttt11ttttttt11ttttttt:....................::,,:..,,:;ii:...... .1t111111ttttt1ttffffft11ttttttfttt\nttttt1tttttttt111tttttt:....................,::,:. ..::,......,1t1111111ttt1111tfttttt11ttttttfttt\n1111111tttttt1111ttt1tt:.... ...............,:,,:..............,1t1111111tttt1111ttt1ttt111ttttttt1t\n11111111111111111111111;;;;:,...............,:,,:....... ...,,:1ttt11111111111111111111111111111t111\n11111111111111111111111iiiiii:...............,,,:........,:i11tt1tt111111111111111111111111111111111\n11111111111111111111111iiiiiii...............,,,:.......,1tttt11tt1111t111111111111111111111111t1111\n1111111111111111111111i;iiiiii,..............,.,:........ittt11t111111111111111111111111111111111111\n111111111111111111111111iiii;,...............::::,,......:1ttttt11t111111111111111111111111111111111\n1111111111111111111111111i:,. ...............:i;:::,......itttttt1ttt111t1tt111111111111111111111111\n11111111111111111111111111:................. :i;;;::,.....;ttttttttttttttt1ttttt111111111ttttttt1111\n11111111111111111111111111:................. :i;;;;::,....:tttttttttttttttttttttt11t11t1111ttttt1111\n","tttftttttttttttttttttfffttttt1t1ttttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt111111ttt\nttfftttttttttttttttffLLftffftfffftttt111111111t11tfffffftttt1111111111111111ttffttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffffffttttttttt111tfffffffftttttttt11111tttttfffffffLLfttttttt111tttt1\nttttttttttttttttfffffttfffffffLffffttttttttttt1tffffffffffttttttt1111ttffffffLLfttffffffttt1111tttt1\nttttttttttttfffftttftttffffffffftttfttttt111ttt1ttfffffftttttt111tt11111ttffffLLffttfLLff111111ttttt\nttttttttttffLLLLftttttfLLLftttttttffttttttttffft1tffffftttfffft11tt11tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLffttfffftfffttttttfffffftfttffttffffffftt1111tftt11t11tfLLfftt11tffftttttttt\ntttttttfffLLLLLLLLffttfttttffffffttft111i;ii1ttfffftttffffffffffft111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftft1i:::,,,,::;;1fftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfffLLLLLLLLfttfftfLffftfffLf1;,,,,,,,::,,:1tttttttffffffftt1111ttt1ttt1ttfttt1ttfffffLLLLfttt\nttfLfftfffLLLLLfffftfLfftttfffffLLf1;;;;;iiiii:,:1tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntffffftttffLLfffttttfffffttfLLLffLfiiiii111111i::1tffffft11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttftttttttffftttttttttttttfffLffLfii;;;iiiiiii;:1ftffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttfttffLfffLti;:;;ii;ii1;;ttffffftttttffft11111tfttffftttttttttttttfLLfffftft\nttffffffffftttfffffffftttfftttftttt1i;;;ii11111ii1ttffft11ttttffft1111tt1tffttffttfffffLLfffffffffLL\ntttfffffffttttfffffffftttttt111tfff1ii;;;iiiiiii1111tt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\n1tfffffffffttfffffffftt1ttt1111tffft1i;;;iiiiii;;i111111tfffft11t11111tfft1tttttt1tfffffLfftttfLLLLL\ntttttttttffttfftttttt1ttfft1111tttftt1;;;iiiiii;:;tt11ttftfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt11tfffft1tt11ttft11;;;;;iiii;;;1t11ttttffftt11t1111tftt1tt1tffftt1111ttfftfLffftt\nttttffffttt11tttttft1ttfffttfft11tftiii;;;;iiii;;;;:;ii1tttft111tt1111ttt11tt1tffffftttttttttttttftt\n111tfffffft1ttfttttt11tfftttfttt11i:,ii;;;;;iii;i:.....,,::;i111t11111tt111tft1fffffttfffftt11tffLLf\n1t1ttfffft111tffttt1111tft1ft1i;:,...;1i;;;;;;i11:...........,;1111111111t11tt1tfffttfffffffttfLLLLf\ntftt1tftt1tt11tft11ttt111111;:,......,111ii;;i1t1:........,,...;11t1111111111tttffttttffffftt1tffLLf\ntffttttttttttt1111ttttt11;:,.........,i111i;i1t1;,.............,1t1111111tttt11t1tfLftttfft1tt1tffft\n1ttttttttttttt1111ttt11ti,............,::::;;;i;:,..............it111111tttffttttfLLLffttttffffttttf\ntfffttttffttttt11ttttttti...............,;;;;;;;:...............:t111111tttffftttffffffftttttttffttf\ntfffttttfffttft11ttttttt;...............,:;;;;:::...............,1t111111ttffttttffLLfLfttfffffffttf\ntffft1ttttttttt11ttttttt:................,;;;;:::................it1111111ttt1tttffLLLLfttfffffffttf\ntffft1tttttttt111ttttttt:................,:;;::::................:t1111tt111tttttffLLLLfttfffftffttf\nttttt1tttttttt111111tt1t;.................,::::::................,1t111ttt11tftttfffffffttfffftffttt\nttttt1tttt11tt111ttttttt:.,:;:............,::::::................,itt111t111ttt1tttttfft11tftttffttt\nttttt1tttttttt11tttttttt;:;iii:............,:::::...........,:,....:1t11111tttt11tfffttt11ttttttfttt\nttttt1tttttttt111ttttttt;;iiiii:. ..........:::::...........,;;;;:..it1111tft1111ttttttt11ttttttfttt\n1111111tttttt1111ttttttt:;iiiii;............,::::,........,::;;iii;it111ttttt11111tt1ttt111ttttttt1t\n111111111111111111111111:;;iiii;,...........,:,::,.........,;;iiii;it111111111111111111111111111tt11\n111111111111111111111111;:;:;;;,............,::::,...........:;;ii;it1111111111111111111111111111111\n111111111111111111111111;::.... .............,:::,,......... .,,:i1t1111111111111111111111111111111\n111111111111111111111111i;,..................,,,:,,....... .;,..,;11111111111111111111111111111t1111\n1111111111111111111111111i;:;i;,..............,,:,,,........1tii11t111111111111111111111111111111111\n111111111111111111111111111111:..............,:::;;:,.......;ttttttttt11t1tt111111111111111111111111\n11111111111111111111111111111;,..............:i;;ii;;:,.....,1ttt1tttttttt1ttttt1111111111tttttt1111\n1111111111111111111111111111i,...............,i;;iiii;:......ittttttttttttttttttt11t11t1111ttttt1111\n","tttftttttttttttttttttfffttttt1t1ttttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt111111ttt\nttfftttttttttttttttffLLftffftfffftttt111111111t11ttffffftttt1111111111111111ttftttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffffffttttttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt111tttt1\nttttttttttttttttfffffttfffffffLfffftttttttttt11tffffffffffttttttt1111ttfffffffLftttfffffttt1111tttt1\nttttttttttttfffftttftttffffffffftttfttttt111ttt1ttfffffftttttt111tt11111ttffffLLffttfLLff111111ttttt\nttttttttttffLLLLftttttfLLLftttttttffttttttttffft1ttfffffttfffft11tt11tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLLfttfffftffftttttfffffffffttffttffffffftt1111tftt11t11tfLLfftt11tffftttttttt\ntttttttfffLLLLLLLLffttfttttffLffftfftttttfftffffffftttffffffffffft111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftfftt11iii;:;;i1tfftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfLLLLLLLLLLfttfftfLffttfffLLft1;:::,,,,::;;1ttttttffffffftt1111ttt1ttt1ttfttt1ttffffLLLLLfttt\nttfLLftfffLLLLLLLfftfLfftttfLfffLLLfti;,,,,:::::,,;fffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntfffffttttfLLfffttttfffffttLLLLffLLf1ii;;iiii11i:,;tfffft11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttfffLffLLf1iiiiiii1111;:;tffffftt1ttt111111tffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttfttffLfffLf111;;;ii;;i1i:itfffftttttffft11111tfttffftttttttttttttfLLfffftft\nttffffffffftttffffffffttffftttftttttt1i;;;iii;iii;ifftft11tttttffft111tt1tffttffttfffffLLfffffffffLL\ntttfffffffttttfffffffftttttt111tffft11i;;;ii11111111tt111tffftttft11111tt1ttttfft1tffffLLLfttfLLLLLL\n1tfffffffffttfffffffftt1ttt1111fffft111i;;;iiiiiii11111ttfffft11111111tfft1tttttt1tfffffLfftttfLLLLL\ntttttttttffttfftttttt1ttftt1111ttffttt1i;;;iiii;;;1t11ttttfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt1ttfffftttt11ttft1t1i;;iiiii;:;1t111tttffftt11t1111tftt1tt1tffftt1111ttfftfLffftt\nttttfffftttt1ttttfft1tffffttfft11tft111i;;;;;ii;:;i11111ttttt1111t1111ttt11tt1tfffffttttttttttttffft\n111tfffffftttffftttt11tfftttfttt1ttt1i1i;;;;iiiiii::;i111tt11111t11111tt111tft1fffffttfffftt1ttfLLLf\n1t1ttfffft111tffttt1111tfttft11tti;::,i1;;;;;iii11:...,,::;i1tt1111111111t11tt1tfffttfffffffttfLLLLf\ntttt1tftt1tt11ttt11ttt1111tt11i;,,....;1i;;;;;;i11:.,.......,,:i11t1111111111tttffttttffffftt1tffLLf\ntffttttttttttt1111ttttt111i;:,........;1t1ii;;i1ii,.............;t1111111tttt11t1tfLftttfft1tt1tffft\n1ttttttttttttt1111tttttt11:...........:iiiiii1tti,..............,1t11111tttttttttfLLLffttttffffttttf\ntfffttttffttttt11ttttttt1i,.............,:::;;ii;,...............;t11111ttttfftttffffffftttttttffttf\ntfffttttfffffft11ttttttt1;..............,:;;;;;;:,...............,1111111ttffttttffLLfLfttfffffffttf\ntffftttttttttt111ttttttt1:.......... ....:;;;;;;:,................it111111tttttttffLLLLfttfffffffttf\ntffft1tttttttt111ttttttt1,........,,:;:,.,;;;;;:;,................;t1111t111tttttffffLLfttfffffffttf\nttttt1tttttttt1111t1tttt1,.......;;;;;:,..:;;::::,................,1t11ttt11tftttfffffffttfffftffttt\nttttt1tttt11tt111ttttttt1:......;;;;;;;:,.:;;::::,................,it111t1111tt11ttttfft11tftttffttt\nttttt1tttttttt11tttttttti,......:;:;;;:...,:;::::,.................:1t11111tt1t11tfffttt11ttttttfttt\nttttt1tttttttt11tttttttti,......:;:;;:.....,:::::,..................:11111ttt1111ttttttt11ttttttfttt\n1t1t111tttttt111111ttttt;...,,,.,:::. ......:::::,...................,111tttt11111ttttt1111ttttttt1t\n111111111111111111111111,,,,,,,.............,:::::,..................,1t111111111111111111111111tt11\n11111111111111111111111i,,..:,..............,,::::,,.................,11tt11111111111111111111111111\n111111111111111111111111;...................,:,,::,,.................,;ii11t111111111111111111111111\n111111111111111111111111i,..................,:::::,,................:::;;;i111t111111111111111111111\n1111111111111111111111111i;;;;i1:............::,:,,,,........... ..::;;;;i1111111111111111111111111\n111111111111111111111111111111t1,............,.,:,,,:,,........:,,..,:;;;i11t11111111111111111111111\n1111111111111111111111111111111i.............,,::;;;i;:,...... :111i;::;;;1ttttt11t1111111tttttt1111\n111111111111111111111111111111ti.............:1;;1iiii;:,.......i1tttt11111tt1tt111111t1111ttttt1111\n","tttttttttttttttttttttfffttttt1111tttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt111111ttt\nttfftttttttttttttttffLLftffftfffftttt111111111t11ttffffftttt1111111111111111ttftttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffffffttttttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttfffffttfffffffLfffftttttttttt11tffffffffffttttttt11111tffffffffftttfffffttt11111ttt1\nttttttttttttfffftttffttffffffffftttfttttt111ttt1ttfffffftttttt11tt111111ttffffLLffttfLLff111111ttttt\nttttttttttffLLLLftttttfLLLfttttttffffttttttfffft1tffffffttfffft11t111tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLLfttfffftfffttttttfffffftfttfftffffffffttt111tftt11t11tfLLLftt11tffft1tttttt\ntttttttfLfLLLLLLLLffttfttttffLLfftffttttffffffffffftttfffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffLLftffttttttt11i;ii1tftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfLLLLLLLLLLfttfftfffffffffLLfttt1i;::,,,,:;;1tttttffffffftt1111ttt1ttt1ttfttt1ttfffffLLLLfttt\nttfLLftfffLLLLLLLfftfLfftttfLfffLLLLttt1;,,,,,,,::,:iftt11tfffft11111tffft1tt11tt1ttttfffLLLLLLLLfff\ntfffffttttfLLfffttttfffffttLLLLfLLLftt1i;;;;;;iiii:,;fftt11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttffLLffLLftt1;iiiii11111i::tfffft1ttt111111tffftfffftttttttt1ttfLLLLffffff\nttfLffffffftttfffffffffttfttffLfffLftt1;i;;;iiiiiii;;tfftttttffft11111tfttffftttttttttttttfLLftfffft\nttffffffffftttffffffffftffftttfttftttttii;;;;ii;;ii;iftt11tttttfft1111tt1tffttffttfffffLLfffffffffLL\nttffffffffttttfffffffftttttt11ttfffttt11ii;;ii1111ii11111tffftttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\n1ttffffffffttfffffffftt1ttt111tffffttt1i1i;;;iiiiii1111ttfffft11t11111tfft1tttttt1ttffffLfftttfLLLLf\ntttttttttffttfftttttt1ttfff1111ttffttttt1i;;;;i;:;it11ttftfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt11tfffftttt11tfftt11tt1;;;ii;;;1t111tttffftt11t1111tttt1tt1tffftt1111ttfftfLffftt\ntfttfffftttt1ttttfft1tffffttfftt1tft1111t1;;;;i;:;i11111tttft111tt1111ttt11tt1tfffffttttttttttttffft\n1tttfffffftttffftfft11tfffttfttttttt11111i;;:;iiii1i;i1t1tt11111t11111tt111tft1fffffttfffftt1ttffLLf\n1t1tffffft111tffttt1111tfttft11tt1t1i;;;1i;;;;ii1ii1,.,:;ii1tt11111111111t11tt1tfffttfffffffttfLfLLf\ntfttttftt1tt11ttt11ttt11t1t11tt11i:,...,11;;;;;it111,,.....,:;i11tt1111111111tttffttttffffftt1tffLLf\ntffttttttttttt1111ttftt111111i;:,......:1t1i;;;;i1t1,..........,:i1111111tttt11t1tfLftttfft1tt1tffft\n1ttttttttttttt1111ttttt111tt;..........:1111iii1;11:.............,it1111tttttt1ttfLLLffttttffffttttf\ntfffttttffttttt11ttttttt11t1,...........,,:::;;i;;:...............:t1111ttttfft1tffffffftttttttffttf\ntfffttttfffffft11ttttttt111i..............:;:::;;::...............,1t1111ttffttttffLLfLfttfffffffttf\ntfffttttttttttt11ttttttt111:..............,;;;;;;:,................;t11111ttt1t1tffLLLLfttfffffffttf\ntffft1tttttttt111ttttttt11i,..........,::::;;;;;;:,................,1t11t111tttttffffLLfttfffffffttf\nttttt1tttttttt111tt1tttt11i.........:;;;;:,;;::::::.................;t1ttt11tftttffffffftttffftffttt\nttttt1tttt11tt111ttttttt111,.......;;;;;;:,:;::::::,................:tttt1111tt11ttfttft11tftttffttt\nttttt1tttttttt11tttttttt11;,......,;;;;;;:::;::::::,................,itt111t11t11ttftttt11ttttttfttt\nttttt1tttttttt11tttttttt11;,......:;;;;i;...,:::::,,.................:tt1tttt1111ttttttt11ttttttfttt\n1t1t111tttttt111tttttttt1;,.,.....,:;:......,:::::,,..................it1tttt11111tttt11111ttttttt1t\n1111111111111111111111111:,,,......,,. .....,,::::,,..................,1t11111111111111111111111tt11\n1111111111111111111111111,,....,,...........,,,:::::,..................itt11111111111111111111111111\n1111111111111111111111111;,.................,:::::::,,................:1tt11111111111111111111111111\n11111111111111111111111111:.... ............,:::,:,,.................,1tt11111111111111111111111111\n11111111111111111111111111ii;;;;;i, .........,,::,,,,,................,:;;1tt11111111111111111111111\n11111111111111111111111111111111t1,..........,,,:,,:,:,,. ...........,:::;;i11tt11111111111111111111\n11111111111111111111111111111111t;.............,:::;;;;:,........ .,:::;;:;i1t111111111ttttttt11111\n111111111111111111111111111111111:...........,;;;i1iiii;:,.......::,,::::;;i1ttt111t11t1111ttttt1111\n","tttftttttttttttttttttfffttttt1111tttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt11111111t\nttfftttttttttttttttffLLftffftfffftttt111111111t11ttffffftttt1111111111111111ttftttfttttttttt1111tttt\nttftttttttttttttffffLffttfffffffLfffttttttttt111tfffffffftttttttt11111ttttttfffftfLLfttttttt111tttt1\nttttttttttttttttfffffttfffffffLfffftttttttttt11tffffffffffttttttt11111tfffffffffttffffffttt11111ttt1\ntttttttttttffffftttffttffffffffftttfttttt111ttt1ttfffffftttttt11tt111111ttffffLLffttfLLfft11111ttttt\nttttttttttffLLLLftttttfLLLfttttttffLftttttttffft1ttfffffttfffft11t111tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLfttttttffffffffftftttfffffffttt111tftt11t11tfLLfftt11tffft11ttttt\ntttttttfffLLLLLLLLffttfttttfLLLfftffttttffftt1iii11tttfffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffLffffftttttfti;;::,,,:;i1tffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttfffffLLLLLLLLLLfttfftfLfffffffLLfttttt1;,,,,,,,::,:ittffffffftt1111ttt1ttt1tftttt1ttffffLLLLLfttt\nttfLLffffLLLLLLLLfftfLfftttfLfffLLLLfttt1i;:::;;iiii;,;t11tfffft11111tffft1tt1ttt1ttttfffLLLLLLLLfff\ntffffftttffLLLffttttfffffttLLLLfLLLffttf1;;iiii11111i::1t11tttt1ttt11tfffttfftttttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttfffLffLLftttti:;;;;iiiiiii;;tftt1ttt111111tffftfffftttttttt1ttfLLLLffffff\nttfLffffffftttfffffffffttfttffLfffLfttttti;;;;;iii;i1iiftttttffft11111tfttffftttttttttttttfLLftfffft\nttffffffffftttffffffffftfffftffffftttttft11i;;;iiii1iiit11tttttfft1111tt11ffttffttfffffLLfffffffffLL\nttffffffffttttfffffffftttttt1tttffftttttti1i;;;ii11iii111tffftttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\n1ttffffffffttfffffffftt1ttt1111tfffftttt111i;;iiiiii111ttfffft11t11111tfftttttttt1ttffffLfftttfLLLLf\ntttttttttffttfftttttt1ttfftttt1ttfftttttt111i;i;:;ii11ttftfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt11tfffftttt11tfftt1ttt111;;i;;;iii1ttttffftt11t1111ttt11tt1tffttt1111ttfftfLffftt\ntfttffffttt11tttttft1tffffttffttttft111ttt11;;;;:;i1i1;;11tft111tt1111tt111tt1tfffffttttt11tttttffft\n1tttfffffftttffftfft11tfftttffttttft1111iii1;;;i;iiii1i,,,:;;i11tt1111tt111tft1fffffttfffftt11tffLLf\n111ttfffftt1ttffttt1111tfttft11tt1t1i;:,,,;1i;;i1ii;iti,,.....,:;i1t11111t11tt1tfffttffffffft1fffLLf\ntfttttftt1tt11tft11ttt11tttt1tt11i;:,.....;11i;i1i;1tt;,,.........,:i11111111t1tffttttffffftt1tfffLf\ntffttttttttftt1111ttttt11111tft;,.........;11111i1ttti,.............,1111tttt1111tffftttfft1tt1tffft\n1ttttttttttttt1111tttttt11tfff1,...........,:;;;;;11i:...............itttttttt1ttfffLffttttffffttttf\ntfffttttffttttt11ttttttt11tfffi............ ,:;;;;;;;,...............;t1ttttfft1tffffffftttttttffttf\ntfffttttfffffft11tttttttttt1tf;..............:;;;;;;;,...............:111ttttttttfffLfLfttfffffffttf\ntfffttttftftft111ttttttt11t111:..............:;;;;;::,...............,1t11ttt1t1tffLLLLfttfffffffttf\ntfffttttfttttt111ttttttt11ttt1:..............,;;;::;::................itt111tttttffffLLfttfffffffttf\ntttttttttttttt111ttttttt1ttfft:..............,;;;;::::................:1tt11tft1tffffffftttffttffttt\nttttt1tttt11tt11tttttttt1tttt1;.,::,..........:;:::;::,...............,1t1111tt11tttttft11tfttttfttt\nttttt1tttttttt11ttttttttt1ttt1;,:;;:..........,::::::,,................it11111111ttftttt11ttttttfttt\nttttt1tttttttt11tttttttttttttiiiiii;,.........,:::::::,................:ttttt1111ttttttt11ttttttfttt\n1t1111tttttttt11tttttttt1ttt1;;;;ii;,.........,:::::::,.................ittttt1111tttt11111ttttttt1t\n11111111111111111111111111tt1;;;;ii;...........::::::::................ :1t111111111111111111111t111\n11111111111111111111111111tt1;::;;i:...........,:::::::,...............,itttt11111111111111111111111\n11111111111111111111111tttttt;,,,::............,::::::,,...............ittttt11111111111111111111111\n1111111111111111111111111tttt1:,,..............,:::::,,,,.......,:;::,:1t1111111111111111111111t1111\n11111111111111111111111111111111i;;i:..........,:,,,.,,.,.......::;;i;it1ttt111111111111111111111111\n1111111111111111111111111111111111ti...........,,.,:,:;::,......,:;;ii1ttttt11111111111111111t111111\n1111111111111111111111111111111111t;...........,;iiiiiii;:,......:;;;i1ttttt111t1111111111tttttt1111\n11111111111111111111111111111111111:...........,;i11iiii;:,.......,:i1tttttt1ttttt1t11t1111ttttt1111\n"],s=new a.v;function l(){const[e,t]=(0,r.useState)(function(){const e=new Date;return 3===e.getMonth()&&1===e.getDate()}()),[n,a]=(0,r.useState)(0);return(0,r.useEffect)((()=>{const e=setInterval((()=>a((e=>(e+1)%i.length))),100);return()=>clearInterval(e)}),[]),(0,r.useEffect)((()=>s.subscribe((()=>{t(!0)}))),[]),e?r.createElement(o.u,{open:e,onClose:()=>t(!1)},r.createElement("pre",{style:{color:"#0f0"}},i[n]),r.createElement("div",{style:{display:"none"}},r.createElement("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/a3Z7zEc7AXQ?autoplay=1",title:"YouTube video player",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"}))):r.createElement(r.Fragment,null)}},49215:(e,t,n)=>{"use strict";n.d(t,{P:()=>F});var r=n(81138),a=n(47542),o=n(46948),i=n(28881),s=n(78016),l=n(30120),c=n(92557),u=n(17575),m=n(59301),f=n(40238),h=n(67294),d=n(99745),p=n(97740),g=n(5808),y=n(93430),b=n(89673),v=n(51087),k=n(49802),w=n(49173),E=n(22115),S=n(48672),C=n(72360),x=n(21927),N=n(97534),M=n(88775);const A=e=>{let{open:t,onClose:n}=e;return h.createElement(S.u,{open:t,onClose:n},h.createElement(h.Fragment,null,h.createElement(r.Z,{variant:"h5"},"All Employers"),h.createElement("ul",null,Object.keys(w.J5.jobs).map((e=>h.createElement(r.Z,{key:e},"* ",e))))))};function T(e){return h.createElement(a.Z,{sx:{display:"table",width:"100%",mb:e.noMargin?0:2}},h.createElement(o.Z,null,e.rows.map((t=>{const{mult:n,value:a,effValue:o=null,color:i=e.color}=t;return null!==o&&o!==a&&w.J5.sourceFileLvl(5)>0?h.createElement(x.j,{key:n,name:n,color:i,data:{}},h.createElement(h.Fragment,null,h.createElement(r.Z,{color:i},h.createElement("span",{style:{opacity:.5}},(0,E.T3)(a))," ",(0,E.T3)(o)))):h.createElement(x.j,{key:n,name:n,color:i,data:{content:(0,E.T3)(a)}})}))))}function L(){if(w.J5.sourceFiles.size>0){const e="BitNode"+w.J5.bitNodeN,t=Math.min(w.J5.sourceFileLvl(w.J5.bitNodeN)+1,12===w.J5.bitNodeN?1/0:3);return h.createElement(i.Z,{sx:{mb:1,p:1}},h.createElement(r.Z,{variant:"h5"},"BitNode ",w.J5.bitNodeN,": ",d.tK[e].name," (Level ",t,")"),h.createElement(r.Z,{sx:{whiteSpace:"pre-wrap",overflowWrap:"break-word"}},d.tK[e].info))}return h.createElement(h.Fragment,null)}function R(e){let{open:t,onClose:n}=e;function a(e){const t=[["Total:",h.createElement(C.W,{key:"total",money:e.total})]];return e.augmentations&&t.push(["Augmentations:",h.createElement(C.W,{key:"aug",money:e.augmentations})]),e.bladeburner&&t.push(["Bladeburner:",h.createElement(C.W,{key:"blade",money:e.bladeburner})]),e.casino&&t.push(["Casino:",h.createElement(C.W,{key:"casino",money:e.casino})]),e.codingcontract&&t.push(["Coding Contracts:",h.createElement(C.W,{key:"coding-contract",money:e.codingcontract})]),e.work&&t.push(["Company Work:",h.createElement(C.W,{key:"company-work",money:e.work})]),e.class&&t.push(["Class:",h.createElement(C.W,{key:"class",money:e.class})]),e.corporation&&t.push(["Corporation:",h.createElement(C.W,{key:"corp",money:e.corporation})]),e.crime&&t.push(["Crimes:",h.createElement(C.W,{key:"crime",money:e.crime})]),e.gang&&t.push(["Gang:",h.createElement(C.W,{key:"gang",money:e.gang})]),e.hacking&&t.push(["Hacking:",h.createElement(C.W,{key:"hacking",money:e.hacking})]),e.hacknet&&t.push(["Hacknet Nodes:",h.createElement(C.W,{key:"hacknet",money:e.hacknet})]),e.hacknet_expenses&&t.push(["Hacknet Nodes Expenses:",h.createElement(C.W,{key:"hacknet-expenses",money:e.hacknet_expenses})]),e.hospitalization&&t.push(["Hospitalization:",h.createElement(C.W,{key:"hospital",money:e.hospitalization})]),e.infiltration&&t.push(["Infiltration:",h.createElement(C.W,{key:"infiltration",money:e.infiltration})]),e.servers&&t.push(["Servers:",h.createElement(C.W,{key:"servers",money:e.servers})]),e.stock&&t.push(["Stock Market:",h.createElement(C.W,{key:"market",money:e.stock})]),e.sleeves&&t.push(["Sleeves:",h.createElement(C.W,{key:"sleeves",money:e.sleeves})]),e.other&&t.push(["Other:",h.createElement(C.W,{key:"other",money:e.other})]),h.createElement(N.C,{rows:t,wide:!0})}let o=h.createElement(h.Fragment,null,h.createElement(r.Z,{variant:"h6",color:"primary"},"Money earned since you last installed Augmentations"),h.createElement("br",null),a(w.J5.moneySourceA));return w.J5.sourceFiles.size>0&&(o=h.createElement(h.Fragment,null,o,h.createElement("br",null),h.createElement("br",null),h.createElement(r.Z,{variant:"h6",color:"primary"},"Money earned in this BitNode"),h.createElement("br",null),a(w.J5.moneySourceB))),h.createElement(S.u,{open:t,onClose:n},o)}function F(){const[e,t]=(0,h.useState)(!1),[n,d]=(0,h.useState)(!1);(0,M.S)(200);const E=[["Since last Augmentation installation",(0,k.UF)(w.J5.playtimeSinceLastAug)]];w.J5.sourceFiles.size>0&&E.push(["Since last Bitnode destroyed",(0,k.UF)(w.J5.playtimeSinceLastBitnode)]),E.push(["Total",(0,k.UF)(w.J5.totalPlaytime)]);let S=!1;return w.J5.sourceFileLvl(5)>0&&(S=!0),h.createElement(s.Z,{maxWidth:"lg",disableGutters:!0,sx:{mx:0}},h.createElement(r.Z,{variant:"h4"},"Stats"),h.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr",minWidth:"fit-content",mb:1,gap:1}},h.createElement(i.Z,{sx:{p:1}},h.createElement(r.Z,{variant:"h5"},"General"),h.createElement(a.Z,null,h.createElement(o.Z,null,h.createElement(x.j,{name:"Current City",color:v.Z.theme.primary,data:{content:w.J5.city}}),h.createElement(x.j,{name:"Money",color:v.Z.theme.money,data:{}},h.createElement(h.Fragment,null,h.createElement(C.W,{money:w.J5.money}),h.createElement(c.Z,{onClick:()=>t(!0),sx:{p:0}},h.createElement(m.Z,{color:"info"})))),w.J5.jobs&&0!==Object.keys(w.J5.jobs).length?h.createElement(x.j,{name:"All Employers",color:v.Z.theme.primary,data:{}},h.createElement(h.Fragment,null,h.createElement("span",{style:{color:v.Z.theme.primary}},Object.keys(w.J5.jobs).length," total"),h.createElement(c.Z,{onClick:()=>d(!0),sx:{p:0}},h.createElement(m.Z,{color:"info"})))):h.createElement(h.Fragment,null),h.createElement(x.j,{name:"Servers Owned",color:v.Z.theme.primary,data:{content:`${w.J5.purchasedServers.length} / ${(0,b.kq)()}`}}),h.createElement(x.j,{name:`Hacknet ${9===w.J5.bitNodeN||w.J5.sourceFileLvl(9)>0?"Servers":"Nodes"} owned`,color:v.Z.theme.primary,data:{content:`${w.J5.hacknetNodes.length}${9===w.J5.bitNodeN||w.J5.sourceFileLvl(9)>0?` / ${y.B5.MaxServers}`:""}`}}),h.createElement(x.j,{name:"Augmentations Installed",color:v.Z.theme.primary,data:{content:String(w.J5.augmentations.length)}})))),h.createElement(i.Z,{sx:{p:1}},h.createElement(r.Z,{variant:"h5"},"Skills"),h.createElement(a.Z,null,h.createElement(o.Z,null,h.createElement(x.j,{name:"Hacking",color:v.Z.theme.hack,data:{level:w.J5.skills.hacking,exp:w.J5.exp.hacking}}),h.createElement(x.j,{name:"Strength",color:v.Z.theme.combat,data:{level:w.J5.skills.strength,exp:w.J5.exp.strength}}),h.createElement(x.j,{name:"Defense",color:v.Z.theme.combat,data:{level:w.J5.skills.defense,exp:w.J5.exp.defense}}),h.createElement(x.j,{name:"Dexterity",color:v.Z.theme.combat,data:{level:w.J5.skills.dexterity,exp:w.J5.exp.dexterity}}),h.createElement(x.j,{name:"Agility",color:v.Z.theme.combat,data:{level:w.J5.skills.agility,exp:w.J5.exp.agility}}),h.createElement(x.j,{name:"Charisma",color:v.Z.theme.cha,data:{level:w.J5.skills.charisma,exp:w.J5.exp.charisma}}),w.J5.skills.intelligence>0&&(5===w.J5.bitNodeN||w.J5.sourceFileLvl(5)>0)&&h.createElement(x.j,{name:"Intelligence",color:v.Z.theme.int,data:{level:w.J5.skills.intelligence,exp:w.J5.exp.intelligence}}))))),h.createElement(i.Z,{sx:{p:1,mb:1}},h.createElement(r.Z,{variant:"h5",color:"primary",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},"Multipliers",w.J5.sourceFileLvl(5)>0&&h.createElement(u.Z,{title:h.createElement(r.Z,null,"Displays your current multipliers.",h.createElement("br",null),h.createElement("br",null),"When there is a dim number next to a multiplier, that means that the multiplier in question is being affected by BitNode multipliers.",h.createElement("br",null),h.createElement("br",null),"The dim number is the raw multiplier, and the undimmed number is the effective multiplier, as dictated by the BitNode.")},h.createElement(f.Z,{sx:{ml:1,mb:.5},color:"info"}))),h.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:1}},h.createElement(l.Z,null,h.createElement(T,{rows:[{mult:"Hacking Chance",value:w.J5.mults.hacking_chance},{mult:"Hacking Speed",value:w.J5.mults.hacking_speed},{mult:"Hacking Money",value:w.J5.mults.hacking_money,effValue:w.J5.mults.hacking_money*p.dQ.ScriptHackMoney},{mult:"Hacking Growth",value:w.J5.mults.hacking_grow,effValue:w.J5.mults.hacking_grow*p.dQ.ServerGrowthRate}],color:v.Z.theme.hack}),h.createElement(T,{rows:[{mult:"Hacking Level",value:w.J5.mults.hacking,effValue:w.J5.mults.hacking*p.dQ.HackingLevelMultiplier},{mult:"Hacking Experience",value:w.J5.mults.hacking_exp,effValue:w.J5.mults.hacking_exp*p.dQ.HackExpGain}],color:v.Z.theme.hack}),h.createElement(T,{rows:[{mult:"Strength Level",value:w.J5.mults.strength,effValue:w.J5.mults.strength*p.dQ.StrengthLevelMultiplier},{mult:"Strength Experience",value:w.J5.mults.strength_exp}],color:v.Z.theme.combat}),h.createElement(T,{rows:[{mult:"Defense Level",value:w.J5.mults.defense,effValue:w.J5.mults.defense*p.dQ.DefenseLevelMultiplier},{mult:"Defense Experience",value:w.J5.mults.defense_exp}],color:v.Z.theme.combat}),h.createElement(T,{rows:[{mult:"Dexterity Level",value:w.J5.mults.dexterity,effValue:w.J5.mults.dexterity*p.dQ.DexterityLevelMultiplier},{mult:"Dexterity Experience",value:w.J5.mults.dexterity_exp}],color:v.Z.theme.combat}),h.createElement(T,{rows:[{mult:"Agility Level",value:w.J5.mults.agility,effValue:w.J5.mults.agility*p.dQ.AgilityLevelMultiplier},{mult:"Agility Experience",value:w.J5.mults.agility_exp}],color:v.Z.theme.combat}),h.createElement(T,{rows:[{mult:"Charisma Level",value:w.J5.mults.charisma,effValue:w.J5.mults.charisma*p.dQ.CharismaLevelMultiplier},{mult:"Charisma Experience",value:w.J5.mults.charisma_exp}],color:v.Z.theme.cha,noMargin:!0})),h.createElement(l.Z,null,h.createElement(T,{rows:[{mult:"Hacknet Node Production",value:w.J5.mults.hacknet_node_money,effValue:w.J5.mults.hacknet_node_money*p.dQ.HacknetNodeMoney},{mult:"Hacknet Node Purchase Cost",value:w.J5.mults.hacknet_node_purchase_cost},{mult:"Hacknet Node RAM Upgrade Cost",value:w.J5.mults.hacknet_node_ram_cost},{mult:"Hacknet Node Core Purchase Cost",value:w.J5.mults.hacknet_node_core_cost},{mult:"Hacknet Node Level Upgrade Cost",value:w.J5.mults.hacknet_node_level_cost}],color:v.Z.theme.primary}),h.createElement(T,{rows:[{mult:"Company Reputation Gain",value:w.J5.mults.company_rep,color:v.Z.theme.rep},{mult:"Faction Reputation Gain",value:w.J5.mults.faction_rep,effValue:w.J5.mults.faction_rep*p.dQ.FactionWorkRepGain,color:v.Z.theme.rep},{mult:"Salary",value:w.J5.mults.work_money,effValue:w.J5.mults.work_money*p.dQ.CompanyWorkMoney,color:v.Z.theme.money}],color:v.Z.theme.money}),h.createElement(T,{rows:[{mult:"Crime Success Chance",value:w.J5.mults.crime_success},{mult:"Crime Money",value:w.J5.mults.crime_money,effValue:w.J5.mults.crime_money*p.dQ.CrimeMoney,color:v.Z.theme.money}],color:v.Z.theme.combat}),w.J5.canAccessBladeburner()&&p.dQ.BladeburnerRank>0&&h.createElement(T,{rows:[{mult:"Bladeburner Success Chance",value:w.J5.mults.bladeburner_success_chance},{mult:"Bladeburner Max Stamina",value:w.J5.mults.bladeburner_max_stamina},{mult:"Bladeburner Stamina Gain",value:w.J5.mults.bladeburner_stamina_gain},{mult:"Bladeburner Field Analysis",value:w.J5.mults.bladeburner_analysis}],color:v.Z.theme.primary,noMargin:!0})))),h.createElement(i.Z,{sx:{p:1,mb:1}},h.createElement(r.Z,{variant:"h5"},"Time Played"),h.createElement(a.Z,null,h.createElement(o.Z,null,E.map((e=>{let[t,n]=e;return h.createElement(x.j,{key:t,name:t,color:v.Z.theme.primary,data:{content:n}})}))))),h.createElement(L,null),S&&h.createElement(i.Z,{sx:{p:1,mb:1}},h.createElement(r.Z,{variant:"h5"},"BitNode Multipliers"),h.createElement(g.I,{n:w.J5.bitNodeN})),h.createElement(R,{open:e,onClose:()=>t(!1)}),h.createElement(A,{open:n,onClose:()=>d(!1)}))}},37150:(e,t,n)=>{"use strict";n.d(t,{g:()=>s});var r=n(67294),a=n(17575),o=n(56798);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{"use strict";n.d(t,{o:()=>o});var r=n(67294),a=n(81138);class o extends r.Component{constructor(e){super(e),this.state={error:void 0}}componentDidCatch(e){this.setState({error:e}),console.warn("Error in custom react content:"),console.error(e)}render(){return this.state.error?r.createElement(a.Z,{component:"span"},"Error in custom react content. See console for details."):r.createElement(a.Z,{component:"span"},this.props.children)}}},36352:(e,t,n)=>{"use strict";let r;n.d(t,{x:()=>r}),function(e){e.SUCCESS="success",e.WARNING="warning",e.ERROR="error",e.INFO="info"}(r||(r={}))},38886:(e,t,n)=>{"use strict";n.d(t,{S:()=>s});var r=n(67294),a=n(10980),o=n(97833),i=n(52947);class s extends r.Component{constructor(e){super(e),this.state={hasError:!1}}reset(){this.setState({hasError:!1})}componentDidCatch(e,t){this.setState({errorInfo:t,page:i.F.page()}),console.error(e,t)}render(){if(this.state.hasError){let e;if(this.state.error)try{e=(0,a.o)(this.state.error,this.state.errorInfo,this.state.page)}catch(e){console.error(e)}return r.createElement(o.JI,{softReset:this.props.softReset,errorData:e,resetError:()=>this.reset()})}return this.props.children}static getDerivedStateFromError(e){return{hasError:!0,error:e}}}},52947:(e,t,n)=>{"use strict";n.d(t,{F:()=>ke,O:()=>we});var r=n(67294),a=n(77541),o=n(73327),i=n(81138),s=n(30120),l=n(49173),c=n(27889),u=n(34716),m=n(93936),f=n(33244),h=n(40780),d=n(59132),p=n(45756),g=n(72805),y=n(39463),b=n(97467),v=n(35102),k=n(24815),w=n(56112),E=n(24326),S=n(16937),C=n(78008),x=n(41858),N=n(22527),M=n(31635),A=n(30213),T=n(72390),L=n(52037),R=n(68848),F=n(45693),_=n(23187),I=n(24025),P=n(14533),B=n(30286),O=n(99363),D=n(19491),Z=n(55482),G=n(81009),J=n(59656),W=n(1041),H=n(41500),U=n(57385),j=n(49215),$=n(66927),q=n(51801),z=n(50856),V=n(40389),Y=n(78573),K=n(43480),X=n(59061),Q=n(75350),ee=n(6290),te=n(32369),ne=n(85167),re=n(95173),ae=n(23001),oe=n(60784),ie=n(30518),se=n(97833),le=n(24853),ce=n(38886),ue=n(11590),me=n(48562),fe=n(18450),he=n(51674),de=n(93344),pe=n(52720),ge=n(88775),ye=n(19678);const be=location,ve=(0,a.Z)((e=>(0,o.Z)({root:{"-ms-overflow-style":"none","scrollbar-width":"none",margin:e.spacing(0),flexGrow:1,padding:"8px",minHeight:"100vh",boxSizing:"border-box",width:"1px"}})),{name:"GameRoot"});let ke={isInitialized:!1,page:()=>{throw new Error("Router called before initialization")},allowRouting:()=>{throw new Error("Router called before initialization")},toPage:()=>{throw new Error("Router called before initialization")},back:()=>{throw new Error("Router called before initialization")}};function we(){const e=ve(),[t,n]=(0,r.useState)((()=>[{page:se.aF?k.T3.Recovery:null!==l.J5.currentWork?k.T3.Work:k.T3.Terminal}])),a=t[0],o=(0,ge.S)(),[we,Ee]=(0,r.useState)(0),[Se,Ce]=(0,r.useState)(!0);function xe(){for(const e of(0,b.XX)())e.runningScriptMap.clear();u.Ex.saveGame(),setTimeout((()=>be.reload()),2e3)}function Ne(e){console.error(`Routing is currently disabled - Attempted router.${e}()`)}function Me(){(0,y.X)("Soft Reset!"),(0,c.Kq)(!0),Ee(we+1),ke.toPage(k.T3.Terminal)}(0,r.useEffect)((()=>p.p.subscribe(o)),[o]),ke={isInitialized:!0,page:()=>a.page,allowRouting:e=>Ce(e),toPage:(e,t)=>{if(!Se)return Ne("toPage");switch(e){case k.T3.Travel:l.J5.gotoLocation(f.LocationName.TravelAgency);break;case k.T3.BitVerse:(0,ie.v)()}(e=>{n((t=>{const n=[e,...t];return n.length=Math.min(n.length,10),n}))})({page:e,...t})},back:()=>{if(!Se)return Ne("back");n((e=>e.slice(1)))}},(0,r.useEffect)((()=>{a.page!==k.T3.Terminal&&window.scrollTo(0,0)}));let Ae=r.createElement(i.Z,null,"Cannot load"),Te=!0,Le=!0,Re=!1;switch(a.page){case k.T3.Recovery:Ae=r.createElement(se.JI,{softReset:Me}),Te=!1,Le=!1,Re=!0;break;case k.T3.BitVerse:Ae=r.createElement(z.x,{flume:a.flume,quick:a.quick}),Te=!1,Le=!1;break;case k.T3.Infiltration:Ae=r.createElement(A.m,{location:a.location}),Te=!1,Le=!1;break;case k.T3.BladeburnerCinematic:Ae=r.createElement(X.K,null),Te=!1,Le=!1;break;case k.T3.Work:Ae=r.createElement(L.l,null),Te=!1;break;case k.T3.Terminal:Ae=r.createElement(Z.F,null);break;case k.T3.Sleeves:Ae=r.createElement(F.X,null);break;case k.T3.StaneksGift:Ae=r.createElement(V.w,{staneksGift:Y.y$});break;case k.T3.Stats:Ae=r.createElement(j.P,null);break;case k.T3.ScriptEditor:var Fe;Ae=r.createElement(O.z,{files:a.files??new Map,hostname:l.J5.getCurrentServer().hostname,vim:!(null===(Fe=a.options)||void 0===Fe||!Fe.vim)});break;case k.T3.ActiveScripts:Ae=r.createElement(J.M,{workerScripts:Q.R});break;case k.T3.Hacknet:Ae=r.createElement(_.W,null);break;case k.T3.CreateProgram:Ae=r.createElement(B.d,null);break;case k.T3.Factions:Ae=r.createElement(W.Q,null);break;case k.T3.Faction:Ae=r.createElement(H.P,{faction:a.faction});break;case k.T3.FactionAugmentations:Ae=r.createElement(U.c,{faction:a.faction});break;case k.T3.Milestones:Ae=r.createElement(D.q,null);break;case k.T3.Documentation:Ae=r.createElement(G.C,null);break;case k.T3.DevMenu:Ae=r.createElement(C.V,null);break;case k.T3.Gang:Ae=r.createElement(N.m,null);break;case k.T3.Corporation:Ae=r.createElement(M.n,null);break;case k.T3.Bladeburner:Ae=r.createElement(x.i,null);break;case k.T3.Grafting:Ae=r.createElement(T.q,null);break;case k.T3.Travel:Ae=r.createElement($.Z,null);break;case k.T3.StockMarket:Ae=r.createElement(q.j,{stockMarket:v.xO});break;case k.T3.City:Ae=r.createElement(P.L,null);break;case k.T3.Job:case k.T3.Location:Ae=r.createElement(I.d,{loc:a.location});break;case k.T3.Options:Ae=r.createElement(R.n,{save:()=>u.Ex.saveGame(),export:()=>{(0,m.uL)(),u.Ex.exportGame()},forceKill:xe,softReset:Me,reactivateTutorial:()=>{(0,g.Y)(),ke.toPage(k.T3.Terminal),(0,h.mp)()}});break;case k.T3.Augmentations:Ae=r.createElement(S.n,{exportGameFn:()=>{(0,m.uL)(),u.Ex.exportGame()},installAugmentationsFn:()=>{(0,c.Kq)()}});break;case k.T3.Achievements:Ae=r.createElement(le.k,null);break;case k.T3.ThemeBrowser:Ae=r.createElement(ue.C,null);break;case k.T3.ImportSave:Ae=r.createElement(me.R,{importString:a.base64Save,automatic:!!a.automatic}),Te=!1,Le=!1,Re=!0}return r.createElement(pe.Z,{version:3,src:"dist/ext/MathJax-3.2.2/es5/tex-chtml.js"},r.createElement(ce.S,{key:we,softReset:Me},r.createElement(fe.i,{content:Re?Ae:null},r.createElement(ye.f6,null,r.createElement(te.wT,null,r.createElement(w.g,{mode:h.wP.isRunning?"tutorial":"overview"},(e=>h.wP.isRunning?r.createElement(d.o,null):r.createElement(K.sf,{parentOpen:e,save:()=>u.Ex.saveGame(),killScripts:xe}))),Te?r.createElement(s.Z,{display:"flex",flexDirection:"row",width:"100%"},r.createElement(E.F,{page:a.page}),r.createElement(s.Z,{className:e.root},Ae)):r.createElement(s.Z,{className:e.root},Ae),r.createElement(ee.f,null),Le&&r.createElement(r.Fragment,null,r.createElement(ne.lj,null),r.createElement(re.S,null),r.createElement(ae.C,null),r.createElement(oe.N,null),r.createElement(te.A9,null)),r.createElement(he.g,null))))),r.createElement(de.u,null))}},45756:(e,t,n)=>{"use strict";n.d(t,{p:()=>r});const r=new(n(13342).v)},59132:(e,t,n)=>{"use strict";n.d(t,{o:()=>C});var r=n(67294),a=n(28881),o=n(81138),i=n(92557),s=n(56798),l=n(13379),c=n(20724),u=n(45756),m=n(45529),f=n(10848),h=n(84855),d=n(91290),p=n(9944),g=n(30061),y=n(81261),b=n(3816),v=n(77541),k=n(73327),w=n(40780),E=n(88775);const S=(0,v.Z)((e=>(0,k.Z)({textfield:{borderBottom:"1px solid "+e.palette.primary.main},code:{whiteSpace:"pre",backgroundColor:e.palette.background.paper}})));function C(){const e=S(),t=(0,E.S)(),n="n00dles.js",v={[w.$o.Start]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Welcome to Bitburner, a cyberpunk-themed incremental RPG! The game takes place in a dark, dystopian future... The year is 2077...",r.createElement("br",null),r.createElement("br",null),"This tutorial will show you the basics of the game. You may skip the tutorial at any time.",r.createElement("br",null),r.createElement("br",null),"You can also collapse this panel to temporarily hide this tutorial.")),canNext:!0},[w.$o.GoToCharacterPage]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Let's start by heading to the Stats page. Click"),r.createElement(f.ZP,null,r.createElement(h.Z,{color:"error"}),r.createElement(o.Z,{color:"error"},"Stats")),r.createElement(o.Z,null,"on the main navigation menu (left-hand side of the screen)")),canNext:!1},[w.$o.CharacterPage]:{content:r.createElement(r.Fragment,null,r.createElement(f.ZP,null,r.createElement(h.Z,{color:"primary"}),r.createElement(o.Z,{color:"primary"},"Stats")),r.createElement(o.Z,null,"shows a lot of important information about your progress, such as your skills, money, and bonuses.")),canNext:!0},[w.$o.CharacterGoToTerminalPage]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Let's head to your computer's terminal by clicking"),r.createElement(f.ZP,null,r.createElement(d.Z,{color:"error"}),r.createElement(o.Z,{color:"error"},"Terminal")),r.createElement(o.Z,null,"on the main navigation menu.")),canNext:!1},[w.$o.TerminalIntro]:{content:r.createElement(r.Fragment,null,r.createElement(f.ZP,null,r.createElement(d.Z,{color:"primary"}),r.createElement(o.Z,{color:"primary"},"Terminal")),r.createElement(o.Z,null,"is used to interface with your home computer as well as all of the other machines around the world.")),canNext:!0},[w.$o.TerminalHelp]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Let's try it out. Start by entering"),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> help"),r.createElement(o.Z,null,"(Don't forget to press Enter after typing the command)")),canNext:!1},[w.$o.TerminalLs]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> help"),r.createElement(o.Z,null,"displays a list of all available Terminal commands, how to use them, and a description of what they do."," ",r.createElement("br",null),r.createElement("br",null),"Let's try another command. Enter"),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> ls")),canNext:!1},[w.$o.TerminalScan]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> ls"),r.createElement(o.Z,null," ","is a basic command that shows files on the computer. Right now, it shows that you have a program called"," ","NUKE.exe on your computer. We'll get to what this does later. ",r.createElement("br",null),r.createElement("br",null),"Using your home computer's terminal, you can connect to other machines throughout the world. Let's do that now by first entering"),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan")),canNext:!1},[w.$o.TerminalScanAnalyze1]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan"),r.createElement(o.Z,null,"shows all available network connections. In other words, it displays a list of all servers that can be connected to from your current machine. A server is identified by its hostname. ",r.createElement("br",null),r.createElement("br",null),"That's great and all, but there's so many servers. Which one should you go to?"," "),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan-analyze"),r.createElement(o.Z,null,"gives some more detailed information about servers on the network. Try it now!")),canNext:!1},[w.$o.TerminalScanAnalyze2]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan-analyze"),r.createElement(o.Z,null,"shows more detailed information about each server that you can connect to (servers that are a distance of one node away). ",r.createElement("br",null),r.createElement("br",null)," It is also possible to run scan-analyze with a higher depth. Let's try a depth of two with the following command:"," "),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan-analyze 2")),canNext:!1},[w.$o.TerminalConnect]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Now you can see information about all servers that are up to two nodes away, as well as figure out how to navigate to those servers through the network. You can only connect to a server that is one node away. To connect to a machine, use"),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> connect hostname"),r.createElement(o.Z,null,"From the results of "),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan-analyze 2"),r.createElement(o.Z,null," ","we can see that the n00dles server is only one node away. Let's connect to it now using:"),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> connect n00dles")),canNext:!1},[w.$o.TerminalAnalyze]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"You are now connected to another machine! What can you do now? You can hack it!",r.createElement("br",null),r.createElement("br",null)," In the year 2077, currency has become digital and decentralized. People and corporations store their money on servers and computers. Using your hacking abilities, you can hack servers to steal money and gain experience. ",r.createElement("br",null),r.createElement("br",null),"Before you try to hack a server, you should run diagnostics using"," "),r.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> analyze")),canNext:!1},[w.$o.TerminalNuke]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"When "),r.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> analyze"),r.createElement(o.Z,null,"finishes running it will show useful information about hacking the server. ",r.createElement("br",null),r.createElement("br",null)," For this server, the required hacking skill is only 1, which means you can hack it right now. However, in order to hack a server you must first gain root access. The NUKE.exe program that we saw earlier on your home computer is a virus that will grant you root access to a machine if there are enough open ports."),r.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> analyze"),r.createElement(o.Z,null," ","shows that there do not need to be any open ports on this machine for the NUKE virus to work, so go ahead and run the virus using"," "),r.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> run NUKE.exe"),r.createElement(o.Z,null)),canNext:!1},[w.$o.TerminalManualHack]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"You now have root access! You can hack the server using "),r.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> hack"),r.createElement(o.Z,null," Try doing that now.")),canNext:!0},[w.$o.TerminalHackingMechanics]:{content:r.createElement(o.Z,null,"You are now attempting to hack the server. Performing a hack takes time and only has a certain percentage chance of success. This time and success chance is determined by a variety of factors, including your hacking skill and the server's security level.",r.createElement("br",null),r.createElement("br",null),"If your attempt to hack the server is successful, you will steal a certain percentage of the server's total money. This percentage is affected by your hacking skill and the server's security level.",r.createElement("br",null),r.createElement("br",null),"The amount of money on a server is not limitless. So, if you constantly hack a server and deplete its money, then you will encounter diminishing returns in your hacking. You will need to use"," ",r.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> grow"),"which tricks the company into adding money to their server and"," ",r.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> weaken"),"which increases the speed of hack and grow."),canNext:!0},[w.$o.TerminalGoHome]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"From any server you can get back home using"),r.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> home"),r.createElement(o.Z,null,"Let's head home before creating our first script!")),canNext:!1},[w.$o.TerminalCreateScript]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Hacking is the core mechanic of the game and is necessary for progressing. However, you don't want to be hacking manually the entire time. You can automate your hacking by writing scripts!",r.createElement("br",null),r.createElement("br",null),"To create a new script or edit an existing one, you can use"," "),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> nano"),r.createElement(o.Z,null,"Scripts must end with the .js extension. Let's make a script now by entering "),r.createElement(o.Z,{classes:{root:e.textfield}},`[home ~/]> nano ${n}`)),canNext:!1},[w.$o.TerminalTypeScript]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"This is the script editor. You can use it to program your scripts. Click this text to copy it and paste it into the text editor: ",r.createElement("br",null)),r.createElement(o.Z,{classes:{root:e.code}},r.createElement(m.v,{value:"export async function main(ns) {\n\twhile(true) {\n\t\tawait ns.hack('n00dles');\n\t}\n}"})),r.createElement(o.Z,null,"For anyone with basic programming experience, this code should be straightforward. This script will continuously hack the n00dles server.",r.createElement("br",null),r.createElement("br",null),"To save and close the script editor, press the button at the bottom.")),canNext:!1},[w.$o.TerminalFree]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Now we'll run the script. Scripts require a certain amount of RAM to run, and can be run on any machine which you have root access to. Different servers have different amounts of RAM. You can also purchase more RAM for your home server.",r.createElement("br",null),r.createElement("br",null),"To check how much RAM is available on this machine, enter"),r.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> free")),canNext:!1},[w.$o.TerminalRunScript]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"We have 8GB of free RAM on this machine, which is enough to run our script. Let's run our script using"),r.createElement(o.Z,{classes:{root:e.textfield}},`[home ~/]> run ${n}`)),canNext:!1},[w.$o.TerminalGoToActiveScriptsPage]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Your script is now running! It will continuously run in the background and will automatically stop if the code ever completes (the ",n," will never complete because it runs an infinite loop). ",r.createElement("br",null),r.createElement("br",null),"These scripts can passively earn you income and hacking experience. Your scripts will also earn money and experience while you are offline, although at a slightly slower rate. ",r.createElement("br",null),r.createElement("br",null),"Let's check out some statistics for our running scripts by clicking"," "),r.createElement(f.ZP,null,r.createElement(y.Z,{color:"error"}),r.createElement(o.Z,{color:"error"},"Active Scripts"))),canNext:!1},[w.$o.ActiveScriptsPage]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"This page displays information about all of your scripts that are running across every server. You can use this to gauge how well your scripts are doing.",r.createElement("br",null),r.createElement("br",null),"Click on Home to see the scripts running on it.",r.createElement("br",null),r.createElement("br",null),"Then click on n00dles.js to see the scripts information.",r.createElement("br",null),r.createElement("br",null),"Let's go back to"),r.createElement(f.ZP,null,r.createElement(d.Z,{color:"error"}),r.createElement(o.Z,{color:"error"},"Terminal"))),canNext:!1},[w.$o.ActiveScriptsToTerminal]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"One last thing about scripts, each active script contains logs that detail what it's doing. We can check these logs using the tail command. Do that now for the script we just ran by typing"," "),r.createElement(o.Z,{classes:{root:e.textfield}},`[home ~/]> tail ${n}`)),canNext:!1},[w.$o.TerminalTailScript]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"The log for this script won't show much right now (it might show nothing at all) because it just started running...but check back again in a few minutes! ",r.createElement("br",null),r.createElement("br",null),"This covers the basics of hacking. To learn more about writing scripts, select"),r.createElement(f.ZP,null,r.createElement(p.Z,{color:"primary"}),r.createElement(o.Z,{color:"primary"},"Documentation")),r.createElement(o.Z,null,"in the main navigation menu to look at the documentation.",r.createElement("br",null),r.createElement("br",null),"For now, let's move on to something else!")),canNext:!0},[w.$o.GoToHacknetNodesPage]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"Hacking is not the only way to earn money. One other way to passively earn money is by purchasing and upgrading Hacknet Nodes. Let's go to"),r.createElement(f.ZP,null,r.createElement(g.Z,{color:"error"}),r.createElement(o.Z,{color:"error"},"Hacknet")),r.createElement(o.Z,null,"through the main navigation menu now.")),canNext:!1},[w.$o.HacknetNodesIntroduction]:{content:r.createElement(o.Z,null,"Here you can purchase new Hacknet Nodes and upgrade your existing ones. Let's purchase a new one now."),canNext:!0},[w.$o.HacknetNodesGoToWorldPage]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"You just purchased a Hacknet Node! This Hacknet Node will passively earn you money over time, both online and offline. When you get enough money, you can upgrade your newly-purchased Hacknet Node below.",r.createElement("br",null),r.createElement("br",null),"Let's go to"),r.createElement(f.ZP,null,r.createElement(b.Z,{color:"error"}),r.createElement(o.Z,{color:"error"},"City"))),canNext:!1},[w.$o.WorldDescription]:{content:r.createElement(r.Fragment,null,r.createElement(o.Z,null,"This page lists all of the different locations you can currently travel to. Each location has something that you can do. There's a lot of content out in the world, make sure you explore and discover!",r.createElement("br",null),r.createElement("br",null),"Lastly, click on"),r.createElement(f.ZP,null,r.createElement(p.Z,{color:"error"}),r.createElement(o.Z,{color:"error"},"Documentation"))),canNext:!1},[w.$o.DocumentationPageInfo]:{content:r.createElement(o.Z,null,"This page contains a lot of different documentation about the game's content and mechanics. I know it's a lot, but I highly suggest you read (or at least skim) through this before you start playing.",r.createElement("br",null),r.createElement("br",null),"The Beginner's Guide contains the guide for new players, navigating you through most of early game.",r.createElement("br",null),r.createElement("br",null),"That's the end of the tutorial. Hope you enjoy the game!"),canNext:!0},[w.$o.End]:{content:r.createElement(o.Z,null),canNext:!0}};(0,r.useEffect)((()=>u.p.subscribe(t)),[t]);const k=w.wP.currStep,C=v[k];if(void 0===C)throw new Error("error in the tutorial");return r.createElement(r.Fragment,null,r.createElement(a.Z,{square:!0,sx:{maxWidth:"70vw",p:2}},C.content,k!==w.$o.DocumentationPageInfo&&r.createElement(r.Fragment,null,k!==w.$o.Start&&r.createElement(i.Z,{onClick:w.oo,"aria-label":"previous"},r.createElement(c.Z,null)),(C.canNext||w.wP.stepIsDone[k])&&r.createElement(i.Z,{onClick:w.ZF,"aria-label":"next"},r.createElement(l.Z,null))),r.createElement("br",null),r.createElement("br",null),r.createElement(s.Z,{onClick:w.nu},k!==w.$o.DocumentationPageInfo?"SKIP TUTORIAL":"FINISH TUTORIAL")))}},77888:(e,t,n)=>{"use strict";n.d(t,{a:()=>d});var r=n(67294),a=n(90149),o=n(81138),i=n(31990),s=n(22573),l=n(2827),c=n(52947),u=n(72938),m=n(97833),f=n(90936),h=n(10333);function d(){const[e,t]=(0,r.useState)(!1),[n,d]=(0,r.useState)(!1),p=`v${u.t.VersionString} (${(0,f.v)()})`;return document.title=`Bitburner ${p}`,(0,r.useEffect)((()=>{const e=setTimeout((()=>{n||t(!0)}),2e3);return()=>clearTimeout(e)})),(0,r.useEffect)((()=>{!async function(){await(0,s.zD)().then((e=>{try{l.D.load(e)}catch(e){throw(0,m.fp)(),d(!0),e}(0,h.e_)(),d(!0)})).catch((e=>{console.error(e),l.D.load(""),d(!0)}))}()}),[]),n?r.createElement(c.O,null):r.createElement(i.ZP,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",style:{minHeight:"100vh"}},r.createElement(i.ZP,{item:!0},r.createElement(a.Z,{size:150,color:"primary"})),r.createElement(i.ZP,{item:!0},r.createElement(o.Z,{variant:"h3"},"Loading Bitburner ",p)),e&&r.createElement(i.ZP,{item:!0},r.createElement(o.Z,null,"If the game fails to load, consider ",r.createElement("a",{href:"?noScripts"},"killing all scripts"))))}},45512:(e,t,n)=>{"use strict";n.d(t,{MD:()=>u});var r=n(67294),a=n(57433),o=n(15369),i=n(26219),s=n(8586),l=n(84066),c=n(51936);function u(e){return r.createElement(a.D,{components:{h1:s.h1,h2:s.h2,h3:s.h3,h4:s.h4,h5:s.h5,h6:s.h6,pre:l.S,p:s.p,code:l.T,li:s.li,th:s.Th,td:s.Td,table:s.K,thead:o.Z,tr:s.tr,blockquote:s.V,a:c.A},remarkPlugins:[i.Z]},e.md)}},51936:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(67294),a=n(39401),o=n(19678),i=n(93989),s=n(49173);const l=e=>{const t=(0,o.Q2)(),n=e.href??"";return n.startsWith("http")?r.createElement(a.Z,{rel:"noopener noreferrer",href:e.href,target:"_blank"},e.children):n.includes("advanced/")&&0===s.J5.sourceFileLvl(1)?r.createElement("span",{style:{textDecoration:"underline",cursor:"pointer"}},r.createElement(i.q,{content:e.children+""})):r.createElement(a.Z,{onClick:e=>{t.navigate(n,e.ctrlKey)},component:"button",variant:"body1",fontSize:"inherit"},e.children)}},84066:(e,t,n)=>{"use strict";n.d(t,{S:()=>u,T:()=>h});var r=n(67294),a=n(26105),o=n(58519),i=n(77541),s=n(73327),l=n(81138);const c=(0,i.Z)((e=>(0,s.Z)({pre:{borderRadius:"6px"},code:{paddingBottom:"2.72px",paddingLeft:"5.44px",paddingRight:"5.44px",paddingTop:"2.72px",borderRadius:"6px",display:"inline",backgroundColor:e.palette.background.paper}}))),u=e=>{const t=c();return r.createElement(l.Z,{component:"span",classes:{root:t.pre}},e.children)},m=e=>r.createElement(l.Z,{component:"span",classes:{root:c().code}},e.children),f=e=>r.createElement(a.Z,{language:"javascript",style:o.Z,customStyle:{padding:"16px",borderRadius:"6px"}},String(e.children)),h=e=>e.inline?r.createElement(m,e):r.createElement(f,e)},8586:(e,t,n)=>{"use strict";n.d(t,{K:()=>S,Td:()=>w,Th:()=>E,V:()=>x,h1:()=>f,h2:()=>h,h3:()=>d,h4:()=>p,h5:()=>g,h6:()=>y,li:()=>v,p:()=>b,tr:()=>C});var r=n(67294),a=n(77541),o=n(73327),i=n(81138),s=n(61702),l=n(7272),c=n(47542),u=n(49557);const m=(0,a.Z)((e=>(0,o.Z)({th:{whiteSpace:"pre",fontWeight:"bold"},td:{whiteSpace:"pre"},blockquote:{borderLeftColor:e.palette.background.paper,borderLeftStyle:"solid",borderLeftWidth:"4px",paddingLeft:"16px",paddingRight:"16px"}}))),f=e=>r.createElement(i.Z,{variant:"h2"},e.children),h=e=>r.createElement(i.Z,{variant:"h3"},e.children),d=e=>r.createElement(i.Z,{variant:"h4"},e.children),p=e=>r.createElement(i.Z,{variant:"h5"},e.children),g=e=>r.createElement(i.Z,{variant:"h6"},e.children),y=e=>r.createElement(i.Z,{variant:"h6"},e.children),b=e=>r.createElement(i.Z,{sx:{mb:1}},e.children),v=e=>{const t=e.ordered?`${e.index+1}. `:"· ";return r.createElement(s.Z,null,t,e.children)},k=e=>"-moz-initial"===e||"initial"===e||"revert"===e||"revert-layer"===e||"unset"===e||"end"===e||"start"===e||"match-parent"===e?"inherit":e,w=e=>{var t;const n=m(),a=k(null===(t=e.style)||void 0===t?void 0:t.textAlign);return r.createElement(l.Z,{align:a},r.createElement(i.Z,{align:a,classes:{root:n.td}},e.children))},E=e=>{var t;const n=m(),a=k(null===(t=e.style)||void 0===t?void 0:t.textAlign);return r.createElement(l.Z,{align:a},r.createElement(i.Z,{align:a,classes:{root:n.th}},e.children))},S=e=>r.createElement(c.Z,{sx:{width:"inherit"}},e.children),C=e=>r.createElement(u.Z,null,e.children),x=e=>{const t=m();return r.createElement("blockquote",{className:t.blockquote},e.children)}},86378:(e,t,n)=>{"use strict";n.d(t,{m:()=>m});var r=n(81138),a=n(67294),o=n(77541),i=n(73327),s=n(51087);const l=new RegExp("\\[(?.*?)m","ug"),c=(0,o.Z)((e=>(0,i.Z)({success:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.colors.success,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"},error:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.error.main,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"},primary:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.primary.main,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"},info:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.info.main,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"},warning:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.warning.main,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"}}))),u=(e,t)=>({error:e.error,success:e.success,info:e.info,warn:e.warning}[t]||e.primary),m=a.memo((function(e){const t=String(e.text),n=c(),o=[],i=[{0:"",index:0,groups:{code:null}},...t.matchAll(l),null];return i.length>2&&i.slice(0,-1).forEach(((e,n)=>{const r=i[n+1];if(!e||void 0===e.index||void 0===e.groups)return;const a=e.index+e[0].length,s=r?r.index:t.length,l=t.slice(a,s);a!==s&&o.push({code:e.groups.code,text:l})})),0===o.length&&o.push({code:null,text:t}),a.createElement(r.Z,{component:"div",classes:{root:u(n,e.color)},paragraph:!1},o.map(((e,t)=>a.createElement("span",{key:t,style:f(e.code)},e.text))))}));function f(e){const t=["#404040","#ff0000","#00ff00","#ffff00","#0000ff","#ff00ff","#00ffff","#ffffff"],n=["#000000","#800000","#008000","#808000","#000080","#800080","#008080","#c0c0c0"],r=(e,r)=>{if(5===e[r]){if(e.length<=r+1)return[e.length-r,"inherit"];const a=e[r+1];if(0<=a&&a<8)return[2,n[a]];if(8<=a&&a<16)return[2,t[a-8]];if(16<=a&&a<232){const e=a-16,t=Math.floor(e/36),n=Math.floor(e%36/6),r=Math.floor(e%6/1);return[2,`rgb(${t<=0?0:55+40*t}, ${n<=0?0:55+40*n}, ${r<=0?0:55+40*r})`]}if(232<=a&&a<256){const e=10*(a-232)+8;return[2,`rgb(${e}, ${e}, ${e})`]}return[2,"inherit"]}return 2===e[r]?e.length<=r+3?[e.length-r,"inherit"]:[4,`rgb(${e[r+1]}, ${e[r+2]}, ${e[r+3]})`]:[-1,""]},a={};if(null===e||"0"===e)return a;const o=e.split(";").map((e=>""===e?0:parseInt(e)));for(let e=0;e0&&(e+=t,a[38===i?"color":"backgroundColor"]=n)}}return a.backgroundColor&&(a.padding="var(--padForFlushBg) 0px"),a}},95173:(e,t,n)=>{"use strict";n.d(t,{S:()=>m,e:()=>c});var r=n(67294),a=n(13342),o=n(48672),i=n(81138),s=n(30120),l=n(72023);const c=new a.v;let u=0;function m(){const[e,t]=(0,r.useState)([]);return(0,r.useEffect)((()=>c.subscribe((e=>{const n=u+"";u++,t((t=>{const r=function(e){return"string"==typeof e?(0,l.sha256)(e):(0,l.sha256)(JSON.stringify(e.props))}(e);return t.some((e=>e.hash===r))?t:[...t,{id:n,text:e,hash:r}]}))}))),[]),(0,r.useEffect)((()=>{function e(e){"Escape"===e.code&&t([])}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)}),[]),r.createElement(r.Fragment,null,e.length>0&&r.createElement(o.u,{open:!0,onClose:function(){t((e=>e.slice(1,1e99)))}},r.createElement(s.Z,{overflow:"scroll",sx:{overflowWrap:"break-word",whiteSpace:"pre-line"}},r.createElement(i.Z,{component:"span"},e[0].text))))}},18450:(e,t,n)=>{"use strict";n.d(t,{i:()=>a});var r=n(67294);function a(e){return e.content?r.createElement(r.Fragment,null,e.content):r.createElement(r.Fragment,null,e.children)}},43480:(e,t,n)=>{"use strict";n.d(t,{sf:()=>q,yK:()=>Q});var r=n(67294),a=n(62097),o=n(77541),i=n(73327),s=n(22115),l=n(17365),c=n(22949),u=n(49802),m=n(47542),f=n(46948),h=n(7272),d=n(49557),p=n(81138),g=n(56798),y=n(92557),b=n(66818),v=n(92911),k=n(51087),w=n(52947),E=n(24815),S=n(49173),C=n(19312),x=n(97740),N=n(30120),M=n(17575),A=n(94337),T=n(72938),L=n(95814),R=n(64315),F=n(16632),_=n(74192),I=n(75522),P=n(48196),B=n(22738),O=n(13342),D=n(88775);const Z=new O.v,G={HP:()=>S.J5.hp.current+"|"+S.J5.hp.max,Money:()=>S.J5.money,Hack:()=>S.J5.skills.hacking,Str:()=>S.J5.skills.strength,Def:()=>S.J5.skills.defense,Dex:()=>S.J5.skills.dexterity,Agi:()=>S.J5.skills.agility,Cha:()=>S.J5.skills.charisma,Int:()=>S.J5.skills.intelligence},J={HP:()=>`${(0,s.nC)(S.J5.hp.current)} / ${(0,s.nC)(S.J5.hp.max)}`,Money:()=>(0,s.lb)(S.J5.money),Hack:()=>(0,s.DR)(S.J5.skills.hacking),Str:()=>(0,s.DR)(S.J5.skills.strength),Def:()=>(0,s.DR)(S.J5.skills.defense),Dex:()=>(0,s.DR)(S.J5.skills.dexterity),Agi:()=>(0,s.DR)(S.J5.skills.agility),Cha:()=>(0,s.DR)(S.J5.skills.charisma),Int:()=>(0,s.DR)(S.J5.skills.intelligence)},W={Hack:()=>S.J5.mults.hacking*x.dQ.HackingLevelMultiplier,Str:()=>S.J5.mults.strength*x.dQ.StrengthLevelMultiplier,Def:()=>S.J5.mults.defense*x.dQ.DefenseLevelMultiplier,Dex:()=>S.J5.mults.dexterity*x.dQ.DexterityLevelMultiplier,Agi:()=>S.J5.mults.agility*x.dQ.AgilityLevelMultiplier,Cha:()=>S.J5.mults.charisma*x.dQ.CharismaLevelMultiplier,Int:()=>1},H={Hack:"hacking",Str:"strength",Def:"defense",Dex:"dexterity",Agi:"agility",Cha:"charisma",Int:"intelligence"};function U(e){let{name:t,color:n}=e;const[a,o]=(0,r.useState)((0,B.VI)(0));return(0,r.useEffect)((()=>Z.subscribe((()=>{const e=W[t]();o((0,B.VI)(S.J5.exp[H[t]],e))}))),[t]),r.createElement(d.Z,null,r.createElement(C.B,{progress:a,color:n}))}function j(e){let{name:t,color:n}=e;const[a,o]=(0,r.useState)(G[t]());return(0,r.useEffect)((()=>Z.subscribe((()=>o(G[t]())))),[t]),r.createElement(p.Z,{color:n},J[t]())}function $(e){let{name:t,showBar:n,color:a,cellType:o}=e;const i=Q(),s=n&&t in H?r.createElement(U,{name:t,color:a}):r.createElement(r.Fragment,null);return r.createElement(r.Fragment,null,r.createElement(d.Z,null,r.createElement(h.Z,{component:"th",scope:"row",classes:{root:i[o]}},r.createElement(p.Z,{color:a},t," ")),r.createElement(h.Z,{align:"right",classes:{root:i[o]}},r.createElement(j,{name:t,color:a})),r.createElement(h.Z,{align:"right",classes:{root:i[o]}},r.createElement(p.Z,{id:"overview-"+t.toLowerCase()+"-hook",color:a}))),s)}function q(e){let{parentOpen:t,save:n,killScripts:o}=e;const[i,s]=(0,r.useState)(!1),[l,u]=(0,r.useState)(S.J5.skills.intelligence>0),[g,w]=(0,r.useState)(!k.Z.DisableOverviewProgressBars);(0,r.useEffect)((()=>{if(!t)return;const e=setInterval((()=>{u(S.J5.skills.intelligence>0),w(!k.Z.DisableOverviewProgressBars),Z.emit()}),600);return()=>clearInterval(e)}),[t]);const E=Q(),C=(0,a.Z)();return r.createElement(r.Fragment,null,r.createElement(m.Z,{sx:{display:"block",m:1}},r.createElement(f.Z,null,r.createElement($,{name:"HP",showBar:!1,color:C.colors.hp,cellType:"cellNone"}),r.createElement($,{name:"Money",showBar:!1,color:C.colors.money,cellType:"cell"}),r.createElement($,{name:"Hack",showBar:g,color:C.colors.hack,cellType:"cell"}),r.createElement($,{name:"Str",showBar:g,color:C.colors.combat,cellType:"cellNone"}),r.createElement($,{name:"Def",showBar:g,color:C.colors.combat,cellType:"cellNone"}),r.createElement($,{name:"Dex",showBar:g,color:C.colors.combat,cellType:"cellNone"}),r.createElement($,{name:"Agi",showBar:g,color:C.colors.combat,cellType:"cell"}),r.createElement($,{name:"Cha",showBar:g,color:C.colors.cha,cellType:"cell"}),l?r.createElement($,{name:"Int",showBar:g,color:C.colors.int,cellType:"cell"}):r.createElement(r.Fragment,null),r.createElement(d.Z,null,r.createElement(h.Z,{component:"th",scope:"row",classes:{root:E.cell}},r.createElement(p.Z,{id:"overview-extra-hook-0",color:C.colors.hack})),r.createElement(h.Z,{component:"th",scope:"row",align:"right",classes:{root:E.cell}},r.createElement(p.Z,{id:"overview-extra-hook-1",color:C.colors.hack})),r.createElement(h.Z,{component:"th",scope:"row",align:"right",classes:{root:E.cell}},r.createElement(p.Z,{id:"overview-extra-hook-2",color:C.colors.hack}))),r.createElement(X,null),r.createElement(V,null))),r.createElement(N.Z,{sx:{display:"flex",borderTop:`1px solid ${k.Z.theme.welllight}`}},r.createElement(N.Z,{sx:{display:"flex",flex:1,justifyContent:"flex-start",alignItems:"center"}},r.createElement(y.Z,{"aria-label":"save game",onClick:n},r.createElement(M.Z,{title:0!==k.Z.AutosaveInterval?"Save game":"Save game (auto-saves are disabled!)"},r.createElement(b.Z,{color:0!==k.Z.AutosaveInterval?"primary":"error"})))),r.createElement(N.Z,{sx:{display:"flex",flex:1,justifyContent:"flex-end",alignItems:"center"}},r.createElement(y.Z,{"aria-label":"kill all scripts",onClick:()=>s(!0)},r.createElement(M.Z,{title:"Kill all running scripts"},r.createElement(v.Z,{color:"error"}))))),r.createElement(c.C,{open:i,onClose:()=>s(!1),killScripts:o}))}function z(e){const t=S.J5.bladeburner;if(!t)return r.createElement(r.Fragment,null);const n=t.getTypeAndNameFromActionId(e.action);return r.createElement(p.Z,null,n.type,": ",n.name)}function V(){var e;const t=Q(),n=(0,D.S)();(0,r.useEffect)((()=>Z.subscribe(n)),[n]);const a=null===(e=S.J5.bladeburner)||void 0===e?void 0:e.action;return(0,r.useMemo)((()=>a&&1!==a.type?r.createElement(r.Fragment,null,r.createElement(d.Z,null,r.createElement(h.Z,{component:"th",scope:"row",colSpan:2,classes:{root:t.cellNone}},r.createElement(p.Z,null,"Bladeburner:"))),r.createElement(d.Z,null,r.createElement(h.Z,{component:"th",scope:"row",colSpan:2,classes:{root:t.cellNone}},r.createElement(z,{action:a})))):r.createElement(r.Fragment,null)),[a,t.cellNone])}const Y=()=>{S.J5.startFocusing(),w.F.toPage(E.T3.Work)};function K(e){let{tooltip:t,children:n,header:a}=e;const o=Q();return r.createElement(r.Fragment,null,r.createElement(d.Z,null,r.createElement(h.Z,{component:"th",scope:"row",colSpan:2,classes:{root:o.workCell}},r.createElement(M.Z,{title:r.createElement(r.Fragment,null,t)},r.createElement(p.Z,{className:o.workHeader,sx:{pt:1,pb:.5}},a)))),r.createElement(d.Z,null,r.createElement(h.Z,{component:"th",scope:"row",colSpan:2,classes:{root:o.workCell}},r.createElement(p.Z,{className:o.workSubtitles},n))),(0,r.useMemo)((()=>r.createElement(d.Z,null,r.createElement(h.Z,{component:"th",scope:"row",align:"center",colSpan:2,classes:{root:o.cellNone}},r.createElement(g.Z,{sx:{mt:1},onClick:Y},"Focus")))),[o.cellNone]))}function X(){const e=(0,D.S)();if((0,r.useEffect)((()=>Z.subscribe(e)),[e]),null===S.J5.currentWork||S.J5.focus)return r.createElement(r.Fragment,null);let t="",n="",a="";if((0,P.s)(S.J5.currentWork)){const e=S.J5.currentWork.getCrime(),o=S.J5.currentWork.unitCompleted/e.time*100;t=r.createElement(r.Fragment,null,S.J5.currentWork.crimeType),n=r.createElement(r.Fragment,null,"You are attempting to ",S.J5.currentWork.crimeType),a=r.createElement(r.Fragment,null,o.toFixed(2),"%")}if((0,A.tG)(S.J5.currentWork)&&(t=r.createElement(r.Fragment,null,S.J5.currentWork.getClass().youAreCurrently),n=r.createElement(r.Fragment,null,"You are ",S.J5.currentWork.getClass().youAreCurrently),a=r.createElement(r.Fragment,null,(0,u.UF)(S.J5.currentWork.cyclesWorked*T.t.MilliPerCycle))),(0,L.o)(S.J5.currentWork)){const e=S.J5.currentWork;t=r.createElement(r.Fragment,null,"Coding ",e.programName),n=r.createElement(r.Fragment,null,"Creating a program"),a=r.createElement(r.Fragment,null,e.programName," ",(e.unitCompleted/e.unitNeeded()*100).toFixed(2),"%")}if((0,R.u)(S.J5.currentWork)){const e=S.J5.currentWork;t=r.createElement(r.Fragment,null,"Grafting ",e.augmentation),n=r.createElement(r.Fragment,null,"Grafting an Augmentation"),a=r.createElement(r.Fragment,null,r.createElement("strong",null,(e.unitCompleted/e.unitNeeded()*100).toFixed(2),"%")," done")}if((0,F.D)(S.J5.currentWork)){const e=S.J5.currentWork;n=r.createElement(r.Fragment,null,"Working for ",r.createElement("strong",null,e.factionName)),a=r.createElement(r.Fragment,null,r.createElement(l.Y,{reputation:e.getFaction().playerReputation})," rep",r.createElement("br",null),"(",r.createElement(_.y,{reputation:e.getReputationRate()*(1e3/T.t.MilliPerCycle)}),")")}if((0,I.d)(S.J5.currentWork)){const e=S.J5.currentWork,o=S.J5.jobs[e.companyName];if(!o)return r.createElement(r.Fragment,null);t=r.createElement(r.Fragment,null,o," at ",r.createElement("strong",null,e.companyName)),n=r.createElement(r.Fragment,null,"Working at ",r.createElement("strong",null,e.companyName)),a=r.createElement(r.Fragment,null,r.createElement(l.Y,{reputation:e.getCompany().playerReputation})," rep",r.createElement("br",null),"(",r.createElement(_.y,{reputation:e.getGainRates(o).reputation*(1e3/T.t.MilliPerCycle)}),")")}return r.createElement(K,{tooltip:t,header:n},a)}const Q=(0,o.Z)((e=>(0,i.Z)({workCell:{textAlign:"center",maxWidth:"200px",borderBottom:"none",padding:0,margin:0},workHeader:{fontSize:"0.9rem"},workSubtitles:{fontSize:"0.8rem"},cellNone:{borderBottom:"none",padding:0,margin:0},cell:{padding:0,margin:0},hp:{color:e.colors.hp},money:{color:e.colors.money},hack:{color:e.colors.hack},combat:{color:e.colors.combat},cha:{color:e.colors.cha},int:{color:e.colors.int}})))},441:(e,t,n)=>{"use strict";n.d(t,{z:()=>o});var r=n(67294),a=n(81138);function o(e){const[t,n]=(0,r.useState)(0),[o,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{if(o&&e.onDone)return void e.onDone();let r=!1;return(async()=>{await(10,new Promise((e=>setTimeout(e,10)))).then((()=>!r&&function(){const r=t+1;n(r),i(r>=e.text.length)}()))})(),()=>{r=!0}})),r.createElement(r.Fragment,null,r.createElement(a.Z,null,e.text.slice(0,t),!o&&r.createElement("span",null,"█")))}},6681:(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var r=n(67294),a=n(441),o=n(81138),i=n(56798);function s(e){const[t,n]=(0,r.useState)(0),[s,l]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,e.lines.slice(0,t).map(((e,t)=>r.createElement(o.Z,{key:t},e))),e.lines.length>t&&r.createElement(a.z,{key:t,text:e.lines[t],onDone:function(){const r=t+1;n(r),r>=e.lines.length&&(e.onDone&&e.auto&&e.onDone(),l(!0))}}),!e.auto&&e.onDone&&s&&r.createElement(i.Z,{onClick:e.onDone},"Continue ..."))}},51020:(e,t,n)=>{"use strict";n.d(t,{W:()=>h,Z:()=>f});var r=n(67294),a=n(81055),o=n(62725),i=n(45529),s=n(48672),l=n(13342),c=n(81138),u=n(66351),m=n(56798);const f=new l.v;function h(){const[e,t]=(0,r.useState)(null),[n,l]=(0,r.useState)("");if((0,r.useEffect)((()=>{f.subscribe((e=>t(e)))})),(0,r.useEffect)((()=>()=>{null==e||e.onClose()}),[e]),null===e)return r.createElement(r.Fragment,null);function h(){null!==e&&(e.onClose(),t(null))}const d=o.Th[e.c.type],p=[];for(const[t,n]of d.desc(e.c.data).split("\n").entries())p.push(r.createElement("span",{key:t,dangerouslySetInnerHTML:{__html:n+"
"}}));return r.createElement(s.u,{open:null!==e,onClose:h},r.createElement(i.v,{variant:"h4",value:e.c.type}),r.createElement(c.Z,null,"You are attempting to solve a Coding Contract. You have ",e.c.getMaxNumTries()-e.c.tries," tries remaining, after which the contract will self-destruct."),r.createElement("br",null),r.createElement(c.Z,null,p),r.createElement("br",null),r.createElement(u.Z,{autoFocus:!0,placeholder:"Enter Solution here",value:n,onChange:function(e){l(e.target.value)},onKeyDown:function(t){if(null===e)return;const r=t.currentTarget.value;t.key===a.F.ENTER&&""!==r&&(t.preventDefault(),e.onAttempt(n),l(""),h())},InputProps:{endAdornment:r.createElement(m.Z,{onClick:()=>{e.onAttempt(n),l(""),h()}},"Solve")}}))}},38217:(e,t,n)=>{"use strict";n.d(t,{e:()=>c});var r=n(67294),a=n(26023),o=n(98649),i=n(56798),s=n(62586);const l=(0,n(21623).nd)(s.O).sort(((e,t)=>e.localeCompare(t)));function c(e){const t=[];for(const e of l)t.push(r.createElement(o.Z,{key:e,value:e},e));return r.createElement(a.Z,{startAdornment:r.createElement(i.Z,{onClick:e.purchase,disabled:!e.canPurchase},"Buy"),sx:{mx:1},value:e.value,onChange:e.onChange},t)}},54538:(e,t,n)=>{"use strict";n.d(t,{c:()=>s});var r=n(67294),a=n(48672),o=n(56798),i=n(81138);function s(e){return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(r.Fragment,null,r.createElement(i.Z,null,e.confirmationText),r.createElement(o.Z,{onClick:()=>{e.onConfirm()}},"Confirm"),e.additionalButton&&r.createElement(r.Fragment,null,e.additionalButton)))}},45529:(e,t,n)=>{"use strict";n.d(t,{v:()=>i});var r=n(67294),a=n(81138),o=n(17575);function i(e){const[t,n]=(0,r.useState)(!1);return r.createElement(o.Z,{open:t,title:r.createElement(a.Z,null,"Copied!")},r.createElement(a.Z,{variant:e.variant,color:e.color,onClick:function(){const t=document.createElement("textarea");t.value=e.value,document.body.appendChild(t),t.select(),t.setSelectionRange(0,1e10),document.execCommand("copy"),document.body.removeChild(t),n(!0),setTimeout((()=>n(!1)),1e3)}},e.value))}},93989:(e,t,n)=>{"use strict";n.d(t,{q:()=>o});var r=n(67294);function a(e,t,n){return e.substring(0,t)+n+e.substring(t+1)}function o(e){const[t,n]=(0,r.useState)(e.content);return(0,r.useEffect)((()=>{let t=5;const r=[],o=setInterval((()=>{if(t--,t>0)return;t=5*Math.random();const o=Math.random()*e.content.length,i=e.content.charAt(o);n((e=>a(e,o,function(e){const t=e=>e[Math.floor(Math.random()*e.length)],n=["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","1234567890"," _","()[]{}<>"];for(const r of n)if(r.includes(e))return t(r);return t("!@#$%^&*()_+|\\';\"/.,?`~")}(i)))),r.push(window.setTimeout((()=>{n((e=>a(e,o,i)))}),500))}),20);return()=>{clearInterval(o),r.forEach((e=>clearTimeout(e)))}}),[e.content]),r.createElement("span",null,t)}},6466:(e,t,n)=>{"use strict";n.d(t,{t:()=>u});var r=n(67294),a=n(22573),o=n(54538),i=n(56798),s=n(17575),l=n(41733),c=n(10333);function u(e){let{color:t="primary"}=e;const[n,u]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,r.createElement(s.Z,{title:"This will permanently delete your local save game. Did you export it before?"},r.createElement(i.Z,{startIcon:r.createElement(l.Z,null),color:t,onClick:()=>u(!0)},"Delete Save")),r.createElement(o.c,{onConfirm:()=>{u(!1),(0,a.TT)().then((()=>{(0,c._l)(),setTimeout((()=>location.reload()),1e3)})).catch((e=>console.error(`Could not delete game: ${e}`)))},open:n,onClose:()=>u(!1),confirmationText:"Really delete your game? (It's permanent!)"}))}},39463:(e,t,n)=>{"use strict";n.d(t,{X:()=>i});var r=n(95173),a=n(67294),o=n(81138);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];r.e.emit("string"!=typeof e?e:t?a.createElement("div",{dangerouslySetInnerHTML:{__html:e}}):a.createElement(o.Z,{component:"span",style:{whiteSpace:"pre-wrap"}},e))}},19678:(e,t,n)=>{"use strict";n.d(t,{C3:()=>o,Q2:()=>i,f6:()=>m,k6:()=>u});var r=n(67294),a=n(64962);const o=r.createContext({navigate:()=>{}}),i=()=>(0,r.useContext)(o),s=(0,a.Tp)("index.md"),l=r.createContext({page:s,pages:[],push:()=>{},pop:()=>{},home:()=>{}}),c=l.Provider,u=()=>(0,r.useContext)(l),m=e=>{const[t,n]=(0,r.useState)({page:s,pages:[],push(e){n((t=>((e,t)=>({...e,page:t,pages:[...e.pages,e.page]}))(t,e)))},pop(){n((e=>(e=>{const t=e.pages.pop()??s;return{...e,page:t}})(e)))},home(){n((e=>(e=>({...e,page:s,pages:[]}))(e)))}});return r.createElement(c,{value:t},e.children)}},41519:(e,t,n)=>{"use strict";n.d(t,{T:()=>l});var r=n(67294),a=n(22115),o=n(77541),i=n(73327);const s=(0,o.Z)((e=>(0,i.Z)({favor:{color:e.colors.rep}})));function l(e){let{favor:t}=e;const n=s();return r.createElement("span",{className:n.favor},"number"==typeof t?(0,a.ZQ)(t):t)}},79198:(e,t,n)=>{"use strict";n.d(t,{a:()=>i});var r=n(67294),a=n(22115),o=n(50411);function i(e){let{hashes:t}=e;return r.createElement(o.S,{hashes:`${(0,a.y3)(t)} h / s`})}},50411:(e,t,n)=>{"use strict";n.d(t,{S:()=>l});var r=n(67294),a=n(22115),o=n(77541),i=n(73327);const s=(0,o.Z)((e=>(0,i.Z)({money:{color:e.colors.money}})));function l(e){let{hashes:t}=e;const n=s();return r.createElement("span",{className:n.money},"number"==typeof t?(0,a.y3)(t):t)}},5890:(e,t,n)=>{"use strict";n.d(t,{k:()=>s});var r=n(67294),a=n(17575),o=n(40759),i=n(35487);const s=e=>{let{isBetter:t}=e;const n=t?"Imported value is larger!":"Imported value is smaller!",s=t?r.createElement(o.Z,{color:"success"}):r.createElement(i.Z,{color:"error"});return r.createElement(a.Z,{title:n},s)}},96380:(e,t,n)=>{"use strict";n.d(t,{R:()=>D});var r=n(67294),a=n(30120),o=n(56798),i=n(34265),s=n(51627),l=n(92557),c=n(28881),u=n(47542),m=n(15369),f=n(49557),h=n(46948),d=n(67929),p=n(7272),g=n(17575),y=n(81138),b=n(77541),v=n(73327),k=n(62177),w=n(80227),E=n(21023),S=n(75503),C=n(90813),x=n(34716),N=n(51087),M=n(49802),A=n(22115),T=n(54538),L=n(10333),R=n(52947),F=n(24815),_=n(88775),I=n(5890);const P=(0,b.Z)((e=>(0,v.Z)({root:{padding:e.spacing(2),maxWidth:"1000px","& .MuiTable-root":{"& .MuiTableCell-root":{borderBottom:`1px solid ${N.Z.theme.welllight}`},"& .MuiTableHead-root .MuiTableRow-root":{backgroundColor:N.Z.theme.backgroundsecondary,"& .MuiTableCell-root":{color:N.Z.theme.primary,fontWeight:"bold"}},"& .MuiTableBody-root":{"& .MuiTableRow-root:nth-of-type(odd)":{backgroundColor:N.Z.theme.well,"& .MuiTableCell-root":{color:N.Z.theme.primarylight}},"& .MuiTableRow-root:nth-of-type(even)":{backgroundColor:N.Z.theme.backgroundsecondary,"& .MuiTableCell-root":{color:N.Z.theme.primarylight}}}}},skillTitle:{textTransform:"capitalize"}}))),B=["hacking","strength","defense","dexterity","agility","charisma"];let O=0;const D=e=>{var t,n,b,v,D,Z,G,J,W,H,U,j,$,q,z,V,Y,K,X,Q,ee,te,ne,re,ae,oe,ie,se,le,ce,ue,me,fe,he,de,pe,ge,ye,be,ve,ke,we,Ee,Se,Ce,xe,Ne,Me,Ae,Te,Le,Re;const Fe=P(),[_e,Ie]=(0,r.useState)(),[Pe,Be]=(0,r.useState)(),[Oe,{on:De,off:Ze}]=(0,_.k)(!1),[Ge,{toggle:Je}]=(0,_.k)(!0),[We,He]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{O=N.Z.AutosaveInterval,N.Z.AutosaveInterval=0,R.F.allowRouting(!1)}),[]),(0,r.useEffect)((()=>{We&&R.F.toPage(F.T3.Terminal)}),[We]),(0,r.useEffect)((()=>{e.importString&&async function(){const t=await x.Ex.getImportDataFromString(e.importString),n=await x.Ex.getImportDataFromString(x.Ex.getSaveString(!0));Ie(t),Be(n),Promise.resolve()}()}),[e.importString]),_e&&Pe?r.createElement(a.Z,{className:Fe.root},r.createElement(y.Z,{variant:"h4",sx:{mb:2}},"Import Save Comparison"),e.automatic&&r.createElement(y.Z,{sx:{mb:2}},"We've found a ",r.createElement("b",null,"NEWER save")," that you may want to use instead."),r.createElement(y.Z,{variant:"body1",sx:{mb:2}},"Your current game's data is on the left and the data that will be imported is on the right.",r.createElement("br",null),"Please double check everything is fine before proceeding!"),r.createElement(d.Z,{color:"secondary",component:c.Z},r.createElement(u.Z,null,r.createElement(m.Z,null,r.createElement(f.Z,null,r.createElement(p.Z,null),r.createElement(p.Z,null,"Current Game"),r.createElement(p.Z,null,"Being Imported"),r.createElement(p.Z,{width:56}))),r.createElement(h.Z,null,r.createElement(f.Z,null,r.createElement(p.Z,null,"Game Identifier"),r.createElement(p.Z,null,(null===(t=Pe.playerData)||void 0===t?void 0:t.identifier)??"n/a"),r.createElement(p.Z,null,(null===(n=_e.playerData)||void 0===n?void 0:n.identifier)??"n/a"),r.createElement(p.Z,null,(null===(b=_e.playerData)||void 0===b?void 0:b.identifier)!==(null===(v=Pe.playerData)||void 0===v?void 0:v.identifier)&&r.createElement(g.Z,{title:"These are two different games!"},r.createElement(k.Z,{color:"warning"})))),r.createElement(f.Z,null,r.createElement(p.Z,null,"Playtime"),r.createElement(p.Z,null,(0,M.UF)((null===(D=Pe.playerData)||void 0===D?void 0:D.totalPlaytime)??0)),r.createElement(p.Z,null,(0,M.UF)((null===(Z=_e.playerData)||void 0===Z?void 0:Z.totalPlaytime)??0)),r.createElement(p.Z,null,(null===(G=_e.playerData)||void 0===G?void 0:G.totalPlaytime)!==(null===(J=Pe.playerData)||void 0===J?void 0:J.totalPlaytime)&&r.createElement(I.k,{isBetter:((null===(W=_e.playerData)||void 0===W?void 0:W.totalPlaytime)??0)>((null===(H=Pe.playerData)||void 0===H?void 0:H.totalPlaytime)??0)}))),r.createElement(f.Z,null,r.createElement(p.Z,null,"Saved On"),r.createElement(p.Z,null,((null===(U=Pe.playerData)||void 0===U?void 0:U.lastSave)??0)>0?new Date((null===(j=Pe.playerData)||void 0===j?void 0:j.lastSave)??0).toLocaleString():"n/a"),r.createElement(p.Z,null,((null===($=_e.playerData)||void 0===$?void 0:$.lastSave)??0)>0?new Date((null===(q=_e.playerData)||void 0===q?void 0:q.lastSave)??0).toLocaleString():"n/a"),r.createElement(p.Z,null,(null===(z=_e.playerData)||void 0===z?void 0:z.lastSave)!==(null===(V=Pe.playerData)||void 0===V?void 0:V.lastSave)&&r.createElement(I.k,{isBetter:((null===(Y=_e.playerData)||void 0===Y?void 0:Y.lastSave)??0)>((null===(K=Pe.playerData)||void 0===K?void 0:K.lastSave)??0)}))),r.createElement(f.Z,null,r.createElement(p.Z,null,"Money"),r.createElement(p.Z,null,(0,A.lb)((null===(X=Pe.playerData)||void 0===X?void 0:X.money)??0)),r.createElement(p.Z,null,(0,A.lb)((null===(Q=_e.playerData)||void 0===Q?void 0:Q.money)??0)),r.createElement(p.Z,null,(null===(ee=_e.playerData)||void 0===ee?void 0:ee.money)!==(null===(te=Pe.playerData)||void 0===te?void 0:te.money)&&r.createElement(I.k,{isBetter:((null===(ne=_e.playerData)||void 0===ne?void 0:ne.money)??0)>((null===(re=Pe.playerData)||void 0===re?void 0:re.money)??0)}))),r.createElement(f.Z,null,r.createElement(p.Z,{colSpan:4},r.createElement(l.Z,{"aria-label":"expand row",size:"small",onClick:Je},Ge?r.createElement(C.Z,null):r.createElement(S.Z,null)),"Skills")),r.createElement(f.Z,null,r.createElement(p.Z,{colSpan:4,padding:"none"},r.createElement(s.Z,{in:Ge},r.createElement(u.Z,null,r.createElement(h.Z,null,r.createElement(f.Z,null),B.map((e=>{var t,n;const a=(null===(t=Pe.playerData)||void 0===t?void 0:t.skills[e])??0,o=(null===(n=_e.playerData)||void 0===n?void 0:n.skills[e])??0;return r.createElement(f.Z,{key:e},r.createElement(p.Z,{className:Fe.skillTitle},e),r.createElement(p.Z,null,(0,A.$j)(a,0)),r.createElement(p.Z,null,(0,A.$j)(o,0)),r.createElement(p.Z,{width:56},a!==o&&r.createElement(I.k,{isBetter:o>a})))})),B.length%2==1&&r.createElement(f.Z,null)))))),r.createElement(f.Z,null),r.createElement(f.Z,null,r.createElement(p.Z,null,"Augmentations"),r.createElement(p.Z,null,null===(ae=Pe.playerData)||void 0===ae?void 0:ae.augmentations),r.createElement(p.Z,null,null===(oe=_e.playerData)||void 0===oe?void 0:oe.augmentations),r.createElement(p.Z,null,(null===(ie=_e.playerData)||void 0===ie?void 0:ie.augmentations)!==(null===(se=Pe.playerData)||void 0===se?void 0:se.augmentations)&&r.createElement(I.k,{isBetter:((null===(le=_e.playerData)||void 0===le?void 0:le.augmentations)??0)>((null===(ce=Pe.playerData)||void 0===ce?void 0:ce.augmentations)??0)}))),r.createElement(f.Z,null,r.createElement(p.Z,null,"Factions"),r.createElement(p.Z,null,null===(ue=Pe.playerData)||void 0===ue?void 0:ue.factions),r.createElement(p.Z,null,null===(me=_e.playerData)||void 0===me?void 0:me.factions),r.createElement(p.Z,null,(null===(fe=_e.playerData)||void 0===fe?void 0:fe.factions)!==(null===(he=Pe.playerData)||void 0===he?void 0:he.factions)&&r.createElement(I.k,{isBetter:((null===(de=_e.playerData)||void 0===de?void 0:de.factions)??0)>((null===(pe=Pe.playerData)||void 0===pe?void 0:pe.factions)??0)}))),r.createElement(f.Z,null,r.createElement(p.Z,null,"Achievements"),r.createElement(p.Z,null,null===(ge=Pe.playerData)||void 0===ge?void 0:ge.achievements),r.createElement(p.Z,null,null===(ye=_e.playerData)||void 0===ye?void 0:ye.achievements),r.createElement(p.Z,null,(null===(be=_e.playerData)||void 0===be?void 0:be.achievements)!==(null===(ve=Pe.playerData)||void 0===ve?void 0:ve.achievements)&&r.createElement(I.k,{isBetter:((null===(ke=_e.playerData)||void 0===ke?void 0:ke.achievements)??0)>((null===(we=Pe.playerData)||void 0===we?void 0:we.achievements)??0)}))),r.createElement(f.Z,null,r.createElement(p.Z,null,"Source Files"),r.createElement(p.Z,null,null===(Ee=Pe.playerData)||void 0===Ee?void 0:Ee.sourceFiles),r.createElement(p.Z,null,null===(Se=_e.playerData)||void 0===Se?void 0:Se.sourceFiles),r.createElement(p.Z,null,(null===(Ce=_e.playerData)||void 0===Ce?void 0:Ce.sourceFiles)!==(null===(xe=Pe.playerData)||void 0===xe?void 0:xe.sourceFiles)&&r.createElement(I.k,{isBetter:((null===(Ne=_e.playerData)||void 0===Ne?void 0:Ne.sourceFiles)??0)>((null===(Me=Pe.playerData)||void 0===Me?void 0:Me.sourceFiles)??0)}))),r.createElement(f.Z,null,r.createElement(p.Z,null,"BitNode"),r.createElement(p.Z,null,null===(Ae=Pe.playerData)||void 0===Ae?void 0:Ae.bitNode,"-",null===(Te=Pe.playerData)||void 0===Te?void 0:Te.bitNodeLevel),r.createElement(p.Z,null,null===(Le=_e.playerData)||void 0===Le?void 0:Le.bitNode,"-",null===(Re=_e.playerData)||void 0===Re?void 0:Re.bitNodeLevel),r.createElement(p.Z,null))))),r.createElement(a.Z,{sx:{display:"flex",justifyContent:"flex-end"}},r.createElement(i.Z,null,r.createElement(o.Z,{onClick:()=>{N.Z.AutosaveInterval=O,(0,L.y_)(!1),R.F.allowRouting(!0),He(!0)},sx:{my:2},startIcon:r.createElement(E.Z,null),color:"secondary"},"Take me back!"),r.createElement(o.Z,{onClick:De,sx:{my:2},startIcon:r.createElement(w.Z,null),color:"warning"},"Proceed with import")),r.createElement(T.c,{open:Oe,onClose:Ze,onConfirm:async()=>{await x.Ex.importGame(e.importString,!0),(0,L.y_)(!0)},confirmationText:r.createElement(r.Fragment,null,"Importing new save game data will ",r.createElement("strong",null,"completely wipe")," the current game data!",r.createElement("br",null))}))):r.createElement(r.Fragment,null)}},48562:(e,t,n)=>{"use strict";n.d(t,{R:()=>r.R});var r=n(96380)},22949:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(67294),a=n(48672),o=n(81138),i=n(56798);function s(e){return r.createElement(a.u,{open:e.open,onClose:e.onClose},r.createElement(o.Z,null,"Forcefully kill all running scripts? This will also save your game and reload the game."),r.createElement(i.Z,{onClick:function(){e.killScripts(),e.onClose()}},"KILL"))}},85167:(e,t,n)=>{"use strict";n.d(t,{A9:()=>F,O4:()=>D,ki:()=>R,lj:()=>B,sx:()=>_});var r=n(67294),a=n(13342),o=n(21951),i=n(81138),s=n(30120),l=n(28881),c=n(61193),u=n.n(c),m=n(1706),f=n(92557),h=n(77541),d=n(73327),p=n(13379),g=n(50594),y=n(23508),b=n(60181),v=n(98034),k=n(66522),w=n(75350),E=n(7872),S=n(97467),C=n(10364),x=n(96486),N=n(51087),M=n(86378),A=n(88775),T=n(39463);let L=0;const R=new a.v,F=new a.v,_=new a.v;class I{x=.4*window.innerWidth;y=.3*window.innerHeight;width=500;height=500;constructor(e,t){this.rerender=e,this.rootRef=t}updateDOM(){if(!this.rootRef.current)return;const e=this.rootRef.current.state;e.x=this.x,e.y=this.y}setPosition(e,t){this.x=e,this.y=t,this.updateDOM()}setSize(e,t){this.width=e,this.height=t,this.rerender()}isVisible(){return null!==this.rootRef.current}}let P=[];function B(){const e=(0,A.S)(),t=(0,r.useCallback)((t=>{P=P.filter((e=>e.script.pid!==t)),e()}),[e]);return(0,r.useEffect)((()=>R.subscribe((t=>{P.some((e=>e.script.pid===t.pid))||(P.push({id:t.pid,script:t}),e())}))),[e]),(0,r.useEffect)((()=>F.subscribe((e=>{t(e)}))),[t]),(0,r.useEffect)((()=>_.subscribe((()=>{P=[],e()}))),[e]),r.createElement(r.Fragment,null,P.map((t=>r.createElement(Z,{key:t.id,script:t.script,onClose:()=>{return n=t.id,P=P.filter((e=>e.id!==n)),void e();var n}}))))}const O=(0,h.Z)((()=>(0,d.Z)({logs:{overflowY:"scroll",overflowX:"hidden",scrollbarWidth:"auto",flexDirection:"column-reverse",whiteSpace:"pre-wrap",wordWrap:"break-word"},titleButton:{borderWidth:"0 0 0 1px",borderColor:N.Z.theme.welllight,borderStyle:"solid",borderRadius:"0",padding:"0",height:"100%"}}))),D=1500;function Z(e){const t=(0,r.useRef)(null),n=(0,r.useRef)(null),a=e.script,c=O(),h=(0,r.useRef)(null),d=(0,r.useRef)(null),R=(0,A.S)(1e3),F=(0,r.useRef)(new I(R,n));a.tailProps=F.current;const[_,P]=(0,r.useState)(!1),B=(0,r.useCallback)((()=>{const e=h.current;null!==e&&(e.style.zIndex=D+L+"",L++,R())}),[R]);function Z(){(0,o._)(a.pid),R()}function G(){const e=(0,S.WT)(a.server);if(null!==e)if(null===(0,C.$o)(a.pid,e)){const t=e.scripts.get(a.filename);if(!t)return(0,T.X)(`Could not launch script. The script ${a.filename} no longer exists on the server ${e.hostname}.`);const n=t.getRamUsage(e.scripts);if(!n)return(0,T.X)(`Could not calculate ram usage for ${a.filename} on ${e.hostname}.`);a.ramUsage=n,a.dataMap={},a.onlineExpGained=0,a.onlineMoneyMade=0,a.onlineRunningTime=.01,(0,E.dU)(a,e),R()}else console.warn(`Tried to rerun pid ${a.pid} that was already running!`)}function J(){P(!_)}(0,r.useEffect)((()=>{F.current.updateDOM(),B()}),[B]);const W=(0,r.useMemo)((()=>(0,x.debounce)((()=>{const e=t.current;e&&(H(e)||F.current.setPosition(0,0))}),100)),[]);(0,r.useEffect)((()=>(window.addEventListener("resize",W),()=>{window.removeEventListener("resize",W)})),[W]);const H=e=>{const t=e.getBoundingClientRect();return!(t.right<0||t.bottom<0||t.left>innerWidth||t.top>outerWidth)},U=[150,33];return r.createElement(u(),{handle:".drag",onDrag:e=>{if(e.preventDefault(),e instanceof MouseEvent&&(e.clientX<0||e.clientY<0||e.clientX>innerWidth||e.clientY>innerHeight))return!1},ref:n,onMouseDown:B},r.createElement(s.Z,{display:"flex",sx:{flexFlow:"column",position:"fixed",zIndex:1400,minWidth:`${U[0]}px`,minHeight:`${U[1]}px`,..._?{border:"none",margin:0,maxHeight:0,padding:0}:{border:`1px solid ${N.Z.theme.welllight}`}},ref:h},r.createElement(m.ResizableBox,{width:F.current.width,height:F.current.height,onResize:(e,t)=>{let{size:n}=t;F.current.setSize(n.width,n.height)},minConstraints:U,handle:r.createElement("span",{style:{position:"absolute",right:"-10px",bottom:"-16px",cursor:"nw-resize",display:_?"none":"inline-block"}},r.createElement(p.Z,{color:"primary",style:{transform:"rotate(45deg)",fontSize:"1.75rem"}}))},r.createElement(r.Fragment,null,r.createElement(l.Z,{className:"drag",sx:{display:"flex",alignItems:"center",cursor:"grab"},ref:t},function(){const e="string"===a.title?a.title:`${a.filename} ${a.args.join(" ")}`;return r.createElement(i.Z,{variant:"h6",sx:{marginRight:"auto",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},title:e},a.title)}(),r.createElement("span",{style:{minWidth:"fit-content",height:`${U[1]}px`}},w.R.has(a.pid)?r.createElement(f.Z,{title:"Stop script",className:c.titleButton,onClick:Z,onTouchEnd:Z},r.createElement(v.Z,{color:"error"})):r.createElement(f.Z,{title:"Re-run script",className:c.titleButton,onClick:G,onTouchEnd:G},r.createElement(k.Z,null)),r.createElement(f.Z,{title:_?"Expand":"Collapse",className:c.titleButton,onClick:J,onTouchEnd:J},_?r.createElement(y.Z,null):r.createElement(b.Z,null)),r.createElement(f.Z,{title:"Close window",className:c.titleButton,onClick:e.onClose,onTouchEnd:e.onClose},r.createElement(g.Z,null)))),r.createElement(l.Z,{className:c.logs,style:{height:`calc(100% - ${U[1]}px)`,display:_?"none":"flex"},tabIndex:-1,ref:d,onKeyDown:e=>{if(e.ctrlKey&&"a"===e.key){var t,n;if(!d.current)return;const r=new Range;r.setStartBefore(d.current),r.setEndAfter(d.current),null===(t=document.getSelection())||void 0===t||t.removeAllRanges(),null===(n=document.getSelection())||void 0===n||n.addRange(r),e.preventDefault(),e.stopPropagation()}}},r.createElement("div",{style:{display:"flex",flexDirection:"column"}},a.logs.map(((e,t)=>{return"string"!=typeof e?e:r.createElement(M.m,{key:t,text:e,color:(n=e,n.match(/(^\[[^\]]+\] )?ERROR/)||n.match(/(^\[[^\]]+\] )?FAIL/)?"error":n.match(/(^\[[^\]]+\] )?SUCCESS/)?"success":n.match(/(^\[[^\]]+\] )?WARN/)?"warn":n.match(/(^\[[^\]]+\] )?INFO/)?"info":"primary")});var n}))))))))}},48672:(e,t,n)=>{"use strict";n.d(t,{u:()=>f});var r=n(67294),a=n(30120),o=n(92557),i=n(9942),s=n(96378),l=n(73327),c=n(77541),u=n(50594);const m=(0,c.Z)((e=>(0,l.Z)({modal:{display:"flex",alignItems:"center",justifyContent:"center"},paper:{position:"relative",backgroundColor:e.palette.background.default,border:"2px solid "+e.palette.primary.main,boxShadow:`0px 3px 5px -1px ${e.palette.primary.dark},0px 5px 8px 0px ${e.palette.primary.dark},0px 1px 14px 0px ${e.palette.primary.dark}`,padding:2,maxWidth:"80%",maxHeight:"80%",overflow:"auto","&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"},closeButton:{position:"absolute",right:3,top:3,width:20,height:20}}))),f=e=>{const t=m();return r.createElement(s.Z,{disableRestoreFocus:!0,disableScrollLock:!0,disableEnforceFocus:!0,disableAutoFocus:!0,open:e.open,onClose:e.onClose,closeAfterTransition:!0,className:t.modal,sx:e.sx},r.createElement(i.Z,{in:e.open},r.createElement("div",{className:t.paper},r.createElement(o.Z,{className:t.closeButton,onClick:e.onClose},r.createElement(u.Z,null)),r.createElement(a.Z,{sx:{m:2}},e.children))))}},72360:(e,t,n)=>{"use strict";n.d(t,{W:()=>c});var r=n(67294),a=n(22115),o=n(49173),i=n(77541),s=n(73327);const l=(0,i.Z)((e=>(0,s.Z)({unbuyable:{color:e.palette.action.disabled},money:{color:e.colors.money}})));function c(e){const t=l();if(e.forPurchase){if("number"!=typeof e.money)throw new Error("if value is for a purchase, money should be number, contact dev");if(!o.J5.canAfford(e.money))return r.createElement("span",{className:t.unbuyable},(0,a.lb)(e.money))}return r.createElement("span",{className:t.money},"number"==typeof e.money?(0,a.lb)(e.money):e.money)}},85882:(e,t,n)=>{"use strict";n.d(t,{G:()=>i});var r=n(67294),a=n(22115),o=n(72360);function i(e){let{money:t}=e;return r.createElement(o.W,{money:`${(0,a.lb)(t)} / sec`})}},33313:(e,t,n)=>{"use strict";n.d(t,{Y:()=>i});var r=n(66351),a=n(67294),o=n(22115);function i(e){const t={...e,onChange:t=>{const n=(0,o.US)(t.target.value);""===t.target.value||isNaN(n)?e.onChange(NaN):e.onChange(n)}};return a.createElement(r.Z,t)}},15460:(e,t,n)=>{"use strict";n.d(t,{V:()=>l});var r=n(29919),a=n(16056),o=n(17575),i=n(81138),s=n(67294);function l(e){let{checked:t,onChange:n,text:l,tooltip:c}=e;const[u,m]=(0,s.useState)(t);return s.createElement(s.Fragment,null,s.createElement(r.Z,{control:s.createElement(a.Z,{checked:u,onChange:function(e){const t=e.target.checked;m(t),n(t)}}),label:s.createElement(o.Z,{title:s.createElement(i.Z,null,c)},s.createElement(i.Z,null,l))}),s.createElement("br",null))}},56112:(e,t,n)=>{"use strict";n.d(t,{g:()=>w});var r=n(67294),a=n(61193),o=n.n(a),i=n(77541),s=n(51627),l=n(28881),c=n(75503),u=n(90813),m=n(84855),f=n(88698),h=n(52947),d=n(24815),p=n(51087),g=n(30120),y=n(81138),b=n(56798),v=n(96486);const k=(0,i.Z)({overviewContainer:{position:"fixed",top:0,right:0,zIndex:1500,display:"flex",justifyContent:"flex-end",flexDirection:"column"},header:{cursor:"grab",textAlign:"center",display:"flex",flexDirection:"row",alignItems:"center"},visibilityToggle:{padding:"2px",minWidth:"inherit",backgroundColor:"transparent",border:"none","&:hover":{backgroundColor:"rgba(255, 255, 255, 0.1)"}},collapse:{borderTop:`1px solid ${p.Z.theme.welllight}`,margin:"0 auto"},icon:{fontSize:"24px"}});function w(e){let{children:t,mode:n}=e;const a=(0,r.useRef)(null),[i,w]=(0,r.useState)(p.Z.overview.opened),[E,S]=(0,r.useState)(p.Z.overview.x),[C,x]=(0,r.useState)(p.Z.overview.y),N=k(),M=i?u.Z:c.Z,A="tutorial"===n?f.Z:m.Z,T="tutorial"===n?"Tutorial":"Overview";(0,r.useEffect)((()=>{p.Z.overview={x:E,y:C,opened:i}}),[i,E,C]);const L=(0,r.useMemo)((()=>(0,v.debounce)((()=>{const e=a.current;e&&(R(e,"mouseover"),R(e,"mousedown"),R(document,"mousemove"),R(e,"mouseup"),R(e,"click"))}),100)),[]);(0,r.useEffect)((()=>L()),[L]),(0,r.useEffect)((()=>(window.addEventListener("resize",L),()=>{window.removeEventListener("resize",L)})),[L]);const R=(e,t)=>{const n=document.createEvent("MouseEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)};return h.F.page()===d.T3.BitVerse||h.F.page()===d.T3.Loading||h.F.page()===d.T3.Recovery?r.createElement(r.Fragment,null):r.createElement(o(),{handle:".drag",bounds:"body",onStop:(e,t)=>{S(t.x),x(t.y)},defaultPosition:{x:E,y:C}},r.createElement(l.Z,{className:N.overviewContainer,square:!0},r.createElement(g.Z,{className:"drag",onDoubleClick:()=>w((e=>!e)),ref:a},r.createElement(g.Z,{className:N.header},r.createElement(A,{color:"secondary",className:N.icon,sx:{padding:"2px"}}),r.createElement(y.Z,{flexGrow:1,color:"secondary"},T),r.createElement(b.Z,{"aria-label":"expand or collapse character overview",variant:"text",size:"small",className:N.visibilityToggle},r.createElement(M,{className:N.icon,color:"secondary",onClick:()=>w((e=>!e)),onTouchEnd:()=>w((e=>!e))})))),r.createElement(s.Z,{in:i,className:N.collapse},t(i))))}},3197:(e,t,n)=>{"use strict";n.d(t,{k:()=>a});var r=n(23149);const a=(0,n(79516).Z)((e=>({root:{backgroundColor:e.palette.background.paper},bar:{transition:"none",backgroundColor:e.palette.primary.main}})))(r.Z)},23001:(e,t,n)=>{"use strict";n.d(t,{C:()=>h,H:()=>f});var r=n(67294),a=n(13342),o=n(48672),i=n(81138),s=n(56798),l=n(26023),c=n(66351),u=n(98649),m=n(81055);const f=new a.v;function h(){var e;const[t,n]=(0,r.useState)(null);if((0,r.useEffect)((()=>f.subscribe((e=>{n(e)}))),[]),null===t)return r.createElement(r.Fragment,null);const a={text:p,select:g};let s=d;return null!==(e=t.options)&&void 0!==e&&e.type&&["text","select"].includes(t.options.type)&&(s=a[t.options.type]),r.createElement(o.u,{open:!0,onClose:function(){var e;null!==t&&(["text","select"].includes((null===(e=t.options)||void 0===e?void 0:e.type)??"")?t.resolve(""):t.resolve(!1),n(null))}},r.createElement("pre",null,r.createElement(i.Z,null,t.txt)),r.createElement(s,{prompt:t,resolve:e=>{t.resolve(e),n(null)}}))}function d(e){let{resolve:t}=e;return r.createElement(r.Fragment,null,r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",paddingTop:"10px"}},r.createElement(s.Z,{style:{marginRight:"auto"},onClick:()=>t(!0)},"Yes"),r.createElement(s.Z,{onClick:()=>t(!1)},"No")))}function p(e){let{resolve:t}=e;const[n,a]=(0,r.useState)(""),o=()=>t(n);return r.createElement(r.Fragment,null,r.createElement("div",{style:{display:"flex",alignItems:"center",paddingTop:"10px"}},r.createElement(c.Z,{autoFocus:!0,value:n,onInput:e=>{a(e.target.value)},onKeyDown:e=>{e.stopPropagation(),e.key===m.F.ENTER&&(e.preventDefault(),o())},style:{flex:"1 0 auto"},InputProps:{endAdornment:r.createElement(s.Z,{onClick:o},"Confirm")}})))}function g(e){var t,n;let{prompt:a,resolve:o}=e;const[c,m]=(0,r.useState)("");return Array.isArray(null===(t=a.options)||void 0===t?void 0:t.choices)?r.createElement(r.Fragment,null,r.createElement("div",{style:{display:"flex",alignItems:"center",paddingTop:"10px"}},r.createElement(l.Z,{onChange:e=>{m(e.target.value)},value:c,style:{flex:"1 0 auto"}},(e=>{const t=[];for(const n of e)t.push(r.createElement(u.Z,{key:n,value:n},n));return t})((null===(n=a.options)||void 0===n?void 0:n.choices)||[])),r.createElement(s.Z,{onClick:()=>o(c),disabled:""===c},"Confirm"))):r.createElement(i.Z,null,"Error: Please provide an array of string choices")}},97833:(e,t,n)=>{"use strict";n.d(t,{JI:()=>C,aF:()=>E,fp:()=>S});var r=n(67294),a=n(30120),o=n(81138),i=n(39401),s=n(34265),l=n(17575),c=n(56798),u=n(28881),m=n(66351),f=n(51087),h=n(22573),d=n(52947),p=n(24815),g=n(34716),y=n(10980),b=n(6466),v=n(64573),k=n(80227),w=n(25449);let E=!1;function S(){E=!0}function C(e){let{softReset:t,errorData:n,resetError:S}=e;return f.Z.AutosaveInterval=0,(0,r.useEffect)((()=>{(0,h.zD)().then((e=>{const t=`RECOVERY_BITBURNER_${Math.round(Date.now()/1e3)}.json`;(0,g.LR)(t,e)})).catch((e=>console.error(e)))}),[]),r.createElement(a.Z,{sx:{padding:"8px 16px",minHeight:"100vh",maxWidth:"1200px",boxSizing:"border-box"}},r.createElement(o.Z,{variant:"h3"},"RECOVERY MODE ACTIVATED"),r.createElement(o.Z,null,"There was an error with your save file and the game went into recovery mode. In this mode saving is disabled and the game will automatically export your save file (to prevent corruption)."),r.createElement(o.Z,null,"At this point it is recommended to alert a developer."),r.createElement(o.Z,null,r.createElement(i.Z,{href:(null==n?void 0:n.issueUrl)??y.U,target:"_blank"},"File an issue on github")),r.createElement(o.Z,null,r.createElement(i.Z,{href:"https://www.reddit.com/r/Bitburner/",target:"_blank"},"Make a reddit post")),r.createElement(o.Z,null,r.createElement(i.Z,{href:"https://discord.gg/TFc3hKD",target:"_blank"},"Post in the #bug-report channel on Discord.")),r.createElement(o.Z,null,"Please include your save file."),r.createElement("br",null),r.createElement("br",null),r.createElement(o.Z,null,"You can disable recovery mode now. But chances are the game will not work correctly."),r.createElement(s.Z,{sx:{my:2}},r.createElement(l.Z,{title:"Disables the recovery mode & attempt to head back to the terminal page. This may or may not work. Ensure you have saved the recovery file."},r.createElement(c.Z,{onClick:function(){S&&S(),E=!1,d.F.toPage(p.T3.Terminal)},startIcon:r.createElement(k.Z,null)},"Disable Recovery Mode")),r.createElement(v.Q,{color:"warning",onTriggered:t}),r.createElement(b.t,{color:"error"})),n&&r.createElement(u.Z,{sx:{px:2,pt:1,pb:2,mt:2}},r.createElement(o.Z,{variant:"h5"},n.title),r.createElement(a.Z,{sx:{my:2}},r.createElement(m.Z,{label:"Bug Report Text",value:n.body,variant:"outlined",color:"secondary",multiline:!0,fullWidth:!0,rows:12,spellCheck:!1,sx:{"& .MuiOutlinedInput-root":{color:f.Z.theme.secondary}}})),r.createElement(l.Z,{title:"Submitting an issue to GitHub really help us improve the game!"},r.createElement(c.Z,{component:i.Z,startIcon:r.createElement(w.Z,null),color:"info",sx:{px:2},href:n.issueUrl??y.U,target:"_blank"},"Submit Issue to GitHub"))))}},17365:(e,t,n)=>{"use strict";n.d(t,{Y:()=>l});var r=n(67294),a=n(22115),o=n(77541),i=n(73327);const s=(0,o.Z)((e=>(0,i.Z)({reputation:{color:e.colors.rep}})));function l(e){let{reputation:t}=e;const n=s();return r.createElement("span",{className:n.reputation},"number"==typeof t?(0,a.$n)(t):t)}},74192:(e,t,n)=>{"use strict";n.d(t,{y:()=>i});var r=n(67294),a=n(22115),o=n(17365);function i(e){let{reputation:t}=e;return r.createElement(o.Y,{reputation:`${(0,a.$n)(t)} / sec`})}},60724:(e,t,n)=>{"use strict";n.d(t,{D:()=>u,k:()=>m});var r=n(67294),a=n(97467),o=n(89916),i=n(3853),s=n(26023),l=n(98649),c=n(56798);const u={All:0,Foreign:1,Owned:2,Purchased:3};function m(e){function t(t){const n=t instanceof o.x&&t.purchasedByPlayer,r=e.serverType;switch(r){case u.All:return!0;case u.Foreign:return"home"!==t.hostname&&!n;case u.Owned:return n||t instanceof i.u||"home"===t.hostname;case u.Purchased:return n||t instanceof i.u;default:return console.warn(`Invalid ServerType specified for ServerDropdown component: ${r}`),!1}}const n=[];for(const e of(0,a.XX)().sort(((e,t)=>e.hostname.localeCompare(t.hostname))))t(e)&&n.push(r.createElement(l.Z,{key:e.hostname,value:e.hostname},e.hostname));return r.createElement(s.Z,{startAdornment:r.createElement(c.Z,{onClick:e.purchase,disabled:!e.canPurchase},"Buy"),sx:{mx:1},value:e.value,onChange:e.onChange},n)}},32369:(e,t,n)=>{"use strict";n.d(t,{A9:()=>h,sC:()=>f,wT:()=>m});var r=n(67294),a=n(73400),o=n(77541),i=n(13342),s=n(67182),l=n(28881),c=n(85167);const u=(0,o.Z)((()=>({snackbar:{zIndex:`${c.O4+1e3} !important`,"& .MuiAlert-icon":{alignSelf:"center"}}})));function m(e){const t=u();return r.createElement(a.wT,{dense:!0,maxSnack:9,anchorOrigin:{horizontal:"right",vertical:"bottom"},autoHideDuration:2e3,classes:{containerRoot:t.snackbar}},e.children)}const f=new i.v;function h(){const{enqueueSnackbar:e,closeSnackbar:t}=(0,a.Ds)();return(0,r.useEffect)((()=>f.subscribe(((n,a,o)=>{const i=e(r.createElement(s.Z,{severity:a},n),{content:(e,t)=>r.createElement(l.Z,{key:e},t),variant:a,autoHideDuration:o,onClick:()=>t(i)})})))),r.createElement(r.Fragment,null)}},64573:(e,t,n)=>{"use strict";n.d(t,{Q:()=>l});var r=n(67294),a=n(54538),o=n(56798),i=n(17575),s=n(34282);function l(e){let{color:t="primary",noConfirmation:n=!1,onTriggered:l}=e;const[c,u]=(0,r.useState)(!1);return r.createElement(r.Fragment,null,r.createElement(i.Z,{title:"Perform a soft reset. Resets everything as if you had just installed Augmentations without installing them."},r.createElement(o.Z,{startIcon:r.createElement(s.Z,null),color:t,onClick:function(){n?l():u(!0)}},"Soft Reset")),r.createElement(a.c,{onConfirm:l,open:c,onClose:()=>u(!1),confirmationText:"This will perform the same action as installing Augmentations, are you sure?"}))}},6248:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});var r=n(67294),a=n(48672);function o(e){return r.createElement(a.u,{open:e.open,onClose:e.onClose},e.children)}},19312:(e,t,n)=>{"use strict";n.d(t,{B:()=>m});var r=n(67294),a=n(23149),o=n(81138),i=n(17575),s=n(7272),l=n(43480),c=n(22115);function u(e){let{min:t,max:n,current:s,remaining:l,progress:u,color:m}=e;const f=r.createElement(o.Z,{sx:{textAlign:"right"}},r.createElement("strong",null,"Progress:")," ",(0,c.Mf)(s)," / ",(0,c.Mf)(n-t),r.createElement("br",null),r.createElement("strong",null,"Remaining:")," ",(0,c.Mf)(l)," (",u.toFixed(2),"%)");return r.createElement(i.Z,{title:f},r.createElement(a.Z,{variant:"determinate",value:u,sx:{backgroundColor:"#111111","& .MuiLinearProgress-bar1Determinate":{backgroundColor:m}}}))}function m(e){let{progress:t,color:n}=e;const a=(0,l.yK)();return r.createElement(s.Z,{component:"th",scope:"row",colSpan:2,classes:{root:a.cellNone},style:{paddingBottom:"2px",position:"relative",top:"-3px"}},r.createElement(u,{min:t.baseExperience,max:t.nextExperience,current:t.currentExperience,remaining:t.remainingExperience,progress:t.progress,color:n}))}},21927:(e,t,n)=>{"use strict";n.d(t,{j:()=>c});var r=n(67294),a=n(49557),o=n(7272),i=n(81138),s=n(22115),l=n(43480);const c=e=>{let{name:t,color:n,children:c,data:u}=e;const m=(0,l.yK)();let f="";return u&&(void 0!==u.content?f=u.content:void 0!==u.level&&void 0!==u.exp?f=`${(0,s.$j)(u.level,0)} (${(0,s.Mf)(u.exp)} exp)`:void 0!==u.level&&void 0===u.exp&&(f=`${(0,s.$j)(u.level,0)}`)),r.createElement(a.Z,null,r.createElement(o.Z,{classes:{root:m.cellNone}},r.createElement(i.Z,{style:{color:n}},t)),r.createElement(o.Z,{align:"right",classes:{root:m.cellNone}},f&&r.createElement(i.Z,{style:{color:n}},f),c))}},97534:(e,t,n)=>{"use strict";n.d(t,{C:()=>c});var r=n(67294),a=n(61011),o=n(46948),i=n(47542),s=n(49557),l=n(81138);function c(e){let{rows:t,title:n,wide:c}=e;const u=c?i.Z:a.i;return r.createElement(r.Fragment,null,n&&r.createElement(l.Z,null,n),r.createElement(u,{size:"small",padding:"none"},r.createElement(o.Z,null,t.map(((e,t)=>r.createElement(s.Z,{key:t},e.map(((e,t)=>r.createElement(a.p,{key:t,align:0!==t?"right":"left"},r.createElement(l.Z,{noWrap:!0},e))))))))))}},61011:(e,t,n)=>{"use strict";n.d(t,{i:()=>c,p:()=>l});var r=n(67294),a=n(7272),o=n(47542);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;tr.createElement(a.Z,i({},e,{classes:{root:s().root,...e.classes}})),c=e=>r.createElement(o.Z,i({},e,{classes:{root:s().small,...e.classes}}))},77885:(e,t,n)=>{"use strict";n.d(t,{p:()=>m});var r=n(67294),a=n(62097),o=n(30120),i=n(92557),s=n(78066),l=n(76172),c=n(48317),u=n(91290);function m(e){const t=(0,a.Z)(),{count:n,page:m,rowsPerPage:f,onPageChange:h}=e;return r.createElement(o.Z,{sx:{flexShrink:0,ml:2.5}},r.createElement(i.Z,{onClick:e=>{h(e,0)},disabled:0===m},"rtl"===t.direction?r.createElement(u.Z,null):r.createElement(s.Z,null)),r.createElement(i.Z,{onClick:e=>{h(e,m-1)},disabled:0===m},"rtl"===t.direction?r.createElement(c.Z,null):r.createElement(l.Z,null)),r.createElement(i.Z,{onClick:e=>{h(e,m+1)},disabled:m>=Math.ceil(n/f)-1},"rtl"===t.direction?r.createElement(l.Z,null):r.createElement(c.Z,null)),r.createElement(i.Z,{onClick:e=>{h(e,Math.max(0,Math.ceil(n/f)-1))},disabled:m>=Math.ceil(n/f)-1},"rtl"===t.direction?r.createElement(s.Z,null):r.createElement(u.Z,null)))}},86091:(e,t,n)=>{"use strict";n.d(t,{b:()=>m});var r=n(67294),a=n(77541),o=n(73327),i=n(17575),s=n(81138),l=n(33244);const c=(0,a.Z)((e=>(0,o.Z)({travel:{color:e.colors.white,lineHeight:"1em",whiteSpace:"pre",cursor:"pointer"}})));function u(e){const t=c();return e.city!==e.currentCity?r.createElement(i.Z,{title:r.createElement(s.Z,null,e.city)},r.createElement("span",{onClick:()=>e.onTravel(e.city),className:t.travel},e.city[0])):r.createElement("span",null,e.city[0])}function m(e){return r.createElement(r.Fragment,null,r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,_ . ._. _. ."),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," , _-\\','|~\\~ ~/ ;-'_ _-' ,;_;_, ~~-"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," /~~-\\_/-'~'--' \\~~| ', ,' / / ~|-_\\_/~/~ ~~--~~~~'--_"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / ,/'-/~ '\\ ,' _ , '",r.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Volhaven}),",'|~ ._/-, /~"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~/-'~\\_, '-,| '|. ' ~ ,\\ /'~ / /_ /~"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},".-~ '| '',\\~|\\ _\\~ ,_ , ",r.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Chongqing})," /,"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '\\ ",r.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Sector12})," /'~ |_/~\\\\,-,~ \\ \" ,_,/ |"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | / ._-~'\\_ _~| \\ ) ",r.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.NewTokyo})),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ __-\\ '/ ~ |\\ \\_ / ~"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ., '\\ |, ~-_ - | \\\\_' ~| /\\ \\~ ,"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~-_' _; '\\ '-, \\,' /\\/ |"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '\\_,~'\\_ \\_ _, /' ' |, /|'"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / \\_ ~ | / \\ ~'; -,_."),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ~\\ | | , '-_, ,; ~ ~\\"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\, ",r.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Aevum})," / \\ / /| ,-, , -,"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ,/ | |' |/ ,- ~ \\ '."),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,| ,/ \\ ,/ \\ ",r.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Ishima})," |"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / | ~ -~~-, / _"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ,-' ~ /"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / ,' ~"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ',| ~"),r.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~'"))}},88775:(e,t,n)=>{"use strict";n.d(t,{S:()=>a,k:()=>o});var r=n(67294);function a(e){const[t,n]=(0,r.useState)(!1),a=(0,r.useCallback)((()=>n((e=>!e))),[]);return(0,r.useEffect)((()=>{if(!e)return;const t=setInterval(a,e);return()=>clearInterval(t)}),[a,e]),a}function o(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const[t,n]=(0,r.useState)(e),a=(0,r.useCallback)((()=>{n((e=>!e))}),[]),o=(0,r.useCallback)((()=>{n(!0)}),[]),i=(0,r.useCallback)((()=>{n(!1)}),[]);return[t,{toggle:a,on:o,off:i}]}},24815:(e,t,n)=>{"use strict";let r,a;n.d(t,{Pg:()=>s,T3:()=>o}),function(e){e.ActiveScripts="Active Scripts",e.Augmentations="Augmentations",e.Bladeburner="Bladeburner",e.City="City",e.Corporation="Corporation",e.CreateProgram="Create Program",e.DevMenu="Dev",e.Factions="Factions",e.Gang="Gang",e.Hacknet="Hacknet",e.Milestones="Milestones",e.Options="Options",e.Grafting="Grafting",e.Sleeves="Sleeves",e.Stats="Stats",e.StockMarket="Stock Market",e.Terminal="Terminal",e.Travel="Travel",e.Documentation="Documentation",e.Work="Work",e.BladeburnerCinematic="Bladeburner Cinematic",e.Loading="Loading",e.StaneksGift="Staneks Gift",e.Recovery="Recovery",e.Achievements="Achievements",e.ThemeBrowser="Theme Browser"}(r||(r={})),function(e){e.BitVerse="BitVerse",e.Infiltration="Infiltration",e.Job="Job",e.Faction="Faction",e.FactionAugmentations="Faction Augmentations",e.ScriptEditor="Script Editor",e.Location="Location",e.ImportSave="Import Save"}(a||(a={}));const o={...r,...a},i=Object.values(r),s=e=>i.includes(e)},52037:(e,t,n)=>{"use strict";n.d(t,{l:()=>D});var r=n(67294),a=n(81138),o=n(78016),i=n(28881),s=n(47542),l=n(46948),c=n(30120),u=n(17575),m=n(56798),f=n(49173),h=n(33244),d=n(72360),p=n(85882),g=n(3197),y=n(17365),b=n(74192),v=n(21927),k=n(88775),w=n(62586),E=n(72938),S=n(81881),C=n(51087),x=n(49802),N=n(72326),M=n(48196),A=n(94337),T=n(95814),L=n(64315),R=n(16632),F=n(75522),_=n(52947),I=n(24815),P=n(22115);const B=1e3/E.t.MilliPerCycle;function O(e){return(0,N.m)([e.hackExp>0&&r.createElement(v.j,{key:"hack",name:"Hacking Exp",color:C.Z.theme.hack,data:{content:`${(0,P.Mf)(e.hackExp*B)} / sec`}}),e.strExp>0&&r.createElement(v.j,{key:"str",name:"Strength Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(e.strExp*B)} / sec`}}),e.defExp>0&&r.createElement(v.j,{key:"def",name:"Defense Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(e.defExp*B)} / sec`}}),e.dexExp>0&&r.createElement(v.j,{key:"dex",name:"Dexterity Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(e.dexExp*B)} / sec`}}),e.agiExp>0&&r.createElement(v.j,{key:"agi",name:"Agility Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(e.agiExp*B)} / sec`}}),e.chaExp>0&&r.createElement(v.j,{key:"cha",name:"Charisma Exp",color:C.Z.theme.cha,data:{content:`${(0,P.Mf)(e.chaExp*B)} / sec`}})])}function D(){(0,k.S)(E.t.MilliPerCycle);let e={buttons:{cancel:()=>{}},title:"",stopText:""};if(null===f.J5.currentWork)return setTimeout((()=>_.F.toPage(I.T3.Terminal))),r.createElement(r.Fragment,null);if((0,M.s)(f.J5.currentWork)){const n=f.J5.currentWork.getCrime(),o=f.J5.currentWork.unitCompleted/n.time*100,i=f.J5.currentWork.earnings(),s=n.successRate(f.J5);e={buttons:{cancel:()=>{_.F.toPage(I.T3.Location,{location:S.t[h.LocationName.Slums]}),f.J5.finishWork(!0)},unfocus:()=>{_.F.toPage(I.T3.City),f.J5.stopFocusing()}},title:`You are attempting ${n.workName}`,gains:[r.createElement("tr",{key:"header"},r.createElement("td",null,r.createElement(a.Z,null,"Success chance: ",(0,P.T3)(s)),r.createElement(a.Z,null,"Gains (on success)"))),r.createElement(v.j,{key:"money",name:"Money:",color:C.Z.theme.money},r.createElement(a.Z,null,r.createElement(d.W,{money:i.money}))),...(t=i,(0,N.m)([t.hackExp>0&&r.createElement(v.j,{key:"hack",name:"Hacking Exp",color:C.Z.theme.hack,data:{content:`${(0,P.Mf)(t.hackExp)}`}}),t.strExp>0&&r.createElement(v.j,{key:"str",name:"Strength Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(t.strExp)}`}}),t.defExp>0&&r.createElement(v.j,{key:"def",name:"Defense Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(t.defExp)}`}}),t.dexExp>0&&r.createElement(v.j,{key:"dex",name:"Dexterity Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(t.dexExp)}`}}),t.agiExp>0&&r.createElement(v.j,{key:"agi",name:"Agility Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(t.agiExp)}`}}),t.chaExp>0&&r.createElement(v.j,{key:"cha",name:"Charisma Exp",color:C.Z.theme.cha,data:{content:`${(0,P.Mf)(t.chaExp)}`}})]))],progress:{remaining:n.time-f.J5.currentWork.unitCompleted,percentage:o},stopText:"Stop committing crime"}}var t;if((0,A.tG)(f.J5.currentWork)){const t=f.J5.currentWork;let n="";n=t.isGym()?"Stop training at gym":"Stop taking course";const o=t.calculateRates();e={buttons:{cancel:()=>{f.J5.finishWork(!0),_.F.toPage(I.T3.City)},unfocus:()=>{_.F.toPage(I.T3.City),f.J5.stopFocusing()}},title:r.createElement(r.Fragment,null,"You are currently ",r.createElement("b",null,t.getClass().youAreCurrently)),gains:[r.createElement(v.j,{key:"totalCost",name:"Total Cost",color:C.Z.theme.money},r.createElement(a.Z,null,r.createElement(d.W,{money:t.earnings.money})," (",r.createElement(p.G,{money:o.money*B}),")")),...O(o)],progress:{elapsed:t.cyclesWorked*E.t.MilliPerCycle},stopText:n}}if((0,T.o)(f.J5.currentWork)){const t=f.J5.currentWork,n=t.unitCompleted/t.unitNeeded()*100;e={buttons:{cancel:()=>{f.J5.finishWork(!0),_.F.toPage(I.T3.Terminal)},unfocus:()=>{_.F.toPage(I.T3.Terminal),f.J5.stopFocusing()}},title:r.createElement(r.Fragment,null,"You are currently working on coding ",r.createElement("b",null,t.programName)),progress:{elapsed:t.cyclesWorked*E.t.MilliPerCycle,percentage:n},stopText:"Stop creating program",stopTooltip:"Your work will be saved and you can return to complete the program later."}}if((0,L.u)(f.J5.currentWork)){const t=f.J5.currentWork;e={buttons:{cancel:()=>{f.J5.finishWork(!0),_.F.toPage(I.T3.Terminal)},unfocus:()=>{_.F.toPage(I.T3.Terminal),f.J5.stopFocusing()}},title:r.createElement(r.Fragment,null,"You are currently working on grafting ",r.createElement("b",null,t.augmentation)),progress:{elapsed:t.cyclesWorked*E.t.MilliPerCycle,percentage:t.unitCompleted/t.unitNeeded()*100},stopText:"Stop grafting",stopTooltip:r.createElement(r.Fragment,null,"If you cancel, your work will ",r.createElement("b",null,"not")," be saved, and the money you spent will ",r.createElement("b",null,"not")," be returned")}}if((0,R.D)(f.J5.currentWork)){const t=f.J5.currentWork.getFaction();t||(e={buttons:{cancel:()=>_.F.toPage(I.T3.Factions)},title:`You have not joined ${f.J5.currentWork.factionName||"(Faction not found)"} at this time, please try again if you think this should have worked`,stopText:"Back to Factions"});const n={[h.FactionWorkType.hacking]:"carrying out hacking contracts",[h.FactionWorkType.field]:"carrying out field missions",[h.FactionWorkType.security]:"performing security detail"},a=f.J5.currentWork.getExpRates();e={buttons:{cancel:()=>{_.F.toPage(I.T3.Faction,{faction:t}),f.J5.finishWork(!0)},unfocus:()=>{_.F.toPage(I.T3.Faction,{faction:t}),f.J5.stopFocusing()}},title:r.createElement(r.Fragment,null,"You are currently ",n[f.J5.currentWork.factionWorkType]," for ",r.createElement("b",null,t.name)),description:r.createElement(r.Fragment,null,"Current Faction Reputation: ",r.createElement(y.Y,{reputation:t.playerReputation})," (",r.createElement(b.y,{reputation:f.J5.currentWork.getReputationRate()*B}),")"),gains:O(a),progress:{elapsed:f.J5.currentWork.cyclesWorked*E.t.MilliPerCycle},stopText:"Stop Faction work"}}if((0,F.d)(f.J5.currentWork)){const t=w.O[f.J5.currentWork.companyName];t&&(e={buttons:{cancel:()=>_.F.toPage(I.T3.Terminal)},title:`You cannot work for ${f.J5.currentWork.companyName} at this time, please try again if you think this should have worked`,stopText:"Back to Terminal"});const n=t.playerReputation,o=f.J5.jobs[f.J5.currentWork.companyName];if(!o)return r.createElement(r.Fragment,null);const i=f.J5.currentWork.getGainRates(o);e={buttons:{cancel:()=>{f.J5.finishWork(!0),_.F.toPage(I.T3.Job,{location:S.t[t.name]})},unfocus:()=>{f.J5.stopFocusing(),_.F.toPage(I.T3.Job,{location:S.t[t.name]})}},title:r.createElement(r.Fragment,null,"You are currently working as a ",r.createElement("b",null,o)," at ",r.createElement("b",null,f.J5.currentWork.companyName)),description:r.createElement(r.Fragment,null,"Current Company Reputation: ",r.createElement(y.Y,{reputation:n})),gains:[r.createElement(v.j,{key:"money",name:"Money",color:C.Z.theme.money},r.createElement(a.Z,null,r.createElement(p.G,{money:i.money*B}))),r.createElement(v.j,{key:"reputation",name:"Company Reputation",color:C.Z.theme.rep},r.createElement(a.Z,null,r.createElement(b.y,{reputation:i.reputation*B}))),...O(i)],progress:{elapsed:f.J5.currentWork.cyclesWorked*E.t.MilliPerCycle},stopText:"Stop working"}}if(""===e.title)return r.createElement(r.Fragment,null);const n="string"==typeof e.stopTooltip?r.createElement(a.Z,null,e.stopTooltip):e.stopTooltip||r.createElement(r.Fragment,null);return r.createElement(o.Z,{maxWidth:"md",sx:{display:"flex",flexDirection:"column",justifyContent:"center",height:"calc(100vh - 16px)"}},r.createElement(i.Z,{sx:{p:1,mb:1}},r.createElement(a.Z,{variant:"h6"},e.title),r.createElement(a.Z,null,e.description),e.gains&&r.createElement(s.Z,{sx:{mt:1}},r.createElement(l.Z,null,e.gains))),r.createElement(i.Z,{sx:{mb:1,p:1}},void 0!==e.progress&&r.createElement(c.Z,{sx:{mb:1}},r.createElement(c.Z,{display:"grid",sx:{gridTemplateColumns:`repeat(${Object.keys(e.progress).length}, 1fr)`,width:"100%",justifyItems:"center",textAlign:"center"}},void 0!==e.progress.elapsed&&r.createElement(a.Z,null,(0,x.UF)(e.progress.elapsed)," elapsed"),void 0!==e.progress.remaining&&r.createElement(a.Z,null,(0,x.UF)(e.progress.remaining)," remaining"),void 0!==e.progress.percentage&&r.createElement(a.Z,null,e.progress.percentage.toFixed(2),"% done")),void 0!==e.progress.percentage&&r.createElement(g.k,{variant:"determinate",value:e.progress.percentage,color:"primary"})),r.createElement(c.Z,{display:"grid",sx:{gridTemplateColumns:`repeat(${Object.keys(e.buttons).length}, 1fr)`}},e.stopTooltip?r.createElement(u.Z,{title:n},r.createElement(m.Z,{onClick:e.buttons.cancel},e.stopText)):r.createElement(m.Z,{onClick:e.buttons.cancel},e.stopText),e.buttons.unfocus&&r.createElement(m.Z,{onClick:e.buttons.unfocus},"Do something else simultaneously"))))}},22115:(e,t,n)=>{"use strict";n.d(t,{$1:()=>E,$i:()=>v,$j:()=>N,$n:()=>R,AN:()=>Y,AR:()=>b,B1:()=>F,DR:()=>W,Jw:()=>P,Kq:()=>D,L7:()=>_,Mf:()=>T,O3:()=>Z,P6:()=>B,T3:()=>C,US:()=>ee,WJ:()=>z,ZN:()=>j,ZQ:()=>M,_F:()=>I,bS:()=>V,dp:()=>A,jL:()=>J,jj:()=>Q,lb:()=>H,mP:()=>U,nC:()=>G,td:()=>$,uf:()=>x,w5:()=>X,wS:()=>q,wu:()=>K,y3:()=>L,yI:()=>O});var r=n(10425),a=n(13342),o=n(51087);const i=["","k","m","b","t","q","Q","s","S","o","n"],s=i.map(((e,t)=>parseFloat("1e"+3*t))),l=["GB","TB","PB","EB"],c=["GiB","TiB","PiB","EiB"];let u,m,f,h,d,p,g={},y={};const b=new a.v,v=new a.v;function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o.Z.hideThousandsSeparator&&(t.useGrouping=!1),new Intl.NumberFormat([o.Z.Locale,"en"],{minimumFractionDigits:o.Z.hideTrailingDecimalZeros?0:e,maximumFractionDigits:e,...t})}function w(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t[e]?t[e]:t[e]=k(e,n)}function E(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(Number.isNaN(e))return`NaN${f[0]}`;const n=Math.abs(e);if(n===1/0)return`${e<0?"-∞":""}∞${f.at(-1)}`;if(n<1e3)return w(t).format(e)+f[0];const r=Math.min(Math.floor(d(n)/p),f.length-1);return e/=h[r],w(t).format(e)+f[r]}function S(e){return m.format(e).toLocaleLowerCase()}function C(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e6;if(Number.isNaN(e))return"NaN%";const r=Math.abs(e);return 100*r==1/0?e<0?"-∞%":"∞%":r>=n?"x"+x(e,t,0):w(t,y,{style:"percent"}).format(e)}function x(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(Number.isNaN(e))return"NaN";const a=Math.abs(e);if(a===1/0)return e<0?"-∞":"∞";if(a=1e33)return S(e);let l=Math.floor(Math.log10(a)/3);return e/=s[l],Math.abs(e).toFixed(t).length===t+5&&i[l+1]&&(l+=1,e=e<0?-1:1),w(t).format(e)+i[l]}b.subscribe((()=>{g={},y={},m=k(3,{notation:o.Z.useEngineeringNotation?"engineering":"scientific"}),u=new Intl.NumberFormat([o.Z.Locale,"en"],{useGrouping:!o.Z.hideThousandsSeparator}),[f,d,p]=o.Z.UseIEC60027_2?[c,Math.log2,10]:[l,Math.log10,3],h=f.map(((e,t)=>(o.Z.UseIEC60027_2?1024:1e3)**t)),v.emit(),r.bS.emit()}));const N=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return x(e,t,1e33)},M=N,A=e=>x(e),T=A,L=A,R=A,F=A,_=A,I=A,P=A,B=e=>x(e,2),O=e=>x(e,3,1e3,!0),D=O,Z=O,G=e=>x(e,3,1e6,!0),J=G,W=e=>x(e,3,1e9,!0),H=e=>"$"+x(e),U=e=>x(e,5),j=U,$=U,q=e=>N(e,1),z=e=>N(e,2),V=z,Y=z,K=e=>N(e,3),X=K,Q=K;function ee(e){if(e=(e=e.trim()).replace(/,/g,""),["infinity","Infinity","∞"].includes(e))return 1/0;if(["-infinity","-Infinity","-∞"].includes(e))return-1/0;const t=i.indexOf(e.substring(e.length-1));return-1===t?parseFloat(e):parseFloat(e.substring(0,e.length-1)+"e"+3*t)}},30058:(e,t,n)=>{"use strict";function r(){const e=Math.random();return e<.4?"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(26*Math.random())]:e<.8?"abcdefghijklmnopqrstuvwxyz"[Math.floor(26*Math.random())]:"01234567689"[Math.floor(10*Math.random())]}function a(){const e=50+Math.floor(25*(Math.random()+Math.random()));let t="";for(;t.lengtht.length)continue;for(let r=0;rArray(10).fill(null))),n=Array.from(Array(10),(()=>Array(10)));function r(e,t,n,r){const a=e[t][n];(null==a||r.length9||n+1+r>e.length)return null;if(t+=e.substring(n+1,n+1+r),n+=1+r,n>=e.length)break;const a=e.charCodeAt(n)-48;if(a<0||a>9)return null;if(0===a)++n;else{if(n+1>=e.length)return null;const r=e.charCodeAt(n+1)-48;if(a>0&&(r<1||r>9)||r>t.length)return null;for(let e=0;ei,_p:()=>a,gf:()=>r,yH:()=>o})},50862:(e,t,n)=>{"use strict";n.d(t,{R:()=>c,m:()=>l});var r=n(33244),a=n(23122),o=n(92666);class i{constructor(e,t){this.name=t,this.defaultArgName=t.charAt(0).toLowerCase()+t.slice(1),this.valueArray=Object.values(e),this.valueSet=new Set(this.valueArray),this.fuzzMap=new Map(this.valueArray.map((e=>[e.toLowerCase().replace(/[ -]+/g,""),e])))}isMember(e){return this.valueSet.has(e)}nsGetMember(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.defaultArgName;if(this.isMember(t))return t;(0,a.Ee)(e,n,t);let r=`Allowable values: ${this.valueArray.map((e=>`"${e}"`)).join(", ")}`;throw this.valueArray.length>10&&(console.warn(`Provided value ${t} was not a valid option for enum type ${this.name}.\n${r}`),r="See the developer console for allowable values."),a.BM.makeRuntimeErrorMsg(e,`Argument ${n} should be a ${this.name} enum member.\nProvided value: "${t}".\n${r}`)}fuzzyGetMember(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.fuzzMap.get(e.toLowerCase().replace(/[ -]+/g,""))||(t?this.valueArray[0]:void 0)}getMember(e){return this.isMember(e)?e:void 0}random(){const e=(0,o.X)(0,this.valueArray.length-1);return this.valueArray[e]}}const s=new Map;Object.entries(r).forEach((e=>{let[t,n]=e;s.set(t,new i(n,t))}));const l=s.get.bind(s),c=(e,t)=>l(e).isMember(t)},10980:(e,t,n)=>{"use strict";n.d(t,{U:()=>s,o:()=>l});var r,a,o=n(90936),i=n(72938);!function(e){e[e.Production=0]="Production",e[e.Development=1]="Development"}(r||(r={})),function(e){e[e.Browser=0]="Browser",e[e.Steam=1]="Steam"}(a||(a={}));const s="https://github.com/bitburner-official/bitburner-src/issues/new";function l(e,t,n){var l;const c=function(e,t,n){const s=navigator.userAgent.toLowerCase().includes(" electron/"),l=r.Production,c={version:i.t.VersionString,hash:(0,o.v)(),toDisplay:()=>`v${i.t.VersionString} (${(0,o.v)()})`},u={userAgent:navigator.userAgent,language:navigator.language,cookiesEnabled:navigator.cookieEnabled,doNotTrack:navigator.doNotTrack,indexedDb:!!window.indexedDB};return{platform:s?a.Steam:a.Browser,environment:l,version:c,features:u,error:e,errorInfo:t,page:n}}(e,t,n),u=c.error.fileName,m=`lang=${c.features.language} cookiesEnabled=${c.features.cookiesEnabled.toString()} doNotTrack=${c.features.doNotTrack??"null"} indexedDb=${c.features.indexedDb.toString()}`,f=`${c.error.name}: ${c.error.message} (at "${c.page}")`,h=`\n## ${f}\n\n### How did this happen?\n\nPlease fill this information with details if relevant.\n\n- [ ] Save file\n- [ ] Minimal scripts to reproduce the issue\n- [ ] Steps to reproduce\n\n### Environment\n\n* Error: ${c.error.toString()??"n/a"}\n* Page: ${c.page??"n/a"}\n* Version: ${c.version.toDisplay()}\n* Environment: ${r[c.environment]}\n* Platform: ${a[c.platform]}\n* UserAgent: ${navigator.userAgent}\n* Features: ${m}\n* Source: ${u??"n/a"}\n\n${c.environment===r.Development?`\n### Stack Trace\n\`\`\`\n${null===(l=c.errorInfo)||void 0===l?void 0:l.componentStack.toString().trim()}\n\`\`\`\n`:""}\n### Save\n\`\`\`\nCopy your save here if possible\n\`\`\`\n`.trim();return{metadata:c,fileName:u,features:m,title:f,body:h,issueUrl:`${s}?title=${encodeURIComponent(f)}&body=${encodeURIComponent(h)}`}}},13342:(e,t,n)=>{"use strict";function r(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}n.d(t,{v:()=>a});class a{subscribers={};subscribe(e){let t=r();for(;void 0!==this.subscribers[t];)t=r();return this.subscribers[t]=e,()=>{delete this.subscribers[t]}}emit(){for(const e in this.subscribers){const t=this.subscribers[e];void 0!==t&&t(...arguments)}}}},31375:(e,t,n)=>{"use strict";function r(e){const t=[0],n=e.toString(2).split("").reverse();n.forEach(((e,t,n)=>{n[t]=parseInt(e)}));let r=n.length;for(let e=1;r>0;e++)t[e]=0!=(e&e-1)?n[--r]:0;let a=0;for(let e=0;e{n[t]=parseInt(e)}));for(let e=0;e{n[t]=parseInt(e)}));for(let e=1,t=r;e{n[t]=parseInt(e)}));for(let e=0;ea,ZH:()=>o,eP:()=>r})},84874:(e,t,n)=>{"use strict";n.d(t,{H:()=>a});class r{constructor(){this.data=[]}get size(){return this.data.length}push(e,t){const n=this.data.length;this.data[n]=[t,e],this.heapifyUp(n)}peek(){if(0!=this.data.length)return this.data[0][1]}pop(){if(0==this.data.length)return;const e=this.data[0][1];return this.data[0]=this.data[this.data.length-1],this.data.length=this.data.length-1,this.heapifyDown(0),e}changeWeight(e,t){const n=this.data.findIndex((t=>e(t[1])));if(-1==n)return;this.data[n][0]=t;const r=Math.floor((n-1)/2);this.heapOrderABeforeB(this.data[r][0],this.data[n][0])?this.heapifyDown(n):this.heapifyUp(n)}heapifyUp(e){for(;e>0;){const t=Math.floor((e-1)/2);if(this.heapOrderABeforeB(this.data[t][0],this.data[e][0]))break;const n=this.data[t];this.data[t]=this.data[e],this.data[e]=n,e=t}}heapifyDown(e){for(;e{"use strict";n.d(t,{r:()=>a});var r=n(61657);const a=()=>`${(0,r.t)(99)}.${(0,r.t)(9)}.${(0,r.t)(9)}.${(0,r.t)(9)}`},94515:(e,t,n)=>{"use strict";n.d(t,{Id:()=>l,L3:()=>s,Ro:()=>o,_q:()=>c,gY:()=>i});var r=n(47674),a=n(7165);function o(e,t){if(!function(e){return"object"==typeof e&&null!==e&&"ctor"in e&&"string"==typeof e.ctor&&"data"in e}(t))return t;const n=i[t.ctor];if(!n){switch(t.ctor){case"AllServersMap":return console.warn("Converting AllServersMap for v0.43.1"),t.data;case"Industry":return console.warn("Converting a corp from pre-2.3"),t.data;case"Employee":return console.warn("Converting a corp from pre-2.2"),t.data}throw new Error(`Could not locate constructor named ${t.ctor}. If the save data is valid, this is a bug.`)}const a=n.fromJSON(t);return void 0!==n.validationData&&(0,r.FF)(a,n.validationData),a}const i={JSONSet:a.z,JSONMap:a.X};function s(e,t,n){const r={};if(n){for(const e of n)r[e]=t[e];return{ctor:e,data:r}}for(const[e,n]of Object.entries(t))r[e]=n;return{ctor:e,data:r}}function l(e,t,n){const r=new e;if(n){for(const e of n){const n=t[e];void 0!==n&&(r[e]=n)}return r}for(const[e,n]of Object.entries(t))r[e]=n;return r}function c(e){}},57499:(e,t,n)=>{"use strict";n.d(t,{S:()=>a});var r=n(94515);class a{bladeburner=0;casino=0;class=0;codingcontract=0;corporation=0;crime=0;gang=0;hacking=0;hacknet=0;hacknet_expenses=0;hospitalization=0;infiltration=0;sleeves=0;stock=0;total=0;work=0;servers=0;other=0;augmentations=0;record(e,t){this[t]+=e,this.total+=e}reset(){for(const e in this)"number"==typeof this[e]&&(this[e]=0)}toJSON(){return(0,r.L3)("MoneySourceTracker",this)}static fromJSON(e){return(0,r.Id)(a,e.data)}}r.gY.MoneySourceTracker=a},49802:(e,t,n)=>{"use strict";n.d(t,{UF:()=>o,d4:()=>s,n0:()=>i});var r=n(51087),a=n(22392);function o(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=e<0;e=Math.abs(Math.floor(e));const a=1e3,o=60,i=60,s=o*i,l=24,c=s*l,u=Math.floor(e/a),m=Math.floor(u/c),f=u%c,h=Math.floor(f/s),d=f%s,p=Math.floor(d/o),g=d%o,y=(()=>{let t=""+e%a;for(;t.length<3;)t="0"+t;return t})(),b=t?`${g}.${y}`:`${g}`;let v="";return m>0&&(v+=`${m} day${1===m?"":"s"} `),(h>0||r.Z.ShowMiddleNullTimeUnit&&""!=v)&&(v+=`${h} hour${1===h?"":"s"} `),(p>0||r.Z.ShowMiddleNullTimeUnit&&""!=v)&&(v+=`${p} minute${1===p?"":"s"} `),v+=`${b} second${t||1!==g?"s":""}`,n?`-(${v})`:v}function i(e){if(!e.every(a.H))return"";if(0===e.length)return"";const t=e.concat().sort(),n=t[0],r=t[t.length-1],o=n.length;let i=0;for(;i1&&void 0!==arguments[1]?arguments[1]:0,n=3735928559^t,r=1103547991^t;for(let t,a=0;a>>16,2246822507)^Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),(4294967296*(2097151&r)+(n>>>0)).toString(16)}},93344:(e,t,n)=>{"use strict";n.d(t,{s:()=>l,u:()=>c});var r=n(81138),a=n(56798),o=n(67294),i=n(48672);let s=!1;const l=()=>{s=!0},c=()=>{const[e,t]=(0,o.useState)(s);return o.createElement(i.u,{open:e,onClose:()=>{}},o.createElement(r.Z,null,"Welcome to bitburner v2.0.0!")," ",o.createElement(r.Z,null,"While this version does not change the game a lot, it does have quite a few API breaks.")," ",o.createElement(r.Z,null,"A file was added to your home computer called V2_0_0_API_BREAK.txt and it is highly recommended you take a look at this file. It explains where most of the API break have occurred.")," ",o.createElement(r.Z,null,"You should also take a look at"," ",o.createElement("a",{target:"_",href:"https://github.com/bitburner-official/bitburner-src/blob/dev/doc/source/v2.0.0_migration.rst"}," ","the migration guide")," ","as well as"," ",o.createElement("a",{target:"_",href:"https://github.com/bitburner-official/bitburner-src/blob/dev/doc/source/changelog.rst"},"the changelog")),o.createElement(a.Z,{onClick:()=>t(!1)},"I understand"))}},47674:(e,t,n)=>{"use strict";function r(e,t){for(const n of Object.keys(t)){const r=t[n];void 0!==r&&("function"==typeof r?r(e,n):void 0!==r.func?r.func(e,t,n):(typeof e[n]!=typeof r.default&&(e[n]=r.default),"number"==typeof e[n]&&void 0!==r.min&&e[n]r.max&&(e[n]=r.max)))}}function a(e,t,n){return(r,a)=>{"number"==typeof r[a]?(r[a]n&&(r[a]=n)):r[a]=e}}n.d(t,{FF:()=>r,_z:()=>a})},27893:(e,t,n)=>{"use strict";function r(e,t,n){return(t<=0||t>=1)&&console.warn(`Exponential factor is ${t}. This is not an intended value for it`),n<1&&console.warn(`Linear factor is ${n}. This is not an intended value for it`),Math.pow(e,t)+e/n}n.d(t,{o:()=>r})},72326:(e,t,n)=>{"use strict";function r(e){const t=[];for(let n=0;nr,m:()=>a})},77732:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{P:()=>N00dles});const n00dlePower="[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[+!+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[(![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]]((+((+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+[+[]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+!+[]]])+[])[!+[]+!+[]]+[+!+[]])+(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]])()())[!+[]+!+[]+!+[]+[+[]]]+(+[]+[][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[]+[][(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[!+[]+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+[+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]])+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+[]]+(+(+!+[]+[+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()+[])[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]])()";function N00dles(){eval(n00dlePower)}},68980:(e,t,n)=>{"use strict";function r(e,t){if(t<0||t>100)return e;const n=e*(t/100);return e+(Math.random()*(2*n)-n)}n.d(t,{b:()=>r})},93826:(e,t,n)=>{"use strict";function r(e){const t=Object.assign({},{progress:0,totalTicks:20},e);t.progress=Math.max(Math.min(t.progress,1),0);const n=Math.max(Math.floor(t.progress/(1/t.totalTicks)),1),r=Math.max(t.totalTicks-n,0);return`[${"|".repeat(n)}${"-".repeat(r)}]`}n.d(t,{x:()=>r})},23999:(e,t,n)=>{"use strict";n.d(t,{v:()=>a});const r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function a(e){let t="";for(let n=0;n{"use strict";function r(e,t){const n=t.toLowerCase().replace(/ /g,"");for(const t of Object.values(e))if(n.includes(t.toLowerCase().replace(/ /g,"")))return t}n.d(t,{x:()=>r})},43074:(e,t,n)=>{"use strict";n.d(t,{P:()=>a});var r=n(39463);function a(e){console.error(e);let t="",n="UNKNOWN FILE NAME",a="UNKNOWN LINE NUMBER";var o,i;"object"==typeof(i=e)&&null!=i&&Object.hasOwn(i,"fileName")&&Object.hasOwn(i,"lineNumber")?(n=e.fileName??n,a=(null===(o=e.lineNumber)||void 0===o?void 0:o.toString())??a):t=String(e),(0,r.X)("Caught an exception: "+t+"

Filename: "+n+"

Line Number: "+a+"

This is a bug, please report to game developer with this message as well as details about how to reproduce the bug.

If you want to be safe, I suggest refreshing the game WITHOUT saving so that your save doesn't get corrupted",!0)}},30282:(e,t,n)=>{"use strict";n.d(t,{m:()=>a});var r=n(32449);function a(e){try{return(0,r.Z)(new Date,e)}catch(e){return"format error"}}},89194:(e,t,n)=>{"use strict";function r(e,t){var n,r;const a=new e,o=new Set(Object.getOwnPropertyNames(a));return null==t||null===(n=t.removedKeys)||void 0===n||n.forEach((e=>o.delete(e))),null==t||null===(r=t.addedKeys)||void 0===r||r.forEach((e=>o.add(e))),[...o]}n.d(t,{i:()=>r})},61657:(e,t,n)=>{"use strict";n.d(t,{t:()=>a});var r=n(92666);function a(e){const t=Math.max(Math.min(e,255),0);return(0,r.X)(0,t)}},92666:(e,t,n)=>{"use strict";function r(e,t){const n=Math.min(e,t),r=Math.max(e,t);return Math.floor(Math.random()*(r-n+1))+n}n.d(t,{X:()=>r})},59546:(e,t,n)=>{"use strict";function r(){const e=new Date,t=`0${e.getHours()}`.slice(-2),n=`0${e.getMinutes()}`.slice(-2),r=`0${e.getSeconds()}`.slice(-2);return`${e.getMonth()+1}/${e.getDate()} ${t}:${n}:${r}`}n.d(t,{u:()=>r})},66579:(e,t,n)=>{"use strict";function r(e){return!isNaN(e)&&0!==e&&0==(e&e-1)}n.d(t,{w:()=>r})},21430:(e,t,n)=>{"use strict";function r(e){return"number"==typeof e&&!isNaN(e)}n.d(t,{q:()=>r})},81055:(e,t,n)=>{"use strict";let r,a;n.d(t,{F:()=>r,P:()=>a}),function(e){e.ENTER="Enter",e.ESC="Escape",e.TAB="Tab",e.SPACE=" ",e.BACKSPACE="Backspace",e.UP_ARROW="ArrowUp",e.DOWN_ARROW="ArrowDown",e.LEFT_ARROW="ArrowLeft",e.RIGHT_ARROW="ArrowRight",e.QUOTE="'",e.DOUBLE_QUOTE='"',e.OPEN_BRACKET="[",e.CLOSE_BRACKET="]",e.LESS_THAN="<",e.GREATER_THAN=">",e.OPEN_PARENTHESIS="(",e.CLOSE_PARENTHESIS=")",e.OPEN_BRACE="{",e.CLOSE_BRACE="}",e.EQUAL="=",e.PIPE="|",e.DOT=".",e.FORWARD_SLASH="/",e.HYPHEN="-",e.HASH="#",e.k0="0",e.k1="1",e.k2="2",e.k3="3",e.k4="4",e.k5="5",e.k6="6",e.k7="7",e.k8="8",e.k9="9",e.A="a",e.B="b",e.C="c",e.D="d",e.E="e",e.F="f",e.G="g",e.H="h",e.I="i",e.J="j",e.K="k",e.L="l",e.M="m",e.N="n",e.O="o",e.P="p",e.Q="q",e.R="r",e.S="s",e.T="t",e.U="u",e.V="v",e.W="w",e.X="x",e.Y="y",e.Z="z"}(r||(r={})),function(e){e.ENTER="Enter",e.ESC="Escape",e.TAB="Tab",e.SPACE="Space",e.BACKSPACE="Backspace",e.UP_ARROW="ArrowUp",e.DOWN_ARROW="ArrowDown",e.LEFT_ARROW="ArrowLeft",e.RIGHT_ARROW="ArrowRight",e.BACKWARD_SLASH="Backslash",e.BACKQUOTE="Backquote",e.COMMA="Comma",e.DOT="Period",e.EQUAL="Equal",e.FORWARD_SLASH="Slash",e.HYPHEN="Minus",e.SEMICOLON="Semicolon",e.QUOTE="Quote",e.k0="Digit0",e.k1="Digit1",e.k2="Digit2",e.k3="Digit3",e.k4="Digit4",e.k5="Digit5",e.k6="Digit6",e.k7="Digit7",e.k8="Digit8",e.k9="Digit9",e.A="KeyA",e.B="KeyB",e.C="KeyC",e.D="KeyD",e.E="KeyE",e.F="KeyF",e.G="KeyG",e.H="KeyH",e.I="KeyI",e.J="KeyJ",e.K="KeyK",e.L="KeyL",e.M="KeyM",e.N="KeyN",e.O="KeyO",e.P="KeyP",e.Q="KeyQ",e.R="KeyR",e.S="KeyS",e.T="KeyT",e.U="KeyU",e.V="KeyV",e.W="KeyW",e.X="KeyX",e.Y="KeyY",e.Z="KeyZ"}(a||(a={}))},99953:(e,t,n)=>{"use strict";function r(e){return Math.round(100*e)/100}n.d(t,{S:()=>r})},70769:(e,t,n)=>{"use strict";function r(e,t){return e+"*"+JSON.stringify(t)}function a(e){return new RegExp("^"+e+"\\*")}function o(e){return a("[^[]*"+e+"[^[]*")}n.d(t,{Wl:()=>r,jz:()=>a,lr:()=>o})},22392:(e,t,n)=>{"use strict";function r(e){return"string"==typeof e||e instanceof String}function a(e){return e.length<2||e.at(0)!==e.at(-1)||"'"!==e.at(0)&&'"'!==e.at(0)?e:e.substring(1,e.length-1)}n.d(t,{H:()=>r,g:()=>a})},78719:(e,t,n)=>{"use strict";function r(e,t,n){try{t(e)}catch(e){throw n("string"==typeof e?e:"unknown")}}function a(e){return null===e?"null":Array.isArray(e)?"array":typeof e}function o(e){const t=a(e);if("object"!==t)throw t}function i(e){const t=a(e);if("string"!==t)throw t}function s(e){if(!Array.isArray(e))throw a(e)}n.d(t,{QS:()=>i,b$:()=>o,hu:()=>r,uF:()=>s})},18476:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,y:()=>h});var r=n(33244),a=n(15571),o=n(49173),i=n(97467),s=n(48897),l=n(69917);const c=[["getHackTime","returns milliseconds"],["getGrowTime","returns milliseconds"],["getWeakenTime","returns milliseconds"],["getActionTime","returns milliseconds"],["hackAnalyzePercent","renamed 'hackAnalyze' and returns decimal"],["hackChance","renamed 'hackAnalyzeChance'"],["basic.calculateSkill","renamed 'skills.calculateSkill'"],["basic.calculateExp","renamed 'skills.calculateExp'"],["basic.hackChance","renamed 'hacking.hackChance'"],["basic.hackExp","renamed 'hacking.hackExp'"],["basic.hackPercent","renamed 'hacking.hackPercent'"],["basic.growPercent","renamed 'hacking.growPercent'"],["basic.hackTime","renamed 'hacking.hackTime'"],["basic.growTime","renamed 'hacking.growTime'"],["basic.weakenTime","renamed 'hacking.weakenTime'"],["write","needs to be awaited"],["scp","needs to be awaited"],["sleep","Can no longer be called simultaneously."],["hacking_skill","renamed 'hacking'"],["tryWrite","renamed 'tryWritePort'"]],u=[[/ns.getHackTime/g,"((...a)=>ns.getHackTime(...a)/1000)"],[/ns.getGrowTime/g,"((...a)=>ns.getGrowTime(...a)/1000)"],[/ns.getWeakenTime/g,"((...a)=>ns.getWeakenTime(...a)/1000)"],[/ns.bladeburner.getActionTime/g,"((...a)=>ns.bladeburner.getActionTime(...a)/1000)"],[/ns.hackAnalyzePercent/g,"((...a)=>ns.hackAnalyze(...a)*100)"],[/ns.hackChance/g,"ns.hackAnalyzeChance"],[/ns.tryWrite/g,"ns.tryWritePort"],[/formulas.basic.calculateSkill/g,"formulas.skills.calculateSkill"],[/formulas.basic.calculateExp/g,"formulas.skills.calculateExp"],[/formulas.basic.hackChance/g,"formulas.hacking.hackChance"],[/formulas.basic.hackExp/g,"formulas.hacking.hackExp"],[/formulas.basic.hackPercent/g,"formulas.hacking.hackPercent"],[/formulas.basic.growPercent/g,"formulas.hacking.growPercent"],[/formulas.basic.hackTime/g,"formulas.hacking.hackTime"],[/formulas.basic.growTime/g,"formulas.hacking.growTime"],[/formulas.basic.weakenTime/g,"formulas.hacking.weakenTime"]];function m(e){for(const t of u)if(e.match(t[0]))return!0;return!1}function f(e){const t=e.split("\n"),n=[];for(let e=0;e0&&void 0!==arguments[0]?arguments[0]:1;const t=o.J5.augmentations.find((e=>e.name===r.AugmentationName.NeuroFluxGovernor));if(t)t.level+=e;else{const t=new a.e(r.AugmentationName.NeuroFluxGovernor);t.level=e,o.J5.augmentations.push(t)}}function d(){let e="";for(const t of(0,i.XX)())for(const n of c){const r=[];for(const e of t.scripts.values()){const t=e.code.split("\n");for(let a=0;a{"use strict";n.d(t,{b:()=>c});var r=n(34716),a=n(97467),o=n(93344);const i=["applyToCompany","b1tflum3","checkFactionInvitations","commitCrime","connect","createProgram","destroyW0r1dD43m0n","donateToFaction","getAugmentationBasePrice","getAugmentationCost","getAugmentationPrereq","getAugmentationPrice","getAugmentationRepReq","getAugmentationsFromFaction","getAugmentationStats","getCompanyFavor","getCompanyFavorGain","getCompanyRep","getCrimeChance","getCrimeStats","getCurrentServer","getDarkwebProgramCost","getDarkwebPrograms","getFactionFavor","getFactionFavorGain","getFactionRep","getOwnedAugmentations","getOwnedSourceFiles","getUpgradeHomeCoresCost","getUpgradeHomeRamCost","goToLocation","gymWorkout","hospitalize","installAugmentations","installBackdoor","isBusy","isFocused","joinFaction","manualHack","purchaseAugmentation","purchaseProgram","purchaseTor","quitJob","setFocus","softReset","stopAction","travelToCity","universityCourse","upgradeHomeCores","upgradeHomeRam","workForCompany","workForFaction"],s=["workChaExpGained","currentWorkFactionName","workDexExpGained","workHackExpGained","createProgramReqLvl","workStrExpGained","companyName","crimeType","workRepGained","workChaExpGainRate","workType","workStrExpGainRate","isWorking","workRepGainRate","workDefExpGained","currentWorkFactionDescription","workHackExpGainRate","workAgiExpGainRate","workDexExpGainRate","workMoneyGained","workMoneyLossRate","workMoneyGainRate","createProgramName","workDefExpGainRate","workAgiExpGained","className","hacking","strength","defense","dexterity","agility","charisma","intelligence","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","intelligence_exp","hp","max_hp","hasWseAccount","hasTixApiAccess","has4SData","has4SDataTixApi"],l=["hacking_chance_mult","hacking_speed_mult","hacking_money_mult","hacking_grow_mult","hacking_mult","hacking_exp_mult","strength_mult","strength_exp_mult","defense_mult","defense_exp_mult","dexterity_mult","dexterity_exp_mult","agility_mult","agility_exp_mult","charisma_mult","charisma_exp_mult","hacknet_node_money_mult","hacknet_node_purchase_cost_mult","hacknet_node_ram_cost_mult","hacknet_node_core_cost_mult","hacknet_node_level_cost_mult","company_rep_mult","faction_rep_mult","work_money_mult","crime_success_mult","crime_money_mult","bladeburner_max_stamina_mult","bladeburner_stamina_gain_mult","bladeburner_analysis_mult","bladeburner_success_chance_mult"],c=()=>{const e=(0,a.WT)("home");if(!e)throw new Error("'home' server was not found.");const t=[{matchJS:/ns\.workForCompany/g,matchScript:/workForCompany/g,reason:"workForCompany argument companyName is now not-optional.",offenders:[]},{matchJS:/ns\.getScriptExpGain/g,matchScript:/getScriptExpGain/g,reason:"getScriptExpGain with 0 argument no longer returns the sum of all scripts. Use getTotalScriptExpGain",offenders:[]},{matchJS:/ns\.getScriptExpGain/g,matchScript:/getScriptExpGain/g,reason:"getScriptIncome with 0 argument no longer returns the sum of all scripts. Use getTotalScriptIncome",offenders:[]},{matchJS:/ns\.scp/g,matchScript:/scp/g,reason:"scp arguments were switch, it is now scp(files, destination, optionally_source). If you were using 2 argument (not 3) this doesn't affect you.",offenders:[]},{matchJS:/ns\.stock\.buy/g,matchScript:/stock\.buy/g,reason:"buy is a very common word so in order to avoid ram costs it was renamed ns.stock.buyStock",offenders:[]},{matchJS:/ns\.stock\.sell/g,matchScript:/stock\.sell/g,reason:"sell is a very common word so in order to avoid ram costs it was renamed ns.stock.sellStock",offenders:[]},{matchJS:/ns\.stock\.short/g,matchScript:/stock\.short/g,reason:"short is a very common word so in order to avoid ram costs it was renamed ns.stock.buyShort",offenders:[]},{matchJS:/ns\.corporation\.bribe/g,matchScript:/corporation\.bribe/g,reason:"bribe no longer allows you to give shares of the corporation, only money",offenders:[]}];for(const e of i)t.push({matchJS:new RegExp(`ns.${e}`,"g"),reason:`ns.${e} was moved to ns.singularity.${e}`,offenders:[]});for(const e of l)t.push({matchJS:new RegExp(e,"g"),reason:`ns.getPlayer().${e} was moved to ns.getPlayer().mults.${e.slice(0,e.length-5)}`,offenders:[]});for(const e of s)t.push({matchJS:new RegExp(e,"g"),reason:`The work system is completely reworked and ns.getPlayer().${e} no longer exists. This data is likely available inside ns.getPlayer().currentWork, skills, exp, or hp`,offenders:[]});for(const n of e.scripts.values())f(t,n);e.writeToTextFile("V2_0_0_API_BREAK.txt",m(t)),(0,o.s)();for(const e of(0,a.XX)())e.runningScriptMap=new Map;r.Ex.exportGame()},u=e=>{const t={};for(const n of e){const e=t[n.file]??[];e.push(n),t[n.file]=e}let n="";for(const e in t){n+="\t"+e+"\n";for(const r of t[e])n+=`\t\tLine ${r.line} ${r.content.trim()}\n`}return n},m=e=>{let t="This file contains the list of potential API break. A pattern was used to look through all your files and note the spots where you might have a problem. Not everything here is broken.";for(const n of e)0!==n.offenders.length&&(t+=String(n.matchJS)+"\n",t+=n.reason+"\n\n",t+=u(n.offenders),t+="\n\n");return t},f=(e,t)=>{const n=t.code.split("\n");for(let r=0;r{"use strict";n.d(t,{Z:()=>r});const r="# BitNodes\n\nA BitNode is an important part of the game's storyline.\nIn the game, you discover what BitNodes are by following the trail of clues left by the mysterious `jump3r`.\n\n## What is a BitNode\n\nA BitNode is the complex simulated reality in which you reside.\nBy following the messages from `jump3r`, you discover that humanity was enslaved by an advanced alien race, called the Enders, using virtual simulations that trapped the minds of humans.\n\nHowever, the Enders didn't just create a single virtual reality to enslave humans, but many different simulations.\nIn other words, there are many different BitNodes that exist.\nThese BitNodes are very different from each other.\n\njump3r tells you that the only hope for humanity is to destroy all of these BitNodes.\nTherefore, the end goal for the player is to enter and then destroy each BitNode.\n\nDestroying a BitNode resets most of the player's progress but grants the player a powerful second-tier persistent upgrade called a [Source-File](sourcefiles.md).\nDifferent BitNodes grant different [Source-Files](sourcefiles.md).\n\nEach BitNode has unique characteristics that are related to varying backstories.\nFor example, in one BitNode the world is in the middle of a financial catastrophe with a collapsing market.\nIn this BitNode, most forms of income such as working at a [Company](../basic/companies.md) or [Hacknet Nodes](../basic/hacknet_nodes.md) are significantly less profitable.\n[Servers](../basic/servers.md) have less money on them and lowered growth rates, but it is easier to lower their security level using the `weaken` function.\n\nFurthermore, some BitNodes introduce new content and mechanics.\nFor example, there is one BitNode that grants access to the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md).\nThere is another BitNode in which you can manage a [Gang](gang.md) to earn money and [Reputation](../basic/reputation.md).\n\n## How to destroy a BitNode\n\nInitially, the only way to destroy a BitNode is to join Daedalus.\nFrom Daedalus, the player can obtain an [Augmentation](../basic/augmentations.md) called `The Red Pill`, which doesn't cost any money but does require a good amount of [Faction](../basic/factions.md) [Reputation](../basic/reputation.md).\n\nAfter installing `The Red Pill`, the player must search for and then manually `hack` a server called `w0r1d_d43m0n`.\nThis server requires a hacking level of `3000`, sometimes more, in order to successfully hack it.\nThis will destroy the player's current BitNode.\n\nThere is a second method of destroying a BitNode, but it must be unlocked by first destroying BitNode-6 or BitNode-7 ([Bladeburners](bladeburners.md)).\n\nWhen the player destroys a BitNode, most of their progress will be reset.\nThis includes things such as [Augmentations](../basic/augmentations.md) and [RAM](../basic/ram.md) upgrades on the home computer.\nThe only things that will persist through destroying BitNodes are:\n\n- [Source-Files](sourcefiles.md)\n- [Scripts](../basic/scripts.md) on the home computer\n- [Intelligence](intelligence.md)\n"},46232:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Bladeburners\n\nPLACEHOLDER\n"},20041:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Corporations\n\nPLACEHOLDER\n"},23952:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Gang\n\nManaging a gang can be very rewarding. By rising above all other gangs you get access to almost all augmentations in the game.\n\nPLACEHOLDER\n"},59715:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Grafting\n\nGrafting is an experimental process through which you can obtain the benefits of [Augmentations](../basic/augmentations.md), without needing to reboot your body.\n\nGrafting can be done at VitaLife in New Tokyo, where you'll find a shady researcher with questionable connections.\nFrom there, you can spend a sum of money to begin grafting [Augmentations](../basic/augmentations.md).\nThis will take some time.\nWhen done, the [Augmentation](../basic/augmentations.md) will be applied to your character without needing to install.\n\nBe warned, some who have tested grafting have reported an unidentified malware.\nDubbed `Entropy`, this virus seems to grow in potency as more [Augmentations](../basic/augmentations.md) are grafted, causing unpredictable affects to the victim.\n\nNote that when grafting an [Augmentation](../basic/augmentations.md), cancelling will **not** save your progress, and the money spent will **not** be returned.\n"},55586:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Hacknet Servers\n\nThese are a very powerful upgrade to [Hacknet Nodes](../basic/hacknet_nodes.md).\nInstead of producing money, the Hacknet Servers produce `hashes`.\nThis currency can be exchanged for a variety of upgrades that boost most other mechanics of the game.\n\nThey can also be used to run scripts on.\nHowever, this reduces the amount of `hash` produced.\n"},43429:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Intelligence\n\nIntelligence is a stat that is unlocked by having [Source-File 5](sourcefiles.md) (i.e. Destroying [BitNode-5](bitnodes.md)).\n\nIntelligence is unique because it is permanent and persistent.\nIt never gets reset back to 1.\nHowever, gaining Intelligence experience is extremely slow.\nIt is a stat that gradually builds up as you continue to play the game.\n\nIntelligence will boost your production for many actions in the game, including:\n\n- [Hacking](../basic/hacking.md)\n- [Infiltration](../basic/infiltration.md)\n- [Crime](../basic/crimes.md) success rate\n- [Bladeburner](bladeburners.md) actions\n- [Reputation](../basic/reputation.md) gain for [Companies](../basic//companies.md) & [Factions](../basic/factions.md)\n- [Augmentation](../basic/augmentations.md) [Grafting](grafting.md) speed\n"},20772:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Sleeves\n\nWhen VitaLife unveiled their Persona Core technology that allowed people to digitize and transfer their consciousness into other vessels, human bodies became nothing more than 'sleeves' for the human consciousness.\nThis technology thus became known as \"Sleeve technology\".\n\nSleeve technology unlocks two different gameplay features:\n\n- Duplicate Sleeves\n- [Grafting](grafting.md)\n\nSleeve technology is unlocked in [BitNode-10](bitnodes.md).\n\n## Duplicate Sleeves\n\nDuplicate Sleeves are MK-V Synthoids (synthetic androids) into which your consciousness has been copied.\nIn other words, these Synthoids contain a perfect duplicate of your mind.\n\nDuplicate Sleeves are essentially clones which you can use to perform work-type actions, such as working for a [Company](../basic/companies.md) / [Faction](../basic/factions.md) or committing a [Crime](../basic/crimes.md).\nWhen sleeves perform these tasks, they will earn money, experience, and [Reputation](../basic/reputation.md).\n\nSleeves are their own individuals, which means they each have their own experience and stats.\n\nWhen a sleeve earns experience, it earns experience for itself, the player's original consciousness, as well as all of the player's other sleeves.\n\nDuplicate Sleeves are **not** reset when installing [Augmentations](../basic/augmentations.md), but they are reset when switching [BitNodes](bitnodes.md).\n\n## Obtaining Duplicate Sleeves\n\nThere are two methods of obtaining Duplicate Sleeves:\n\n- Destroy [BitNode-10](bitnodes.md).\n Each completion gives you one additional Duplicate Sleeve.\n- Purchase Duplicate Sleeves from The Covenant.\n This is only available in [BitNode-10](bitnodes.md).\n Sleeves purchased this way are **permanent** (they persist through [BitNodes](bitnodes.md)).\n You can purchase up to 5 Duplicate Sleeves from The Covenant.\n\n## Synchronization\n\nSynchronization is a measure of how aligned your consciousness is with that of your Duplicate Sleeves.\nIt is a numerical value between `1` and `100`, and it affects how much experience is earned when the sleeve is performing a task.\n\nSynchronization can be increased by assigning sleeves to the `Synchronize` task.\n\n## Sleeve Shock\n\nSleeve shock is a measure of how much trauma the sleeve has due to being placed in a new body.\nIt is a numerical value between `0` and `100`, where `100` indicates full shock and `0` indicates no shock.\nShock affects the amount of experience earned by the sleeve.\n\nSleeve shock slowly decreases over time.\nYou can further increase the rate at which it decreases by assigning sleeves to the `Shock Recovery` task.\n\nLet `X` be the sleeve's shock and `Y` be the sleeve's synchronization.\nWhen the sleeve earns experience by performing a task, the sleeve gains `X%` of the amount of experience normally earned by the task.\nThe player’s original host consciousness and all of the player's other sleeves earn `Y%` of the experience that the sleeve gained, or `X\\*Y %` of the normal experience amount.\n\n## Augmentations\n\nYou can purchase [Augmentations](../basic/augmentations.md) for your Duplicate Sleeves.\nIn order to do this, the sleeve's shock must be at `0`.\nAny [Augmentation](../basic/augmentations.md) that is currently available to you through a faction is also available for your Duplicate Sleeves.\nThere are a few [Augmentations](../basic/augmentations.md), such as NeuroFlux Governor and [Bladeburner](bladeburners.md)-specific ones, that cannot be purchased for a Duplicate Sleeve.\n\nWhen you purchase an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve, it is instantly installed.\nWhen this happens, the sleeve's stats are instantly reset back to 0, similar to when you normally install [Augmentations](../basic/augmentations.md).\n\nThe cost of purchasing an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve is **not** affected by how many [Augmentations](../basic/augmentations.md) you have purchased for yourself, and vice versa.\n\n## Memory\n\nSleeve memory dictates what a sleeve's synchronization will be when it is reset by switching [BitNodes](bitnodes.md).\nFor example, if a sleeve has a memory of `10`, then when you switch [BitNodes](bitnodes.md) its synchronization will initially be set to `10`, rather than 1.\n\nMemory can only be increased by purchasing upgrades from The Covenant.\nJust like the ability to purchase additional sleeves, this is only available in [BitNode-10](bitnodes.md).\n\nMemory is a persistent stat, meaning it never gets reset back to `1`.\nThe maximum possible value for a sleeve's memory is `100`.\n\nBuying memory has no instant affect on synchronization - memory affects only the starting synchronization upon entering a [BitNode](bitnodes.md).\n"},16234:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Source-Files\n\nSource-Files are a type of persistent upgrade that is more powerful than [Augmentations](../basic/augmentations.md).\nSource-Files are received by destroying a [Bitnode](bitnodes.md).\nThere are many different [BitNodes](bitnodes.md) in the game and each [BitNode](bitnodes.md) will grant a different Source-File when it is destroyed.\n\nA Source-File can be upgraded by destroying its corresponding [BitNode](bitnodes.md) a second or third time (playing through that [BitNode](bitnodes.md) again).\nIt can be upgraded to a maximum of level 3, with the exception of Source-File 12, which has no hard limit.\n"},72188:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Stanek\n\nAllison is a bit crazy.\nBut her special [Augmentation](../basic/augmentations.md) is very useful despite its ~~bugs~~ features.\nThe Gift consists of a grid of squares in which tetris-like pieces called fragments can be placed.\nEach fragment boost a different player multiplier.\nHowever, the fragments are not very powerful by themselves.\n\nTo increase the power of a fragment, the `ns.stanek.charge()` function needs to be called.\nMore threads means more power.\n\nThere are also special fragments called booster fragments which increase the power of the fragment it touches.\n"},65273:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Augmentations\n\nAdvances in science and medicine have led to powerful new technologies that allow people to augment themselves beyond normal human capabilities.\nThere are many different types of Augmentations, ranging from cybernetic to genetic to biological.\nAcquiring these Augmentations enhances the user's physical and mental faculties.\n\nAugmentations provide persistent upgrades in the form of multipliers.\nThese multipliers apply to a wide variety of things such as stats, experience gain, and [hacking](hacking.md), just to name a few.\nThe effects of Augmentations stack multiplicatively.\nYour multipliers can be viewed in the `Character` pages.\n\n## How to acquire Augmentations\n\nBecause of how powerful Augmentations are, the technology behind them is kept private and secret by the corporations and organizations that create them.\nTherefore, the only way for the player to obtain Augmentations is through [Factions](factions.md).\nAfter joining a [Faction](factions.md) and earning enough [Reputation](reputation.md) in it, you will be able to purchase its Augmentations.\nDifferent [Factions](factions.md) offer different Augmentations.\nAugmentations must be purchased in order to be installed, and they are fairly expensive.\nThey also require [Reputation](reputation.md) with a [Faction](factions.md) before they will let you purchase their Augmentations.\n\n## Installing Augmentations\n\nYou will not gain the benefits of your purchased Augmentations until you install them.\nYou can choose to install Augmentations through the `Augmentations` menu tab, found under `Character`.\n\nUnfortunately, installing Augmentations has side effects.\nYou will lose most of the progress you've made, including your skills, stats, and money.\nYou will have to start over, but you will have all of the Augmentations you have installed to help you progress.\nThis is the game's \"soft reset\" or \"prestige\" mechanic.\n\nTo summarize, here is a list of everything you will **LOSE** when you install an Augmentation:\n\n- Stats/Skills\n- Money\n- [Scripts](scripts.md) on all [servers](servers.md) EXCEPT your home computer\n- Purchased [servers](servers.md)\n- [Hacknet Nodes](hacknet_nodes.md)\n- [Company](companies.md) / [Faction](factions.md) [Reputation](reputation.md), but you gain [Favor](reputation.md).\n- Jobs and [Faction](factions.md) memberships\n- Programs\n- [Stocks](stockmarket.md)\n- TOR router\n\nHere is everything you will **KEEP** when you install an Augmentation:\n\n- Every Augmentation you have previously installed\n- [Scripts](scripts.md) on your home computer\n- [RAM](ram.md) / Core Upgrades on your home computer\n- [World Stock Exchange account](stockmarket.md) and [TIX API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md) Access\n\n## Purchasing Multiple Augmentations\n\nYou do not have to install an Augmentation right after you purchase it.\nYou can purchase as many Augmentations as you'd like before you choose to install them.\nWhen you install your purchased Augmentations they will **ALL** get installed at once.\n\nThere are a few drawbacks to this, however.\nFirst, obviously, you won't gain the benefits of your purchased Augmentations until after you install them.\nSecond, purchasing multiple Augmentations before installing them will cause the Augmentations to get progressively more expensive.\nWhen you purchase an Augmentation, the price of purchasing another Augmentation doubles.\nThis multiplier stacks for each Augmentation you purchase.\nOnce you install your purchased Augmentations, their costs are reset back to the original prices.\nYou can only purchase each augmentation once, with the exception of `NeuroFlux Governor`, which can be purchased infinitely at increasing cost.\n"},93352:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Coding Contracts\n\nCoding Contracts are a mechanic that lets players earn rewards in exchange for solving programming problems.\n\nCoding Contracts are files with the `.cct` extension.\nThey can be accessed through the [Terminal](terminal.md) or through [Scripts](scripts.md) using the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\n\nEach contract has a limited number of attempts.\nIf you provide the wrong answer too many times and exceed the number of attempts, the contract will self destruct (delete itself).\n\nCurrently, Coding Contracts are randomly generated and spawned over time.\nThey can appear on any [server](servers.md) (including your home computer), except for your purchased [servers](servers.md).\n\n## Running in Terminal\n\nTo run a Coding Contract in the [Terminal](terminal.md), simply use the `run` command:\n\n $ run some-contract.cct\n\nDoing this will bring up a popup.\nThe popup will display the contract's problem, the number of attempts remaining, and an area to provide an answer.\n\n## Interacting through Scripts\n\nSee the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\nInteracting with Coding Contracts via the [Terminal](terminal.md) can be tedious the more contracts you solve.\nConsider using the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) to automate various aspects of your solution.\nFor example, some contracts have long solutions while others have even longer solutions.\nYou might want to use the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) to automate the process of submitting your solution rather than copy and paste a long solution into an answer box.\n\nHowever, using the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) comes at a cost.\nLike most functions in other APIs, each function in the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) has a RAM cost.\nDepending on which function you use, the initial [RAM](ram.md) on your home server might not be enough to allow you to use various [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) functions.\nPlan on upgrading the [RAM](ram.md) on your home server if you want to use the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\n\n## Submitting Solutions\n\nDifferent contract problem types will require different types of solutions.\nSome may be numbers, others may be strings or arrays.\nIf a contract asks for a specific solution format, then use that.\nOtherwise, follow these rules when submitting solutions:\n\n- String-type solutions should **not** have quotation marks surrounding the string (unless specifically asked for).\n Only quotation marks that are part of the actual string solution should be included.\n- Array-type solutions should be submitted with each element in the array separated by commas.\n Brackets are optional.\n For example, both of the following are valid solution formats:\n - `1,2,3`\n - `[1,2,3]`\n- If the solution is a multidimensional array, then all arrays that are not the outer-most array DO require the brackets.\n For example, an array of arrays can be submitted as one of the following:\n - `[1,2],[3,4]`\n - `[[1,2],[3,4]]`\n\nNumeric solutions should be submitted normally, as expected\n\n## Rewards\n\nThere are currently four possible rewards for solving a Coding Contract:\n\n- [Faction](factions.md) [Reputation](reputation.md) for a specific [Faction](factions.md)\n- [Faction](factions.md) [Reputation](reputation.md) for all [Factions](factions.md) that you are a member of\n- [Company](companies.md) [Reputation](reputation.md) for a specific [Company](companies.md)\n- Money\n\nThe `amount` of the reward varies based on the difficulty of the problem posed by the Coding Contract.\nThere is no way to know what a Coding Contract's exact reward will be until it is solved.\n\n## Notes\n\n- The `scp` [Terminal](terminal.md) command does not work on Coding Contracts\n"},34177:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Companies\n\nWhen exploring the [World](world.md), you can visit various companies.\nAt these companies, you can apply for jobs.\n\nWorking a job lets you earn money, experience, and [Reputation](reputation.md) with that company.\n\nWhile working for a company, you can click `Do something else simultaneously` to be able to do things while you continue to work in the background.\nThere is a 20% penalty to the related gains.\nClicking the `Focus` button under the overview will return you to the current work.\n\nIf you've been hired to do a job you can click that `Apply for X Job` button again to get a promotion if you meet the requirements.\nYou can see the requirements by hovering your cursor over the button.\nHigher positions give increased rewards.\n"},98028:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Crimes\n\nCommitting crimes is an active gameplay mechanic that allows the player to train their [Stats](stats.md) and potentially earn money.\nThe player can attempt to commit crimes by visiting `The Slums` through the `City` tab (Alt + w).\n`The Slums` is available in every city.\n\n## Basic Mechanics\n\nWhen you visit `The Slums` you will see a list of buttons that show all of the available crimes.\nSimply select one of the options to begin attempting that crime.\nAttempting to commit a crime takes a certain amount of time.\nThis time varies between crimes.\n\nWhile doing crimes, you can click `Do something else simultaneously` to be able to do things while you continue to do crimes in the background.\nThere is a 20% penalty to the related gains.\nClicking the `Focus` button under the overview will return you to the current task.\n\nCrimes are not always successful.\nYour rate of success is determined by your [Stats](stats.md) and [Augmentations](augmentations.md).\nThe odds can be seen on the crime-selection page.\nIf you are unsuccessful at committing a crime you will gain EXP, but you will not earn money.\nIf you are successful at committing the crime you will gain extra EXP (4x of what an unsuccessful attempt would give) and earn money.\n\nHarder crimes are typically more profitable, and also give more EXP.\n"},18267:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Factions\n\nThroughout the game you may receive invitations from factions.\nThere are many different factions, and each faction has different criteria for determining its potential members.\nJoining a faction and furthering its cause is crucial to progressing in the game and unlocking endgame content.\n\nIt is possible to join multiple factions if you receive invitations from them.\nHowever, note that joining a faction may prevent you from joining other rival factions.\n(Don't worry, this usually isn't the case.\nAlso, it would only be temporary since resetting the game by installing [Augmentations](augmentations.md) will clear all your factions)\n\nThe `Factions` link on the menu brings up a list of all factions that you have joined.\nYou can select a Faction on this list to go to that Faction page.\nThis page displays general information about the Faction and also lets you perform work for the faction.\nWorking for a Faction is similar to working for a [Company](companies.md) except that you don't get paid a salary.\nYou will only earn [Reputation](reputation.md) in your Faction and train your [Stats](stats.md).\n\nEarning [Reputation](reputation.md) for a Faction unlocks powerful [Augmentations](augmentations.md).\nPurchasing and installing these [Augmentations](augmentations.md) will upgrade your abilities.\nThe [Augmentations](augmentations.md) that are available to unlock vary from Faction to Faction.\n"},88378:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Hacking\n\nIn the year 2077, currency has become digital and decentralized.\nPeople and corporations store their money on [servers](servers.md).\nBy hacking these [servers](servers.md), you can steal their money and gain experience.\n\n## Gaining Root Access\n\nThe first step to hacking a [server](servers.md) is to gain root access to that [server](servers.md).\nThis can be done using the `NUKE.exe` virus.\nYou start the game with a copy of the `NUKE.exe` virus on your home computer.\nThe `NUKE.exe` virus attacks the target [server](servers.md)'s open ports using buffer overflow exploits.\nWhen successful, you are granted root administrative access to the machine.\n\nIn order for the `NUKE.exe` virus to succeed, the target [server](servers.md) needs to have enough open ports.\nSome [servers](servers.md) have no security and will not need any ports opened.\nSome will have very high security and will need many ports opened.\nIn order to open ports on another [server](servers.md), you will need to run programs that attack the [server](servers.md) to open specific ports.\nThese programs can be coded once your hacking skill gets high enough, or they can be purchased if you can find a seller.\n\n**There are two ways to execute port-opening programs and the NUKE virus:**\n\n- Connect to the target [server](servers.md) through the [Terminal](terminal.md) and use the `run` command: `$ run [programName]`\n- Use a function:\n - `nuke`\n - `brutessh`\n - `ftpcrack`\n - `relaysmtp`\n - `httpworm`\n - `sqlinject`\n\n**There are two ways to determine how many ports need to be opened\non a [server](servers.md) in order to successfully NUKE it:**\n\n- Connect to that [server](servers.md) through the [Terminal](terminal.md) and use the `analyze` command.\n- Use the `getServerNumPortsRequired` function.\n\nOnce you have enough ports opened on a [server](servers.md) and have ran the NUKE virus to gain root access, you will be able to hack it.\n\n## General Hacking Mechanics\n\nWhen you execute the `hack` command, either manually through the [Terminal](terminal.md) or automatically through a script, you attempt to hack the [server](servers.md).\nThis action takes time.\nThe more advanced a [server](servers.md)'s security is, the more time it will take.\nYour hacking skill level also affects the hacking time, with a higher hacking skill leading to shorter hacking times.\nAlso, running the hack command manually through [Terminal](terminal.md)\nis faster than hacking from a script.\n\nYour attempt to hack a [server](servers.md) will not always succeed.\nThe chance you have to successfully hack a [server](servers.md) is also determined by the [server](servers.md)'s security and your hacking skill level.\nEven if your hacking attempt is unsuccessful, you will still gain experience points.\n\nWhen you successfully hack a [server](servers.md).\nYou steal a certain percentage of that [server](servers.md)'s total money.\nThis percentage is, once again, determined by the [server](servers.md)'s security and your hacking skill level.\nThe amount of money on a [server](servers.md) is not limitless.\nSo, if you constantly hack a [server](servers.md) and deplete its money, then you will encounter diminishing returns in your hacking (since you are only hacking a certain percentage).\nYou can increase the amount of money on a [server](servers.md) using a script and the `grow` function.\n\n## Server Security\n\nEach [server](servers.md) has a security level, typically between `1` and `100`.\nA higher number means the [server](servers.md) has stronger security.\n\nAs mentioned above, a [server](servers.md)'s security level is an important factor to consider when hacking.\nYou can check a [server](servers.md)'s security level using the `analyze` [Terminal](terminal.md) command.\nYou can also check a [server](servers.md)'s security in a script, using the `getServerSecurityLevel` function.\n\nWhenever a [server](servers.md) is hacked manually or through a script, its security level increases by a small amount.\nCalling the `grow` function in a script will also increase security level of the target [server](servers.md).\nThese actions will make it harder for you to hack the [server](servers.md), and decrease the amount of money you can steal.\nYou can lower a [server](servers.md)'s security level in a script using the `weaken` function.\n\nThis means that a [server](servers.md)'s security level will not fall below this value if you are trying to `weaken` it.\n\n## Backdoors\n\n[Servers](servers.md) that can be hacked can also have backdoors installed.\nThese backdoors will provide you with a benefit - the services may be cheaper, penalties may be reduced or there may be other results.\nHoneypots exist and will let factions know when you have succeeded at backdooring their system.\nOnce you have a backdoor installed, you can connect to that [server](servers.md) directly.\n\nWhen you visit a location in the city and see that the name is partially scrambled, this indicates that you have backdoored the [server](servers.md) related to the location.\n"},11082:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Hacknet nodes\n\nThis distributed network of computers allows you to gain money passively.\nBy upgrading a node's stats you can increase the amount of money it earns.\nIf the cost gets too high, it is also possile to purchase brand new nodes.\n\nHacknet nodes won't make as much money as scripts, but they can be useful at the start.\n\nThere is a very powerful upgrade to them called [Hacknet Servers](../advanced/hacknetservers.md)\n"},35123:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Infiltration\n\nInfiltration is a gameplay mechanic that allows you to infiltrate a [Company](companies.md)'s facility to try and steal the [Company](companies.md)'s classified secrets.\nThese secrets can be sold for money or for [Reputation](reputation.md) with a [Faction](factions.md).\n\n## Overview\n\nMany companies have facilities that you can attempt to infiltrate.\nBy infiltrating, you can steal classified [Company](companies.md) secrets and then sell these for money or for [Faction](factions.md) [Reputation](reputation.md).\nTo try and infiltrate a [Company](companies.md), visit a [Company](companies.md) through the [World](world.md) menu.\nThere will be an option that says 'Infiltrate [Company](companies.md)'.\n\nWhen infiltrating a [Company](companies.md), you will be presented with short active challenges.\nNone of the challenges use the mouse.\n\nThe difficulty at the top lowers with better combat stats and charisma.\nIt is not recommended to attempt infiltrations above mid-normal.\n\nThe `maximum level` is the number of challenges you will need to pass to receive the infiltration reward.\n\nEvery time you fail an infiltration challenge, you will take damage based on the difficulty of the infiltration.\nIf you are reduced to `0` hp or below, the infiltration will immediately end.\n\n- Most use spacebar as `action`\n- Some use WASD or arrows interchangeably.\n- A few others use the rest of the keyboard.\n\n### Slash when his guard is down!\n\nPress space when the guard is preparing to attack you.\n\nThere are 3 phases:\n\n1. guarding - attacking back will result in failure.\n2. preparing - attacking will result in a victory.\n3. attacking - the guard will attack you resulting in failure.\n\n### Close the brackets\n\nEnter all the matching brackets in reverse order.\n\n### Type it backward\n\nType the words that are written backward.\n\n### Say something nice about the guard.\n\nUse the arrows to find a compliment for the guard.\n\n### Enter the Code!\n\nMatch the arrows as they appear.\n\n### Match the symbols!\n\nMove the cursor to the matching symbol and press space to confirm.\n\n### Remember all the mines!\n\nAt first, the cursor cannot be moved - remember the positions of the mines. \nNext, move the cursor and press space to mark the mines on the board.\n\n### Cut the wires\n\nFollow the instructions and press the numbers `1` through `9` to cut the appropriate\nwires.\n"},84747:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# RAM\n\nIn Bitburner, RAM determines how many [Scripts](scripts.md) can run on a [Server](servers.md).\n\nMultiplying the number of threads a [Script](scripts.md) uses multiplies its RAM cost, but also multiplies the effectiveness of several functions such as `ns.hack()`, `ns.grow()`, and `ns.weaken()`.\n\nYou can purchase more RAM for your home computer from tech vendors.\nYou can also use other computers as source of additional RAM.\n"},15467:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Reputation\n\nIn order to acquire [Augmentations](augmentations.md) from [Factions](factions.md), you need to earn their trust.\n\nThis can be done in a variety of ways, but the most common is offering your services to a [Faction](faction.md).\nAnother option is to give them intel from [Infiltrations](infiltration.md).\n\nWhen installing [Augmentations](augmentations.md), all your reputation gets converted to favor.\nFavor increases the rate at which reputation is gained with that faction.\n\nWith enough favor, donations are unlocked.\nDonations allow you to spend money to acquire reputation directly.\nWithout working for the faction.\nThis feature is particularily useful when a very large amount of reputation is needed for an augmentation.\n"},80575:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Scripts\n\nScripts are programs that can be used to automate the hacking process and almost every other part of the game.\nScripts must be written in JavaScript.\n\nIt is highly recommended that you have a basic background in programming to start writing scripts.\nYou by no means need to be an expert.\nAll you need is some familiarity with basic programming constructs like `for`/`while` loops, conditionals (`if`/`else`), `functions`, `variables`, etc.\nIf you'd like to learn a little bit about programming, see [this page](../programming/learn.md).\n\n## Script Arguments\n\nWhen running a script, you can choose to pass arguments to that script.\nThe script's logic can access and act on these arguments.\nThis allows for flexibility in your scripts.\n\n## Identifying a Script\n\nMany commands and functions act on an executing script (i.e. a script that is running).\nTherefore, there must be a way to specify which script you want those commands & functions to act on.\n\nThe best way to identify a script is by its PID (Process IDentifier).\nThis unique number is returned from `run`, `exec`, etc., and also shows in the output of `ps`.\n\nA secondary way to identify scripts is by name **and** arguments.\nHowever (by default) you can run a multiple copies of a script with the same arguments, so this does not necessarily **uniquely** identify a script.\nIn case of multiple matches, most functions will return an arbitrary one (typically the first one to be started).\nAn exception is `kill`, which will kill all the matching scripts.\n\nThe arguments must be an **exact** match.\nThis means that both the order and type of the arguments matter.\n\n## Multithreading scripts\n\nA script can be run with multiple threads.\nThis is also called multithreading.\nThe effect of multithreading is that every call to the `hack`, `grow`, and `weaken` functions will have their results multiplied by the number of threads.\nFor example, if a normal single-threaded script is able to hack $10,000, then running the same script with 5 threads would yield $50,000.\n\n(This is the **only** affect of running a script with multiple threads.\nScripts will not actually become multithreaded in the real-world sense.)\n\nWhen multithreading a script, the total [RAM](ram.md) cost can be calculated by simply multiplying the base [RAM](ram.md) cost of the script with the number of threads, where the base cost refers to the amount of [RAM](ram.md) required to run the script single-threaded.\nIn the [terminal](terminal.md), you can run the `mem` [Terminal](terminal.md) command to see how much [RAM](ram.md) a script requires with `n` threads:\n\n $ mem [scriptname] -t n\n\n## Working with Scripts in Terminal\n\nRunning a script requires [RAM](ram.md).\nThe more complex a script is, the more [RAM](ram.md) it requires to run.\nScripts can be run on any [server](server.md) you have root access to.\n\nHere are some [terminal](terminal.md) commands that are useful when working with scripts:\n\n**check [script] [args...]**\n\nPrints the logs of the script specified by the name and arguments to [Terminal](terminal.md).\nArguments should be separated by a space.\nRemember that scripts are uniquely identified by their arguments as well as their name.\nFor example, if you ran a script `foo.js` with the argument `foodnstuff` then in order to 'check' it you must also add the `foodnstuff` argument to the check command::\n\n $ check foo.js foodnstuff\n\n**free**\n\nShows the current server's [RAM](ram.md) usage and availability\n\n**kill [pid]** or **kill [script] [args...]**\n\nStops a script that is running with the specified PID, or script name and arguments.\nArguments should be separated by a space.\nRemember that scripts are identified by their arguments as well as their name.\nFor example, if you ran a script `foo.js` with the argument 1 and 2, then just typing `kill foo.js` will not work.\nYou have to use:\n\n $ kill foo.js 1 2\n\n**mem [script] [-t] [n]**\n\nCheck how much [RAM](ram.md) a script requires to run with n threads\n\n**nano [script]**\n\nCreate/Edit a script.\nThe name of the script must end with `.js`\n\n**ps**\n\nDisplays all scripts that are actively running on the current [server](servers.md)\n\n**rm [script]**\n\nDelete a script from the [server](servers.md). This is permanent\n\n**run [script] [-t] [n] [args...]**\n\nRun a script with n threads and the specified arguments.\nEach argument should be separated by a space.\nBoth the arguments and thread specification are optional.\nIf neither are specified, then the script will be run single-threaded with no arguments.\n\nExamples:\n\nRun `foo.js` single-threaded with no arguments::\n\n $ run foo.js\n\nRun `foo.js` with 10 threads and no arguments:\n\n $ run foo.js -t 10\n\nRun `foo.js` single-threaded with three arguments: [foodnstuff, sigma-cosmetics, 10]:\n\n $ run foo.js foodnstuff sigma-cosmetics 10\n\nRun `foo.js` with 50 threads and a single argument: [foodnstuff]:\n\n $ run foo.js -t 50 foodnstuff\n\n**tail [pid]** or **tail [script] [args...]**\n\nDisplays the logs of the script specified by the PID or name and arguments.\nNote that scripts are identified by their arguments as well as their name.\nFor example, if you ran a script `foo.js` with the argument `foodnstuff` then in order to `tail` it you must also add the `foodnstuff` argument to the tail command as so: `tail foo.js foodnstuff`\n\n**top**\n\nDisplays all active scripts and their [RAM](ram.md) usage\n\n## Notes about how Scripts work offline\n\nThe scripts that you write and execute are in JavaScript.\nFor this reason, it is not possible for these scripts to run while offline (when the game is closed).\nIt is important to note that for this reason, conditionals such as `if`/`else` statements and certain commands such as `purchaseHacknetNode()` or `nuke()` will not work while the game is offline.\n\nHowever, Scripts WILL continue to generate money and hacking exp for you while the game is offline.\nThis offline production is based off of the scripts' production while the game is online.\n\n`grow()` and `weaken()` are two functions that will also be applied when the game is offline, although at a slower rate compared to if the game was open.\nThis is done by having each script keep track of the rate at which the `grow()` and `weaken()` commands are called when the game is online.\nThese calculated rates are used to determine how many times these function calls would be made while the game is offline.\n\nAlso, note that because of the way the JavaScript engine works, whenever you reload or re-open the game all of the scripts that you are running will start running from the BEGINNING of the code.\nThe game does not keep track of where exactly the execution of a script is when it saves/loads.\n"},36814:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Servers\n\nIn this game, a server refers to a computer that can be connected to, accessed, and manipulated through the [Terminal](terminal.md).\nAll servers in the game are connected to each other to form a large, global network.\nTo learn about how to navigate this network and connect to other servers, see the [terminal](terminal.md) page.\n\n## Server Statistics\n\nEach server has its own statistics, such as [RAM](ram.md), required hacking level, and number of ports required to successfully `NUKE` it.\n\nPerhaps the most important property of a server to make note of is its [RAM](ram.md), which refers to how much memory is available on that machine. [RAM](ram.md) is important because it is required to run [Scripts](scripts.md).\nMore [RAM](ram.md) allows the user to run more powerful and complicated [scripts](scripts.md), as well as executing scripts with more threads.\n\nThe `free`, `scan-analyze`, and `analyze` [Terminal](terminal.md) commands can be used to check how much [RAM](ram.md) a server has.\n\nSome servers have some randomized statistics, such as [RAM](ram.md), max Money, or required hacking level.\nThese statistics are randomly generated from a range of values.\n\n## Identifying Servers\n\nA server is identified by its hostname.\nA hostname is a label assigned to a server.\nA hostname will usually give you a general idea of what the server is.\nFor example, the company Nova Medical might have a server with the hostname `nova-med`.\n\nHostnames are unique.\nThis means that if one server has the the hostname `some-server`, then no other server in the game can have that that hostname.\n\nThere are many `functions` and [terminal](terminal.md) commands in the game that will require you to target a specific server by hostname.\n\n## Player-owned Servers\n\nThe player starts with a single server: his/her home computer.\nThis server will have the hostname `home`.\nThe player's home computer is special for a variety of reasons:\n\n- The home computer's [RAM](ram.md) can be upgraded.\n This can be done by visiting certain locations in the [World](world.md).\n- The home computer persists through [Augmentation](augmentations.md) installations.\n This means that you will not lose any [RAM](ram.md) upgrades or [Scripts](scripts.md) on your home computer when you install [Augmentations](augmentations.md)\n (you will, however, lose programs and messages on your home computer).\n\nThe player can also purchase additional servers.\nThis can be done by visiting certain locations in the [World](world.md), or it can be done automatically through a script using the `purchaseServer` function.\nThe advantage of purchased servers is that, in terms of [RAM](ram.md), they are cheaper than upgrading your home computer.\nThe disadvantage is that your purchased servers are lost when you install [Augmentations](augmentations.md).\n\n## Hackable Servers\n\nMost servers that are not owned by the player can be [hacked](hacking.md) for money and exp.\n\nDifferent servers have different levels of security, but also offer different rewards when being hacked.\n\n## Server Connections\n\nThe servers are in a randomly organized tree-structure.\nThe distance from the home computer to each server is fixed, but the exact route to them is randomized when you install [augmentations](augmentations.md).\nIn general, the further away from home computer a server is the higher its statistics are.\n"},72702:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Stats\n\nThe player has several stats that can be increased in order to progress in the game.\n\n## Hacking\n\nRepresents the player's ability to code and hack.\n\nAffects:\n\n- Time it takes to hack a server\n- Time it takes to execute the `grow()` and `weaken()` function\n- Chance to successfully hack a server\n- Percent of money stolen when hacking a server\n- Success rate of certain [crimes](crimes.md)\n- Time it takes to create a program\n- [Faction](factions.md) [Reputation](reputation.md) gain when carrying out Hacking Contracts or Field Work\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\n\nGain experience by:\n\n- Manually hacking servers through [Terminal](terminal.md)\n- Executing `hack()`, `grow()`, or `weaken()` through a script\n- Committing certain [crimes](crimes.md)\n- Carrying out Hacking Contracts or doing Field work for [Factions](factions.md)\n- Working certain jobs at a [Company](companies.md)\n- Studying at a university\n\n## Strength\n\nRepresents the player's physical offensive power\n\nAffects:\n\n- Success rate of certain [crimes](crimes.md)\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\n\nGain experience by:\n\n- Committing certain [crimes](crimes.md)\n- Working out at a gym\n- Doing Security/Field Work for a [Faction](factions.md)\n- Working certain jobs at a [Company](companies.md)\n\n## Defense\n\nRepresents the player's ability to withstand damage\n\nAffects:\n\n- Success rate of certain [crimes](crimes.md)\n- The player's HP\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\n\nGain experience by:\n\n- Committing certain [crimes](crimes.md)\n- Working out at a gym\n- Doing Security/Field Work for a [Faction](factions.md)\n- Working certain jobs at a [Company](companies.md)\n\n## Dexterity\n\nRepresents the player's skill and adeptness in performing certain tasks\n\nAffects:\n\n- Success rate of certain [crimes](crimes.md)\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\n\nGain experience by:\n\n- Committing certain [crimes](crimes.md)\n- Working out at a gym\n- Doing Security/Field Work for a [Faction](factions.md)\n- Working certain jobs at a [Company](companies.md)\n\n## Agility\n\nRepresents the player's speed and ability to move\n\nAffects:\n\n- Success rate of certain [crimes](crimes.md)\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\n\nGain experience by:\n\n- Committing certain [crimes](crimes.md)\n- Working out at a gym\n- Doing Security/Field Work for a [Faction](factions.md)\n- Working certain jobs at a [Company](companies.md)\n\n## Charisma\n\nRepresents the player's social abilities\n\nAffects:\n\n- Success rate of certain [crimes](crimes.md)\n- [Faction](factions.md) [Reputation](reputation.md) gain for Field Work\n- [Company](companies.md) [Reputation](reputation.md) gain for most jobs\n\nGain experience by:\n\n- Committing certain [crimes](crimes.md)\n- Studying at a university\n- Working a relevant job at a [Company](companies.md)\n- Doing Field work for a [Faction](factions.md)\n"},26347:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Stock Market\n\nThe Stock Market refers to the World Stock Exchange (WSE), through which you can buy and sell stocks in order to make money.\n\nThe WSE can be found in the `City` tab, and is accessible in every city.\n\n## Fundamentals\n\nThe Stock Market is not as simple as \"buy at price X and sell at price Y\".\nThe following are several fundamental concepts you need to understand about the stock market.\n\nFor those that have experience with finance/trading/investing, please be aware that the game's stock market does not function exactly like it does in the real world.\nSo these concepts below should seem similar, but won't be exactly the same.\n\n## Positions: Long vs Short\n\nWhen making a transaction on the stock market, there are two types of positions: Long and Short.\nA Long position is the typical scenario where you buy a stock and earn a profit if the price of that stock increases.\nMeanwhile, a Short position is the exact opposite.\nIn a Short position, you purchase shares of a stock and earn a profit if the price of that stock decreases.\nThis is also called 'shorting' a stock.\n\nShorting stocks is not available immediately, and must be unlocked later in the game.\n\n## Forecast & Second-Order Forecast\n\nA stock's forecast is its likelihood of increasing or decreasing in value.\nThe forecast is typically represented by its probability of increasing in either a decimal or percentage form.\nFor example, a forecast of `70%` means the stock has a `70%` chance of increasing and a `30%` chance of decreasing.\n\nA stock's second-order forecast is the target value that its forecast trends towards.\nFor example, if a stock has a forecast of `60%` and a second-order forecast of `70%`, then the stock's forecast should slowly trend towards `70%` over time.\nHowever, this is determined by RNG so there is a chance that it may never reach `70%`.\n\nBoth the forecast and the second-order forecast change over time.\n\nA stock's forecast can be viewed after purchasing Four Sigma (4S) Market Data access.\nThis lets you see the forecast info on the Stock Market UI.\nIf you also purchase access to the 4S Market Data TIX API, then you can view a stock's forecast using the `getStockForecast` function.\n\nA stock's second-order forecast is always hidden.\n\n## Spread (Bid Price & Ask Price)\n\nThe **bid price** is the maximum price at which someone will buy a stock on the stock market.\n\nThe **ask price** is the minimum price that a seller is willing to receive for a stock on the stock market\n\nThe ask price will always be higher than the bid price (This is because if a seller is willing to receive less than the bid price, that transaction is guaranteed to happen).\nThe difference between the bid and ask price is known as the **spread**.\nA stock's \"price\" will be the average of the bid and ask price.\n\nThe bid and ask price are important because these are the prices at which a transaction actually occurs.\nIf you purchase a stock in the long position, the cost of your purchase depends on that stock's ask price.\nIf you then try to sell that stock (still in the long position), the price at which you sell is the stock's bid price.\nNote that this is reversed for a short position.\nPurchasing a stock in the short position will occur at the stock's bid price, and selling a stock in the short position will occur at the stock's ask price.\n\n## Transactions Influencing Stock Forecast\n\nBuying or selling a large number of shares of a stock will influence that stock's forecast & second-order forecast.\nThe forecast is the likelihood that the stock will increase or decrease in price.\nThe magnitude of this effect depends on the number of shares being transacted.\nMore shares will have a bigger effect.\n\nThe effect that transactions have on a stock's second-order forecast is significantly smaller than the effect on its forecast.\n\n## Order Types\n\nThere are three different types of orders you can make to buy or sell stocks on the exchange:\nMarket Order, Limit Order, and Stop Order.\n\nLimit Orders and Stop Orders are not available immediately, and must be unlocked later in the game.\n\nWhen you place a Market Order to buy or sell a stock, the order executes immediately at whatever the current price of the stock is.\nFor example if you choose to short a stock with 5000 shares using a Market Order, you immediately purchase those 5000 shares in a Short position at whatever the current market price is for that stock.\n\nA Limit Order is an order that only executes under certain conditions.\nA Limit Order is used to buy or sell a stock at a specified price or better.\nFor example, lets say you purchased a Long position of 100 shares of some stock at a price of $10 per share.\nYou can place a Limit Order to sell those 100 shares at $50 or better.\nThe Limit Order will execute when the price of the stock reaches a value of $50 or higher.\n\nA Stop Order is the opposite of a Limit Order.\nIt is used to buy or sell a stock at a specified price (before the price gets 'worse').\nFor example, lets say you purchased a Short position of 100 shares of some stock at a price of $100 per share.\nThe current price of the stock is $80 (a profit of $20 per share).\nYou can place a Stop Order to sell the Short position if the stock's price reaches $90 or higher.\nThis can be used to lock in your profits and limit any losses.\n\nHere is a summary of how each order works and when they execute:\n\n**In a LONG Position:**\n\nA Limit Order to buy will execute if the stock's price <= order's price\n\nA Limit Order to sell will execute if the stock's price >= order's price\n\nA Stop Order to buy will execute if the stock's price >= order's price\n\nA Stop Order to sell will execute if the stock's price <= order's price\n\n**In a SHORT Position:**\n\nA Limit Order to buy will execute if the stock's price >= order's price\n\nA Limit Order to sell will execute if the stock's price <= order's price\n\nA Stop Order to buy will execute if the stock's price <= order's price\n\nA Stop Order to sell will execute if the stock's price >= order's price.\n\n## Player Actions Influencing Stocks\n\nIt is possible for your actions elsewhere in the game to influence the stock market.\n\n### Hacking\n\nIf a server has a corresponding stock (e.g. _foodnstuff_ server -> FoodNStuff stock), then hacking that server can decrease the stock's second-order forecast.\nThis causes the corresponding stock's forecast to trend downwards in value over time.\n\nThis effect only occurs if you set the stock option to true when calling the `hack` function.\nThe chance that hacking a server will cause this effect is based on what percentage of the server's total money you steal.\n\nA single hack will have a minor effect, but continuously hacking a server for lots of money over time will have a noticeable effect in making the stock's forecast trend downwards.\n\n### Growing\n\nIf a server has a corresponding stock (e.g. `foodnstuff` server -> FoodNStuff stock), then growing that server's money can increase the stock's second-order forecast.\nThis causes the corresponding stock's forecast to trend upwards in value over time.\n\nThis effect only occurs if you set the `stock` option to true when calling the `grow` function.\nThe chance that growing a server will cause this effect is based on what percentage of the server's total money to add to it.\n\nA single grow operation will have a minor effect, but continuously growing a server for lots of money over time will have a noticeable effect in making the stock's forecast trend upwards.\n\n### Working for a Company\n\nIf a [Company](companies.md) has a corresponding stock, then working for that [Company](companies.md) will increase the corresponding stock's second-order forecast.\nThis will cause the stock's forecast to (slowly) trend upwards in value over time.\n\nThe potency of this effect is based on how effective you are when you work (i.e. it's based on your stats and multipliers).\n\n## Automating the Stock Market\n\nYou can write scripts to perform automatic and algorithmic trading on the Stock Market.\nSee [TIX API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md) for more details.\n\n## Under the Hood\n\nStock prices are updated every ~6 seconds.\n\nWhether a stock's price moves up or down is random.\nHowever, stocks have properties that can influence the way their price moves.\nThese properties are hidden, although some of them can be made visible by purchasing the Four Sigma (4S) Market Data upgrade.\nSome examples of these properties are:\n\n- Volatility\n- Likelihood of increasing or decreasing (i.e. the stock's forecast)\n- Likelihood of forecast increasing or decreasing (i.e. the stock's second-order forecast)\n- How easily a stock's price/forecast is influenced by transactions\n- Spread percentage\n- Maximum price (not a real maximum, more of a \"soft cap\")\n\nEach stock has its own unique values for these properties.\n\n## Offline Progression\n\nThe Stock Market does not change or process anything while the game has closed.\nHowever, it does accumulate time when offline.\nThis accumulated time allows the stock market to run `50%` faster when the game is opened again.\nThis means that stock prices will update every ~4 seconds instead of 6.\n"},36565:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='# Terminal\n\nThe Terminal is a console emulator program that lets you interface with all of the [Servers](servers.md) in the game.\nThe Terminal can be accessed by clicking the `Terminal` tab on the navigation menu on the left-hand side of the game (you may need to expand the \'Hacking\' header in order to see the `Terminal` tab).\nAlternatively, the shortcut Alt + t can be used to open the Terminal.\n\n## Filesystem (Directories)\n\nThe Terminal contains a **very** basic filesystem that allows you to store and organize your files into different directories.\nNote that this is **not** a true filesystem implementation.\nInstead, it is done almost entirely using string manipulation.\nFor this reason, many of the nice & useful features you\'d find in a real filesystem do not exist.\n\nHere are the Terminal commands you\'ll commonly use when dealing with the filesystem.\n\n- `ls` (view all files in the current folder)\n- `cd` (change folder)\n- `mv` (rename a file)\n\n## Directories\n\nIn order to create a directory, simply name a file using a full absolute Linux-style path:\n\n /scripts/myScript.js\n\nThis will automatically create a "directory" called `scripts`.\nThis will also work for subdirectories:\n\n /scripts/hacking/helpers/myHelperScripts.js\n\nFiles in the root directory do not need to begin with a forward slash:\n\n thisIsAFileInTheRootDirectory.txt\n\nNote that there is no way to manually create or remove directories.\nThe creation and deletion of directories is automatically handled as you name/rename/delete files.\n\n## Absolute vs Relative Paths\n\nMany Terminal commands accept both absolute and relative paths for specifying a file.\n\nAn absolute path specifies the location of the file from the root directory (/).\nAny path that begins with the forward slash is an absolute path:\n\n $ nano /scripts/myScript.js\n $ cat /serverList.txt\n\nA relative path specifies the location of the file relative to the current working directory.\nAny path that does **not** begin with a forward slash is a relative path.\nNote that the Linux-style dot symbols will work for relative paths:\n\n . (a single dot) - represents the current directory\n .. (two dots) - represents the parent directory\n\n $ cd ..\n $ nano ../scripts/myScript.js\n $ nano ../../helper.js\n\n## Scripts\n\nNote that in order to reference a file, `functions` require the **full** absolute file path.\nFor example\n\n ns.run("/scripts/hacking/helpers.myHelperScripts.js");\n ns.rm("/logs/myHackingLogs.txt");\n ns.rm("thisIsAFileInTheRootDirectory.txt");\n\nA full file path **must** begin with a forward slash (/) if that file is not in the root directory.\n\n## Missing Features\n\nThese features that are typically in Linux filesystems have not yet been added to the game:\n\n- Tab autocompletion does not work with relative paths\n- `mv` only accepts full filepaths for the destination argument.\n It does not accept directories\n\n## Argument Parsing\n\nWhen evaluating a terminal command, arguments are initially parsed based on whitespace (usually spaces).\nEach whitespace character signifies the end of an argument, and potentially the start of new one.\nFor most terminal commands, this is all you need to know.\n\nWhen running scripts, however, it is important to know in more detail how arguments are parsed.\nThere are two main points:\n\n- Quotation marks can be used to wrap a single argument and force it to be parsed as a string.\n Any whitespace inside the quotation marks will not cause a new argument to be parsed.\n- Anything that can represent a number is automatically cast to a number, unless it\'s surrounded by quotation marks.\n\nHere\'s an example to show how these rules work.\nConsider the following script `argType.js`:\n\n export async function main(ns) {\n ns.tprint("Number of args: " + ns.args.length);\n for (var i = 0; i < ns.args.length; ++i) {\n ns.tprint(typeof ns.args[i]);\n }\n }\n\nThen if we run the following terminal command:\n\n $ run argType.js 123 1e3 "5" "this is a single argument"\n\nWe\'ll see the following in the Terminal:\n\n Running script with 1 thread(s), pid 1 and args: [123, 1000, "5", "this is a single argument"].\n argType.js: Number of args: 4\n argType.js: number\n argType.js: number\n argType.js: string\n argType.js: string\n\n## Chaining Commands\n\nYou can run multiple Terminal commands at once by separating each command\nwith a semicolon (;).\n\nExample:\n\n $ run foo.js; tail foo.js\n\nThis does **not** wait for commands with a delay to finish executing, so it generally doesn\'t work with things like `hack`, `wget`, etc.\n'},97165:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# World\n\nIn Bitburner, the world consists of six different cities:\n\n- Sector-12 (this is where you start out)\n- Aevum\n- Ishima\n- New Tokyo\n- Chongqing\n- Volhaven\n\nEach city has its own map and [Factions](factions.md).\nEach city also offers different services such as gyms, universities, hardware stores, and places of work.\n"},74135:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Changelog\n\n## v2.4.1 Update (8/26/23)\n\n### FEATURE ADDITIONS:\n\n- Added \"Enable terminal history search with arrow keys\" option in Misc options category, inspired by similar functionality in shells like zsh. (@ficocelliguy)\n\n### BUGFIX:\n\n- Fixed a bug where buying NeuroFlux Governor would buy one less level than expected (@zerbosh)\n- Fixed an issue that could cause the Coding Contract UI to become unreachable (@myCatsName)\n- Infiltration: Knowledge of Apollo aug no longer highlights the incorrect wires (@Snarling)\n\n### CODEBASE / DOCS / MISC:\n\n- Added a new theme \"zerenity\" (@Zelow79)\n- Reorganize game constants (@zerbosh)\n- Reorganize ingame documentation folder structure, simplify documentation bundling (@Snarling)\n- IP Address coding contract accepts single-quoted entries (@myCatsName)\n- Updated an outdated message on ns.killall logs (@myCatsName)\n- Updated documentation for ns.share and ns.getSharePower (@myCatsName)\n- Removed functions (like ns.getServerRam) are no longer shown when enumerating ns entries. (@Snarling)\n- Removed more references to ReadTheDocs that remained after 2.4.0 (@hydroflame)\n- Fixed some typos/spacing (@myCatsName)\n- Fixed an issue with incorrect React keys in active scripts page (@zornlemma)\n\n### API CHANGES (NON-SPOILER)\n\n- Added ns.stock.getConstants (@Snarling)\n- Added ownedAugs and ownedSF properties to return data of ns.getResetInfo (@Snarling)\n\n### API CHANGES (SPOILERS):\n\n- Added ns.singularity.getAugmentationFactions to provide a list of factions that have a given augmentation (@myCatsName)\n- ns.corporation.getConstants now has a ram cost of 0 (@Snarling)\n\n### OTHER CHANGES (SPOILERS):\n\n- Successes for next level is now accurate in the UI for Bladeburner operations (@myCatsName)\n- ns.sleeve.setToFactionWork no longer allows working for factions the player has not joined (@Snarling)\n\n## v2.4.0 - Death to readthedocs\n\nNETSCRIPT:\n\n- Added ns.getFunctionRamCost\n- Added run and install identifier\n\nCORP:\n\n- Add product investment info to API\n- Prevent issues with invalid materials in warehouse\n- Update exportMaterial amount to `number | string`\n- Validate city with office for starting product development\n\nDOCUMENTATION:\n\n- readthedoc.bitburner.whatever has been fully deprecated.\n That documentation is now available in-game. This will make\n documentation easier to maintain and easier to keep locked\n with the specific version of the game you're playing.\n It's also in `.md`, which is more common than `.rst`\n- Add `printRaw` and `tprintRaw` docs\n- Better docs for `ascension` result\n- Complete the spec for hamming codes enhancement\n- Fix example code for `scp`\n\nMISC.\n\n- Fixed a bug where RAM calculation would be innacurate for near copy of scripts on different servers\n- Fix mislead error message about ram miscalculation when script contains syntax errors.\n- Fix bug in calculating faction donation amount\n- Fix bug where Sleeve would have difficulty doing certain University activities.\n- Fix regression for crime in progress\n- Prevent log scrolling on Active Script window drag\n- show all skills in import save comparison tool\n- Fix extremely minor calculation error where money drained after hack was being floor()\n- Fix ram evaluation to include more edge-cases\n- Fix potential double-free in atExit()\n\nCODEBASE:\n\n- Work on Enum Helper + Reorganise\n- enforce eslint react checks\n- corp code style improvement\n- Added a lot of typesafety\n\n## v2.3.1 - Bugfixes 7 June 2023\n\nNETSCRIPT:\n\n- Added ns.setTitle, which sets the titlebar of a script's tail window (@d0sboots)\n- Added ns.getFunctionRamCost, which gets the ramcost of a function (@G4mingJon4s)\n- ns.ls results will filter as if the filenames have a leading slash (@Snarling)\n\nGENERAL / MISC:\n\n- Changed tail window buttons into icon buttons, allow setting custom title, and tail window bugfixes. (@d0sboots)\n- Terminal no longer scrolls to the bottom constantly while an action is being performed (@bezrodnov)\n- Added a close button to modals (@bezrodnov)\n- Fixed several issues with script editor tabs (@bezrodnov)\n- scp terminal command can copy multiple files at once, like help text indicates (@Snarling)\n- Root directory is no longer displayed as ~ in the terminal prompt, it is displayed as / (@Snarling)\n- cd with no arguments will change to the root directory (@Snarling)\n- Documentation updates (various)\n- Nerf noodle bar\n\nHOTFIXES (these were already backported to 2.3.0 before 2.3.1 release):\n\n- Several important fixes for savegame migration issues from older version (@d0sboots)\n- Prevent scripts from loading during intial migration to 2.3.0 save format, to prevent a crash that could occur. (@Snarling)\n- Fix scp logging (hostname was being logged incorrectly in multiple places and showing as [Object object]) (@Snarling)\n- Update terminal parsing logic so that the old syntax for alias works again. (@Snarling)\n- Fix clickable script links from ls command not working outside root directory (@Snarling)\n- Fix an issue with Find All Valid Math Expressions not accepting empty array when that was the solution. (@Snarling)\n- Fix an issue with scan-analyze display when the player had AutoLink.exe (@Snarling)\n- Reverted undocumented change that program filenames were case sensitive for ns.fileExists. They are case insensitive again. (@Snarling)\n- An issue from pre-2.3 could cause scripts to have the wrong \"server\" property. This caused issues in 2.3, and a fix now repairs any scripts with a mismatched server property. (@Snarling)\n- More fixes to help old savegames load correctly (@Snarling)\n- Servers can no longer have infinite time-to-hack. (@Snarling)\n\nSPOILER SECTIONS:\n\nSF2:\n\n- Overall gang respect gain rate now reads accurately, instead of showing ~10x. (@Snarling)\n\nSF3:\n\n- Added \"maxProducts\" property to ns.corporation.getDivision return value (@kateract)\n- Fixed an issue with sell price parsing for materials (@zerbosh)\n- Fixed display of market price for materials and products (@zerbosh)\n- Fixes for Corp import/export issues, such as -IPROD and Smart Supply not working right (@d0sboots)\n- Improvements to the max-affordable-upgrades calculation (@bezrodnov)\n- Perform additional validation when setting up an export. Exports are now unique per targeted division+city. (@Snarling)\n- ns.corporation.cancelExport no longer requires the exported amount (@Snarling)\n- Fix NaN bug that could impact Robot material in Robotics division (@Snarling, @kateract)\n- Can no longer commence product development in a city with no office (which would immediately error out the game loop) (@Snarling)\n- (Hotfix) Fix issue that could lead to SF3 research desync. (@Snarling)\n- (Hotfix) Fix SF3 \"Spring Water\" industry (@Snarling)\n\nSF4:\n\n- Fixed an issue that could cause singularity run-after-reset callback scripts to not launch correctly (@Snarling)\n\n## v2.3.0 - SF3 rework and performance improvements (25 May 2023)\n\nBREAKING CHANGES: These changes may require changes to your scripts.\n\n- Major changes to the SF3 mechanic. See the related section below for more detailed info on the changes.\n- The same script filename can now be ran multiple times with the same args. If running a script from another script (ns.run/ns.exec/etc), this limitation can be re-imposed with the preventDuplicates RunOption (see general section for info on RunOptions).\n- The same .js script will now be the same js module whether the script was ran directly or used as an import. This means top-level variables (variables defined outside of any function) are shared across all instances of the script.\n- The js module for a script will also be reused by any script that has the exact same compiled text, even if that script is on another server or has a different filename. This can lead to unexpected results when using top-level variables.\n- Some properties removed from ns.getPlayer and added to a separate function ns.getResetInfo. These are still accessible from getPlayer but will produce a warning message the first time they are accessed per game session.\n- hackAnalyzeThreads now returns -1, instead of 0, when no money can be hacked from the targeted server.\n- ns.iKnowWhatImDoing has been removed, replaced by ns.tprintRaw for printing custom react content to the terminal (limited support).\n\nPERFORMANCE:\n\n- Minimize impact of unavoidable memory leak when modules are created, by reusing modules as much as possible (@d0sboots)\n- Internal data structure changes (@d0sboots, @Snarling)\n- Fix memory leak when initializing large number of netscript ports (@Snarling)\n- Improve performance while on the Active Scripts page if many scripts are starting/ending. (@d0sboots)\n\nNETSCRIPT GENERAL:\n\n- Remove requirement for script args to be unique. This was also related to performance improvements. (@d0sboots)\n- ns.hackAnalyzeThreads no longer indicates infinity any time a single thread would hack less than $1 (@Snarling)\n- ns.renamePurchasedServer no longer crashes if player is connected to the server being renamed (@Snarling)\n- ns.hackAnalyzeThreads now return -1 (instead of 0) if no money can be hacked from the targeted server. (@d0sboots)\n- Fix a possible infinite atExit loop if a script killed itself. (@Snarling)\n- Static timestamps of last resets can be obtained via ns.getResetInfo, replacing playtimeSinceLastX from ns.getPlayer (@G4mingJon4s)\n- Improved support for printing react content directly to the terminal (ns.tprintRaw) or to a script log (ns.printRaw).\n- Added RunOptions, which can optionally replace the \"threads\" argument for ns.run/ns.exec/ns.spawn. (@d0sboots)\n - RunOptions.threads: Provide a thread count (since RunOptions can replace the threads argument)\n - RunOptions.temporary: Prevents the script execution from being included in the save file.\n - RunOptions.ramOverride: Provide a static ram cost for the script to override what is calculated by the game. Dynamic ram checking is still enforced.\n - RunOptions.preventDuplicates: Fail to launch the script if the args are identical to a script already running.\n\nGENERAL / MISC:\n\n- Fixed a bug that could cause the overview skill bars to become desynced (@d0sboots)\n- There is now an autoexec setting to specify a script on home to automatically run when loading the game. (@d0sboots)\n- Monaco script editor updated to a newer version and has more config options available now. (@Snarling)\n- Improve Electron's handling of external links (@Snarling)\n- Improved support for ANSI color codes (@d0sboots)\n- Improved consistency of file paths. Correct names for files no longer start with a / even if they are in a directory. (@Snarling)\n- All Math Expressions contract no longer accepts wrong answers (@Snarling)\n- Faction invites now trigger immediately when backdooring a server. (@Snarling)\n- Fixed issue where duplicate programs could be created. (@Minzenkatze)\n- UI improvements to create program page (@Minzenkatze)\n- Fix inconsistency in skill xp to skill level conversion (@hydroflame)\n- Updated blood donation counter to reflect number of confirmed blood donations. (@hydroflame)\n- Minor improvements to ram calculation process (@Snarling)\n- Improved terminal arguments detection (@Snarling)\n- Improved display for ls terminal command. (@Snarling)\n- Added more internal tests and improved test quality (@d0sboots)\n- Various codebase improvements (@Snarling, @d0sboots)\n- Documentation improvements (Many contributors)\n- Nerf noodle bar\n\nSPOILER SECTIONS:\n\nSF2:\n\n- Corrected the \"Next equipment unlock\" text for member upgrades. (@LiamGeorge1999)\n\nSF3:\n\n- Many Corporation API changes, due to functionality changes and due to property name changes. See documentation for correct usage.\n- Can now have multiple divisions within the same industry. (@Mughur)\n- Can now sell a division or sell the entire corporation. (@Mughur)\n- Product quality now depends on material quality (@Mughur)\n- Product price can be set separately per-city (@Mughur)\n- Exports can be set relative to inventory or production (@Mughur)\n- ns.corporation.getProduct is city-specific (@Mughur)\n- Bulk purchasing is available from the start (@Mughur)\n- Can buy multiple upgrades at a time, similar to hacknet node upgrades (@Mughur)\n- Various UI changes (@Mughur)\n- Removed happiness from employees (@Mughur)\n- Coffee renamed to tea (@Mughur)\n- Training position renamed to intern (@Mughur)\n- More options for SmartSupply (@Mughur)\n- Advertising nerf (@Mughur)\n- Nerfed investors and reduced effectiveness of \"fraud\" (@Mughur)\n- Fixed React errors, renamed most corp object properties (@Snarling)\n- Various other changes (@Mughur, @Snarling)\n\nSF4:\n\n- Faction invites trigger immediately when running ns.singularity.getFactionInvitations (@Snarling)\n- Added ns.singularity.getCompanyPositionInfo (@jeek)\n\nSF6:\n\n- Failing a contract or operation now consumes the action (@Zelow79)\n\nSF9:\n\n- The SF9.3 bonus is also given to the player when inside of BN9. (@Zelow79)\n- Adjusted the SF1 bonus for hacknet costs (slight nerf), and raised the SF9 bonus to compensate. (@d0sboots)\n- Added option to purchase company favor using hashes. (@jeek)\n\nSF10:\n\n- Sleeve shock recovery now scales with intelligence. (@Tyasuh)\n- Sleeve kills during crimes count towards numPeopleKilled (@Zelow79)\n- Fix a misspelled moneySourceTracker call for sleeves (@zerbosh)\n- ns.sleeve.getTask return value now includes cyclesNeeded where applicable (@Snarling)\n- Internal type refactoring on Sleeve Work. (@Snarling)\n\nSF12:\n\n- Fix inconsistency in how BN12 multipliers were calculated\n\nSF13:\n\n- Improve performance of Stanek's gift update cycle, and rework (buff) bonus time handling. (@Snarling)\n\n## v2.2.2 - 21 Feb 2023\n\nPLANNED 2.3 BREAKING CHANGES:\n\n- 2.3 will include a large planned rework to corporation. This may cause api breaks for any corporation scripts, and there will be large changes in how the corporation mechanic functions.\n\nNETSCRIPT API:\n\n- Added ns.formatNumber, ns.formatRam, and ns.formatPercent, which allow formatting these types of numbers the same way the game does (@Snarling, See UI section).\n- Deprecated ns.nFormat. Likely to be removed in 2.3. Now just directly wraps numeral.format (@Snarling)\n- EXPERIMENTAL CHANGE (may be reverted next patch): BasicHGWOptions now allows specifying a number of additionalMsec. This should allow easier and more reliable coordination\n of completion times for hack, grow, and weaken. Since this is an experimental change, be prepared for a possible API break next patch if you use this functionality. (@d0sboots)\n\n- Corporation API:\n\n - Fix bugs with ns.corporation.setAutoJobAssignment. (@zerbosh and @croy)\n\n- Formulas API:\n\n - Added ns.formulas.hacking.growThreads function (@d0sboots)\n\n- Sleeve API:\n\n - ns.sleeve.getTask now also includes cyclesWorked for the task types where this applies. (@Zelow79)\n - Added ns.sleeve.setToIdle function (@Zelow79)\n\n- Unsupported API:\n\n - Added ns.printRaw - allows printing custom React content to script logs. Use at your own risk, misuse is very likely to cause a crash. (@d0sboots)\n\nELECTRON (STEAM) VERSION:\n\n- Fix security issue where player scripts were allowed to access any part of the player's filesystem. Now access is limited to the game's 'dist' folder. (@Snarling)\n\nSCRIPTS:\n\n- Fix an issue where multiple copies of the same script could be launched with same args/same server (@Mughur)\n- Followup changes to API wrapping from 2.2.1 changes. (@d0sboots)\n\nUI:\n\n- Add new number formatting code to replace internal use of unmaintained package numeral.js. Added several Numeric Display options. (@Snarling)\n- Removed ingame donation section. (@hydroflame)\n- Improve some bladeburner number formatting (@Zelow79)\n- Added IronMan theme (@MattiYT)\n- Factions that have not been joined yet will show how many unowned augments they have available. (@Zelow79)\n- Added more features to dev menu (@Zelow79 and @Snarling)\n\nCORPORATION:\n\n- Reverted previous change to employee needs. Now they will trend up on their own again. (@d0sboots)\n- Improvements to how Market TA II works (@d0sboots)\n- ns.corporation.getOffice return value now includes a totalExperience property. (@Snarling)\n\nHACKNET:\n\n- Hacknet servers are now named hacknet-server-# instead of hacknet-node-#. (@Tyasuh)\n- Fix bug related to renaming hacknet servers (@Mughur)\n\nGRAFTING:\n\n- Bladeburner augs can be grafted if player is in Bladeburner faction (@Tyasuh)\n\nDOCUMENTATION\n\n- Many documentation updates (@Mughur, @d0sboots, @Snarling, @teauxfu).\n- Official non-markdown docs are at https://github.com/bitburner-official/bitburner-src/tree/dev/src/Documentation/doc\n- Official dev version markdown docs are at https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md\n- Official stable version markdown docs are at https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.ns.md\n- Dev version documentation is now kept up to date as changes are made. (@Snarling)\n\nCODEBASE:\n\n- Updated many dependencies (@d0sboots)\n- Updated lots of the build processes and GitHub workflows. (@Snarling)\n- Internal refactoring of how BitNode multipliers are stored (@d0sboots)\n- Added some extra helper function (useRerender hook, positiveInteger ns argument validator). (@Snarling)\n\nMISC:\n\n- Nerf noodle bar\n\n## v2.2.1 Hotfixes\n\nHotfix / bugfix:\n\n- (@d0sboots) Implemented a new API wrapping solution that prevents the need for binding functions to ns when placing them in a new variable, but maintains and perhaps improves upon the performance gains from the previous v2.2.0 changes.\n- Fixed some issues with savegames failing to load, or causing the main engine loop to stall after load.\n- Fixed an issue where .script files were not receiving the correct args when ran\n- Fixed an issue with sleeve HP calculation\n- Possible fix for MathJax \"Typesetting Failed\" errors\n- There was an issue with Corporations decaying their employees to 0 stats, even though the minimum was supposed to be 5. Moved the variable storing the min decay value to corporation constants, and raised it to 10.\n- Regenerated documentation at https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md due to corporation changes related to min decay stats.\n- Faction XP was unintentionally providing 20x the experience gain as it did prior to v2.0. This caused faction work to exceed gym/university as the optimal way to gain experience. Values have been reduced to only about 2x what they were prior to v2.0, and they are no longer better than gym/university.\n- Fixed an issue where the overview skill bars could be displayed inaccurately based on player multipliers.\n\n## v2.2.0 - Jan 2 2023 Development Reboot\n\nDev notes\n\n- The previous main developer, hydroflame, is stepping back from this project for the foreseeable future. To facilitate this, we've moved the repo to a new location at https://github.com/bitburner-official/bitburner-src.\n- Sorry for the large number of API breaks in this version. To ease the pain here, attempting to use any of the removed functions will provide an error guiding you to the new replacement function to use instead.\n\nBREAKING API CHANGES:\n\n- No longer applicable as of v2.2.1! (ns2 only) ns functions use the 'this' value from ns: if you move the function to its own variable off of ns, it needs to be bound to ns. The internal changes that make this necessary led to very large performance gains for running many scripts at once. e.g.:\n\n const tprint1 = ns.tprint; // This doesn't work and will error out when calling tprint1();\n\n const tprint = ns.tprint.bind(ns); // This works because the 'this' value is preserved.\n\n- ns.getPlayer no longer provides properties tor, inBladeburner, or hasCorporation. This information can be looked up using standlone functions: ns.hasTorRouter(), ns.bladeburner.inBladeburner(), ns.corporation.hasCorporation().\n- Removed many functions, with replacement ways to get the same info.\n\n - getServerRam: use getServerMaxRam and getServerUsedRam instead.\n - corporation.assignJob: use setAutoJobAssignment instead.\n - corporation.getEmployee: No longer available (employees are not individual objects).\n - corporation.getExpandCityCost: use ns.corporation.getConstants().officeInitialCost\n - corporation.getExpandIndustryCost: use getIndustryData instead.\n - corporation.getIndustryTypes: use ns.corporation.getConstants().industryNames\n - corporation.getMaterialNames: use ns.corporation.getConstants().materialNames\n - corporation.getPurchaseWarehouseCost: use ns.corporation.getConstants().warehouseInitialCost\n - corporation.getResearchNames: use ns.corporation.getConstants().researchNames\n - corporation.getUnlockables: use ns.corporation.getConstants().unlockNames\n - corporation.getUpgradeNames: use ns.corporation.getConstants().upgradeNames\n - formulas.work.classGains: split into universityGains and gymGains\n - singularity.getAugmentationCost: use getAugmentationPrice and getAugmentationRepReq instead\n - sleeve.getSleeveStats: use getSleeve instead\n - sleeve.getInformation: use getSleeve instead\n\n- An error dialog will inform the player of the above API changes if the player tries to use one of the removed functions above.\n- enums.toast was renamed ToastVariant to provide consistency with internal code.\n\n- codingcontract.attempt always returns a string (empty string for a failed attempt). This may break player code if a direct boolean comparison (e.g. 'attemptResult === true') was being made. The string can be used directly as the conditional, because empty string evaluates to false as a boolean.\n\n- corporation.getCorporation().divisions now returns an array of division names, instead of division objects. Use corporation.getDivision(name) to get the division info object.\n\nDEVELOPMENT\n\n- Development repo moved to https://github.com/bitburner-official/bitburner-src\n- Dev version available on web at https://bitburner-official.github.io/bitburner-src/\n- Development is active again for non-bugfix.\n- A bunch of fixes, setup, and assistance related to moving to a new repo (@hydroflame)\n\nTUTORIAL\n\n- Removed NS1/NS2 selection. Tutorial now only references .js files (NS1 is essentially deprecated) (@Mughur)\n- Fix Ram Text (by @jaculler)\n\nNETSCRIPT\n\n- Base NS API:\n - More enums and more types are exposed to the player instead of \"magic strings\", as type documentation and on ns.enums.\n - Added ns.pid property to access a script's PID without a function call. (@jeek)\n - Much faster API wrapping on script launch. (@d0sboots) To support this, ns functions need to keep their \"this\" value from their parent object.\n - tFormat: Fix display for negative time\n - ns.getPlayer: removed tor, inBladeburner, and hasCorporation properties\n - Added ns.hasTorRouter() function.\n- Coding Contract API\n - ns.codingcontract.attempt always returns a string. (@Snarling)\n- Corporation API\n - Removed ns.corporation.getEmployee and ns.corporation.assignJob, due to employees no longer being objects.\n - Added ns.corporation.hasCorporation()\n - Reworked how ram costs are applied for corporation.\n- Formulas API\n - ns.formulas.work.classGains removed, replaced with ns.formulas.work.universityGains and ns.formulas.work.gymGains (@Snarling)\n - Add ns.formulas.work.companyGains function (@AlexeyKozhemiakin)\n- Ports\n - added portHandle.nextWrite() (@LJNeon)\n - Make ns.writePort synchronous (@Snarling)\n- Sleeve API\n - ns.sleeve.getSleeve added. getPlayer and getSleeve can both be used for formulas. (@Snarling)\n - getSleeve also includes storedCycles (i.e. bonusTime) (@zerbosh)\n- Stock API\n - ns.stock.getOrganization added for getting org from stock symbol (@SamuraiNinjaGuy)\n\nSCRIPTS\n\n- Fixed bug where zombie scripts could be created after a soft reset (@Snarling)\n- Scripts now have a maximum ram cost of 1024GB per thread.\n\nSCRIPT LOGS\n\n- Add ctrl-a support for selecting all text in tail window (@Snarling)\n\nCORPORATION\n\n- Remove corp employees as objects (by @Kelenius)\n- API access is provided automatically if the player is in BN3. (@zerbosh)\n- Happiness/Energy/Morale trend down even for productive corps (by @Snarling)\n- Typo fixes in modals to sell materials and products (by @quacksouls)\n- Reworked MP formula validation to prevent possible save corruption on invalid entry (by @Snarling)\n- Internal reorganization of Industry data (by @Snarling)\n- Added check to material buy amount (by @G4mingJon4s)\n- Check there is room to make a new product before opening popup. (by @G4mingJon4s)\n- Fix typos in research descriptions (by @quacksouls)\n\nSLEEVE\n\n- Fixed inconsistencies in how sleeve work rewards are handled. (by @Snarling)\n- Fix bug that prevented selecting some crimes from UI. (by @Snarling)\n- Internally shock starts at 100 and lowers to 0. Previously this was backwards.\n\nSTOCKMARKET\n\n- Fix broken initializer when manually buying WSE access (by @Snarling)\n\nTERMINAL\n\n- Added changelog command to re-display the changelog dialog.\n- Connect command will connect to player owned servers from anywhere. (by @Snarling)\n\nUI\n\n- Improve UI performance of sidebar and character overview using memoization (@d0sboots)\n- Other UI additions / improvements (@Mughur, @d0sboots, probably others)\n- Fixed spacing of text in Trade for reputation button after Infiltration (by @PyroGenesis)\n- Fix spacing on ANSI background escape codes (by @Snarling)\n- Fix several instances where newlines were not being displayed properly (by @quacksouls)\n- SoftResetButton.tsx Tooltip changed to make more sense (by @rai68)\n- GANG: Fix Gang UI to correctly report the bonus time multiplier as 25x (by @TheMas3212)\n- Change formatting for skill levels to use localeStr (@G4mingJon4s)\n\nDOC\n\n- Fix incorrect examples for grow (by @quacksouls)\n- Updated limitMaterialProduction() and limitProductProduction() documentation to mention removing limits. (by @PyroGenesis)\n- Add ns documentation for possible sleeve tasks (by @Snarling)\n- Update documentation for workForFaction and workForCompany (by @quacksouls)\n- Improve CCT documentation for HammingCodes (by @quacksouls)\n- cleanup in doc of Netscript functions (by @quacksouls)\n- Various other doc fixes (by @quacksouls)\n- Update documentation for ns.args (by @Snarling)\n- De-uglify ns.print examples (by @LJNeon)\n\nSTATS\n\n- Fix logic for increasing HP based on defense skill levels (by @mattgarretson)\n- Fix a bug where HP could be something other than max after a bitnode reset.\n\nINFILTRATION\n\n- Fix SlashGame scaling. (by @Snarling)\n\nGANG\n\n- When starting a gang, any in progress work with that faction will end. (@G4mingJon4s)\n\nMISC\n\n- Lots of typesafety improvements with internal code\n- Remove google analytics (@hydroflame)\n- Some error handling streamlining (by @Snarling)\n- fix: check both ts and js source now (by @Tanimodori)\n- chore: sync version in package-lock.json (by @Tanimodori)\n- Better safety when loading game for multiple save corruption issues (by @Snarling)\n- Nerf Noodle bar\n\n## v2.1.0 - 2022-09-23 Remote File API\n\nDev note\n\n- The most important change about this update is the introduction of the Remote File API (RFA).\n With this we also deprecate the HTTP file API and the Visual Studio extension. Those things\n were made during the rush of Steam and aren't well thought out. This new process works with\n both the web and Steam version of the game and every text editor. Moving forward we also\n won't be doing much, if any, upgrades to the in-game editor. We think it's good enough for\n now and if you need more we recommend you hook up your favorite external editor.\n\n--- NEW FEATURES ---\n\n- New Remote File API for transmitting files to the game (by @Hoekstraa)\n- Added a new Augmentation, Z.O.Ë., which allows Sleeves to benefit from Stanek.\n\n--- FIXES ---\n\nAPI\n\n- Remove incorrectly placed 's' in ns.tFormat() (by @LJNeon)\n- More ports (previously max 20, now practically unlimited) (by @Hoekstraa)\n- Corp functions now return copy of constant arrays instead of the original (by @Mughur)\n- All the player sub-objects need to be copied for `getPlayer`. (by @MageKing17)\n- add corp get functions, UI (by @Mughur)\n- destroyW0r1dD43m0n now properly gives achievements\n- favor now properly syncs across pages and the Donate achievement is now given correctly (by @Aerophia)\n- getCrimeStats use bitnode multipliers in the output of crime stats (by @phyzical)\n- add singularity function for exporting game save back (by @phyzical)\n\nCODING CONTRACTS\n\n- inconsistent probability for generation between online and offline (by @quacksouls)\n- Don't stringify answer if already a string (by @alainbryden)\n- change input handling for contract attempts (by @Snarling)\n\nCORPORATION\n\n- Bunch of corporation fixes (by @Mughur)\n- Gave investors some economics classes (by @Mughur)\n- Limit shareholder priority on newly issued shares (by @Undeemiss)\n- dont take research points for something already researched via api (by @phyzical)\n\nCORPORATION API\n\n- Fix up param order for limitProductProduction to match docs (by @phyzical)\n- Expose exports from Material (by @Rasmoh)\n\nDOCUMENTATION\n\n- update docs a bit more, amending some BN and SF texts (by @Mughur)\n- Fixed Argument order for scp() (by @njalooo)\n- Some typo fixes in Netscript functions (by @quacksouls)\n- Why use Coding Contract API (by @quacksouls)\n- typo fix in description of Caesar cipher (by @quacksouls)\n- typo fix in terminal.rst (by @BugiDev)\n- Update bitburner.sleeve.settobladeburneraction.md (by @borisflagell)\n- Correct documentation for `run()` with 0 threads. (by @MageKing17)\n- Some doc updates (by @Mughur)\n- fix documentation for remote api (by @hydroflame)\n\nNETSCRIPT\n\n- Added functions to resize, move, and close tail windows\n- ns.exit now exits immediately (by @Snarling)\n- Fix dynamic ram check (by @Snarling)\n- ns1 wraps deeper layers correctly. (by @Snarling)\n- Prevent bladeburner.setActionLevel from setting invalid action levels (by @MPJ-K)\n- Typo fixes in CodingContract, Hacknet, Singularity APIs (by @quacksouls)\n- Fix a typo in doc of Singularity.travelToCity() (by @quacksouls)\n- Update netscript definition file for scp, write, read, and flags (by @Snarling)\n- Correct missing ! for boolean coercion in Corporation.createCorporation(). (by @Risenafis)\n- Normalized Stock API logging (by @Snarling)\n- allow null duration in toast ns function (by @RollerKnobster)\n- Correct missing `!` for boolean coercion in `singularity.workForCompany()`. (by @MageKing17)\n- ns.scp and ns.write are now synchronous + fix exec race condition (by @Snarling)\n- atExit now allows synchronous ns functions (by @Snarling)\n- Improve real life CPU and memory performance of scripts. (by @Snarling)\n- Prompt Add user friendly message to avoid throwing recovery screen for invalid choices (by @phyzical)\n- Rerunning a script from tail window recalculates ram usage (by @Snarling)\n- The correct script will be closed even if the player modifies args (v2.0) (by @Snarling)\n- Corrected ns formula for infiltration rewards (by @ezylot)\n- Add singularity check for finishing company work (by @Snarling)\n\nSLEEVES\n\n- Allow using the regeneration chamber with sleeves to heal them. (by @coderanger)\n- fix crash when player tries to assign more than 3 sleeves to Bladeburner contracts (by @Snarling)\n- Sleeves no longer crash when player quits company sleeve was working (by @Snarling)\n- Sleeve crime gain bitnode multiplier fix (by @Mughur)\n\nREMOTE FILE API\n\n- NetscriptDefinitions retains export strings (by @Hoekstraa)\n- Fix type of RFAMessages with non-String results (by @Hoekstraa)\n\nUI\n\n- add a setting to display middle time unit in Time Elapsed String (by @hydroflame)\n- fix incorrect experience display in Crime UI. (by @SilverNexus)\n- Bitnode stats now show if BB/Corporation are disabled (by @Kelenius)\n- Removed three empty lines from BB status screen (by @Kelenius)\n- Add missing space to BN7 description (by @hex7cd)\n- Improvements to crime work UI (by @Kelenius)\n- Script Editor more responsive on resize, and fix dirty file indicator (by @Snarling)\n\nMISC\n\n- Added weight to GangMemberTask construction call (by @ezylot)\n- Fix ANSI display bugs (by @Snarling)\n- Debounce updateRAM calls in script editor. (by @Snarling)\n- Allow characters & and ' in filenames (by @Snarling)\n- Corrected tutorial text (by @mihilt)\n- Fix infil definitions.d.ts (by @phyzical)\n- Modify PR template (by @Hoekstraa)\n- crime gains, sleeve gang augs and faq (by @Mughur)\n- Preventing server starting security level from going above 100 (by @Shiiyu)\n- Adds Shadows of Anarchy (by @Lagicrus)\n- Added intormation about hacking managers to hacking algorithms page (by @Kelenius)\n- Fix Jest CI Error (by @geggleto)\n- multiple hasAugmentation checks didn't check if the augment was installed (by @Mughur)\n- & (by @G4mingJon4s)\n- Adds info regarding augments and focus (by @Lagicrus)\n- Removed console.log line (by @dhosborne)\n- Update some doc (by @hydroflame)\n- trying to fix int problems (by @hydroflame)\n- Fix broken ns filesnames (by @hydroflame)\n- new formula functions (by @hydroflame)\n- test fixes/md updates (by @phyzical)\n- Remove \"based\" from positive adjectives in infiltrations (by @faangbait)\n- minor fix in instance calculation (by @hydroflame)\n- fix dynamic ram miscalc not triggering (by @hydroflame)\n- Refactor game options into separate components (by @hydroflame)\n- fix settings unfocusing on every key stroke (by @hydroflame)\n- fix some stuff with the timestamp settings (by @hydroflame)\n- Fix unique key problem with ascii elements (by @hydroflame)\n- Improve wrong arg user message and add ui.windowSize (by @hydroflame)\n- fix stack trace missing in some errors (by @hydroflame)\n- Fix scp and write in ns1 (by @hydroflame)\n- Did some changes of the remote api and added documentation (by @hydroflame)\n- Add dummy function to generate a mock server or player for formulas stuff (by @hydroflame)\n- fix compile error (by @hydroflame)\n- regen doc (by @hydroflame)\n- rm console log (by @hydroflame)\n- regen doc (by @hydroflame)\n- Added more info about blood program, change some aug descriptions (by @hydroflame)\n- use triple equal (by @hydroflame)\n- Minor improvements to Netscript Port loading and unloading (by @hydroflame)\n- Fix hostname generation being weird about dash 0 added (by @hydroflame)\n- upgrade version number. (by @hydroflame)\n- Nerf noodle bar.\n\n## v2.0.0 - 2022-07-19 Work rework\n\nAPI break rewards\n\n- Everyone is awarded 10 NFG.\n- All work in progress program is auto completed.\n- All work in progress crafting is auto completed without adding entropy.\n\n Work (Create program / Work for faction / Studying / etc ...)\n\n- Working has been rebuilt from the grounds up. The motivation for that change is that all\n different types of work all required different cached variables on the main Player object.\n This caused a lot of bugs and crashes. It's been reworked in such a way as to prevent bugs\n and make it nearly trivial to add new kinds of work. However, since this caused a few API break\n I've decided to mark this version following semver protocols and call it 2.0.0\n- Crime can be unfocused and auto loops, no more spam clicking.\n- All work type give their reward immediately. No need to stop work to bank rewards like reputation.\n- Faction and Company work no longer have a time limit.\n- Company work no longer reduces rep gain by half for quitting early.\n- Company faction require 400k rep to join (from 200k)\n- Backdooring company server reduces faction requirement to 300k.\n- All work generally no longer keep track of cumulative gains like exp and reputation since it's applied instantly.\n- getPlayer returns way less fields but does return the new 'currentWork' field, some fields are moved around.\n\nAPI breaks\n\n- workForCompany argument 'companyName' is now not-optional\n- commitCrime now has 'focus' optional parameter\n- using getScriptIncome to get total income has been separated to getTotalScriptIncome.\n- using getScriptExpGain to get total income has been separated to getTotalScriptExpGain.\n- scp has it's 2 last argument reversed, the signature is now (files, destination, optional_source)\n- ns.connect and other singularity function are no longer available at the top level.\n They were already hidden from documentation but now they're gone.\n- stock.buy and stock.sell were renamed to stock.buyStock and stock.sellStock because 'buy' and 'sell'\n are very common tokens.\n- corporation.bribe no longer allows to give shares as bribe.\n\n Netscript\n\n- Add singularity.getCurrentWork\n- Add singularity.getAugmentationBasePrice\n- Add sleeve.getSleeveAugmentationPrice\n- Add sleeve.getSleeveAugmentationRepReq\n- Fix infiltration.getInfiltrationLocations\n- Singularity.goToLocation support for non-city-specific locations (@Ansopedian)\n- All corporation functions are synchronous. Job assignment only works on the following cycle. (@stalefishies)\n- Add batch functionality to NS spendHashes API (@undeemiss)\n- Fix #3661 Add missing memory property to Sleeve API (@borisflagell)\n- FIX#3732 Cannot assign two sleeve on \"Take on contracts\" regardless of contract type. (@borisflagell)\n\n Corporation\n\n- Dividend fixes and exposing dividends info via scripts (@stalefishies)\n- Add big number format support in some Corporation's modal (@borisflagell)\n- Fix #3261 Industry overview number formatting (@nickofolas)\n\n Multipliers\n\n- The main player object was also plagues with a million fields all called '\\*\\_mult'. Representing the different multipliers\n- These have been refactored in a field called 'mults'.\n\n Misc.\n\n- #3596 Enhanced terminal command parsing (@RevanProdigalKnight)\n- Fix #3366 Sleeve UI would sometimes displays the wrong stat while working out. (@borisflagell)\n- Two new encryption themed contracts - caesar and vigenere (@Markus-D-M)\n- Fixes #3132 several Sleeve can no longer works concurrently in the same company (@borisflagell)\n- FIX #3514 Clear recently killed tab on BN end event (@Daniel-Barbera)\n- HammingCodes description and implementation fixes (@s2ks)\n- FIX #3794 Sleeve were getting less shocked when hospitalized (was positive, should have detrimental) (@borisflagell)\n- Fix #3803 Servers can no longer have duplicate IPs (@crimsonhawk47)\n- Fix #3854 ctrl+c does not clear terminal input (@evil-tim)\n- Nerf noodle bar, obviously.\n\n## v1.6.3 - 2022-04-01 Few stanek fixes\n\nStanek Gift\n\n- Has a minimum size of 2x3\n- Active Fragment property 'avgCharge' renamed to 'highestCharge'\n- Formula for fragment effect updated to make 561% more sense.\n Now you can charge to your heart content.\n- Logs for the 'chargeFragment' function updated.\n\n Misc.\n\n- Nerf noodle bar.\n\n## v1.6.0 - 2022-03-29 Grafting\n\n** Vitalife secret lab **\n\n- A new mechanic called Augmentation Grafting has been added. Resleeving has been removed.\n- Credit to @nickofolas for his incredible work.\n\n** Stanek **\n\n- BREAKING: Many functions in the stanek API were renamed in order to avoid name collision with things like Map.prototype.get\n\n** UI **\n\n- Major update to Sleeve, Gang UI, and Create Program (@nickofolas)\n- re-add pre tags to support slash n in prompt (@jacktose)\n- Tabelize linked output of 'ls' (@Master-Guy)\n- Add the ability to filter open scripts (@phyzical)\n- Add minHeight to editor tabs (@nickofolas)\n- Properly expand gang equipment cards to fill entire screen (@nickofolas)\n- Add shortcut to Faction augmentations page from FactionsRoot (@nickofolas)\n- Fix extra space on editor tabs (@nickofolas)\n- Present offline message as list (@DSteve595)\n- add box showing remaining augments per faction (@jjayeon)\n- Add tab switching support to vim mode (@JParisFerrer)\n- Show current task on gang management screen (@zeddrak)\n- Fix for ui of gang members current task when set via api (@phyzical)\n- Don't hide irrelevant materials if their stock is not empty and hide irrelevant divisions from Export (@SagePtr)\n- Fix regex to enable alpha transparency hex codes (8 digits) (@surdaft)\n\n** API **\n\n- Added dark web functions to ns api\n- BREAKING: purchaseTor() should returns true if player already has Tor. (@DavidGrinberg, @waffleattack)\n- Implement getBonusTime in Corporation API (@t-wolfeadam)\n- Added functions to purchase TIX and WSI (@incubusnb)\n- purchaseSleeveAug checks shock value (@incubusnb)\n- Fix bug with hacknet api\n- Fix spendHashes bug\n- Added 0 cost of asleep() (@Master-Guy)\n- Fix some misleading corporation errors (@TheRealMaxion)\n- expose the inBladeburner on the player object (@phyzical)\n- added ram charge for stanek width and height (@phyzical)\n- Fix sufficient player money check to buy back shares. (@ChrissiQ)\n- Fix Static Ram Circumventing for some NS functions (@CrafterKolyan)\n- added CorporationSoftCap to NetscriptDefinitions (@phyzical)\n- Added definition of autocomplete() 'data' argument. (@tigercat2000)\n- Adding support for text/select options in Prompt command (@PhilipArmstead)\n- Added the ability to exportGame via api (@phyzical)\n\n** Arcade **\n\n- Added an arcade to New Tokyo where you can play a 4 year old version of bitburner.\n\n** Misc. **\n\n- Add a warning triggered while auto-saves are off. (@MartinFournier)\n- Log info for field analysis now displays actual rank gained. (@ApamNapat)\n- Removed BladeburnerSkillCost from skill point cost description. (@ApamNapat)\n- Fix handling for UpArrow in bladeburner console. (@dowinter)\n- Add GitHub action to check PRs for generated files. (@MartinFournier)\n- Cap Staneks gift at 25x25 to prevent crashes. (@waffleattack)\n- Remove old & unused files from repository. (@MartinFournier)\n- Factions on the factions screens are sorted by story progress / type. (@phyzical)\n- Fix log manager not picking up new runs of scripts. (@phyzical)\n- Added prettier to cicd.\n- UI improvements (@phyzical)\n- Documentation / Typos (@nanogyth, @Master-Guy, @incubusnb, @ApamNapat, @phyzical, @SagePtr)\n- Give player code a copy of Division.upgrades instead of the live object (@Ornedan)\n- Fix bug with small town achievement.\n- Fix bug with purchaseSleeveAug (@phyzical)\n- Check before unlocking corp upgrade (@gianfun)\n- General codebase improvements. (@phyzical, @Master-Guy, @ApamNapat)\n- Waiting on promises in NS1 no longer freezes the script. (@Master-Guy)\n- Fix bug with missing ramcost for tFormat (@TheMas3212)\n- Fix crash with new prompt\n- Quick fix to prevent division by 0 in terminal (@Master-Guy)\n- removed ip references (@phyzical, @Master-Guy)\n- Terminal now supports 'ls -l'\n- Fix negative number formatting (@Master-Guy)\n- Fix unique ip generation (@InDieTasten)\n- remove terminal command theme from docs (@phyzical)\n- Fix 'Augmentations Left' with gang factions (@nickofolas)\n- Attempt to fix 'bladeburner.process()' early routing issue (@MartinFournier)\n- work in progress augment fix (@phyzical)\n- Fixes missing space in Smart Supply (@TheRealMaxion)\n- Change license to Apache 2 with Commons Clause\n- updated regex sanitization (@mbrannen)\n- Sleeve fix for when faction isnt found (@phyzical)\n- Fix editor \"close\" naming (@phyzical)\n- Fix bug with sleeves where some factions would be listed as workable. (@phyzical)\n- Fix research tree of product industries post-prestige (@pd)\n- Added a check for exisiting industry type before expanding (@phyzical)\n- fix hackAnalyzeThreads returning infinity (@chrisrabe)\n- Make growthAnalyze more accurate (@dwRchyngqxs)\n- Add 'Zoom -> Reset Zoom' command to Steam (@smolgumball)\n- Add hasOwnProperty check to GetServer (@SagePtr)\n- Speed up employee productivity calculation (@pd)\n- Field Work and Security Work benefit from 'share' (@SagePtr)\n- Nerf noodle bar.\n\n## v1.5.0 - Steam Cloud integration\n\n** Steam Cloud Saving **\n\n- Added support for steam cloud saving (@MartinFournier)\n\n** UI **\n\n- background now matches game primary color (@nickofolas)\n- page title contains version (@MartinFourier)\n- Major text editor improvements (@nickofolas)\n- Display bonus time on sleeve page (@MartinFourier)\n- Several UI improvements (@nickofolas, @smolgumball, @DrCuriosity, @phyzical)\n- Fix aug display in alpha (@Dominik Winter)\n- Fix display of corporation product equation (@SagePtr)\n- Make Bitverse more accessible (@ChrissiQ)\n- Make corporation warehouse more accessible (@ChrissiQ)\n- Make tab style more consistent (@nickofolas)\n\n** Netscript **\n\n- Fix bug with async.\n- Add 'printf' ns function (@Ninetailed)\n- Remove blob caching.\n- Fix formulas access check (@Ornedan)\n- Fix bug in exp calculation (@qcorradi)\n- Fix NaN comparison (@qcorradi)\n- Fix travelToCity with bad argument (@SlyCedix)\n- Fix bug where augs could not be purchased via sing (@reacocard)\n- Fix rounding error in donateToFaction (@Risenafis)\n- Fix bug with weakenAnalyze (@rhobes)\n- Prevent exploit with atExit (@Ornedan)\n- Double 'share' power\n\n** Corporations **\n\n- Fix bugs with corp API (@pigalot)\n- Add smart supply func to corp API (@pd)\n\n** Misc. **\n\n- The file API now allows GET and DELETE (@lordducky)\n- Force achievement calculation on BN completion (@SagePtr)\n- Cleanup in repository (@MartinFourier)\n- Several improvements to the electron version (@MartinFourier)\n- Fix bug with casino roulette (@jamie-mac)\n- Terminal history persists in savefile (@MartinFourier)\n- Fix tests (@jamie-mac)\n- Fix crash with electron windows tracker (@smolgumball)\n- Fix BN6/7 passive reputation gain (@BrianLDev)\n- Fix Sleeve not resetting on install (@waffleattack)\n- Sort joined factions (@jjayeon)\n- Update documentation / typo (@lethern, @Meowdoleon, @JohnnyUrosevic, @JosephDavidTalbot,\n @pd, @lethern, @lordducky, @zeddrak, @fearnlj01, @reasonablytall, @MatthewTh0,\n @SagePtr, @manniL, @Jedimaster4559, @loganville, @Arrow2thekn33, @wdpk, @fwolfst,\n @fschoenfeldt, @Waladil, @AdamTReineke, @citrusmunch, @factubsio, @ashtongreen,\n @ChrissiQ, @DJ-Laser, @waffleattack, @ApamNapat, @CrafterKolyan, @DSteve595)\n- Nerf noodle bar.\n\n## v1.4.0 - 2022-01-18 Sharing is caring\n\n** Computer sharing **\n\n- A new mechanic has been added, it's is invoked by calling the new function 'share'.\n This mechanic helps you farm reputation faster.\n\n** gang **\n\n- Installing augs means losing a little bit of ascension multipliers.\n\n** Misc. **\n\n- Prevent gang API from performing actions for the type of gang they are not. (@TheMas3212)\n- Fix donation to gang faction. (@TheMas3212)\n- Fix gang check crashing the game. (@TheMas3212)\n- Make time compression more robust.\n- Fix bug with scp.\n- Add zoom to steam version. (@MartinFourier)\n- Fix donateToFaction accepts donation of NaN. (@woody-lam-cwl)\n- Show correct hash capacity gain on cache level upgrade tooltip. (@woody-lam-cwl)\n- Fix tests (@woody-lam-cwl)\n- Fix cache tooltip (@woody-lam-cwl)\n- Added script to prettify save file for debugging (@MartinFourier)\n- Update documentation / typos (@theit8514, @thadguidry, @tigercat2000, @SlyCedix, @Spacejoker, @KenJohansson,\n @Ornedan, @JustAnOkapi, @nickofolas, @philarmstead, @TheMas3212, @dcragusa, @XxKingsxX-Pinu,\n @paiv, @smolgumball, @zeddrak, @stinky-lizard, @nickofolas, @Feodoric, @daanflore,\n @markusariliu, @mstruebing, @erplsf, @waffleattack, @Dexalt142, @AIT-OLPE, @deathly809, @BuckAMayzing,\n @MartinFourier, @pigalot, @lethern)\n- Fix BN3+ achievement (@SagePtr)\n- Fix reputation carry over bug (@TheMas3212)\n- Add button to exit infiltrations (@TheMas3212)\n- Add dev menu achievement check (@TheMas3212)\n- Add 'host' config for electron server (@MartinFourier)\n- Suppress save toast only works for autosave (@MartinFourier)\n- Fix some achievements not triggering with 'backdoor' (@SagePtr)\n- Update Neuroflux Governor description.\n- Fix bug with electron server.\n- Fix bug with corporation employee assignment function (@Ornedan)\n- Add detailed information to terminal 'mem' command (@MartinFourier)\n- Add savestamp to savefile (@MartinFourier)\n- Dev menu can apply export bonus (@MartinFourier)\n- Icarus message no longer applies on top of itself (@Feodoric)\n- purchase augment via API can no longer buy Neuroflux when it shouldn't (@Feodoric)\n- Syntax highlighter should be smarter (@neuralsim)\n- Fix some miscalculation when calculating money stolen (@zeddrak)\n- Fix max cache achievement working with 0 cache (@MartinFourier)\n- Add achievements in the game, not just steam (@MartinFourier)\n- Overflow hash converts to money automatically (@MartinFourier)\n- Make mathjax load locally (@MartinFourier)\n- Make favor calculation more efficient (@kittycat2002)\n- Fix some scripts crashing the game on startup (@MartinFourier)\n- Toasts will appear above tail window (@MartinFourier)\n- Fix issue that can cause terminal actions to start on one server and end on another (@MartinFourier)\n- Fix 'fileExists' not correctly matching file names (@TheMas3212)\n- Refactor some code to be more efficient (@TheMas3212)\n- Fix exp gain for terminal grow and weaken (@nickofolas)\n- Refactor script death code to reject waiting promises instead of resolving (@Ornedan)\n- HP recalculates on defense exp gain (@TheMas3212)\n- Fix log for ascendMember (@TheMas3212)\n- Netscript ports clear on reset (@TheMas3212)\n- Fix bug related to company (@TheMas3212)\n- Fix bug where corporation handbook would not be correctly added (@TheMas3212)\n- Servers in hash upgrades are sorted alpha (@MartinFourier)\n- Fix very old save not properly migrating augmentation renamed in 0.56 (@MartinFourier)\n- Add font height and line height in theme settings (@MartinFourier)\n- Fix crash when quitting job (@MartinFourier)\n- Added save file validation system (@TheMas3212)\n- React and ReactDOM are now global objects (@pigalot)\n- 'nano' supports globs (@smolgumball)\n- Character overview can be dragged (@MartinFourier)\n- Job page updates in real time (@nickofolas)\n- Company favor gain uses the same calculation as faction, this is just performance\n the value didn't change (@nickofolas)\n- ns2 files work with more import options (@theit8514)\n- Allow autocomplete for partial executables (@nickofolas)\n- Add support for contract completion (@nickofolas)\n- 'ls' link are clickable (@smolgumball)\n- Prevent steam from opening external LOCAL files (@MartinFourier)\n- Fix a bug with autocomplete (@Feodoric)\n- Optimise achievement checks (@Feodoric)\n- Hacknet server achievements grant associated hacknet node achievement (@Feodoric)\n- Fix display bug with hacknet (@Feodoric)\n- 'analyze' now says if the server is backdoored (@deathly809)\n- Add option to exclude running script from save (@MartinFourier)\n- Game now catches more errors and redirects to recovery page (@MartinFourier)\n- Fix bug with autocomplete (@nickofolas)\n- Add tooltip to unfocus work (@nickofolas)\n- Add detailst overview (@MartinFourier)\n- Fix focus bug (@deathly809)\n- Fix some NaN handling (@deathly809)\n- Added 'mv' ns function (@deathly809)\n- Add focus argument to some singularity functions (@nickofolas)\n- Fix some functions not disabling log correctly (@deathly809)\n- General UI improvements (@nickofolas)\n- Handle steamworks errors gravefully (@MartinFourier)\n- Fix some react component not unmounting correctly (@MartinFourier)\n- 'help' autocompletes (@nickofolas)\n- No longer push all achievements to steam (@Ornedan)\n- Recovery page has more information (@MartinFourier)\n- Added 'getGameInfo' ns function (@MartinFourier)\n- SF3.3 unlocks all corp API (@pigalot)\n- Major improvements to corp API (@pigalot)\n- Prevent seed money outside BN3 (@pigalot)\n- Fix bug where using keyboard shortcuts would crash if the feature is not available (@MartinFourier)\\\n- Sidebar remains opened/closed on save (@MartinFourier)\n- Added tooltip to sidebar when closed (@MartinFourier)\n- Fix bug where Formulas.exe is not available when starting BN5 (@TheMas3212)\n- Fix CI (@tvanderpol)\n- Change shortcuts to match sidebar (@MartinFourier)\n- Format gang respect (@attrib)\n- Add modal to text editor with ram details (@nickofolas)\n- Fix several bugs with singularity focus (@nickofolas)\n- Nerf noodle bar.\n\n## v1.3.0 - 2022-01-04 Cleaning up\n\n** External IDE integration **\n\n- The Steam version has a webserver that allows integration with external IDEs.\n A VSCode extension is available on the market place. (The documentation for the ext. isn't\n written yet)\n\n** Source-Files **\n\n- SF4 has been reworked.\n- New SF -1.\n\n** UI **\n\n- Fix some edge case with skill bat tooltips (@MartinFournier)\n- Made some background match theme color (@Kejikus)\n- Fix problem with script editor height not adjusting correctly (@billyvg)\n- Fix some formatting issues with Bladeburner (@MartinFournier, @nickofolas)\n- Fix some functions like 'alert' format messages better (@MageKing17)\n- Many community themes added.\n- New script editor theme (@Hedrauta, @Dexalt142)\n- Improvements to tail windows (@theit8514)\n- Training is more consise (@mikomyazaki)\n- Fix Investopedia not displaying properly (@JotaroS)\n- Remove alpha from theme editor (@MartinFournier)\n- Fix corporation tooltip not displaying properly (@MartinFournier)\n- Add tooltip on backdoored location names (@MartinFournier)\n- Allow toasts to be dismissed by clicking them (@nickofolas)\n- Darkweb item listing now shows what you own. (@hexnaught)\n\n** Bug fix **\n\n- Fix unit tests (@MartinFournier)\n- Fixed issue with 'cat' and 'read' not finding foldered files (@Nick-Colclasure)\n- Buying on the dark web will remove incomplete exe (@hexnaught)\n- Fix bug that would cause the game to crash trying to go to a job without a job (@hexnaught)\n- purchaseServer validation (@nickofolas)\n- Script Editor focuses code when changing tab (@MartinFournier)\n- Fix script editor for .txt files (@65-7a)\n- Fix 'buy' command not displaying correctly. (@hexnaught)\n- Fix hackAnalyzeThread returning NaN (@mikomyazaki)\n- Electron handles exceptions better (@MageKing17)\n- Electron will handle 'unresponsive' event and present the opportunity to reload the game with no scripts (@MartinFournier)\n- Fix 'cp' between folders (@theit8514)\n- Fix throwing null/undefined errors (@nickofolas)\n- Allow shortcuts to work when unfocused (@MageKing17)\n- Fix some dependency issue (@locriacyber)\n- Fix corporation state returning an object instead of a string (@antonvmironov)\n- Fix 'mv' overwriting files (@theit8514)\n- Fix joesguns not being influenced by hack/grow (@dou867, @MartinFournier)\n- Added warning when opening external links. (@MartinFournier)\n- Prevent applying for positions that aren't offered (@TheMas3212)\n- Import has validation (@MartinFournier)\n\n** Misc. **\n\n- Added vim mode to script editor (@billyvg)\n- Clean up script editor code (@Rez855)\n- 'cat' works on scripts (@65-7a)\n- Add wordWrap for Monaco (@MartinFournier)\n- Include map bundles in electron for easier debugging (@MartinFournier)\n- Fix importing very large files (@MartinFournier)\n- Cache program blob, reducing ram usage of the game (@theit8514)\n- Dev menu can set server to $0 (@mikomyazaki)\n- 'backdoor' allows direct connect (@mikomyazaki)\n- Github workflow work (@MartinFournier)\n- workForFaction / workForCompany have a new parameter (@theit8514)\n- Alias accept single quotes (@sporkwitch, @FaintSpeaker)\n- Add grep options to 'ps' (@maxtimum)\n- Added buy all option to 'buy' (@anthonydroberts)\n- Added more shortcuts to terminal input (@Frank-py)\n- Refactor some port code (@ErzengelLichtes)\n- Settings to control GiB vs GB (@ErzengelLichtes)\n- Add electron option to export save game (@MartinFournier)\n- Electron improvements (@MartinFournier)\n- Expose some notifications functions to electron (@MartinFournier)\n- Documentation (@MartinFournier, @cyn, @millennIumAMbiguity, @2PacIsAlive,\n @TheCoderJT, @hexnaught, @sschmidTU, @FOLLGAD, @Hedrauta, @Xynrati,\n @mikomyazaki, @Icehawk78, @aaronransley, @TheMas3212, @Hedrauta, @alkemann,\n @ReeseJones, @amclark42, @thadguidry, @jasonhaxstuff, @pan-kuleczka, @jhollowe,\n @ApatheticsAnonymous, @erplsf, @daanflore, @nickofolas, @Kebap, @smolgumball,\n @woody-lam-cwl)\n\n## v1.1.0 - 2021-12-18 You guys are awesome (community because they're god damn awesome)\n\n** Script Editor **\n\n- The text editor can open several files at once. (@Rez855 / @Shadow72)\n It's not perfect so keep the feedback coming.\n\n** Steam **\n\n- Windows has a new launch option that lets player start with killing all their scripts\n This is a safety net in case all the other safety nets fail.\n- Linux has several launch options that use different flags for different OS.\n- Debug and Fullscreen are available in the window utility bar.\n- Tried (and maybe failed) to make the game completely kill itself after closing.\n This one I still don't know wtf is going.\n- No longer has background throttling.\n- Default color should be pitch black when loading\n- Add BN13: Challenge achievement.\n\n** Tutorial **\n\n- I watched someone play bitburner on youtube and reworked part of\n the tutorial to try to make some parts of the game clearer.\n https://www.youtube.com/watch?v=-_JETXff4Zo\n- Add option to restart tutorial.\n\n** Netscript **\n\n- getGangInformation returns more information.\n- getAscensionResult added\n- getMemberInformation returns more info\n- Formulas API has new functions for gang.\n- Added documentation for corp API.\n- exec has clearer error message when you send invalid data.\n- getServer returns all defined field for hacknet servers.\n- Fix a bug with scp multiple files (@theit8514)\n- Stack traces should be smarter at replacing blobs with filenames\n- Fix a weird error message that would occur when throwing raw strings.\n- Fix shortcuts not working.\n- Re-added setFocus and isFocused (@theit8514)\n- new function getHashUpgrades (@MartinFournier)\n- enableLog accepts \"ALL\" like disableLog (@wynro)\n- toast() doesn't crash on invalid data (@ivanjermakov)\n- alert() doesn't crash on invalid data (@Siern)\n- Fixed an issue where scripts don't run where they should.\n- Sleeve getInformation now returns cha\n- getServer does work with no argument now\n- workForFaction returns false when it mistakenly returned null\n\n** Character Overview **\n\n- The character overview now shows the amount of exp needed to next level (@MartinFournier)\n\n** Misc. **\n\n- Add option to supress Game Saved! toasts (@MartinFournier)\n- Fix bug where ctrl+alt+j was eaten by the wrong process. (@billyvg)\n- Theme Editor lets you paste colors (@MartinFournier)\n- ctrl + u/k/w should work on terminal (@billyvg)\n- Game now shows commit number, this is mostly for me. (@MartinFourier)\n- running a bad script will give a clearer error message (@TheCoderJT)\n- Default terminal capacity is maximum (@SayntGarmo)\n- Fix problems with cp and mv (@theit8514)\n- Make monaco load fully offline for players behind firewalls.\n- change beginer guide to use n00dles instead of foodnstuff\n- BN13 is harder\n- nerf int gain from manualHack\n- Fix UI displaying wrong stats (@DJMatch3000)\n- Fix button not disabling as it should.\n- New location in Ishima.\n- Add setting to suppress stock market popups.\n- Typo fixes (@Hedrauta, @cvr-119, @Ationi, @millennIumAMbiguity\n @TealKoi, @TheCoderJT, @cblte, @2PacIsAlive, @MageKing17,\n @Xynrati, @Adraxas, @pobiega)\n- Fix 100% territory achievement.\n- Reword message on active scripts page.\n- Fix terminal not clearing after BN\n- Remove references to .fconf\n- Augmentation pages shows BN difficulty with SF5\n- Fix scripts saving on wrong server while 'connect'ing\n- Fix gym discount not working.\n- Fix scan-analyze not working with timestamps\n- Hash upgrades remember last choice.\n- Save files now sort by date\n- The covenant no longer supports negative memory purchases\n- Fix corp shares buyback triggering by pressing enter\n- Staneks gift display avg / num charges\n- Infiltration rewards no longer decay with better stats\n- terminal 'true' is parsed as boolean not string\n- tail and kill use autocomplete()\n- Fix focus for coding contract\n- massive boost to noodle bar.\n\n** Special Thanks **\n\n- Special thank you to everyone on Discord who can answer\n new player questions so I can focus on more important things.\n\n## v1.1.0 - 2021-12-03 BN13: They're Lunatics (hydroflame & community)\n\n** BN13: They're Lunatics **\n\n- BN13 added.\n\n** Steam **\n\n- Tested on all 3 major OS.\n- 94 achievements added\n- Release is 2021-12-10.\n\n** Corporation API **\n\n- Added corporation API. (Unstable)\n\n** Netscript **\n\n- tprintf crashes when not giving a format as first arg.\n- tprintf no longer prints filename (@BartKoppelmans)\n- TIX buy/sell/sellShort all return askprice/bidprice (@Insight)\n- getRunningScript now works.\n- Fix disableLog for gang and TIX API\n- getOwnedSourceFiles is not singularity anymore (makes it easier to share scripts.) (@theit8514)\n- true/false is a valid value to send to other scripts.\n- workForFaction no longer returns null when trying to work for gang.\n- Scripts logging no longer generates the string if logging is disabled.\n This should give performance boost for some scripts.\n\n** Gang **\n\n- Gang with 0 territory can no longer fight\n- Territory now caps at exactly 0 or 1.\n\n** Misc. **\n\n- Clicking \"previous\" on the browser will not pretend you had unsaved information\n allowing you to cancel if needs be.\n- Fixed some tail box coloring issue.\n- Fixed BladeBurner getCityCommunities ram cost\n- The download terminal command no longer duplicate extensions (@Insight)\n- Fix #000 on #000 text in blackjack. (@Insight)\n- Remove reference to .fconf\n- Tail boxes all die on soft reset.\n- Fix codign contract focus bug.\n- Megacorp factions simply re-invite you instead of auto added on reset. (@theit8514)\n- Tail window is bound to html body.\n- Infiltration reward is tied to your potential stats, not your actual stats\n So you won't lose reward for doing the same thing over and over.\n- intelligence lowers program creation requirements.\n- Terminal parses true as the boolean, not the string.\n- Tail and kill autocomplete using the ns2 autocomplete feature.\n- scan-analyze doesn't take up as many terminal entries.\n- GangOtherInfo documentation now renders correctly.\n- ActiveScripts search box also searches for script names.\n- Infinite money no longer allows for infinite hacknet server.\n- Blackjack doesn't make you lose money twice.\n- Recent Scripts is now from most to least recent.\n- Fix mathjax ascii art bug in NiteSec.\n- Remove warning that the theme editor is slow, it's only slow in dev mode.\n- In BN8 is it possible to reduce the money on a server without gaining any.\n- In the options, the timestamp feature has a placeholder explaining the expected format.\n- Bunch of doc typo fix. (hydroflame & @BartKoppelmans & @cvr-119)\n- nerf noodle bar\n\n## v1.0.2 - 2021-11-17 It's the little things (hydroflame)\n\n** Breaking (very small I promise!) **\n\n- buy / sell now return getAskPrice / getBidPrice instead of just price.\n This should help solve some inconsistencies.\n\n** Misc. **\n\n- scripts logs are colorized. Start your log with SUCCESS, ERROR, FAIL, WARN, INFO.\n- documentation for scp not say string | string[]\n- Donation link updated.\n- nerf noodle bar\n\n## v1.0.1 - 2021-11-17 New documentation (hydroflame)\n\n** Documentation **\n\n- The new documentation for the netscript API is available at\n https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md\n This documentation is used in-game to validate the code, in-editor to autocomplete, and\n for users to reference. This is a huge quality of life improvements for me.\n\n** Reputation **\n\n- Fixed favor not affecting faction work reputation gain (Yeah, I know right?)\n\n** Hacknet **\n\n- Servers are now considerd \"purchasedByPlayers\"\n\n** Script Editor **\n\n- solarized themes now work.\n\n** Corporation **\n\n- Dividends are now much more taxed.\n- The 2 upgrades that reduced taxes are now much stronger.\n\n** Misc. **\n\n- Starting / Stopping scripts on hashnet servers immediately updates their hash rate (instead of on the next tick)\n- Hacknet has tooltip showing what the result of the upgrade would be.\n- Augmentations page displayes current price multiplier as well as explains the mechanic.\n- Terminal now is 25x stronger.\n- Tail boxes use pre-wrap for it's lines.\n- Tail boxes allow you to rerun dead scripts.\n- Tail boxes can no longer open the same one twice.\n- Terminal now autocompletes through aliases.\n- Make alter reality harder.\n- Fix bladeburner cancelling actions when manually starting anything with Simulacrum.\n- Buying hash upgrade to increase uni class or gym training will apply to current class.\n- Internally the game no longer uses the decimal library.\n- Fix an issue where 'download \\*' would generate weird windows files.\n- Timestamps can be set to any format in the options.\n- Fix typo in documentation share popup.\n- Remove bunch of debug log.\n- Fix typo in corporation handbook literature.\n- Fix typo in documentation\n- Fix duplicate SF -1 exploit. (Yeah, an exploit of exploits, now were meta)\n- Fix offline hacking earning being attributed to hacknet.\n- nerf noodle bar\n\n## v1.0.0 - 2021-11-10 Breaking the API :( (blame hydroflame)\n\n** Announcement **\n\n- Several API breaks have been implemented.\n- See the v1.0.0 migration guide under Documentation\n- Everyone gets 10 free neuroflux level.\n\n** Netscript **\n\n- Fix a bug that would cause RAM to not get recalculated.\n- New function: hackAnalyzeSecurity\n- New function: growthAnalyzeSecurity\n- New function: weakenAnalyze\n\n** Script Editor **\n\n- Sometimes warn you about unawaited infinite loops.\n- ns1 functions are now correctly colors in Monokai.\n\n** Programs **\n\n- Formulas.exe is a new program that lets you use the formulas API.\n\n** Corporations **\n\n- Real Estate takes up a tiny bit of room.\n- Dividends are now taxes exponentially in certain bitnodes.\n- UI displays how many level of each corporation upgrade.\n- Fix exploit with going public.\n- Employee salary no longer increase.\n\n** Documentation **\n\n- The documentation is now autogenerated into .md files.\n It is usable but not yet linked to readthedocs. It's on github.\n\n** Misc. **\n\n- Favor is not internall floating point. Meaning I don't have to save an extra variable.\n- Manually starting a Bladeburner action cancels unfocused action.\n- Updated description of gang territory to be clearer.\n- Hacknet expenses and profit are in different categories.\n- Fixed favor equation.\n- Toast messages aren't hidden behind work in progress screen.\n- Fix bug that made infiltration checkmark look off by one.\n- Fix some inconsistency with running files that start or don't start with /\n- Can't tail the same window twice.\n- Added recovery mode. Hopefully no one will ever have to use it.\n- Fix readthedocs\n- Programs now give int exp based on time not program.\n- Many sing. functions now give int exp.\n- Active Scripts page now displays some arguments next to script name.\n- Fixed some invisible black text.\n- Button colors can be edited.\n- Added 2 new colors in the theme editor: background primary and background secondary.\n- infiltration uses key instead of keycode so it should work better on non-american keyboards.\n- buff noodle bar.\n\n## v0.58.0 - 2021-10-27 Road to Steam (hydroflame & community)\n\n** Announcement **\n\n- To prepare for Steam we will fix some inconsistencies in the Netscript API. Ideally we can also write a\n save file migration that will automatically convert all breaking changes in your scripts without any\n player input.\n\n** BREAKING (kindof) **\n\n- All stock market functions are now under the 'stock' namespace, like 'hacknet'\n However when you load your game with v0.58.0 for the first time it should automatically convert everything.\n\n** SF -1 **\n\n- new SF -1: Reality Alteration\n\n** Gang **\n\n- Ascension formula now better\n- Karma requirement now much lower in most nodes\n- Territory heavily penalizes gains\n- T.R.P. not available outside BN2.\n\n** Netscript **\n\n- It is no longer possible to send anything but strings or numbers to other scripts. (prevents exploits)\n- Improve code for some netscript functions (@omuretsu)\n\n** Script Editor **\n\n- Added Solarized light/dark as theme (@CalvinTrops)\n- Fixed sleeve namespace smart autocomplete.\n\n** Hacknet Servers **\n\n- Cores affect grow/weaken like they do on home computer\n\n** Infiltration **\n\n- Slash game modified to be easier.\n\n** Misc. **\n\n- Fix typo in corp (@Saynt_Garmo)\n- Fixed a bug where corp wouldn't let you buyback shares. (@Saynt_Garmo)\n- Fixed a bug where sleeves couldn't perform some crimes. (@Saynt_Garmo)\n- Hospitalization and Eating noodles are now toasts (@Saynt_Garmo)\n- Fixed some repeated code (@omuretsu)\n- Fixed Character Overview preventing clicks underneath it even when hidden. (@omuretsu)\n- Fixed typo in tutorial. (@omuretsu)\n- Create Programs and Factions invitation badges now dissapear when you open their respective pages.\n- Add killall script in character overview.\n- Fixed bug in corp that made last city production be the production for all cities for newly created product.\n- Fix bug that allowed reputation to transfer to new jobs.\n- Fixed memory leak with ns2.\n- nerf noodle bar\n\n## v0.57.0 - 2021-10-16 It was too cheap! (hydroflame & community)\n\n** BREAKING (kindof) **\n\n- purchased server cost now scales exponentially past 2^10.\n I'm going to actually explain this one: Currently the cost of a 2^20GB server is 57b\n Most players can get that before their first install. In an effort to nerf good players\n a softcap was added. This softcap is different for every BN.\n\n** Script Editor **\n\n- Added a theme that is close to monokai. Unfortunately a full monokai is impossible because\n Monaco doesn't have a very good tokenizer.\n- Opening a file and connecting to a new server will still save the file on the server that the file\n was opened.\n\n** Netscript **\n\n- New function: alert, which creates a textbox.\n- New function: toast, creates a notification in the bottom right.\n- New function: upgradeHomeCores (@Saynt_Garmo)\n- New function: atExit, allows you to set a callback for when the script closes.\n- New kindof function: autocomplete, this allows you to tell the game what it should\n autocomplete on the terminal.\n\n** Augmentation **\n\n- ENM Core (the Augmentation from The Black Hand with the highest rep cost) rep cost\n reduced from 250 to 175. This will help new players transition from TBH to BitRunners more easily.\n\n** Bladeburner **\n\n- New general action: Incite Violence. This action adds other action counts but increases chaos.\n\n** Misc. **\n\n- Current bladeburner action is shown on the character overview.\n- Fix blackop being #000 on #000.\n- The last clicked Tail Box goes in front of the others.\n- Fixed an issue where some values were loaded as 0 when they should be null.\n- Implemented toasts.\n- .msg are no longer saved in the text file.\n- Tail boxes no longer display all the args, they use \"...\" after 30 characters.\n- Fixed cancelation penalty bonus not being properly applied after the IP <-> hostname switch.\n- Fixed an exploit where you could send non-strings or numbers to other scripts.\n- Fixed issue when trying to work for a faction with a work type that doesn't exist while\n already working for that faction.\n- Fixed not being able to work for the CIA. (Don't ask)\n- nerf noodle bar\n\n## v0.56.0 - 2021-10-11 Trimming the backlog (hydroflame & community)\n\n** BREAKING **\n\n- The 'write' function is now async. This helps when making scripts that write scripts.\n\n** Terminal **\n\n- 'grow' and 'weaken' have been added as terminal command. This should help player transition\n from commands to scripts. The tutorial also talks about it.\n- 'cp' command added\n- Improved performance by rate limiting refresh.\n\n** IP vs Hostname **\n\n- The game now uses hostname as primary key for it's servers (yeah believe it or not IPs were\n used until then). This has caused some issues with purchased servers (they couldn't be sold).\n You might need to soft reset for the game to fully convert itself.\n\n** Sleeve **\n\n- Fixed bug where they couldn't train at Volhaven.\n- No longer consume all bonus time at once, making it look buggy.\n\n** SF9 **\n\n- Now boosts hacknet production by 8/12/14%\n\n** Hacknet Servers **\n\n- production nerfed by 10%\n- Max money increase gets weaker above 10t max money\n\n** Corporation **\n\n- Warehouse tooltip now also displays the amount of space taken by products.\n- Changed research box completely to avoid dependency on Treant (Treant is a pita)\n- All textbox should accept MAX/MP case insensitive.\n- Fixed export popup not refreshing dropdowns correctly.\n- Fixed product mku becoming zero\n- Increased scaling of Wilson to avoid feedback loop.\n- Can no longer get in debt by buying real estate\n- Bonus time is consumed faster.\n\n** Netscript **\n\n- isBusy takes bitverse and infiltration into account\n- hospitalize can't be called when in infiltration.\n- setToCommitCrime now accepts crime rough name instead of perfect name.\n- disableLog All now works for bladeburner functions.\n- Fixed netscript port for ns1.\n\n** Augmentation **\n\n- Added augmentation to Ti Di Hui that removes penalty for being unfocused.\n- Neuroflux no longer appears in special factions.\n\n** Script Editor **\n\n- Ram check is debounced instead of refreshed every second.\n- Added the vscode extension documentation to the game (it doesn't work well, thought)\n- Fixed issue where autocomplete list would grow forever\n- Added semi-monokai as theme.\n- Fixed issue where modifying filename would mess it up.\n- Font size can be changed now.\n\n** Infiltration **\n\n- Fixed issue where game controls would become unfocused.\n\n** Misc. **\n\n- Fixed loader incorrectly assuming some null values are incorrect.\n- installBackdoor trigger Bitverse sequence\n- Some improvements to the theme editor\n- Improved documentation about where to learn javascript.\n- Added some instructions for contributors.\n- Fixed typo in corporation sell shares modal (@Saynt_Garmo)\n- Fixed pagination being black on black in Active Scripts\n- Create Script tab renamed to Script Editor\n- Fixed an issue where corp some textbox wouldn't update when changing city.\n- Fixed an issue where hacknet online time was always 0.\n- Netscript function prompt fixed.\n- Fixed miscalculation in growth.\n- Script with syntax errors will try to be a tad more helpful.\n- Corporations can no longer bribe bladeburners.\n- Augmentation Graphene Branchiblade renamed to Brachi, like the rest of them.\n- All ram is displayed in GB/TB/PB now.\n- Game now saves when saving a file, this can be turned off.\n- Several improvement to log window.\n- Bladeburner current action returns General type instead of the name of the action.\n- Bladeburner travel and Sleeve travel respect disable ASCII.\n- Tutorial fits on small screens.\n- Import is much slower but more consistent now.\n- Fix intelligence not updating properly.\n- Added SF -1: Time Compression\n- ReadTheDoc theme now matches the game.\n- Logbox should wrap text better\n- Logbox behavior should feel better.\n- Fix font for AutoLink.exe\n- nerf noodle bar\n\n## v0.55.0 - 2021-09-20 Material UI (hydroflame & community)\n\n** Global **\n\n- The game is now 100% in typescript, react, and Material-UI\n\n** Misc. **\n\n- Corporations can no longer bribe special factions\n- Infiltration can no longer lose focus of the keyboard.\n- Fix terminal line limit\n- Added theme editor\n- Theme applies on game load (@Nolshine)\n- Sleeves no longer consume all bonus time for some actions\n- Fix a bug where the autocomlete list would get duplicates\n- Fix tutorial not scaling properly on small screens\n- Import should be more consistent\n- Typo with 'help' command\n- Fix infinite loop in casino\n- nerf noodle bar\n\n## v0.54.0 - 2021-09-20 One big react node (hydroflame & community)\n\n** UI **\n\n- The UI is now completely(ish) in react and I'm starting to implement\n Material-UI everywhere. This will help make the game feel more consistent.\n- Major help from (@threehams)\n- New Terminal\n- New Active Scripts page\n- New sidebar.\n- New Character overview\n- New tutorial\n- New options page\n- New create program page (@Nolshine)\n\n** Netscript **\n\n- Add companyName to getPlayer\n\n** Factions **\n\n- Megacorp factions are no longer removed when installing.\n\n** Corporation **\n\n- All research tooltips are always visible.\n- Smart supply is enabled by default if purchased (@Nolshine)\n\n** Misc. **\n\n- Fix \"Game saved\" animation. (@Nolshine)\n- Update commitCrime documentation (@Tryneus)\n- Fix logbox scrolling weird (@Nolshine)\n- Fix weird scrolling in corporations (@BartKoppelmans)\n- Fix typo (@BartKoppelmans & @Nolshine)\n- Delete game now has a confirmation modal (@Nolshine)\n- Fix issue where skills would not get properly updated when entering new\n BN. (@Nolshine)\n- Convert create gang to popup (@vmesecher)\n- Fixed a bug that prevented travel to Sector-12 and New Tokyo when not using\n ASCII art.\n- nerf noodle bar\n\n## v0.53.0 - 2021-09-09 Way too many things. (hydroflame & community)\n\n** Dev? **\n\n- The entire codebase has been run through a code prettifier, hurray for consistency. (@threehams)\n- Lots of test. (@threehams)\n- Massive improvements to build speed. (@threehams)\n- Dev notes: This won't affect any players but is immensely useful for me.\n\n** Hacknet **\n\n- Converted to ts/react\n\n** Resleeving **\n\n- Converted to ts/react\n\n** Sleeves **\n\n- Converted to ts/react. The ui should also have a better feel.\n- Fixed a bug that allowed players to recover shock much faster than intended.\n\n** BN10 **\n\n- You have access to Sleeves right away\n- In BN10 Sleeves start with 75 shock and 25 sync.\n\n** MathJax **\n\n- Several tooltips have been updated to display the relevant formula in Mathjax, e.g. Favor and reputation\n\n** Corporation **\n\n- Completely rewritten in React. Paving the way for bigger change.\n- Smart Supply is now smarter and won't deadlock the warehouse. It is also more configurable.\n- Several UI fixes.\n\n** Bladeburner **\n\n- Action count is no longer decided when joining the Bladeburners. Experiences for all players should be more similar.\n\n** Factions **\n\n- No factions have home computer ram requirement. This caused some confusion for new players.\n\n** Gang **\n\n- Made it clear when there's a new equipment coming up.\n\n** Netscript **\n\n- getActionCountRemaining now returns Infinity for bladeburner general actions. (@brubsy)\n- getActionEstimatedSuccessChance now returns 100% for Diplomacy and Hyperbolic Regeneration Chamber. (@brubsy)\n- disableLog('ALL') now disables all logs individually, meaning you can re-enable the ones you want after. (@Cass)\n- getPlayer returns numPeopleKilled.\n- Dynamic RAM calculation errors have a better error message.\n- Hide some functions from autocomplete.\n- Added getAugmentationPrice, getAugmentationRepReq, deprecated getAugmentationCost. (@TempFound)\n- Fixed bug where some crime API would return \"assassinate\" when that's not accepted in other functions.\n\n** Coding Contract **\n\n- Spiralize Matrix is easier to read.\n\n** Misc. **\n\n- The world map is now used in sleeve travel and bladeburner travel.\n- noselect a bunch of stuff.\n- Ascii maps letters are more contrasting\n- Updated documentation for infiltration.\n- Most money costs in the game will turn grey/cyan when you don't have enough money.\n- Donation textbox has better look & feel.\n- Tech vendors ram & cores buttons have better look and feels.\n- cores cost modified to be a formula instead of a semi-random array of numbers.\n- Tech vendors now give a hint about where to get bigger servers.\n- logboxes now displays whitespaces exactly. (@Cass)\n- nerf noodle bar\n\n## v0.52.9 - 2021-08-27 Less lag! (hydroflame & community)\n\n** Active Scripts page **\n\n- Now less laggy, has pagination.\n\n** File diagnostic **\n\n- Added a popup found under options that shows the files you own and how\n large they are. This help find bugs and leftover massive logs files.\n\n** Corporation **\n\n- Added safeguard against a very specific bug that causes NaN money. I'm\n still not sure what the root cause is but it should prevent corp from\n breaking.\n\n** Netscript **\n\n- tprintf is a new function that doesn't print the filename.\n\n** Misc. **\n\n- Infiltration kills you if you try to automate it. (@threehams)\n- Fix beautify button not working\n- Added bladeburner_analysis_mult to getPlayer() (@brubsby)\n- Fixed joining bladeburner via netscript functions. (@omuretsu)\n- All bladeburner actions are click-to-copy\n- nerf noodle bar\n\n## v0.52.8 - 2021-08-23 Fixing the previous patch tbh ROUND 2 (hydroflame)\n\n** Script editor **\n\n- Correctly reloads old script when clicking \"Script Editor\"\n- No longer jumps to the end of the text for no reason.\n\n** Hash upgrades **\n\n- Fixed an issue where the default option would say ecorp but was really\n foodnstuff\n\n** Misc. **\n\n- The \"Delete all active script\" button under the options has a clearer\n description.\n- Removed some debug console.log\n- nerf noodle bar\n\n## v0.52.7 - 2021-08-21 Fixing the previous patch tbh (hydroflame)\n\n** Netscript **\n\n- API BREAKING CHANGE: getActionEstimatedSuccessChance now returns a pair of\n value to reflect the UI changes. I'm very sorry.\n\n** Bladeburner **\n\n- General actions now display time required.\n- Recruitment now displays success chance.\n- All other success chance now display a range instead of a single value\n The real value is guaranteed to be within that range.\n\n** Misc. **\n\n- Fix tutorial not working after Monaco upate\n- Fix logbox logs not taking up the whole logbox\n- Fix script editor shortcut (ctrl+b)\n- Fix Corporation popup appearing in the wrong order, hiding one of them\n- Fix error when loading Corp\n- Fix logbox dragging (smoother now)\n- Fix logbox name collision\n- Fix logbox allowing to open the same box multiple times\n- Fix netscript write.\n- nerf noodle bar\n\n## v0.52.6 - 2021-08-21 Logboxes and VS-code (hydroflame)\n\n** Text Editor **\n\n- Ace and Codemirror have been removed in favor of monaco (web version of\n vs-code). The options are a bit lackluster but more will be added as\n feedback comes.\n\n** Log boxes **\n\n- Multiple log boxes can be opened at once. They can be moved around the\n screen. (but the movement behavior is a bit weird.)\n\n** Misc. **\n\n- Job promotion now correctly updates the UI.\n- Milestones now call the faction CyberSec instead of CSEC\n- Can no longer create file that break the filesystem.\n- Remove dollar sign in blade contract UI element\n- nerf noodle bar\n\n## v0.52.5 - 2021-08-19 CPU cores are useful!? (hydroflame)\n\n** Terminal **\n\n- When executing 'run SCRIPT' any script can now add '--tail' to\n automatically bring up the logs.\n\n** Netscript **\n\n- The 'flags' function now works with single letter flags but they only take\n one dash.\n- Fix several broken bladeburner netscript functions.\n- Fix gang.getMemberInformation returning inconsistent data after the gang\n rework.\n\n** CPU Cores **\n\n- CPU Cores on the home computer now provide a bonus to grow() money gain\n and makes weaken lower more security. Only for scripts running on 'home'\n\n** Misc. **\n\n- Fix weird scrolling in the new Bladeburner React console.\n- nerf noodle bar\n\n## v0.52.4 - 2021-08-19 Bladeburner in React (hydroflame)\n\n** Bladeburner **\n\n- The entire UI was rebuild in React. It should be more responsive\n\n** Hacknet **\n\n- Displays how many time each hash upgrade was bought.\n- Displays cummulative effect of the upgrade.\n- Removed \"Close\" button from hash upgrade menu.\n\n** Misc. **\n\n- More popup/modals have dark background, can be dismissed by clicking\n outside, or by pressing escape.\n- Small reword in the guide.\n- Fix several typos in the bladeburner documentation.\n- Linting (no one cares except the dev)\n- nerf noodle bar\n\n## v0.52.3 - 2021-08-15 Gangs were OP (hydroflame)\n\n** Gang **\n\n- Significant rework. Ascension is now based on exp gained.\n- All upgrades give exp bonuses.\n- Maximum gang members reduced to 12.\n- Respect required to recruit sharply increased.\n- Rewritten in React, the UI should be smoother and less laggy now.\n\n** Infiltration **\n\n- Now isTrusted protected.\n\n** Misc. **\n\n- Many UI element are now \"noselect\" protected.\n- Fixed an issue where you could join the same faction twice via script and\n UI simultaneously.\n- Factions list screen converted to React.\n- nerf noodle bar\n\n## v0.52.2 - 2021-08-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)\n\n** Source-Files **\n\n- Source-File 11 now also provides a small reduction to the price increase\n multiplier.\n\n** Augmentations **\n\n- New Augmentation offered by Aevum, themed around 777 and offers some basic\n programs.\n- Augmentation descriptions are now more concise and consistent.\n\n** Misc. **\n\n- nerf noodle bar\n\n## v0.52.1 - 2021-08-10 bugfixing (hydroflame & community)\n\n** Misc. **\n\n- Fix game crash/corruption when quitting a job while working for it unfocused.\n- Fix typo in corporation Market Data.\n- Fix typo in docs for hackPercent.\n- The tutorial encourages the players to connect to home before creating `n00dles.script`\n- The dark web `buy` command now accepts `-1` (one) and `--list` instead of just `-l`. Helps some confused players.\n- Character overview screen no longer hidden on the corporation screen.\n- Infiltration difficulty display is now more explicit (It's a big arrow instead of just one word.)\n- Fix wrong ram value in tutorial. (@MageKing17)\n- Plenty of augmentation description cleanup (@Kwazygloo)\n- Plenty of typo/description fixed (@MageKing17)\n- Cleanup description of singularity function on readthedocs (@PurePandemonium)\n- Fix bug when autolinking a server while backdooring (@schroederIT)\n- nerf noodle bar\n\n## v0.52.0 - 2021-06-13 Infiltration 2.0 (hydroflame & community)\n\n**Infiltration**\n\n- Completely reworked. Not the same mechanic at all.\n\n**Terminal**\n\n- tail is smarter. It automatically assume the only possible options in some\n cases.\n\n**Intelligence**\n\n- Now available when starting BN5 instead of after beating it for the first\n time.\n- Nerf the effect of intelligence on reputation gain.\n\n**Augmentation**\n\n- Added a new augmentation, the 'Unstable Circadian Modulator', whose\n gimmick is that its stats are randomized every hour.\n\n**Netscript**\n\n- 'getPlayer' is not a singularity function anymore.\n- 'hacknetNodes.constants' returns the correct values.\n- 'createGang' has been added.\n- 'inGang' has been added.\n\n**Tutorial**\n\n- Updated the tutorial. Made it look cleaner, fixed typos, etc.\n\n**Misc.**\n\n- Fix many typos in literature (@kwazygloo)\n- Fix being able to unfocus from gym and university.\n- Fix being able to do hacking missions while unfocused.\n- Fix many typos in Augmentation descriptions (@kwazygloo)\n- More numbers handle absurdly large values. (@Tesseract1234567890)\n- Fix many typos (@Tesseract1234567890)\n- Fixed an issue that caused a UI desync when sleeves were set to workout\n stats other than strength at the gym.\n- Fix weird alignment of donation text box and button. (@Tesseract1234567890)\n- Fixed an issue where reputation could be transfered to new jobs when unfocused.\n- Empty stack traces should no longer appear.\n- Purchasing anything with Infinity money doesn't result in NaN.\n- nerf noodle bar\n\n## v0.51.10 - 2021-05-31 Focus Mark, Focus! (hydroflame)\n\n**Focus**\n\n- You can now use the terminal and write scripts while working for factions\n but you will gain reputation at a slower rate.\n\n**SF -1**\n\n- Added a new SF -1: Bypass\n\n**Gang**\n\n- \"Vigilante justice\"/\"Ethical hacking\" now reduces wanted level by a very\n small percentage as well an absolute value.\n\n**Netscript**\n\n- 'tFormat' now has a second argument to display with millisecond precision.\n- 'purchaseSleeveAug' can no longer purchase the same aug over and over for\n the same sleeve.\n- fix typo in logging for 'getServerSecurityLevel'\n- Fixed some weird issue where very rarely you would get 0 exp from 'grow'\n- 'getActionTime' now returns correct values for Diplomacy and Regeneration.\n\n**Corporations**\n\n- Fixed an exploit where you could get nearly infinite corporation funds by\n entering negative numbers in textboxes.\n- Fixed an exploit where shares could be sold again by clicking the\n \"sell share\" button via scripts.\n\n**Documentation**\n\n- typo fix in purchaseTor\n- typo fix in basicgameplay/stats\n\n**Misc.**\n\n- Very large number will no longer appear as \"$NaNt\"\n- Hash capacity now displays in the \"big number\" format.\n- nerf noodle bar\n\n## v0.51.9 - 2021-05-17 offline progress and exports! (hydroflame & community)\n\n**Alias**\n\n- several commands can be included in 1 alias. Recursive alias now work to\n a depth of 10. (@Dawe)\n\n**Offline**\n\n- Offline money gain has been reworked (it is more generous)\n- If you're not working anywhere and go offline the game will work for you\n at all your factions evenly.\n\n**Export**\n\n- Exporting now gives +1 favor to all joined factions every 24h.\n\n**Corp**\n\n- Self-fund with an invalid name no longer takes away 150b anyway.\n- Can no longer export negative amount\n\n**Bladeburner**\n\n- No longer waste overflowing time.\n\n**Text Editors**\n\n- All settings will now be saved and loaded correctly.\n\n**Terminal**\n\n- 'scan' now works for servers that are more than 21 character long.\n\n**Misc.**\n\n- ls now correctly lists all files.\n- importing auto save+reloads (@Dawe)\n- Fix a bug where .fconf could not be created\n- Fix formatting inconsistencies for some logs of netscript functions.\n- Fix a bug where Cashroot starter kit would appear as [object Object] in\n confirmation dialog.\n- Fix some ram not displayed as 0.00GB\n- Fix error message throw undefined variable error\n- City hall now has some generic text if you can't create a corp yet.\n- Deleting a file without extension now returns an appropriate error message.\n- Fixed an issue where bladeburner would miscalculate the cost of hospitalization.\n- It is now possible to suppress bladeburner \"action stopped\" popup.\n- Updated several dependencies (big who cares, I know)\n- ls no longer prints lingering newline.\n- Money earned/spent by sleeves is now tracked under Character>Money\n- nerf noodle bar\n\n## v0.51.8 - 2021-05-07 It was there all along (hydroflame & community)\n\n**Servers**\n\n- Update n00dles metadata\n\n**Netscript**\n\n- 'hashGainRate' use the correct 'usedRam' and 'maxRam'\n- Fix 'setActionAutolevel' logging.\n- Fix 'setActionLevel' not working at all.\n- Add 'installBackdoor' singularity function.\n\n**Hacknet**\n\n- Fix Hacknet Servers total production always displaying 0\n\n**Documentation**\n\n- Updated guide to no longer recommend BN12.\n- Fix documentation for maxNumNodes (@ModdedGamers)\n- Fix typo in 'sourcefiles.rst'\n- Fix typo in 'recommendedbitnodeorder.rst'\n- Fix 'getServer' documentation missing 'server' argument.\n- Fix missing ram cost in 'getData.rst'\n- Fix basic formulas examples.\n- Fix typo in BN11 description.\n- Fix formatting issue in Bladeburner (@Pimgd)\n\n**Misc.**\n\n- Fix negative money being displayed in full.\n- Fix Hacking Missions not working.\n- Fix Corporation tree not rendering.\n- Fix script being needlessly recompiled. This should save real ram (not game ram)\n- w0r1d_d43m0n can be backdoored\n- Coding Contracts title is click-to-copy (@Rodeth)\n- Covenant memory upgrade works better.\n- Fix Neuroflux not being correctly calculated when entering BN with SF12.\n- Delete Active Script now delete all active scripts, not just home.\n- Now you can 'cd' in directories that only contain '.txt' files.\n- Fix 'analyze' always saying players had root access\n- Passive faction rep no longer builds for special factions.\n- Donation option no longer appears for special factions.\n- Rephrased some milestones.\n- donation textbox now accepts money in the format '1b' and the like (@Dawe)\n- Fix being able to join hated factions simultaneously. (@Dawe)\n- 'ls' now displays files in multiple column. (Helps players with many files)\n- Bladeburner multiplers now appear under Character>Stats and\n Character>Augmentation when they are relevant.\n- Fix missing functions syntax highlight in codemirror.\n- Fix infiltration number formatting.\n- script income transfers to parent on death. This helps keep track of\n income for scripts that spawn short lived scripts.\n- nerf noodle bar\n\n## v0.51.7 - 2021-04-28 n00dles (hydroflame & community)\n\n**Tutorial servers**\n\n- All the tutorial servers have been reverted to their original value\n- The new server n00dles has been added as tutorial server.\n\n**Terminal**\n\n- 'tail' now accepts Pid.\n- 'analyze' now handles Hacknet Servers correctly.\n- 'ServerProfiler.exe' now handles Hacknet Servers correctly.\n\n**SF12**\n\n- Now makes you start with Neuroflux Governor equal to the level of the SF.\n\n**Netscript**\n\n- Deprecated 'getServerRam'.\n- 'getServerMaxRam' added to replace 'getServerRam'\n- 'getServerUsedRam' added to replace 'getServerRam'\n- 'getBitnodeMultipliers' is available inside BN5\n- Time logged by hack/grow/weaken now displays in human time.\n- thread count logged by hack/grow/weaken now displays with commas every\n thousands place.\n\n**Donation**\n\n- Always visible but locked until favor requirements are reached.\n\n**Augmentations**\n\n- City factions has been rebalanced to give a reason to visit them all.\n\n**Sleeves**\n\n- Fix sleeves not being able to work at Volhavens gym.\n\n**Lint**\n\n- This shouldn't change anything but was like 10h of work. So I'm logging it.\n\n**Misc.**\n\n- Plethora of typo fixed (@Pimgd)\n- ps documentation fix (@Dawe)\n- The dev menu now has a quick bitflume option.\n- Fix SF -1 not being as powerful as intended.\n- Fix cashroot starter kit not displaying correctly.\n- Fix DOM element 'character-overview-text' being nested twice.\n- Hacknet documentation example fix.\n- Money amount under 1000 dont display 3 decimal anymore.\n- Fix nextSourceFile flag miscalculation on the bitverse (for Bn12)\n- Faction invite text says \"Decide later\"/\"Join!\" instead of \"No\"/\"Yes\"\n- nerf noodle bar\n\n## v0.51.6 - 2021-04-28 Backdoor! (hydroflame & community)\n\n**Backdoor**\n\n- a new terminal command, backdoor, has been added to help differentiate\n between the terminal hack command and the netscript hack function. (@dewint)\n\n**Servers**\n\n- foodnstuff, sigma-cosmetics, and joesguns have been rebalanced to help new players.\n\n**Milestones**\n\n- A new tab under the Help menu has been added to guide players through the\n game.\n\n**Casino**\n\n- Blackjack has been added (@BigD)\n\n**Netscript**\n\n- 'prompt' now converts input to JSON.\n- 'getRunningScript' is a new netscript function that returns a bunch of\n data related to a running script.\n\n**Coding contracts**\n\n- trivial puzzles should no longer appear.\n\n**Infiltration**\n\n- All numbers are formatted like the rest of the game.\n\n**Misc.**\n\n- Server security is capped at 100.\n- Added option to quit a job.\n- 'cd' no longer works on unexistent folders.\n- cd with no arguments brings you back to top level folder (@Andreas)\n- 'softReset' documentation udpated.\n- Money tracker now accounts for going to the hospital manually.\n- codemirror is now the default editor (for new save files)\n- fix typo in dark web help text (@Rodeth)\n- so many documentation and typos fixes (@Pimgd)\n- A corruption visual effect has been added to location with servers that\n have backdoor installed. (@dewint)\n- nerf noodle bar\n\n## v0.51.5 - 2021-04-20 Flags! (hydroflame)\n\n**Netscript**\n\n- 'flags' is a new function that helps script handle flags.\n This is subject to change if it doesn't meet the need of the players.\n- 'ps' now returns the pid.\n- 'tail' now works with pid as first argument.\n- 'tail' hostname defaults to current server. (like the documentation says)\n- 'isRunning' hostname defaults to current server.\n- 'isRunning' now works with pid as first argument.\n\n**Gang**\n\n- Nerfed ascension mechanic once again :(\n\n**Misc.**\n\n- Souce-File typo fix\n- Fix 'while you were away' screen.\n- Bladeburner team size can no longer be set to negative amounts.\n- nerf noodle bar\n\n## v0.51.4 - 2021-04-19 Manual hacking is fun (hydroflame)\n\n**Manual hacking**\n\n- These bonus require an install or a soft reset to take effect.\n- Manual hacking gyms and university gives you a 10% discount.\n- Manual hacking a corporation server decreases the penalty for leaving work\n early.\n\n**BladeBurner**\n\n- nerfed int exp gained.\n\n**Documentation**\n\n- purchaseServer specifies what happens on failure.\n- Fixed typo in recommended bitnode page.\n- Removed misleading ram requirements for hacking factions.\n\n**Netscript**\n\n- growthAnalyze handles Infinity correctly.\n\n**Misc.**\n\n- Faction Augmentation will list how much reputation is required even after\n that goal has been reached.\n- Removed dollar sign in travel agency confirmation dialog box.\n- Fixed typo in alpha-omega.lit\n- the 'Game saved!' text no longer blocks the save game/options button.\n- The text editor now remembers the location of your cursor and restores it.\n- skills are recalculated instantly.\n- Fix typo in Operation Zero description.\n- nerf noodle bar\n\n## v0.51.3 - 2021-04-16 Y'all broke it on the first day (hydroflame)\n\n**Passive faction reputation**\n\n- Reworked, from 1 rep / 2 minute. Now is a complicated percentage of the\n reputation you'd gain working for them. It's not op but it feels a bit\n more useful.\n\n**Netscript**\n\n- print/tprint now take any number of arguments.\n- print/tprint will now print object as json.\n- print/tprint now handle passing in an undefined argument properly.\n\n**Casino**\n\n- Cannot bet negative money anymore.\n- Roulette max bet is a bit higher.\n- Coin Flip has a small cooldown.\n- All buttons reject unstrusted mouse events.\n\n**Documentation**\n\n- Changed a message that said nsjs only works on Chrome.\n\n**Bugfix**\n\n- hacknet.maxNumNodes now works for both nodes and servers.\n- Fixed a bug where the popup boxes would contain data from previous popup boxes.\n- .js files will also have the 'export async function' boilerplate.\n\n**Misc.**\n\n- turned off web form autocomplete for the terminal text input.\n- Fixed an issue on Windows+Firefox where pressing up on the terminal would\n bring the cursor to the begining of the line. (Issue #836)\n- Hacknet node names is easier to handle for screen readers.\n- Money spent on classes is now tracked independently of work money.\n- running coding contract from the terminal will display its name.\n- nerf noodle bar\n\n## v0.51.2 - 2021-04-09 Vegas, Baby! (hydroflame)\n\n**New location: The Iker Molina Casino**\n\n- A casino opened in Aevum. However the house is rumored to cheat. If only\n we could give them a taste of their own medicine.\n\n**Misc.**\n\n- Link to discord added under options\n- 'getMemberInformation' doc updated, oops\n- tech vendor now handle max ram and cores.\n- nerf noodle bar\n\n## v0.51.1 - 2021-04-06 Bugfixes because the author of the last patch sucks (it's hydroflame)\n\n**Netscript**\n\n- 'getPlayer' returns players faction and tor\n- 'hospitalization' is a new singularity function.\n- 'gang.getMemberInformation' now returns more information.\n- 'hacknet.hashCapacity' is a new hacknet function that returns the maximum hash capacity.\n\n**Hospitalization**\n\n- Now only cost at most 10% of your money.\n\n**Bugfix**\n\n- confirmation dialog box no longer use previous text\n\n**Accessibility**\n\n- The game is a little easier to handle for screen readers (yes, there's an\n absolute legend playing this game with a screen reader)\n- Infiltration use buttons instead of a-links\n- New option to disable ASCII art. This will make the metro map and world\n map display as a list of buttons.\n\n**Misc.**\n\n- 'fl1ght.exe' will no longer suggest the combat path. Related faction\n requirements unchanged.\n- nerf noodle bar\n\n## v0.51.0 - 2021-03-31 Formulas (hydroflame)\n\n**Formulas API**\n\n- A new API is introduced, this gives players access to various formulas used in the game.\n It'll help you make more informed decisions.\n\n**Netscript**\n\n- 'getServer' is a new function meant to be used with the formulas API.\n- 'getPlayer' is a new function meant to be used with the formulas API.\n- 'getStats' and 'getCharacterInformation' are deprecated in favor of 'getPlayer'\n- 'getCurrentServer' is a new function that returns the server the player is currently connected.\n\n**Display**\n\n- All money should now consistently be orange.\n- All rep should now consistently be light-yellow.\n- Most numbers should display consistently now (aka all money is formatted the same).\n\n**Click to copy**\n\n- Certain UI elements are now 'click-to-copy'\n\n** Misc. **\n\n- nerf noodle bar\n\n## v0.50.2 - 2021-03-25 Everyone asked for this one. (hydroflame)\n\n**BitNodeMultipliers**\n\n- 'GangKarmaRequirements': a new multipler that influences how much karma is required to make a gang different bitnodes.\n\n**Netscript**\n\n- 'connect': a new singularity function that connects you to a server. (like the terminal command)\n- 'manualHack': a new singularity function that performs a manual hack on the players current server.\n- ns2 stack trace works on Firefox now.\n\n**Misc.**\n\n- New shortcut, Alt + b, brings you to bladeburner\n- New shortcut, Alt + g, brings you to gang\n- nerf noodle bar\n\n## v0.50.1 - 2021-03-22 (hydroflame)\n\n**Netscript**\n\n- getTaskStats works\n\n**Source-File -1**\n\n- Added a new Exploit\n\n**Factions**\n\n- Augmentations offered by a Faction but already bought are in a separate list at the bottom of the page.\n\n**Bug fixed**\n\n- Fixed a bug where completing a maxed non-repeatable BitNode would make its color on the BitVerse like level 1.\n\n**Misc.**\n\n- Minor spacing in stats tables.\n- nerf noodle bar\n\n## v0.50.0 - 2021-03-20 Intelligence (hydroflame)\n\n**Intelligence**\n\n- int exp gain and effect has been reworked. It is now much more easy to\n acquire and far more powerful. The goal here is to feel like players have\n another tool in their arsenal.\n\n**Factions**\n\n- Hacking factions no longer have hacking level requirements since their associated servers do.\n\n**Misc.**\n\n- Sleeve styling.\n- number formatting\n- remove wiki button in Hacking Missions.\n- Fix NaN displayed when very very large numbers are reached.\n- nerf noodle bar\n\n## v0.49.2 - 2021-03-13 (hydroflame)\n\n**BN8**\n\n- A new bitnode multipler has been added, it lets you reduce money from a\n server without gaining actually any money. This is important for BN8 where\n hack/grow can influence the stock market. No money can be gained from\n hacking but server money can still be reduced.\n\n**Documentation**\n\n- readthedocs should now be more consistent and many examples were added.\n\n**Netscript**\n\n- Ace editor will now correctly highlight all functions.\n- 'tFormat' is a new netscript function that returns a human readable\n representation of milliseconds. eg. \"2 hours 15 minute 43 seconds\"\n\n**Gang**\n\n- style improvements\n\n**Bladeburner**\n\n- style improvements\n- fix bug where 'skill list SKILL' would crash if skill is level 0.\n\n**Sleeve**\n\n- karma gain now scales with sync.\n\n**Misc.**\n\n- Fix issue where the effective stats under Character>Stats were being calculated.\n- nerf noodle bar\n\n## v0.49.0 - 2021-03-11 Source-File -1 (hydroflame)\n\n**Source-File -1**\n\n- For advanced players: The game now embraces exploits and will reward\n players for doing so.\n\n**Gang**\n\n- ascension is less effective as the ascension multiplier goes up.\n- territory gain scales with power difference.\n\n**Netscript**\n\n- 'gang.getEquipmentStats' returns the stats of the equipment.\n- 'gang.getTaskStats' returns the stats of a task.\n- 'getCrimeStats' returns the stats of a crime.\n- Crashes should now print the ns stack trace.\n- Log messages are now more consistent.\n- 'softReset' now accepts a callback script like 'installAugmentations'\n\n**Misc.**\n\n- Minor formatting under Hacking>Active Scripts\n- option menu colors now match the rest of the game, kinda.\n- nerf noodle bar\n\n## v0.48.0 - ASCII - 2021-03-07 (hydroflame)\n\n**ASCII**\n\n- Travel Agency now displays a world map\n- Cities are now top view of metro station maps\n\n**Netscript**\n\n- 'softReset' is a new netscript function that performs a soft reset\n regardless of if the player has bought augmentations or not.\n- 'getAugmentationStats' is a new netscript function that returns the stats of\n an augmentation.\n- getCharacterInformation now additionally returns exp\n- pid resets back to 1 when installing or destroying a BitNode.\n- New '.ns' scripts start with a main function.\n- 'hacknet.maxNumNodes' returns the maximum number of hacknet nodes.\n\n**Bladeburner**\n\n- Current stamina will scale as max stamina increases, this prevents players\n from having very high penalty when they gain huge amount of exp at the\n start of a reset.\n\n**Misc.**\n\n- Fixed an issue where SF3 was listed as infinitly repeatable and SF12 as\n having a limit of 3.\n- Fixed an issue where the gang equipment screen would freeze the game if a\n script installed augmentations while it is open.\n- All BonusTime now displays in the 'H M S' format.\n- Donation textbox style updated to match the rest of the game.\n- Corporation name style updated to match the rest of the game.\n- minor formatting under Hacking>Active Scripts\n- typo in BN12 description\n- BN12 now reduces contract money\n- Character>Stats percentages are aligned, server and hacknet limit are\n displayed, if the player has SF5 the reduces stats are shown.\n- Character>Augmentations now displays by how much the player stats will\n increase.\n- Character>Augmentations has a badge indicating how many augs the player\n has bought but not installed\n- Character>Factions has a badge indicating how many factions have pending\n invites.\n- nerf noodle bar\n\n## v0.47.2 - 7/15/2019\n\n**Netscript Changes**\n\n- Added tail() Netscript function\n- hacknet.getNodeStats() function now returns an additional property for Hacknet Servers: hashCapacity\n- When writing to a file, the write() function now casts the data being written to a string (using String())\n- BitNode-selection page now shows what Source-File level you have for each BitNode\n- Overloaded kill() function so that you can kill a script by its PID\n- spawn() now only takes 10 seconds to run (decreased from 20 seconds)\n- run() and exec() now return the PID of the newly-executed scripts, rather than a boolean\n - (A PID is just a positive integer)\n- run(), exec(), and spawn() no longer need to be await-ed in NetscriptJS\n- Script parsing and RAM calculations now support ES9\n- installAugmentations() no longer has a return value since it causes all scripts to die\n- isBusy() now returns true if you are in a Hacking Mission\n- Bug fix: workForFaction() function now properly accounts for disabled logs\n- Bug fix: RAM should now be properly calculated when running a callback script with installAugmentations()\n- Bug fix: Fixed bug that caused scripts killed by exit()/spawn() to \"clean up\" twice\n\n**Misc Changes**\n\n- The 'kill' Terminal command can now kill a script by its PID\n- Added 'Solarized Dark' theme to CodeMirror editor\n- After Infiltration, you will now return to the company page rather than the city page\n- Bug fix: Stock Market UI should no longer crash for certain locale settings\n- Bug fix: You can now properly remove unfinished programs (the `*.exe-N%-INC` files)\n- Bug fix: Fixed an issue that allowed you to increase money on servers with a 'maxMoney' of 0 (like CSEC)\n- Bug fix: Scripts no longer persist if they were started with syntax/import errors\n- Bug fix: 'hack' and 'analyze' Terminal commands are now blocking\n- Bug fix: Exp earned by duplicate sleeves at universities/gyms now takes hash upgrades into account\n\n## v0.47.1 - 6/27/2019\n\n- Stock Market changes:\n\n - Transactions no longer influence stock prices (but they still influence forecast)\n - Changed the way stocks behave, particularly with regard to how the stock forecast occasionally \"flips\"\n - Hacking & growing a server can potentially affect the way the corresponding stock's forecast changes\n - Working for a company positively affects the way the corresponding stock's forecast changes\n\n- Scripts now start/stop instantly\n- Improved performance when starting up many copies of a new NetscriptJS script (by Ornedan)\n- Improved performance when killing scripts\n- Dialog boxes can now be closed with the ESC key (by jaguilar)\n- NetscriptJS scripts should now be \"re-compiled\" if their dependencies change (by jaguilar)\n- write() function should now properly cause NetscriptJS scripts to \"re-compile\" (by jaguilar)\n\n## v0.47.0 - 5/17/2019\n\n- Stock Market changes:\n\n - Implemented spread. Stock's now have bid and ask prices at which transactions occur\n - Large transactions will now influence a stock's price and forecast\n - This \"influencing\" can take effect in the middle of a transaction\n - See documentation for more details on these changes\n - Added getStockAskPrice(), getStockBidPrice() Netscript functions to the TIX API\n - Added getStockPurchaseCost(), getStockSaleGain() Netscript functions to the TIX API\n\n- Re-sleeves can no longer have the NeuroFlux Governor augmentation\n\n - This is just a temporary patch until the mechanic gets re-worked\n\n- hack(), grow(), and weaken() functions now take optional arguments for number of threads to use (by MasonD)\n- codingcontract.attempt() now takes an optional argument that allows you to configure the function to return a contract's reward\n- Adjusted RAM costs of Netscript Singularity functions (mostly increased)\n- Adjusted RAM cost of codingcontract.getNumTriesRemaining() Netscript function\n- Netscript Singularity functions no longer cost extra RAM outside of BitNode-4\n- Corporation employees no longer have an \"age\" stat\n- Gang Wanted level gain rate capped at 100 (per employee)\n- Script startup/kill is now processed every 3 seconds, instead of 6 seconds\n- getHackTime(), getGrowTime(), and getWeakenTime() now return Infinity if called on a Hacknet Server\n- Money/Income tracker now displays money lost from hospitalizations\n- Exported saves now have a unique filename based on current BitNode and timestamp\n- Maximum number of Hacknet Servers decreased from 25 to 20\n- Bug Fix: Corporation employees stats should no longer become negative\n- Bug Fix: Fixed sleeve.getInformation() throwing error in certain scenarios\n- Bug Fix: Coding contracts should no longer generate on the w0r1d_d43m0n server\n- Bug Fix: Duplicate Sleeves now properly have access to all Augmentations if you have a gang\n- Bug Fix: getAugmentationsFromFaction() & purchaseAugmentation() functions should now work properly if you have a gang\n- Bug Fix: Fixed issue that caused messages (.msg) to be sent when refreshing/reloading the game\n- Bug Fix: Purchasing hash upgrades for Bladeburner/Corporation when you don't actually have access to those mechanics no longer gives hashes\n- Bug Fix: run(), exec(), and spawn() Netscript functions now throw if called with 0 threads\n- Bug Fix: Faction UI should now automatically update reputation\n- Bug Fix: Fixed purchase4SMarketData()\n- Bug Fix: Netscript1.0 now works properly for multiple 'namespace' imports (import \\* as namespace from \"script\")\n- Bug Fix: Terminal 'wget' command now correctly evaluates directory paths\n- Bug Fix: wget(), write(), and scp() Netscript functions now fail if an invalid filepath is passed in\n- Bug Fix: Having Corporation warehouses at full capacity should no longer freeze game in certain conditions\n- Bug Fix: Prevented an exploit that allows you to buy multiple copies of an Augmentation by holding the 'Enter' button\n- Bug Fix: gang.getOtherGangInformation() now properly returns a deep copy\n- Bug Fix: Fixed getScriptIncome() returning an undefined value\n- Bug Fix: Fixed an issue with Hacknet Server hash rate not always updating\n\n## v0.46.3 - 4/20/2019\n\n- Added a new Augmentation: The Shadow's Simulacrum\n- Improved tab autocompletion feature in Terminal so that it works better with directories\n- Bug Fix: Tech vendor location UI now properly refreshed when purchasing a TOR router\n- Bug Fix: Fixed UI issue with faction donations\n- Bug Fix: The money statistics & breakdown should now properly track money earned from Hacknet Server (hashes -> money)\n- Bug Fix: Fixed issue with changing input in 'Minimum Path Sum in a Triangle' coding contract problem\n- Fixed several typos in various places\n\n## v0.46.2 - 4/14/2019\n\n- Source-File 2 now allows you to form gangs in other BitNodes when your karma reaches a very large negative value\n\n - (Karma is a hidden stat and is lowered by committing crimes)\n\n- Gang changes:\n\n - Bug Fix: Gangs can no longer clash with themselve\n - Bug Fix: Winning against another gang should properly reduce their power\n\n- Bug Fix: Terminal 'wget' command now works properly\n- Bug Fix: Hacknet Server Hash upgrades now properly reset upon installing Augs/switching BitNodes\n- Bug Fix: Fixed button for creating Corporations\n\n## v0.46.1 - 4/12/2019\n\n- Added a very rudimentary directory system to the Terminal\n\n- Added numHashes(), hashCost(), and spendHashes() functions to the Netscript Hacknet Node API\n- 'Generate Coding Contract' hash upgrade is now more expensive\n- 'Generate Coding Contract' hash upgrade now generates the contract randomly on the server, rather than on home computer\n- The cost of selling hashes for money no longer increases each time\n- Selling hashes for money now costs 4 hashes (in exchange for $1m)\n- Bug Fix: Hacknet Node earnings should work properly when game is inactive/offline\n- Bug Fix: Duplicate Sleeve augmentations are now properly reset when switching to a new BitNode\n\n## v0.46.0 - 4/3/2019\n\n- Added BitNode-9: Hacktocracy\n- Changed BitNode-11's multipliers to make it slightly harder overall\n- Source-File 11 is now slightly stronger\n- Added several functions to Netscript Sleeve API for buying Sleeve augmentations (by hydroflame)\n- Added a new stat for Duplicate Sleeves: Memory\n- Increase baseline experience earned from Infiltration, but it now gives diminishing returns (on exp) as you get to higher difficulties/levels\n- In Bladeburner, stamina gained from Hyperbolic Regeneration Chamber is now a percentage of your max stamina\n\n- Corporation Changes:\n\n - 'Demand' value of products decreases more slowly\n - Bug Fix: Fixed a Corporation issue that broke the Market-TA2 Research\n - Bug Fix: Issuing New Shares now works properly\n\n- Bug Fix: Money Statistics tracker was incorrectly recording profits when selling stocks manually\n- Bug Fix: Fixed an issue with the job requirement tooltip for security jobs\n\n## v0.45.1 - 3/23/2019\n\n- Added two new Corporation Researches\n- General UI improvements (by hydroflame and koriar)\n- Bug Fix: Sleeve Netscript API should no longer cause Dynamic RAM errors\n- Bug Fix: sleeve.getSleeveStats() should now work properly\n\n## v0.45.0 - 3/22/2019\n\n- Corporation changes:\n\n - Decreased the time of a full market cycle from 15 seconds to 10 seconds.\n - This means that each Corporation 'state' will now only take 2 seconds, rather than 3\n - Increased initial salaries for newly-hired employees\n - Increased the cost multiplier for upgrading office size (the cost will increase faster)\n - The stats of your employees now has a slightly larger effect on production & sales\n - Added several new Research upgrades\n - Market-TA research now allows you to automatically set sale price at optimal values\n - Market-TA research now works for Products (not just Materials)\n - Reduced the amount of Scientific Research needed to unlock the Hi-Tech R&D Laboratory from 10k to 5k\n - Energy Material requirement of the Software industry reduced from 1 to 0.5\n - It is now slightly easier to increase the Software industry's production multiplier\n - Industries now have a maximum number of allowed products, starting at 3. This can be increased through research.\n - You can now see an approximation of how each material affects an industry's production multiplier by clicking the \"?\" help tip next to it\n - Significantly changed the effects of the different employee positions. See updated descriptions\n - Reduced the amount of money you gain from private investors\n - Training employees is now 3x more effective\n - Bug Fix: An industry's products are now properly separated between different cities\n\n- The QLink Augemntation is now significantly stronger, but also significantly more expensive (by hydroflame)\n- Added a Netscript API for Duplicate Sleeves (by hydroflame)\n- Modified the multipliers of BitNode-3 and BitNode-8 to make them slightly harder\n- After installing Augmentations, Duplicate Sleeves will now default to Synchronize if their Shock is 0\n- Bug Fix: Bladeburner's Hyperbolic Regeneration Chamber should no longer instantly refill all stamina\n- Bug Fix: growthAnalyze() function now properly accounts for BitNode multipliers\n- Bug Fix: The cost of purchasing Augmentations for Duplicate Sleeves no longer scales with how many Augs you've purchased for yourself\n\n## v0.44.1 - 3/4/2019\n\n- Duplicate Sleeve changes:\n\n - You can now purchase Augmentations for your Duplicate Sleeves\n - Sleeves are now assigned to Shock Recovery task by default\n - Shock Recovery and Synchronize tasks are now twice as effective\n\n- Changed documentation so that Netscript functions are own their own pages. Sorry if this is annoying, it was necessary for properly cross-referencing\n- Officially deprecated the Wiki (the fandom site). Use the 'readthedocs' Documentation instead\n- Bug Fix: 'rm' Terminal and Netscript commands now work on non-program files that have '.exe' in the name (by Github user MasonD)\n- Bug Fix: The 'Find All Valid Math Expressions' Coding Contract should now properly ignore whitespace in answers\n- Bug Fix: The 'Merge Overlapping Intervals' Coding Contract should now properly accept 2D arrays when being attempted through Netscript\n\n## v0.44.0 - 2/26/2019\n\n- Bladeburner Changes:\n - Reduced the amount of rank needed to earn a skill point\n - Reduced the effects of the \"Reaper\" and \"Evasive System\" skills\n - Increased the effect of the \"Hyperdrive\" and \"Hands of Midas\" skills\n - Slightly increased the rate which the skill point cost rises for almost all skills\n - The \"Overlock\" Skill now has a maximum level of 90 instead of 95\n - Money earned from Contracts increased by 400%\n - Changed the way population affects success rate. Extreme populations now have less dramatic effects\n - Added two new General Actions: Diplomacy and Hyperbolic Regeneration Chamber\n - Lowered the rep and money cost of the \"Blade's Simulacrum\" augmentation\n - Significantly decreased the initial amount of Contracts/Operations (the \"Contracts/Operations remaining\" value)\n - Decreased the rate at which the amount of Contracts/Operations increases over time\n - Decreased the number of successes you need to increase the max level of a Contract/Operation\n - Increased the average number of Synthoid communities each city has\n - Reduced the amount by which a successful raid will decrease the population of a city\n - The \"riots\" event will now increase the chaos of a city by a greater amount\n - Significantly increased the effect that Agility and Dexterity have on action time\n- Added new BitNode multipliers:\n - HomeComputerRamCost - Affects how much it costs to upgrade home computer's RAM\n - DaedalusAugsRequirement - Affects how many Augmentations you need in order to get invited to Daedalus\n - FourSigmaMarketDataCost - Affects how much it costs to unlock the stock market's 4S Market Data\n - FourSigmaMarketDataApiCost - Affects how much it costs to unlock the stock market's 4S Market Data API\n- A few minor changes to BitNode multipliers across the board (mostly for the new multipliers)\n- 'The Covenant' now requires 20 total Augmentations to get invited, rather than 30\n- You can now purchase permanent Duplicate Sleeves from 'The Covenant'. This requires Source-File 10, and you must be in BN-10 or after\n- You can now track where all of your money comes from in the 'Stats' page\n- Increased the money gained from Coding Contracts by 50%\n- getCharacterInformation() function now returns the player's HP and max HP\n- Bug Fix: You can no longer disconnect the enemy's connections in Hacking Missions\n- Bug Fix: Duplicate Sleeve faction reputation gain is now properly affected by faction favor\n- Bug Fix: After installing Augmentations, the Terminal display will now correctly show the current server as \"home\"\n- Bug Fix: Fixed an exploit where you could change the duration of timed functions (e.g. hack, weaken) in NetscriptJS\n- Bug Fix: You should now properly be able to use the ServerProfile.exe program\n- Bug Fix: Prevented exploit that allowed you to accept faction invites programmatically through NetscriptJS\n- Bug Fix: Faction invitations for megacorporations should now work properly\n\n## v0.43.1 - 2/11/2019\n\n- Terminal changes:\n\n - Quoted arguments are now properly parsed. (e.g. 'run f.script \"this is one argument\"' will be correctly parsed)\n - Errors are now shown in red text\n - 'unalias' command now has a different format and no longer needs the quotations\n - Bug Fix: Fixed several edge cases where autocomplete wasn't working properly\n\n- Added two new Bladeburner skills for increasing money and experience gain\n- Made some minor adjustments to Bladeburner UI\n- Corporation \"Smart Factories\" and \"Smart Storage\" upgrades have slightly lower price multipliers\n- Added nFormat Netscript function\n- Added 6 new Coding Contract problems\n- Updated documentation with list of all Coding Contract problems\n- Minor improvements for 'Active Scripts' UI\n- Implemented several optimizations for active scripts. The game should now use less memory and the savefile should be slightly smaller when there are many scripts running\n- Bug Fix: A Stock Forecast should no longer go above 1 (i.e. 100%)\n- Bug Fix: The cost of Resleeves should no longer be affected by buying Augs\n- Bug Fix: Duplicate Sleeves now use their own stats to determine crime success rate, instead of the host consciousness' stats\n- Bug Fix: You can now call the prompt() Netscript function from multiple scripts simultaneously\n\n## v0.43.0 - 2/4/2019\n\n- Added BitNode-10: Digital Carbon\n\n- Stock Market Changes:\n\n - Each stock now has a maximum number of shares you can purchase (both Long and Short positions combined)\n - Added getStockMaxShares() Netscript function to the TIX API\n - The cost of 4S Market Data TIX API Access increased from $20b to $25b\n\n- Job Changes:\n\n - You can now hold multiple jobs at once. This means you no longer lose reputation when leaving a company\n - Because of this change, the getCharacterInformation() Netscript function returns a slightly different value\n\n- Script Editor Changes:\n\n - Added new script editor: CodeMirror. You can choose between the old editor (Ace) or CodeMirror\n - Navigation keyboard shortcuts no longer work if the script editor is focused\n\n- Trying to programmatically run a script (run(), exec()) with a 'threads' argument of 0 will now cause the function to return false without running the script\n- Home Computer RAM is now capped at 2 ^ 30 GB (1073741824 GB)\n- The maximum amount, maximum RAM, and cost of purchasing servers can now vary between different BitNodes (new BitNode multipliers)\n- Pop-up dialog boxes are a little bit bigger\n- Bug Fix: When importing scripts, \"./\" will now be properly ignored (e.g. import { foo } from \"./lib.script\" )\n\n## v0.42.0 - 1/8/2019\n\n- Corporation Changes:\n\n - Corporation can now be self-funded with $150b or using seed money in exchange for 500m newly-issued shares\n - In BitNode-3, you no longer start with $150b\n - Changed initial market prices for many materials\n - Changed the way a material's demand, competition, and market price change over time\n - The sale price of materials can no longer be marked-up as high\n - Added a Research Tree mechanic. Spend Scientific Research on permanent upgrades for each industry\n - You can now redistribute earnings to shareholders (including yourself) as dividends\n - Cost of \"Smart Supply\" upgraded reduced from $50b to $25b\n - Now has offline progress, which works similarly to the Gang/Bladeburner mechanics\n - Slightly reduced the amount of money offered to you by investment firms\n - Employee salaries now slowly increase over time\n - Slightly reduced the effect \"Real Estate\" has on the Production Multiplier for the Agriculture industry\n - Changed the way your Corporation's value is calculated (this is what determines stock price)\n - After taking your corporation public, it is now possible to issue new shares to raise capital\n - Issuing new shares can only be done once every 12 hours\n - Buying back shares must now be done at a premium\n - Selling shares can now only be done once per hour\n - Selling large amounts of shares now immediately impacts stock price (during the transaction)\n - Reduced the initial cost of the DreamSense upgrade from $8b to $4b, but increased its price multiplier\n - Reduced the price multiplier for ABC SalesBots upgrade\n\n- Added getOrders() Netscript function to the TIX API\n- Added getAugmentationPrereq() Singularity function (by havocmayhem)\n- Added hackAnalyzePercent() and hackAnalyzeThreads() Netscript functions\n- Stock Market, Travel, and Corporation main menu links are now properly styled\n- Many pop-up/dialog boxes now support the 'Enter' and 'Esc' hotkeys. If you find a pop-up/dialog box that doesnt support this, let me know specifically which one ('Enter' for the default option, 'Esc' for cancelling and closing the pop-up box)\n- Added \"brace_style = preserve_inline\" configuration to Script Editor Beautifier\n- ServerProfiler.exe can now be purchased from the Dark Web\n- Added an option to copy save data to clipboard\n- Added total multiplier information on the \"Augmentations\" page\n- Bug Fix: gymWorkout() Singularity function should now work properly with Millenium Fitness Gym\n- Began migrating gameplay information to the ReadTheDocs documentation\n\n## v0.41.2 - 11/23/2018\n\n- IMPORTANT - Netscript Changes:\n\n - rm() now takes an optional parameter that lets you specify on which server to delete the file\n - Added growthAnalyze() Netscript function\n\n- Gang Changes:\n\n - UI now displays your chance to win a clash with other gangs\n - Added getChanceToWinClash() function to the Gang API\n - Added getEquipmentType() function to the Gang API\n - Added several new hacking-based equipment and Augmentations\n - Rebalanced several equipment/upgrades to give less defense\n - Wanted level gain rate is now be slightly higher for all tasks\n - Rebalanced parameters for \"hacking\" tasks\n\n- Added new Main Menu configuration in .fconf: \"compact\"\n- Added the terminal command 'expr', which can be used to evaluate simple mathematical expressions\n- Bug Fix: Can no longer purchase duplicate equipment/Augmentations through gang.purchaseEquipment()\n- Bug Fix: scp() should no longer throw errors when used with 2-arguments and an array of files\n- Bug Fix: Coding Contracts no longer give money in BitNode-8\n- Bug Fix: In Bladeburner, you can no longer start a BlackOp through the Netscript API if it has already been completed\n- Bug Fix: In Bladeburner, fixed a bug which caused the configured 'automate' actions to occasionally be switched to other actions\n- Bug Fix: 'Return to World' button at locations no longer accumulates event listeners\n- Bug Fix: Working & taking classes now continuously add/subtract money during the action, instead of doing it at completion\n- Bug Fix: Top-right overview panel now displays negative money using '-' instead of '()'\n- Bug Fix: Stock Market UI should no longer show 'NaN' profit immediately after buying a stock\n\n## v0.41.1 - 11/5/2018\n\n- IMPORTANT - Netscript Changes:\n\n - purchaseTor() now returns true if you already have a TOR router (it used to return false)\n - getPurchasedServerCost() now returns Infinity if the specified RAM is an invalid amount or is greater than the max amount of RAM (2 ^ 20 GB)\n - Added purchase4SMarketData() and purchase4SMarketDataTixApi() functions\n - getScriptLogs() now takes in optional arguments that let you get the logs of another script\n\n- Stock Market changes:\n\n - Stocks now have \"maximum prices\". These are hidden from the player\n - If a stock reaches its \"maximum price\", it will most likely drop in value (although it might still rise)\n - Each stock has its own, unique maximum price\n - Maximum price for each stock are randomly generated and change during each 'reset'\n - Stock Market cycles are now accumulated/stored, much like it is for Gangs and Bladeburners\n - Accumulated/stored cycles cause stock prices to update up to 50% faster (from every 6 seconds to 4 seconds)\n - This means that after coming back from being offline, stock prices will update faster to make up for offline time\n\n- Decreased the Hacking Level multiplier for BitNodes 6 and 7 to 0.4 (from 0.5)\n- Bladeburner console history is now saved and persists when switching screens or closing/reopening the game\n- In Bladeburner, if your stamina reaches 0 your current action will be cancelled\n- b1t_flum3.exe is no longer removed from your home computer upon reset\n- Added main menu link for the Stock Market (once you've purchased an account)\n- Job main menu link only appears if you actually have a job\n- Bug Fix: Netscript Gang API functions purchaseEquipment() and ascendMember() should now work properly\n- Bug Fix: After installing Augs, the \"Portfolio Mode\" button on the Stock Market page should be properly reset\n- Bug Fix: bladeburner.getActionCountRemaining()'s return value is now rounded down (by Kline-)\n\n## v0.41.0 - 10/29/2018\n\n- WARNING: In NetscriptJS, defining a function called print() is no longer possible\n- Gang Mechanic Changes (BitNode-2):\n - Added a Gang Netscript API\n - Added new 'ascension' mechanic for Gang Members\n - The first three gang members are now 'free' (can be recruited instantly)\n - Maximum number of increased Gang Members increased from 20 to 30\n - Changed the formula for calculating respect needed to recruit the next gang member\n - Added a new category of upgrades for Gang Members: Augmentations\n - Non-Augmentation Gang member upgrades are now significantly weaker\n - Reputation for your Gang faction can no longer be gained through Infiltration\n - Re-worked the territory 'warfare' mechanic so that player can choose when to engage in it\n - Gang Members can now be killed during territory 'warfare'\n - Changed BitNode-2 Multipliers to make hacking slightly less profitable\n - Gang Member Equipment + Upgrades now get cheaper as your gang grows in power and respect\n - The effects of Source-File 2 are now slightly more powerful\n- RAM Cost of accessing the global document object lowered from 100 GB to 25 GB\n- RAM Cost to use Singularity Functions outside of BitNode-4 lowered by 75%. They now only cost twice as much as they do in BitNode-4\n- b1t_flum3.exe now takes significantly less time to create\n- Crimes commited through Singularity function no longer give half money/exp (there is now no penalty)\n- Improved number formatting for Player 'work' actions (including crimes, etc.). These numbers should also adhere to locale settings now (by Kline-)\n- The order that Augmentations are listed in (when purchasing from Faction and viewing your Augmentations) is now saved and persists when choosing different orders\n- getCharacterInformation() Singularity function now returns multiplier information (from Augmentations/Source Files)\n- Bug Fix: Calling print() in NetscriptJS no longer brings up the print dialog\n- Bug Fix: Fixed a bug that sometimes caused a blank black screen when destroying/resetting/switching BitNodes\n- Bug Fix: Netscript calls that throw errors will now no longer cause the 'concurrent calls' error if they are caught in the script. i.e. try/catch should now work properly in scripts\n- Bug Fix: Fixed a bug where sometimes the NeuroFlux Governor Augmentation level would be incorrectly calculated when the game was loaded\n- Bug Fix: Fixed a bug where calling the scp() Netscript function with invalid hostname/ips would throw an unclear error message\n- Bug Fix: Bladeburner API function getActionCountRemaining() should now work properly for BlackOps\n- Bug Fix: Black Ops can no longer be attempted out-of-order or without the required rank via Bladeburner API\n- Bug Fix: Dynamic RAM Calculation now properly accounts for number of threads\n- RAM cost for basic Netscript functions added to documentation (by CBJamo)\n\n## v0.40.5 - 10/09/2018\n\n- Added codingcontract.getContractType() Netscript function\n- Bug Fix: codingcontract.getData() Netscript function now returns arrays by value rather than reference\n- Bug Fix: Decreased highest possible data value for 'Find Largest Prime Factor' Coding Contract (to avoid hangs when solving it)\n- Bug Fix: Fixed a bug that caused game to freeze during Coding Contract generation\n\n## v0.40.4 - 9/29/2018\n\n- Added new Coding Contracts mechanic. Solve programming problems to earn rewards\n- The write() and read() Netscript functions now work on scripts\n- Added getStockSymbols() Netscript function to the TIX API (by InfraK)\n- Added wget() Netscript function\n- Added bladeburner.getActionRepGain() function to the Netscript Bladeburner API\n- The getLevelUpgradeCost(), getRamUpgradeCost(), and getCoreUpgradeCost() functions in the Hacknet API now return Infinity if the node is at max level. See documentation\n- It is now possible to use freely use angled bracket (<, >) and create DOM elements using tprint()\n- The game's theme colors can now be set through the Terminal configuration (.fconf).\n- You can now switch to the old left-hand main menu bar through the Terminal configuration (.fconf)\n- Bug Fix: grow() percentage is no longer reported as Infinity when a server's money is grown from 0 to X\n- Bug Fix: Infiltration popup now displays the correct amount of exp gained\n\n## v0.40.3 - 9/15/2018\n\n- Bladeburner Changes:\n - Increased the effect that agi and dexterity have on action time\n - Starting number of contracts/operations available will be slightly lower\n - Random events will now happen slightly more often\n - Slightly increased the rate at which the Overclock skill point cost increases\n- The maximum volatility of stocks is now randomized (randomly generated within a certain range every time the game resets)\n- Increased the range of possible values for initial stock prices\n- b1t_flum3.exe program can now be created immediately at Hacking level 1 (rather than hacking level 5)\n- UI improvements for the character overview panel and the left-hand menu (by mat-jaworski)\n- General UI improvements for displays and Terminal (by mat-jaworski)\n- Added optional parameters to the getHackTime(), getGrowTime(), and getWeakenTime() Netscript functions\n- Added isLogEnabled() and getScriptLogs() Netscript functions\n- Added donateToFaction() Singularity function\n- Updated documentation to reflect the fact that Netscript port handles (getPortHandle()) only works in NetscriptJS (2.0), NOT Netscript 1.0\n- Added tryWrite() Netscript function\n- When working (for a company/faction), experience is gained immediately/continuously rather than all at once when the work is finished\n- Added a setting in .fconf for enabling line-wrap in the Terminal input\n- Adding a game option for changing the locale that most numbers are displayed in (this mostly applies for whenever money is displayed)\n- The randomized parameters of many high-level servers can now take on a higher range of values\n- Many 'foreign' servers (hackable servers that you don't own) now have a randomized amount of RAM\n- Added 'wget' Terminal command\n- Improved the introductory tutorial\n\n## v0.40.2 - 8/27/2018\n\n- Bladeburner Changes:\n - Added getBonusTime(), getSkillUpgradeCost(), and getCity() Netscript functions to the API\n - Buffed the effects of many Bladeburner Augmentations\n - The Blade's Simulacrum Augmentation requires significantly less reputation but slightly more money\n - Slightly increased the amount of successes needed for a Contract/Operation in order to increase its max level\n - Increased the amount of money gained from Contracts by ~25%\n - Increased the base amount of rank gained from Operations by 10%\n - Significantly increased the 'randomness' in determining a Contract/Operation's initial count and rate of count increase\n - The number (count) of Operations should now increase significantly faster\n - There are now, on average, more Synthoid communities in a city\n - If automation is enabled (the feature in Bladeburner console), then switching to another action such as working for a company will now disable the automation\n- Stock Market Changes:\n - Added a watchlist filter feature to the UI that allows you to specify which stocks to show\n - Added the Four Sigma (4S) Market Data feed, which provides volatility and price forecast information about stocks\n - Added the 4S Market Data TIX API, which lets you access the aforementioned data through Netscript\n- There is now a setting for enabling/disabling the popup that appears when you are hospitalized\n- Bug Fix: Stock market should now be correctly initialized in BitNode-8 (by Kline-)\n- Bug Fix: bladeburner.getCurrentAction() should now properly an 'Idle' object rather than null (by Kline-)\n- Bug Fix: Bladeburner skill cost multiplier should now properly increase in BitNode-12 (by hydroflame)\n- Bug Fix: 'document', 'hacknet', and 'window' keywords should no longer be counted multiple times in RAM calculations\n- Bug Fix: Joining factions through Singularity functions should now prevent you from joining opposing factions\n- Bug Fix: Four Sigma should no longer have two 'Speech Enhancement' Augmentations (by Kline-)\n\n## v0.40.1 - 8/5/2018 - Community Update\n\n- Added getPurchasedServerCost() Netscript function (by kopelli)\n- Added getFavorToDonate() Netscript function (by hydroflame)\n- Added getFactionFavorGain() and getCompanyFavorGain() Singularity functions (by hydroflame)\n- Accumulated 'bonus' time in Bladeburner is now displayed in the UI (by hydroflame)\n- The Red Pill can now be purchased with negative money (since its supposed to be free) (by hydroflame)\n- Cranial Signal Processor Augmentations now have the previous generation as a prerequisite. i.e. Cranial Signal Processor - Gen II requires Gen I (by Kline-)\n- Terminal now supports semicolon usage (end of command). This allows chaining multiple Terminal commands (by hydroflame)\n- Bladeburner Raid operations can no longer be performed if your estimate of Synthoid communities is zero (by hydroflame)\n- The difficulty of BN-12 now scales faster (by hydroflame)\n- Active Scripts UI now shows a RAM Usage bar for each server (by kopelli)\n- Bug Fix: Corrected terminal timestamp format (by kopelli)\n- Bug Fix: NetscriptJS scripts should now die properly if they don't have a 'main' function (by hydroflame)\n- Bug Fix: write(), read(), and tryWrite() Netscript functions should now work properly for writing Arrays/objects to Netscript Ports\n- Various minor UI/QOL fixes by hydroflame, kopelli, and Kline-\n\n## v0.40.0 - 7/28/2018\n\n- **WARNING: This update makes some significant changes to Netscript and therefore you may need to make some changes to your scripts. See** `this post `\\_ **this post for details**\n- Netscript 1.0 (NS1) now uses a fully-fledged ES5 JavaScript Interpreter. This means many new features are now available in NS1, and this also fixes several bugs.\n However this also means any ES6+ features are no longer supported in NS1\n- When a server is hacked with a very large number of threads and left with no money, the server's security level\n now only increases by however many threads were needed to drain the server. For example, if you hack a server with\n 5000 threads but it only needed 2000 threads to deplete the server's money, then the server's security will only increase\n as if you had hacked it with 2000 threads (change by hydroflame)\n- Added getCurrentAction() to Bladeburner API\n- Added a variety of functions to Bladeburner API that deal with action levels (change by hydroflame)\n- Added getPurchasedServerLimit() and getPurchasedServerMaxRam() functions to Netscript (change by hydroflame & kopelli)\n- Added getOwnedSourceFiles() Singularity function (by hydroflame)\n- Completely re-designed the Hacknet Node API\n- getSkillLevel() in Bladeburner API now returns an error if no argument is passed in (as opposed to an object with all skill levels). This may break scripts\n- Minimum Netscript execution time reduced from 15ms to 10ms (configurable in Options)\n- Company reputation needed to get invited to Megacorporation factions decreased from 250k to 200k\n- HP is now reset (restored) when Augmenting\n- Source-File 6 now increases both the level and experience gain of all combat stats (it was only experience gain previously)\n- Reverted a previous change for Source-File 12. It's benefits are now multiplicative rather than additive\n- Starting Infiltration security level for almost every location decreased by ~10%\n- Changed 'fl1ght.exe' message when its listed conditions are fulfilled (by hydroflame)\n- The 'Save Game' button in the top-right overview panel now flashes red if autosave is disabled\n- Bug Fix: Infiltration buttons can no longer be clicked through NetscriptJS\n- Bug Fix: Bladeburner 'Overclock' skill can no longer be leveled above max level through the API (by hydroflame)\n- Bug Fix: Healthcare division in Bladeburner should no longer cause game to crash\n\n## v0.39.1 - 7/4/2018\n\n- Bladeburner Rank gain in BN-7 is now reduced by 40% instead of 50%\n- Quadrupled the amount of money gained from Bladeburner contracts\n- Added joinBladeburnerDivision() Netscript function to Bladeburner API\n- Doubled the effects of Source-File 5. Now gives 8%, 12%, and 14% increase to all hacking multipliers at levels 1, 2, and 3, respectively (increased from 4%/6%, 7%)\n- Increased the effect of Source-File 8. It now gives a 12%, 18% and 21% to your hacking growth multiplier at levels 1, 2, and 3, respectively (increased from 8%, 12%, 14%)\n- The effect of Source-File 12 is now additive with itself, rather than multiplicative. This means that level N of Source-File 12 now increases all multipliers by N%\n- The setting to suppress the confirmation box when purchasing Augmentations was moved into the main Options menu (by Github user hydroflame)\n- Bug Fix: Crime Success rates were being calculated incorrectly (by Github user hydroflame)\n- When an Infiltration is finished, you will now return back to the company's page, rather than the city\n- Infiltration faction reputation selector now remembers your last choice\n- Significantly increased the amount of money gained from Infiltration\n- Bug Fix: Copying a NetscriptJS script to another server using scp now properly takes into account the script's changes.\n- Bug Fix: Fixed an issue where game would not load in Edge due to incompatible features\n- travelToCity() Singularity function no longer grants Intelligence exp\"\n\n## v0.39.0 - 6/25/2018\n\n- Added BitNode-7: Bladeburner 2079\n- Infiltration base difficulty decreased by 10% for most locations\n- Experience gains from Infiltration slightly increased\n- Money gained from Infiltration increased by 20%\n- Added 'var' declarations in Netscript 1.0 (only works with 'var', not 'let' or 'const')\n- Script base RAM cost is now 1.6 GB (increased from 1.4 GB)\n- While/for loops and if statements no longer cost RAM in scripts\n- Made short-circuit evaluation logic more consistent in Netscript 1.0\n- Changelog button in the Options menu now links to the new Changelog URL (by Github user thePalindrome)\n- Skill level calculation is now 'smoother' (by Github user hydroflame)\n- Added a button to 'beautify' scripts in the text editor (by Github user hydroflame)\n- Added favicon (by Github user kopelli)\n\n## v0.38.1 - 6/15/2018\n\n- Bug Fix: Using 'Object.prototype' functions like toLocaleString() or toString() should no longer cause errors in NetscriptJS\n- Implemented by Github user hydroflame:\n - Accessing the 'window' and 'document' objects in Netscript JS now requires a large amount of RAM (100 GB)\n - Added game option to suppress travel confirmation\n - Text on buttons can no longer be highlighted\n - Bug Fix: Fixed an issue that caused NaN values when exporting Real Estate in Corporations\n - Bug Fix: Competition and Demand displays in Corporation are now correct (were reversed before)\n - Added ps() Netscript function\n - Bug Fix: grow() should no longer return/log a negative value when it runs on a server that's already at max money\n - Bug Fix: serverExists() Netscript function should now properly return false for non-existent hostname/ips\n - Bug Fix: Sever's security level should now properly increase when its money is grown to max value\n\n## v0.38.0 - 6/12/2018\n\n- New BitNode: BN-12 The Recursion - Implemented by Github user hydroflame\n- Bladeburner Changes:\n - Bladeburner progress is no longer reset when installing Augmentations\n - The number of successess needed to increase a Contract/Operation's max level now scales with the current max level (gradually gets harder)\n - All Bladeburner Augmentations are now slightly more expensive and require more reputation\n - Black Operations now give higher rank rewards\n - Doubled the base amount of money gained from Contracts\n - Increased the amount of experience gained from Contracts/Actions\n - Added a new Augmentation: The Blade's Simulacrum\n - Bladeburner faction reputation gain is now properly affected by favor\n- Hacking is now slightly less profitable in BitNode-3\n- Updated Hacknet Nodes UI - Implemented by Github user kopelli\n- Bug Fix: Fixed an exploit that allowed calling any Netscript function without incurring any RAM Cost in NetscriptJS\n\n## v0.37.2 - 6/2/2018\n\n- After joining the Bladeburners division, there is now a button to go to the Bladeburner content\n in the 'City' page\n- You now start with $250m in BitNode-8 (increased from $100m)\n- Bug Fix: You can now no longer directly edit Hacknet Node values through NetscriptJS (hopefully)\n- Bug Fix: Bladeburners is no longer accessible in BN-8\n- Bug Fix: getBitNodeMultipliers() Netscript function now returns a copy rather than the original object\n\n## v0.37.1 - 5/22/2018\n\n- You now earn money from successfully completing Bladeburner contracts. The amount you earn is based\n on the difficulty of the contract.\n- Completing Field Analysis in Bladeburner now grants 0.1 rank\n- The maximum RAM you can get on a purchased server is now 1,048,576 GB (2^20)\n- Bug Fix: Fixed Netscript syntax highlighting issues with the new NetscriptJS\n- Bug Fix: Netscript Functions now properly incur RAM costs in NetscriptJS\n- Bug Fix: deleteServer() now fails if its called on the server you are currently connected to\n- Removed in-game Netscript documentation, since it was outdated and difficult to maintain.\n- Bug Fix: Updated the gymWorkout() Singularity function with the new exp/cost values for gyms\n\n## v0.37.0 - 5/20/2018\n\n- NetscriptJS (Netscript 2.0) released\n- Running the game with the '?noScripts' query will start the game without loading any of your scripts. This should be used if you accidentally write a script that crashes your game\n\n## v0.36.1 - 5/11/2018\n\n- Bladeburner Changes:\n - Bug Fix: You can no longer get Bladeburner faction reputation through Infiltration\n - Initial difficulty of Tracking contracts reduced\n - Datamancer skill effect increased from 4% per level to 5%\n - Slightly decreased the base stamina cost of contracts/operations\n - Slightly increased the effects of the Tracer, Digital Observer, Short Circuit, Cloak, and Blade's Intuition skills\n - Overclock skill capped at level 95, rather than 99\n - Training gives significantly more exp/s\n- Crime, Infiltration, and Hacking are now slightly more profitable in BN-6\n- Gyms are now more expensive, but give slightly more exp\n- Added getScriptName() and getHacknetMultipliers() Netscript functions (added by Github user hydroflame)\n- getScriptRam() Netscript function now has default value for the second argument, which is hostname/ip (implemented by Github user hydroflame)\n- There is now a soft-cap on stock price, which means it's no longer possible for the price of a stock to reach insanely-high values\n- The ctrl+b hotkey in the text editor should now also be triggered by command+b on OSX (I don't have OSX so I can't confirm if this works)\n- Many servers now have additional RAM\n- Added an option to disable hotkeys/keyboard shortcuts\n- Refactored 'Active Scripts' UI page to optimize its performance\n- Added a new .fconf Terminal setting: ENABLE_TIMESTAMP\n- 'Netscript Execution Time', which can be found in the Options, now has a minimum value of 15ms rather than 25ms\n- Bug Fix: Fixed a typo in the Fulcrum Technologies company name (Technolgies -> Technologies)\n- Bug Fix: hacknetnodes keyword should no longer incur RAM cost if its in a comment\n- Bug Fix: disableLog() now works for the commitCrime() Netscript function (fixed by Github user hydroflame)\n\n## v0.36.0 - 5/2/2018\n\n- Added BN-6: Bladeburners\n- Rebalanced many combat Augmentations so that they are slightly less powerful\n- Bug Fix: When faction invites are suppressed, an invitation will no longer load the Faction page\n\n## v0.35.2 - 3/26/2018\n\n- Corporation Changes:\n - Fixed an issue with Warehouse upgrade cost. Should now be significantly cheaper than before.\n - Scientific Research now has a slightly more significant effect on Product quality\n - The Energy and Water Utilities industries are now slightly more profitable\n - The Robotics and Computer Hardware industries are now less profitable\n - The Software industry is slightly less profitable\n - When selling Materials and Products, the 'PROD' qualifier can now be used to set dynamic sell amounts based on your production\n - Exporting MAX should now work properly\n - You can no longer export past storage limits\n - Scientific Research production reduced\n - Effects of AdVert. Inc upgrade were reduced, but the effect that popularity and awareness have on sales was increased to compensate (popularity/awareness numbers were getting too big with Advert. Inc)\n - Bug Fix: Products from Computer Hardware division should now properly have ratings\n- Improved Augmentation UI/UX. Now contains collapsible headers and sort buttons\n- Improved Faction Augmentations display UI/UX. Now contains sort buttons. There is also an option to disable confirmation when purchasing Augmentations\n\n## v0.35.1 - 3/12/2018\n\n- You can now easily download all of your scripts/text files as zip folders. Use the 'help download' Terminal command for details\n- Scripts are now downloaded with the .script.js extension at the end of their filename\n- Corporation Management Changes:\n - Implemented Smart Supply unlock\n - Changed the way a division's Production Multiplier is calculated. It is now the sum of the individual Production Multiplier for every city. Therefore, it is now beneficial to open offices in different cities\n - Several small UI/UX improvements\n - Numerous balance changes. The significant ones are listed below.\n - Product descriptions will now display their estimated market price\n - The sale price of Products can no longer be marked up as high as before\n - Scientific Research now affects the rating of Products\n - In general, the maximum amount of product you are able to sell is reduced\n - Sale bonus from advertising (popularity/awareness) now has diminishing returns rather than scaling linearly\n- Experience gained during Infiltration now scales linearly based on the clearance level you reach. Compared to before, the experience gained will be much less at lower clearance levels, but much more at higher clearance levels\n- The editor can now be used to edit both scripts and text files\n- New Terminal config file that can be edited using the command 'nano .fconf'. Right now there is only one option, but there will be more in the future.\n- You can now enable Bash-style Terminal hotkeys using the .fconf file referenced above\n- Bug Fix: Fixed an issue with the UI elements of Gang Management persisting across different instances of BitNode-2\n\n## v0.35.0 - 3/3/2018\n\n- Minor rebalancing of BitNodes due to the fact that Corporations provide a (relatively) new method of progressing\n- Corporation Management Changes:\n - Once your Corporation gets big/powerful enough, you can now bribe Factions for reputation using company funds an/or stock shares\n - You can now only create one Division for every Industry type\n - Added several new UI/UX elements\n - Wilson Analytics multiplier was significantly reduced to 1% per level (additive).\n - Reduced the effect of Advert Inc upgrade. Advert Inc. upgrade price increases faster\n - Materials can now be marked up at higher prices\n- Added Javascript's built-in Number object to Netscript\n- Added getCharacterInformation(), getCompanyFavor(), and getFactionFavor() Netscript Singularity functions\n- Rebalanced Singularity Function RAM Costs. They now cost x8 as much when outside of BN-4 (rather than x10). Also, many of the functions now use significantly less RAM\n- Refactored Netscript Ports. You can now get a handle for a Netscript port using the getPortHandle() Netscript function. This allows you to access a port's underlying queue (which is just an array) and also makes several new functions available such as tryWrite(), full(), and empty().\n- Number of Netscript Ports increased from 10 to 20\n- Netscript assignments should now return proper values. i.e. i = 5 should return 5.\n- Added throw statements to Netscript. It's not super useful since 'catch' isn't implemented, but it can be used to generate custom runtime error messages.\n- Added import declaration to Netscript. With this, you are able to import functions (and only functions) from other files. Using export declarations is not necessary\n- Most Netscript Runtime errors (the ones that cause your script to crash) should now include the line number where the error occured\n- When working for a company, your current company reputation is now displayed\n- Whenever you get a Faction Invite it will be immediately appended to your 'invited factions' list. Therefore the checkFactionInvitations() Singularity Function should now be properly useable since you no longer need to decline a Faction Invitation before it shows up in the result.\n- Bug Fix: When purchasing servers, whitespace should now automatically be removed from the hostname\n- Bug Fix: Can no longer have whitespace in the filename of text files created using write()\n- Bug Fix: In Netscript, you can no longer assign a Hacknet Node handle (hacknetnodes[i]) to another value\n- Bug Fix: If you are in the Factions tab when you accept an invitation from a Faction, the page will now properly 'refresh'\n- Bug Fix: Scripts that run recursive functions should now be killed properly\n\n## v0.34.5 - 2/24/2018\n\n- Corporation Management Changes:\n - Market Research unlocks are now cheaper\n - New 'VeChain' upgrade: displays useful statistics about Corporation\n - Corporation cycles are processed 25% faster\n - Corporation valuation was lowered by ~10% (this affects stock price and investments)\n - Rebalanced the effects of advertising. Should now be more effective for every Industry\n - Fixed several bugs/exploits involving selling and buying back stock shares\n - You will now receive a Corporation Handbook (.lit file) when starting out BitNode-3. It contains a brief guide to help you get started. This same handbook can be viewed from the Corporation management screen\n - Slightly decreased the amount by which a Product's sell price can be marked up\n - Employees can now be assigned to a 'Training' task, during which they will slowly increase several of their stats\n- Hopefully fixed an exploit with Array.forEach(). If there are any issues with using forEach, let me know\n- Arguments passed into a script are now passed by value. This means modifying the 'args' array in a script should no longer cause issues\n- Scripts executed programatically (via run(), exec(), etc.) will now fail if null/undefined is passed in as an argument\n- Added peek() Netscript function\n- killall() Netscript function now returns true if any scripts were killed, and false otherwise.\n- hack() Netscript function now returns the amount of money gained for successful hacks, and 0 for failed hacks\n- scp Terminal command and Netscript function now work for txt files\n- Changes courtesy of Wraithan:\n - Text files are now displayed using 'pre' rather than 'p' elements when using the 'cat' Terminal command. This means tabs are retained and lines don't automatically wrap\n - ls() Netscript function now returns text files as well\n- Removed round() Netscript function, since you can just use Math.round() instead\n- Added disableLog() and enableLog() Netscript functions\n- Removed the 'log' argument from sleep(), since you can now use the new disableLog function\n- 'Netscript Documentation' button on script editor now points to new readthedocs documentation rather than wiki\n- When working for a faction, your current faction reputation is now displayed\n- Bug Fix: Hacking Missions should no longer break when dragging an existing connection to another Node\n- Bug Fix: Fixed RAM usage of getNextHacknetNodeCost() (is not 1.5GB instead of 4GB)\n\n## v0.34.4 - 2/14/2018\n\n- Added several new features to Gang UI to make it easier to manage your Gang.\n- Changed the Gang Member upgrade mechanic. Now, rather than only being able to have one weapon/armor/vehicle/etc., you can purchase all the upgrades for each Gang member and their multipliers will stack. To balance this out, the effects (AKA multipliers) of each Gang member upgrade were reduced.\n- Added a new script editor option: Max Error Count. This affects how many approximate lines the script editor will process (JSHint) for common errors. Increasing this option can affect negatively affect performance\n- Game theme colors (set using 'theme' Terminal command) are now saved when re-opening the game\n- 'download' Terminal command now works on scripts\n- Added stopAction() Singularity function and the spawn() Netscript function\n- The 'Purchase Augmentations' UI screen will now tell you if you need a certain prerequisite for Augmentations.\n- Augmentations with prerequisites can now be purchased as long as their prerequisites are puchased (before, you had to actually install the prerequisites before being able to purchase)\n\n## v0.34.3 - 1/31/2018\n\n- Minor balance changes to Corporations:\n - Upgrades are generally cheaper and/or have more powerful effects.\n - You will receive more funding while your are a private company.\n - Product demand decreases at a slower rate.\n - Production multiplier for Industries (receives for owning real estate/hardware/robots/etc.) is slightly higher\n- Accessing the hacknetnodes array in Netscript now costs 4.0GB of RAM (only counts against RAM usage once)\n- Bug Fix: Corporation oustanding shares should now be numeric rather than a string\n- Bug Fix: Corporation production now properly calculated for industries that dont produce materials.\n- Bug Fix: Gangs should now properly reset when switching BitNodes\n- Bug Fix: Corporation UI should now properly reset when you go public\n\n## v0.34.2 - 1/27/2018\n\n- Corporation Management Changes:\n - Added advertising mechanics\n - Added Industry-specific purchases\n - Re-designed employee management UI\n - Rebalancing: Made many upgrades/purchases cheaper. Receive more money from investors in early stage. Company valuation is higher after going public\n - Multiple bug fixes\n- Added rm() Netscript function\n- Updated the way script RAM usage is calculated. Now, a function only increases RAM usage the first time it is called. i.e. even if you call hack() multiple times in a script, it only counts against RAM usage once. The same change applies for while/for loops and if conditionals.\n- The RAM cost of the following were increased:\n - If statements: increased by 0.05GB\n - run() and exec(): increased by 0.2GB\n - scp(): increased by 0.1GB\n - purchaseServer(): increased by 0.25GB\n- Note: You may need to re-save all of your scripts in order to re-calculate their RAM usages. Otherwise, it should automatically be re-calculated when you reset/prestige\n- The cost to upgrade your home computer's RAM has been increased (both the base cost and the exponential upgrade multiplier)\n- The cost of purchasing a server was increased by 10% (it is now $55k per RAM)\n- Bug fix: (Hopefully) removed an exploit where you could avoid RAM usage for Netscript function calls by assigning functions to a variable (foo = hack(); foo('helios');)\n- Bug fix: (Hopefully) removed an exploit where you could run arbitrary Javascript code using the constructor() method\n- Thanks to Github user mateon1 and Reddit users havoc_mayhem and spaceglace for notifying me of the above exploits\n- The fileExists() Netscript function now works on text files (.txt). Thanks to Github user devoidfury for this\n\n## v0.34.1 - 1/19/2018\n\n- Updates to Corporation Management:\n - Added a number of upgrades to various aspects of your Corporation\n - Rebalanced the properties of Materials and the formula for determining the valuation of the Corporation\n - Fixed a number of bugs\n- 'Stats' page now shows information about current BitNode\n- You should now be able to create Corporations in other BitNodes if you have Source-File 3\n- Added a new create-able program called b1t_flum3.exe. This program can be used to reset and switch BitNodes\n- Added an option to adjust autosave interval\n- Line feeds, newlines, and tabs will now work with the tprint() Netscript function\n- Bug fix: 'check' Terminal command was broken\n- Bug fix: 'theme' Terminal command was broken when manually specifying hex codes\n- Bug fix: Incorrect promotion requirement for 'Business'-type jobs\n- Bug fix: Settings input bars were incorrectly formatted when loading game\n\n## v0.34.0 - 12/6/2017\n\n- Added clear() and exit() Netscript functions\n- When starting out or prestiging, you will now receive a 'Hacking Starter Guide'. It provides tips/pointers for new players\n- Doubled the amount of RAM on low-level servers (up to required hacking level 150)\n- Slightly increased experience gain from Infiltration\n- buyStock(), sellStock(), shortStock(), and sellShort() Netscript function now return the stock price at which the transaction occurred, rather than a boolean. If the function fails for some reason, 0 will be returned.\n- Hacking Mission Changes:\n - You can now select multiple Nodes of the same type by double clicking. This allows you to set the action of all of selected nodes at once (e.g. set all Transfer Nodes to Fortify). Creating connections does not work with this multi-select functionality yet\n - Shield and Firewall Nodes can now fortify\n - The effects of Fortifying are now ~5% lower\n - Conquering a Spam Node now increases your time limit by 25 seconds instead of 15\n - Damage dealt by Attacking was slightly reduced\n - The effect of Scanning was slightly reduced\n - Enemy CPU Core Nodes start with slightly more attack. Misc Nodes start with slightly less defense\n- Corporation Management changes:\n - Added several upgrades that unlock new features\n - Implemented Exporting mechanic\n - Fixed many bugs\n\n## v0.33.0 - 12/1/2017\n\n- Added BitNode-3: Corporatocracy. In this BitNode you can start and manage your own corporation. This feature is incomplete. Much more will be added to it in the near future\n- Minor bug fixes\n\n## v0.32.1 - 11/2/2017\n\n- Updated Netscript's 'interpreter/engine' to use the Bluebird promise library instead of native promises. It should now be faster and more memory-efficient. If this has broken any Netscript features please report it through Github or the subreddit (reddit.com/r/bitburner)\n- Rebalanced stock market (adjusted parameters such as the volatility/trends/starting price of certain stocks)\n- Added prompt() Netscript function\n- Added 'Buy Max' and 'Sell All' functions to Stock Market UI\n- Added 'Portfolio' Mode to Stock Market UI so you can only view stocks you have a position/order in\n- Added a button to kill a script from its log display box\n\n## v0.32.0 - 10/25/2017\n\n- Added BitNode-8: Ghost of Wall Street\n- Re-designed Stock Market UI\n- Minor bug fixes\n\n## v0.31.0 - 10/15/2017\n\n- Game now saves to IndexedDb (if your browser supports it). This means you should no longer have trouble saving the game when your save file gets too big (from running too many scripts). The game will still be saved to localStorage as well\n- New file type: text files (.txt). You can read or write to text files using the read()/write() Netscript commands. You can view text files in Terminal using 'cat'. Eventually I will make it so you can edit them in the editor but that's not available yet. You can also download files to your real computer using the 'download' Terminal command\n- Added a new Crime: Bond Forgery. This crime takes 5 minutes to attempt and gives $4,500,000 if successful. It is meant for mid game.\n- Added commitCrime(), getCrimeChance(), isBusy(), and getStats() Singularity Functions.\n- Removed getIntelligence() Netscript function\n- Added sprintf and vsprintf to Netscript. See [https://github.com/alexei/sprintf.js this Github page for details]\n- Increased the amount of money gained from Infiltration by 20%, and the amount of faction reputation by 12%\n- Rebalanced BitNode-2 so that Crime and Infiltration are more profitable but hacking is less profitable. Infiltration also gives more faction rep\n- Rebalanced BitNode-4 so that hacking is slightly less profitable\n- Rebalanced BitNode-5 so that Infiltration is more profitable and gives more faction rep\n- Rebalanced BitNode-11 so that Crime and Infiltration are more profitable. Infiltration also gives more faction rep.\n- Fixed an annoying issue in Hacking Missions where sometimes you would click a Node but it wouldnt actually get selected\n- Made the Hacking Mission gameplay a bit slower by lowering the effect of Scan and reducing Attack damage\n- Slightly increased the base reputation gain rate for factions when doing Field Work and Security Work\n\n## v0.30.0 - 10/9/2017\n\n- Added getAugmentations() and getAugmentationsFromFaction() Netscript Singularity Functions\n- Increased the rate of Intelligence exp gain\n- Added a new upgrade for home computers: CPU Cores. Each CPU core on the home computer grants an additional starting Core Node in Hacking Missions. I may add in other benefits later. Like RAM upgrades, upgrading the CPU Core on your home computer persists until you enter a new BitNode.\n- Added lscpu Terminal command to check number of CPU Cores\n- Changed the effect of Source-File 11 and made BitNode-11 a little bit harder\n- Fixed a bug with Netscript functions (the ones you create yourself)\n- Hacking Missions officially released (they give reputation now). Notable changes in the last few updates:\n - Misc Nodes slowly gain hp/defense over time\n - Conquering a Misc Node will increase the defense of all remaining Misc Nodes that are not being targeted by a certain percentage\n - Reputation reward for winning a Mission is now affected by faction favor and Player's faction rep multiplier\n - Whenever a Node is conquered, its stats are reduced\n\n## v0.29.3 - 10/3/2017\n\n- Fixed bug for killing scripts and showing error messages when there are errors in a player-defined function\n- Added function name autocompletion in Script Editor. Press Ctrl+space on a prefix to show autocompletion options.\n- Minor rebalancing and bug fixes for Infiltration and Hacking Missions\n\n## v0.29.2 - 10/1/2017\n\n- installAugmentations() Singularity Function now takes a callback script as an argument. This is a script that gets ran automatically after Augmentations are installed. The script is run with no arguments and only a single thread, and must be found on your home computer.\n- Added the ability to create your own functions in Netscript. See [[Netscript Functions|this link]] for details\n- Added :q, :x, and :wq Vim Ex Commands when using the Vim script editor keybindings. :w, :x, and :wq will all save the script and return to Terminal. :q will quit (return to Terminal) WITHOUT saving. If anyone thinks theres an issue with this please let me know, I don't use Vim\n- Added a new Augmentation: ADR-V2 Pheromone Gene\n- In Hacking Missions, enemy nodes will now automatically target Nodes and perform actions.\n- Re-balanced Hacking Missions through minor tweaking of many numbers\n- The faction reputation reward for Hacking Missions was slightly increased\n\n## v0.29.1 - 9/27/2017\n\n- New gameplay feature that is currently in BETA: Hacking Missions. Hacking Missions is an active gameplay mechanic (its a minigame) that is meant to be used to earn faction reputation. However, since this is currently in beta, hacking missions will NOT grant reputation for the time being, since the feature likely has many bugs, balance problems, and other issues. If you have any feedback regarding the new feature, feel free to let me know\n- CHANGED THE RETURN VALUE OF getScriptIncome() WHEN RAN WITH NO ARGUMENTS. It will now return an array of two values rather than a single value. This may break your scripts, so make sure to update them!\n- Added continue statement for for/while loops\n- Added getServerMinSecurityLevel(), getPurchasedServers(), and getTimeSinceLastAug() Netscript functions\n- Netscript scp() function can now take an array as the first argument, and will try to copy every file specified in the array (it will just call scp() normally for every element in the array). If an array is passed in, then the scp() function returns true if at least one element from the array is successfully copied\n- Added Javascript's Date module to Netscript. Since 'new' is not supported in Netscript yet, only the Date module's static methods will work (now(), UTC(), parse(), etc.).\n- Failing a crime now gives half the experience it did before\n- The forced repeated 'Find The-Cave' message after installing The Red Pill Augmentation now only happens if you've never destroyed a BitNode before, and will only popup every 15 minutes. If you have already destroyed a BitNode, the message will not pop up if you have messages suppressed (if you don't have messages suppressed it WILL still repeatedly popup)\n- fileExists() function now works on literature files\n\n## v0.29.0 - 9/19/2017\n\n- Added BitNode-5: Artificial Intelligence\n- Added getIp(), getIntelligence(), getHackingMultipliers(), and getBitNodeMultipliers() Netscript functions (requires Source-File 5)\n- Updated scan() Netscript function so that you can choose to have it print IPs rather than hostnames\n- Refactored scp() Netscript function so that it takes an optional 'source server' argument\n- For Infiltration, decreased the percentage by which the security level increases by about 10% for every location\n- Using :w in the script editor's Vim keybinding mode should now save and quit to Terminal\n- Some minor optimizations that should reduce the size of the save file\n- scan-analyze Terminal command will no longer show your purchased servers, unless you pass a '-a' flag into the command\n- After installing the Red Pill augmentation from Daedalus, the message telling you to find 'The-Cave' will now repeatedly pop up regardless of whether or not you have messages suppressed\n- Various bugfixes\n\n## v0.28.6 - 9/15/2017\n\n- Time required to create programs now scales better with hacking level, and should generally be much faster\n- Added serverExists(hostname/ip) and getScriptExpGain(scriptname, ip, args...) Netscript functions\n- Short circuiting && and || logical operators should now work\n- Assigning to multidimensional arrays should now work\n- Scripts will no longer wait for hack/grow/weaken functions to finish if they are killed. They will die immediately\n- The script loop that checks whether any scripts need to be started/stopped now runs every 6 seconds rather than 10 (resulting in less delays when stopping/starting scripts)\n- Fixed several bugs/exploits\n- Added some description for BitNode-5 (not implemented yet, should be soon though)\n\n## v0.28.5 - 9/13/2017\n\n- The fl1ght.exe program that is received from jump3r is now sent very early on in the game, rather than at hacking level 1000\n- Hostname is now displayed in Terminal\n- Syntax highlighting now works for all Netscript functions\n- Export should now work on Edge/IE\n\n## v0.28.4 - 9/11/2017\n\n- Added getScriptIncome() Netscript function\n- Added Javascript's math module to Netscript. See [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math this link for details]\n- Added several member variables for the Hacknet Node API that allow you to access info about their income\n- All valid Netscript functions are now syntax highlighted as keywords in the editor. This means they will a different color than invalid netscript functions. The color will depend on your theme. Note that right now, this only applies for normal Netscript functions, not functions in the TIX API, Hacknet Node API, or Singularity Functions.\n- Comments and operators no longer count towards RAM usage in scripts.\n- Variety of bug fixes and updates to informational text in the game\n\n## v0.28.3 - 9/7/2017\n\n- Added ls() Netscript function\n- Increased company wages by about ~10% across the board\n- The scp() Netsction function and Terminal command now works for .lit files\n- Increased the amount of RAM on many lower level servers (up to level 200 hacking level required).\n\n## v0.28.2 - 9/4/2017\n\n- Added several configuration options for script editor (key bindings, themes, etc.)\n- Certain menu options will now be hidden until their relevant gameplay is unlocked. This includes the Factions, Augmentations, Create Program, Travel, and Job tabs. This will only affect newer players.\n- Most unrecognize or un-implemented syntax errors in Netscript will now include the line number in the error message\n\n## v0.28.1 - 9/1/2017\n\n- The script editor now uses the open-source Ace editor, which provides a much better experience when coding!\n- Added tprint() Netscript function\n\n## v0.28.0 - 8/30/2017\n\n- Added BitNode-4: The Singularity\n- Added BitNode-11: The Big Crash\n- Migrated the codebase to use webpack (doesn't affect any in game content, except maybe some slight performance improvements and there may be bugs that result from dependency errors\n\n## v0.27.3 - 8/19/2017\n\n- You can now purchase upgrades for Gang Members (BitNode 2 only)\n- Decreased Gang respect gains and slightly increased wanted gains (BitNode 2 only)\n- Other gangs will increase in power faster (BitNode 2 only)\n- Added getHackTime(), getGrowTime(), and getWeakenTime() Netscript functions\n\n## v0.27.2 - 8/18/2017\n\n- Added getServerGrowth() Netscript function\n- Added getNextHacknetNodeCost() Netscript function\n- Added new 'literature' files (.lit extension) that are used to build lore for the game. These .lit files can be found in certain servers throughout the game. They can be viewed with the 'cat' Terminal command and copied over to other servers using the 'scp' command. These .lit files won't be found until you reset by installing Augmentations\n- Fixed some bugs with Gang Territory(BitNode 2 only)\n\n## v0.27.1 - 8/15/2017\n\n- Changed the way Gang power was calculated to make it scale better late game (BitNode 2 only)\n- Lowered the respect gain rate in Gangs (Bitnode 2 only)\n- Added '| grep pattern' option for ls Terminal command. This allows you to only list files that contain a certain pattern\n- Added break statement in Netscript\n- Display for some numerical values is now done in shorthand (e.g 1.000m instead of 1,000,000)\n\n## v0.27.0 - 8/13/2017\n\n- Added secondary 'prestige' system - featuring Source Files and BitNodes\n- MILD SPOILERS HERE: Installing 'The Red Pill' Augmentation from Daedalus will unlock a special server called w0r1d_d43m0n. Finding and manually hacking this server through Terminal will destroy the Player's current BitNode, and allow the player to enter a new one. When destroying a BitNode, the player loses everything except the scripts on his/her home computer. The player will then gain a powerful second-tier persistent upgrade called a Source File. The player can then enter a new BitNode to start the game over. Each BitNode has different characteristics, and many will have new content/mechanics as well. Right now there are only 2 BitNodes. Each BitNode grants its own unique Source File. Restarting and destroying a BitNode you already have a Source File for will upgrade your Source File up to a maximum level of 3.\n\n- Reputation gain with factions and companies is no longer a linear conversion, but an exponential one. It will be much easier to gain faction favor at first, but much harder later on.\n- Significantly increased Infiltration exp gains\n- Fixed a bug with company job requirement tooltips\n- Added scriptRunning(), scriptKill(), and getScriptRam() Netscript functions. See documentation for details\n- Fixed a bug with deleteServer() Netscript function\n\n## v0.26.4 - 8/1/2017\n\n- All of the 'low-level servers' in early game that have a required hacking level now have 8GB of RAM instead of 4GB\n- Increased the amount of experience given at university\n- Slightly increased the production of Hacknet Nodes and made them cheaper to upgrade\n- Infiltration now gives slightly more EXP and faction reputation\n- Added two new crimes. These crimes are viable to attempt early on in the game and are relatively passive (each take 60+ seconds to complete)\n- Crimes give more exp and more money\n- Max money available on a server decreased from 50x the server's starting money to 25x\n- Significantly increased wages for all jobs\n\n## v0.26.3\n\n- Added support for large numbers using Decimal.js. Right now it only applies for the player's money\n- Purchasing servers with the Netscript function purchaseServer() is no longer 2x as expensive as doing manually it now costs the same\n- Early game servers have more starting money\n\n## v0.26.2\n\n- Major rebalancing and randomization of the amount of money that servers start with\n- Significantly lowered hacking exp gain from hacking servers. The exp gain for higher-level servers was lowered more than that of low level servers. (~16% for lower level servers, up to ~25% for higher-level servers)\n- Added deleteServer() Netscript function\n- You can now purchase a maximum of 25 servers each run (Deleting a server will allow you to purchase a new one)\n- Added autocompletion for './' Terminal command\n- Darkweb prices now displayed properly using toLocaleString()\n- Added NOT operator (!) and negation operator(-) in Netscript, so negative numbers should be functional now\n- Rejected faction invitations will now show up as 'Outstanding Faction Invites' in the Factions page. These can be accepted at any point in the future\n- Added a few more configurable game settings for suppressing messages and faction invitations\n- Added tooltips for company job requirements\n\n## v0.26.1\n\n- Added autocompletion for aliases\n- Added getServerRam() Netscript function()\n- Added getLevelUpgradeCost(n), getRamUpgradeCost(), getCoreUpgradeCost() functions for Netscript Hacknet Node API\n- Added some configurable settings (See Game Options menu)\n\n## v0.26.0\n\n- Game now has a real ending, although it's not very interesting/satisfying right now. It sets up the framework for the secondary prestige system in the future\n- Forgot to mention that since last update, comments now work in Netscript. Use // for single line comments or /\\* and \\*/ for multiline comments just like in Javascript\n- Added ports to Netscript. These ports are essentially serialized queues. You can use the write() Netscript function to write a value to a queue, and then you can use the read() Netscript function to read the value from the queue. Once you read a value from the queue it will be removed. There are only 10 queues (1-10), and each has a maximum capacity of 50 entries. If you try to write to a queue that is full, the the first value is removed. See wiki/Netscript documentation for more details\n- You can now use the 'help' Terminal command for specific commands\n- You can now use './' to run a script/program (./NUKE.exe). However, tab completion currently doesn't work for it (I'm working on it)\n- Decreased the base growth rate of servers by ~25%\n- Both the effect of weaken() and its time to execute were halved. In other words, calling weaken() on a server only lowers its security by 0.05 (was 0.1 before) but the time to execute the function is half of what it was before. Therefore, the effective rate of weaken() should be about the same\n- Increased all Infiltration rewards by ~10%, and increased infiltration rep gains by an additional 20% (~32% total for rep gains)\n- The rate at which the security level of a facility increases during Infiltration was decreased significantly (~33%)\n- Getting treated at the Hospital is now 33% more expensive\n- Slightly increased the amount of time it takes to hack a server\n- Slightly decreased the amount of money gained when hacking a server (~6%)\n- Slightly decreased the base cost for RAM on home computer, but increased the cost multiplier. This means that upgrading RAM on the home computer should be slightly cheaper at the start, but slightly more expensive later on\n- Increased the required hacking level for many late game servers\n- The sleep() Netscript function now takes an optional 'log' argument that specifies whether or not the 'Sleeping for N milliseconds' will be logged for the script\n- Added clearLog() Netscript function\n- Deleted a few stocks. Didn't see a reason for having so many, and it just affects performance. Won't take effect until you reset by installing Augmentations\n- There was a typo with Zeus Medical's server hostname. It is now 'zeus-med' rather than 'zeud-med'\n- Added keyboard shortcuts to quickly navigate between different menus. See wiki link (http://bitburner.wikia.com/wiki/Shortcuts)\n- Changed the Navigation Menu UI\n\n## v0.25.0\n\n- Refactored Netscript to use the open-source Acorns Parser. This re-implementation was done by [https://github.com/MrNuggelz Github user MrNuggelz]. This has resulted in several changes in the Netscript language. Some scripts might break because of these changes. Changes listed below:\n- Arrays are now fully functional Javascript arrays. You no longer need to use the 'Array' keyword to declare them.\n- The length(), clear/clear(), insert(), and remove() functions no longer work for arrays.\n- All Javascript array methods are available (splice(), push(), pop(), join(), shift(), indexOf(), etc. See documentation)\n- Variables assigned to arrays are now passed by value rather than reference\n\n- Incrementing/Decrementing are now available (i++, ++i)\n\n- You no longer need semicolons at the end of block statements\n\n- Elif is no longer valid. Use 'else if' instead\n\n- Netscript's Hacknet Node API functions no longer log anything\n- Stock prices now update every ~6 seconds when the game is active (was 10 seconds before)\n- Added a new mechanic that affects how stock prices change\n- Script editor now has dynamic indicators for RAM Usage and Line number\n- Augmentation Rebalancing - Many late game augmentations are now slightly more expensive. Several early game augmentations had their effects slightly decreased\n- Increased the amount of rewards (both money and rep) you get from infiltration\n- Purchasing servers is now slightly more expensive\n- Calling the Netscript function getServerMoneyAvailable('home') now return's the player's money\n- Added round(n) Netscript function - Rounds a number\n- Added purchaseServer(hostname, ram) Netscript function\n- Added the TIX API. This must be purchased in the WSE. It persists through resets. Access to the TIX API allows you to write scripts that perform automated algorithmic trading. See Netscript documentation\n- Minor rebalancing in a lot of different areas\n- Changed the format of IP Addresses so that they are smaller (will consist mostly of single digit numbers now). This will reduce the size of the game's save file.\n\n## v0.24.1\n\n- Adjusted cost of upgrading home computer RAM. Should be a little cheaper for the first few upgrades (up to ~64GB), and then will start being more expensive than before. High RAM upgrades should now be significantly more expensive than before.\n- Slightly lowered the starting money available on most mid-game and end-game servers (servers with required hacking level greater than 200) by about 10-15%\n- Rebalanced company/company position reputation gains and requirements\n- Studying at a university now gives slightly more EXP and early jobs give slightly less EXP\n- Studying at a university is now considerably more expensive\n- Rebalanced stock market\n- Significantly increased cost multiplier for purchasing additional Hacknet Nodes\n- The rate at which facility security level increases during infiltration for each clearance level was lowered slightly for all companies\n- Updated Faction descriptions\n- Changed the way alias works. Normal aliases now only work at the start of a Terminal command (they will only replace the first word in the Terminal command). You can also create global aliases that work on any part of the command, like before. Declare global aliases by entering the optional -g flag: alias -g name=\"value\" - [https://github.com/MrNuggelz Courtesy of Github user MrNuggelz]\n- 'top' Terminal command implemented courtesy of [https://github.com/LTCNugget Github user LTCNugget]. Currently, the formatting gets screwed up if your script names are really long.\n\n## v0.24.0\n\n- Players now have HP, which is displayed in the top right. To regain HP, visit the hospital. Currently the only way to lose HP is through infiltration\n- Infiltration - Attempt to infiltrate a company and steal their classified secrets. See 'Companies' documentation for more details\n- Stock Market - Added the World Stock Exchange (WSE), a brokerage that lets you buy/sell stocks. To begin trading you must first purchase an account. A WSE account will persist even after resetting by installing Augmentations. How the stock market works should hopefully be self explanatory. There is no documentation about it currently, I will add some later. NOTE: Stock prices only change when the game is open. The Stock Market is reset when installing Augmentations, which means you will lose all your stocks\n- Decreased money gained from hacking by ~12%\n- Increased reputation required for all Augmentations by ~40%\n- Cost increase when purchasing multiple augmentations increased from 75% to 90%\n- Added basic variable runtime to Netscript operations. Basic commands run in 100ms. Any function incurs another 100ms in runtime (200ms total). Any function that starts with getServer incurs another 100ms runtime (300ms total). exec() and scp() require 400ms total.\n- Slightly reduced the amount of experience gained from hacking\n\n## v0.23.1\n\n- scan() Netscript function now takes a single argument representing the server from which to scan.\n\n## v0.23.0\n\n- You can now purchase multiple Augmentations in a run. When you purchase an Augmentation you will lose money equal to the price and then the cost of purchasing another Augmentation during this run will be increased by 75%. You do not gain the benefits of your purchased Augmentations until you install them. This installation can be done through the 'Augmentation' tab. When you install your Augmentations, your game will reset like before.\n- Reputation needed to gain a favor from faction decreased from 7500 to 6500\n- Reputation needed to gain a favor from company increased from 5000 to 6000\n- Reputation cost of all Augmentations increased by 16%\n- Higher positions at companies now grant slightly more reputation for working\n- Added getServerMaxMoney() Netscript function\n- Added scan() Netscript function\n- Added getServerNumPortsRequired() Netscript function\n- There is now no additional RAM cost incurred when multithreading a script\n\n## v0.22.1\n\n- You no longer lose progress on creating programs when cancelling your work. Your progress will be saved and you will pick up where you left off when you start working on it again\n- Added two new programs: AutoLink.exe and ServerProfiler.exe\n- Fixed bug with Faction Field work reputation gain\n\n## v0.22.0 - Major rebalancing, optimization, and favor system\n\n- Significantly nerfed most augmentations\n- Almost every server with a required hacking level of 200 or more now has slightly randomized server parameters. This means that after every Augmentation purchase, the required hacking level, base security level, and growth factor of these servers will all be slightly different\n- The hacking speed multiplier now increases rather than decreases. The hacking time is now divided by your hacking speed multiplier rather than multiplied. In other words, a higher hacking speed multiplier is better\n- Servers now have a minimum server security, which is approximately one third of their starting ('base') server security\n- If you do not steal any money from a server, then you gain hacking experience equal to the amount you would have gained had you failed the hack\n- The effects of grow() were increased by 50%\n- grow() and weaken() now give hacking experience based on the server's base security level, rather than a flat exp amount\n- Slightly reduced amount of exp gained from hack(), weaken(), and grow()\n- Rebalanced formulas that determine crime success\n- Reduced RAM cost for multithreading a script. The RAM multiplier for each thread was reduced from 1.02 to 1.005\n- Optimized Script objects so they take less space in the save file\n- Added getServerBaseSecurityLevel() Netscript function\n- New favor system for companies and factions. Earning reputation at a company/faction will give you favor for that entity when you reset after installing an Augmentation. This favor persists through the rest of the game. The more favor you have, the faster you will earn reputation with that faction/company\n- You can no longer donate to a faction for reputation until you have 150 favor with that faction\n- Added unalias Terminal command\n- Changed requirements for endgame Factions\n\n## v0.21.1\n\n- IF YOUR GAME BREAKS, DO THE FOLLOWING: Options -> Soft Reset -> Save Game -> Reload Page. Sorry about that!\n- Autocompletion for aliases - courtesy of [https://github.com/LTCNugget Github user LTCNugget]\n\n## v0.21.0\n\n- Added dynamic arrays. See Netscript documentation\n- Added ability to pass arguments into scripts. See documentation\n- The implementation/function signature of functions that deal with scripts have changed. Therefore, some old scripts might not work anymore. Some of these functions include run(), exec(), isRunning(), kill(), and some others I may have forgot about. Please check the updated Netscript documentation if you run into issues.-Note that scripts are now uniquely identified by the script name and their arguments. For example, you can run a script using::\n\n run foodnstuff.script 1\n\nand you can also run the same script with a different argument::\n\n run foodnstuff.script 2\n\nThese will be considered two different scripts. To kill the first script you must run::\n\n kill foodnstuff.script 1\n\nand to kill the second you must run::\n\n kill foodnstuff.script 2\n\nSimilar concepts apply for Terminal Commands such as tail, and Netscript commands such as run(), exec(), kill(), isRunning(), etc.\n\n- Added basic theme functionality using the 'theme' Terminal command - All credit goes to /u/0x726564646974 who implemented the awesome feature\n- Optimized Script objects, which were causing save errors when the player had too many scripts\n- Formula for determining exp gained from hacking was changed\n- Fixed bug where you could purchase Darkweb items without TOR router\n- Slightly increased cost multiplier for Home Computer RAM\n- Fixed bug where you could hack too much money from a server (and bring its money available below zero)\n- Changed tail command so that it brings up a display box with dynamic log contents. To get old functionality where the logs are printed to the Terminal, use the new 'check' command\n- As a result of the change above, you can no longer call tail/check on scripts that are not running\n- Added autocompletion for buying Programs in Darkweb\n\n## v0.20.2\n\n- Fixed several small bugs\n- Added basic array functionality to Netscript\n- Added ability to run scripts with multiple threads. Running a script with n threads will multiply the effects of all hack(), grow(), and weaken() commands by n. However, running a script with multiple threads has drawbacks in terms of RAM usage. A script's ram usage when it is 'multithreaded' is calculated as: base cost _ numThreads _ (1.02 ^ numThreads). A script can be run multithreaded using the 'run [script] -t n' Terminal command or by passing in an argument to the run() and exec() Netscript commands. See documentation.\n- RAM is slightly (~10%) more expensive (affects purchasing server and upgrading RAM on home computer)\n- NeuroFlux Governor augmentation cost multiplier decreased\n- Netscript default operation runtime lowered to 200ms (was 500ms previously)\n\n## v0.20.1\n\n- Fixed bug where sometimes scripts would crash without showing the error\n- Added Deepscan programs to Dark Web\n- Declining a faction invite will stop you from receiving invitations from that faction for the rest of the run\n- (BETA) Added functionality to export/import saves. WARNING This is only lightly tested. You cannot choose where to save your file it just goes to the default save location. Also I have no idea what will happen if you try to import a file that is not a valid save. I will address these in later updates\n\n## v0.20.0\n\n- Refactored Netscript Interpreter code. Operations in Netscript should now run significantly faster (Every operation such as a variable assignment, a function call, a binary operator, getting a variable's value, etc. used to take up to several seconds, now each one should only take ~500 milliseconds).\n- Percentage money stolen when hacking lowered to compensate for faster script speeds\n- Hacking experience granted by grow() halved\n- Weaken() is now ~11% faster, but only grants 3 base hacking exp upon completion instead of 5\n- Rebalancing of script RAM costs. Base RAM Cost for a script increased from 1GB to 1.5GB. Loops, hack(), grow() and weaken() all cost slightly less RAM than before\n- Added getServerRequiredHackingLevel(server) Netscript command.\n- Added fileExists(file, [server]) Netscript command, which is used to check if a script/program exists on a specified server\n- Added isRunning(script, [server]) Netscript command, which is used to check if a script is running on the specified server\n- Added killall Terminal command. Kills all running scripts on the current machine\n- Added kill() and killall() Netscript commands. Used to kill scripts on specified machines. See Netscript documentation\n- Re-designed 'Active Scripts' tab\n- Hacknet Node base production rate lowered from 1.6 to 1.55 ($/second)\n- Increased monetary cost of RAM (Upgrading home computer and purchasing servers will now be more expensive)\n- NEW GROWTH MECHANICS - The rate of growth on a server now depends on a server's security level. A higher security level will result in lower growth on a server when using the grow() command. Furthermore, calling grow() on a server raises that server's security level by 0.004. For reference, if a server has a security level of 10 it will have approximately the same growth rate as before.\n- Server growth no longer happens naturally\n- Servers now have a maximum limit to their money. This limit is 50 times it's starting money\n- Hacking now grants 10% less hacking experience\n- You can now edit scripts that are running\n- Augmentations cost ~11% more money and 25% more faction reputation\n\n## v0.19.7\n\n- Added changelog to Options menu\n- Bug fix with autocompletion (wasn't working properly for capitalized filenames/programs\n\n## v0.19.6\n\n- Script editor now saves its state even when you change tabs\n- scp() command in Terminal/script will now overwrite files at the destination\n- Terminal commands are no longer case-sensitive (only the commands themselves such as 'run' or 'nano'. Filenames are still case sensitive\n- Tab automcompletion will now work on commands\n\n## v0.19.0\n\n- Hacknet Nodes have slightly higher base production, and slightly increased RAM multiplier. But they are also a bit more expensive at higher levels\n- Calling grow() and weaken() in a script will now work offline, at slower rates than while online (The script now keeps track of the rate at which grow() and weaken() are called when the game is open. These calculated rates are used to determine how many times the calls would be made while the game is offline)\n- Augmentations now cost 20% more reputation and 50% more money\n- Changed the mechanic for getting invited to the hacking factions (CyberSec, NiteSec, The Black Hand, BitRunners) Now when you get to the required level to join these factions you will get a message giving you instructions on what to do in order to get invited.\n- Added a bit of backstory/plot into the game. It's not fully fleshed out yet but it will be used in the future\n- Made the effects of many Augmentations slightly more powerful\n- Slightly increased company job wages across the board (~5-10% for each position)\n- Gyms and classes are now significantly more expensive\n- Doubled the amount by which a server's security increases when it is hacked. Now, it will increase by 0.002. Calling weaken() on a server will lower the security by 0.1.\n\n## v0.18.0\n\n- Major rebalancing (sorry didn't record specifics. But in general hacking gives more money and hacknet nodes give less)\n- Server growth rate (both natural and manual using grow()) doubled\n- Added option to Soft Reset\n- Cancelling a full time job early now only results in halved gains for reputation. Exp and money earnings are gained in full\n- Added exec() Netscript command, used to run scripts on other servers.\n- NEW HACKING MECHANICS: Whenever a server is hacked, its 'security level' is increased by a very small amount. The security level is denoted by a number between 1-100. A higher security level makes it harder to hack a server and also decreases the amount of money you steal from it. Two Netscript functions, weaken() and getServerSecurityLevel() level, were added. The weaken(server) function lowers a server's security level. See the Netscript documentation for more details\n- When donating to factions, the base rate is now $1,000,000 for 1 reputation point. Before, it was $1,000 for 1 reputation point.\n- Monetary costs for all Augmentations increased. They are now about ~3.3 - 3.75 times more expensive than before\n\n## v0.17.1\n\n- Fixed issue with purchasing Augmentations that are 'upgrades' and require previous Augmentations to be installed\n- Increased the percentage of money stolen from servers when hacking\n\n## v0.17.0\n\n- Greatly increased amount of money gained for crimes (by about 400% for most crimes)\n- Criminal factions require slightly less negative karma to get invited to\n- Increased the percentage of money stolen from servers when hacking\n- Increased the starting amount of money available on beginning servers (servers with <50 required hacking))\n- Increased the growth rate of servers (both naturally and manually when using the grow() command in a script)\n- Added getHostname() command in Netscript that returns the hostname of the server a script is running on\n- jQuery preventDefault() called when pressing ctrl+b in script editor\n- The Neuroflux Governor augmentation (the one that can be repeatedly leveled up) now increases ALL multipliers by 1%. To balance it out, it's price multiplier when it levels up was increased\n- Hacknet Node base production decreased from $1.75/s to $1.65/s\n- Fixed issue with nested for loops in Netscript (stupid Javascript references)\n- Added 'scp' command to Terminal and Netscript\n- Slightly nerfed Hacknet Node Kernel DNI and Hacknet Node Core DNI Augmentations\n- Increased TOR Router cost to $200k\n\n## v0.16.0\n\n- New Script Editor interface\n- Rebalanced hacknet node - Increased base production but halved the multiplier from additional cores. This should boost its early-game production but nerf its late-game production\n- Player now starts with 8GB of RAM on home computer\n- 'scan-analyze' terminal command displays RAM on servers\n- Slightly buffed the amount of money the player steals when hacking servers (by about ~8%)\n- Time to execute grow() now depends on hacking skill and server security, rather than taking a flat 2 minutes.\n- Clicking outside of a pop-up dialog box will now close it\n- BruteSSH.exe takes 33% less time to create\n- 'iron-gym' and 'max-hardware' servers now have 2GB of RAM\n- Buffed job salaries across the board\n- Updated Tutorial\n- Created a Hacknet Node API for Netscript that allows you to access and upgrade your Hacknet Nodes. See the Netscript documentation for more details. WARNING The old upgradeHacknetNode() and getNumHacknetNodes() functions waere removed so any script that has these will no longer work\n\n## v0.15.0\n\n- Slightly reduced production multiplier for Hacknet Node RAM\n- Faction pages now scroll\n- Slightly increased amount of money gained from hacking\n- Added 'alias' command\n- Added 'scan-analyze' terminal command - used to get basic hacking info about all immediate network connections\n- Fixed bugs with upgradeHacknetNode() and purchaseHacknetNode() commands\n- Added getNumHacknetNodes() and hasRootAccess(hostname/ip) commands to Netscript\n- Increased Cost of university classes/gym\n- You can now see what an Augmentation does and its price even while its locked\n"},95143:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# What BitNode should I do?\n\nAfter destroying their first [BitNode](../advanced/bitnodes.md), many players wonder which [BitNode](../advanced/bitnodes.md) they should tackle next.\nThis guide hopefully helps answer that question.\n\n## Recommended BitNodes\n\nAs a player, you are not forced to tackle the [BitNodes](../advanced/bitnodes.md) in any particular order.\nYou are free to choose whichever ones you want.\nThe \"best\" order can vary between players, depending on what you like to do any what kind of player you are.\nIn general, here are the recommended [BitNodes](../advanced/bitnodes.md) for different things:\n\n## For fast progression\n\nThese paths do not recommend the absolute fastest path, since speed of progression is highly dependant on playing style.\n\n1. Repeat BN-1 until you max out its [Source-File](../advanced/sourcefiles.md).\n Its [Source-File](../advanced/sourcefiles.md) is extremely powerful, as it raises all multipliers by a significant amount.\n This also allows you to get used to augments and other features resetting.\n\n2. Do BN-3 at least once to unlock the [Corporation](../advanced/corporations.md) mechanic, finishing all 3 levels unlocks the full API for free, allowing fully scripted corp.\n This mechanic has the highest profit potential in the game.\n\n3. Do BN-10 once to unlock [Sleeves](../advanced/sleeves.md) and [Grafting](../advanced/grafting.md).\n [Sleeves](../advanced/sleeves.md) are useful in all nodes and grafting can be useful in future [BitNodes](../advanced/bitnodes.md), especially BN-8.\n It's recommended to buy all purchasable [Sleeves](../advanced/sleeves.md) and their memory during the first run.\n\n The ordering of the next three is dependant on playing style and wants/needs.\n\n4. Do BN-5 once or twice.\n The [Intelligence](../advanced/intelligence.md) stat it unlocks will gradually build up as you continue to play the game, and will be helpful in the future.\n The [Source-File](../advanced/sourcefiles.md) also provides [hacking](../basic/hacking.md) multipliers, which are strong because [hacking](../basic/hacking.md) is typically one of the best ways of earning money.\n\n5. Do BN-4. Its [Source-File](../advanced/sourcefiles.md) does not directly make you more powerful in any way, but unlocks the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md).\n This API allows you to automate significantly more aspects of the game.\n Consider repeating until Level 3, since each level decreases the [RAM](../basic/ram.md) cost of the functions.\n\n6. Do BN-2 once to unlock the [Gang](../advanced/gang.md) mechanic.\n This mechanic has high profit potential and offers large amounts of [Augmentations](../basic/augmentations.md) in a single faction.\n Having sleeves ([Source-File](../advanced/sourcefiles.md) 10) greatly reduces the time it takes to get access to [Gangs](../advanced/gang.md) outside this [BitNode](../advanced/bitnodes.md).\n\n7. Do BN-9 to unlock the [Hacknet Server](../advanced/hacknetservers.md) mechanic.\n You can consider repeating it as well, as its Level 2 and 3 effects are pretty helpful as well.\n\n## For the strongest Source-Files\n\nNote that the strongest [Source-Files](../advanced/sourcefiles.md) are typically rewarded by the hardest [BitNodes](../advanced/bitnodes.md).\n\nThe strongest [Source-File](../advanced/sourcefiles.md) is that from BN-1, as it raises all multipliers by a significant amount.\n\nThe [Source-File](../advanced/sourcefiles.md) from BN-9 is good because it unlocks the Hacknet Server mechanic.\nThe [Hacknet Server](../advanced/hacknetservers.md) mechanic causes [Hacknet Nodes](../basic/hacknet_nodes.md) to produce a new currency called `hashes`, rather than money.\n`Hashes` can be spent on powerful upgrades that benefit your [hacking](../basic/hacking.md), [Corporation](../advanced/corporations.md), [Bladeburner](../advanced/bladeburners.md), etc.\n\nThe [Sleeves](../advanced/sleeves.md) granted by the [Source-File](../advanced/sourcefiles.md) from BN-10 are strong, but only after you have several of them and have spent some time/money upgrading them.\n\n## For more scripting/hacking\n\nBN-4 unlocks the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md), which can be used to automate many different aspects of the game, including working for [Factions](../basic/factions.md) / [Companies](../basic/companies.md), purchasing & installing [Augmentations](../basic/augmentations.md), and creating programs\n\nBN-6 and BN-7 unlock [Bladeburner](../advanced/bladeburners.md) and its corresponding [Bladeburner API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.bladeburner.md).\nThis allows you to automate an entire new mechanic.\n\nBN-2 also unlocks a new mechanic and API for automating the [Gang](../advanced/gang.md) mechanic.\nHowever, it is not as interesting as [Bladeburner](../advanced/bladeburners.md)\n\nBN-9 unlocks the [Hacknet Server](../advanced/hacknetservers.md) mechanic and several new functions in the [Hacknet Node API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.hacknet.md) for using it.\n\n## For new mechanics\n\nBN-2 unlocks a new mechanic in which you can manage a [Gang](../advanced/gang.md).\n[Gangs](../advanced/gang.md) earn you money and can be very profitable once they get large and powerful.\nThe biggest benefit of [Gangs](../advanced/gang.md), however, is that they make all [Augmentations](../basic/augmentations.md) available to you through their corresponding [Faction](../basic/factions.md).\n\nBN-3 unlocks a new mechanic in which you can manage a [Corporation](../advanced/corporations.md).\nYou can earn money through [Corporations](../advanced/corporations.md) by selling your stocks, or by configuring your [Corporation](../advanced/corporations.md) to pay dividends to shareholders.\nIf your [Corporation](../advanced/corporations.md) gets big enough, it can also bribe [Factions](../basic/factions.md) in exchange for [Faction](../basic/factions.md) [Reputation](../basic/reputation.md).\n\nBN-6 unlocks a new mechanic that centers around combat rather than hacking.\nThe main benefit of the [Bladeburner](../advanced/bladeburners.md) mechanic is that it offers a new method of destroying a [BitNode](../advanced/bitnodes.md).\n\nBN-9 unlocks the [Hacknet Server](../advanced/hacknetservers.md), which is an upgraded version of a [Hacknet Node](../basic/hacknet_nodes.md).\nThe [Hacknet Server](../advanced/hacknetservers.md) generates a computational unit called a `hash`.\n`Hashes` can be spent on a variety of different upgrades that can benefit your hacking, [Corporation](../advanced/corporations.md), [Bladeburner](../advanced/bladeburners.md) progress, and more.\nIt transforms the [Hacknet Node](../basic/hacknet_nodes.md) from a simple money-generator to a more interesting mechanic.\n\nBN-10 unlocks two new mechanics: [Sleeves](../advanced/sleeves.md) and [Grafting](../advanced/grafting.md)\n\nBN-13 unlocks [Stanek's Gift](../advanced/stanek.md). This gift can improve skills, [hacknet](../basic/hacknet_nodes.md) production and costs, working and [crime](../basic/crimes.md) gains, and [hacking](../basic/hacking.md) power and speed.\n\n## For a Challenge\n\nIn general, the higher [BitNodes](../advanced/bitnodes.md) are more difficult than the lower ones.\nBN-12 is an obvious exception as it gets progressively harder.\n\nBN-8 provides a unique challenge, as the only method of earning money in that [BitNode](../advanced/bitnodes.md) is through trading at the stock market.\n"},98751:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Getting Started Guide for Beginner Programmers\n\n_Note_: The [Scripts](../basic/scripts.md) and strategies given in this guide aren't necessarily optimal.\nThey're just meant to introduce you to the game and help you get started.\n\nThis is an introductory guide to getting started with Bitburner.\nIt is not meant to be a comprehensive guide for the entire game, only the early stages.\nIf you are confused or overwhelmed by the game, especially the programming and scripting aspects, this guide is perfect for you!\n\nNote that this guide is tailored towards those with minimal programming experience.\n\n## Introduction\n\nBitburner is a cyberpunk-themed incremental RPG.\nThe player progresses by raising their [Stats](../basic/stats.md), earning money, and climbing the corporate ladder.\nEventually, after reaching certain criteria, the player will begin receiving invitations from [Factions](../basic/factions.md).\nJoining these [Factions](../basic/factions.md) and working for them will unlock [Augmentations](../basic/augmentations.md).\nPurchasing and installing [Augmentations](../basic/augmentations.md) provides persistent upgrades and is necessary for progressing in the game.\n\nThe game has a minimal story/quest-line that can be followed to reach the end of the game.\nSince this guide is only about getting started with Bitburner, it will not cover the entire \"quest-line\".\n\n## First Steps\n\nI'm going to assume you followed the introductory tutorial when you first began the game.\nIn this introductory tutorial, you created a [Script](../basic/scripts.md) called `n00dles.js` and ran it on the `n00dles` server.\nRight now, we'll kill this [Script](../basic/scripts.md). There are two ways to do this:\n\n- You can go to the Terminal and enter: `$ kill n00dles.js`\n- You can go to the `Active Scripts` page (Alt + s) and press the `Kill Script` button for `n00dles.js`.\n\nIf you skipped the introductory tutorial, then ignore the part above.\nInstead, go to the `Hacknet Nodes` page (Alt + h) and purchase a [Hacknet Node](../basic/hacknet_nodes.md) to start generating some passive income.\n\n## Creating our First Script\n\nNow, we'll create a generic [hacking](../basic/hacking.md) [Script](../basic/scripts.md) that can be used early on in the game (or throughout the entire game, if you want).\n\nBefore we write the [Script](../basic/scripts.md), here are some things you'll want to familiarize yourself with:\n\n- `hacking`\n- `security`\n- `hack`\n- `grow`\n- `weaken`\n- `brutessh`\n- `nuke`\n\nTo briefly summarize: Each [Server](../basic/servers.md) has a security level that affects how difficult it is to hack.\nEach [Server](../basic/servers.md) also has a certain amount of money, as well as a maximum amount of money it can hold.\n[Hacking](../basic/hacking.md) a [Server](../basic/servers.md) steals a percentage of that [Server](../basic/servers.md)'s money.\nThe `hack()` function is used to hack a [Server](../basic/servers.md).\nThe `grow()` function is used to increase the amount of money available on a [Server](../basic/servers.md).\nThe `weaken()` function is used to decrease a [Server](../basic/servers.md)'s security level.\n\nNow let's move on to actually creating the [Script](../basic/scripts.md).\nGo to your home computer and then create a [Script](../basic/scripts.md) called `early-hack-template.js` by going to [Terminal](../basic/terminal.md) and entering the following two commands:\n\n $ home\n $ nano early-hack-template.js\n\nThis will take you to the [Script](../basic/scripts.md) editor, which you can use to code and create [Scripts](../basic/scripts.md).\n\nEnter the following code in the [Script](../basic/scripts.md) editor:\n\n /** @param {NS} ns */\n export async function main(ns) {\n // Defines the \"target server\", which is the server\n // that we're going to hack. In this case, it's \"n00dles\"\n const target = \"n00dles\";\n\n // Defines how much money a server should have before we hack it\n // In this case, it is set to the maximum amount of money.\n const moneyThresh = ns.getServerMaxMoney(target);\n\n // Defines the maximum security level the target server can\n // have. If the target's security level is higher than this,\n // we'll weaken it before doing anything else\n const securityThresh = ns.getServerMinSecurityLevel(target);\n\n // If we have the BruteSSH.exe program, use it to open the SSH Port\n // on the target server\n if (ns.fileExists(\"BruteSSH.exe\", \"home\")) {\n ns.brutessh(target);\n }\n\n // Get root access to target server\n ns.nuke(target);\n\n // Infinite loop that continously hacks/grows/weakens the target server\n while(true) {\n if (ns.getServerSecurityLevel(target) > securityThresh) {\n // If the server's security level is above our threshold, weaken it\n await ns.weaken(target);\n } else if (ns.getServerMoneyAvailable(target) < moneyThresh) {\n // If the server's money is less than our threshold, grow it\n await ns.grow(target);\n } else {\n // Otherwise, hack it\n await ns.hack(target);\n }\n }\n }\n\nThe [Script](../basic/scripts.md) above contains comments that document what it does, but let's go through it step-by-step anyway.\n\n const target = \"n00dles\";\n\nThis first command defines a string which contains our target [Server](../basic/servers.md).\nThat's the [Server](../basic/servers.md) that we're going to [hack](../basic/hacking.md).\nFor now, it's set to `\"n00dles\"` because that's the only [Server](../basic/servers.md) with a required hacking level of `1`.\nIf you want to [hack](../basic/hacking.md) a different [Server](../basic/servers.md), simply change this variable to be the hostname of another [Server](../basic/servers.md).\n\n const moneyThresh = ns.getServerMaxMoney(target);\n\nThis second command defines a numerical value representing the minimum amount of money that must be available on the target [Server](../basic/servers.md) in order for our [Script](../basic/scripts.md) to [hack](../basic/hacking.md) it.\nIf the money available on the target [Server](../basic/servers.md) is less than this value, then our [Script](../basic/scripts.md) will `grow()` the [Server](../basic/servers.md) rather than [hacking](../basic/hacking.md) it.\nIt is set to the maximum amount of money that can be available on the [Server](../basic/servers.md).\nThe `getServerMaxMoney()` function is used to find this value\n\n const securityThresh = ns.getServerMinSecurityLevel(target);\n\nThis third command defines a numerical value representing the minimum security level the target [Server](../basic/servers.md) can have.\nIf the target [Server](../basic/servers.md)'s security level is higher than this value, then our [Script](../basic/scripts.md) will `weaken()` the [Script](../basic/scripts.md) before doing anything else.\n\n if (ns.fileExists(\"BruteSSH.exe\", \"home\")) {\n ns.brutessh(target);\n }\n\n ns.nuke(target);\n\nThis section of code is used to gain root access on the target [Server](../basic/servers.md).\nThis is necessary for [hacking](../basic/hacking.md).\n\n while (true) {\n if (ns.getServerSecurityLevel(target) > securityThresh) {\n // If the server's security level is above our threshold, weaken it\n await ns.weaken(target);\n } else if (ns.getServerMoneyAvailable(target) < moneyThresh) {\n // Otherwise, if the server's money is less than our threshold, grow it\n await ns.grow(target);\n } else {\n // Otherwise, hack it\n await ns.hack(target);\n }\n }\n\nThis is the main section that drives our [Script](../basic/scripts.md).\nIt dictates the [Script](../basic/scripts.md)'s logic and carries out the [hacking](../basic/hacking.md) operations.\nThe `while (true)` creates an infinite loop that will continuously run the [hacking](../basic/hacking.md) logic until the the [Script](../basic/scripts.md) is killed.\n\nThe await keyword is needed for `hack()` / `grow()` / `weaken()` because these commands take time to execute, unlike the others.\nIf you forget to await these commands, you will get an exception saying you tried to do multiple things at once, because your code will immediately finish the function call without waiting for the operation to be done.\nAlso important is that await can only be used in functions marked `async` (note that `main()` is marked `async`).\n\n## Running our Scripts\n\nNow we want to start running our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) so that it can start earning us money and experience.\nOur home computer only has 8GB of [RAM](../basic/ram.md), and we'll be using it for something else later.\nInstead, we'll take advantage of the [RAM](../basic/ram.md) on other machines.\n\nGo to `Terminal` and enter the following command:\n\n $ scan-analyze 2\n\nThis will show detailed information about some [Servers](../basic/servers.md) on the network.\nThe **network is randomized so it will be different for every person**.\nHere's what mine showed at the time I made this:\n\n [home ~]> scan-analyze 2\n ┕ home\n ┃ Root Access: YES, Required hacking skill: 1\n ┃ Number of open ports required to NUKE: 5\n ┃ RAM: 8.00GB\n ┣ n00dles\n ┃ ┃ Root Access: YES, Required hacking skill: 1\n ┃ ┃ Number of open ports required to NUKE: 0\n ┃ ┃ RAM: 4.00GB\n ┃ ┕ nectar-net\n ┃ Root Access: NO, Required hacking skill: 20\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┣ foodnstuff\n ┃ ┃ Root Access: NO, Required hacking skill: 1\n ┃ ┃ Number of open ports required to NUKE: 0\n ┃ ┃ RAM: 16.00GB\n ┃ ┕ zer0\n ┃ Root Access: NO, Required hacking skill: 75\n ┃ Number of open ports required to NUKE: 1\n ┃ RAM: 32.00GB\n ┣ sigma-cosmetics\n ┃ ┃ Root Access: NO, Required hacking skill: 5\n ┃ ┃ Number of open ports required to NUKE: 0\n ┃ ┃ RAM: 16.00GB\n ┃ ┕ max-hardware\n ┃ Root Access: NO, Required hacking skill: 80\n ┃ Number of open ports required to NUKE: 1\n ┃ RAM: 32.00GB\n ┣ joesguns\n ┃ Root Access: NO, Required hacking skill: 10\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┣ hong-fang-tea\n ┃ Root Access: NO, Required hacking skill: 30\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┣ harakiri-sushi\n ┃ Root Access: NO, Required hacking skill: 40\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┕ iron-gym\n ┃ Root Access: NO, Required hacking skill: 100\n ┃ Number of open ports required to NUKE: 1\n ┃ RAM: 32.00GB\n ┕ CSEC\n Root Access: NO, Required hacking skill: 55\n Number of open ports required to NUKE: 1\n RAM: 8.00GB\n\nTake note of the following servers:\n\n- `sigma-cosmetics`\n- `joesguns`\n- `nectar-net`\n- `hong-fang-tea`\n- `harakiri-sushi`\n\nAll of these servers have 16GB of [RAM](../basic/ram.md).\nFurthermore, all of these servers do not require any open ports in order to NUKE.\nIn other words, we can gain root access to all of these servers and then run [Scripts](../basic/scripts.md) on them.\n\nFirst, let's determine how many threads of our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) we can run.\n(See the page on [scripts](../basic/scripts.md) for more information on multithreading.)\n\nThe [Script](../basic/scripts.md) we wrote uses 2.6GB of [RAM](../basic/ram.md).\nYou can check this using the following `Terminal` command:\n\n $ mem early-hack-template.js\n\nThis means we can run 6 threads on a 16GB server.\nNow, to run our [Scripts](../basic/scripts.md) on all of these servers, we have to do the following:\n\n1. Use the `scp` command to copy our [Script](../basic/scripts.md) to each server.\n2. Use the `connect` command to connect to a server.\n3. Use the `run` command to run the `NUKE.exe` program and gain root access.\n4. Use the `run` command again to run our [Script](../basic/scripts.md).\n5. Repeat steps 2-4 for each server.\n\nHere's the sequence of `Terminal` commands I used in order to achieve this:\n\n $ home\n $ scp early-hack-template.js n00dles\n $ scp early-hack-template.js sigma-cosmetics\n $ scp early-hack-template.js joesguns\n $ scp early-hack-template.js nectar-net\n $ scp early-hack-template.js hong-fang-tea\n $ scp early-hack-template.js harakiri-sushi\n $ connect n00dles\n $ run NUKE.exe\n $ run early-hack-template.js -t 1\n $ home\n $ connect sigma-cosmetics\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n $ home\n $ connect joesguns\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n $ home\n $ connect hong-fang-tea\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n $ home\n $ connect harakiri-sushi\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n $ home\n $ connect hong-fang-tea\n $ connect nectar-net\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n\nPressing the `Tab` key in the middle of a Terminal command will attempt to auto-complete the command.\nFor example, if you type in `scp ea` and then hit `Tab`, the rest of the [Script](../basic/scripts.md)'s name should automatically be filled in.\nThis works for most commands in the game!\n\nThe `home` command is used to connect to the home computer. When running our [Scripts](../basic/scripts.md) with the `run early-hack-template.js -t 6` command, the `-t 6` specifies that the [Script](../basic/scripts.md) should be run with 6 threads.\n\nNote that the `nectar-net` [Server](../basic/servers.md) isn't in the home computer's immediate network.\nThis means you can't directly connect to it from home. You will have to search for it inside the network.\nThe results of the `scan-analyze 2` command we ran before will show where it is.\nIn my case, I could connect to it by going from `hong-fang-tea` -> `nectar-net`.\nHowever, this will probably be different for you.\n\nAfter running all of these `Terminal` commands, our [Scripts](../basic/scripts.md) are now up and running.\nThese will earn money and hacking experience over time.\nThese gains will be really slow right now, but they will increase once our hacking skill rises and we start running more [Scripts](../basic/scripts.md).\n\n## Increasing Hacking Level\n\nThere are many [Servers](../basic/servers.md) besides `n00dles` that can be hacked, but they have higher required hacking levels.\nTherefore, we should raise our hacking level.\nNot only will this let us hack more [Servers](../basic/servers.md), but it will also increase the effectiveness of our [hacking](../basic/hacking.md) against `n00dles`.\n\nThe easiest way to train your hacking level is to visit Rothman University.\nYou can do this from the `City` tab (Alt + w) on the left-hand navigation menu.\nRothman University should be the \"U\" near the bottom-right.\nClick the \"U\" to go to the location.\n\nOnce you go to Rothman University, you should see a screen with several options.\nThese options describe different courses you can take.\nYou should click the first button, which says: `Study Computer Science (free)`.\n\nAfter you click the button, you will start studying and earning hacking experience.\nWhile you are doing this, you cannot interact with any other part of the game until you click either `Stop taking course` or `Do something else simultaneously`.\n\nRight now, we want a hacking level of 10.\nYou need approximately 174 hacking experience to reach level 10.\nYou can check how much hacking experience you have by going to the `Stats` tab (Alt + c) on the left-hand navigation menu.\nSince studying at Rothman University earns you 1 experience per second, this will take 174 seconds, or approximately 3 minutes.\nFeel free to do something in the meantime!\n\n## Editing our Hacking Script\n\nNow that we have a hacking level of 10, we can hack the `joesguns` [Server](../basic/servers.md).\nThis [Server](../basic/servers.md) will be slightly more profitable than `n00dles`.\nTherefore, we want to change our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) to target `joesguns` instead of `n00dles`.\n\nGo to `Terminal` and edit the [hacking](../basic/hacking.md) [Script](../basic/scripts.md) by entering:\n\n $ home\n $ nano early-hack-template.js\n\nAt the top of the [Script](../basic/scripts.md), change the `target` variable to be `\"joesguns\"`:\n\n const target = \"joesguns\";\n\nNote that this will **NOT** affect any instances of the [Script](../basic/scripts.md) that are already running.\nThis will only affect instances of the [Script](../basic/scripts.md) that are run from this point forward.\n\n## Creating a New Script to Purchase New Servers\n\nNext, we're going to create a [Script](../basic/scripts.md) that automatically purchases additional [Servers](../basic/servers.md).\nThese [Servers](../basic/servers.md) will be used to run many [Scripts](../basic/scripts.md).\nRunning this [Script](../basic/scripts.md) will initially be very expensive since purchasing a [Server](../basic/servers.md) costs money, but it will pay off in the long run.\n\nIn order to create this [Script](../basic/scripts.md), you should familiarize yourself with the following functions:\n\n- `purchaseServer()`\n- `getPurchasedServerCost()`\n- `getPurchasedServerLimit()`\n- `getServerMoneyAvailable()`\n- `scp()`\n- `exec()`\n\nCreate the [Script](../basic/scripts.md) by going to `Terminal` and typing:\n\n $ home\n $ nano purchase-server-8gb.js\n\nPaste the following code into the [Script](../basic/scripts.md) editor:\n\n /** @param {NS} ns */\n export async function main(ns) {\n // How much RAM each purchased server will have. In this case, it'll\n // be 8GB.\n const ram = 8;\n\n // Iterator we'll use for our loop\n let i = 0;\n\n // Continuously try to purchase servers until we've reached the maximum\n // amount of servers\n while (i < ns.getPurchasedServerLimit()) {\n // Check if we have enough money to purchase a server\n if (ns.getServerMoneyAvailable(\"home\") > ns.getPurchasedServerCost(ram)) {\n // If we have enough money, then:\n // 1. Purchase the server\n // 2. Copy our hacking script onto the newly-purchased server\n // 3. Run our hacking script on the newly-purchased server with 3 threads\n // 4. Increment our iterator to indicate that we've bought a new server\n let hostname = ns.purchaseServer(\"pserv-\" + i, ram);\n ns.scp(\"early-hack-template.js\", hostname);\n ns.exec(\"early-hack-template.js\", hostname, 3);\n ++i;\n }\n //Make the script wait for a second before looping again.\n //Removing this line will cause an infinite loop and crash the game.\n await ns.sleep(1000);\n }\n }\n\nThis code uses a while loop to purchase the maximum amount of [Servers](../basic/servers.md) using the `purchaseServer()` function.\nEach of these [Servers](../basic/servers.md) will have 8GB of [RAM](../basic/ram.md), as defined in the `ram` variable.\nNote that the [Script](../basic/scripts.md) uses the command `getServerMoneyAvailable(\"home\")` to get the amount of money you currently have.\nThis is then used to check if you can afford to purchase a [Server](../basic/servers.md).\n\nWhenever the script purchases a new [Server](../basic/servers.md), it uses the `scp()` function to copy our [Script](../basic/scripts.md) onto that new [Server](../basic/servers.md), and then it uses the `exec()` function to execute it on that [Server](../basic/servers.md).\n\nTo run this [Script](../basic/scripts.md), go to `Terminal` and type:\n\n $ run purchase-server-8gb.js\n\nThis purchase will continuously run until it has purchased the maximum number of [Servers](../basic/servers.md).\nWhen this happens, it'll mean that you have a bunch of new [Servers](../basic/servers.md) that are all running [hacking](../basic/hacking.md) [Scripts](../basic/scripts.md) against the `joesguns` [Server](../basic/servers.md)!\n\nThe reason we're using so many [Scripts](../basic/scripts.md) to hack `joesguns` instead of targeting other [Servers](../basic/servers.md) is because it's more effective.\nThis early in the game, we don't have enough [RAM](../basic/ram.md) to efficiently hack multiple targets, and trying to do so would be slow as we'd be spread too thin.\nYou should definitely do this later on, though!\n\nNote that purchasing a [Server](../basic/servers.md) is fairly expensive, and purchasing the maximum amount of [Servers](../basic/servers.md) even more so.\nAt the time of writing this guide, the [Script](../basic/scripts.md) above requires $11 million in order to finish purchasing all of the 8GB [Servers](../basic/servers.md).\nTherefore, we need to find additional ways to make money to speed up the process!\nThese are covered in the next section.\n\n## Additional Sources of Income\n\nThere are other ways to gain money in this game besides [Scripts](../basic/scripts.md) & [hacking](../basic/hacking.md).\n\n## Hacknet Nodes\n\nIf you completed the introductory tutorial, you were already introduced to this method: [Hacknet Nodes](../basic/hacknet_nodes.md).\nOnce you have enough money, you can start upgrading your [Hacknet Nodes](../basic/hacknet_nodes.md) in order to increase your passive income stream.\nThis is completely optional.\nSince each [Hacknet Node](../basic/hacknet_nodes.md) upgrade takes a certain amount of time to \"pay itself off\", it may not necessarily be in your best interest to use these.\n\nNonetheless, [Hacknet Nodes](../basic/hacknet_nodes.md) are a good source of income early in the game, although their effectiveness tapers off later on.\nIf you do wind up purchasing and upgrading [Hacknet Nodes](../basic/hacknet_nodes.md), I would suggest only upgrading their levels for now.\nI wouldn't bother with [RAM](../basic/ram.md) and Core upgrades until later on.\n\n## Crime\n\nThe best source of income right now is from [crimes](../basic/crimes.md).\nThis is because it not only gives you a large amount of money, but it also raises your hacking level.\nTo commit [crimes](../basic/crimes.md), go to the `City` tab (Alt + w).\nThen, click on the link that says `The Slums`.\n\nIn the Slums, you can attempt to commit a variety of [crimes](../basic/crimes.md), each of which gives certain types of experience and money if successful.\nSee [crimes](../basic/crimes.md) for more details.\n\nYou are not always successful when you attempt to commit a crime.\nNothing bad happens if you fail a [crime](../basic/crimes.md), but you won't earn any money and the experience gained will be reduced.\nRaising your stats improves your chance of successfully committing a [crime](../basic/crimes.md).\n\nRight now, the best option is the `Rob Store` [crime](../basic/crimes.md).\nThis takes 60 seconds to attempt, gives $400k if successful, and gives hacking experience (which is very important right now).\n\nAlternatively, you can also use the `Shoplift` [crime](../basic/crimes.md).\nThis takes 2 seconds to attempt and gives $15k if successful.\nThis [crime](../basic/crimes.md) is slightly easier and more profitable than `Rob Store`, but doesn't give hacking experience.\n\n## Work for a Company\n\nIf you don't want to commit [crimes](../basic/crimes.md), there's another option - working for a [company](../basic/companies.md).\nThis will not be nearly as profitable as [crimes](../basic/crimes.md), but will provide [company](../basic/companies.md) [reputation](../basic/reputation.md).\n\nGo to the `City` tab on the left-hand navigation menu and then go to `Joe's Guns`.\nAt `Joe's Guns`, there will be an option that says `Apply to be an Employee`.\nClick this to get the job.\nThen, a new option will appear that simply says `Work`.\nClick this to start working.\nWorking at `Joe's Guns` earns $110 per second and also grants some experience for every stat except hacking.\n\nWorking for a [company](../basic/companies.md), like [crime](../basic/crimes.md), is completely passive.\nYou can choose to focus on your work, do something else simultaneously, or switch between those two.\nWhile you focus on work, you will not be able to do anything else in the game.\nIf you do something else simultaneously, you will not gain [reputation](../basic/reputation.md) at the same speed.\nYou can cancel working at any time.\n\nOnce your hacking hits level 75, you can visit `Carmichael Security` in the city and get a software job there.\nThis job offers higher pay and also earns you hacking experience.\n\nThere are many more companies in the `City` tab that offer more pay and also more gameplay features.\nFeel free to explore!\n\n## After you Purchase your New Servers\n\nAfter you've made a total of $11 million, your automatic [Server](../basic/servers.md)-purchasing [Script](../basic/scripts.md) should finish running.\nThis will free up some [RAM](../basic/ram.md) on your home computer.\nWe don't want this [RAM](../basic/ram.md) to go to waste, so we'll make use of it.\nGo to `Terminal` and enter the following commands:\n\n $ home\n $ run early-hack-template.js -t 3\n\n## Reaching a Hacking Level of 50\n\nOnce you reach a hacking level of 50, two new important parts of the game open up.\n\n## Creating your first program: BruteSSH.exe\n\nOn the left-hand navigation menu you will notice a `Create Program` tab (Alt + p) with a red notification icon.\nThis indicates that there are programs available to be created.\nGo to that tab, and you'll see a list of all the programs you can currently create.\nHovering over a program will give a brief description of its function.\nSimply click on a program to start creating it.\n\nRight now, the program we want to create is `BruteSSH.exe`.\nThis program is used to open up SSH ports on [Servers](../basic/servers.md).\nThis will allow you to hack more [Servers](../basic/servers.md), as many [Servers](../basic/servers.md) in the game require a certain number of opened ports in order for `NUKE.exe` to gain root access.\n\nFeel free to cancel your work on creating a program at any time, as your progress will be saved and can be picked back up later.\n`BruteSSH.exe` takes about 10 minutes to complete.\n\n## Optional: Create AutoLink.exe\n\nOn the `Create Programs` page, you will notice another program you can create called `AutoLink.exe`.\nIf you don't mind waiting another 10-15 minutes, you should go ahead and create this program.\nIt makes it much less tedious to connect to other [Servers](../basic/servers.md), but it's not necessary for progression.\n\n## Joining your first faction: CyberSec\n\nShortly after you reached level 50 hacking, you should have received a message that said this:\n\n Message received from unknown sender:\n\n We've been watching you. Your skills are very impressive. But you're wasting your talents.\n If you join us, you can put your skills to good use and change the world for the better.\n If you join us, we can unlock your full potential.\n\n But first, you must pass our test. Find and install the backdoor on our server.\n\n -CyberSec\n\n This message was saved as csec-test.msg onto your home computer.\n\nIf you didn't, or if you accidentally closed it, that's okay!\nMessages get saved onto your home computer.\nEnter the following `Terminal` commands to view the message:\n\n $ home\n $ cat csec-test.msg\n\nThis message is part of the game's main \"quest-line\".\nIt is a message from the `CyberSec` [faction](../basic/factions.md) that is asking you to pass their test.\nPassing their test is simple, you just have to find their [Server](../basic/servers.md), hack it, and install a backdoor through the `Terminal`.\nTheir [Server](../basic/servers.md) is called `CSEC`.\nTo do this, we'll use the `scan-analyze` Terminal command, just like we did before:\n\n $ home\n $ scan-analyze 2\n\nThis will show you the network for all [Servers](../basic/servers.md) that are up to 2 \"nodes\" away from your home computer.\nRemember that the network is randomly generated so it'll look different for everyone.\nHere's the relevant part of my `scan-analyze` results:\n\n ┕ home\n ┃ Root Access: YES, Required hacking skill: 1\n ┃ Number of open ports required to NUKE: 5\n ┃ RAM: 8.00GB\n ┣ harakiri-sushi\n ┃ Root Access: NO, Required hacking skill: 40\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┕ iron-gym\n ┃ Root Access: NO, Required hacking skill: 100\n ┃ Number of open ports required to NUKE: 1\n ┃ RAM: 32.00GB\n ┕ CSEC\n Root Access: NO, Required hacking skill: 55\n Number of open ports required to NUKE: 1\n RAM: 8.00GB\n\nThis tells me that I can reach `CSEC` by going through `iron-gym`:\n\n $ connect iron-gym\n $ connect CSEC\n\nIf you created the `AutoLink.exe` program earlier, then there is an easier method of connecting to `CSEC`.\nYou'll notice that in the `scan-analyze` results, all of the [Server](../basic/servers.md) hostnames are white and underlined.\nYou can simply click one of the [Server](../basic/servers.md) hostnames in order to connect to it.\nSo, simply click `CSEC`!\n\nMake sure you notice the required hacking skill for the `CSEC` [Server](../basic/servers.md).\nThis is a random value between 51 and 60.\nAlthough you receive the message from CSEC once you hit 50 hacking, you cannot actually pass their test until your hacking is high enough to install a backdoor on their [Server](../basic/servers.md).\n\nAfter you are connected to the `CSEC` [Server](../basic/servers.md), you can backdoor it.\nNote that this [Server](../basic/servers.md) requires one open port in order to gain root access.\nWe can open the SSH port using the `BruteSSH.exe` program we created earlier.\nIn `Terminal`:\n\n $ run BruteSSH.exe\n $ run NUKE.exe\n $ backdoor\n\nAfter you successfully install the backdoor, you should receive a [faction](../basic/factions.md) invitation from `CyberSec` shortly afterwards.\nAccept it.\nIf you accidentally reject the invitation, that's okay.\nJust go to the `Factions` tab (Alt + f) and you should see an option that lets you accept the invitation.\n\nCongrats!\nYou just joined your first [faction](../basic/factions.md).\nDon't worry about doing anything with this [faction](../basic/factions.md) yet, we can come back to it later.\n\n## Using Additional Servers to Hack Joesguns\n\nOnce you have the `BruteSSH` program, you will be able to gain root access to several additional [Servers](../basic/servers.md).\nThese [Servers](../basic/servers.md) have more [RAM](../basic/ram.md) that you can use to run [Scripts](../basic/scripts.md).\nWe'll use the [RAM](../basic/ram.md) on these [Servers](../basic/servers.md) to run more [Scripts](../basic/scripts.md) that target `joesguns`.\n\n## Copying our Scripts\n\nThe [Servers](../basic/servers.md) we'll be using to run our [Scripts](../basic/scripts.md) are:\n\n- `neo-net`\n- `zer0`\n- `max-hardware`\n- `iron-gym`\n\nAll of these [Servers](../basic/servers.md) have 32GB of [RAM](../basic/ram.md).\nYou can use the `Terminal` command `scan-analyze 3` to see for yourself.\nTo copy our [hacking](../basic/hacking.md) [Scripts](../basic/scripts.md) onto these [Servers](../basic/servers.md), go to `Terminal` and run:\n\n $ home\n $ scp early-hack-template.js neo-net\n $ scp early-hack-template.js zer0\n $ scp early-hack-template.js max-hardware\n $ scp early-hack-template.js iron-gym\n\nSince each of these [Servers](../basic/servers.md) has 32GB of [RAM](../basic/ram.md), we can run our [hacking](../basic/hacking.md) script with 12 threads on each [Server](../basic/servers.md).\nBy now, you should know how to connect to [Servers](../basic/servers.md).\nSo find and connect to each of the [Servers](../basic/servers.md) above using the `scan-analyze 3` `Terminal` command.\nThen, use following `Terminal` command to run our [hacking](../basic/hacking.md) script with 12 threads:\n\n $ run early-hack-template.js -t 12\n\nRemember that if you have the `AutoLink` program, you can simply click on the hostname of a [Server](../basic/servers.md) after running `scan-analyze` to connect to it.\n\n## Profiting from Scripts & Gaining Reputation with CyberSec\n\nNow it's time to play the waiting game.\nIt will take some time for your [Scripts](../basic/scripts.md) to start earning money.\nRemember that most of your [Scripts](../basic/scripts.md) are targeting `joesguns`.\nIt will take a bit for them to `grow()` and `weaken()` the [Server](../basic/servers.md) to the appropriate values before they start [hacking](../basic/hacking.md) it.\nOnce they do, however, the [Scripts](../basic/scripts.md) will be very profitable.\n\nFor reference, in about two hours after starting my first [Script](../basic/scripts.md), my [Scripts](../basic/scripts.md) had a production rate of $20k per second and had earned a total of $70 million.\n(You can see these stats on the `Active Scripts` tab).\n\nAfter another 15 minutes, the production rate had increased to $25k per second and the [Scripts](../basic/scripts.md) had made an additional $55 million.\n\nYour results will vary based on how fast you earned money from [crime](../basic/crimes.md)/[working](../basic/companies.md)/[hacknet nodes](../basic/hacknet_nodes.md), but this will hopefully give you a good indication of how much the [Scripts](../basic/scripts.md) can earn.\n\nIn the meantime, we are going to be gaining reputation with the `CyberSec` [faction](../basic/factions.md).\nGo to the `Factions` tab (Alt + f) on the left-hand navigation menu, and from there select `CyberSec`.\nIn the middle of the page there should be a button for `Hacking Contracts`.\nClick it to start earning [reputation](../basic/reputation.md) for the `CyberSec` [faction](../basic/factions.md) (as well as some hacking experience).\nThe higher your hacking level, the more [reputation](../basic/reputation.md) you will gain.\nNote that while you are working for a [faction](../basic/factions.md), you can choose to not interact with the rest of the game in any way to gain [reputation](../basic/reputation.md) at full speed.\nYou can also select to do something else simultaneously, gaining [reputation](../basic/reputation.md) a bit more slowly, until you focus again.\nYou can cancel your [faction](../basic/factions.md) work at any time with no penalty to your [reputation](../basic/reputation.md) gained so far.\n\n## Purchasing Upgrades and Augmentations\n\nAs I mentioned before, within 1-2 hours I had earned over $200 million.\nNow, it's time to spend all of this money on some persistent upgrades to help progress!\n\n## Upgrading RAM on Home computer\n\nThe most important thing to upgrade right now is the [RAM](../basic/ram.md) on your home computer.\nThis will allow you to run more [Scripts](../basic/scripts.md).\n\nTo upgrade your [RAM](../basic/ram.md), go to the `City` tab and visit the company `Alpha Enterprises`.\nThere will be a button that says `Upgrade 'home' RAM (8.00GB -> 16.00GB) - $1.010m`.\nClick it to upgrade your [RAM](../basic/ram.md).\n\nI recommend getting your home computer's [RAM](../basic/ram.md) to **at least** 128GB.\nGetting it even higher would be better.\n\n## Purchasing your First Augmentations\n\nOnce you get ~1000 [reputation](../basic/reputation.md) with the `CyberSec` [faction](../basic/factions.md), you can purchase your first [Augmentation](../basic/augmentations.md) from them.\n\nTo do this, go to the `Factions` tab on the left-hand navigation menu (Alt + f) and select `CyberSec`.\nThere is a button near the bottom that says `Purchase Augmentations`.\nThis will bring up a page that displays all of the [Augmentations](../basic/augmentations.md) available from `CyberSec`.\nSome of them may be locked right now.\nTo unlock these, you will need to earn more [reputation](../basic/reputation.md) with `CyberSec`.\n\n[Augmentations](../basic/augmentations.md) give persistent upgrades in the form of multipliers.\nThese aren't very powerful early in the game because the multipliers are small.\nHowever, the effects of [Augmentations](../basic/augmentations.md) stack multiplicatively **with each other**, so as you continue to install many [Augmentations](../basic/augmentations.md), their effects will increase significantly.\n\nBecause of this, I would recommend investing more in [RAM](../basic/ram.md) upgrades for your home computer rather than [Augmentations](../basic/augmentations.md) early on.\nHaving enough [RAM](../basic/ram.md) to run many [Scripts](../basic/scripts.md) will allow you to make much more money, and then you can come back later on and get all these [Augmentations](../basic/augmentations.md).\n\nRight now, I suggest purchasing at the very least the `Neurotrainer I` [Augmentation](../basic/augmentations.md) from `CyberSec`.\nIf you have the money to spare, I would also suggest getting `BitWire` and several levels of the `NeuroFlux Governor` (`NFG`) [Augmentations](../basic/augmentations.md).\nNote that each time you purchase an [Augmentation](../basic/augmentations.md), **the price of purchasing another increases by 90%**, so make sure you buy the most expensive [Augmentation](../basic/augmentations.md) first.\nDon't worry, once you choose to install [Augmentations](../basic/augmentations.md), their prices will reset back to their original values.\n\n## Next Steps\n\nThat's the end of the walkthrough portion of this guide!\nYou should continue to explore what the game has to offer.\nThere's quite a few features that aren't covered or mentioned in this guide, and even more that get unlocked as you continue to play!\n\nAlso, check out the api documentation to see what it has to offer.\nWriting [Scripts](../basic/scripts.md) to perform and automate various tasks is where most of the fun in the game comes from (in my opinion)!\n\nThe following are a few things you may want to consider doing in the near future.\n\n## Installing Augmentations (and Resetting)\n\nIf you've purchased any [Augmentations](../basic/augmentations.md), you'll need to install them before you actually gain their effects.\nInstalling [Augmentations](../basic/augmentations.md) is the game's \"soft-reset\" or \"prestige\" mechanic.\n\nTo install your [Augmentations](../basic/augmentations.md), go to the `Augmentations` tab (Alt + a) on the left-hand navigation menu.\nYou will see a list of all of the [Augmentations](../basic/augmentations.md) you have purchased.\nBelow that, you will see a button that says `Install Augmentations`.\nBe warned, after clicking this there is no way to undo it (unless you load an earlier save).\n\n## Automating the Script Startup Process\n\nWhenever you install [Augmentations](../basic/augmentations.md), all of your [Scripts](../basic/scripts.md) are killed and you'll have to re-run them.\nDoing this every time you install [Augmentations](../basic/augmentations.md) would be very tedious and annoying, so you should write a [Script](../basic/scripts.md) to automate the process.\nHere's a simple example for a startup [Script](../basic/scripts.md).\nFeel free to adjust it to your liking.\n\n /** @param {NS} ns */\n export async function main(ns) {\n // Array of all servers that don't need any ports opened\n // to gain root access. These have 16 GB of RAM\n const servers0Port = [\"sigma-cosmetics\",\n \"joesguns\",\n \"nectar-net\",\n \"hong-fang-tea\",\n \"harakiri-sushi\"];\n\n // Array of all servers that only need 1 port opened\n // to gain root access. These have 32 GB of RAM\n const servers1Port = [\"neo-net\",\n \"zer0\",\n \"max-hardware\",\n \"iron-gym\"];\n\n // Copy our scripts onto each server that requires 0 ports\n // to gain root access. Then use nuke() to gain admin access and\n // run the scripts.\n for (let i = 0; i < servers0Port.length; ++i) {\n const serv = servers0Port[i];\n\n ns.scp(\"early-hack-template.js\", serv);\n ns.nuke(serv);\n ns.exec(\"early-hack-template.js\", serv, 6);\n }\n\n // Wait until we acquire the \"BruteSSH.exe\" program\n while (!ns.fileExists(\"BruteSSH.exe\")) {\n await ns.sleep(60000);\n }\n\n // Copy our scripts onto each server that requires 1 port\n // to gain root access. Then use brutessh() and nuke()\n // to gain admin access and run the scripts.\n for (let i = 0; i < servers1Port.length; ++i) {\n const serv = servers1Port[i];\n\n ns.scp(\"early-hack-template.js\", serv);\n ns.brutessh(serv);\n ns.nuke(serv);\n ns.exec(\"early-hack-template.js\", serv, 12);\n }\n }\n\n## Random Tips\n\n- Early on in the game, it's better to spend your money on upgrading [RAM](../basic/ram.md) and purchasing new [Servers](../basic/servers.md) rather than spending it on [Augmentations](../basic/augmentations.md)\n- The more money available on a [Server](../basic/servers.md), the more effective the `hack()` and `grow()` functions will be.\n This is because both of these functions use percentages rather than flat values.\n `hack()` steals a percentage of a [Server](../basic/servers.md)'s total available money, and `grow()` increases a [Server](../basic/servers.md)'s money by X%.\n- There is a limit to how much money can exist on a [Server](../basic/servers.md).\n This value is different for each [Server](../basic/servers.md).\n The `getServerMaxMoney()` function will tell you this maximum value.\n- At this stage in the game, your combat stats (strength, defense, etc.) are not nearly as useful as your hacking stat.\n Do not invest too much time or money into gaining combat stat exp.\n- As a rule of thumb, your hacking target should be the [Server](../basic/servers.md) with highest max money that's required hacking level is under 1/2 of your hacking level.\n"},90988:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Tools & Resource\n\n## Official Script Repository\n\nThere are plans to create an official repository of Bitburner scripts.\nAs of right now, this is not a priority and has not been started.\nHowever, if you'd like to contribute scripts now, you can find the repository [here](https://github.com/bitburner-official/bitburner-scripts) and submit pull requests.\n\n## Visual Studio Code Extension\n\nOne user created a Bitburner extension for the Visual Studio Code (VSCode) editor.\n\nThis extension includes several features such as:\n\n- Dynamic RAM calculation\n- RAM Usage breakdown\n- Typescript definition files with jsdoc comments\n- Syntax highlighting\n\nYou can find more information and download links [on this reddit post](https://www.reddit.com/r/Bitburner/comments/bh48y2/visual_studio_code_ram_calculator_extra/).\n"},96687:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Documentation\n\n## [Beginners guide](help/getting_started.md)\n\n## Mechanics\n\n- [stats](basic/stats.md)\n- [terminal](basic/terminal.md)\n- [hacking](basic/hacking.md)\n- [scripts](basic/scripts.md)\n- [servers](basic/servers.md)\n- [ram](basic/ram.md)\n- [hacknet_nodes](basic/hacknet_nodes.md)\n- [augmentations](basic/augmentations.md)\n- [companies](basic/companies.md)\n- [factions](basic/factions.md)\n- [crimes](basic/crimes.md)\n- [infiltration](basic/infiltration.md)\n- [reputation](basic/reputation.md)\n- [stockmarket](basic/stockmarket.md)\n- [world](basic/world.md)\n- [codingcontracts](basic/codingcontracts.md)\n\n## Advanced Mechanics\n\n- [BitNodes](advanced/bitnodes.md)\n- [BladeBurners](advanced/bladeburners.md)\n- [Corporations](advanced/corporations.md)\n- [Gang](advanced/gang.md)\n- [Grafting](advanced/grafting.md)\n- [Hacknet Servers](advanced/hacknetservers.md)\n- [Intelligence](advanced/intelligence.md)\n- [Sleeves](advanced/sleeves.md)\n- [Source-Files](advanced/sourcefiles.md)\n- [Stanek's Gift](advanced/stanek.md)\n\n## Resources\n\n- [Learn to program](programming/learn.md)\n- [Remote API](programming/remote_api.md)\n- [Game Frozen or Stuck?](programming/game_frozen.md)\n- [Tools & Resources](help/tools_and_resources.md)\n- [Changelog](changelog.md)\n\n## Migration\n\n- [v1.0.0 script migration guide](migrations/v1.md)\n- [v2.0.0 script migration guide](migrations/v2.md)\n"},92611:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# v1.0.0 Migration Guide\n\nIn v1.0.0 a few API have been broken.\n\nmigrated (only for ns2):\n\n- bladeburner.getActionTime will return milliseconds instead of seconds.\n- getHackTime will return milliseconds instead of seconds.\n- getGrowTime will return milliseconds instead of seconds.\n- getWeakenTime will return milliseconds instead of seconds.\n- hackAnalyzePercent renamed to hackAnalyze\n- hackAnalyzePercent will return decimal instead of percentage\n- hackChance (not formulas.basic.hackChance) renamed to hackAnalyzeChance\n- formulas.basic is split into formulas.skills and formulas.hacking\n\nnot migrated (require manual changes sometimes):\n\n- getPlayer().hacking_skill renamed `hacking`\n- same thing in sleeves\n- getPurchasedServers won't let you query for ips instead of hostnames.\n- getStats is deprecated in favor getPlayer\n- getCharacterInformation is deprecated in favor getPlayer\n- getServerRam deprecated in favor of getServerMaxRam and getServerUsedRam\n- getServerBaseSecurityLevel will be deprecated in favor of nothing, it's not really used.\n- sleep can no longer be called simultaneously, a new function called asleep will let you.\n- write returns promise (needs to be await ed).\n- scp returns a promise (needs to be await ed).\n- free port, write, read\n- write, read does not support port anymore, writePort and readPort does.\n\nUpon loading v1.0.0 the game will apply some rules to change everything.\nThe game never changes a file before making a backup called `BACKUP_filename.ext`, then,\nin the script it will change whatever it thinks it should change.\nBut will prefix the modified line with the original line.\n\nA file called `v1_DETECTED_CHANGES.txt` will point out every file with some possible problem.\n"},45925:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# v2.0.0 Migration Guide\n\nIn v2.0.0 a few more APIs have been broken.\n\n## Working\n\nWorking has been rebuilt from the ground up. The motivation for this change is that all\ndifferent types of work all required different cached variables on the main Player object.\nThis caused a lot of bugs and crashes. It's been reworked in such a way as to prevent bugs\nand make it nearly trivial to add new kinds of work.\nAll work types give their reward immediately. No need to stop work to bank rewards like reputation.\nFaction and Company work no longer have a time limit.\nCompany work no longer reduces rep gain by half for quitting early.\nCompany factions now require 400k rep to join (up from 200k).\nBackdooring a company server reduces faction requirement to 300k.\nAll types of work generally no longer keep track of cumulative gains like exp and reputation since it's applied instantly.\n\n## commitCrime\n\nCrime now loops, meaning after finishing one shoplift you start the next one with no input. While the signature\nhas not changed, its behavior has. It also has a new 'focus' parameter.\n\n## getPlayer\n\nThe following work-related fields are no longer included:\n\n- workChaExpGained\n- currentWorkFactionName\n- workDexExpGained\n- workHackExpGained\n- createProgramReqLvl\n- workStrExpGained\n- companyName\n- crimeType\n- workRepGained\n- workChaExpGainRate\n- workType\n- workStrExpGainRate\n- isWorking\n- workRepGainRate\n- workDefExpGained\n- currentWorkFactionDescription\n- workHackExpGainRate\n- workAgiExpGainRate\n- workDexExpGainRate\n- workMoneyGained\n- workMoneyLossRate\n- workMoneyGainRate\n- createProgramName\n- workDefExpGainRate\n- workAgiExpGained\n- className\n\nThe reason for this, is that these fields are all, in one way or another, included in the new work field `currentWork`.\nSome of these values are also irrelevant.\nTake a look at the new singularity.getCurrentWork function:\n\nAll fields ending in `_mult` have been moved to the `mults` struct.\nFor example: `getPlayer().hacking_skill_mult` => `getPlayer().mults.hacking_skill`\n\nskills has been moved to the skills struct\nFor example: `getPlayer().hacking` => `getPlayer().skills.hacking`\n\nexp has been moved to the exp struct\nFor example: `getPlayer().hacking_exp` => `getPlayer().exp.hacking`\n\nhp has been moved to the hp struct\nFor example: `getPlayer().max_hp` => `getPlayer().hp.max` or `hp.current`\n\n`hasWseAccount`, `hasTixApiAccess`, `has4SData`, `has4SDataTixApi` have been removed and replaced with similar stock functions.\n\n## workForCompany\n\nThe argument 'companyName' is now required.\n\n## getScriptIncome & getScriptExpGain\n\nThese two functions used to have a call where, if no arguments were provided, it would return the total for all scripts. This caused weird signature.\nIf you want to get the total income/exp for all scripts, use the new getTotalScriptIncome / getTotalScriptExpGain instead.\n\n## scp\n\nThe last two arguments of spc have been reversed. The signature is now scp(files, destination, optional_source)\n\n## Singularity\n\nThe top level singularity functions were deprecated a while ago in favor of the singularity namespace.\nThis means calls like 'ns.connect' need to be changed to 'ns.singularity.connect'\n\n## stock.buy, stock.sell, stock.short\n\nThese functions were renamed to stock.buyStock, stock.sellStock, and stock.buyShort because 'buy', 'sell', and 'short'\nare very common tokens that would trick the ram calculation.\n\n## corporation.bribe\n\nThe ability to give shares as a bribe has been removed. The signature is now bribe(faction, money)\n"},69939:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='# Game Frozen or Stuck?\n\n## Infinite Loop in Scripts\n\nIf your game is frozen or stuck in any way, then the most likely culprit is an infinitely running loop in your script.\nTo get past the freezing, run the game with `?noScripts` in the URL:\n\n[Link to no freeze](https://bitburner-official.github.io?noScripts)\n\nThen, to fix your script, make sure you have a `sleep()` or any other timed function like `hack()` or `grow()` in any infinite loops:\n\n while(true) {\n // This is an infinite loop that does something\n ...\n await ns.sleep(1000); // Add a 1s sleep to prevent freezing\n }\n\nAlso make sure that each while loop gets to the `await`ed function or `break`, for example the next snippet has a `sleep()` function, but it nor any possible conditional breaks are never reached and therefore will crash the game:\n\n while(true) {\n let currentMoney = ns.getServerMoneyAvailable("n00dles");\n let maxMoney = ns.getServerMaxMoney("n00dles");\n if (currentMoney < maxMoney/2){\n await ns.grow("n00dles");\n }\n if (currentMoney === maxMoney){\n break;\n }\n }\n\nIf `n00dles` current money is, for example, 75% of the maximum money, the script will reach neither `grow()` nor `break` and the game will crash.\nAdding a sleep like in the first example, or changing the code so that the `awaited` function or `break` is always reached, would prevent the crash.\n\nCommon infinite loop when translating the server purchasing script in starting guide to scripts is to have a while loop, where the condition\'s change is conditional:\n\n var ram = 8;\n var i = 0;\n\n while (i < ns.getPurchasedServerLimit()) {\n if (ns.getServerMoneyAvailable("home") > ns.getPurchasedServerCost(ram)) {\n var hostname = ns.purchaseServer("pserv-" + i, ram);\n ns.scp("early-hack-template.script", hostname);\n ns.exec("early-hack-template.script", hostname, 3);\n ++i;\n }\n }\n\nIf the player does not currently have enough money to purchase a server, the `if`\'s condition will be false and `++i` will not be reached.\nSince the script doesn\'t have `sleep()` and value `i` will not change without the `if` being true, this will crash the game.\nAdding a `sleep()` that is always reached would prevent the crash.\n\n## Blackscreen\n\nIf the game window becomes a black screen without the game itself crashing, this is caused by the game running too many concurrent scripts (the game runs on a browser and each tab can only use so much ram until it crashes).\nDepending on which scripts are running and your hardware, this number can vary between 50000 to 100000 instances (in version 2.0.2. In prior versions this number was about 1/5th of that).\nTo prevent this from happening make sure to multithread the scripts as much as possible.\n\n## Bug\n\nOtherwise, the game is probably frozen/stuck due to a bug.\nTo report a bug, follow the guidelines [here](https://github.com/bitburner-official/bitburner-src/blob/master/doc/CONTRIBUTING.md#reporting-bugs).\n'},8734:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Hacking algorithms\n\nThere are three primary families of hacking algorithms.\nThis guide will go over each of them and advise on how they can be implemented.\n\n## Self-contained algorithms\n\n**Difficulty**: Easy\n\nPros:\n\n- Easy to implement\n- Does not require other scripts to work\n- Works at any stage of the game\n\nCons:\n\n- Limits income generation\n- Extremely [RAM](../basic/ram.md) inefficient\n- Utilizes script online time poorly\n- Risk of over hacking\n\nSelf-contained algorithms are the simplest family of hacking algorithms to implement.\nEach script is tasked with choosing which function to execute based on the status of the target server.\nBecause of this, they guarantee a consistent, but relatively small, flow of money.\n\nThe general logic goes like this:\n\n loop forever {\n if security is not minimum {\n await ns.weaken(target)\n } else if money is not maximum {\n await ns.grow(target)\n } else {\n await ns.hack(target)\n }\n }\n\nThis algorithm is perfectly capable of paving the way through the majority of the game, but it has a few significant issues.\n\n- It tends to make all your scripts on every server do the same thing.\n (e.g. If the target is 0.01 security above the minimum, all scripts will decide to weaken, when only a handful of threads should be devoted to the task)\n- At higher thread counts, these scripts have the potential to hack the server to $0, or maximum security, requiring a long setup time while the scripts return the server to the best stats.\n- Requires function calls such as `getServerSecurityLevel` and `getServerMoneyAvailable`, as well as calling all three hacking functions, increasing RAM cost which is multiplied by the number of allocated threads\n\n## Loop algorithms\n\n**Difficulty**: Easy to Medium\n\nPros:\n\n- Simple to understand\n- Works at any stage of the game\n- Maximize RAM usage\n\nCons:\n\n- Requires a script that handles deployment\n\nBy splitting our hack, weaken, and grow functions into three separate scripts, we can both remove our reliance on functions such as `getServerSecurityLevel` as well as removing functions that cannot work concurrently, reducing RAM requirements, and thus increasing our thread limits.\nLoop scripts are formatted like this:\n\n loop forever {\n await ns.hack(target) // or grow, or weaken\n }\n\nNow we can take the total amount of threads available and split it and allocate, for example:\n\n- 1 part to the hack scripts\n- 10 parts to the grow scripts\n- 2 parts to the weaken scripts\n\nMeaning if we have space for 100 threads across the entire network 7 threads will go to the hack scripts, 76 threads will go to the grow scripts and 15 threads will go to the weaken scripts.\nThe ratios described here are arbitrary and can be greatly improved through the use of the analyze functions, and later, through the use of Formulas.exe.\n\nWhen utilizing this strategy, monitor the amount of money and security on the target server, if the money is not hovering around maximum and the security around the minimum, the ratios should be tweaked until that is the case.\n\nUtilizing `sleep` or `asleep` to ensure that your scripts do not all start at the same time can decrease the chance of issues associated with overhacking occurring.\nBoth functions have a ram cost of zero.\n\n## Batch algorithms (HGW, HWGW, or Cycles)\n\n**Difficulty**: Hard\n\nPros:\n\n- Maximum potential income\n\nCons:\n\n- Very difficult to implement without prior programming knowledge\n- Very difficult to make work on servers with less than 1TB of RAM\n\nBatch algorithms utilize a master script that uses `exec` many scripts which utilize a relevant hacking function in batches.\n\nThe scripts used to execute the hacking functions are even simpler than the previous algorithms but a complex controller is required to calculate the effect, time taken, and the necessary delay.\n\n await ns.sleep(a bit)\n await ns.hack(target) // or grow, or weaken\n\nA few things need to be known before this algorithm can be implemented:\n\n- The effects of hack and grow depend on the server security level, a higher security level results in a reduced effect.\n You only want these effects to occur when the security level is minimized.\n- The time taken to execute hack, grow, or weaken is determined when the function is called and is based on the security level of the target server and your hacking level.\n You only want these effects to start when the security level is minimized.\n- The effects of hack, grow, and weaken, are determined when the time is completed, rather than at the beginning.\n Hack should finish when security is minimum and money is maximum.\n Grow should finish when security is minimum, shortly after a hack occurred.\n Weaken should occur when security is not at a minimum due to a hack or grow increasing it.\n\nA single batch consists of four actions:\n\n1. A hack script removes a predefined, precalculated amount of money from the target server.\n2. A weaken script counters the security increase of the hack script.\n3. A grow script counters the money decrease caused by the hack script.\n4. A weaken script counters the security increase caused by the grow script.\n\nIt is also important that these 4 scripts finish in the order specified above, and all of their effects be precalculated to optimize the ratios between them.\nThis is the reason for the delay in the scripts.\n\n |= hack ====================|\n |=weaken 1======================================|\n |= grow ==========================|\n |=weaken 2======================================|\n\nBatches only function predictably when the target server is at minimum security and maximum money, so your script must also handle preparing a server for your batches.\nYou can utilize batches to prepare a server by using no hack threads during preparation.\n\nDepending on your computer's performance as well as a few other factors, the necessary delay between script execution times may range between 20ms and 200ms, you want to fine-tune this value to be as low as possible while also avoiding your scripts finishing out of order.\nAnything lower than 20ms will not work due to JavaScript limitations.\n"},19530:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="# Learn to Program in JavaScript\n\n## For Beginner Programmers\n\nIf you have little to no programming experience, that's okay!\nYou don't need to be a great programmer in order to enjoy or play this game.\nIn fact, this game could help you learn some basic programming concepts.\n\nHere are some good tutorials for learning programming/JavaScript as a beginner:\n\n- [Learn-JS](http://www.learn-js.org/en/Welcome)\n- [programiz](https://www.programiz.com/javascript/get-started)\n- [Speaking JavaScript](https://exploringjs.com/es5/)\n This is a bit on the longer side.\n You can skip all of the historical background stuff.\n Recommended chapters: 1, 7-18\n\n## For Experienced Programmers\n\nThe following section lists several good tutorials/resources for those who have experience programming but who have not worked extensively with JavaScript before.\n\nBefore that, however, it's important to clarify some terminology about the different versions of JavaScript.\nThese are summarized in this article:\n\n[WTF is ES6, ES8, ES2017, ECMAScript...](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)\n\nAn important takeaway from this article is that ES6, also known as ES2015, introduced many major features that are commonly seen in modern JavaScript programming.\nHowever, this means that ES5 engines and interpreters will fail if they encounters these ES6 features.\nYou'll see why this is important further down.\n\n- [MDN Introduction to JS](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript)\n- [Eloquent JavaScript (ES6+)](http://eloquentjavascript.net/)\n Recommended Chapters: Introduction, 1-6\n- [Modern JavaScript Tutorial (ES6+)](https://javascript.info/)\n Recommended Chapters: 2, 4-6\n"},18006:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='# Remote API\n\nAll versions of Bitburner can use websockets to connect to a server.\nThat server can then perform a number of actions.\nMost commonly this is used in conjunction with an external text editor or API\nin order to make writing scripts easier, or even use typescript.\n\nTo make use of this Remote API through the official server, look [here](https://github.com/bitburner-official/typescript-template).\nIf you want to make your own server, see below for API details.\n\nThis API uses the JSON RPC 2.0 protocol. Inputs are in the following form:\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": string,\n "params": any\n }\n\nOutputs:\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": any,\n "error": any\n }\n\n## Methods\n\n## `pushFile`\n\nCreate or update a file.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "pushFile",\n "params": {\n filename: string;\n content: string;\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": "OK"\n }\n\n## `getFile`\n\nRead a file and its content.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "getFile",\n "params": {\n filename: string;\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": string\n }\n\n## `deleteFile`\n\nDelete a file.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "deleteFile",\n "params": {\n filename: string;\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": "OK"\n }\n\n## `getFileNames`\n\nList all file names on a server.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "getFileNames",\n "params": {\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": string[]\n }\n\n## `getAllFiles`\n\nGet the content of all files on a server.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "getAllFiles",\n "params": {\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": {\n filename: string,\n content: string\n }[]\n }\n\n## `calculateRam`\n\nCalculate the in-game ram cost of a script.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "calculateRam",\n "params": {\n filename: string;\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": number\n }\n\n## `getDefinitionFile`\n\nGet the definition file of the API.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "getDefinitionFile"\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": string\n }\n'},42923:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='/** All netscript definitions */\n\n/** @public */\ninterface HP {\n current: number;\n max: number;\n}\n\n/** @public */\ninterface Skills {\n hacking: number;\n strength: number;\n defense: number;\n dexterity: number;\n agility: number;\n charisma: number;\n intelligence: number;\n}\n\n// TODO: provide same treatment to CodingContractData as for SleeveTask (actual types)\n/**\n * Coding contract data will differ depending on coding contract.\n * @public\n */\ntype CodingContractData = any;\n\n/** @public */\ntype PortData = string | number;\n\n/** @public */\ntype ScriptArg = string | number | boolean;\n\n/** @public */\ntype FilenameOrPID = number | string;\n\n/** @public */\ninterface Person {\n hp: HP;\n skills: Skills;\n exp: Skills;\n mults: Multipliers;\n city: CityName;\n}\n\n/** @public */\ninterface Player extends Person {\n money: number;\n numPeopleKilled: number;\n entropy: number;\n jobs: Partial>;\n factions: string[];\n totalPlaytime: number;\n location: string;\n}\n\n/** @public */\ninterface SleevePerson extends Person {\n /** Number 0-100 Experience earned and shared is multiplied with shock% before sync% */\n shock: number;\n /** Number 1-100 Experience earned by this sleeve and shared with the player is multiplied with sync% after shock% */\n sync: number;\n /** Number 1-100 initial Value of sync on BN start */\n memory: number;\n /** Number of 200ms cycles which are stored as bonus time */\n storedCycles: number;\n}\n\n/** Various info about resets\n * @public */\ninterface ResetInfo {\n /** Numeric timestamp (from Date.now()) of last augmentation reset */\n lastAugReset: number;\n /** Numeric timestamp (from Date.now()) of last bitnode reset */\n lastNodeReset: number;\n /** The current bitnode */\n currentNode: number;\n /** A map of owned augmentations to their levels. Keyed by the augmentation name. Map values are the augmentation level (e.g. for NeuroFlux governor). */\n ownedAugs: Map;\n /** A map of owned SF to their levels. Keyed by the SF number. Map values are the SF level. */\n ownedSF: Map;\n}\n\n/** @public */\ninterface MoneySource {\n bladeburner: number;\n casino: number;\n class: number;\n codingcontract: number;\n corporation: number;\n crime: number;\n gang: number;\n hacking: number;\n hacknet: number;\n hacknet_expenses: number;\n hospitalization: number;\n infiltration: number;\n sleeves: number;\n stock: number;\n total: number;\n work: number;\n servers: number;\n other: number;\n augmentations: number;\n}\n\n/** @public */\ninterface MoneySources {\n sinceInstall: MoneySource;\n sinceStart: MoneySource;\n}\n\n/** @public */\ninterface Multipliers {\n /** Multiplier to hacking skill */\n hacking: number;\n /** Multiplier to strength skill */\n strength: number;\n /** Multiplier to defense skill */\n defense: number;\n /** Multiplier to dexterity skill */\n dexterity: number;\n /** Multiplier to agility skill */\n agility: number;\n /** Multiplier to charisma skill */\n charisma: number;\n /** Multiplier to hacking experience gain rate */\n hacking_exp: number;\n /** Multiplier to strength experience gain rate */\n strength_exp: number;\n /** Multiplier to defense experience gain rate */\n defense_exp: number;\n /** Multiplier to dexterity experience gain rate */\n dexterity_exp: number;\n /** Multiplier to agility experience gain rate */\n agility_exp: number;\n /** Multiplier to charisma experience gain rate */\n charisma_exp: number;\n /** Multiplier to chance of successfully performing a hack */\n hacking_chance: number;\n /** Multiplier to hacking speed */\n hacking_speed: number;\n /** Multiplier to amount of money the player gains from hacking */\n hacking_money: number;\n /** Multiplier to amount of money injected into servers using grow */\n hacking_grow: number;\n /** Multiplier to amount of reputation gained when working */\n company_rep: number;\n /** Multiplier to amount of reputation gained when working */\n faction_rep: number;\n /** Multiplier to amount of money gained from crimes */\n crime_money: number;\n /** Multiplier to crime success rate */\n crime_success: number;\n /** Multiplier to amount of money gained from working */\n work_money: number;\n /** Multiplier to amount of money produced by Hacknet Nodes */\n hacknet_node_money: number;\n /** Multiplier to cost of purchasing a Hacknet Node */\n hacknet_node_purchase_cost: number;\n /** Multiplier to cost of ram for a Hacknet Node */\n hacknet_node_ram_cost: number;\n /** Multiplier to cost of core for a Hacknet Node */\n hacknet_node_core_cost: number;\n /** Multiplier to cost of leveling up a Hacknet Node */\n hacknet_node_level_cost: number;\n /** Multiplier to Bladeburner max stamina */\n bladeburner_max_stamina: number;\n /** Multiplier to Bladeburner stamina gain rate */\n bladeburner_stamina_gain: number;\n /** Multiplier to effectiveness in Bladeburner Field Analysis */\n bladeburner_analysis: number;\n /** Multiplier to success chance in Bladeburner contracts/operations */\n bladeburner_success_chance: number;\n}\n\n/** @public */\ninterface TailProperties {\n /** X-coordinate of the log window */\n x: number;\n /** Y-coordinate of the log window */\n y: number;\n /** Width of the log window content area */\n width: number;\n /** Height of the log window content area */\n height: number;\n}\n\n/**\n * @public\n * A stand-in for the real React.ReactNode.\n * A {@link ReactElement} is rendered dynamically with React.\n * number and string are displayed directly.\n * boolean, null, and undefined are ignored and not rendered.\n * An array of ReactNodes will display all members of that array sequentially.\n *\n * Use React.createElement to make the ReactElement type, see {@link https://react.dev/reference/react/createElement#creating-an-element-without-jsx | creating an element without jsx} from the official React documentation.\n */\ntype ReactNode = ReactElement | string | number | null | undefined | boolean | ReactNode[];\n\n/**\n * @public\n * A stand-in for the real React.ReactElement.\n * Use React.createElement to make these.\n * See {@link https://react.dev/reference/react/createElement#creating-an-element-without-jsx | creating an element without jsx} from the official React documentation.\n */\ninterface ReactElement {\n type: string | ((props: any) => ReactElement | null) | (new (props: any) => object);\n props: any;\n key: string | number | null;\n}\n\n/** @public */\ninterface RunningScript {\n /** Arguments the script was called with */\n args: (string | number | boolean)[];\n /** Filename of the script */\n filename: string;\n /**\n * Script logs as an array. The newest log entries are at the bottom.\n * Timestamps, if enabled, are placed inside `[brackets]` at the start of each line.\n **/\n logs: string[];\n /** Total amount of hacking experience earned from this script when offline */\n offlineExpGained: number;\n /** Total amount of money made by this script when offline */\n offlineMoneyMade: number;\n /** Number of seconds that the script has been running offline */\n offlineRunningTime: number;\n /** Total amount of hacking experience earned from this script when online */\n onlineExpGained: number;\n /** Total amount of money made by this script when online */\n onlineMoneyMade: number;\n /** Number of seconds that this script has been running online */\n onlineRunningTime: number;\n /** Process ID. Must be an integer */\n pid: number;\n /** How much RAM this script uses for ONE thread */\n ramUsage: number;\n /** Hostname of the server on which this script runs */\n server: string;\n /** Properties of the tail window, or null if it is not shown */\n tailProperties: TailProperties | null;\n /**\n * The title, as shown in the script\'s log box. Defaults to the name + args,\n * but can be changed by the user. If it is set to a React element (only by\n * the user), that will not be persisted, and will be restored to default on\n * load.\n */\n title: string | ReactElement;\n /** Number of threads that this script runs with */\n threads: number;\n /** Whether this RunningScript is excluded from saves */\n temporary: boolean;\n}\n\n/** @public */\ninterface RunOptions {\n /** Number of threads that the script will run with, defaults to 1 */\n threads?: number;\n /** Whether this script is excluded from saves, defaults to false */\n temporary?: boolean;\n /**\n * The RAM allocation to launch each thread of the script with.\n *\n * Lowering this will not automatically let you get away with using less RAM:\n * the dynamic RAM check enforces that all {@link NS} functions actually called incur their cost.\n * However, if you know that certain functions that are statically present (and thus included\n * in the static RAM cost) will never be called in a particular circumstance, you can use\n * this to avoid paying for them.\n *\n * You can also use this to increase the RAM if the static RAM checker has missed functions\n * that you need to call.\n *\n * Must be greater-or-equal to the base RAM cost. Defaults to the statically calculated cost.\n */\n ramOverride?: number;\n /**\n * Should we fail to run if another instance is running with the exact same arguments?\n * This used to be the default behavior, now defaults to false.\n */\n preventDuplicates?: boolean;\n}\n\n/** @public */\ninterface RecentScript extends RunningScript {\n /** Timestamp of when the script was killed */\n timeOfDeath: Date;\n}\n\n/**\n * Data representing the internal values of a crime.\n * @public\n */\ninterface CrimeStats {\n /** Number representing the difficulty of the crime. Used for success chance calculations */\n difficulty: number;\n /** Amount of karma lost for successfully committing this crime */\n karma: number;\n /** How many people die as a result of this crime */\n kills: number;\n /** How much money is given */\n money: number;\n /** Milliseconds it takes to attempt the crime */\n time: number;\n /** Description of the crime activity */\n type: string;\n /** hacking level impact on success change of the crime */\n hacking_success_weight: number;\n /** strength level impact on success change of the crime */\n strength_success_weight: number;\n /** defense level impact on success change of the crime */\n defense_success_weight: number;\n /** dexterity level impact on success change of the crime */\n dexterity_success_weight: number;\n /** agility level impact on success change of the crime */\n agility_success_weight: number;\n /** charisma level impact on success change of the crime */\n charisma_success_weight: number;\n /** hacking exp gained from crime */\n hacking_exp: number;\n /** strength exp gained from crime */\n strength_exp: number;\n /** defense exp gained from crime */\n defense_exp: number;\n /** dexterity exp gained from crime */\n dexterity_exp: number;\n /** agility exp gained from crime */\n agility_exp: number;\n /** charisma exp gained from crime */\n charisma_exp: number;\n /** intelligence exp gained from crime */\n intelligence_exp: number;\n}\n\n/**\n * Options to affect the behavior of {@link NS.hack | hack}, {@link NS.grow | grow}, and {@link NS.weaken | weaken}.\n * @public\n */\ninterface BasicHGWOptions {\n /** Number of threads to use for this function.\n * Must be less than or equal to the number of threads the script is running with. */\n threads?: number;\n /** Set to true this action will affect the stock market. */\n stock?: boolean;\n /** Number of additional milliseconds that will be spent waiting between the start of the function and when it\n * completes. */\n additionalMsec?: number;\n}\n\n/**\n * Return value of {@link Sleeve.getSleevePurchasableAugs | getSleevePurchasableAugs}\n * @public\n */\ninterface AugmentPair {\n /** augmentation name */\n name: string;\n /** augmentation cost */\n cost: number;\n}\n\n/** @public */\ndeclare enum PositionType {\n Long = "L",\n Short = "S",\n}\n\n/** @public */\ndeclare enum OrderType {\n LimitBuy = "Limit Buy Order",\n LimitSell = "Limit Sell Order",\n StopBuy = "Stop Buy Order",\n StopSell = "Stop Sell Order",\n}\n\n/**\n * Value in map of {@link StockOrder}\n * @public\n */\ninterface StockOrderObject {\n /** Number of shares */\n shares: number;\n /** Price per share */\n price: number;\n /** Order type */\n type: OrderType;\n /** Order position */\n position: PositionType;\n}\n\n/**\n * Return value of {@link TIX.getOrders | getOrders}\n *\n * Keys are stock symbols, properties are arrays of {@link StockOrderObject}\n * @public\n */\ninterface StockOrder {\n [key: string]: StockOrderObject[];\n}\n\n/** Constants used for the stockmarket game mechanic.\n * @public */\ninterface StockMarketConstants {\n /** Normal time in ms between stock market updates */\n msPerStockUpdate: number;\n /** Minimum time in ms between stock market updates if there is stored offline/bonus time */\n msPerStockUpdateMin: number;\n /** An internal constant used while determining when to flip a stock\'s forecast */\n TicksPerCycle: number;\n /** Cost of the WSE account */\n WSEAccountCost: number;\n /** Cost of the TIX API */\n TIXAPICost: number;\n /** Cost of the 4S Market Data */\n MarketData4SCost: number;\n /** Cost of the 4S Market Data TIX API integration */\n MarketDataTixApi4SCost: number;\n /** Commission fee for transactions */\n StockMarketCommission: number;\n}\n\n/**\n * A single process on a server.\n * @public\n */\ninterface ProcessInfo {\n /** Script name. */\n filename: string;\n /** Number of threads script is running with */\n threads: number;\n /** Script\'s arguments */\n args: (string | number | boolean)[];\n /** Process ID */\n pid: number;\n /** Whether this process is excluded from saves */\n temporary: boolean;\n}\n\n/**\n * Hack related multipliers.\n * @public\n */\ninterface HackingMultipliers {\n /** Player\'s hacking chance multiplier. */\n chance: number;\n /** Player\'s hacking speed multiplier. */\n speed: number;\n /** Player\'s hacking money stolen multiplier. */\n money: number;\n /** Player\'s hacking growth multiplier */\n growth: number;\n}\n\n/**\n * Hacknet related multipliers.\n * @public\n */\ninterface HacknetMultipliers {\n /** Player\'s hacknet production multiplier */\n production: number;\n /** Player\'s hacknet purchase cost multiplier */\n purchaseCost: number;\n /** Player\'s hacknet ram cost multiplier */\n ramCost: number;\n /** Player\'s hacknet core cost multiplier */\n coreCost: number;\n /** Player\'s hacknet level cost multiplier */\n levelCost: number;\n}\n\n/**\n * Hacknet node related constants\n * @public\n */\ninterface HacknetNodeConstants {\n /** Amount of money gained per level */\n MoneyGainPerLevel: number;\n /** Base cost for a new node */\n BaseCost: number;\n /** Base cost per level */\n LevelBaseCost: number;\n /** Base cost to increase RAM */\n RamBaseCost: number;\n /** Base cost to increase cores */\n CoreBaseCost: number;\n /** Multiplier to purchase new node */\n PurchaseNextMult: number;\n /** Multiplier to increase node level */\n UpgradeLevelMult: number;\n /** Multiplier to increase RAM */\n UpgradeRamMult: number;\n /** Multiplier to increase cores */\n UpgradeCoreMult: number;\n /** Max node level */\n MaxLevel: number;\n /** Max amount of RAM in GB */\n MaxRam: number;\n /** Max number of cores */\n MaxCores: number;\n}\n\n/**\n * Hacknet server related constants\n * @public\n */\ninterface HacknetServerConstants {\n /** Number of hashes calculated per level */\n HashesPerLevel: number;\n /** Base cost for a new server */\n BaseCost: number;\n /** Base cost to increase RAM */\n RamBaseCost: number;\n /** Base cost to increase cores */\n CoreBaseCost: number;\n /** Base cost to upgrade cache */\n CacheBaseCost: number;\n /** Multiplier to purchase a new server */\n PurchaseMult: number;\n /** Multiplier to increase server level */\n UpgradeLevelMult: number;\n /** Multiplier to increase RAM */\n UpgradeRamMult: number;\n /** Multiplier to increase cores */\n UpgradeCoreMult: number;\n /** Multiplier to upgrade cache */\n UpgradeCacheMult: number;\n /** Max number of servers */\n MaxServers: number;\n /** Max level for a server */\n MaxLevel: number;\n /** Max amount of RAM in GB */\n MaxRam: number;\n /** Max number of cores */\n MaxCores: number;\n /** Max cache size */\n MaxCache: number;\n}\n\n/**\n * A server. Not all servers have all of these properties - optional properties are missing on certain servers.\n * @public\n */\nexport interface Server {\n /** Hostname. Must be unique */\n hostname: string;\n /** IP Address. Must be unique */\n ip: string;\n\n /** Whether or not the SSH Port is open */\n sshPortOpen: boolean;\n /** Whether or not the FTP port is open */\n ftpPortOpen: boolean;\n /** Whether or not the SMTP Port is open */\n smtpPortOpen: boolean;\n /** Whether or not the HTTP Port is open */\n httpPortOpen: boolean;\n /** Whether or not the SQL Port is open */\n sqlPortOpen: boolean;\n\n /** Flag indicating whether player has admin/root access to this server */\n hasAdminRights: boolean;\n\n /** How many CPU cores this server has. Affects magnitude of grow and weaken ran from this server. */\n cpuCores: number;\n\n /** Flag indicating whether player is currently connected to this server */\n isConnectedTo: boolean;\n\n /** RAM (GB) used. i.e. unavailable RAM */\n ramUsed: number;\n /** RAM (GB) available on this server */\n maxRam: number;\n\n /** Name of company/faction/etc. that this server belongs to, not applicable to all Servers */\n organizationName: string;\n\n /** Flag indicating whether this is a purchased server */\n purchasedByPlayer: boolean;\n\n /** Flag indicating whether this server has a backdoor installed by a player */\n backdoorInstalled?: boolean;\n\n /** Server\'s initial server security level at creation. */\n baseDifficulty?: number;\n\n /** Server Security Level */\n hackDifficulty?: number;\n\n /** Minimum server security level that this server can be weakened to */\n minDifficulty?: number;\n\n /** How much money currently resides on the server and can be hacked */\n moneyAvailable?: number;\n\n /** Maximum amount of money that this server can hold */\n moneyMax?: number;\n\n /** Number of open ports required in order to gain admin/root access */\n numOpenPortsRequired?: number;\n\n /** How many ports are currently opened on the server */\n openPortCount?: number;\n\n /** Hacking level required to hack this server */\n requiredHackingSkill?: number;\n\n /** Growth effectiveness statistic. Higher values produce more growth with ns.grow() */\n serverGrowth?: number;\n}\n\n/**\n * All multipliers affecting the difficulty of the current challenge.\n * @public\n */\ninterface BitNodeMultipliers {\n /** Influences how quickly the player\'s agility level (not exp) scales */\n AgilityLevelMultiplier: number;\n /** Influences the base cost to purchase an augmentation. */\n AugmentationMoneyCost: number;\n /** Influences the base rep the player must have with a faction to purchase an augmentation. */\n AugmentationRepCost: number;\n /** Influences how quickly the player can gain rank within Bladeburner. */\n BladeburnerRank: number;\n /** Influences the cost of skill levels from Bladeburner. */\n BladeburnerSkillCost: number;\n /** Influences how quickly the player\'s charisma level (not exp) scales */\n CharismaLevelMultiplier: number;\n /** Influences the experience gained for each ability when a player completes a class. */\n ClassGymExpGain: number;\n /** Influences the amount of money gained from completing Coding Contracts */\n CodingContractMoney: number;\n /** Influences the experience gained for each ability when the player completes working their job. */\n CompanyWorkExpGain: number;\n /** Influences how much money the player earns when completing working their job. */\n CompanyWorkMoney: number;\n /** Influences the money gain from dividends of corporations created by the player. */\n CorporationSoftcap: number;\n /** Influences the valuation of corporations created by the player. */\n CorporationValuation: number;\n /** Influences the base experience gained for each ability when the player commits a crime. */\n CrimeExpGain: number;\n /** Influences the base money gained when the player commits a crime. */\n CrimeMoney: number;\n /** Influences how many Augmentations you need in order to get invited to the Daedalus faction */\n DaedalusAugsRequirement: number;\n /** Influences how quickly the player\'s defense level (not exp) scales */\n DefenseLevelMultiplier: number;\n /** Influences how quickly the player\'s dexterity level (not exp) scales */\n DexterityLevelMultiplier: number;\n /** Influences how much rep the player gains in each faction simply by being a member. */\n FactionPassiveRepGain: number;\n /** Influences the experience gained for each ability when the player completes work for a Faction. */\n FactionWorkExpGain: number;\n /** Influences how much rep the player gains when performing work for a faction. */\n FactionWorkRepGain: number;\n /** Influences how much it costs to unlock the stock market\'s 4S Market Data API */\n FourSigmaMarketDataApiCost: number;\n /** Influences how much it costs to unlock the stock market\'s 4S Market Data (NOT API) */\n FourSigmaMarketDataCost: number;\n /** Influences the respect gain and money gain of your gang. */\n GangSoftcap: number;\n /** Influences the experienced gained when hacking a server. */\n HackExpGain: number;\n /** Influences how quickly the player\'s hacking level (not experience) scales */\n HackingLevelMultiplier: number;\n /** Influences how much money is produced by Hacknet Nodes\n * and the hash rate of Hacknet Servers (unlocked in BitNode-9) */\n HacknetNodeMoney: number;\n /** Influences how much money it costs to upgrade your home computer\'s RAM */\n HomeComputerRamCost: number;\n /** Influences how much money is gained when the player infiltrates a company. */\n InfiltrationMoney: number;\n /** Influences how much rep the player can gain from factions when selling stolen documents and secrets */\n InfiltrationRep: number;\n /** Influences how much money can be stolen from a server when the player\n * performs a hack against it through the Terminal. */\n ManualHackMoney: number;\n /** Influence how much it costs to purchase a server */\n PurchasedServerCost: number;\n /** Influences the maximum number of purchased servers you can have */\n PurchasedServerLimit: number;\n /** Influences the maximum allowed RAM for a purchased server */\n PurchasedServerMaxRam: number;\n /** Influences cost of any purchased server at or above 128GB */\n PurchasedServerSoftcap: number;\n /** Influences the minimum favor the player must have with a faction before they can donate to gain rep. */\n RepToDonateToFaction: number;\n /** Influences how much the money on a server can be reduced when a script performs a hack against it. */\n ScriptHackMoney: number;\n /** Influences how much of the money stolen by a scripted hack will be added to the player\'s money. */\n ScriptHackMoneyGain: number;\n /** Influences the growth percentage per cycle against a server. */\n ServerGrowthRate: number;\n /** Influences the maximum money that a server can grow to. */\n ServerMaxMoney: number;\n /** Influences the initial money that a server starts with. */\n ServerStartingMoney: number;\n /** Influences the initial security level (hackDifficulty) of a server. */\n ServerStartingSecurity: number;\n /** Influences the weaken amount per invocation against a server. */\n ServerWeakenRate: number;\n /** Influences how quickly the player\'s strength level (not exp) scales */\n StrengthLevelMultiplier: number;\n /** Influences the power of the gift */\n StaneksGiftPowerMultiplier: number;\n /** Influences the size of the gift */\n StaneksGiftExtraSize: number;\n /** Influences the hacking skill required to backdoor the world daemon. */\n WorldDaemonDifficulty: number;\n}\n\n/**\n * Object representing all the values related to a hacknet node.\n * @public\n */\ninterface NodeStats {\n /** Node\'s name */\n name: string;\n /** Node\'s level */\n level: number;\n /** Node\'s RAM (GB) */\n ram: number;\n /** Node\'s used RAM (GB) */\n ramUsed?: number;\n /** Node\'s number of cores */\n cores: number;\n /** Cache level. Only applicable for Hacknet Servers */\n cache?: number;\n /** Hash Capacity provided by this Node. Only applicable for Hacknet Servers */\n hashCapacity?: number;\n /** Node\'s production per second */\n production: number;\n /** Number of seconds since Node has been purchased */\n timeOnline: number;\n /** Total number of money Node has produced */\n totalProduction: number;\n}\n\n/** @public */\ninterface SourceFileLvl {\n /** The number of the source file */\n n: number;\n /** The level of the source file */\n lvl: number;\n}\n\n/**\n * Bladeburner current action.\n * @public\n */\ninterface BladeburnerCurAction {\n /** Type of Action */\n type: string;\n /** Name of Action */\n name: string;\n}\n\n/**\n * Gang general info.\n * @public\n */\ninterface GangGenInfo {\n /** Name of faction that the gang belongs to ("Slum Snakes", etc.) */\n faction: string;\n /** Indicating whether or not it\'s a hacking gang */\n isHacking: boolean;\n /** Money earned per game cycle */\n moneyGainRate: number;\n /** Gang\'s power for territory warfare */\n power: number;\n /** Gang\'s respect */\n respect: number;\n /** Respect earned per game cycle */\n respectGainRate: number;\n /** Amount of territory held */\n territory: number;\n /** Clash chance */\n territoryClashChance: number;\n /** Gang\'s wanted level */\n wantedLevel: number;\n /** Wanted level gained/lost per game cycle (negative for losses) */\n wantedLevelGainRate: number;\n /** Indicating if territory warfare is enabled */\n territoryWarfareEngaged: boolean;\n /** Number indicating the current wanted penalty */\n wantedPenalty: number;\n}\n\n/** @public */\ninterface GangOtherInfoObject {\n /** Gang power */\n power: number;\n /** Gang territory, in decimal form */\n territory: number;\n}\n\n/** @public */\ninterface GangOtherInfo {\n [key: string]: GangOtherInfoObject;\n}\n\n/**\n * Object representing data representing a gang member task.\n * @public\n */\ninterface GangTaskStats {\n /** Task name */\n name: string;\n /** Task Description */\n desc: string;\n /** Is a task of a hacking gang */\n isHacking: boolean;\n /** Is a task of a combat gang */\n isCombat: boolean;\n /** Base respect earned */\n baseRespect: number;\n /** Base wanted earned */\n baseWanted: number;\n /** Base money earned */\n baseMoney: number;\n /** Hacking skill impact on task scaling */\n hackWeight: number;\n /** Strength skill impact on task scaling */\n strWeight: number;\n /** Defense skill impact on task scaling */\n defWeight: number;\n /** Dexterity skill impact on task scaling */\n dexWeight: number;\n /** Agility skill impact on task scaling */\n agiWeight: number;\n /** Charisma skill impact on task scaling */\n chaWeight: number;\n /** Number representing the difficulty of the task */\n difficulty: number;\n /** Territory impact on task scaling */\n territory: GangTerritory;\n}\n\n/**\n * Object representing data representing a gang member equipment.\n * @public\n */\ninterface EquipmentStats {\n /** Strength multiplier */\n str?: number;\n /** Defense multiplier */\n def?: number;\n /** Dexterity multiplier */\n dex?: number;\n /** Agility multiplier */\n agi?: number;\n /** Charisma multiplier */\n cha?: number;\n /** Hacking multiplier */\n hack?: number;\n}\n\n/** @public */\ninterface GangTerritory {\n /** Money gain impact on task scaling */\n money: number;\n /** Respect gain impact on task scaling */\n respect: number;\n /** Wanted gain impact on task scaling */\n wanted: number;\n}\n\n/** @public */\ninterface GangMemberInfo {\n /** Name of the gang member */\n name: string;\n /** Currently assigned task */\n task: string;\n earnedRespect: number;\n\n /** Hack skill level */\n hack: number;\n /** Strength skill level */\n str: number;\n /** Defense skill level */\n def: number;\n /** Dexterity skill level */\n dex: number;\n /** Agility skill level */\n agi: number;\n /** Charisma skill level */\n cha: number;\n\n /** Current hack experience */\n hack_exp: number;\n /** Current strength experience */\n str_exp: number;\n /** Current defense experience */\n def_exp: number;\n /** Current dexterity experience */\n dex_exp: number;\n /** Current agility experience */\n agi_exp: number;\n /** Current charisma experience */\n cha_exp: number;\n\n /** Hack multiplier from equipment */\n hack_mult: number;\n /** Strength multiplier from equipment */\n str_mult: number;\n /** Defense multiplier from equipment */\n def_mult: number;\n /** Dexterity multiplier from equipment */\n dex_mult: number;\n /** Agility multiplier from equipment */\n agi_mult: number;\n /** Charisma multiplier from equipment */\n cha_mult: number;\n\n /** Hack multiplier from ascensions */\n hack_asc_mult: number;\n /** Strength multiplier from ascensions */\n str_asc_mult: number;\n /** Defense multiplier from ascensions */\n def_asc_mult: number;\n /** Dexterity multiplier from ascensions */\n dex_asc_mult: number;\n /** Agility multiplier from ascensions */\n agi_asc_mult: number;\n /** Charisma multiplier from ascensions */\n cha_asc_mult: number;\n\n /** Total earned hack experience */\n hack_asc_points: number;\n /** Total earned strength experience */\n str_asc_points: number;\n /** Total earned defense experience */\n def_asc_points: number;\n /** Total earned dexterity experience */\n dex_asc_points: number;\n /** Total earned agility experience */\n agi_asc_points: number;\n /** Total earned charisma experience */\n cha_asc_points: number;\n\n upgrades: string[];\n augmentations: string[];\n\n respectGain: number;\n wantedLevelGain: number;\n moneyGain: number;\n}\n\n/** @public */\ninterface GangMemberAscension {\n /** Amount of respect lost from ascending */\n respect: number;\n /** Factor by which the hacking ascension multiplier was increased (newMult / oldMult) */\n hack: number;\n /** Factor by which the strength ascension multiplier was increased (newMult / oldMult) */\n str: number;\n /** Factor by which the defense ascension multiplier was increased (newMult / oldMult) */\n def: number;\n /** Factor by which the dexterity ascension multiplier was increased (newMult / oldMult) */\n dex: number;\n /** Factor by which the agility ascension multiplier was increased (newMult / oldMult) */\n agi: number;\n /** Factor by which the charisma ascension multiplier was increased (newMult / oldMult) */\n cha: number;\n}\n\n/** @public */\ntype SleeveBladeburnerTask = {\n type: "BLADEBURNER";\n actionType: "General" | "Contracts";\n actionName: string;\n cyclesWorked: number;\n cyclesNeeded: number;\n};\n\n/** @public */\ntype SleeveClassTask = {\n type: "CLASS";\n classType: UniversityClassType | GymType | `${UniversityClassType}` | `${GymType}`;\n location: LocationName | `${LocationName}`;\n};\n\n/** @public */\ntype SleeveCompanyTask = { type: "COMPANY"; companyName: CompanyName };\n\n/** @public */\ntype SleeveCrimeTask = {\n type: "CRIME";\n crimeType: CrimeType | `${CrimeType}`;\n cyclesWorked: number;\n cyclesNeeded: number;\n};\n\n/** @public */\ntype SleeveFactionTask = {\n type: "FACTION";\n factionWorkType: FactionWorkType | `${FactionWorkType}`;\n factionName: string;\n};\n\n/** @public */\ntype SleeveInfiltrateTask = { type: "INFILTRATE"; cyclesWorked: number; cyclesNeeded: number };\n\n/** @public */\ntype SleeveRecoveryTask = { type: "RECOVERY" };\n\n/** @public */\ntype SleeveSupportTask = { type: "SUPPORT" };\n\n/** @public */\ntype SleeveSynchroTask = { type: "SYNCHRO" };\n\n/** Object representing a sleeve current task.\n * @public */\nexport type SleeveTask =\n | SleeveBladeburnerTask\n | SleeveClassTask\n | SleeveCompanyTask\n | SleeveCrimeTask\n | SleeveFactionTask\n | SleeveInfiltrateTask\n | SleeveRecoveryTask\n | SleeveSupportTask\n | SleeveSynchroTask;\n\n/** Object representing a port. A port is a serialized queue.\n * @public */\nexport interface NetscriptPort {\n /** Write data to a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns The data popped off the queue if it was full. */\n write(value: string | number): PortData | null;\n\n /**\n * Attempt to write data to the port.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns True if the data was added to the port, false if the port was full\n */\n tryWrite(value: string | number): boolean;\n\n /**\n * Sleeps until the port is written to.\n * @remarks\n * RAM cost: 0 GB\n */\n nextWrite(): Promise;\n\n /**\n * Shift an element out of the port.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function will remove the first element from the port and return it.\n * If the port is empty, then the string “NULL PORT DATA” will be returned.\n * @returns the data read.\n */\n read(): PortData;\n\n /**\n * Retrieve the first element from the port without removing it.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is used to peek at the data from a port. It returns the\n * first element in the specified port without removing that element. If\n * the port is empty, the string “NULL PORT DATA” will be returned.\n * @returns the data read\n */\n peek(): PortData;\n\n /**\n * Check if the port is full.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns true if the port is full, otherwise false\n */\n full(): boolean;\n\n /**\n * Check if the port is empty.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns true if the port is empty, otherwise false\n */\n empty(): boolean;\n\n /**\n * Empties all data from the port.\n * @remarks\n * RAM cost: 0 GB\n */\n clear(): void;\n}\n\n/**\n * Stock market API\n * @public\n */\nexport interface TIX {\n /** Get game constants for the stock market mechanic.\n * @remarks RAM cost: 0 GB */\n getConstants(): StockMarketConstants;\n /**\n * Returns true if the player has access to a WSE Account\n * @remarks RAM cost: 0.05 GB\n */\n hasWSEAccount(): boolean;\n /**\n * Returns true if the player has access to the TIX API\n * @remarks RAM cost: 0.05 GB\n */\n hasTIXAPIAccess(): boolean;\n /**\n * Returns true if the player has access to the 4S Data\n * @remarks RAM cost: 0.05 GB\n */\n has4SData(): boolean;\n /**\n * Returns true if the player has access to the 4SData TIX API\n * @remarks RAM cost: 0.05 GB\n */\n has4SDataTIXAPI(): boolean;\n /**\n * Returns an array of the symbols of the tradable stocks\n *\n * @remarks RAM cost: 2 GB\n * @returns Array of the symbols of the tradable stocks.\n */\n getSymbols(): string[];\n\n /**\n * Returns the price of a stock.\n *\n * @remarks\n * RAM cost: 2 GB\n *\n * The stock’s price is the average of its bid and ask prices. This function requires\n * that you have the following:\n *\n * 1. WSE Account\n *\n * 1. TIX API Access\n *\n * @example\n * ```js\n * const fourSigmaStockPrice = ns.stock.getPrice("FSIG");\n *\n * // Choose the first stock symbol from the array of stock symbols. Get the price\n * // of the corresponding stock.\n * const sym = ns.stock.getSymbols()[0];\n * ns.tprint("Stock symbol: " + sym);\n * ns.tprint("Stock price: " + ns.stock.getPrice(sym));\n * ```\n * @param sym - Stock symbol.\n * @returns The price of a stock.\n */\n getPrice(sym: string): number;\n\n /**\n * Returns the organization associated with a stock symbol.\n *\n * @remarks\n * RAM cost: 2 GB\n *\n * The organization associated with the corresponding stock symbol. This function\n * requires that you have the following:\n *\n * 1. WSE Account\n *\n * 1. TIX API Access\n *\n * @example\n * ```js\n * ns.stock.getOrganization("FSIG");\n *\n * // Choose the first stock symbol from the array of stock symbols. Get the\n * // organization associated with the corresponding stock symbol.\n * const sym = ns.stock.getSymbols()[0];\n * ns.tprint("Stock symbol: " + sym);\n * ns.tprint("Stock organization: " + ns.stock.getOrganization(sym));\n * ```\n * @param sym - Stock symbol.\n * @returns The organization assicated with the stock symbol.\n */\n getOrganization(sym: string): string;\n\n /**\n * Returns the ask price of that stock.\n * @remarks RAM cost: 2 GB\n *\n * @param sym - Stock symbol.\n * @returns The ask price of a stock.\n */\n getAskPrice(sym: string): number;\n\n /**\n * Returns the bid price of that stock.\n * @remarks RAM cost: 2 GB\n *\n * @param sym - Stock symbol.\n * @returns The bid price of a stock.\n */\n getBidPrice(sym: string): number;\n\n /**\n * Returns the player’s position in a stock.\n * @remarks\n * RAM cost: 2 GB\n * Returns an array of four elements that represents the player’s position in a stock.\n *\n * The first element in the returned array is the number of shares the player owns of\n * the stock in the Long position. The second element in the array is the average price\n * of the player’s shares in the Long position.\n *\n * The third element in the array is the number of shares the player owns of the stock\n * in the Short position. The fourth element in the array is the average price of the\n * player’s Short position.\n *\n * All elements in the returned array are numeric.\n *\n * @example\n * ```js\n * const [sharesLong, avgLongPrice, sharesShort, avgShortPrice] = ns.stock.getPosition("ECP");\n * ```\n * @param sym - Stock symbol.\n * @returns Array of four elements that represents the player’s position in a stock.\n */\n getPosition(sym: string): [number, number, number, number];\n\n /**\n * Returns the maximum number of shares of a stock.\n * @remarks\n * RAM cost: 2 GB\n * This is the maximum amount of the stock that can be purchased\n * in both the Long and Short positions combined.\n *\n * @param sym - Stock symbol.\n * @returns Maximum number of shares that the stock has.\n */\n getMaxShares(sym: string): number;\n\n /**\n * Calculates cost of buying stocks.\n * @remarks\n * RAM cost: 2 GB\n * Calculates and returns how much it would cost to buy a given number of shares of a stock.\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to purchase.\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\n * @returns Cost to buy a given number of shares of a stock.\n */\n getPurchaseCost(sym: string, shares: number, posType: string): number;\n\n /**\n * Calculate profit of selling stocks.\n * @remarks\n * RAM cost: 2 GB\n * Calculates and returns how much you would gain from selling a given number of shares of a stock.\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to sell.\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\n * @returns Gain from selling a given number of shares of a stock.\n */\n getSaleGain(sym: string, shares: number, posType: string): number;\n\n /**\n * Buy stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to purchase shares of a stock using a Market Order.\n *\n * If the player does not have enough money to purchase the specified number of shares,\n * then no shares will be purchased. Remember that every transaction on the stock exchange\n * costs a certain commission fee.\n *\n * If this function successfully purchases the shares, it will return the stock price at which\n * each share was purchased. Otherwise, it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to purchased. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren\'t purchased.\n */\n buyStock(sym: string, shares: number): number;\n\n /**\n * Sell stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to sell shares of a stock using a Market Order.\n *\n * If the specified number of shares in the function exceeds the amount that the player\n * actually owns, then this function will sell all owned shares. Remember that every\n * transaction on the stock exchange costs a certain commission fee.\n *\n * The net profit made from selling stocks with this function is reflected in the script’s\n * statistics. This net profit is calculated as:\n *\n * shares * (sell_price - average_price_of_purchased_shares)\n *\n * If the sale is successful, this function will return the stock price at\n * which each share was sold. Otherwise, it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren\'t sold.\n */\n sellStock(sym: string, shares: number): number;\n\n /**\n * Short stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to purchase a short position of a stock using a Market Order.\n *\n * The ability to short a stock is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * If the player does not have enough money to purchase the specified number of shares,\n * then no shares will be purchased. Remember that every transaction on the stock exchange\n * costs a certain commission fee.\n *\n * If the purchase is successful, this function will return the stock price at which each\n * share was purchased. Otherwise, it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to short. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren\'t purchased.\n */\n buyShort(sym: string, shares: number): number;\n\n /**\n * Sell short stock.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to sell a short position of a stock using a Market Order.\n *\n * The ability to short a stock is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * If the specified number of shares exceeds the amount that the player actually owns,\n * then this function will sell all owned shares. Remember that every transaction on\n * the stock exchange costs a certain commission fee.\n *\n * If the sale is successful, this function will return the stock price at which each\n * share was sold. Otherwise it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren\'t sold.\n */\n sellShort(sym: string, shares: number): number;\n\n /**\n * Place order for stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Places an order on the stock market. This function only works for Limit and Stop Orders.\n *\n * The ability to place limit and stop orders is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * Returns true if the order is successfully placed, and false otherwise.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\n * @param price - Execution price for the order.\n * @param type - Type of order.\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\n * @returns True if the order is successfully placed, and false otherwise.\n */\n placeOrder(sym: string, shares: number, price: number, type: string, pos: string): boolean;\n\n /**\n * Cancel order for stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Cancels an outstanding Limit or Stop order on the stock market.\n *\n * The ability to use limit and stop orders is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\n * @param price - Execution price for the order.\n * @param type - Type of order.\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\n */\n cancelOrder(sym: string, shares: number, price: number, type: string, pos: string): void;\n\n /**\n * Returns your order book for the stock market.\n * @remarks\n * RAM cost: 2.5 GB\n * This is an object containing information for all the Limit and Stop Orders you have in the stock market.\n * For each symbol you have a position in, the returned object will have a key with that symbol\'s name.\n * The object\'s properties are each an array of {@link StockOrderObject}\n * The object has the following structure:\n *\n * ```ts\n * {\n * string1: [ // Array of orders for this stock\n * {\n * shares: Order quantity\n * price: Order price\n * type: Order type\n * position: Either "L" or "S" for Long or Short position\n * },\n * {\n * ...\n * },\n * ...\n * ],\n * string2: [ // Array of orders for this stock\n * ...\n * ],\n * ...\n * }\n * ```\n * The “Order type” property can have one of the following four values: "Limit Buy Order", "Limit Sell Order",\n * "Stop Buy Order", "Stop Sell Order".\n * Note that the order book will only contain information for stocks that you actually have orders in.\n *\n * @example\n * ```ts\n * "If you do not have orders in Nova Medical (NVMD), then the returned object will not have a “NVMD” property."\n * {\n * ECP: [\n * {\n * shares: 5,\n * price: 100,000\n * type: "Stop Buy Order",\n * position: "S",\n * },\n * {\n * shares: 25,\n * price: 125,000\n * type: "Limit Sell Order",\n * position: "L",\n * },\n * ],\n * SYSC: [\n * {\n * shares: 100,\n * price: 10,000\n * type: "Limit Buy Order",\n * position: "L",\n * },\n * ],\n * }\n * ```\n * @returns Object containing information for all the Limit and Stop Orders you have in the stock market.\n */\n getOrders(): StockOrder;\n\n /**\n * Returns the volatility of the specified stock.\n * @remarks\n * RAM cost: 2.5 GB\n * Volatility represents the maximum percentage by which a stock’s price can change every tick.\n * The volatility is returned as a decimal value, NOT a percentage\n * (e.g. if a stock has a volatility of 3%, then this function will return 0.03, NOT 3).\n *\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\n *\n * @param sym - Stock symbol.\n * @returns Volatility of the specified stock.\n */\n getVolatility(sym: string): number;\n\n /**\n * Returns the probability that the specified stock’s price will increase (as opposed to decrease) during the next\n * tick.\n * @remarks\n * RAM cost: 2.5 GB\n * The probability is returned as a decimal value, NOT a percentage\n * (e.g. if a stock has a 60% chance of increasing, then this function will return 0.6, NOT 60).\n *\n * In other words, if this function returned 0.30 for a stock, then this means that the stock’s price has a\n * 30% chance of increasing and a 70% chance of decreasing during the next tick.\n *\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\n *\n * @param sym - Stock symbol.\n * @returns Probability that the specified stock’s price will increase (as opposed to decrease) during the next tick.\n */\n getForecast(sym: string): number;\n\n /**\n * Purchase 4S Market Data Access.\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchase4SMarketData(): boolean;\n\n /**\n * Purchase 4S Market Data TIX API Access.\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchase4SMarketDataTixApi(): boolean;\n\n /**\n * Purchase WSE Account.\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchaseWseAccount(): boolean;\n\n /**\n * Purchase TIX API Access\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchaseTixApi(): boolean;\n}\n\n/**\n * Singularity API\n * @remarks\n * This API requires Source-File 4 to use. The RAM cost of all these functions is multiplied by 16/4/1 based on\n * Source-File 4 levels.\n * @public\n */\nexport interface Singularity {\n /**\n * Backup game save.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function will automatically opens the backup save prompt and claim the free faction favour if available.\n *\n */\n exportGame(): void;\n\n /**\n * Returns Backup save bonus availability.\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n *\n * This function will check if there is a bonus for backing up your save.\n *\n */\n exportGameBonus(): boolean;\n\n /**\n * Take university class.\n *\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function will automatically set you to start taking a course at a university.\n * If you are already in the middle of some “working” action (such as working at a\n * company, for a faction, or on a program), then running this function will automatically\n * cancel that action and give you your earnings.\n *\n * The cost and experience gains for all of these universities and classes are the same as\n * if you were to manually visit and take these classes.\n *\n * @param universityName - Name of university. You must be in the correct city for whatever university you specify.\n * @param courseName - Name of course.\n * @param focus - Acquire player focus on this class. Optional. Defaults to true.\n * @returns True if action is successfully started, false otherwise.\n */\n universityCourse(universityName: string, courseName: string, focus?: boolean): boolean;\n\n /**\n * Workout at the gym.\n *\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n\n * This function will automatically set you to start working out at a gym to train\n * a particular stat. If you are already in the middle of some “working” action\n * (such as working at a company, for a faction, or on a program), then running\n * this function will automatically cancel that action and give you your earnings.\n *\n * The cost and experience gains for all of these gyms are the same as if you were\n * to manually visit these gyms and train\n *\n * @param gymName - Name of gym. You must be in the correct city for whatever gym you specify.\n * @param stat - The stat you want to train.\n * @param focus - Acquire player focus on this gym workout. Optional. Defaults to true.\n * @returns True if actions is successfully started, false otherwise.\n */\n gymWorkout(gymName: string, stat: string, focus?: boolean): boolean;\n\n /**\n * Travel to another city.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function allows the player to travel to any city. The cost for using this\n * function is the same as the cost for traveling through the Travel Agency.\n *\n * @param city - City to travel to.\n * @returns True if action is successful, false otherwise.\n */\n travelToCity(city: CityName | `${CityName}`): boolean;\n\n /**\n * Purchase the TOR router.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function allows you to automatically purchase a TOR router. The cost for\n * purchasing a TOR router using this function is the same as if you were to\n * manually purchase one.\n *\n * @returns True if actions is successful or you already own TOR router, false otherwise.\n */\n purchaseTor(): boolean;\n\n /**\n * Purchase a program from the dark web.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function allows you to automatically purchase programs. You MUST have a\n * TOR router in order to use this function. The cost of purchasing programs\n * using this function is the same as if you were purchasing them through the Dark\n * Web using the Terminal buy command.\n *\n * @example\n * ```js\n * const programName = "BruteSSH.exe"\n * const success = ns.purchaseProgram(programName);\n * if (!success) ns.tprint("ERROR: Failed to purchase ${programName}")\n * ```\n * @param programName - Name of program to purchase.\n * @returns True if the specified program is purchased, and false otherwise.\n */\n purchaseProgram(programName: string): boolean;\n\n /**\n * Check if the player is busy.\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n *\n * Returns a boolean indicating whether or not the player is currently performing an\n * ‘action’. These actions include working for a company/faction, studying at a university,\n * working out at a gym, creating a program, committing a crime, or carrying out a Hacking Mission.\n *\n * @returns True if the player is currently performing an ‘action’, false otherwise.\n */\n isBusy(): boolean;\n\n /**\n * Stop the current action.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function is used to end whatever ‘action’ the player is currently performing.\n * The player will receive whatever money/experience/etc. he has earned from that action.\n *\n * The actions that can be stopped with this function are:\n *\n * * Studying at a university\n * * Working out at a gym\n * * Working for a company/faction\n * * Creating a program\n * * Committing a crime\n *\n * This function will return true if the player’s action was ended.\n * It will return false if the player was not performing an action when this function was called.\n *\n * @returns True if the player’s action was ended, false if the player was not performing an action.\n */\n stopAction(): boolean;\n\n /**\n * Upgrade home computer RAM.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will upgrade amount of RAM on the player’s home computer. The cost is\n * the same as if you were to do it manually.\n *\n * This function will return true if the player’s home computer RAM is successfully upgraded, and false otherwise.\n *\n * @returns True if the player’s home computer RAM is successfully upgraded, and false otherwise.\n */\n upgradeHomeRam(): boolean;\n\n /**\n * Upgrade home computer cores.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will upgrade amount of cores on the player’s home computer. The cost is\n * the same as if you were to do it manually.\n *\n * This function will return true if the player’s home computer cores is successfully upgraded, and false otherwise.\n *\n * @returns True if the player’s home computer cores is successfully upgraded, and false otherwise.\n */\n upgradeHomeCores(): boolean;\n\n /**\n * Get the price of upgrading home RAM.\n * @remarks\n * RAM cost: 1.5 GB * 16/4/1\n *\n *\n * Returns the cost of upgrading the player’s home computer RAM.\n *\n * @returns Cost of upgrading the player’s home computer RAM.\n */\n getUpgradeHomeRamCost(): number;\n\n /**\n * Get the price of upgrading home cores.\n * @remarks\n * RAM cost: 1.5 GB * 16/4/1\n *\n *\n * Returns the cost of upgrading the player’s home computer cores.\n *\n * @returns Cost of upgrading the player’s home computer cores.\n */\n getUpgradeHomeCoresCost(): number;\n\n /**\n * Get Requirements for Company Position.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function will return an object that contains the requirements for\n * a specific position at a specific country.\n *\n * @example\n * ```js\n * const companyName = "ECorp";\n * const position = "Chief Executive Officer";\n *\n * let requirements = ns.singularity.getCompanyPositionInfo(companyName, position);\n * ```\n * @param companyName - Name of company to get the requirements for. Must be an exact match.\n * @param positionName - Name of position to get the requirements for. Must be an exact match.\n * @returns CompanyPositionInfo object.\n */\n getCompanyPositionInfo(\n companyName: CompanyName | `${CompanyName}`,\n positionName: JobName | `${JobName}`,\n ): CompanyPositionInfo;\n\n /**\n * Get List of Company Positions.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function will return a list of positions at a specific company.\n *\n * This function will return the position list if the company name is valid.\n *\n * @example\n * ```js\n * const companyName = "Noodle Bar";\n * const jobList = ns.singularity.getCompanyPositions(companyName);\n * ```\n * @param companyName - Name of company to get the position list for. Must be an exact match.\n * @returns The position list if the company name is valid.\n */\n getCompanyPositions(companyName: CompanyName | `${CompanyName}`): JobName[];\n\n /**\n * Work for a company.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will set you to start working at your current job at a specified company at which you are employed.\n * If you are already in the middle of some “working” action (such as working for a faction, training at a gym, or\n * creating a program), then running this function will cancel that action.\n *\n * This function will return true if the player starts working, and false otherwise.\n *\n * @example\n * ```js\n * const companyName = "Noodle Bar";\n * const success = ns.singularity.workForCompany(companyName);\n * if (!success) ns.tprint(`ERROR: Failed to start work at ${companyName}.`);\n * ```\n * @param companyName - Name of company to work for. Must be an exact match. Optional. If not specified, this\n * argument defaults to the last job that you worked.\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\n * @returns True if the player starts working, and false otherwise.\n */\n workForCompany(companyName: CompanyName, focus?: boolean): boolean;\n\n /**\n * Quit jobs by company.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will finish work with the company provided and quit any jobs.\n *\n * @param companyName - Name of the company.\n */\n quitJob(companyName?: CompanyName | `${CompanyName}`): void;\n\n /**\n * Apply for a job at a company.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will automatically try to apply to the specified company\n * for a position in the specified field. This function can also be used to\n * apply for promotions by specifying the company and field you are already\n * employed at.\n *\n * This function will return true if you successfully get a job/promotion,\n * and false otherwise. Note that if you are trying to use this function to\n * apply for a promotion and you don’t get one, it will return false.\n *\n * @param companyName - Name of company to apply to.\n * @param field - Field to which you want to apply.\n * @returns True if the player successfully get a job/promotion, and false otherwise.\n */\n applyToCompany(companyName: CompanyName | `${CompanyName}`, field: string): boolean;\n\n /**\n * Get company reputation.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function will return the amount of reputation you have at the specified company.\n * If the company passed in as an argument is invalid, -1 will be returned.\n *\n * @param companyName - Name of the company.\n * @returns Amount of reputation you have at the specified company.\n */\n getCompanyRep(companyName: CompanyName | `${CompanyName}`): number;\n\n /**\n * Get company favor.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function will return the amount of favor you have at the specified company.\n * If the company passed in as an argument is invalid, -1 will be returned.\n *\n * @param companyName - Name of the company.\n * @returns Amount of favor you have at the specified company.\n */\n getCompanyFavor(companyName: CompanyName | `${CompanyName}`): number;\n\n /**\n * Get company favor gain.\n * @remarks\n * RAM cost: 0.75 GB * 16/4/1\n *\n *\n * This function will return the amount of favor you will gain for the specified\n * company when you reset by installing Augmentations.\n *\n * @param companyName - Name of the company.\n * @returns Amount of favor you gain at the specified company when you reset by installing Augmentations.\n */\n getCompanyFavorGain(companyName: CompanyName | `${CompanyName}`): number;\n\n /**\n * List all current faction invitations.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * Performs an immediate check for which factions you qualify for invites from, then returns an array with the name\n * of all Factions you have outstanding invitations from.\n *\n * @returns Array with the name of all Factions you currently have outstanding invitations from.\n */\n checkFactionInvitations(): string[];\n\n /**\n * Join a faction.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will automatically accept an invitation from a faction and join it.\n *\n * @param faction - Name of faction to join.\n * @returns True if player joined the faction, and false otherwise.\n */\n joinFaction(faction: string): boolean;\n\n /**\n * Work for a faction.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will set you to start working for the specified faction. You must be a member of the faction and\n * that faction must have the specified work type, or else this function will fail. If you are already in the\n * middle of some “working” action (such as working for a company, training at a gym, or creating a program), then\n * running this function will cancel that action.\n *\n * This function will return true if you successfully start working for the specified faction, and false otherwise.\n *\n * @example\n * ```js\n * const factionName = "CyberSec";\n * const workType = "hacking";\n *\n * let success = ns.singularity.workForFaction(factionName, workType);\n * if (!success) ns.tprint(`ERROR: Failed to start work for ${factionName} with work type ${workType}.`)\n * ```\n * @param faction - Name of faction to work for.\n * @param workType - Type of work to perform for the faction.\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\n * @returns True if the player starts working, and false otherwise.\n */\n workForFaction(faction: string, workType: FactionWorkType | `${FactionWorkType}`, focus?: boolean): boolean;\n\n /**\n * Get faction reputation.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function returns the amount of reputation you have for the specified faction.\n *\n * @param faction - Name of faction to work for.\n * @returns Amount of reputation you have for the specified faction.\n */\n getFactionRep(faction: string): number;\n\n /**\n * Get faction favor.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function returns the amount of favor you have for the specified faction.\n *\n * @param faction - Name of faction.\n * @returns Amount of favor you have for the specified faction.\n */\n getFactionFavor(faction: string): number;\n\n /**\n * Get faction favor gain.\n * @remarks\n * RAM cost: 0.75 GB * 16/4/1\n *\n *\n * This function returns the amount of favor you will gain for the specified\n * faction when you reset by installing Augmentations.\n *\n * @param faction - Name of faction.\n * @returns Amount of favor you will gain for the specified faction when you reset by installing Augmentations.\n */\n getFactionFavorGain(faction: string): number;\n\n /**\n * Donate to a faction.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Attempts to donate money to the specified faction in exchange for reputation.\n * Returns true if you successfully donate the money, and false otherwise.\n *\n * @param faction - Name of faction to donate to.\n * @param amount - Amount of money to donate.\n * @returns True if the money was donated, and false otherwise.\n */\n donateToFaction(faction: string, amount: number): boolean;\n\n /**\n * Create a program.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will automatically set you to start working on creating the\n * specified program. If you are already in the middle of some “working” action\n * (such as working for a company, training at a gym, or taking a course), then\n * running this function will automatically cancel that action and give you your\n * earnings.\n *\n * This function returns true if you successfully start working on the specified program, and false otherwise.\n *\n * Note that creating a program using this function has the same hacking level requirements as it normally would.\n * These level requirements are:\n * * BruteSSH.exe: 50\n * * FTPCrack.exe: 100\n * * relaySMTP.exe: 250\n * * HTTPWorm.exe: 500\n * * SQLInject.exe: 750\n * * DeepscanV1.exe: 75\n * * DeepscanV2.exe: 400\n * * ServerProfiler.exe: 75\n * * AutoLink.exe: 25\n *\n * @example\n * ```js\n * const programName = "BruteSSH.exe";\n * const success = ns.createProgram(programName);\n * if (!success) ns.tprint("ERROR: Failed to start working on ${programName}")\n * ```\n * @param program - Name of program to create.\n * @param focus - Acquire player focus on this program creation. Optional. Defaults to true.\n * @returns True if you successfully start working on the specified program, and false otherwise.\n */\n createProgram(program: string, focus?: boolean): boolean;\n\n /**\n * Commit a crime.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function is used to automatically attempt to commit crimes.\n * If you are already in the middle of some ‘working’ action (such\n * as working for a company or training at a gym), then running this\n * function will automatically cancel that action and give you your\n * earnings.\n *\n * This function returns the number of milliseconds it takes to attempt the\n * specified crime (e.g It takes 60 seconds to attempt the ‘Rob Store’ crime,\n * so running `commitCrime(\'Rob Store\')` will return 60,000).\n *\n * @param crime - Name of crime to attempt.\n * @param focus - Acquire player focus on this crime. Optional. Defaults to true.\n * @returns The number of milliseconds it takes to attempt the specified crime.\n */\n commitCrime(crime: CrimeType | `${CrimeType}`, focus?: boolean): number;\n\n /**\n * Get chance to successfully commit a crime.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns your chance of success at committing the specified crime.\n *\n * @param crime - Name of crime.\n * @returns Chance of success at committing the specified crime.\n */\n getCrimeChance(crime: CrimeType | `${CrimeType}`): number;\n\n /**\n * Get stats related to a crime.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Returns the stats of the crime.\n *\n * @param crime - Name of crime.\n * @returns The stats of the crime.\n */\n getCrimeStats(crime: CrimeType | `${CrimeType}`): CrimeStats;\n\n /**\n * Get a list of owned augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns an array containing the names (as strings) of all Augmentations you have.\n *\n * @param purchased - Specifies whether the returned array should include Augmentations you have purchased but not\n * yet installed. By default, this argument is false which means that the return value will NOT have the purchased\n * Augmentations.\n * @returns Array containing the names (as strings) of all Augmentations you have.\n */\n getOwnedAugmentations(purchased?: boolean): string[];\n\n /**\n * Get a list of acquired Source-Files.\n * @remarks\n * RAM cost: 5 GB\n *\n *\n * Returns an array of source files\n *\n * @returns Array containing an object with number and level of the source file.\n */\n getOwnedSourceFiles(): SourceFileLvl[];\n\n /**\n * Get a list of faction(s) that have a specific Augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Returns an array containing the names (as strings) of all factions\n * that offer the specified Augmentation.\n * If no factions offer the Augmentation, a blank array is returned.\n *\n * @param augName - Name of Augmentation.\n * @returns Array containing the names of all factions.\n */\n getAugmentationFactions(augName: string): string[];\n\n /**\n * Get a list of augmentation available from a faction.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Returns an array containing the names (as strings) of all Augmentations\n * that are available from the specified faction.\n *\n * @param faction - Name of faction.\n * @returns Array containing the names of all Augmentations.\n */\n getAugmentationsFromFaction(faction: string): string[];\n\n /**\n * Get the pre-requisite of an augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns an array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\n * If there are no prerequisites, a blank array is returned.\n *\n * @param augName - Name of Augmentation.\n * @returns Array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\n */\n getAugmentationPrereq(augName: string): string[];\n\n /**\n * Get price of an augmentation.\n * @remarks\n * RAM cost: 2.5 GB * 16/4/1\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Price of the augmentation.\n */\n getAugmentationPrice(augName: string): number;\n\n /**\n * Get base price of an augmentation.\n * @remarks\n * RAM cost: 2.5 GB * 16/4/1\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Base price of the augmentation, before price multiplier.\n */\n getAugmentationBasePrice(augName: string): number;\n\n /**\n * Get reputation requirement of an augmentation.\n * @remarks\n * RAM cost: 2.5 GB * 16/4/1\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Reputation requirement of the augmentation.\n */\n getAugmentationRepReq(augName: string): number;\n\n /**\n * Purchase an augmentation\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will try to purchase the specified Augmentation through the given Faction.\n *\n * This function will return true if the Augmentation is successfully purchased, and false otherwise.\n *\n * @param faction - Name of faction to purchase Augmentation from.\n * @param augmentation - Name of Augmentation to purchase.\n * @returns True if the Augmentation is successfully purchased, and false otherwise.\n */\n purchaseAugmentation(faction: string, augmentation: string): boolean;\n\n /**\n * Get the stats of an augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns augmentation stats.\n *\n * @param name - Name of Augmentation. CASE-SENSITIVE.\n * @returns Augmentation stats.\n */\n getAugmentationStats(name: string): Multipliers;\n\n /**\n * Install your purchased augmentations.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will automatically install your Augmentations, resetting the game as usual. If you do not own uninstalled Augmentations then the game will not reset.\n *\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\n */\n installAugmentations(cbScript?: string): void;\n\n /**\n * Hospitalize the player.\n * @remarks\n * RAM cost: 0.25 GB * 16/4/1\n */\n hospitalize(): void;\n\n /**\n * Soft reset the game.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will perform a reset even if you don’t have any augmentation installed.\n *\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\n */\n softReset(cbScript: string): void;\n\n /**\n * Go to a location.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Move the player to a specific location.\n *\n * @param locationName - Name of the location.\n * @returns True if the player was moved there, false otherwise.\n */\n goToLocation(locationName: string): boolean;\n\n /**\n * Get the current server.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * @returns Name of the current server.\n */\n getCurrentServer(): string;\n\n /**\n * Connect to a server.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * Run the connect HOSTNAME command in the terminal. Can only connect to neighbors.\n *\n * @returns True if the connect command was successful, false otherwise.\n */\n connect(hostname: string): boolean;\n\n /**\n * Run the hack command in the terminal.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * @returns Amount of money stolen by manual hacking.\n */\n manualHack(): Promise;\n\n /**\n * Run the backdoor command in the terminal.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * @returns Promise waiting for the installation to finish.\n */\n installBackdoor(): Promise;\n\n /**\n * Check if the player is focused.\n * @remarks\n * RAM cost: 0.1 GB * 16/4/1\n *\n *\n * @returns True if the player is focused.\n */\n isFocused(): boolean;\n\n /**\n * Set the players focus.\n * @remarks\n * RAM cost: 0.1 GB * 16/4/1\n *\n * @returns True if the focus was changed.\n */\n setFocus(focus: boolean): boolean;\n\n /**\n * Get a list of programs offered on the dark web.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function allows the player to get a list of programs available for purchase\n * on the dark web. Players MUST have purchased Tor to get the list of programs\n * available. If Tor has not been purchased yet, this function will return an\n * empty list.\n *\n * @example\n * ```js\n * const programs = ns.getDarkwebPrograms();\n * ns.tprint(`Available programs are: ${programs.split(", ")}`);\n * ```\n * @returns - a list of programs available for purchase on the dark web, or [] if Tor has not\n * been purchased\n */\n getDarkwebPrograms(): string[];\n\n /**\n * Check the price of an exploit on the dark web\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n *\n * This function allows you to check the price of a darkweb exploit/program.\n * You MUST have a TOR router in order to use this function. The price returned\n * by this function is the same price you would see with buy -l from the terminal.\n * Returns the cost of the program if it has not been purchased yet, 0 if it\n * has already been purchased, or -1 if Tor has not been purchased (and thus\n * the program/exploit is not available for purchase).\n *\n * If the program does not exist, an error is thrown.\n *\n *\n * @example\n * ```js\n * const programName = "BruteSSH.exe";\n * const cost = ns.getDarkwebProgramCost(programName);\n * if (cost > 0) ns.tprint(`${programName} costs ${ns.formatMoney(cost)}`);\n * ```\n * @param programName - Name of program to check the price of\n * @returns Price of the specified darkweb program\n * (if not yet purchased), 0 if it has already been purchased, or -1 if Tor has not been\n * purchased. Throws an error if the specified program/exploit does not exist\n */\n getDarkwebProgramCost(programName: string): number;\n\n /**\n * b1t_flum3 into a different BN.\n * @remarks\n * RAM cost: 16 GB * 16/4/1\n *\n * @param nextBN - BN number to jump to\n * @param callbackScript - Name of the script to launch in the next BN.\n */\n b1tflum3(nextBN: number, callbackScript?: string): void;\n\n /**\n * Destroy the w0r1d_d43m0n and move on to the next BN.\n * @remarks\n * RAM cost: 32 GB * 16/4/1\n *\n * You must have the special augment installed and the required hacking level\n * OR\n * Completed the final black op.\n *\n * @param nextBN - BN number to jump to\n * @param callbackScript - Name of the script to launch in the next BN.\n */\n destroyW0r1dD43m0n(nextBN: number, callbackScript?: string): void;\n\n /**\n * Get the current work the player is doing.\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n * @returns - An object representing the current work. Fields depend on the kind of work.\n */\n getCurrentWork(): any | null;\n}\n\n/**\n * Company position requirements and salary.\n * @public\n * @returns - An object representing the requirements and salary for a company/position combination.\n */\nexport interface CompanyPositionInfo {\n name: JobName;\n nextPosition: JobName | null;\n salary: number;\n requiredReputation: number;\n requiredSkills: Skills;\n}\n\n/**\n * Hacknet API\n * @remarks\n * Not all these functions are immediately available.\n * @public\n */\nexport interface Hacknet {\n /**\n * Get the number of hacknet nodes you own.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the number of Hacknet Nodes you own.\n *\n * @returns Number of hacknet nodes.\n */\n numNodes(): number;\n\n /**\n * Get the maximum number of hacknet nodes.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns Maximum number of hacknet nodes.\n */\n maxNumNodes(): number;\n\n /**\n * Purchase a new hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Purchases a new Hacknet Node. Returns a number with the index of the\n * Hacknet Node. This index is equivalent to the number at the end of\n * the Hacknet Node’s name (e.g The Hacknet Node named `hacknet-node-4`\n * will have an index of 4).\n *\n * If the player cannot afford to purchase a new Hacknet Node then the function will return -1.\n *\n * @returns The index of the Hacknet Node or if the player cannot afford to purchase a new Hacknet Node the function will return -1.\n */\n purchaseNode(): number;\n\n /**\n * Get the price of the next hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of purchasing a new Hacknet Node.\n *\n * @returns Cost of purchasing a new Hacknet Node.\n */\n getPurchaseNodeCost(): number;\n\n /**\n * Get the stats of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns an object containing a variety of stats about the specified Hacknet Node.\n *\n * Note that for Hacknet Nodes, production refers to the amount of money the node generates.\n * For Hacknet Servers (the upgraded version of Hacknet Nodes), production refers to the\n * amount of hashes the node generates.\n *\n * @param index - Index/Identifier of Hacknet Node\n * @returns Object containing a variety of stats about the specified Hacknet Node.\n */\n getNodeStats(index: number): NodeStats;\n\n /**\n * Upgrade the level of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Tries to upgrade the level of the specified Hacknet Node by n.\n *\n * Returns true if the Hacknet Node’s level is successfully upgraded by n\n * or if it is upgraded by some positive amount and the Node reaches its max level.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of levels to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns True if the Hacknet Node’s level is successfully upgraded, false otherwise.\n */\n upgradeLevel(index: number, n?: number): boolean;\n\n /**\n * Upgrade the RAM of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Tries to upgrade the specified Hacknet Node’s RAM n times.\n * Note that each upgrade doubles the Node’s RAM.\n * So this is equivalent to multiplying the Node’s RAM by 2 n.\n *\n * Returns true if the Hacknet Node’s RAM is successfully upgraded n times\n * or if it is upgraded some positive number of times and the Node reaches its max RAM.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns True if the Hacknet Node’s RAM is successfully upgraded, false otherwise.\n */\n upgradeRam(index: number, n?: number): boolean;\n\n /**\n * Upgrade the core of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Tries to purchase n cores for the specified Hacknet Node.\n *\n * Returns true if it successfully purchases n cores for the Hacknet Node\n * or if it purchases some positive amount and the Node reaches its max number of cores.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of cores to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns True if the Hacknet Node’s cores are successfully purchased, false otherwise.\n */\n upgradeCore(index: number, n?: number): boolean;\n\n /**\n * Upgrade the cache of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Tries to upgrade the specified Hacknet Server’s cache n times.\n *\n * Returns true if it successfully upgrades the Server’s cache n times,\n * or if it purchases some positive amount and the Server reaches its max cache level.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of cache levels to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns True if the Hacknet Node’s cache level is successfully upgraded, false otherwise.\n */\n upgradeCache(index: number, n?: number): boolean;\n\n /**\n * Calculate the cost of upgrading hacknet node levels.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of upgrading the specified Hacknet Node by n levels.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of levels to upgrade. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns Cost of upgrading the specified Hacknet Node.\n */\n getLevelUpgradeCost(index: number, n?: number): number;\n\n /**\n * Calculate the cost of upgrading hacknet node RAM.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of upgrading the RAM of the specified Hacknet Node n times.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node already has max RAM, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns Cost of upgrading the specified Hacknet Node\'s RAM.\n */\n getRamUpgradeCost(index: number, n?: number): number;\n\n /**\n * Calculate the cost of upgrading hacknet node cores.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of upgrading the number of cores of the specified Hacknet Node by n.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade cores. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns Cost of upgrading the specified Hacknet Node\'s number of cores.\n */\n getCoreUpgradeCost(index: number, n?: number): number;\n\n /**\n * Calculate the cost of upgrading hacknet node cache.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the cost of upgrading the cache level of the specified Hacknet Server by n.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade cache. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns Cost of upgrading the specified Hacknet Node\'s cache.\n */\n getCacheUpgradeCost(index: number, n?: number): number;\n\n /**\n * Get the total number of hashes stored.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the number of hashes you have.\n *\n * @returns Number of hashes you have.\n */\n numHashes(): number;\n\n /**\n * Get the maximum number of hashes you can store.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the number of hashes you can store.\n *\n * @returns Number of hashes you can store.\n */\n hashCapacity(): number;\n\n /**\n * Get the cost of a hash upgrade.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the number of hashes required for the specified upgrade. The name of the upgrade must be an exact match.\n *\n * @example\n * ```js\n * const upgradeName = "Sell for Corporation Funds";\n * if (ns.hacknet.numHashes() > ns.hacknet.hashCost(upgradeName)) {\n * ns.hacknet.spendHashes(upgradeName);\n * }\n * ```\n * @param upgName - Name of the upgrade of Hacknet Node.\n * @param count - Number of upgrades to buy at once. Defaults to 1 if not specified.\n * @returns Number of hashes required for the specified upgrade.\n */\n hashCost(upgName: string, count?: number): number;\n\n /**\n * Purchase a hash upgrade.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Spend the hashes generated by your Hacknet Servers on an upgrade.\n * Returns a boolean value - true if the upgrade is successfully purchased, and false otherwise.\n *\n * The name of the upgrade must be an exact match.\n * The `upgTarget` argument is used for upgrades such as `Reduce Minimum Security`, which applies to a specific server.\n * In this case, the `upgTarget` argument must be the hostname of the server.\n *\n * @example\n * ```js\n * // For upgrades where no target is required\n * ns.hacknet.spendHashes("Sell for Corporation Funds");\n * // For upgrades requiring a target\n * ns.hacknet.spendHashes("Increase Maximum Money", "foodnstuff");\n * ```\n * @param upgName - Name of the upgrade of Hacknet Node.\n * @param upgTarget - Object to which upgrade applies. Required for certain upgrades.\n * @param count - Number of upgrades to buy at once. Defaults to 1 if not specified.\n * For compatibility reasons, upgTarget must be specified, even if it is not used, in order to specify count.\n * @returns True if the upgrade is successfully purchased, and false otherwise.\n */\n spendHashes(upgName: string, upgTarget?: string, count?: number): boolean;\n\n /**\n * Get the list of hash upgrades\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the list of all available hash upgrades that can be used in the spendHashes function.\n * @example\n * ```js\n * const upgrades = ns.hacknet.getHashUpgrades(); // ["Sell for Money","Sell for Corporation Funds",...]\n * ```\n * @returns An array containing the available upgrades\n */\n getHashUpgrades(): string[];\n\n /**\n * Get the level of a hash upgrade.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * @returns Level of the upgrade.\n */\n getHashUpgradeLevel(upgName: string): number;\n\n /**\n * Get the multiplier to study.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * @returns Multiplier.\n */\n getStudyMult(): number;\n\n /**\n * Get the multiplier to training.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * @returns Multiplier.\n */\n getTrainingMult(): number;\n}\n\n/**\n * Bladeburner API\n * @remarks\n * You have to be employed in the Bladeburner division and be in BitNode-7\n * or have Source-File 7 in order to use this API.\n * @public\n */\nexport interface Bladeburner {\n /**\n * List all contracts.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all Bladeburner contracts.\n *\n * @returns Array of strings containing the names of all Bladeburner contracts.\n */\n getContractNames(): string[];\n\n /**\n * List all operations.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all Bladeburner operations.\n *\n * @returns Array of strings containing the names of all Bladeburner operations.\n */\n getOperationNames(): string[];\n\n /**\n * List all black ops.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all Bladeburner Black Ops.\n *\n * @returns Array of strings containing the names of all Bladeburner Black Ops.\n */\n getBlackOpNames(): string[];\n\n /**\n * List all general actions.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all general Bladeburner actions.\n *\n * @returns Array of strings containing the names of all general Bladeburner actions.\n */\n getGeneralActionNames(): string[];\n\n /**\n * List all skills.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all general Bladeburner skills.\n *\n * @returns Array of strings containing the names of all general Bladeburner skills.\n */\n getSkillNames(): string[];\n\n /**\n * Start an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempts to start the specified Bladeburner action.\n * Returns true if the action was started successfully, and false otherwise.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match\n * @returns True if the action was started successfully, and false otherwise.\n */\n startAction(type: string, name: string): boolean;\n\n /**\n * Stop current action.\n * @remarks\n * RAM cost: 2 GB\n *\n * Stops the current Bladeburner action.\n *\n */\n stopBladeburnerAction(): void;\n\n /**\n * Get current action.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns an object that represents the player’s current Bladeburner action.\n * If the player is not performing an action, the function will return an object with the ‘type’ property set to “Idle”.\n *\n * @returns Object that represents the player’s current Bladeburner action.\n */\n getCurrentAction(): BladeburnerCurAction;\n\n /**\n * Get the time to complete an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of milliseconds it takes to complete the specified action\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Number of milliseconds it takes to complete the specified action.\n */\n getActionTime(type: string, name: string): number;\n\n /**\n * Get the time elapsed on current action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of milliseconds already spent on the current action.\n *\n * @returns Number of milliseconds already spent on the current action.\n */\n getActionCurrentTime(): number;\n\n /**\n * Get estimate success chance of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the estimated success chance for the specified action.\n * This chance is returned as a decimal value, NOT a percentage\n * (e.g. if you have an estimated success chance of 80%, then this function will return 0.80, NOT 80).\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Estimated success chance for the specified action.\n */\n getActionEstimatedSuccessChance(type: string, name: string): [number, number];\n\n /**\n * Get the reputation gain of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the average Bladeburner reputation gain for successfully\n * completing the specified action.\n * Note that this value is an ‘average’ and the real reputation gain may vary slightly from this value.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param level - Optional action level at which to calculate the gain\n * @returns Average Bladeburner reputation gain for successfully completing the specified action.\n */\n getActionRepGain(type: string, name: string, level: number): number;\n\n /**\n * Get action count remaining.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the remaining count of the specified action.\n *\n * Note that this is meant to be used for Contracts and Operations.\n * This function will return ‘Infinity’ for actions such as Training and Field Analysis.\n * This function will return 1 for BlackOps not yet completed regardless of whether\n * the player has the required rank to attempt the mission or not.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Remaining count of the specified action.\n */\n getActionCountRemaining(type: string, name: string): number;\n\n /**\n * Get the maximum level of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the maximum level for this action.\n *\n * Returns -1 if an invalid action is specified.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Maximum level of the specified action.\n */\n getActionMaxLevel(type: string, name: string): number;\n\n /**\n * Get the current level of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the current level of this action.\n *\n * Returns -1 if an invalid action is specified.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Current level of the specified action.\n */\n getActionCurrentLevel(type: string, name: string): number;\n\n /**\n * Get whether an action is set to autolevel.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action is currently set to autolevel.\n *\n * Returns false if an invalid action is specified.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns True if the action is set to autolevel, and false otherwise.\n */\n getActionAutolevel(type: string, name: string): boolean;\n\n /**\n * Get action successes.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a number with how many successes you have with action.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns a number with how many successes you have with action.\n */\n getActionSuccesses(type: string, name: string): number;\n\n /**\n * Set an action autolevel.\n * @remarks\n * RAM cost: 4 GB\n *\n * Enable/disable autoleveling for the specified action.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param autoLevel - Whether or not to autolevel this action\n */\n setActionAutolevel(type: string, name: string, autoLevel: boolean): void;\n\n /**\n * Set the level of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Set the level for the specified action.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param level - Level to set this action to.\n */\n setActionLevel(type: string, name: string, level: number): void;\n\n /**\n * Get player bladeburner rank.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the player’s Bladeburner Rank.\n *\n * @returns Player’s Bladeburner Rank.\n */\n getRank(): number;\n\n /**\n * Get black op required rank.\n * @remarks\n * RAM cost: 2 GB\n *\n * Returns the rank required to complete this BlackOp.\n *\n * Returns -1 if an invalid action is specified.\n *\n * @param name - Name of BlackOp. Must be an exact match.\n * @returns Rank required to complete this BlackOp.\n */\n getBlackOpRank(name: string): number;\n\n /**\n * Get bladeburner skill points.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of Bladeburner skill points you have.\n *\n * @returns Number of Bladeburner skill points you have.\n */\n getSkillPoints(): number;\n\n /**\n * Get skill level.\n * @remarks\n * RAM cost: 4 GB\n *\n * This function returns your level in the specified skill.\n *\n * The function returns -1 if an invalid skill name is passed in.\n *\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\n * @returns Level in the specified skill.\n */\n getSkillLevel(name: string): number;\n\n /**\n * Get cost to upgrade skill.\n * @remarks\n * RAM cost: 4 GB\n *\n * This function returns the number of skill points needed to upgrade the specified skill the specified number of times.\n *\n * The function returns -1 if an invalid skill name is passed in.\n *\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\n * @param count - Number of times to upgrade the skill. Defaults to 1 if not specified.\n * @returns Number of skill points needed to upgrade the specified skill.\n */\n getSkillUpgradeCost(name: string, count?: number): number;\n\n /**\n * Upgrade skill.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempts to upgrade the specified Bladeburner skill the specified number of times.\n *\n * Returns true if the skill is successfully upgraded, and false otherwise.\n *\n * @param skillName - Name of skill to be upgraded. Case-sensitive and must be an exact match\n * @param count - Number of times to upgrade the skill. Defaults to 1 if not specified.\n * @returns true if the skill is successfully upgraded, and false otherwise.\n */\n upgradeSkill(name: string, count?: number): boolean;\n\n /**\n * Get team size.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of Bladeburner team members you have assigned to the specified action.\n *\n * Setting a team is only applicable for Operations and BlackOps. This function will return 0 for other action types.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Number of Bladeburner team members that were assigned to the specified action.\n */\n getTeamSize(type: string, name: string): number;\n\n /**\n * Set team size.\n * @remarks\n * RAM cost: 4 GB\n *\n * Set the team size for the specified Bladeburner action.\n *\n * Returns the team size that was set, or -1 if the function failed.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param size - Number of team members to set. Will be converted using Math.round().\n * @returns Number of Bladeburner team members you assigned to the specified action.\n */\n setTeamSize(type: string, name: string, size: number): number;\n\n /**\n * Get estimated population in city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the estimated number of Synthoids in the specified city,\n * or -1 if an invalid city was specified.\n *\n * @param city - Name of city. Case-sensitive\n * @returns Estimated number of Synthoids in the specified city.\n */\n getCityEstimatedPopulation(city: CityName | `${CityName}`): number;\n\n /**\n * Get number of communities in a city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the estimated number of Synthoid communities in the specified city,\n * or -1 if an invalid city was specified.\n *\n * @param city - Name of city. Case-sensitive\n * @returns Number of Synthoids communities in the specified city.\n */\n getCityCommunities(city: CityName | `${CityName}`): number;\n\n /**\n * Get chaos of a city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the chaos in the specified city,\n * or -1 if an invalid city was specified.\n *\n * @param city - Name of city. Case-sensitive\n * @returns Chaos in the specified city.\n */\n getCityChaos(city: CityName | `${CityName}`): number;\n\n /**\n * Get current city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the city that the player is currently in (for Bladeburner).\n *\n * @returns City that the player is currently in (for Bladeburner).\n */\n getCity(): CityName;\n\n /**\n * Travel to another city in bladeburner.\n * @remarks\n * RAM cost: 4 GB\n * Attempts to switch to the specified city (for Bladeburner only).\n *\n * Returns true if successful, and false otherwise\n *\n * @param city - Name of city. Case-sensitive\n * @returns true if successful, and false otherwise\n */\n switchCity(city: CityName | `${CityName}`): boolean;\n\n /**\n * Get bladeburner stamina.\n * @remarks\n * RAM cost: 4 GB\n * Returns an array with two elements:\n * * [Current stamina, Max stamina]\n * @example\n * ```js\n * function getStaminaPercentage() {\n * const [current, max] = ns.bladeburner.getStamina();\n * return current / max;\n * }\n * ```\n * @returns Array containing current stamina and max stamina.\n */\n getStamina(): [number, number];\n\n /**\n * Join the bladeburner faction.\n * @remarks\n * RAM cost: 4 GB\n * Attempts to join the Bladeburner faction.\n *\n * Returns true if you successfully join the Bladeburner faction, or if you are already a member.\n *\n * Returns false otherwise.\n *\n * @returns True if you successfully join the Bladeburner faction, or if you are already a member, false otherwise.\n */\n joinBladeburnerFaction(): boolean;\n\n /**\n * Join the bladeburner division.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempts to join the Bladeburner division.\n *\n * Returns true if you successfully join the Bladeburner division, or if you are already a member.\n *\n * Returns false otherwise.\n *\n * @returns True if you successfully join the Bladeburner division, or if you are already a member, false otherwise.\n */\n joinBladeburnerDivision(): boolean;\n\n /**\n * Get bladeburner bonus time.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the amount of accumulated “bonus time” (milliseconds) for the Bladeburner mechanic.\n *\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\n *\n * “Bonus time” makes the game progress faster, up to 5x the normal speed.\n * For example, if an action takes 30 seconds to complete but you’ve accumulated over\n * 30 seconds in bonus time, then the action will only take 6 seconds in real life to complete.\n *\n * @returns Amount of accumulated “bonus time” (milliseconds) for the Bladeburner mechanic.\n */\n getBonusTime(): number;\n\n /** Returns whether player is a member of bladeburner division. Does not require API access.\n * @remarks\n * RAM cost: 1 GB\n *\n * @returns whether player is a member of bladeburner division. */\n inBladeburner(): boolean;\n}\n\n/**\n * Coding Contract API\n * @public\n */\nexport interface CodingContract {\n /**\n * Attempts a coding contract, returning a reward string on success or empty string on failure.\n * @remarks\n * RAM cost: 10 GB\n *\n * Attempts to solve the Coding Contract with the provided solution.\n *\n * @example\n * ```js\n * const reward = codingcontract.attempt(yourSolution, filename, hostname);\n * if (reward) {\n * ns.tprint(`Contract solved successfully! Reward: ${reward}`)\n * } else ns.tprint("Failed to solve contract.")\n * ```\n *\n * @param answer - Attempted solution for the contract.\n * @param filename - Filename of the contract.\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not\n * provided.\n * @returns A reward description string on success, or an empty string on failure.\n */\n attempt(answer: string | number | any[], filename: string, host?: string): string;\n\n /**\n * Get the type of a coding contract.\n * @remarks\n * RAM cost: 5 GB\n *\n * Returns a name describing the type of problem posed by the Coding Contract.\n * (e.g. Find Largest Prime Factor, Total Ways to Sum, etc.)\n *\n * @param filename - Filename of the contract.\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns Name describing the type of problem posed by the Coding Contract.\n */\n getContractType(filename: string, host?: string): string;\n\n /**\n * Get the description.\n * @remarks\n * RAM cost: 5 GB\n *\n * Get the full text description for the problem posed by the Coding Contract.\n *\n * @param filename - Filename of the contract.\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns Contract’s text description.\n */\n getDescription(filename: string, host?: string): string;\n\n /**\n * Get the input data.\n * @remarks\n * RAM cost: 5 GB\n *\n * Get the data associated with the specific Coding Contract.\n * Note that this is not the same as the contract’s description.\n * This is just the data that the contract wants you to act on in order to solve the contract.\n *\n * @param filename - Filename of the contract.\n * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns The specified contract’s data, data type depends on contract type.\n */\n getData(filename: string, host?: string): CodingContractData;\n\n /**\n * Get the number of attempts remaining.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the number of tries remaining on the contract before it self-destructs.\n *\n * @param filename - Filename of the contract.\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns How many attempts are remaining for the contract.\n */\n getNumTriesRemaining(filename: string, host?: string): number;\n\n /**\n * Generate a dummy contract.\n * @remarks\n * RAM cost: 2 GB\n *\n * Generate a dummy contract on the home computer with no reward. Used to test various algorithms.\n *\n * @param type - Type of contract to generate\n */\n createDummyContract(type: string): void;\n\n /**\n * List all contract types.\n * @remarks\n * RAM cost: 2 GB\n */\n getContractTypes(): string[];\n}\n\n/**\n * Gang API\n * @remarks\n * If you are not in BitNode-2, then you must have Source-File 2 in order to use this API.\n * @public\n */\nexport interface Gang {\n /**\n * Create a gang.\n * @remarks\n * RAM cost: 1GB\n *\n * Create a gang with the specified faction.\n * @returns True if the gang was created, false otherwise.\n */\n createGang(faction: string): boolean;\n\n /**\n * Check if you\'re in a gang.\n * @remarks\n * RAM cost: 1GB\n * @returns True if you\'re in a gang, false otherwise.\n */\n inGang(): boolean;\n\n /**\n * List all gang members.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the names of all Gang members\n *\n * @returns Names of all Gang members.\n */\n getMemberNames(): string[];\n\n /**\n * Get information about your gang.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get general information about the gang.\n *\n * @returns Object containing general information about the gang.\n */\n getGangInformation(): GangGenInfo;\n\n /**\n * Get information about the other gangs.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get territory and power information about all gangs.\n *\n * @returns Object containing territory and power information about all gangs.\n */\n getOtherGangInformation(): GangOtherInfo;\n\n /**\n * Get information about a specific gang member.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get stat and equipment-related information about a Gang Member\n *\n * @param name - Name of member.\n * @returns Object containing stat and equipment-related information about a Gang Member.\n */\n getMemberInformation(name: string): GangMemberInfo;\n\n /**\n * Check if you can recruit a new gang member.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns a boolean indicating whether a member can currently be recruited.\n *\n * Once you have successfully created a gang by using the function\n * {@link Gang.createGang | createGang}, you can immediately recruit a small\n * number of members to your gang. After you have recruited the founding\n * members, to recruit another member you must increase your respect. The\n * more members you want to recruit, the more respect you require. If your\n * gang has the maximum number of members, then this function would return\n * false.\n *\n * @returns True if a member can currently be recruited, false otherwise.\n */\n canRecruitMember(): boolean;\n\n /**\n * Recruit a new gang member.\n * @remarks\n * RAM cost: 2 GB\n *\n * Attempt to recruit a new gang member.\n *\n * Possible reasons for failure:\n * * Cannot currently recruit a new member\n * * There already exists a member with the specified name\n *\n * @param name - Name of member to recruit.\n * @returns True if the member was successfully recruited, false otherwise.\n */\n recruitMember(name: string): boolean;\n\n /**\n * List member task names.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the name of all valid tasks that Gang members can be assigned to.\n *\n * @returns All valid tasks that Gang members can be assigned to.\n */\n getTaskNames(): string[];\n\n /**\n * Set gang member to task.\n * @remarks\n * RAM cost: 2 GB\n *\n * Attempts to assign the specified Gang Member to the specified task.\n * If an invalid task is specified, the Gang member will be set to idle (“Unassigned”).\n *\n * @param memberName - Name of Gang member to assign.\n * @param taskName - Task to assign.\n * @returns True if the Gang Member was successfully assigned to the task, false otherwise.\n */\n setMemberTask(memberName: string, taskName: string): boolean;\n\n /**\n * Get stats of a task.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the stats of a gang task stats. This is typically used to evaluate which action should be executed next.\n *\n * @param name - Name of the task.\n * @returns Detailed stats of a task.\n */\n getTaskStats(name: string): GangTaskStats;\n\n /**\n * List equipment names.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the name of all possible equipment/upgrades you can purchase for your Gang Members.\n * This includes Augmentations.\n *\n * @returns Names of all Equipments/Augmentations.\n */\n getEquipmentNames(): string[];\n\n /**\n * Get cost of equipment.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the amount of money it takes to purchase a piece of Equipment or an Augmentation.\n * If an invalid Equipment/Augmentation is specified, this function will return Infinity.\n *\n * @param equipName - Name of equipment.\n * @returns Cost to purchase the specified Equipment/Augmentation (number). Infinity for invalid arguments\n */\n getEquipmentCost(equipName: string): number;\n\n /**\n * Get type of an equipment.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the specified equipment type.\n *\n * @param equipName - Name of equipment.\n * @returns Type of the equipment.\n */\n getEquipmentType(equipName: string): string;\n\n /**\n * Get stats of an equipment.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the specified equipment stats.\n *\n * @param equipName - Name of equipment.\n * @returns A dictionary containing the stats of the equipment.\n */\n getEquipmentStats(equipName: string): EquipmentStats;\n\n /**\n * Purchase an equipment for a gang member.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempt to purchase the specified Equipment/Augmentation for the specified Gang member.\n *\n * @param memberName - Name of Gang member to purchase the equipment for.\n * @param equipName - Name of Equipment/Augmentation to purchase.\n * @returns True if the equipment was successfully purchased. False otherwise\n */\n purchaseEquipment(memberName: string, equipName: string): boolean;\n\n /**\n * Ascend a gang member.\n * @remarks\n * RAM cost: 4 GB\n *\n * Ascend the specified Gang Member.\n *\n * @param memberName - Name of member to ascend.\n * @returns Object with info about the ascension results, or undefined if ascension did not occur.\n */\n ascendMember(memberName: string): GangMemberAscension | undefined;\n\n /**\n * Get the result of an ascension without ascending.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get a {@link GangMemberAscension} result for ascending a gang member without performing the ascension.\n *\n * @param memberName - Name of member.\n * @returns Object with info about the ascension results, or undefined if ascension is not possible.\n */\n getAscensionResult(memberName: string): GangMemberAscension | undefined;\n\n /**\n * Enable/Disable territory warfare.\n * @remarks\n * RAM cost: 2 GB\n *\n * Set whether or not the gang should engage in territory warfare\n *\n * @param engage - Whether or not to engage in territory warfare.\n */\n setTerritoryWarfare(engage: boolean): void;\n\n /**\n * Get chance to win clash with other gang.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the chance you have to win a clash with the specified gang. The chance is returned in decimal form, not percentage\n *\n * @param gangName - Target gang\n * @returns Chance you have to win a clash with the specified gang.\n */\n getChanceToWinClash(gangName: string): number;\n\n /**\n * Get bonus time.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the amount of accumulated “bonus time” (milliseconds) for the Gang mechanic.\n *\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\n *\n * “Bonus time” makes the game progress faster, up to 25x the normal speed.\n *\n * @returns Bonus time for the Gang mechanic in milliseconds.\n */\n getBonusTime(): number;\n}\n\n/**\n * Sleeve API\n * @remarks\n * If you are not in BitNode-10, then you must have Source-File 10 in order to use this API.\n * @public\n */\nexport interface Sleeve {\n /**\n * Get the number of sleeves you own.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return the number of duplicate sleeves the player has.\n *\n * @returns Number of duplicate sleeves the player has.\n */\n getNumSleeves(): number;\n\n /**\n * Get information about a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a person object for this sleeve\n *\n * storedCycles is the amount of Bonus Time in cycles, each translates to 200ms\n *\n * @param sleeveNumber - Index of the sleeve to retrieve information.\n * @returns Object containing information about this sleeve.\n */\n getSleeve(sleeveNumber: number): SleevePerson;\n\n /**\n * Get task of a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return the current task that the sleeve is performing, or null if the sleeve is idle. All tasks have a "type"\n * property, and other available properties depend on the type of task.\n *\n * @param sleeveNumber - Index of the sleeve to retrieve task from.\n * @returns Object containing information for the current task that the sleeve is performing.\n */\n getTask(sleeveNumber: number): SleeveTask | null;\n\n /**\n * Set a sleeve to idle.\n * @remarks\n * RAM cost: 4 GB\n *\n * @param sleeveNumber - Index of the sleeve to idle.\n */\n setToIdle(sleeveNumber: number): void;\n\n /**\n * Set a sleeve to shock recovery.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * @param sleeveNumber - Index of the sleeve to start recovery.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToShockRecovery(sleeveNumber: number): boolean;\n\n /**\n * Set a sleeve to synchronize.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * @param sleeveNumber - Index of the sleeve to start synchronizing.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToSynchronize(sleeveNumber: number): boolean;\n\n /**\n * Set a sleeve to commit crime.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully (false if an invalid action is specified).\n *\n * @example\n * ```ts\n * // Assigns the first sleeve to Homicide.\n * ns.sleeve.setToCommitCrime(0, "Homicide");\n *\n * // Assigns the second sleeve to Grand Theft Auto, using enum\n * const crimes = ns.enums.CrimeType;\n * ns.sleeve.setToCommitCrime(1, crimes.grandTheftAuto)\n * ```\n *\n * @param sleeveNumber - Index of the sleeve to start committing crime. Sleeves are numbered starting from 0.\n * @param name - Name of the crime.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToCommitCrime(sleeveNumber: number, crimeType: CrimeType | `${CrimeType}`): boolean;\n\n /**\n * Set a sleeve to work for a faction.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started working for a faction.\n *\n * @param sleeveNumber - Index of the sleeve to work for the faction.\n * @param factionName - Name of the faction to work for.\n * @param factionWorkType - Name of the action to perform for this faction.\n * @returns True if the sleeve started working for this faction, false otherwise. Can also throw on errors.\n */\n setToFactionWork(\n sleeveNumber: number,\n factionName: string,\n factionWorkType: FactionWorkType | `${FactionWorkType}`,\n ): boolean | undefined;\n\n /**\n * Set a sleeve to work for a company.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started working for a company.\n *\n * @param sleeveNumber - Index of the sleeve to work for the company.\n * @param companyName - Name of the company to work for.\n * @returns True if the sleeve started working for this company, false otherwise.\n */\n setToCompanyWork(sleeveNumber: number, companyName: CompanyName | `${CompanyName}`): boolean;\n\n /**\n * Set a sleeve to take a class at a university.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * @param sleeveNumber - Index of the sleeve to start taking class.\n * @param university - Name of the university to attend.\n * @param className - Name of the class to follow.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToUniversityCourse(sleeveNumber: number, university: string, className: string): boolean;\n\n /**\n * Set a sleeve to workout at the gym.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started working out.\n *\n * @param sleeveNumber - Index of the sleeve to workout at the gym.\n * @param gymName - Name of the gym.\n * @param stat - Name of the stat to train.\n * @returns True if the sleeve started working out, false otherwise.\n */\n setToGymWorkout(sleeveNumber: number, gymName: string, stat: string): boolean;\n\n /**\n * Make a sleeve travel to another city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve reached destination.\n *\n * @param sleeveNumber - Index of the sleeve to travel.\n * @param city - Name of the destination city.\n * @returns True if the sleeve reached destination, false otherwise.\n */\n travel(sleeveNumber: number, city: CityName | `${CityName}`): boolean;\n\n /**\n * Get augmentations installed on a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a list of augmentation names that this sleeve has installed.\n *\n * @param sleeveNumber - Index of the sleeve to retrieve augmentations from.\n * @returns List of augmentation names that this sleeve has installed.\n */\n getSleeveAugmentations(sleeveNumber: number): string[];\n\n /**\n * Get price of an augmentation.\n * @remarks\n * RAM cost: 4 GB\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Price of the augmentation.\n */\n getSleeveAugmentationPrice(augName: string): number;\n\n /**\n * Get reputation requirement of an augmentation.\n * @remarks\n * RAM cost: 4 GB\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Reputation requirement of the augmentation.\n */\n getSleeveAugmentationRepReq(augName: string): number;\n\n /**\n * List purchasable augs for a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a list of augmentations that the player can buy for this sleeve.\n *\n * @param sleeveNumber - Index of the sleeve to retrieve purchasable augmentations from.\n * @returns List of augmentations that the player can buy for this sleeve.\n */\n getSleevePurchasableAugs(sleeveNumber: number): AugmentPair[];\n\n /**\n * Purchase an aug for a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return true if the aug was purchased and installed on the sleeve.\n *\n * @param sleeveNumber - Index of the sleeve to buy an aug for.\n * @param augName - Name of the aug to buy. Must be an exact match.\n * @returns True if the aug was purchased and installed on the sleeve, false otherwise.\n */\n purchaseSleeveAug(sleeveNumber: number, augName: string): boolean;\n\n /**\n * Set a sleeve to perform Bladeburner actions.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started a Bladeburner action.\n *\n * @param sleeveNumber - Index of the sleeve to perform a Bladeburner action.\n * @param action - Name of the action to be performed.\n * @param contract - Name of the contract if applicable.\n * @returns True if the sleeve started the given Bladeburner action, false otherwise.\n */\n setToBladeburnerAction(sleeveNumber: number, action: string, contract?: string): boolean;\n}\n\n/**\n * Grafting API\n * @remarks\n * This API requires Source-File 10 to use.\n * @public\n */\nexport interface Grafting {\n /**\n * Retrieve the grafting cost of an aug.\n * @remarks\n * RAM cost: 3.75 GB\n *\n * @param augName - Name of the aug to check the price of. Must be an exact match.\n * @returns The cost required to graft the named augmentation.\n * @throws Will error if an invalid Augmentation name is provided.\n */\n getAugmentationGraftPrice(augName: string): number;\n\n /**\n * Retrieves the time required to graft an aug.\n * @remarks\n * RAM cost: 3.75 GB\n *\n * @param augName - Name of the aug to check the grafting time of. Must be an exact match.\n * @returns The time required, in millis, to graft the named augmentation.\n * @throws Will error if an invalid Augmentation name is provided.\n */\n getAugmentationGraftTime(augName: string): number;\n\n /**\n * Retrieves a list of Augmentations that can be grafted.\n * @remarks\n * RAM cost: 5 GB\n *\n * Note that this function returns a list of currently graftable Augmentations,\n * based off of the Augmentations that you already own.\n *\n * @returns An array of graftable Augmentations.\n */\n getGraftableAugmentations(): string[];\n\n /**\n * Begins grafting the named aug. You must be in New Tokyo to use this.\n * @remarks\n * RAM cost: 7.5 GB\n *\n * @param augName - The name of the aug to begin grafting. Must be an exact match.\n * @param focus - Acquire player focus on this Augmentation grafting. Optional. Defaults to true.\n * @returns True if the aug successfully began grafting, false otherwise (e.g. not enough money, or\n * invalid Augmentation name provided).\n * @throws Will error if called while you are not in New Tokyo.\n */\n graftAugmentation(augName: string, focus?: boolean): boolean;\n}\n\n/**\n * Skills formulas\n * @public\n */\ninterface SkillsFormulas {\n /**\n * Calculate skill level.\n * @param exp - experience for that skill\n * @param skillMult - Multiplier for that skill, defaults to 1.\n * @returns The calculated skill level.\n */\n calculateSkill(exp: number, skillMult?: number): number;\n /**\n * Calculate exp for skill level.\n * @param skill - target skill level\n * @param skillMult - Multiplier for that skill, defaults to 1.\n * @returns The calculated exp required.\n */\n calculateExp(skill: number, skillMult?: number): number;\n}\n\n/** @public */\ninterface WorkStats {\n money: number;\n reputation: number;\n hackExp: number;\n strExp: number;\n defExp: number;\n dexExp: number;\n agiExp: number;\n chaExp: number;\n intExp: number;\n}\n\n/**\n * Work formulas\n * @public\n */\ninterface WorkFormulas {\n crimeSuccessChance(person: Person, crimeType: CrimeType | `${CrimeType}`): number;\n /** @returns The WorkStats gained when completing one instance of the specified crime. */\n crimeGains(person: Person, crimeType: CrimeType | `${CrimeType}`): WorkStats;\n /** @returns The WorkStats applied every game cycle (200ms) by taking the specified gym class. */\n gymGains(person: Person, gymType: GymType | `${GymType}`, locationName: string): WorkStats;\n /** @returns The WorkStats applied every game cycle (200ms) by taking the specified university class. */\n universityGains(\n person: Person,\n classType: UniversityClassType | `${UniversityClassType}`,\n locationName: string,\n ): WorkStats;\n /** @returns The WorkStats applied every game cycle (200ms) by performing the specified faction work. */\n factionGains(person: Person, workType: FactionWorkType | `${FactionWorkType}`, favor: number): WorkStats;\n /** @returns The WorkStats applied every game cycle (200ms) by performing the specified company work. */\n companyGains(\n person: Person,\n companyName: CompanyName | `${CompanyName}`,\n workType: JobName | `${JobName}`,\n favor: number,\n ): WorkStats;\n}\n\n/**\n * Reputation formulas\n * @public\n */\ninterface ReputationFormulas {\n /**\n * Calculate the total required amount of faction reputation to reach a target favor.\n * @param favor - target faction favor.\n * @returns The calculated faction reputation required.\n */\n calculateFavorToRep(favor: number): number;\n /**\n * Calculate the resulting faction favor of a total amount of reputation.\n * (Faction favor is gained whenever you install an Augmentation.)\n * @param rep - amount of reputation.\n * @returns The calculated faction favor.\n */\n calculateRepToFavor(rep: number): number;\n\n /**\n * Calculate how much rep would be gained.\n * @param amount - Amount of money donated\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n */\n repFromDonation(amount: number, player: Person): number;\n}\n\n/**\n * Hacking formulas\n * @public\n */\ninterface HackingFormulas {\n /**\n * Calculate hack chance.\n * (Ex: 0.25 would indicate a 25% chance of success.)\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack chance.\n */\n hackChance(server: Server, player: Person): number;\n /**\n * Calculate hack exp for one thread.\n * @remarks\n * Multiply by thread to get total exp\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack exp.\n */\n hackExp(server: Server, player: Person): number;\n /**\n * Calculate hack percent for one thread.\n * (Ex: 0.25 would steal 25% of the server\'s current value.)\n * @remarks\n * Multiply by thread to get total percent hacked.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack percent.\n */\n hackPercent(server: Server, player: Person): number;\n /**\n * Calculate the percent a server would grow to.\n * Not exact due to limitations of mathematics.\n * (Ex: 3.0 would would grow the server to 300% of its current value.)\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param threads - Amount of thread.\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @param cores - Number of cores on the computer that will execute grow.\n * @returns The calculated grow percent.\n */\n growPercent(server: Server, threads: number, player: Person, cores?: number): number;\n /**\n * Calculate how many threads it will take to grow server to targetMoney. Starting money is server.moneyAvailable.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @param targetMoney - Desired final money, capped to server\'s moneyMax\n * @param cores - Number of cores on the computer that will execute grow.\n * @returns The calculated grow threads as an integer, rounded up.\n */\n growThreads(server: Server, player: Person, targetMoney: number, cores?: number): number;\n /**\n * Calculate hack time.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack time.\n */\n hackTime(server: Server, player: Person): number;\n /**\n * Calculate grow time.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated grow time.\n */\n growTime(server: Server, player: Person): number;\n /**\n * Calculate weaken time.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated weaken time.\n */\n weakenTime(server: Server, player: Person): number;\n}\n\n/**\n * Hacknet Node formulas\n * @public\n */\ninterface HacknetNodesFormulas {\n /**\n * Calculate money gain rate.\n * @param level - level of the node.\n * @param ram - ram of the node.\n * @param cores - cores of the node.\n * @param mult - player production mult (default to 1)\n * @returns The calculated money gain rate.\n */\n moneyGainRate(level: number, ram: number, cores: number, mult?: number): number;\n /**\n * Calculate cost of upgrading hacknet node level.\n * @param startingLevel - starting level\n * @param extraLevels - amount of level to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet node ram.\n * @param startingRam - starting ram\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet node cores.\n * @param startingCore - starting cores\n * @param extraCores - amount of cores to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\n /**\n * Calculate the cost of a hacknet node.\n * @param n - number of the hacknet node\n * @param mult - player cost reduction (defaults to 1)\n * @returns The calculated cost.\n */\n hacknetNodeCost(n: number, mult: number): number;\n /**\n * All constants used by the game.\n * @returns An object with all hacknet node constants used by the game.\n */\n constants(): HacknetNodeConstants;\n}\n\n/**\n * Hacknet Server formulas\n * @public\n */\ninterface HacknetServersFormulas {\n /**\n * Calculate hash gain rate.\n * @param level - level of the server.\n * @param ramUsed - ramUsed of the server.\n * @param maxRam - maxRam of the server.\n * @param cores - cores of the server.\n * @param mult - player production mult (default to 1)\n * @returns The calculated hash gain rate.\n */\n hashGainRate(level: number, ramUsed: number, maxRam: number, cores: number, mult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server level.\n * @param startingLevel - starting level\n * @param extraLevels - amount of level to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server ram.\n * @param startingRam - starting ram\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server cores.\n * @param startingCore - starting cores\n * @param extraCores - amount of cores to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server cache.\n * @param startingCache - starting cache level\n * @param extraCache - amount of levels of cache to purchase (defaults to 1)\n * @returns The calculated cost.\n */\n cacheUpgradeCost(startingCache: number, extraCache?: number): number;\n /**\n * Calculate hash cost of an upgrade.\n * @param upgName - name of the upgrade\n * @param level - level of the upgrade\n * @returns The calculated hash cost.\n */\n hashUpgradeCost(upgName: number, level: number): number;\n /**\n * Calculate the cost of a hacknet server.\n * @param n - number of the hacknet server\n * @param mult - player cost reduction (defaults to 1)\n * @returns The calculated cost.\n */\n hacknetServerCost(n: number, mult?: number): number;\n /**\n * All constants used by the game.\n * @returns An object with all hacknet server constants used by the game.\n */\n constants(): HacknetServerConstants;\n}\n\n/**\n * Gang formulas\n * @public\n */\ninterface GangFormulas {\n /**\n * Calculate the wanted penalty.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @returns The calculated wanted penalty.\n */\n wantedPenalty(gang: GangGenInfo): number;\n /**\n * Calculate respect gain per tick.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @param member - Gang info from {@link Gang.getMemberInformation | getMemberInformation}\n * @param task - Gang info from {@link Gang.getTaskStats | getTaskStats}\n * @returns The calculated respect gain.\n */\n respectGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\n /**\n * Calculate wanted gain per tick.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\n * @returns The calculated wanted gain.\n */\n wantedLevelGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\n /**\n * Calculate money gain per tick.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\n * @returns The calculated money gain.\n */\n moneyGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\n\n /**\n * Calculate ascension point gain.\n * @param exp - Experience point before ascension.\n * @returns The calculated ascension point gain.\n */\n ascensionPointsGain(exp: number): number;\n\n /**\n * Calculate ascension mult.\n * @param points - Amount of ascension points.\n * @returns The calculated ascension mult.\n */\n ascensionMultiplier(points: number): number;\n}\n\n/**\n * Formulas API\n * @remarks\n * You need Formulas.exe on your home computer to use this API.\n * @public\n */\nexport interface Formulas {\n mockServer(): Server;\n mockPlayer(): Player;\n mockPerson(): Person;\n /** Reputation formulas */\n reputation: ReputationFormulas;\n /** Skills formulas */\n skills: SkillsFormulas;\n /** Hacking formulas */\n hacking: HackingFormulas;\n /** Hacknet Nodes formulas */\n hacknetNodes: HacknetNodesFormulas;\n /** Hacknet Servers formulas */\n hacknetServers: HacknetServersFormulas;\n /** Gang formulas */\n gang: GangFormulas;\n /** Work formulas */\n work: WorkFormulas;\n}\n\n/** @public */\ninterface Fragment {\n id: number;\n shape: boolean[][];\n type: number;\n power: number;\n limit: number;\n}\n\n/** @public */\ninterface ActiveFragment {\n id: number;\n highestCharge: number;\n numCharge: number;\n rotation: number;\n x: number;\n y: number;\n}\n\n/**\n * Stanek\'s Gift API.\n * @public\n */\ninterface Stanek {\n /**\n * Stanek\'s Gift width.\n * @remarks\n * RAM cost: 0.4 GB\n * @returns The width of the gift.\n */\n giftWidth(): number;\n /**\n * Stanek\'s Gift height.\n * @remarks\n * RAM cost: 0.4 GB\n * @returns The height of the gift.\n */\n giftHeight(): number;\n\n /**\n * Charge a fragment, increasing its power.\n * @remarks\n * RAM cost: 0.4 GB\n * @param rootX - rootX Root X against which to align the top left of the fragment.\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\n * @returns Promise that lasts until the charge action is over.\n */\n chargeFragment(rootX: number, rootY: number): Promise;\n\n /**\n * List possible fragments.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns List of possible fragments.\n */\n fragmentDefinitions(): Fragment[];\n\n /**\n * List of fragments in Stanek\'s Gift.\n * @remarks\n * RAM cost: 5 GB\n *\n * @returns List of active fragments placed on Stanek\'s Gift.\n */\n activeFragments(): ActiveFragment[];\n\n /**\n * Clear the board of all fragments.\n * @remarks\n * RAM cost: 0 GB\n */\n clearGift(): void;\n\n /**\n * Check if fragment can be placed at specified location.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * @param rootX - rootX Root X against which to align the top left of the fragment.\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\n * @param rotation - rotation A number from 0 to 3, the mount of 90 degree turn to take.\n * @param fragmentId - fragmentId ID of the fragment to place.\n * @returns true if the fragment can be placed at that position. false otherwise.\n */\n canPlaceFragment(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\n /**\n * Place fragment on Stanek\'s Gift.\n * @remarks\n * RAM cost: 5 GB\n *\n * @param rootX - X against which to align the top left of the fragment.\n * @param rootY - Y against which to align the top left of the fragment.\n * @param rotation - A number from 0 to 3, the mount of 90 degree turn to take.\n * @param fragmentId - ID of the fragment to place.\n * @returns true if the fragment can be placed at that position. false otherwise.\n */\n placeFragment(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\n /**\n * Get placed fragment at location.\n * @remarks\n * RAM cost: 5 GB\n *\n * @param rootX - X against which to align the top left of the fragment.\n * @param rootY - Y against which to align the top left of the fragment.\n * @returns The fragment at [rootX, rootY], if any.\n */\n getFragment(rootX: number, rootY: number): ActiveFragment | undefined;\n\n /**\n * Remove fragment at location.\n * @remarks\n * RAM cost: 0.15 GB\n *\n * @param rootX - X against which to align the top left of the fragment.\n * @param rootY - Y against which to align the top left of the fragment.\n * @returns The fragment at [rootX, rootY], if any.\n */\n removeFragment(rootX: number, rootY: number): boolean;\n\n /**\n * Accept Stanek\'s Gift by joining the Church of the Machine God\n * @remarks\n * RAM cost: 2 GB\n *\n * @returns true if the player is a member of the church and has the gift installed,\n * false otherwise.\n */\n acceptGift(): boolean;\n}\n\n/** @public */\ninterface InfiltrationReward {\n tradeRep: number;\n sellCash: number;\n SoARep: number;\n}\n\n/** @public */\ninterface ILocation {\n city: CityName;\n name: LocationName;\n}\n\n/** @public */\ninterface InfiltrationLocation {\n location: ILocation;\n reward: InfiltrationReward;\n difficulty: number;\n}\n\n/**\n * Infiltration API.\n * @public\n */\ninterface Infiltration {\n /**\n * Get all locations that can be infiltrated.\n * @remarks\n * RAM cost: 5 GB\n *\n * @returns all locations that can be infiltrated.\n */\n getPossibleLocations(): ILocation[];\n /**\n * Get all infiltrations with difficulty, location and rewards.\n * @remarks\n * RAM cost: 15 GB\n *\n * @returns Infiltration data for given location.\n */\n getInfiltration(location: string): InfiltrationLocation;\n}\n\n/**\n * User Interface API.\n * @public\n */\ninterface UserInterface {\n /**\n * Get the current window size\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns An array of 2 value containing the window width and height.\n */\n windowSize(): [number, number];\n\n /**\n * Get the current theme\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns An object containing the theme\'s colors\n */\n getTheme(): UserInterfaceTheme;\n\n /**\n * Sets the current theme\n * @remarks\n * RAM cost: 0 GB\n * @example\n * Usage example (NS2)\n * ```ts\n * const theme = ns.ui.getTheme();\n * theme.primary = \'#ff5500\';\n * ns.ui.setTheme(theme);\n * ```\n */\n setTheme(newTheme: UserInterfaceTheme): void;\n\n /**\n * Resets the player\'s theme to the default values\n * @remarks\n * RAM cost: 0 GB\n */\n resetTheme(): void;\n\n /**\n * Get the current styles\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns An object containing the player\'s styles\n */\n getStyles(): IStyleSettings;\n\n /**\n * Sets the current styles\n * @remarks\n * RAM cost: 0 GB\n * @example\n * Usage example (NS2)\n * ```ts\n * const styles = ns.ui.getStyles();\n * styles.fontFamily = \'Comic Sans Ms\';\n * ns.ui.setStyles(styles);\n * ```\n */\n setStyles(newStyles: IStyleSettings): void;\n\n /**\n * Resets the player\'s styles to the default values\n * @remarks\n * RAM cost: 0 GB\n */\n resetStyles(): void;\n\n /**\n * Gets the current game information (version, commit, ...)\n * @remarks\n * RAM cost: 0 GB\n */\n getGameInfo(): GameInfo;\n\n /**\n * Clear the Terminal window, as if the player ran `clear` in the terminal\n * @remarks\n * RAM cost: 0.2 GB\n */\n clearTerminal(): void;\n}\n\n/**\n * Collection of all functions passed to scripts\n * @public\n * @remarks\n * Basic usage example:\n * ```js\n * export async function main(ns) {\n * // Basic ns functions can be accessed on the ns object\n * ns.getHostname();\n * // Some related functions are gathered under a sub-property of the ns object\n * ns.stock.getPrice();\n * // Most functions that return a promise need to be awaited.\n * await ns.hack(\'n00dles\');\n * }\n * ```\n */\nexport interface NS {\n /**\n * Namespace for hacknet functions. Some of this API contains spoilers.\n * @remarks RAM cost: 4 GB.\n */\n readonly hacknet: Hacknet;\n\n /**\n * Namespace for bladeburner functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly bladeburner: Bladeburner;\n\n /**\n * Namespace for codingcontract functions.\n * @remarks RAM cost: 0 GB\n */\n readonly codingcontract: CodingContract;\n\n /**\n * Namespace for gang functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly gang: Gang;\n\n /**\n * Namespace for sleeve functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly sleeve: Sleeve;\n\n /**\n * Namespace for stock functions.\n * @remarks RAM cost: 0 GB\n */\n readonly stock: TIX;\n\n /**\n * Namespace for formulas functions.\n * @remarks RAM cost: 0 GB\n */\n readonly formulas: Formulas;\n\n /**\n * Namespace for stanek functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly stanek: Stanek;\n\n /**\n * Namespace for infiltration functions.\n * @remarks RAM cost: 0 GB\n */\n readonly infiltration: Infiltration;\n\n /**\n * Namespace for corporation functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly corporation: Corporation;\n\n /**\n * Namespace for user interface functions.\n * @remarks RAM cost: 0 GB\n */\n readonly ui: UserInterface;\n\n /**\n * Namespace for singularity functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly singularity: Singularity;\n\n /**\n * Namespace for grafting functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly grafting: Grafting;\n\n /**\n * Arguments passed into the script.\n *\n * @remarks\n * RAM cost: 0 GB\n *\n * Arguments passed into a script can be accessed as a normal array by using the `[]` operator\n * (`args[0]`, `args[1]`, etc...).\n * Arguments can be string, number, or boolean.\n * Use `args.length` to get the number of arguments that were passed into a script.\n *\n * @example\n * `run example.js 7 text true`\n *\n * ```js\n * // example.js\n * export async function main(ns) {\n * ns.tprint(ns.args.length) // 3\n * ns.tprint(ns.args[0]); // 7 (number)\n * ns.tprint(ns.args[1]); // "text" (string)\n * ns.tprint(ns.args[2]); // true (boolean)\n * ns.tprint(ns.args[3]); // undefined, because only 3 arguments were provided\n * }\n * ```\n */\n readonly args: (string | number | boolean)[];\n\n /** The current script\'s PID */\n readonly pid: number;\n\n /**\n * Steal a server\'s money.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Function that is used to try and hack servers to steal money and gain hacking experience.\n * The runtime for this command depends on your hacking level and the target server’s\n * security level when this function is called. In order to hack a server you must first gain root access to that server\n * and also have the required hacking level.\n *\n * A script can hack a server from anywhere. It does not need to be running on the same\n * server to hack that server. For example, you can create a script that hacks the `foodnstuff`\n * server and run that script on any server in the game.\n *\n * A successful `hack()` on a server will raise that server’s security level by 0.002.\n *\n * @example\n * ```js\n * let earnedMoney = await ns.hack("foodnstuff");\n * ```\n * @param host - Hostname of the target server to hack.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns A promise that resolves to the amount of money stolen (which is zero if the hack is unsuccessful).\n */\n hack(host: string, opts?: BasicHGWOptions): Promise;\n\n /**\n * Spoof money in a server\'s bank account, increasing the amount available.\n * @remarks\n * RAM cost: 0.15 GB\n *\n * Use your hacking skills to increase the amount of money available on a server.\n *\n * Once the grow is complete, $1 is added to the server\'s available money for every script thread. This additive\n * growth allows for rescuing a server even after it is emptied.\n *\n * After this addition, the thread count is also used to determine a multiplier, which the server\'s money is then\n * multiplied by.\n *\n * The multiplier scales exponentially with thread count, and its base depends on the server\'s security\n * level and in inherent "growth" statistic that varies between different servers.\n *\n * {@link NS.getServerGrowth | getServerGrowth} can be used to check the inherent growth statistic of a server.\n *\n * {@link NS.growthAnalyze | growthAnalyze} can be used to determine the number of threads needed for a specified\n * multiplicative portion of server growth.\n *\n * To determine the effect of a single grow, obtain access to the Formulas API and use\n * {@link HackingFormulas.growPercent | formulas.hacking.growPercent}, or invert {@link NS.growthAnalyze | growthAnalyze}.\n *\n * Like {@link NS.hack | hack}, `grow` can be called on any hackable server, regardless of where the script is\n * running. Hackable servers are any servers not owned by the player.\n *\n * The grow() command requires root access to the target server, but there is no required hacking\n * level to run the command. It also raises the security level of the target server based on the number of threads.\n * The security increase can be determined using {@link NS.growthAnalyzeSecurity | growthAnalyzeSecurity}.\n *\n * @example\n * ```js\n * let currentMoney = ns.getServerMoneyAvailable("n00dles");\n * currentMoney *= await ns.grow("foodnstuff");\n * ```\n * @param host - Hostname of the target server to grow.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns The total effective multiplier that was applied to the server\'s money (after both additive and multiplicative growth).\n */\n grow(host: string, opts?: BasicHGWOptions): Promise;\n\n /**\n * Reduce a server\'s security level.\n * @remarks\n * RAM cost: 0.15 GB\n *\n * Use your hacking skills to attack a server’s security, lowering the server’s security level.\n * The runtime for this function depends on your hacking level and the target server’s security\n * level when this function is called. This function lowers the security level of the target server by 0.05.\n *\n * Like {@link NS.hack | hack} and {@link NS.grow| grow}, `weaken` can be called on any server, regardless of\n * where the script is running. This function requires root access to the target server, but\n * there is no required hacking level to run the function.\n *\n * @example\n * ```js\n * let currentSecurity = ns.getServerSecurityLevel("foodnstuff");\n * currentSecurity -= await ns.weaken("foodnstuff");\n * ```\n * @param host - Hostname of the target server to weaken.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns A promise that resolves to the value by which security was reduced.\n */\n weaken(host: string, opts?: BasicHGWOptions): Promise;\n\n /**\n * Predict the effect of weaken.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the security decrease that would occur if a weaken with this many threads happened.\n *\n * @param threads - Amount of threads that will be used.\n * @param cores - Optional. The number of cores of the server that would run weaken.\n * @returns The security decrease.\n */\n weakenAnalyze(threads: number, cores?: number): number;\n\n /**\n * Calculate the decimal number of threads needed to hack a specified amount of money from a target host.\n * @remarks\n * RAM cost: 1 GB\n *\n * This function returns the decimal number of script threads you need when running the hack command\n * to steal the specified amount of money from the target server.\n * If hackAmount is less than zero or greater than the amount of money available on the server,\n * then this function returns -1.\n *\n *\n * @example\n * ```ts\n * // Calculate threadcount of a single hack that would take $100k from n00dles\n * const hackThreads = hackAnalyzeThreads("n00dles", 1e5);\n *\n * // Launching a script requires an integer thread count. The below would take less than the targeted $100k.\n * ns.run("noodleHack.js", Math.floor(hackThreads))\n *\n * ```\n * @param host - Hostname of the target server to analyze.\n * @param hackAmount - Amount of money you want to hack from the server.\n * @returns The number of threads needed to hack the server for hackAmount money.\n */\n hackAnalyzeThreads(host: string, hackAmount: number): number;\n\n /**\n * Get the part of money stolen with a single thread.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the part of the specified server’s money you will steal with a single thread hack.\n *\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.hackPercent | formulas.hacking.hackPercent}.\n *\n * @example\n * ```js\n * //For example, assume the following returns 0.01:\n * const hackAmount = ns.hackAnalyze("foodnstuff");\n * //This means that if hack the foodnstuff server using a single thread, then you will steal 1%, or 0.01 of its total money. If you hack using N threads, then you will steal N*0.01 times its total money.\n * ```\n * @param host - Hostname of the target server.\n * @returns The part of money you will steal from the target server with a single thread hack.\n */\n hackAnalyze(host: string): number;\n\n /**\n * Get the security increase for a number of threads.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the security increase that would occur if a hack with this many threads happened.\n *\n * @param threads - Amount of threads that will be used.\n * @param hostname - Hostname of the target server. The number of threads is limited to the number needed to hack the server\'s maximum amount of money.\n * @returns The security increase.\n */\n hackAnalyzeSecurity(threads: number, hostname?: string): number;\n\n /**\n * Get the chance of successfully hacking a server.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the chance you have of successfully hacking the specified server.\n *\n * This returned value is in decimal form, not percentage.\n *\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.hackChance | formulas.hacking.hackChance}.\n *\n * @param host - Hostname of the target server.\n * @returns The chance you have of successfully hacking the target server.\n */\n hackAnalyzeChance(host: string): number;\n\n /**\n * Calculate the number of grow threads needed for a given multiplicative growth factor.\n * @remarks\n * RAM cost: 1 GB\n *\n * This function returns the total decimal number of {@link NS.grow | grow} threads needed in order to multiply the\n * money available on the specified server by a given multiplier, if all threads are executed at the server\'s current\n * security level, regardless of how many threads are assigned to each call.\n *\n * Note that there is also an additive factor that is applied before the multiplier. Each {@link NS.grow | grow} call\n * will add $1 to the host\'s money for each thread before applying the multiplier for its thread count. This means\n * that at extremely low starting money, fewer threads would be needed to apply the same effective multiplier than\n * what is calculated by growthAnalyze.\n *\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.growThreads | formulas.hacking.growThreads}.\n *\n * @example\n * ```js\n * // calculate number of grow threads to apply 2x growth multiplier on n00dles (does not include the additive growth).\n * const growThreads = ns.growthAnalyze("n00dles", 2);\n *\n * // When using the thread count to launch a script, it needs to be converted to an integer.\n * ns.run("noodleGrow.js", Math.ceil(growThreads));\n * ```\n * @param host - Hostname of the target server.\n * @param multiplier - Multiplier that will be applied to a server\'s money after applying additive growth. Decimal form.\n * @param cores - Number of cores on the host running the grow function. Optional, defaults to 1.\n * @returns Decimal number of grow threads needed for the specified multiplicative growth factor (does not include additive growth).\n */\n growthAnalyze(host: string, multiplier: number, cores?: number): number;\n\n /**\n * Calculate the security increase for a number of grow threads.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the security increase that would occur if a grow with this many threads happened.\n *\n * @param threads - Amount of threads that will be used.\n * @param hostname - Optional. Hostname of the target server. If provided, security increase is limited by the number of threads needed to reach maximum money.\n * @param cores - Optional. The number of cores of the server that would run grow.\n * @returns The security increase.\n */\n growthAnalyzeSecurity(threads: number, hostname?: string, cores?: number): number;\n\n /**\n * Suspends the script for n milliseconds.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param millis - Number of milliseconds to sleep.\n * @example\n * ```js\n * // This will count from 1 to 10 in your terminal, with one number every 5 seconds\n * for (var i = 1; i <= 10; i++) {\n * ns.tprint(i);\n * await ns.sleep(5000);\n * }\n * ```\n * @returns A promise that resolves to true when the sleep is completed.\n */\n sleep(millis: number): Promise;\n\n /**\n * Suspends the script for n milliseconds. Doesn\'t block with concurrent calls.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param millis - Number of milliseconds to sleep.\n * @returns A promise that resolves to true when the sleep is completed.\n */\n asleep(millis: number): Promise;\n\n /**\n * Prints one or more values or variables to the script’s logs.\n * @remarks\n * RAM cost: 0 GB\n *\n * If the argument is a string, you can color code your message by prefixing your\n * string with one of these strings:\n *\n * - `"ERROR"`: The whole string will be printed in red. Use this prefix to indicate\n * that an error has occurred.\n *\n * - `"SUCCESS"`: The whole string will be printed in green, similar to the default\n * theme of the Terminal. Use this prefix to indicate that something is correct.\n *\n * - `"WARN"`: The whole string will be printed in yellow. Use this prefix to\n * indicate that you or a user of your script should be careful of something.\n *\n * - `"INFO"`: The whole string will be printed in purplish blue. Use this prefix to\n * remind yourself or a user of your script of something. Think of this prefix as\n * indicating an FYI (for your information).\n *\n * For custom coloring, use ANSI escape sequences. The examples below use the Unicode\n * escape code `\\u001b`. The color coding also works if `\\u001b` is replaced with\n * the hexadecimal escape code `\\x1b`. The Bash escape code `\\e` is not supported.\n * The octal escape code `\\033` is not allowed because the game runs JavaScript in\n * strict mode.\n *\n * @example\n * ```js\n * // Default color coding.\n * ns.print("ERROR means something\'s wrong.");\n * ns.print("SUCCESS means everything\'s OK.");\n * ns.print("WARN Tread with caution!");\n * ns.print("WARNING, warning, danger, danger!");\n * ns.print("WARNing! Here be dragons.");\n * ns.print("INFO for your I\'s only (FYI).");\n * ns.print("INFOrmation overload!");\n * // Custom color coding.\n * const cyan = "\\u001b[36m";\n * const green = "\\u001b[32m";\n * const red = "\\u001b[31m";\n * const reset = "\\u001b[0m";\n * ns.print(`${red}Ugh! What a mess.${reset}`);\n * ns.print(`${green}Well done!${reset}`);\n * ns.print(`${cyan}ERROR Should this be in red?${reset}`);\n * ns.tail();\n * ```\n *\n * @param args - Value(s) to be printed.\n */\n print(...args: any[]): void;\n\n /** Prints a ReactNode to the script logs.\n * @remarks\n * RAM cost: 0 GB\n *\n * See {@link ReactNode} type for the acceptable values.\n *\n * @param node - The react node to be printed. */\n printRaw(node: ReactNode): void;\n\n /**\n * Prints a formatted string to the script’s logs.\n * @remarks\n * RAM cost: 0 GB\n *\n * - See {@link NS.print | print} for how to add color to your printed strings.\n *\n * - For more detail, see: https://github.com/alexei/sprintf.js\n *\n * @example\n * ```js\n * const name = "Bit";\n * const age = 4;\n * ns.printf("My name is %s.", name);\n * ns.printf("I\'m %d seconds old.", age);\n * ns.printf("My age in binary is %b.", age);\n * ns.printf("My age in scientific notation is %e.", age);\n * ns.printf("In %d seconds, I\'ll be %s.", 6, "Byte");\n * ns.printf("Am I a nibble? %t", (4 == age));\n * ns.tail();\n * ```\n *\n * @param format - Format of the message.\n * @param args - Value(s) to be printed.\n */\n printf(format: string, ...args: any[]): void;\n\n /**\n * Prints one or more values or variables to the Terminal.\n * @remarks\n * RAM cost: 0 GB\n *\n * See {@link NS.print | print} for how to add color to your printed strings.\n *\n * @param args - Value(s) to be printed.\n */\n tprint(...args: any[]): void;\n\n /** Prints a ReactNode to the terminal.\n * @remarks\n * RAM cost: 0 GB\n *\n * See {@link ReactNode} type for the acceptable values.\n *\n * @param node - The react node to be printed. */\n tprintRaw(node: ReactNode): void;\n\n /**\n * Prints a raw value or a variable to the Terminal.\n * @remarks\n * RAM cost: 0 GB\n *\n * - See {@link NS.print | print} for how to add color to your printed strings.\n *\n * - See {@link NS.printf | printf} for examples on formatted strings.\n *\n * - For more detail, see: https://github.com/alexei/sprintf.js\n *\n * @param format - Format of the message.\n * @param values - Value(s) to be printed.\n */\n tprintf(format: string, ...values: any[]): void;\n\n /**\n * Clears the script’s logs.\n * @remarks\n * RAM cost: 0 GB\n */\n clearLog(): void;\n\n /**\n * Disables logging for the given function.\n * @remarks\n * RAM cost: 0 GB\n *\n * Logging can be disabled for all functions by passing `ALL` as the argument.\n *\n * @param fn - Name of function for which to disable logging.\n */\n disableLog(fn: string): void;\n\n /**\n * Enable logging for a certain function.\n * @remarks\n * RAM cost: 0 GB\n *\n * Re-enables logging for the given function. If `ALL` is passed into this\n * function as an argument, then it will revert the effects of disableLog(`ALL`).\n *\n * @param fn - Name of function for which to enable logging.\n */\n enableLog(fn: string): void;\n\n /**\n * Checks the status of the logging for the given function.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param fn - Name of function to check.\n * @returns Returns a boolean indicating whether or not logging is enabled for that function (or `ALL`).\n */\n isLogEnabled(fn: string): boolean;\n\n /**\n * Get all the logs of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns a script’s logs. The logs are returned as an array, where each line is an element in the array.\n * The most recently logged line is at the end of the array.\n * Note that there is a maximum number of lines that a script stores in its logs. This is configurable in the game’s options.\n * If the function is called with no arguments, it will return the current script’s logs.\n *\n * Otherwise, the fn, hostname/ip, and args… arguments can be used to get the logs from another script.\n * Remember that scripts are uniquely identified by both their names and arguments.\n *\n * @example\n * ```js\n * //Get logs from foo.js on the current server that was run with no args\n * ns.getScriptLogs("foo.js");\n *\n * //Open logs from foo.js on the foodnstuff server that was run with no args\n * ns.getScriptLogs("foo.js", "foodnstuff");\n *\n * //Open logs from foo.js on the foodnstuff server that was run with the arguments [1, "test"]\n * ns.getScriptLogs("foo.js", "foodnstuff", 1, "test");\n * ```\n * @param fn - Optional. Filename of script to get logs from.\n * @param host - Optional. Hostname of the server that the script is on.\n * @param args - Arguments to identify which scripts to get logs for.\n * @returns Returns a string array, where each line is an element in the array. The most recently logged line is at the end of the array.\n */\n getScriptLogs(fn?: string, host?: string, ...args: (string | number | boolean)[]): string[];\n\n /**\n * Get an array of recently killed scripts across all servers.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * The most recently killed script is the first element in the array.\n * Note that there is a maximum number of recently killed scripts which are tracked.\n * This is configurable in the game\'s options as `Recently killed scripts size`.\n *\n * @example\n * ```ts\n * let recentScripts = ns.getRecentScripts();\n * let mostRecent = recentScripts.shift()\n * if (mostRecent)\n * ns.tprint(mostRecent.logs.join(\'\\n\'))\n * ```\n *\n * @returns Array with information about previously killed scripts.\n */\n getRecentScripts(): RecentScript[];\n\n /**\n * Open the tail window of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * Opens a script’s logs. This is functionally the same as the tail Terminal command.\n *\n * If the function is called with no arguments, it will open the current script’s logs.\n *\n * Otherwise, the fn, hostname/ip, and args… arguments can be used to get the logs from another script.\n * Remember that scripts are uniquely identified by both their names and arguments.\n *\n * @example\n * ```js\n * //Open logs from foo.js on the current server that was run with no args\n * ns.tail("foo.js");\n *\n * //Get logs from foo.js on the foodnstuff server that was run with no args\n * ns.tail("foo.js", "foodnstuff");\n *\n * //Get logs from foo.js on the foodnstuff server that was run with the arguments [1, "test"]\n * ns.tail("foo.js", "foodnstuff", 1, "test");\n * ```\n * @param fn - Optional. Filename or PID of the script being tailed. If omitted, the current script is tailed.\n * @param host - Optional. Hostname of the script being tailed. Defaults to the server this script is running on. If args are specified, this is not optional.\n * @param args - Arguments for the script being tailed.\n */\n tail(fn?: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): void;\n\n /**\n * Move a tail window.\n * @remarks\n * RAM cost: 0 GB\n *\n * Moves a tail window. Coordinates are in screenspace pixels (top left is 0,0).\n *\n * @param x - x coordinate.\n * @param y - y coordinate.\n * @param pid - Optional. PID of the script having its tail moved. If omitted, the current script is used.\n */\n moveTail(x: number, y: number, pid?: number): void;\n\n /**\n * Resize a tail window.\n * @remarks\n * RAM cost: 0 GB\n *\n * Resize a tail window. Size are in pixel.\n *\n * @param width - Width of the window.\n * @param height - Height of the window.\n * @param pid - Optional. PID of the script having its tail resized. If omitted, the current script is used.\n */\n resizeTail(width: number, height: number, pid?: number): void;\n\n /**\n * Close the tail window of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * Closes a script’s logs. This is functionally the same as pressing the "Close" button on the tail window.\n *\n * If the function is called with no arguments, it will close the current script’s logs.\n *\n * Otherwise, the pid argument can be used to close the logs from another script.\n *\n * @param pid - Optional. PID of the script having its tail closed. If omitted, the current script is used.\n */\n closeTail(pid?: number): void;\n\n /**\n * Set the title of the tail window of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * This sets the title to the given string, and also forces an update of the\n * tail window\'s contents.\n *\n * The title is saved across restarts, but only if it is a simple string.\n *\n * If the pid is unspecified, it will modify the current script’s logs.\n *\n * Otherwise, the pid argument can be used to change the logs from another script.\n *\n * It is possible to pass any React Node instead of a string.\n * See {@link ReactElement} and {@link ReactNode} types for additional info.\n *\n * @param pid - Optional. PID of the script having its tail closed. If omitted, the current script is used.\n */\n setTitle(title: string | ReactNode, pid?: number): void;\n\n /**\n * Get the list of servers connected to a server.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * Returns an array containing the hostnames of all servers that are one\n * node way from the specified target server. The hostnames in the returned\n * array are strings.\n *\n * @example\n * ```js\n * // All servers that are one hop from the current server.\n * ns.tprint("Neighbors of current server.");\n * let neighbor = ns.scan();\n * for (let i = 0; i < neighbor.length; i++) {\n * ns.tprint(neighbor[i]);\n * }\n * // All neighbors of n00dles.\n * const target = "n00dles";\n * neighbor = ns.scan(target);\n * ns.tprintf("Neighbors of %s.", target);\n * for (let i = 0; i < neighbor.length; i++) {\n * ns.tprint(neighbor[i]);\n * }\n * ```\n *\n * @param host - Optional. Hostname of the server to scan, default to current server.\n * @returns Returns an array of hostnames.\n */\n scan(host?: string): string[];\n\n /** Returns whether the player has access to the darkweb.\n * @remarks\n * RAM cost: 0.05GB\n *\n * @example\n * ```js\n * if (ns.hasTorRouter()) ns.tprint("TOR router detected.");\n * ```\n *\n * @returns Whether player has access to the dark web. */\n hasTorRouter(): boolean;\n\n /**\n * Runs NUKE.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Running NUKE.exe on a target server gives you root access which means you can execute scripts on said server. NUKE.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.nuke("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n nuke(host: string): void;\n\n /**\n * Runs BruteSSH.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the BruteSSH.exe program on the target server. BruteSSH.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.brutessh("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n brutessh(host: string): void;\n\n /**\n * Runs FTPCrack.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the FTPCrack.exe program on the target server. FTPCrack.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.ftpcrack("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n ftpcrack(host: string): void;\n\n /**\n * Runs relaySMTP.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the relaySMTP.exe program on the target server. relaySMTP.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.relaysmtp("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n relaysmtp(host: string): void;\n\n /**\n * Runs HTTPWorm.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the HTTPWorm.exe program on the target server. HTTPWorm.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.httpworm("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n httpworm(host: string): void;\n\n /**\n * Runs SQLInject.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the SQLInject.exe program on the target server. SQLInject.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.sqlinject("foodnstuff");\n * ```\n * @remarks RAM cost: 0.05 GB\n * @param host - Hostname of the target server.\n */\n sqlinject(host: string): void;\n\n /**\n * Start another script on the current server.\n * @remarks\n * RAM cost: 1 GB\n *\n * Run a script as a separate process. This function can only be used to run scripts located on the\n * current server (the server running the script that calls this function). Requires a significant\n * amount of RAM to run this command.\n *\n * The second argument is either a thread count, or a {@link RunOptions} object that can also\n * specify the number of threads (among other things).\n *\n * If the script was successfully started, then this functions returns the PID of that script.\n * Otherwise, it returns 0.\n *\n * PID stands for Process ID. The PID is a unique identifier for each script.\n * The PID will always be a positive integer.\n *\n * Running this function with 0 or fewer threads will cause a runtime error.\n *\n * @example\n * ```js\n * //The simplest way to use the run command is to call it with just the script name. The following example will run ‘foo.js’ single-threaded with no arguments:\n * ns.run("foo.js");\n *\n * //The following example will run ‘foo.js’ but with 5 threads instead of single-threaded:\n * ns.run("foo.js", {threads: 5});\n *\n * //This next example will run ‘foo.js’ single-threaded, and will pass the string ‘foodnstuff’ into the script as an argument:\n * ns.run("foo.js", 1, \'foodnstuff\');\n * ```\n * @param script - Filename of script to run.\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the second argument threadOrOptions must be filled in with a value.\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\n */\n run(script: string, threadOrOptions?: number | RunOptions, ...args: (string | number | boolean)[]): number;\n\n /**\n * Start another script on any server.\n * @remarks\n * RAM cost: 1.3 GB\n *\n * Run a script as a separate process on a specified server. This is similar to the function {@link NS.run | run}\n * except that it can be used to run a script that already exists on any server, instead of just the current server.\n *\n * If the script was successfully started, then this function returns the PID of that script.\n * Otherwise, it returns 0.\n *\n * PID stands for Process ID. The PID is a unique identifier for each script.\n * The PID will always be a positive integer.\n *\n * Running this function with 0 or fewer threads will cause a runtime error.\n *\n * @example\n * ```js\n * // The simplest way to use the exec command is to call it with just the script name\n * // and the target server. The following example will try to run generic-hack.js\n * // on the foodnstuff server.\n * ns.exec("generic-hack.js", "foodnstuff");\n *\n * // The following example will try to run the script generic-hack.js on the\n * // joesguns server with 10 threads.\n * ns.exec("generic-hack.js", "joesguns", {threads: 10});\n *\n * // This last example will try to run the script foo.js on the foodnstuff server\n * // with 5 threads. It will also pass the number 1 and the string “test” in as\n * // arguments to the script.\n * ns.exec("foo.js", "foodnstuff", 5, 1, "test");\n * ```\n * @param script - Filename of script to execute. This file must already exist on the target server.\n * @param hostname - Hostname of the `target server` on which to execute the script.\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the third argument threadOrOptions must be filled in with a value.\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\n */\n exec(\n script: string,\n hostname: string,\n threadOrOptions?: number | RunOptions,\n ...args: (string | number | boolean)[]\n ): number;\n\n /**\n * Terminate current script and start another in 10 seconds.\n * @remarks\n * RAM cost: 2 GB\n *\n * Terminates the current script, and then after a delay of about 10 seconds it will execute the\n * newly-specified script. The purpose of this function is to execute a new script without being\n * constrained by the RAM usage of the current one. This function can only be used to run scripts\n * on the local server.\n *\n * Because this function immediately terminates the script, it does not have a return value.\n *\n * Running this function with 0 or fewer threads will cause a runtime error.\n *\n * @example\n * ```js\n * //The following example will execute the script ‘foo.js’ with 10 threads and the arguments ‘foodnstuff’ and 90:\n * ns.spawn(\'foo.js\', 10, \'foodnstuff\', 90);\n * ```\n * @param script - Filename of script to execute.\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\n * @param args - Additional arguments to pass into the new script that is being run.\n */\n spawn(script: string, threadOrOptions?: number | RunOptions, ...args: (string | number | boolean)[]): void;\n\n /**\n * Terminate the script with the provided PID.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Kills the script with the provided PID.\n * To instead kill a script using its filename, hostname, and args, see {@link NS.(kill:2) | the other ns.kill entry}.\n *\n * @example\n * ```js\n * // kills the script with PID 20:\n * ns.kill(20);\n * ```\n *\n * @param pid - The PID of the script to kill.\n * @returns True if the script is successfully killed, and false otherwise.\n */\n kill(pid: number): boolean;\n\n /**\n * Terminate the script(s) with the provided filename, hostname, and script arguments.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Kills the script(s) with the provided filename, running on the specified host with the specified args.\n * To instead kill a script using its PID, see {@link NS.(kill:1) | the other ns.kill entry}.\n *\n * @example\n * ```js\n * // kill the script "foo.js" on the same server the current script is running from, with no arguments\n * ns.kill("foo.js");\n *\n * // kill the script "foo.js" on the "n00dles" server with no arguments.\n * ns.kill("foo.js", "n00dles");\n *\n * // kill the script foo.js on the current server that was ran with the arguments [1, “foodnstuff”, false]:\n * ns.kill("foo.js", ns.getHostname(), 1, "foodnstuff", false);\n * ```\n * @param filename - Filename of the script to kill.\n * @param hostname - Hostname where the script to kill is running. Defaults to the current server.\n * @param args - Arguments of the script to kill.\n * @returns True if the scripts were successfully killed, and false otherwise.\n */\n kill(filename: string, hostname?: string, ...args: ScriptArg[]): boolean;\n\n /**\n * Terminate all scripts on a server.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Kills all running scripts on the specified server. This function returns true\n * if any scripts were killed, and false otherwise. In other words, it will return\n * true if there are any scripts running on the target server.\n * If no host is defined, it will kill all scripts, where the script is running.\n *\n * @param host - IP or hostname of the server on which to kill all scripts.\n * @param safetyguard - Skips the script that calls this function\n * @returns True if any scripts were killed, and false otherwise.\n */\n killall(host?: string, safetyguard?: boolean): boolean;\n\n /**\n * Terminates the current script immediately.\n * @remarks\n * RAM cost: 0 GB\n */\n exit(): never;\n\n /**\n * Copy file between servers.\n * @remarks\n * RAM cost: 0.6 GB\n *\n * Copies a script or literature (.lit) file(s) to another server. The files argument can be either a string\n * specifying a single file to copy, or an array of strings specifying multiple files to copy.\n *\n * @example\n * ```js\n * //Copies foo.lit from the helios server to the home computer:\n * ns.scp("foo.lit", "home", "helios" );\n *\n * //Tries to copy three files from rothman-uni to home computer:\n * const files = ["foo1.lit", "foo2.txt", "foo3.js"];\n * ns.scp(files, "home", "rothman-uni");\n * ```\n * @example\n * ```js\n * const server = ns.args[0];\n * const files = ["hack.js", "weaken.js", "grow.js"];\n * ns.scp(files, server, "home");\n * ```\n * @param files - Filename or an array of filenames of script/literature files to copy. Note that if a file is located in a subdirectory, the filename must include the leading `/`.\n * @param destination - Hostname of the destination server, which is the server to which the file will be copied.\n * @param source - Hostname of the source server, which is the server from which the file will be copied. This argument is optional and if it’s omitted the source will be the current server.\n * @returns True if the file is successfully copied over and false otherwise. If the files argument is an array then this function will return false if any of the operations failed.\n */\n scp(files: string | string[], destination: string, source?: string): boolean;\n\n /**\n * List files on a server.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * Returns an array with the filenames of all files on the specified server\n * (as strings). The returned array is sorted in alphabetic order.\n *\n * @param host - Hostname of the target server.\n * @param substring - A substring to search for in the filename.\n * @returns Array with the filenames of all files on the specified server.\n */\n ls(host: string, substring?: string): string[];\n\n /**\n * List running scripts on a server.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * Returns an array with general information about all scripts running on the specified target server.\n *\n * @example\n * ```js\n * const ps = ns.ps("home");\n * for (let script of ps) {\n * ns.tprint(`${script.filename} ${script.threads}`);\n * ns.tprint(script.args);\n * }\n * ```\n * @param host - Host address of the target server. If not specified, it will be the current server’s IP by default.\n * @returns Array with general information about all scripts running on the specified target server.\n */\n ps(host?: string): ProcessInfo[];\n\n /**\n * Check if you have root access on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Returns a boolean indicating whether or not the player has root access to the specified target server.\n *\n * @example\n * ```js\n * if (!ns.hasRootAccess("foodnstuff")) {\n * ns.nuke("foodnstuff");\n * }\n * ```\n * @param host - Hostname of the target server.\n * @returns True if player has root access to the specified target server, and false otherwise.\n */\n hasRootAccess(host: string): boolean;\n\n /**\n * Returns a string with the hostname of the server that the script is running on.\n *\n * @remarks\n * RAM cost: 0.05 GB\n * @returns Hostname of the server that the script runs on.\n */\n getHostname(): string;\n\n /**\n * Returns the player’s current hacking level.\n *\n * @remarks\n * RAM cost: 0.05 GB\n * @returns Player’s current hacking level\n */\n getHackingLevel(): number;\n\n /**\n * Get hacking related multipliers.\n * @remarks\n * RAM cost: 0.25 GB\n *\n * Returns an object containing the Player’s hacking related multipliers.\n * These multipliers are returned in fractional forms, not percentages\n * (e.g. 1.5 instead of 150%).\n *\n * @example\n * ```js\n * const mults = ns.getHackingMultipliers();\n * print(`chance: ${mults.chance}`);\n * print(`growthL ${mults.growth}`);\n * ```\n * @returns Object containing the Player’s hacking related multipliers.\n */\n getHackingMultipliers(): HackingMultipliers;\n\n /**\n * Get hacknet related multipliers.\n * @remarks\n * RAM cost: 0.25 GB\n *\n * Returns an object containing the Player’s hacknet related multipliers.\n * These multipliers are returned in fractional forms, not percentages\n * (e.g. 1.5 instead of 150%).\n *\n * @example\n * ```js\n * const mults = ns.getHacknetMultipliers();\n * ns.tprint(`production: ${mults.production}`);\n * ns.tprint(`purchaseCost: ${mults.purchaseCost}`);\n * ```\n * @returns Object containing the Player’s hacknet related multipliers.\n */\n getHacknetMultipliers(): HacknetMultipliers;\n\n /**\n * Returns a server object for the given server. Defaults to the running script\'s server if host is not specified.\n *\n * @remarks\n * RAM cost: 2 GB\n * @param host - Optional. Hostname for the requested server object.\n * @returns The requested server object.\n */\n getServer(host?: string): Server;\n\n /**\n * Get money available on a server.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of money available on a server.\n * Running this function on the home computer will return the player’s money.\n *\n * @example\n * ```js\n * ns.getServerMoneyAvailable("foodnstuff");\n * ns.getServerMoneyAvailable("home"); // Returns player\'s money\n * ```\n * @param host - Hostname of target server.\n * @returns Amount of money available on the server.\n */\n getServerMoneyAvailable(host: string): number;\n\n /**\n * Get the maximum money available on a server.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the maximum amount of money that can be available on a server.\n *\n * @param host - Hostname of target server.\n * @returns Maximum amount of money available on the server.\n */\n getServerMaxMoney(host: string): number;\n\n /**\n * Get a server growth parameter.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the server’s intrinsic “growth parameter”. This growth\n * parameter is a number typically between 0 and 100 that represents\n * how quickly the server’s money grows. This parameter affects the\n * percentage by which the server’s money is increased when using the\n * grow function. A higher growth parameter will result in a\n * higher percentage increase from grow.\n *\n * @param host - Hostname of target server.\n * @returns Parameter that affects the percentage by which the server’s money is increased when using the grow function.\n */\n getServerGrowth(host: string): number;\n\n /**\n * Get server security level.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the security level of the target server. A server’s security\n * level is denoted by a number, typically between 1 and 100\n * (but it can go above 100).\n *\n * @param host - Hostname of target server.\n * @returns Security level of the target server.\n */\n getServerSecurityLevel(host: string): number;\n\n /**\n * Returns the minimum security level of the target server.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Hostname of target server.\n * @returns Minimum security level of the target server.\n */\n getServerMinSecurityLevel(host: string): number;\n\n /**\n * Get the base security level of a server.\n * @remarks\n * RAM cost: 0.1 GB\n * Returns the base security level of the target server.\n * For the server\'s actual security level, use {@link NS.getServerSecurityLevel | ns.getServerSecurityLevel}.\n *\n * @param host - Host of target server.\n * @returns Base security level of the target server.\n */\n getServerBaseSecurityLevel(host: string): number;\n\n /**\n * Get the maximum amount of RAM on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * @param host - Hostname of the target server.\n * @returns The maximum amount of RAM (GB) a server can have.\n */\n getServerMaxRam(host: string): number;\n /**\n * Get the used RAM on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * @param host - Hostname of the target server.\n * @returns The amount of used RAM (GB) on the specified server.\n */\n getServerUsedRam(host: string): number;\n\n /**\n * Returns the required hacking level of the target server.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Hostname of target server.\n * @returns The required hacking level of the target server.\n */\n getServerRequiredHackingLevel(host: string): number;\n\n /**\n * Returns the number of open ports required to successfully run NUKE.exe on the specified server.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Hostname of target server.\n * @returns The number of open ports required to successfully run NUKE.exe on the specified server.\n */\n getServerNumPortsRequired(host: string): number;\n\n /**\n * Returns a boolean denoting whether or not the specified server exists.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Hostname of target server.\n * @returns True if the specified server exists, and false otherwise.\n */\n serverExists(host: string): boolean;\n\n /**\n * Check if a file exists.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns a boolean indicating whether the specified file exists on the target server.\n * The filename for programs is case insensitive, other file types are case sensitive.\n * For example, fileExists(“brutessh.exe”) will work fine, even though the actual program\n * is named \'BruteSSH.exe\'.\n *\n * * @example\n * ```js\n * // The function call will return true if the script named foo.js exists on the foodnstuff server, and false otherwise.\n * ns.fileExists("foo.js", "foodnstuff");\n *\n * // The function call will return true if the current server contains the FTPCrack.exe program, and false otherwise.\n * ns.fileExists("ftpcrack.exe");\n * ```\n * @param filename - Filename of file to check.\n * @param host - Host of target server. Optional, defaults to the server the script is running on.\n * @returns True if specified file exists, and false otherwise.\n */\n fileExists(filename: string, host?: string): boolean;\n\n /**\n * Check if a script is running.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns a boolean indicating whether the specified script is running on the target server.\n * If you use a PID instead of a filename, the hostname and args parameters are unnecessary.\n * Remember that a script is semi-uniquely identified by both its name and its arguments.\n * (You can run multiple copies of scripts with the same arguments, but for the purposes of\n * functions like this that check based on filename, the filename plus arguments forms the key.)\n *\n * @example\n * ```js\n * //The function call will return true if there is a script named foo.js with no arguments running on the foodnstuff server, and false otherwise:\n * ns.isRunning("foo.js", "foodnstuff");\n *\n * //The function call will return true if there is a script named foo.js with no arguments running on the current server, and false otherwise:\n * ns.isRunning("foo.js", ns.getHostname());\n *\n * //The function call will return true if there is a script named foo.js running with the arguments 1, 5, and “test” (in that order) on the joesguns server, and false otherwise:\n * ns.isRunning("foo.js", "joesguns", 1, 5, "test");\n * ```\n * @param script - Filename or PID of script to check. This is case-sensitive.\n * @param host - Hostname of target server.\n * @param args - Arguments to specify/identify which scripts to search for.\n * @returns True if the specified script is running on the target server, and false otherwise.\n */\n isRunning(script: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): boolean;\n\n /**\n * Get general info about a running script.\n * @remarks\n * RAM cost: 0.3 GB\n *\n * Running with no args returns current script.\n * If you use a PID as the first parameter, the hostname and args parameters are unnecessary.\n *\n * @param filename - Optional. Filename or PID of the script.\n * @param hostname - Optional. Name of host server the script is running on.\n * @param args - Arguments to identify the script\n * @returns The info about the running script if found, and null otherwise.\n */\n getRunningScript(\n filename?: FilenameOrPID,\n hostname?: string,\n ...args: (string | number | boolean)[]\n ): RunningScript | null;\n\n /**\n * Get cost of purchasing a server.\n * @remarks\n * RAM cost: 0.25 GB\n *\n * Returns the cost to purchase a server with the specified amount of ram.\n *\n * @example\n * ```js\n * const ram = 2 ** 20;\n * const cost = ns.getPurchasedServerCost(ram);\n * ns.tprint(`A purchased server with ${ns.formatRam(ram)} costs ${ns.formatMoney(cost)}`);\n * ```\n * @param ram - Amount of RAM of a potential purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns The cost to purchase a server with the specified amount of ram.\n */\n getPurchasedServerCost(ram: number): number;\n\n /**\n * Purchase a server.\n * @remarks\n * 2.25 GB\n *\n * Purchase a server with the specified hostname and amount of RAM.\n *\n * The hostname argument can be any data type, but it will be converted to a string\n * and have whitespace removed. Anything that resolves to an empty string will cause\n * the function to fail. If there is already a server with the specified hostname,\n * then the function will automatically append a number at the end of the hostname\n * argument value until it finds a unique hostname. For example, if the script calls\n * `purchaseServer(“foo”, 4)` but a server named “foo” already exists, then it will\n * automatically change the hostname to `foo-0`. If there is already a server with the\n * hostname `foo-0`, then it will change the hostname to `foo-1`, and so on.\n *\n * Note that there is a maximum limit to the amount of servers you can purchase.\n *\n * Returns the hostname of the newly purchased server as a string. If the function\n * fails to purchase a server, then it will return an empty string. The function will\n * fail if the arguments passed in are invalid, if the player does not have enough\n * money to purchase the specified server, or if the player has exceeded the maximum\n * amount of servers.\n *\n * @example\n * ```js\n * // Attempt to purchase 5 servers with 64GB of ram each\n * const ram = 64;\n * const prefix = "pserv-";\n * for (i = 0; i < 5; ++i) {\n * ns.purchaseServer(prefix + i, ram);\n * }\n * ```\n * @param hostname - Hostname of the purchased server.\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns The hostname of the newly purchased server.\n */\n purchaseServer(hostname: string, ram: number): string;\n\n /**\n * Get cost of upgrading a purchased server to the given ram.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * @param hostname - Hostname of the server to upgrade.\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns The price to upgrade.\n */\n getPurchasedServerUpgradeCost(hostname: string, ram: number): number;\n\n /**\n * Upgrade a purchased server\'s RAM.\n * @remarks\n * RAM cost: 0.25 GB\n *\n * @param hostname - Hostname of the server to upgrade.\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns True if the upgrade succeeded, and false otherwise.\n */\n upgradePurchasedServer(hostname: string, ram: number): boolean;\n\n /**\n * Rename a purchased server.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param hostname - Current server hostname.\n * @param newName - New server hostname.\n * @returns True if successful, and false otherwise.\n */\n renamePurchasedServer(hostname: string, newName: string): boolean;\n\n /**\n * Delete a purchased server.\n * @remarks\n * 2.25 GB\n *\n * Deletes one of your purchased servers, which is specified by its hostname.\n *\n * The hostname argument can be any data type, but it will be converted to a string.\n * Whitespace is automatically removed from the string. This function will not delete a\n * server that still has scripts running on it.\n *\n * @param host - Hostname of the server to delete.\n * @returns True if successful, and false otherwise.\n */\n deleteServer(host: string): boolean;\n\n /**\n * Returns an array with the hostnames of all of the servers you have purchased.\n *\n * @remarks 2.25 GB\n * @returns Returns an array with the hostnames of all of the servers you have purchased.\n */\n getPurchasedServers(): string[];\n\n /**\n * Returns the maximum number of servers you can purchase.\n *\n * @remarks RAM cost: 0.05 GB\n * @returns Returns the maximum number of servers you can purchase.\n */\n getPurchasedServerLimit(): number;\n\n /**\n * Returns the maximum RAM that a purchased server can have.\n *\n * @remarks RAM cost: 0.05 GB\n * @returns Returns the maximum RAM (in GB) that a purchased server can have.\n */\n getPurchasedServerMaxRam(): number;\n\n /**\n * Write data to a file.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function can be used to write data to a text file (.txt) or a script (.js or .script).\n *\n * This function will write data to that file. If the specified file does not exist,\n * then it will be created. The third argument mode defines how the data will be written to\n * the file. If mode is set to “w”, then the data is written in “write” mode which means\n * that it will overwrite all existing data on the file. If mode is set to any other value\n * then the data will be written in “append” mode which means that the data will be added at the\n * end of the file.\n *\n * @param filename - Name of the file to be written to.\n * @param data - Data to write.\n * @param mode - Defines the write mode.\n */\n write(filename: string, data?: string, mode?: "w" | "a"): void;\n\n /**\n * Attempt to write to a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Attempts to write data to the specified Netscript port.\n * If the port is full, the data will not be written.\n * Otherwise, the data will be written normally.\n *\n * @param portNumber - Port or text file that will be written to.\n * @param data - Data to write.\n * @returns True if the data is successfully written to the port, and false otherwise.\n */\n tryWritePort(portNumber: number, data: string | number): boolean;\n\n /**\n * Read content of a file.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is used to read data from a text file (.txt) or script (.js or .script).\n *\n * This function will return the data in the specified file.\n * If the file does not exist, an empty string will be returned.\n *\n * @param filename - Name of the file to be read.\n * @returns Data in the specified text file.\n */\n read(filename: string): string;\n\n /**\n * Get a copy of the data from a port without popping it.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is used to peek at the data from a port. It returns the\n * first element in the specified port without removing that element. If\n * the port is empty, the string “NULL PORT DATA” will be returned.\n *\n * @param portNumber - Port to peek. Must be an integer between 1 and 20.\n * @returns Data in the specified port.\n */\n peek(portNumber: number): PortData;\n\n /**\n * Clear data from a file.\n * @remarks\n * RAM cost: 0 GB\n *\n * Delete all data from that text file.\n *\n * @param handle - Text file to clear.\n */\n clear(handle: string): void;\n\n /**\n * Clear data from a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Delete all data from the underlying queue.\n *\n * @param handle - Port to clear.\n */\n clearPort(handle: number): void;\n\n /**\n * Write data to a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Write data to the given Netscript port.\n * @returns The data popped off the queue if it was full, or null if it was not full.\n */\n writePort(portNumber: number, data: string | number): PortData | null;\n /**\n * Read data from a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Read data from that port. A port is a serialized queue.\n * This function will remove the first element from that queue and return it.\n * If the queue is empty, then the string “NULL PORT DATA” will be returned.\n * @returns The data read.\n */\n readPort(portNumber: number): PortData;\n\n /**\n * Get all data on a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Get a handle to a Netscript Port.\n *\n * WARNING: Port Handles only work in NetscriptJS (Netscript 2.0). They will not work in Netscript 1.0.\n *\n * @param portNumber - Port number. Must be an integer between 1 and 20.\n */\n getPortHandle(portNumber: number): NetscriptPort;\n\n /**\n * Delete a file.\n * @remarks\n * RAM cost: 1 GB\n *\n * Removes the specified file from the current server. This function works for every file\n * type except message (.msg) files.\n *\n * @param name - Filename of file to remove. Must include the extension.\n * @param host - Hostname of the server on which to delete the file. Optional. Defaults to current server.\n * @returns True if it successfully deletes the file, and false otherwise.\n */\n rm(name: string, host?: string): boolean;\n\n /**\n * Check if any script with a filename is running.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns a boolean indicating whether any instance of the specified script is running\n * on the target server, regardless of its arguments.\n *\n * This is different than the {@link NS.isRunning | isRunning} function because it does not try to\n * identify a specific instance of a running script by its arguments.\n *\n * @example\n * ```js\n * //The function call will return true if there is any script named foo.js running on the foodnstuff server, and false otherwise:\n * ns.scriptRunning("foo.js", "foodnstuff");\n *\n * //The function call will return true if there is any script named “foo.js” running on the current server, and false otherwise:\n * ns.scriptRunning("foo.js", ns.getHostname());\n * ```\n * @param script - Filename of script to check. This is case-sensitive.\n * @param host - Hostname of target server.\n * @returns True if the specified script is running, and false otherwise.\n */\n scriptRunning(script: string, host: string): boolean;\n\n /**\n * Kill all scripts with a filename.\n * @remarks\n * RAM cost: 1 GB\n *\n * Kills all scripts with the specified filename on the target server specified by hostname,\n * regardless of arguments.\n *\n * @param script - Filename of script to kill. This is case-sensitive.\n * @param host - Hostname of target server.\n * @returns True if one or more scripts were successfully killed, and false if none were.\n */\n scriptKill(script: string, host: string): boolean;\n\n /**\n * Returns the current script name.\n *\n * @remarks RAM cost: 0 GB\n * @returns Current script name.\n */\n getScriptName(): string;\n\n /**\n * Get the ram cost of a script.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of RAM required to run the specified script on the target server.\n * Returns 0 if the script does not exist.\n *\n * @param script - Filename of script. This is case-sensitive.\n * @param host - Hostname of target server the script is located on. This is optional. If it is not specified then the function will use the current server as the target server.\n * @returns Amount of RAM (in GB) required to run the specified script on the target server, and 0 if the script does not exist.\n */\n getScriptRam(script: string, host?: string): number;\n\n /**\n * Get the execution time of a hack() call.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * When `hack` completes an amount of money is stolen depending on the player\'s skills.\n * Returns the amount of time in milliseconds it takes to execute the {@link NS.hack | hack} Netscript function on the target server.\n * The required time is increased by the security level of the target server and decreased by the player\'s hacking level.\n *\n * @param host - Hostname of target server.\n * @returns Returns the amount of time in milliseconds it takes to execute the {@link NS.hack | hack} Netscript function.\n */\n getHackTime(host: string): number;\n\n /**\n * Get the execution time of a grow() call.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Returns the amount of time in milliseconds it takes to execute the grow Netscript function on the target server.\n * The required time is increased by the security level of the target server and decreased by the player\'s hacking level.\n *\n * @param host - Hostname of target server.\n * @returns Returns the amount of time in milliseconds it takes to execute the grow Netscript function.\n */\n getGrowTime(host: string): number;\n\n /**\n * Get the execution time of a weaken() call.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Returns the amount of time in milliseconds it takes to execute the {@link NS.weaken | weaken} Netscript function on the target server.\n * The required time is increased by the security level of the target server and decreased by the player\'s hacking level.\n *\n * @param host - Hostname of target server.\n * @returns Returns the amount of time in milliseconds it takes to execute the {@link NS.weaken | weaken} Netscript function.\n */\n getWeakenTime(host: string): number;\n\n /**\n * Get the income of all scripts.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * @returns An array of two values.\n * The first value is the total income (dollar / second) of all of your active scripts\n * (scripts that are currently running on any server).\n * The second value is the total income (dollar / second) that you’ve earned from scripts\n * since you last installed Augmentations.\n */\n getTotalScriptIncome(): [number, number];\n\n /**\n * Get the income of a script.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of income the specified script generates while online\n * (when the game is open, does not apply for offline income). Remember that\n * a script is uniquely identified by both its name and its arguments. So for\n * example if you ran a script with the arguments “foodnstuff” and “5” then\n * in order to use this function to get that script’s income you must specify\n * those same arguments in the same order in this function call.\n *\n * @param script - Filename of script.\n * @param host - Server on which script is running.\n * @param args - Arguments that the script is running with.\n * @returns Amount of income the specified script generates while online.\n */\n getScriptIncome(script: string, host: string, ...args: (string | number | boolean)[]): number;\n\n /**\n * Get the exp gain of all scripts.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * @returns Total experience gain rate of all of your active scripts.\n */\n getTotalScriptExpGain(): number;\n\n /**\n * Get the exp gain of a script.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of hacking experience the specified script generates while online\n * (when the game is open, does not apply for offline experience gains). Remember that a\n * script is uniquely identified by both its name and its arguments.\n *\n * This function can also return the total experience gain rate of all of your active\n * scripts by running the function with no arguments.\n *\n * @param script - Filename of script.\n * @param host - Server on which script is running.\n * @param args - Arguments that the script is running with.\n * @returns Amount of hacking experience the specified script generates while online.\n */\n getScriptExpGain(script: string, host: string, ...args: (string | number | boolean)[]): number;\n\n /**\n * Returns the amount of time in milliseconds that have passed since you last installed Augmentations.\n *\n * @remarks RAM cost: 0.05 GB\n * @returns Time in milliseconds that have passed since you last installed Augmentations.\n */\n getTimeSinceLastAug(): number;\n\n /**\n * Format a string.\n *\n * @remarks\n * RAM cost: 0 GB\n *\n * see: https://github.com/alexei/sprintf.js\n * @param format - String to format.\n * @param args - Formatting arguments.\n * @returns Formatted text.\n */\n sprintf(format: string, ...args: any[]): string;\n\n /**\n * Format a string with an array of arguments.\n * @remarks\n * RAM cost: 0 GB\n *\n * see: https://github.com/alexei/sprintf.js\n * @param format - String to format.\n * @param args - Formatting arguments.\n * @returns Formatted text.\n */\n vsprintf(format: string, args: any[]): string;\n\n /**\n * Format a number.\n * @remarks\n * RAM cost: 0 GB\n *\n * Converts a number into a numeric string with the specified format options.\n * This is the same function that the game itself uses to display numbers. The format also depends on the Numeric\n * Display settings (all options on the "Numeric Display" options page)\n * To format ram or percentages, see {@link NS.formatRam | formatRam} and {@link NS.formatPercent | formatPercent}\n *\n * @param n - Number to format.\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 3.\n * @param suffixStart - How high a number must be before a suffix will be added. Optional, defaults to 1000.\n * @param isInteger - Whether the number represents an integer. Integers do not display fractional digits until a suffix is present. Optional, defaults to false.\n * @returns Formatted number.\n */\n formatNumber(n: number, fractionalDigits?: number, suffixStart?: number, isInteger?: boolean): string;\n\n /**\n * Format a number as an amount of ram.\n * @remarks\n * RAM cost: 0 GB\n *\n * Converts a number into a ram string with the specified number of fractional digits.\n * This is the same function that the game itself uses to display ram. The format also depends on the Numeric Display\n * settings (all options on the "Numeric Display" options page)\n * To format plain numbers or percentages, see {@link NS.formatNumber | formatNumber} and {@link NS.formatPercent | formatPercent}\n *\n * @param n - Number to format as an amount of ram, in base units of GB (or GiB if that Numeric Display option is set).\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 2.\n * @returns Formatted ram amount.\n */\n formatRam(n: number, fractionalDigits?: number): string;\n\n /**\n * Format a number as a percentage.\n * @remarks\n * RAM cost: 0 GB\n *\n * Converts a number into a percentage string with the specified number of fractional digits.\n * This is the same function that the game itself uses to display percentages. The format also depends on the Numeric\n * Display settings (all options on the "Numeric Display" options page)\n * To format plain numbers or ram, see {@link NS.formatNumber | formatNumber} and {@link NS.formatRam | formatRam}\n *\n * @param n - Number to format as a percentage.\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 2.\n * @param suffixStart - When to switch the percentage to a multiplier. Default is 1e6 or x1.00m.\n * @returns Formatted percentage.\n */\n formatPercent(n: number, fractionalDigits?: number, multStart?: number): string;\n\n /**\n * Format a number using the numeral library. This function is deprecated and will be removed in 2.4.\n * @deprecated Use ns.formatNumber, formatRam, or formatPercent instead. Will be removed in 2.4.\n * @remarks\n * RAM cost: 0 GB\n *\n * Converts a number into a string with the specified format options.\n * See http://numeraljs.com/#format for documentation on format strings supported.\n *\n * This function is deprecated and will be removed in 2.3.\n *\n * @param n - Number to format.\n * @param format - Formatting options. See http://numeraljs.com/#format for valid formats.\n * @returns Formatted number.\n */\n nFormat(n: number, format: string): string;\n\n /**\n * Format time to a readable string.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param milliseconds - Number of millisecond to format.\n * @param milliPrecision - Format time with subsecond precision. Defaults to false.\n * @returns The formatted time.\n */\n tFormat(milliseconds: number, milliPrecision?: boolean): string;\n\n /**\n * Prompt the player with an input modal.\n * @remarks\n * RAM cost: 0 GB\n *\n * Prompts the player with a dialog box. Here is an explanation of the various options.\n *\n * - `options.type` is not provided to the function. If `options.type` is left out and\n * only a string is passed to the function, then the default behavior is to create a\n * boolean dialog box.\n *\n * - `options.type` has value `undefined` or `"boolean"`. A boolean dialog box is\n * created. The player is shown "Yes" and "No" prompts, which return true and false\n * respectively. The script\'s execution is halted until the player presses either the\n * "Yes" or "No" button.\n *\n * - `options.type` has value `"text"`. The player is given a text field to enter\n * free-form text. The script\'s execution is halted until the player enters some text\n * and/or presses the "Confirm" button.\n *\n * - `options.type` has value `"select"`. The player is shown a drop-down field.\n * Choosing type `"select"` will require an array to be passed via the\n * `options.choices` property. The array can be an array of strings, an array of\n * numbers (not BigInt numbers), or a mixture of both numbers and strings. Any other\n * types of array elements will result in an error or an undefined/unexpected\n * behavior. The `options.choices` property will be ignored if `options.type` has a\n * value other than `"select"`. The script\'s execution is halted until the player\n * chooses one of the provided options and presses the "Confirm" button.\n *\n * @example\n * ```js\n * // A Yes/No question. The default is to create a boolean dialog box.\n * const queryA = "Do you enjoy Bitburner?";\n * const resultA = await ns.prompt(queryA);\n * ns.tprint(`${queryA} ${resultA}`);\n *\n * // Another Yes/No question. Can also create a boolean dialog box by explicitly\n * // passing the option {"type": "boolean"}.\n * const queryB = "Is programming fun?";\n * const resultB = await ns.prompt(queryB, { type: "boolean" });\n * ns.tprint(`${queryB} ${resultB}`);\n *\n * // Free-form text box.\n * const resultC = await ns.prompt("Please enter your name.", { type: "text" });\n * ns.tprint(`Hello, ${resultC}.`);\n *\n * // A drop-down list.\n * const resultD = await ns.prompt("Please select your favorite fruit.", {\n * type: "select",\n * choices: ["Apple", "Banana", "Orange", "Pear", "Strawberry"]\n * });\n * ns.tprint(`Your favorite fruit is ${resultD.toLowerCase()}.`);\n * ```\n *\n * @param txt - Text to appear in the prompt dialog box.\n * @param options - Options to modify the prompt the player is shown.\n * @returns True if the player clicks “Yes”; false if the player clicks “No”; or the value entered by the player.\n */\n prompt(\n txt: string,\n options?: { type?: "boolean" | "text" | "select"; choices?: string[] },\n ): Promise;\n\n /**\n * Open up a message box.\n * @param msg - Message to alert.\n */\n alert(msg: string): void;\n\n /**\n * Queue a toast (bottom-right notification).\n * @param msg - Message in the toast.\n * @param variant - Type of toast. Must be one of success, info, warning, error. Defaults to success.\n * @param duration - Duration of toast in ms. Can also be `null` to create a persistent toast. Defaults to 2000.\n */\n toast(msg: string, variant?: ToastVariant | `${ToastVariant}`, duration?: number | null): void;\n\n /**\n * Download a file from the internet.\n * @remarks\n * RAM cost: 0 GB\n *\n * Retrieves data from a URL and downloads it to a file on the specified server.\n * The data can only be downloaded to a script (.js or .script) or a text file (.txt).\n * If the file already exists, it will be overwritten by this command.\n * Note that it will not be possible to download data from many websites because they\n * do not allow cross-origin resource sharing (CORS).\n *\n * IMPORTANT: This is an asynchronous function that returns a Promise.\n * The Promise’s resolved value will be a boolean indicating whether or not the data was\n * successfully retrieved from the URL. Because the function is async and returns a Promise,\n * it is recommended you use wget in NetscriptJS (Netscript 2.0).\n *\n * In NetscriptJS, you must preface any call to wget with the await keyword (like you would {@link NS.hack | hack} or {@link NS.sleep | sleep}).\n * wget will still work in Netscript 1.0, but the function\'s execution will not be synchronous\n * (i.e. it may not execute when you expect/want it to).\n * Furthermore, since Promises are not supported in ES5,\n * you will not be able to process the returned value of wget in Netscript 1.0.\n *\n * @example\n * ```js\n * await ns.wget("https://raw.githubusercontent.com/bitburner-official/bitburner-src/master/README.md", "game_readme.txt");\n * ```\n * @param url - URL to pull data from.\n * @param target - Filename to write data to. Must be script or text file.\n * @param host - Optional hostname/ip of server for target file.\n * @returns True if the data was successfully retrieved from the URL, false otherwise.\n */\n wget(url: string, target: string, host?: string): Promise;\n\n /**\n * Returns the amount of Faction favor required to be able to donate to a faction.\n *\n * @remarks RAM cost: 0.1 GB\n * @returns Amount of Faction favor required to be able to donate to a faction.\n */\n getFavorToDonate(): number;\n\n /**\n * Get the current Bitnode multipliers.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns an object containing the current (or supplied) BitNode multipliers.\n * This function requires you to be in Bitnode 5 or have Source-File 5 in order to run.\n * The multipliers are returned in decimal forms (e.g. 1.5 instead of 150%).\n * The multipliers represent the difference between the current BitNode and\n * the original BitNode (BitNode-1).\n *\n * For example, if the CrimeMoney multiplier has a value of 0.1, then that means\n * that committing crimes in the current BitNode will only give 10% of the money\n * you would have received in BitNode-1.\n *\n * @example\n * ```js\n * const mults = ns.getBitNodeMultipliers();\n * ns.tprint(`ServerMaxMoney: ${mults.ServerMaxMoney}`);\n * ns.tprint(`HackExpGain: ${mults.HackExpGain}`);\n * ```\n * @returns Object containing the current BitNode multipliers.\n */\n getBitNodeMultipliers(n?: number, lvl?: number): BitNodeMultipliers;\n\n /**\n * Get information about the player.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Returns an object with information on the current player.\n *\n * @returns Player info\n */\n getPlayer(): Player;\n\n /**\n * Get information about the sources of income for this run.\n * @remarks\n * RAM cost: 1.0 GB\n *\n * Returns an object with information on the income sources for this run\n *\n * @returns Money sources\n */\n getMoneySources(): MoneySources;\n\n /**\n * Add callback function when the script dies\n * @remarks\n * RAM cost: 0 GB\n *\n * NS2 exclusive\n *\n * Add callback to be executed when the script dies.\n */\n atExit(f: () => void): void;\n\n /**\n * Move a file on the target server.\n * @remarks\n * RAM cost: 0 GB\n *\n * Move the source file to the specified destination on the target server.\n *\n * This command only works for scripts and text files (.txt). It cannot, however, be used\n * to convert from script to text file, or vice versa.\n *\n * This function can also be used to rename files.\n *\n * @param host - Hostname of target server.\n * @param source - Filename of the source file.\n * @param destination - Filename of the destination file.\n */\n mv(host: string, source: string, destination: string): void;\n\n /** Get information about resets.\n * @remarks\n * RAM cost: 1 GB\n *\n * @example\n * ```js\n * const resetInfo = ns.getResetInfo();\n * const lastAugReset = resetInfo.lastAugReset;\n * ns.tprint(`The last augmentation reset was: ${new Date(lastAugReset)}`);\n * ns.tprint(`It has been ${Date.now() - lastAugReset}ms since the last augmentation reset.`);\n * ```\n * */\n getResetInfo(): ResetInfo;\n\n /**\n * Get the ram cost of a netscript function.\n *\n * @remarks\n * RAM cost: 0 GB\n *\n * @param name - The fully-qualified function name, without the leading `ns`. Example inputs: `hack`, `tprint`, `stock.getPosition`.\n */\n getFunctionRamCost(name: string): number;\n\n /**\n * Parse command line flags.\n * @remarks\n * RAM cost: 0 GB\n *\n * Allows Unix-like flag parsing.\n * @example\n * ```js\n * export async function main(ns) {\n * const data = ns.flags([\n * [\'delay\', 0], // a default number means this flag is a number\n * [\'server\', \'foodnstuff\'], // a default string means this flag is a string\n * [\'exclude\', []], // a default array means this flag is a default array of string\n * [\'help\', false], // a default boolean means this flag is a boolean\n * ]);\n * ns.tprint(data);\n * }\n *\n * // [home ~/]> run example.js\n * // {"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":false}\n * // [home ~/]> run example.js --delay 3000\n * // {"_":[],"server":"foodnstuff","exclude":[],"help":false,"delay":3000}\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi\n * // {"_":[],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi hello world\n * // {"_":["hello","world"],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b\n * // {"_":["hello","world"],"help":false,"delay":3000,"server":"harakiri-sushi","exclude":["a","b"]}\n * // [home ~/]> run example.script --help\n * // {"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":true}\n * ```\n */\n flags(schema: [string, string | number | boolean | string[]][]): { [key: string]: ScriptArg | string[] };\n\n /**\n * Share the server\'s ram with your factions.\n * @remarks\n * RAM cost: 2.4 GB\n *\n * Increases rep/second for all faction work while share is running. Each cycle of ns.share() is 10 seconds.\n * Scales with thread count, but at a sharply decreasing rate.\n */\n share(): Promise;\n\n /**\n * Share Power has a multiplicative effect on rep/second while doing work for a faction.\n * Share Power increases incrementally for every thread of share running on your server network, but at a sharply decreasing rate.\n * @remarks\n * RAM cost: 0.2 GB\n */\n getSharePower(): number;\n\n enums: NSEnums;\n}\n\n// BASE ENUMS\n/** @public */\ndeclare enum ToastVariant {\n SUCCESS = "success",\n WARNING = "warning",\n ERROR = "error",\n INFO = "info",\n}\n\n/** @public */\ndeclare enum CrimeType {\n shoplift = "Shoplift",\n robStore = "Rob Store",\n mug = "Mug",\n larceny = "Larceny",\n dealDrugs = "Deal Drugs",\n bondForgery = "Bond Forgery",\n traffickArms = "Traffick Arms",\n homicide = "Homicide",\n grandTheftAuto = "Grand Theft Auto",\n kidnap = "Kidnap",\n assassination = "Assassination",\n heist = "Heist",\n}\n\n/** @public */\ndeclare enum FactionWorkType {\n hacking = "hacking",\n field = "field",\n security = "security",\n}\n\n/** @public */\ndeclare enum UniversityClassType {\n computerScience = "Computer Science",\n dataStructures = "Data Structures",\n networks = "Networks",\n algorithms = "Algorithms",\n management = "Management",\n leadership = "Leadership",\n}\n\n/** @public */\ndeclare enum GymType {\n strength = "str",\n defense = "def",\n dexterity = "dex",\n agility = "agi",\n}\n\n/** @public */\ndeclare enum JobName {\n software0 = "Software Engineering Intern",\n software1 = "Junior Software Engineer",\n software2 = "Senior Software Engineer",\n software3 = "Lead Software Developer",\n software4 = "Head of Software",\n software5 = "Head of Engineering",\n software6 = "Vice President of Technology",\n software7 = "Chief Technology Officer",\n IT0 = "IT Intern",\n IT1 = "IT Analyst",\n IT2 = "IT Manager",\n IT3 = "Systems Administrator",\n securityEng = "Security Engineer",\n networkEng0 = "Network Engineer",\n networkEng1 = "Network Administrator",\n business0 = "Business Intern",\n business1 = "Business Analyst",\n business2 = "Business Manager",\n business3 = "Operations Manager",\n business4 = "Chief Financial Officer",\n business5 = "Chief Executive Officer",\n security0 = "Security Guard",\n security1 = "Security Officer",\n security2 = "Security Supervisor",\n security3 = "Head of Security",\n agent0 = "Field Agent",\n agent1 = "Secret Agent",\n agent2 = "Special Operative",\n waiter = "Waiter",\n employee = "Employee",\n softwareConsult0 = "Software Consultant",\n softwareConsult1 = "Senior Software Consultant",\n businessConsult0 = "Business Consultant",\n businessConsult1 = "Senior Business Consultant",\n waiterPT = "Part-time Waiter",\n employeePT = "Part-time Employee",\n}\n\n// CORP ENUMS - Changed to types\n/** @public */\ntype CorpEmployeePosition =\n | "Operations"\n | "Engineer"\n | "Business"\n | "Management"\n | "Research & Development"\n | "Intern"\n | "Unassigned";\n\n/** @public */\ntype CorpIndustryName =\n | "Spring Water"\n | "Water Utilities"\n | "Agriculture"\n | "Fishing"\n | "Mining"\n | "Refinery"\n | "Restaurant"\n | "Tobacco"\n | "Chemical"\n | "Pharmaceutical"\n | "Computer Hardware"\n | "Robotics"\n | "Software"\n | "Healthcare"\n | "Real Estate";\n\n/** @public */\ntype CorpSmartSupplyOption = "leftovers" | "imports" | "none";\n\n/** Names of all cities\n * @public */\ndeclare enum CityName {\n Aevum = "Aevum",\n Chongqing = "Chongqing",\n Sector12 = "Sector-12",\n NewTokyo = "New Tokyo",\n Ishima = "Ishima",\n Volhaven = "Volhaven",\n}\n\n/** Names of all locations\n * @public */\ndeclare enum LocationName {\n AevumAeroCorp = "AeroCorp",\n AevumBachmanAndAssociates = "Bachman & Associates",\n AevumClarkeIncorporated = "Clarke Incorporated",\n AevumCrushFitnessGym = "Crush Fitness Gym",\n AevumECorp = "ECorp",\n AevumFulcrumTechnologies = "Fulcrum Technologies",\n AevumGalacticCybersystems = "Galactic Cybersystems",\n AevumNetLinkTechnologies = "NetLink Technologies",\n AevumPolice = "Aevum Police Headquarters",\n AevumRhoConstruction = "Rho Construction",\n AevumSnapFitnessGym = "Snap Fitness Gym",\n AevumSummitUniversity = "Summit University",\n AevumWatchdogSecurity = "Watchdog Security",\n AevumCasino = "Iker Molina Casino",\n\n ChongqingKuaiGongInternational = "KuaiGong International",\n ChongqingSolarisSpaceSystems = "Solaris Space Systems",\n ChongqingChurchOfTheMachineGod = "Church of the Machine God",\n\n Sector12AlphaEnterprises = "Alpha Enterprises",\n Sector12BladeIndustries = "Blade Industries",\n Sector12CIA = "Central Intelligence Agency",\n Sector12CarmichaelSecurity = "Carmichael Security",\n Sector12CityHall = "Sector-12 City Hall",\n Sector12DeltaOne = "DeltaOne",\n Sector12FoodNStuff = "FoodNStuff",\n Sector12FourSigma = "Four Sigma",\n Sector12IcarusMicrosystems = "Icarus Microsystems",\n Sector12IronGym = "Iron Gym",\n Sector12JoesGuns = "Joe\'s Guns",\n Sector12MegaCorp = "MegaCorp",\n Sector12NSA = "National Security Agency",\n Sector12PowerhouseGym = "Powerhouse Gym",\n Sector12RothmanUniversity = "Rothman University",\n Sector12UniversalEnergy = "Universal Energy",\n\n NewTokyoDefComm = "DefComm",\n NewTokyoGlobalPharmaceuticals = "Global Pharmaceuticals",\n NewTokyoNoodleBar = "Noodle Bar",\n NewTokyoVitaLife = "VitaLife",\n NewTokyoArcade = "Arcade",\n\n IshimaNovaMedical = "Nova Medical",\n IshimaOmegaSoftware = "Omega Software",\n IshimaStormTechnologies = "Storm Technologies",\n IshimaGlitch = "0x6C1",\n\n VolhavenCompuTek = "CompuTek",\n VolhavenHeliosLabs = "Helios Labs",\n VolhavenLexoCorp = "LexoCorp",\n VolhavenMilleniumFitnessGym = "Millenium Fitness Gym",\n VolhavenNWO = "NWO",\n VolhavenOmniTekIncorporated = "OmniTek Incorporated",\n VolhavenOmniaCybersystems = "Omnia Cybersystems",\n VolhavenSysCoreSecurities = "SysCore Securities",\n VolhavenZBInstituteOfTechnology = "ZB Institute of Technology",\n\n Hospital = "Hospital",\n Slums = "The Slums",\n TravelAgency = "Travel Agency",\n WorldStockExchange = "World Stock Exchange",\n\n Void = "The Void",\n}\n\n/** Names of all companies\n * @public */\ndeclare enum CompanyName {\n ECorp = "ECorp",\n MegaCorp = "MegaCorp",\n BachmanAndAssociates = "Bachman & Associates",\n BladeIndustries = "Blade Industries",\n NWO = "NWO",\n ClarkeIncorporated = "Clarke Incorporated",\n OmniTekIncorporated = "OmniTek Incorporated",\n FourSigma = "Four Sigma",\n KuaiGongInternational = "KuaiGong International",\n FulcrumTechnologies = "Fulcrum Technologies",\n StormTechnologies = "Storm Technologies",\n DefComm = "DefComm",\n HeliosLabs = "Helios Labs",\n VitaLife = "VitaLife",\n IcarusMicrosystems = "Icarus Microsystems",\n UniversalEnergy = "Universal Energy",\n GalacticCybersystems = "Galactic Cybersystems",\n AeroCorp = "AeroCorp",\n OmniaCybersystems = "Omnia Cybersystems",\n SolarisSpaceSystems = "Solaris Space Systems",\n DeltaOne = "DeltaOne",\n GlobalPharmaceuticals = "Global Pharmaceuticals",\n NovaMedical = "Nova Medical",\n CIA = "Central Intelligence Agency",\n NSA = "National Security Agency",\n WatchdogSecurity = "Watchdog Security",\n LexoCorp = "LexoCorp",\n RhoConstruction = "Rho Construction",\n AlphaEnterprises = "Alpha Enterprises",\n Police = "Aevum Police Headquarters",\n SysCoreSecurities = "SysCore Securities",\n CompuTek = "CompuTek",\n NetLinkTechnologies = "NetLink Technologies",\n CarmichaelSecurity = "Carmichael Security",\n FoodNStuff = "FoodNStuff",\n JoesGuns = "Joe\'s Guns",\n OmegaSoftware = "Omega Software",\n NoodleBar = "Noodle Bar",\n}\n\n/** @public */\nexport type NSEnums = {\n CityName: typeof CityName;\n CrimeType: typeof CrimeType;\n FactionWorkType: typeof FactionWorkType;\n GymType: typeof GymType;\n JobName: typeof JobName;\n LocationName: typeof LocationName;\n ToastVariant: typeof ToastVariant;\n UniversityClassType: typeof UniversityClassType;\n CompanyName: typeof CompanyName;\n};\n\n/**\n * Corporation Office API\n * @remarks\n * requires the Office API upgrade from your corporation.\n * @public\n */\n\nexport interface OfficeAPI {\n /**\n * Hire an employee.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param employeePosition - Position to place into. Defaults to "Unassigned".\n * @returns True if an employee was hired, false otherwise\n */\n hireEmployee(divisionName: string, city: CityName | `${CityName}`, employeePosition?: CorpEmployeePosition): boolean;\n /**\n * Upgrade office size.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param size - Amount of positions to open\n */\n upgradeOfficeSize(divisionName: string, city: CityName | `${CityName}`, size: number): void;\n /**\n * Throw a party for your employees\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param costPerEmployee - Amount to spend per employee.\n * @returns Multiplier for morale, or zero on failure\n */\n throwParty(divisionName: string, city: CityName | `${CityName}`, costPerEmployee: number): number;\n /**\n * Buy tea for your employees\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @returns true if buying tea was successful, false otherwise\n */\n buyTea(divisionName: string, city: CityName | `${CityName}`): boolean;\n /**\n * Hire AdVert.\n * @param divisionName - Name of the division\n */\n hireAdVert(divisionName: string): void;\n /**\n * Purchase a research\n * @param divisionName - Name of the division\n * @param researchName - Name of the research\n */\n research(divisionName: string, researchName: string): void;\n /**\n * Get data about an office\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @returns Office data\n */\n getOffice(divisionName: string, city: CityName | `${CityName}`): Office;\n /**\n * Get the cost to hire AdVert.\n * @param divisionName - Name of the division.\n * @returns The cost to hire AdVert.\n */\n getHireAdVertCost(divisionName: string): number;\n /**\n * Get the number of times you have hired AdVert.\n * @param divisionName - Name of the division.\n * @returns Number of times you have hired AdVert.\n */\n getHireAdVertCount(divisionName: string): number;\n /**\n * Get the cost to unlock research\n * @param divisionName - Name of the division\n * @param researchName - Name of the research\n * @returns cost\n */\n getResearchCost(divisionName: string, researchName: string): number;\n /**\n * Gets if you have unlocked a research\n * @param divisionName - Name of the division\n * @param researchName - Name of the research\n * @returns true is unlocked, false if not\n */\n hasResearched(divisionName: string, researchName: string): boolean;\n /**\n * Set the auto job assignment for a job\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param job - Name of the job\n * @param amount - Number of employees to assign to that job\n * @returns true if the employee count reached the target amount, false if not\n */\n setAutoJobAssignment(divisionName: string, city: CityName | `${CityName}`, job: string, amount: number): boolean;\n /**\n * Cost to Upgrade office size.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param size - Amount of positions to open\n * @returns Cost of upgrading the office\n */\n getOfficeSizeUpgradeCost(divisionName: string, city: CityName | `${CityName}`, asize: number): number;\n}\n\n/**\n * Corporation Warehouse API\n * @remarks\n * Requires the Warehouse API upgrade from your corporation.\n * @public\n */\nexport interface WarehouseAPI {\n /**\n * Set material sell data.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param amt - Amount to sell, can be "MAX"\n * @param price - Price to sell, can be "MP"\n */\n sellMaterial(\n divisionName: string,\n city: CityName | `${CityName}`,\n materialName: string,\n amt: string,\n price: string,\n ): void;\n /**\n * Set product sell data.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param productName - Name of the product\n * @param amt - Amount to sell, can be "MAX"\n * @param price - Price to sell, can be "MP"\n * @param all - Sell in all city\n */\n sellProduct(\n divisionName: string,\n city: CityName | `${CityName}`,\n productName: string,\n amt: string,\n price: string,\n all: boolean,\n ): void;\n /**\n * Discontinue a product.\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n */\n discontinueProduct(divisionName: string, productName: string): void;\n /**\n * Set smart supply\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param enabled - smart supply enabled\n */\n setSmartSupply(divisionName: string, city: CityName | `${CityName}`, enabled: boolean): void;\n /**\n * Set whether smart supply uses leftovers before buying\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param option - smart supply option, "leftovers" to use leftovers, "imports" to use only imported materials, "none" to not use materials from store\n */\n setSmartSupplyOption(\n divisionName: string,\n city: CityName | `${CityName}`,\n materialName: string,\n option: CorpSmartSupplyOption,\n ): void;\n /**\n * Set material buy data\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param amt - Amount of material to buy\n */\n buyMaterial(divisionName: string, city: CityName | `${CityName}`, materialName: string, amt: number): void;\n /**\n * Set material to bulk buy\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param amt - Amount of material to buy\n */\n bulkPurchase(divisionName: string, city: CityName | `${CityName}`, materialName: string, amt: number): void;\n\n /** Get warehouse data\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @returns warehouse data */\n getWarehouse(divisionName: string, city: CityName | `${CityName}`): Warehouse;\n\n /** Get product data\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param productName - Name of the product\n * @returns product data */\n getProduct(divisionName: string, cityName: CityName | `${CityName}`, productName: string): Product;\n /**\n * Get material data\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @returns material data\n */\n getMaterial(divisionName: string, city: CityName | `${CityName}`, materialName: string): Material;\n /**\n * Set market TA 1 for a material.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param on - market ta enabled\n */\n setMaterialMarketTA1(divisionName: string, city: CityName | `${CityName}`, materialName: string, on: boolean): void;\n /**\n * Set market TA 2 for a material.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param on - market ta enabled\n */\n setMaterialMarketTA2(divisionName: string, city: CityName | `${CityName}`, materialName: string, on: boolean): void;\n\n /** * Set market TA 1 for a product.\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n * @param on - market ta enabled */\n setProductMarketTA1(divisionName: string, productName: string, on: boolean): void;\n\n /** Set market TA 2 for a product.\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n * @param on - market ta enabled */\n setProductMarketTA2(divisionName: string, productName: string, on: boolean): void;\n /**\n * Set material export data\n * @param sourceDivision - Source division\n * @param sourceCity - Source city\n * @param targetDivision - Target division\n * @param targetCity - Target city\n * @param materialName - Name of the material\n * @param amt - Amount of material to export.\n */\n exportMaterial(\n sourceDivision: string,\n sourceCity: CityName | `${CityName}`,\n targetDivision: string,\n targetCity: CityName | `${CityName}`,\n materialName: string,\n amt: number | string,\n ): void;\n /**\n * Cancel material export\n * @param sourceDivision - Source division\n * @param sourceCity - Source city\n * @param targetDivision - Target division\n * @param targetCity - Target city\n * @param materialName - Name of the material\n */\n cancelExportMaterial(\n sourceDivision: string,\n sourceCity: CityName | `${CityName}`,\n targetDivision: string,\n targetCity: CityName | `${CityName}`,\n materialName: string,\n ): void;\n /**\n * Purchase warehouse for a new city\n * @param divisionName - Name of the division\n * @param city - Name of the city\n */\n purchaseWarehouse(divisionName: string, city: CityName | `${CityName}`): void;\n /**\n * Upgrade warehouse\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param amt - amount of upgrades defaults to 1\n */\n upgradeWarehouse(divisionName: string, city: CityName | `${CityName}`, amt?: number): void;\n /**\n * Create a new product\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param productName - Name of the product\n * @param designInvest - Amount to invest for the design of the product.\n * @param marketingInvest - Amount to invest for the marketing of the product.\n */\n makeProduct(\n divisionName: string,\n city: CityName | `${CityName}`,\n productName: string,\n designInvest: number,\n marketingInvest: number,\n ): void;\n /**\n * Limit Material Production.\n * @param divisionName - Name of the division.\n * @param city - Name of the city.\n * @param materialName - Name of the material.\n * @param qty - Amount to limit to. Pass a negative value to remove the limit instead.\n */\n limitMaterialProduction(\n divisionName: string,\n city: CityName | `${CityName}`,\n materialName: string,\n qty: number,\n ): void;\n /**\n * Limit Product Production.\n * @param divisionName - Name of the division.\n * @param city - Name of the city.\n * @param productName - Name of the product.\n * @param qty - Amount to limit to. Pass a negative value to remove the limit instead.\n */\n limitProductProduction(divisionName: string, city: CityName | `${CityName}`, productName: string, qty: number): void;\n /**\n * Gets the cost to upgrade a warehouse to the next level\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param amt - amount of upgrades. Optional, defaults to 1\n * @returns cost to upgrade\n */\n getUpgradeWarehouseCost(divisionName: string, city: CityName | `${CityName}`, amt?: number): number;\n /**\n * Check if you have a warehouse in city\n * @returns true if warehouse is present, false if not\n */\n hasWarehouse(divisionName: string, city: CityName | `${CityName}`): boolean;\n}\n\n/**\n * Corporation API\n * @public\n */\nexport interface Corporation extends WarehouseAPI, OfficeAPI {\n /** Returns whether the player has a corporation. Does not require API access.\n * @returns whether the player has a corporation */\n hasCorporation(): boolean;\n\n /** Create a Corporation\n * @param corporationName - Name of the corporation\n * @param selfFund - If you should self fund, defaults to true, false will only work on Bitnode 3\n * @returns true if created and false if not */\n createCorporation(corporationName: string, selfFund: boolean): boolean;\n\n /** Check if you have a one time unlockable upgrade\n * @param upgradeName - Name of the upgrade\n * @returns true if unlocked and false if not */\n hasUnlock(upgradeName: string): boolean;\n\n /** Gets the cost to unlock a one time unlockable upgrade\n * @param upgradeName - Name of the upgrade\n * @returns cost of the upgrade */\n getUnlockCost(upgradeName: string): number;\n\n /** Get the level of a levelable upgrade\n * @param upgradeName - Name of the upgrade\n * @returns the level of the upgrade */\n getUpgradeLevel(upgradeName: string): number;\n\n /** Gets the cost to unlock the next level of a levelable upgrade\n * @param upgradeName - Name of the upgrade\n * @returns cost of the upgrade */\n getUpgradeLevelCost(upgradeName: string): number;\n\n /** Get an offer for investment based on you companies current valuation\n * @returns An offer of investment */\n getInvestmentOffer(): InvestmentOffer;\n\n /** Get corporation related constants\n * @returns corporation related constants */\n getConstants(): CorpConstants;\n\n /** Get constant industry definition data for a specific industry */\n getIndustryData(industryName: CorpIndustryName): CorpIndustryData;\n\n /** Get constant data for a specific material */\n getMaterialData(materialName: CorpMaterialName): CorpMaterialConstantData;\n\n /** Accept investment based on you companies current valuation\n * @remarks\n * Is based on current valuation and will not honer a specific Offer\n * @returns An offer of investment */\n acceptInvestmentOffer(): boolean;\n\n /** Go public\n * @param numShares - number of shares you would like to issue for your IPO\n * @returns true if you successfully go public, false if not */\n goPublic(numShares: number): boolean;\n\n /** Bribe a faction\n * @param factionName - Faction name\n * @param amountCash - Amount of money to bribe\n * @returns True if successful, false if not */\n bribe(factionName: string, amountCash: number): boolean;\n\n /** Get corporation data\n * @returns Corporation data */\n getCorporation(): CorporationInfo;\n\n /** Get division data\n * @param divisionName - Name of the division\n * @returns Division data */\n getDivision(divisionName: string): Division;\n\n /** Expand to a new industry\n * @param industryType - Name of the industry\n * @param divisionName - Name of the division */\n expandIndustry(industryType: CorpIndustryName, divisionName: string): void;\n\n /** Expand to a new city\n * @param divisionName - Name of the division\n * @param city - Name of the city */\n expandCity(divisionName: string, city: CityName | `${CityName}`): void;\n\n /** Unlock an upgrade\n * @param upgradeName - Name of the upgrade */\n purchaseUnlock(upgradeName: string): void;\n\n /** Level an upgrade.\n * @param upgradeName - Name of the upgrade */\n levelUpgrade(upgradeName: string): void;\n\n /** Issue dividends\n * @param rate - Fraction of profit to issue as dividends. */\n issueDividends(rate: number): void;\n\n /** Issue new shares\n * @param amount - Number of new shares to issue, will be rounded to nearest 10m. Defaults to max amount.\n * @returns Amount of funds generated for the corporation. */\n issueNewShares(amount?: number): number;\n\n /** Buyback Shares\n * @param amount - Amount of shares to buy back, must be integer and larger than 0 */\n buyBackShares(amount: number): void;\n\n /** Sell Shares\n * @param amount - Amount of shares to sell, must be integer between 1 and 100t */\n sellShares(amount: number): void;\n\n /** Get bonus time.\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\n * “Bonus time” makes the game progress faster.\n * @returns Bonus time for the Corporation mechanic in milliseconds. */\n getBonusTime(): number;\n}\n\n/** Product rating information\n * @public */\ninterface CorpProductData {\n /** Name of the product */\n name: string;\n /** Verb used to describe creation of the product */\n verb: string;\n /** Description of product creation */\n desc: string;\n /** Weighting factors for product */\n ratingWeights: {\n aesthetics?: number;\n durability?: number;\n features?: number;\n quality?: number;\n performance?: number;\n reliability?: number;\n };\n}\n\n/** Data for an individual industry\n * @public */\ninterface CorpIndustryData {\n startingCost: number;\n description: string;\n product?: CorpProductData;\n recommendStarting: boolean;\n requiredMaterials: Partial>;\n /** Real estate factor */\n realEstateFactor?: number;\n /** Scientific research factor (affects quality) */\n scienceFactor?: number;\n /** Hardware factor */\n hardwareFactor?: number;\n /** Robots factor */\n robotFactor?: number;\n /** AI Cores factor */\n aiCoreFactor?: number;\n /** Advertising factor (affects sales) */\n advertisingFactor?: number;\n producedMaterials?: CorpMaterialName[];\n}\n\n/**\n * General info about a corporation\n * @public\n */\ninterface CorporationInfo {\n /** Name of the corporation */\n name: string;\n /** Funds available */\n funds: number;\n /** Revenue per second this cycle */\n revenue: number;\n /** Expenses per second this cycle */\n expenses: number;\n /** Indicating if the company is public */\n public: boolean;\n /** Total number of shares issues by this corporation */\n totalShares: number;\n /** Amount of share owned */\n numShares: number;\n /** Cooldown until shares can be sold again */\n shareSaleCooldown: number;\n /** Amount of acquirable shares. */\n issuedShares: number;\n /** Price of the shares */\n sharePrice: number;\n /** Fraction of profits issued as dividends */\n dividendRate: number;\n /** Tax applied on your earnings as a shareholder */\n dividendTax: number;\n /** Your earnings as a shareholder per second this cycle */\n dividendEarnings: number;\n /** State of the corporation. Possible states are START, PURCHASE, PRODUCTION, EXPORT, SALE. */\n state: string;\n /** Array of all division names */\n divisions: string[];\n}\n\n/**\n * Corporation related constants\n * @public\n */\ninterface CorpConstants {\n /** Names of all corporation game states */\n stateNames: CorpStateName[];\n /** Names of all employee positions */\n employeePositions: CorpEmployeePosition[];\n /** Names of all industries */\n industryNames: CorpIndustryName[];\n /** Names of all materials */\n materialNames: CorpMaterialName[];\n /** Names of all one-time corporation-wide unlocks */\n unlockNames: CorpUnlockName[];\n /** Names of all corporation-wide upgrades */\n upgradeNames: CorpUpgradeName[];\n /** Names of all researches common to all industries */\n researchNamesBase: CorpResearchName[];\n /** Names of all researches only available to product industries */\n researchNamesProductOnly: CorpResearchName[];\n /** Names of all researches */\n researchNames: CorpResearchName[];\n initialShares: number;\n /** When selling large number of shares, price is dynamically updated for every batch of this amount */\n sharesPerPriceUpdate: number;\n /** Cooldown for issue new shares cooldown in game cycles (1 game cycle = 200ms) */\n issueNewSharesCooldown: number;\n /** Cooldown for selling shares in game cycles (1 game cycle = 200ms) */\n sellSharesCooldown: number;\n teaCostPerEmployee: number;\n gameCyclesPerMarketCycle: number;\n gameCyclesPerCorpStateCycle: number;\n secondsPerMarketCycle: number;\n warehouseInitialCost: number;\n warehouseInitialSize: number;\n warehouseSizeUpgradeCostBase: number;\n officeInitialCost: number;\n officeInitialSize: number;\n officeSizeUpgradeCostBase: number;\n bribeThreshold: number;\n bribeAmountPerReputation: number;\n baseProductProfitMult: number;\n dividendMaxRate: number;\n /** Conversion factor for employee stats to initial salary */\n employeeSalaryMultiplier: number;\n marketCyclesPerEmployeeRaise: number;\n employeeRaiseAmount: number;\n /** Max products for a division without upgrades */\n maxProductsBase: number;\n /** The minimum decay value for morale/energy */\n minEmployeeDecay: number;\n smartSupplyOptions: CorpSmartSupplyOption[];\n}\n/** @public */\ntype CorpStateName = "START" | "PURCHASE" | "PRODUCTION" | "EXPORT" | "SALE";\n\n/** @public */\ntype CorpMaterialName =\n | "Minerals"\n | "Ore"\n | "Water"\n | "Food"\n | "Plants"\n | "Metal"\n | "Hardware"\n | "Chemicals"\n | "Drugs"\n | "Robots"\n | "AI Cores"\n | "Real Estate";\n\n/** @public */\ntype CorpUnlockName =\n | "Export"\n | "Smart Supply"\n | "Market Research - Demand"\n | "Market Data - Competition"\n | "VeChain"\n | "Shady Accounting"\n | "Government Partnership"\n | "Warehouse API"\n | "Office API";\n\n/** @public */\ntype CorpUpgradeName =\n | "Smart Factories"\n | "Smart Storage"\n | "DreamSense"\n | "Wilson Analytics"\n | "Nuoptimal Nootropic Injector Implants"\n | "Speech Processor Implants"\n | "Neural Accelerators"\n | "FocusWires"\n | "ABC SalesBots"\n | "Project Insight";\n\n/** @public */\ntype CorpResearchName =\n | "Hi-Tech R&D Laboratory"\n | "AutoBrew"\n | "AutoPartyManager"\n | "Automatic Drug Administration"\n | "CPH4 Injections"\n | "Drones"\n | "Drones - Assembly"\n | "Drones - Transport"\n | "Go-Juice"\n | "HRBuddy-Recruitment"\n | "HRBuddy-Training"\n | "Market-TA.I"\n | "Market-TA.II"\n | "Overclock"\n | "Self-Correcting Assemblers"\n | "Sti.mu"\n | "uPgrade: Capacity.I"\n | "uPgrade: Capacity.II"\n | "uPgrade: Dashboard"\n | "uPgrade: Fulcrum"\n | "sudo.Assist";\n\n/**\n * Corporation material information\n * @public\n */\ninterface CorpMaterialConstantData {\n /** Name of the material */\n name: string;\n /** Size of the material */\n size: number;\n demandBase: number;\n /** Min and max demand */\n demandRange: [min: number, max: number];\n competitionBase: number;\n competitionRange: [min: number, max: number];\n baseCost: number;\n maxVolatility: number;\n baseMarkup: number;\n}\n\n/**\n * Corporation industry information\n * @public\n */\ninterface IndustryData {\n /** Industry type */\n type: CorpIndustryName;\n /** Cost to make a new division of this industry type */\n cost: number;\n /** Materials required for production and their amounts */\n requiredMaterials: Record;\n /** Materials produced */\n producedMaterials?: string[];\n /** Whether the division makes materials */\n makesMaterials: boolean;\n /** Whether the division makes products */\n makesProducts: boolean;\n /** Product type */\n productType?: string;\n}\n\n/**\n * Product in a warehouse\n * @public\n */\ninterface Product {\n /** Name of the product */\n name: string;\n /** Demand for the product, only present if "Market Research - Demand" unlocked */\n demand: number | undefined;\n /** Competition for the product, only present if "Market Research - Competition" unlocked */\n competition: number | undefined;\n /** Rating based on stats */\n rating: number;\n /** Effective rating in the specific city */\n effectiveRating: number;\n /** Product stats */\n stats: {\n quality: number;\n performance: number;\n durability: number;\n reliability: number;\n aesthetics: number;\n features: number;\n };\n /** Production cost */\n productionCost: number;\n /** Desired sell price, can be "MP+5" */\n desiredSellPrice: string | number;\n /** Desired sell amount, e.g. "PROD/2" */\n desiredSellAmount: string | number;\n /** Amount of product stored in warehouse*/\n stored: number;\n /** Amount of product produced last cycle */\n productionAmount: number;\n /** Amount of product sold last cycle */\n actualSellAmount: number;\n /** A number between 0-100 representing percentage completion */\n developmentProgress: number;\n /** Funds that were spent on advertising the product */\n advertisingInvestment: number;\n /** Funds that were spent on designing the product */\n designInvestment: number;\n}\n\n/**\n * Material in a warehouse\n * @public\n */\ninterface Material {\n /** Name of the material */\n name: CorpMaterialName;\n /** Amount of material */\n stored: number;\n /** Quality of the material */\n quality: number;\n /** Demand for the material, only present if "Market Research - Demand" unlocked */\n demand: number | undefined;\n /** Competition for the material, only present if "Market Research - Competition" unlocked */\n competition: number | undefined;\n /** Amount of material produced last cycle */\n productionAmount: number;\n /** Amount of material sold last cycle */\n actualSellAmount: number;\n /** Cost to buy material */\n marketPrice: number;\n /** Sell cost, can be "MP+5" */\n desiredSellPrice: string | number;\n /** Sell amount, can be "PROD/2" */\n desiredSellAmount: string | number;\n /** Export orders */\n exports: Export[];\n}\n\n/**\n * Export order for a material\n * @public\n */\ninterface Export {\n /** Division the material is being exported to */\n division: string;\n /** City the material is being exported to */\n city: CityName;\n /** Amount of material exported */\n amount: string;\n}\n\n/**\n * Warehouse for a division in a city\n * @public\n */\ninterface Warehouse {\n /** Amount of size upgrade bought */\n level: number;\n /** City in which the warehouse is located */\n city: CityName;\n /** Total space in the warehouse */\n size: number;\n /** Used space in the warehouse */\n sizeUsed: number;\n /** Smart Supply status in the warehouse */\n smartSupplyEnabled: boolean;\n}\n\n/**\n * Office for a division in a city.\n * @public\n */\nexport interface Office {\n /** City of the office */\n city: CityName;\n /** Maximum number of employee */\n size: number;\n /** Maximum amount of energy of the employees */\n maxEnergy: number;\n /** Maximum morale of the employees */\n maxMorale: number;\n /** Amount of employees */\n numEmployees: number;\n /** Average energy of the employees */\n avgEnergy: number;\n /** Average morale of the employees */\n avgMorale: number;\n /** Total experience of all employees */\n totalExperience: number;\n /** Production of the employees */\n employeeProductionByJob: Record;\n /** Positions of the employees */\n employeeJobs: Record;\n}\n\n/**\n * Corporation division\n * @public\n */\ninterface Division {\n /** Name of the division */\n name: string;\n /** Type of division, like Agriculture */\n type: CorpIndustryName;\n /** Awareness of the division */\n awareness: number;\n /** Popularity of the division */\n popularity: number;\n /** Production multiplier */\n productionMult: number;\n /** Amount of research in that division */\n researchPoints: number;\n /** Revenue last cycle */\n lastCycleRevenue: number;\n /** Expenses last cycle */\n lastCycleExpenses: number;\n /** Revenue this cycle */\n thisCycleRevenue: number;\n /** Expenses this cycle */\n thisCycleExpenses: number;\n /** Number of times AdVert has been bought */\n numAdVerts: number;\n /** Cities in which this division has expanded */\n cities: CityName[];\n /** Names of Products developed by this division */\n products: string[];\n /** Whether the industry this division is in is capable of making products */\n makesProducts: boolean;\n /** How many products this division can support */\n maxProducts: number;\n}\n\n/**\n * Corporation investment offer\n * @public\n */\ninterface InvestmentOffer {\n /** Amount of funds you will get from this investment */\n funds: number;\n /** Amount of share you will give in exchange for this investment */\n shares: number;\n /** Current round of funding (max 4) */\n round: number;\n}\n\n/**\n * Interface Theme\n * @public\n */\ninterface UserInterfaceTheme {\n [key: string]: string | undefined;\n primarylight: string;\n primary: string;\n primarydark: string;\n successlight: string;\n success: string;\n successdark: string;\n errorlight: string;\n error: string;\n errordark: string;\n secondarylight: string;\n secondary: string;\n secondarydark: string;\n warninglight: string;\n warning: string;\n warningdark: string;\n infolight: string;\n info: string;\n infodark: string;\n welllight: string;\n well: string;\n white: string;\n black: string;\n hp: string;\n money: string;\n hack: string;\n combat: string;\n cha: string;\n int: string;\n rep: string;\n disabled: string;\n backgroundprimary: string;\n backgroundsecondary: string;\n button: string;\n}\n\n/**\n * Interface Styles\n * @public\n */\ninterface IStyleSettings {\n fontFamily: string;\n lineHeight: number;\n}\n\n/**\n * Game Information\n * @public\n */\ninterface GameInfo {\n version: string;\n commit: string;\n platform: string;\n}\n\n/**\n * Used for autocompletion\n * @public\n */\ninterface AutocompleteData {\n servers: string[];\n scripts: string[];\n txts: string[];\n flags(schema: [string, string | number | boolean | string[]][]): { [key: string]: ScriptArg | string[] };\n}\n'},94748:e=>{"use strict";e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII="},6161:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjNDI0MjQyIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg=="},51096:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjQzVDNUM1Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg=="},58233:(e,t,n)=>{"use strict";e.exports=n.p+"assets/66f4b86d86164fc117bd.png"},82345:(e,t,n)=>{"use strict";e.exports=n.p+"assets/e97de4daa946331c7e99.png"},97565:(e,t,n)=>{"use strict";e.exports=n.p+"assets/6caf35202b10b52e1fc2.png"},55653:(e,t,n)=>{"use strict";e.exports=n.p+"assets/83b2443ab7e7d346766c.png"},21246:(e,t,n)=>{"use strict";e.exports=n.p+"assets/a1110d6c8d16a14c4570.png"},67456:(e,t,n)=>{"use strict";e.exports=n.p+"assets/c7164b072d62c91c27c6.png"},89204:(e,t,n)=>{"use strict";e.exports=n.p+"assets/cf143be1969d8e602f48.png"},9657:(e,t,n)=>{"use strict";e.exports=n.p+"assets/e66b0c327f97d08e4253.png"},6683:(e,t,n)=>{"use strict";e.exports=n.p+"assets/9f96a5084f4e5f1a6c00.png"},99425:(e,t,n)=>{"use strict";e.exports=n.p+"assets/cb88977ea837bccb9cce.png"},95519:(e,t,n)=>{"use strict";e.exports=n.p+"assets/297df8c0e47764ea1139.png"},90407:(e,t,n)=>{"use strict";e.exports=n.p+"assets/447bc31e61f55e7eff87.png"},37581:(e,t,n)=>{"use strict";e.exports=n.p+"assets/85a7b2896acb62be76f3.png"},76525:(e,t,n)=>{"use strict";e.exports=n.p+"assets/5aa87b7de67a77c91408.png"},33855:(e,t,n)=>{"use strict";e.exports=n.p+"assets/4e0e750f2f09de582197.png"},41458:(e,t,n)=>{"use strict";e.exports=n.p+"assets/8abdb9fe6e1612633be2.png"},65995:()=>{},69966:e=>{"use strict";e.exports=JSON.parse('{"EF":{"CYBERSEC":{"ID":"CYBERSEC","Name":"CyberSec","Description":"Join CyberSec."},"NITESEC":{"ID":"NITESEC","Name":"avmnite-02h","Description":"Join NiteSec."},"THE_BLACK_HAND":{"ID":"THE_BLACK_HAND","Name":"I.I.I.I","Description":"Join The Black Hand."},"BITRUNNERS":{"ID":"BITRUNNERS","Name":"run4theh111z","Description":"Join the BitRunners."},"DAEDALUS":{"ID":"DAEDALUS","Name":"fl1ght.exe","Description":"Join Daedalus."},"THE_COVENANT":{"ID":"THE_COVENANT","Name":"The Covenant","Description":"Join The Covenant."},"ILLUMINATI":{"ID":"ILLUMINATI","Name":"Illuminati","Description":"Join the Illuminati."},"BRUTESSH.EXE":{"ID":"BRUTESSH.EXE","Name":"BruteSSH.exe","Description":"Acquire BruteSSH.exe"},"FTPCRACK.EXE":{"ID":"FTPCRACK.EXE","Name":"FTPCrack.exe","Description":"Acquire FTPCrack.exe"},"RELAYSMTP.EXE":{"ID":"RELAYSMTP.EXE","Name":"relaySMTP.exe","Description":"Acquire relaySMTP.exe"},"HTTPWORM.EXE":{"ID":"HTTPWORM.EXE","Name":"HTTPWorm.exe","Description":"Acquire HTTPWorm.exe"},"SQLINJECT.EXE":{"ID":"SQLINJECT.EXE","Name":"SQLInject.exe","Description":"Acquire SQLInject.exe"},"FORMULAS.EXE":{"ID":"FORMULAS.EXE","Name":"Formulas.exe","Description":"Acquire Formulas.exe"},"SF1.1":{"ID":"SF1.1","Name":"Source Genesis","Description":"Acquire SF1.1"},"SF2.1":{"ID":"SF2.1","Name":"Rise of the Underworld","Description":"Acquire SF2.1"},"SF3.1":{"ID":"SF3.1","Name":"Corporatocracy","Description":"Acquire SF3.1"},"SF4.1":{"ID":"SF4.1","Name":"The Singularity","Description":"Acquire SF4.1"},"SF5.1":{"ID":"SF5.1","Name":"Artificial Intelligence","Description":"Acquire SF5.1"},"SF6.1":{"ID":"SF6.1","Name":"Bladeburners","Description":"Acquire SF6.1"},"SF7.1":{"ID":"SF7.1","Name":"Bladeburners 2079","Description":"Acquire SF7.1"},"SF8.1":{"ID":"SF8.1","Name":"Ghost of Wall Street","Description":"Acquire SF8.1"},"SF9.1":{"ID":"SF9.1","Name":"Hacktocracy","Description":"Acquire SF9.1"},"SF10.1":{"ID":"SF10.1","Name":"Digital Carbon","Description":"Acquire SF10.1"},"SF11.1":{"ID":"SF11.1","Name":"The Big Crash","Description":"Acquire SF11.1"},"SF12.1":{"ID":"SF12.1","Name":"The Recursion","Description":"Acquire SF12.1"},"MONEY_1Q":{"ID":"MONEY_1Q","Name":"Here comes the money!","Description":"Have $1Q on your home computer."},"MONEY_M1B":{"ID":"MONEY_M1B","Name":"Massive debt","Description":"Be $1b in debt."},"INSTALL_1":{"ID":"INSTALL_1","Name":"I never asked for this.","Description":"Install your first augmentation."},"INSTALL_100":{"ID":"INSTALL_100","Name":"I asked for this.","Description":"Have 100 augmentation installed at once."},"QUEUE_40":{"ID":"QUEUE_40","Name":"It\'s time to install","Description":"Have 40 augmentation queued at once."},"HACKING_100000":{"ID":"HACKING_100000","Name":"Power Overwhelming","Description":"Achieve 100 000 hacking skill."},"COMBAT_3000":{"ID":"COMBAT_3000","Name":"One punch man","Description":"Achieve 3000 in all combat stats."},"NEUROFLUX_255":{"ID":"NEUROFLUX_255","Name":"Neuroflux is love, Neuroflux is live","Description":"Install Neuroflux Governor level 255"},"NS2":{"ID":"NS2","Name":"Maximum speed!","Description":"Write an ns2 script."},"FROZE":{"ID":"FROZE","Name":"while(true);","Description":"Restart the game using the reload & kill all option because you froze it with an infinite loop."},"RUNNING_SCRIPTS_1000":{"ID":"RUNNING_SCRIPTS_1000","Name":"Need more real life ram","Description":"Run 1000 scripts simultaneously."},"DRAIN_SERVER":{"ID":"DRAIN_SERVER","Name":"Big trouble","Description":"Drain a server of all its money."},"MAX_RAM":{"ID":"MAX_RAM","Name":"Download more ram","Description":"Maximize your home computer ram."},"MAX_CORES":{"ID":"MAX_CORES","Name":"Download more cores?","Description":"Maximize your home computer cores."},"SCRIPTS_30":{"ID":"SCRIPTS_30","Name":"Thank you folders!","Description":"Have 30 scripts on your home computer."},"KARMA_1000000":{"ID":"KARMA_1000000","Name":"Wretched hive of scum and vilany","Description":"Reach -1m karma."},"STOCK_1q":{"ID":"STOCK_1q","Name":"Wolf of wall street.","Description":"Make 1q on the stock market."},"DISCOUNT":{"ID":"DISCOUNT","Name":"Discount!","Description":"Get a discount at Powerhouse Gym by backdooring their server."},"SCRIPT_32GB":{"ID":"SCRIPT_32GB","Name":"You\'ll need upgrade for this one.","Description":"Write a script that costs 32GB per thread."},"FIRST_HACKNET_NODE":{"ID":"FIRST_HACKNET_NODE","Name":"Free money!","Description":"Purchase your first hacknet node."},"30_HACKNET_NODE":{"ID":"30_HACKNET_NODE","Name":"Big network","Description":"Have 30 hacknet nodes."},"MAX_HACKNET_NODE":{"ID":"MAX_HACKNET_NODE","Name":"That\'s the limit","Description":"Maximize a hacknet node."},"HACKNET_NODE_10M":{"ID":"HACKNET_NODE_10M","Name":"The original hacker","Description":"Make 10m from hacknet nodes."},"REPUTATION_10M":{"ID":"REPUTATION_10M","Name":"Well liked","Description":"Reach 10m reputation with a faction."},"DONATION":{"ID":"DONATION","Name":"Donate!","Description":"Unlock donations with a faction."},"TRAVEL":{"ID":"TRAVEL","Name":"World explorer","Description":"Travel anywhere."},"WORKOUT":{"ID":"WORKOUT","Name":"Gains!","Description":"Workout at a gym."},"TOR":{"ID":"TOR","Name":"The Onion Network","Description":"Purchase the TOR router."},"HOSPITALIZED":{"ID":"HOSPITALIZED","Name":"Ouch!","Description":"Go to the hospital."},"GANG":{"ID":"GANG","Name":"Gangster","Description":"Form a gang."},"FULL_GANG":{"ID":"FULL_GANG","Name":"Don","Description":"Recruit all gang members."},"GANG_TERRITORY":{"ID":"GANG_TERRITORY","Name":"Stay out of my territory","Description":"Have 100% of the territory."},"GANG_MEMBER_POWER":{"ID":"GANG_MEMBER_POWER","Name":"One punch guy","Description":"Have a gang member with 10 000 in 1 skill."},"CORPORATION":{"ID":"CORPORATION","Name":"A small 150b loan.","Description":"Create a corporation."},"CORPORATION_BRIBE":{"ID":"CORPORATION_BRIBE","Name":"Lobbying is great!","Description":"Lower your taxes through lobbying."},"CORPORATION_PROD_1000":{"ID":"CORPORATION_PROD_1000","Name":"Streamlined manufacturing","Description":"Have a division with a production multiplier of 1000."},"CORPORATION_EMPLOYEE_3000":{"ID":"CORPORATION_EMPLOYEE_3000","Name":"Small town","Description":"Have a division with 3000 employee."},"CORPORATION_REAL_ESTATE":{"ID":"CORPORATION_REAL_ESTATE","Name":"Own the land","Description":"Expand to the Real Estate division."},"INTELLIGENCE_255":{"ID":"INTELLIGENCE_255","Name":"Smart!","Description":"Reach intelligence 255"},"BLADEBURNER_DIVISION":{"ID":"BLADEBURNER_DIVISION","Name":"Bladeburners","Description":"Join the Bladeburner division."},"BLADEBURNER_OVERCLOCK":{"ID":"BLADEBURNER_OVERCLOCK","Name":"Overclock!","Description":"Reach maximum level of Overclock"},"BLADEBURNER_UNSPENT_100000":{"ID":"BLADEBURNER_UNSPENT_100000","Name":"You should really spend those.","Description":"Have 100 000 unspent bladeburner skill points."},"4S":{"ID":"4S","Name":"4S","Description":"Purchase the 4S market data."},"FIRST_HACKNET_SERVER":{"ID":"FIRST_HACKNET_SERVER","Name":"The improved hacker.","Description":"Purchase your first hacknet server."},"ALL_HACKNET_SERVER":{"ID":"ALL_HACKNET_SERVER","Name":"Full network","Description":"Buy all hacknet servers."},"MAX_HACKNET_SERVER":{"ID":"MAX_HACKNET_SERVER","Name":"That\'s the new limit.","Description":"Maximize a hacknet server."},"HACKNET_SERVER_1B":{"ID":"HACKNET_SERVER_1B","Name":"Not passive anymore","Description":"Make $1b with hacknet servers."},"MAX_CACHE":{"ID":"MAX_CACHE","Name":"What a waste.","Description":"Cap your hashes."},"SLEEVE_8":{"ID":"SLEEVE_8","Name":"You and what army?","Description":"Purchase all duplicate sleeves from The Covenant."},"INDECISIVE":{"ID":"INDECISIVE","Name":"Too many options.","Description":"Spend 1h straight on the bitverse."},"FAST_BN":{"ID":"FAST_BN","Name":"Speed demon.","Description":"Destroy a bitnode in under 2 days."},"CHALLENGE_BN1":{"ID":"CHALLENGE_BN1","Name":"BN1: Challenge","Description":"Destroy BN1 with at most 128GB and 1 core."},"CHALLENGE_BN2":{"ID":"CHALLENGE_BN2","Name":"BN2: Challenge","Description":"Destroy BN2 without forming a gang."},"CHALLENGE_BN3":{"ID":"CHALLENGE_BN3","Name":"BN3: Challenge","Description":"Destroy BN3 without creating corporation."},"CHALLENGE_BN6":{"ID":"CHALLENGE_BN6","Name":"BN6: Challenge","Description":"Destroy BN6 without joining the bladeburner division."},"CHALLENGE_BN7":{"ID":"CHALLENGE_BN7","Name":"BN7: Challenge","Description":"Destroy BN7 without joining the bladeburner division."},"CHALLENGE_BN8":{"ID":"CHALLENGE_BN8","Name":"BN8: Challenge","Description":"Destroy BN8 without purchasing the 4s market data."},"CHALLENGE_BN9":{"ID":"CHALLENGE_BN9","Name":"BN9: Challenge","Description":"Destroy BN9 without using hacknet servers."},"CHALLENGE_BN10":{"ID":"CHALLENGE_BN10","Name":"BN10: Challenge","Description":"Destroy BN10 without using sleeves."},"CHALLENGE_BN12":{"ID":"CHALLENGE_BN12","Name":"BN12: Challenge","Description":"Destroy BN12 50 times."},"BYPASS":{"ID":"BYPASS","Name":"Exploit: bypass","Description":"Circumventing the ram cost of document."},"PROTOTYPETAMPERING":{"ID":"PROTOTYPETAMPERING","Name":"Exploit: prototype tampering","Description":"Tamper with the Numbers prototype."},"UNCLICKABLE":{"ID":"UNCLICKABLE","Name":"Exploit: unclickable","Description":"Click the unclickable."},"UNDOCUMENTEDFUNCTIONCALL":{"ID":"UNDOCUMENTEDFUNCTIONCALL","Name":"Exploit: undocumented","Description":"Call the undocumented function."},"TIMECOMPRESSION":{"ID":"TIMECOMPRESSION","Name":"Exploit: time compression","Description":"Compress time."},"REALITYALTERATION":{"ID":"REALITYALTERATION","Name":"Exploit: reality alteration","Description":"Alter reality."},"N00DLES":{"ID":"N00DLES","Name":"Exploit: noodles","Description":"Harness the power of the noodles."},"EDITSAVEFILE":{"ID":"EDITSAVEFILE","Name":"Exploit: edit","Description":"Acquire the EditSaveFile Source-File -1"},"UNACHIEVABLE":{"ID":"UNACHIEVABLE","Name":"UNACHIEVABLE","Description":"This achievement cannot be unlocked."},"CHALLENGE_BN13":{"ID":"CHALLENGE_BN13","Name":"BN13: Challenge","Description":"Complete BN13 without Stanek\'s Gift."},"DEVMENU":{"ID":"DEVMENU","Name":"Exploit: you\'re not meant to access this","Description":"Open the dev menu."},"RAINBOW":{"ID":"RAINBOW","Name":"Exploit: rainbow","Description":"Make good use of the rainbow."},"TRUE_RECURSION":{"ID":"TRUE_RECURSION","Name":"Exploit: true recursion","Description":"Beat BN1 in megabyteburner 2000."}}}')}},__webpack_module_cache__={},deferred,leafPrototypes,getProto;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.loaded=!0,n.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.amdO={},deferred=[],__webpack_require__.O=(e,t,n,r)=>{if(!t){var a=1/0;for(l=0;l=r)&&Object.keys(__webpack_require__.O).every((e=>__webpack_require__.O[e](t[i])))?t.splice(i--,1):(o=!1,r0&&deferred[l-1][2]>r;l--)deferred[l]=deferred[l-1];deferred[l]=[t,n,r]},__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},getProto=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,__webpack_require__.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var n=Object.create(null);__webpack_require__.r(n);var r={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var a=2&t&&e;"object"==typeof a&&!~leafPrototypes.indexOf(a);a=getProto(a))Object.getOwnPropertyNames(a).forEach((t=>r[t]=()=>e[t]));return r.default=()=>e,__webpack_require__.d(n,r),n},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.e=()=>Promise.resolve(),__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var t=__webpack_require__.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");n.length&&(e=n[n.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e})(),(()=>{__webpack_require__.b=document.baseURI||self.location.href;var e={179:0};__webpack_require__.O.j=t=>0===e[t];var t=(t,n)=>{var r,a,[o,i,s]=n,l=0;if(o.some((t=>0!==e[t]))){for(r in i)__webpack_require__.o(i,r)&&(__webpack_require__.m[r]=i[r]);if(s)var c=s(__webpack_require__)}for(t&&t(n);l__webpack_require__(73681)));__webpack_exports__=__webpack_require__.O(__webpack_exports__)})(); +(()=>{var __webpack_modules__={19651:(e,t,n)=>{"use strict";n.d(t,{S:()=>l});var a=n(67294),r=n(30120),o=n(81138),i=n(51087),s=n(98699);function l(e){let{achievement:t,unlockedOn:n,cssFiltersUnlocked:l,cssFiltersLocked:c}=e;if(!t)return a.createElement(a.Fragment,null);const u=!!n,m=u?i.Z.theme.primary:i.Z.theme.secondarylight;let f="";return n&&(f=new Date(n).toLocaleString()),a.createElement(r.Z,{sx:{border:`1px solid ${i.Z.theme.well}`,mb:2}},a.createElement(r.Z,{sx:{display:"flex",flexDirection:"row",flexWrap:"wrap"}},a.createElement(s.K,{achievement:t,unlocked:u,size:"72px",colorFilters:u?l:c}),a.createElement(r.Z,{sx:{display:"flex",flexDirection:"column",justifyContent:"center",px:1}},a.createElement(o.Z,{variant:"h6",sx:{color:m}},t.Name),a.createElement(o.Z,{variant:"body2",sx:{maxWidth:"500px",color:m}},t.Description),u&&a.createElement(o.Z,{variant:"caption",sx:{fontSize:"12px",color:i.Z.theme.primarydark}},"Acquired on ",f))))}},98699:(e,t,n)=>{"use strict";n.d(t,{K:()=>i});var a=n(67294),r=n(30120),o=n(51087);function i(e){let{achievement:t,unlocked:n,colorFilters:i,size:s}=e;const[l,c]=(0,a.useState)(!1),u=n?o.Z.theme.primarydark:o.Z.theme.secondarydark;return t.Icon?a.createElement(r.Z,{sx:{border:`1px solid ${u}`,width:s,height:s,m:1,visibility:l?"visible":"hidden"}},a.createElement("img",{src:`dist/icons/achievements/${encodeURI(t.Icon)}.svg`,style:{filter:i,width:s,height:s},onLoad:()=>c(!0),alt:t.Name})):a.createElement(a.Fragment,null)}},2718:(e,t,n)=>{"use strict";n.d(t,{i:()=>h});var a=n(67294),r=n(30120),o=n(5821),i=n(21945),s=n(81138),l=n(51907),c=n(19651),u=n(51087),m=n(27313),f=n(93989);function h(e){let{achievements:t,playerAchievements:n}=e;const h=(0,m.P)(u.Z.theme.primary),d=(0,m.P)(u.Z.theme.secondary),p=t.map((e=>{var t;return{achievement:e,unlockedOn:null===(t=n.find((t=>t.ID===e.ID)))||void 0===t?void 0:t.unlockedOn}})).sort(((e,t)=>(t.unlockedOn??0)-(e.unlockedOn??0))),g=p.filter((e=>e.unlockedOn)),y=p.filter((e=>!e.unlockedOn&&e.achievement.Secret)),b=p.filter((e=>!e.unlockedOn&&!e.achievement.Secret&&e.achievement.Visible&&!e.achievement.Visible())),v=p.filter((e=>!g.map((e=>e.achievement.ID)).includes(e.achievement.ID))).filter((e=>!y.map((e=>e.achievement.ID)).includes(e.achievement.ID))).filter((e=>!b.map((e=>e.achievement.ID)).includes(e.achievement.ID)));return a.createElement(r.Z,{sx:{pr:18,my:2}},a.createElement(r.Z,{sx:{display:"flex",flexDirection:"column",flexWrap:"wrap"}},g.length>0&&a.createElement(o.Z,{defaultExpanded:!0,disableGutters:!0,square:!0},a.createElement(i.Z,null,a.createElement(s.Z,{variant:"h5",sx:{my:1}},"Acquired (",g.length,"/",p.length,")")),a.createElement(l.Z,{sx:{pt:2}},g.map((e=>a.createElement(c.S,{key:`unlocked_${e.achievement.ID}`,achievement:e.achievement,unlockedOn:e.unlockedOn,cssFiltersUnlocked:h,cssFiltersLocked:d}))))),v.length>0&&a.createElement(o.Z,{disableGutters:!0,square:!0},a.createElement(i.Z,null,a.createElement(s.Z,{variant:"h5",color:"secondary"},"Locked (",v.length," remaining)")),a.createElement(l.Z,{sx:{pt:2}},v.map((e=>a.createElement(c.S,{key:`locked_${e.achievement.ID}`,achievement:e.achievement,cssFiltersUnlocked:h,cssFiltersLocked:d}))))),b.length>0&&a.createElement(o.Z,{disableGutters:!0,square:!0},a.createElement(i.Z,null,a.createElement(s.Z,{variant:"h5",color:"secondary"},"Unavailable (",b.length," remaining)")),a.createElement(l.Z,null,a.createElement(s.Z,{sx:{mt:1}},b.length," additional achievements hidden behind content you don't have access to."))),y.length>0&&a.createElement(o.Z,{disableGutters:!0,square:!0},a.createElement(i.Z,null,a.createElement(s.Z,{variant:"h5",color:"secondary"},"Secret (",y.length," remaining)")),a.createElement(l.Z,null,a.createElement(s.Z,{color:"secondary",sx:{mt:1}},y.map((e=>a.createElement("span",{key:`secret_${e.achievement.ID}`},a.createElement(f.q,{content:e.achievement.ID}),a.createElement("br",null)))))))))}},30518:(e,t,n)=>{"use strict";n.d(t,{E:()=>L,v:()=>R});var a=n(33244),r=n(42115),o=n(71099),i=n(72938),s=n(52107),l=n(58427),c=n(59471),u=n(87811),m=n(93430),f=n(29538),h=n(55782),d=n(3853),p=n(49173),g=n(97467),y=n(40425),b=n(89916),v=n(52947),k=n(24815),w=n(69966),E=n(94337),S=n(97740),C=n(75350),x=n(21623);const N=w.EF;function M(){const e=(0,g.WT)(y.r.WorldDaemon);return e instanceof b.x&&(!!e.backdoorInstalled||null!==p.J5.bladeburner&&a.BlackOperationName.OperationDaedalus in p.J5.bladeburner.blackops)}function A(e){return p.J5.bitNodeN===e||p.J5.sourceFileLvl(e)>0}function T(){return p.J5.sourceFiles.size>0}const L={[a.FactionName.CyberSec.toUpperCase()]:{...N[a.FactionName.CyberSec.toUpperCase()],Icon:"CSEC",Condition:()=>p.J5.factions.includes(a.FactionName.CyberSec)},[a.FactionName.NiteSec.toUpperCase()]:{...N[a.FactionName.NiteSec.toUpperCase()],Icon:a.FactionName.NiteSec,Condition:()=>p.J5.factions.includes(a.FactionName.NiteSec)},THE_BLACK_HAND:{...N.THE_BLACK_HAND,Icon:"TBH",Condition:()=>p.J5.factions.includes(a.FactionName.TheBlackHand)},[a.FactionName.BitRunners.toUpperCase()]:{...N[a.FactionName.BitRunners.toUpperCase()],Icon:a.FactionName.BitRunners.toLowerCase(),Condition:()=>p.J5.factions.includes(a.FactionName.BitRunners)},[a.FactionName.Daedalus.toUpperCase()]:{...N[a.FactionName.Daedalus.toUpperCase()],Icon:a.FactionName.Daedalus.toLowerCase(),Condition:()=>p.J5.factions.includes(a.FactionName.Daedalus)},THE_COVENANT:{...N.THE_COVENANT,Icon:a.FactionName.TheCovenant.toLowerCase().replace(/ /g,""),Condition:()=>p.J5.factions.includes(a.FactionName.TheCovenant)},[a.FactionName.Illuminati.toUpperCase()]:{...N[a.FactionName.Illuminati.toUpperCase()],Icon:a.FactionName.Illuminati.toLowerCase(),Condition:()=>p.J5.factions.includes(a.FactionName.Illuminati)},"BRUTESSH.EXE":{...N["BRUTESSH.EXE"],Icon:"p0",Condition:()=>p.J5.getHomeComputer().programs.includes(a.CompletedProgramName.bruteSsh)},"FTPCRACK.EXE":{...N["FTPCRACK.EXE"],Icon:"p1",Condition:()=>p.J5.getHomeComputer().programs.includes(a.CompletedProgramName.ftpCrack)},"RELAYSMTP.EXE":{...N["RELAYSMTP.EXE"],Icon:"p2",Condition:()=>p.J5.getHomeComputer().programs.includes(a.CompletedProgramName.relaySmtp)},"HTTPWORM.EXE":{...N["HTTPWORM.EXE"],Icon:"p3",Condition:()=>p.J5.getHomeComputer().programs.includes(a.CompletedProgramName.httpWorm)},"SQLINJECT.EXE":{...N["SQLINJECT.EXE"],Icon:"p4",Condition:()=>p.J5.getHomeComputer().programs.includes(a.CompletedProgramName.sqlInject)},"FORMULAS.EXE":{...N["FORMULAS.EXE"],Icon:"formulas",Condition:()=>p.J5.getHomeComputer().programs.includes(a.CompletedProgramName.formulas)},...function(){const e={};for(let t=1;t<=12;t++){const n=`SF${t}.1`;e[n]={...N[n],Icon:n,Visible:T,Condition:()=>p.J5.sourceFileLvl(t)>=1}}return e}(),MONEY_1Q:{...N.MONEY_1Q,Icon:"$1Q",Condition:()=>p.J5.money>=1e18},MONEY_M1B:{...N.MONEY_M1B,Icon:"-1b",Secret:!0,Condition:()=>p.J5.money<=-1e9},INSTALL_1:{...N.INSTALL_1,Icon:"install",Condition:()=>p.J5.augmentations.length>=1},INSTALL_100:{...N.INSTALL_100,Icon:"install_100",Condition:()=>p.J5.augmentations.length>=100},QUEUE_40:{...N.QUEUE_40,Icon:"queue40",Condition:()=>p.J5.queuedAugmentations.length>=40},HACKING_100000:{...N.HACKING_100000,Icon:"hack100000",Condition:()=>p.J5.skills.hacking>=1e5},COMBAT_3000:{...N.COMBAT_3000,Icon:"combat3000",Condition:()=>p.J5.skills.strength>=3e3&&p.J5.skills.defense>=3e3&&p.J5.skills.dexterity>=3e3&&p.J5.skills.agility>=3e3},NEUROFLUX_255:{...N.NEUROFLUX_255,Icon:"nf255",Condition:()=>p.J5.augmentations.some((e=>e.name===a.AugmentationName.NeuroFluxGovernor&&e.level>=255))},NS2:{...N.NS2,Icon:"ns2",Condition:()=>[...p.J5.getHomeComputer().scripts.values()].some((e=>e.filename.endsWith(".js")))},FROZE:{...N.FROZE,Icon:"forze",Condition:()=>location.href.includes("noScripts")},RUNNING_SCRIPTS_1000:{...N.RUNNING_SCRIPTS_1000,Icon:"run1000",Condition:()=>C.R.size>=1e3},DRAIN_SERVER:{...N.DRAIN_SERVER,Icon:"drain",Condition:()=>{for(const e of(0,g.XX)())if(e instanceof b.x&&e.moneyMax>0&&0===e.moneyAvailable)return!0;return!1}},MAX_RAM:{...N.MAX_RAM,Icon:"maxram",Condition:()=>p.J5.getHomeComputer().maxRam===i.t.HomeComputerMaxRam},MAX_CORES:{...N.MAX_CORES,Icon:"maxcores",Condition:()=>8===p.J5.getHomeComputer().cpuCores},SCRIPTS_30:{...N.SCRIPTS_30,Icon:"folders",Condition:()=>p.J5.getHomeComputer().scripts.size>=30},KARMA_1000000:{...N.KARMA_1000000,Icon:"karma",Secret:!0,Condition:()=>p.J5.karma<=-1e6},STOCK_1q:{...N.STOCK_1q,Icon:"$1Q",Condition:()=>p.J5.moneySourceB.stock>=1e15},DISCOUNT:{...N.DISCOUNT,Icon:"discount",Condition:()=>{const e=(0,g.WT)("powerhouse-fitness");return e instanceof b.x&&e.backdoorInstalled}},SCRIPT_32GB:{...N.SCRIPT_32GB,Icon:"bigcost",Condition:()=>[...p.J5.getHomeComputer().scripts.values()].some((e=>(e.ramUsage??0)>=32))},FIRST_HACKNET_NODE:{...N.FIRST_HACKNET_NODE,Icon:"node",Condition:()=>!(0,f.kw)()&&p.J5.hacknetNodes.length>0},"30_HACKNET_NODE":{...N["30_HACKNET_NODE"],Icon:"hacknet-all",Condition:()=>!(0,f.kw)()&&p.J5.hacknetNodes.length>=30},MAX_HACKNET_NODE:{...N.MAX_HACKNET_NODE,Icon:"hacknet-max",Condition:()=>{if((0,f.kw)())return!1;for(const e of p.J5.hacknetNodes){if(!(e instanceof h.Q))return!1;if(e.ram===m.dN.MaxRam&&e.cores===m.dN.MaxCores&&e.level===m.dN.MaxLevel)return!0}return!1}},HACKNET_NODE_10M:{...N.HACKNET_NODE_10M,Icon:"hacknet-10m",Condition:()=>!(0,f.kw)()&&p.J5.moneySourceB.hacknet>=1e7},REPUTATION_10M:{...N.REPUTATION_10M,Icon:"reputation",Condition:()=>Object.values(l.i).some((e=>e.playerReputation>=1e7))},DONATION:{...N.DONATION,Icon:"donation",Condition:()=>Object.values(l.i).some((e=>e.favor>=Math.floor(i.t.BaseFavorToDonate*S.dQ.RepToDonateToFaction)))},TRAVEL:{...N.TRAVEL,Icon:"TRAVEL",Condition:()=>p.J5.city!==a.CityName.Sector12},WORKOUT:{...N.WORKOUT,Icon:"WORKOUT",Condition:()=>(0,E.tG)(p.J5.currentWork)&&p.J5.currentWork.isGym()},TOR:{...N.TOR,Icon:"TOR",Condition:()=>p.J5.hasTorRouter()},HOSPITALIZED:{...N.HOSPITALIZED,Icon:"OUCH",Condition:()=>0!==p.J5.moneySourceB.hospitalization},GANG:{...N.GANG,Icon:"GANG",Visible:()=>A(2),Condition:()=>null!==p.J5.gang},FULL_GANG:{...N.FULL_GANG,Icon:"GANGMAX",Visible:()=>A(2),Condition:()=>null!==p.J5.gang&&p.J5.gang.members.length===u.m.MaximumGangMembers},GANG_TERRITORY:{...N.GANG_TERRITORY,Icon:"GANG100%",Visible:()=>A(2),Condition:()=>null!==p.J5.gang&&c.vS[p.J5.gang.facName].territory>=.999},GANG_MEMBER_POWER:{...N.GANG_MEMBER_POWER,Icon:"GANG10000",Visible:()=>A(2),Condition:()=>null!==p.J5.gang&&p.J5.gang.members.some((e=>e.hack>=1e4||e.str>=1e4||e.def>=1e4||e.dex>=1e4||e.agi>=1e4||e.cha>=1e4))},CORPORATION:{...N.CORPORATION,Icon:"CORP",Visible:()=>A(3),Condition:()=>null!==p.J5.corporation},CORPORATION_BRIBE:{...N.CORPORATION_BRIBE,Icon:"CORPLOBBY",Visible:()=>A(3),Condition:()=>!!p.J5.corporation&&p.J5.corporation.unlocks.has(a.CorpUnlockName.GovernmentPartnership)},CORPORATION_PROD_1000:{...N.CORPORATION_PROD_1000,Icon:"CORP1000",Visible:()=>A(3),Condition:()=>{if(!p.J5.corporation)return!1;for(const e of p.J5.corporation.divisions.values())if(e.productionMult>=1e3)return!0;return!1}},CORPORATION_EMPLOYEE_3000:{...N.CORPORATION_EMPLOYEE_3000,Icon:"CORPCITY",Visible:()=>A(3),Condition:()=>{if(!p.J5.corporation)return!1;for(const e of p.J5.corporation.divisions.values())if((0,x.R3)(e.offices).reduce(((e,t)=>e+t.numEmployees),0)>=3e3)return!0;return!1}},CORPORATION_REAL_ESTATE:{...N.CORPORATION_REAL_ESTATE,Icon:"CORPRE",Name:"Own the land",Description:"Expand to the Real Estate division.",Visible:()=>A(3),Condition:()=>{if(!p.J5.corporation)return!1;for(const e of p.J5.corporation.divisions.values())if(e.type===a.IndustryType.RealEstate)return!0;return!1}},INTELLIGENCE_255:{...N.INTELLIGENCE_255,Icon:"INT255",Visible:()=>A(5),Condition:()=>p.J5.skills.intelligence>=255},BLADEBURNER_DIVISION:{...N.BLADEBURNER_DIVISION,Icon:"BLADE",Visible:()=>A(6),Condition:()=>null!==p.J5.bladeburner},BLADEBURNER_OVERCLOCK:{...N.BLADEBURNER_OVERCLOCK,Icon:"BLADEOVERCLOCK",Visible:()=>A(6),Condition:()=>null!==p.J5.bladeburner&&p.J5.bladeburner.skills[r.x.Overclock]===o.n[r.x.Overclock].maxLvl},BLADEBURNER_UNSPENT_100000:{...N.BLADEBURNER_UNSPENT_100000,Icon:"BLADE100K",Visible:()=>A(6),Condition:()=>null!==p.J5.bladeburner&&p.J5.bladeburner.skillPoints>=1e5},"4S":{...N["4S"],Icon:"4S",Condition:()=>p.J5.has4SData},FIRST_HACKNET_SERVER:{...N.FIRST_HACKNET_SERVER,Icon:"HASHNET",Visible:()=>A(9),Condition:()=>(0,f.kw)()&&p.J5.hacknetNodes.length>0,AdditionalUnlock:[N.FIRST_HACKNET_NODE.ID]},ALL_HACKNET_SERVER:{...N.ALL_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>A(9),Condition:()=>(0,f.kw)()&&p.J5.hacknetNodes.length===m.B5.MaxServers,AdditionalUnlock:[N["30_HACKNET_NODE"].ID]},MAX_HACKNET_SERVER:{...N.MAX_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>A(9),Condition:()=>{if(!(0,f.kw)())return!1;for(const e of p.J5.hacknetNodes){if("string"!=typeof e)return!1;const t=(0,g.WT)(e);if(!(t instanceof d.u))return!1;if(t.maxRam===m.B5.MaxRam&&t.cores===m.B5.MaxCores&&t.level===m.B5.MaxLevel&&t.cache===m.B5.MaxCache)return!0}return!1},AdditionalUnlock:[N.MAX_HACKNET_NODE.ID]},HACKNET_SERVER_1B:{...N.HACKNET_SERVER_1B,Icon:"HASHNETMONEY",Visible:()=>A(9),Condition:()=>(0,f.kw)()&&p.J5.moneySourceB.hacknet>=1e9,AdditionalUnlock:[N.HACKNET_NODE_10M.ID]},MAX_CACHE:{...N.MAX_CACHE,Icon:"HASHNETCAP",Visible:()=>A(9),Condition:()=>(0,f.kw)()&&p.J5.hashManager.hashes===p.J5.hashManager.capacity&&p.J5.hashManager.capacity>0},SLEEVE_8:{...N.SLEEVE_8,Icon:"SLEEVE8",Visible:()=>A(10),Condition:()=>8===p.J5.sleeves.length&&3===p.J5.sourceFileLvl(10)},INDECISIVE:{...N.INDECISIVE,Icon:"1H",Visible:T,Condition:function(){let e=0;return setInterval((()=>{v.F.page()===k.T3.BitVerse?e++:e=0}),6e4),()=>e>60}()},FAST_BN:{...N.FAST_BN,Icon:"2DAYS",Visible:T,Condition:()=>M()&&p.J5.playtimeSinceLastBitnode<1728e5},CHALLENGE_BN1:{...N.CHALLENGE_BN1,Icon:"BN1+",Visible:T,Condition:()=>1===p.J5.bitNodeN&&M()&&p.J5.getHomeComputer().maxRam<=128&&1===p.J5.getHomeComputer().cpuCores},CHALLENGE_BN2:{...N.CHALLENGE_BN2,Icon:"BN2+",Visible:()=>A(2),Condition:()=>2===p.J5.bitNodeN&&M()&&null===p.J5.gang},CHALLENGE_BN3:{...N.CHALLENGE_BN3,Icon:"BN3+",Visible:()=>A(3),Condition:()=>3===p.J5.bitNodeN&&M()&&null===p.J5.corporation},CHALLENGE_BN6:{...N.CHALLENGE_BN6,Icon:"BN6+",Visible:()=>A(6),Condition:()=>6===p.J5.bitNodeN&&M()&&null===p.J5.bladeburner},CHALLENGE_BN7:{...N.CHALLENGE_BN7,Icon:"BN7+",Visible:()=>A(7),Condition:()=>7===p.J5.bitNodeN&&M()&&null===p.J5.bladeburner},CHALLENGE_BN8:{...N.CHALLENGE_BN8,Icon:"BN8+",Visible:()=>A(8),Condition:()=>8===p.J5.bitNodeN&&M()&&!p.J5.has4SData&&!p.J5.has4SDataTixApi},CHALLENGE_BN9:{...N.CHALLENGE_BN9,Icon:"BN9+",Visible:()=>A(9),Condition:()=>9===p.J5.bitNodeN&&M()&&0===p.J5.moneySourceB.hacknet&&0===p.J5.moneySourceB.hacknet_expenses},CHALLENGE_BN10:{...N.CHALLENGE_BN10,Icon:"BN10+",Visible:()=>A(10),Condition:()=>10===p.J5.bitNodeN&&M()&&!p.J5.sleeves.some((e=>e.augmentations.length>0||e.exp.hacking>0||e.exp.strength>0||e.exp.defense>0||e.exp.agility>0||e.exp.dexterity>0||e.exp.charisma>0))},CHALLENGE_BN12:{...N.CHALLENGE_BN12,Icon:"BN12+",Visible:()=>A(12),Condition:()=>p.J5.sourceFileLvl(12)>=50},BYPASS:{...N.BYPASS,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.Bypass)},PROTOTYPETAMPERING:{...N.PROTOTYPETAMPERING,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.PrototypeTampering)},UNCLICKABLE:{...N.UNCLICKABLE,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.Unclickable)},UNDOCUMENTEDFUNCTIONCALL:{...N.UNDOCUMENTEDFUNCTIONCALL,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.UndocumentedFunctionCall)},TIMECOMPRESSION:{...N.TIMECOMPRESSION,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.TimeCompression)},REALITYALTERATION:{...N.REALITYALTERATION,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.RealityAlteration)},N00DLES:{...N.N00DLES,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.N00dles)},EDITSAVEFILE:{...N.EDITSAVEFILE,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.EditSaveFile)},UNACHIEVABLE:{...N.UNACHIEVABLE,Icon:"SF-1",Secret:!0,Condition:()=>!1},CHALLENGE_BN13:{...N.CHALLENGE_BN13,Icon:"BN13+",Visible:()=>A(13),Condition:()=>13===p.J5.bitNodeN&&M()&&!p.J5.augmentations.some((e=>e.name===a.AugmentationName.StaneksGift1))},DEVMENU:{...N.DEVMENU,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.YoureNotMeantToAccessThis)},RAINBOW:{...N.RAINBOW,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.INeedARainbow)},TRUE_RECURSION:{...N.TRUE_RECURSION,Icon:"SF-1",Secret:!0,Condition:()=>p.J5.exploits.includes(s.VX.TrueRecursion)}};function R(){const e=p.J5.achievements.map((e=>e.ID)),t=Object.values(L).filter((t=>!e.includes(t.ID)&&t.Condition())).flatMap((e=>[e.ID,...e.AdditionalUnlock||[]]));for(const e of t)p.J5.giveAchievement(e);document.achievements=[...p.J5.achievements.map((e=>e.ID))]}},24853:(e,t,n)=>{"use strict";n.d(t,{k:()=>m});var a=n(67294),r=n(77541),o=n(73327),i=n(2718),s=n(30518),l=n(81138),c=n(49173);const u=(0,r.Z)((e=>(0,o.Z)({root:{width:50,padding:e.spacing(2),userSelect:"none"}})));function m(){const e=u();return a.createElement("div",{className:e.root,style:{width:"90%"}},a.createElement(l.Z,{variant:"h4"},"Achievements"),a.createElement(i.i,{achievements:Object.values(s.E),playerAchievements:c.J5.achievements}))}},69895:(e,t,n)=>{"use strict";n.d(t,{$z:()=>o,Jm:()=>l,Ui:()=>i,aX:()=>c,fW:()=>s,lg:()=>d,nS:()=>u,z7:()=>h});var a=n(65065),r=n(22392);const o=new Map,i=new Map;function s(e){o.clear();const t=JSON.parse(e);if(t&&"object"==typeof t)for(const[e,n]of Object.entries(t))"string"==typeof e&&"string"==typeof n&&o.set(e,n)}function l(e){i.clear();const t=JSON.parse(e);if(t&&"object"==typeof t)for(const[e,n]of Object.entries(t))"string"==typeof e&&"string"==typeof n&&i.set(e,n)}function c(){for(const[e,t]of o)a.o.print("alias "+e+"="+t);for(const[e,t]of i)a.o.print("global alias "+e+"="+t)}function u(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=/^([\w|!%,@-]+)=(.+)$/,a=e.match(n);return null!=a&&3==a.length&&(a[2]=(0,r.g)(a[2]),t?f(a[1],a[2]):m(a[1],a[2]),!0)}function m(e,t){i.delete(e),o.set(e,t.trim())}function f(e,t){o.delete(e),i.set(e,t.trim())}function h(e){const t=o.has(e)||i.has(e);return o.delete(e),i.delete(e),t}function d(e){return p(e)}function p(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(!e)return e;const a=e.split(" ");if("unalias"===a[0]||"alias"===a[0])return a.join(" ");const r=o.get(a[0]);if(r&&!n.includes(r)){const e=p(r,t+1,[a[0],...n]);a.splice(0,1,...e.split(" "))}const s=a.reduce(((e,a)=>{const r=i.get(a);if(r&&!n.includes(r)){const o=p(r,t+1,[a,...n]);e.push(o)}else e.push(a);return e}),[]);return s.join(" ")}},96168:(e,t,n)=>{"use strict";n.d(t,{u:()=>c});var a,r=n(67294),o=n(39785),i=n(56798),s=n(49173),l=n(95173);function c(){const[e,t]=(0,r.useState)(a.None);if(e===a.None)return r.createElement(r.Fragment,null,r.createElement(i.Z,{onClick:function(){0===s.J5.sourceFileLvl(1)?l.e.emit("This machine is broken."):t(a.Megabyteburner2000)}},"Megabyte burner 2000"));let n=r.createElement(r.Fragment,null);return e===a.Megabyteburner2000&&(n=r.createElement(o.s,null)),r.createElement(r.Fragment,null,r.createElement(i.Z,{onClick:()=>t(a.None)},"Back"),n)}!function(e){e[e.None=0]="None",e[e.Megabyteburner2000=1]="Megabyteburner2000"}(a||(a={}))},39785:(e,t,n)=>{"use strict";n.d(t,{s:()=>l});var a=n(67294),r=n(81138),o=n(49173),i=n(52107);const s={width:"1060px",height:"800px",border:"0px"};function l(){(0,a.useEffect)((()=>{window.addEventListener("message",(function(e){e.isTrusted&&"https://bitburner-official.github.io"==e.origin&&e.data&&o.J5.giveExploit(i.VX.TrueRecursion)}))}));const e=a.createElement(a.Fragment,null,a.createElement(r.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," "),a.createElement(r.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,'\" \"', .-. "),a.createElement(r.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / \\ ( ) "),a.createElement(r.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | .-. '-' .-. "),a.createElement(r.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ / ( ) ( )"),a.createElement(r.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '.___.' '-' .-. '-'"),a.createElement(r.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ||| ( ) "),a.createElement(r.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ||| '-' "));return a.createElement(a.Fragment,null,a.createElement("div",{style:{width:"1060px",height:"800px",padding:"0",overflow:"hidden",borderColor:"white",borderStyle:"solid",borderWidth:"5px"}},a.createElement("iframe",{src:"https://bitburner-official.github.io/bitburner-legacy/",style:s})),a.createElement("div",{style:{width:"1060px",borderColor:"white",borderStyle:"solid",borderWidth:"5px"}},e))}},80372:(e,t,n)=>{"use strict";n.d(t,{p:()=>l});var a=n(49173),r=n(33244),o=n(22115),i=n(62850),s=n(21623);class l{baseCost=0;baseRepRequirement=0;isSpecial=!1;prereqs=[];mults=(0,i.A7)();factions=[];constructor(e){this.name=e.name,this.info=e.info,this.prereqs=e.prereqs?e.prereqs:[],this.baseRepRequirement=e.repCost,Object.freeze(this.baseRepRequirement),this.baseCost=e.moneyCost,Object.freeze(this.baseCost),this.factions=e.factions,e.isSpecial&&(this.isSpecial=!0);for(const t of(0,s.nd)(this.mults)){const n=e[t];n&&(this.mults[t]=n)}void 0===e.stats?this.stats=function(e,t,n){const a=e=>(0,o.T3)(e,e-1<.1?2:1);let r="Effects:";return 1!==e.hacking&&e.hacking===e.strength&&e.hacking===e.defense&&e.hacking===e.dexterity&&e.hacking===e.agility&&e.hacking===e.charisma?r+=`\n+${a(e.hacking-1)} all skills`:(1!==e.hacking&&(r+=`\n+${a(e.hacking-1)} hacking skill`),1!==e.strength&&e.strength===e.defense&&e.strength===e.dexterity&&e.strength===e.agility?r+=`\n+${a(e.strength-1)} combat skills`:(1!==e.strength&&(r+=`\n+${a(e.strength-1)} strength skill`),1!==e.defense&&(r+=`\n+${a(e.defense-1)} defense skill`),1!==e.dexterity&&(r+=`\n+${a(e.dexterity-1)} dexterity skill`),1!==e.agility&&(r+=`\n+${a(e.agility-1)} agility skill`)),1!==e.charisma&&(r+=`\n+${a(e.charisma-1)} charisma skill`)),1!==e.hacking_exp&&e.hacking_exp===e.strength_exp&&e.hacking_exp===e.defense_exp&&e.hacking_exp===e.dexterity_exp&&e.hacking_exp===e.agility_exp&&e.hacking_exp===e.charisma_exp?r+=`\n+${a(e.hacking_exp-1)} exp for all skills`:(1!==e.hacking_exp&&(r+=`\n+${a(e.hacking_exp-1)} hacking exp`),1!==e.strength_exp&&e.strength_exp===e.defense_exp&&e.strength_exp===e.dexterity_exp&&e.strength_exp===e.agility_exp?r+=`\n+${a(e.strength_exp-1)} combat exp`:(1!==e.strength_exp&&(r+=`\n+${a(e.strength_exp-1)} strength exp`),1!==e.defense_exp&&(r+=`\n+${a(e.defense_exp-1)} defense exp`),1!==e.dexterity_exp&&(r+=`\n+${a(e.dexterity_exp-1)} dexterity exp`),1!==e.agility_exp&&(r+=`\n+${a(e.agility_exp-1)} agility exp`)),1!==e.charisma_exp&&(r+=`\n+${a(e.charisma_exp-1)} charisma exp`)),1!==e.hacking_speed&&(r+=`\n+${a(e.hacking_speed-1)} faster hack(), grow(), and weaken()`),1!==e.hacking_chance&&(r+=`\n+${a(e.hacking_chance-1)} hack() success chance`),1!==e.hacking_money&&(r+=`\n+${a(e.hacking_money-1)} hack() power`),1!==e.hacking_grow&&(r+=`\n+${a(e.hacking_grow-1)} grow() power`),1!==e.faction_rep&&e.faction_rep===e.company_rep?r+=`\n+${a(e.faction_rep-1)} reputation from factions and companies`:(1!==e.faction_rep&&(r+=`\n+${a(e.faction_rep-1)} reputation from factions`),1!==e.company_rep&&(r+=`\n+${a(e.company_rep-1)} reputation from companies`)),1!==e.crime_money&&(r+=`\n+${a(e.crime_money-1)} crime money`),1!==e.crime_success&&(r+=`\n+${a(e.crime_success-1)} crime success rate`),1!==e.work_money&&(r+=`\n+${a(e.work_money-1)} work money`),1!==e.hacknet_node_money&&(r+=`\n+${a(e.hacknet_node_money-1)} hacknet production`),1!==e.hacknet_node_purchase_cost&&(r+=`\n-${a(-(e.hacknet_node_purchase_cost-1))} hacknet nodes cost`),1!==e.hacknet_node_level_cost&&(r+=`\n-${a(-(e.hacknet_node_level_cost-1))} hacknet nodes upgrade cost`),1!==e.bladeburner_max_stamina&&(r+=`\n+${a(e.bladeburner_max_stamina-1)} Bladeburner Max Stamina`),1!==e.bladeburner_stamina_gain&&(r+=`\n+${a(e.bladeburner_stamina_gain-1)} Bladeburner Stamina gain`),1!==e.bladeburner_analysis&&(r+=`\n+${a(e.bladeburner_analysis-1)} Bladeburner Field Analysis effectiveness`),1!==e.bladeburner_success_chance&&(r+=`\n+${a(e.bladeburner_success_chance-1)} Bladeburner Contracts and Operations success chance`),n&&(r+=`\nStart with ${n} after installing Augmentations.`),t&&(r+=`\nStart with ${t.join(" and ")} after installing Augmentations.`),r}(this.mults,e.programs,e.startingMoney):this.stats=e.stats}getLevel(){var e;return this.name!==r.AugmentationName.NeuroFluxGovernor?0:((null===(e=a.J5.augmentations.find((e=>e.name===this.name)))||void 0===e?void 0:e.level)??0)+a.J5.queuedAugmentations.filter((e=>e.name===this.name)).length}getNextLevel(){return this.getLevel()+1}}},27889:(e,t,n)=>{"use strict";n.d(t,{Kq:()=>y,hV:()=>v,kk:()=>g,nD:()=>b,oz:()=>p});var a=n(73440),r=n(15571),o=n(33244),i=n(72938),s=n(49173),l=n(72805),c=n(39463),u=n(52947),m=n(24815),f=n(62850),h=n(97740);function d(){return i.t.MultipleAugMultiplier*[1,.96,.94,.93][s.J5.sourceFileLvl(11)]}function p(){return Math.pow(d(),s.J5.queuedAugmentations.length)}function g(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=a.x[e.name];s.J5.mults=(0,f.VA)(s.J5.mults,n.mults),e.name!==o.AugmentationName.CongruityImplant||t||(s.J5.entropy=0,s.J5.applyEntropy(s.J5.entropy));const i=s.J5.augmentations.find((e=>e.name===o.AugmentationName.NeuroFluxGovernor));if(e.name!==o.AugmentationName.NeuroFluxGovernor||t||!i){if(!t){const t=new r.e(e.name);s.J5.augmentations.push(t)}}else i.level=e.level}function y(e){if(0==s.J5.queuedAugmentations.length&&!e)return(0,c.X)("You have not purchased any Augmentations to install!"),!1;let t="",n=-1;for(let e=s.J5.queuedAugmentations.length-1;e>=0;e--)if(s.J5.queuedAugmentations[e].name===o.AugmentationName.NeuroFluxGovernor){n=e;break}for(let e=0;es.J5.hasAugmentation(e))).length;t=e.baseCost*Math.pow(i.t.SoACostMult,a),n=e.baseRepRequirement*Math.pow(i.t.SoARepMult,a);break}default:t=e.baseCost*p()*h.dQ.AugmentationMoneyCost,n=e.baseRepRequirement*h.dQ.AugmentationRepCost}return{moneyCost:t,repCost:n}}},73440:(e,t,n)=>{"use strict";n.d(t,{p:()=>c,x:()=>l});var a=n(33244),r=n(80372),o=n(59541),i=n(72938),s=n(21623);const l=(()=>{const e=i.t.Donations/1e6/100,t={[a.AugmentationName.ADRPheromone1]:{repCost:3750,moneyCost:175e5,info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, triggers feelings of admiration and approval in other people.",company_rep:1.1,faction_rep:1.1,factions:[a.FactionName.TianDiHui,a.FactionName.TheSyndicate,a.FactionName.NWO,a.FactionName.MegaCorp,a.FactionName.FourSigma]},[a.AugmentationName.ADRPheromone2]:{repCost:62500,moneyCost:55e7,info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, which is similar to but more potent than ADR-V1. This pheromone, when excreted, triggers feelings of admiration, approval, and respect in others.",company_rep:1.2,faction_rep:1.2,factions:[a.FactionName.Silhouette,a.FactionName.FourSigma,a.FactionName.BachmanAssociates,a.FactionName.ClarkeIncorporated]},[a.AugmentationName.ArtificialBioNeuralNetwork]:{repCost:275e3,moneyCost:3e9,info:"A network consisting of millions of nanoprocessors is embedded into the brain. The network is meant to mimic the way a biological brain solves a problem, with each nanoprocessor acting similar to the way a neuron would in a neural network. However, these nanoprocessors are programmed to perform computations much faster than organic neurons, allowing the user to solve much more complex problems at a much faster rate.",hacking_speed:1.03,hacking_money:1.15,hacking:1.12,factions:[a.FactionName.BitRunners,a.FactionName.FulcrumSecretTechnologies]},[a.AugmentationName.ArtificialSynapticPotentiation]:{repCost:6250,moneyCost:8e7,info:"The body is injected with a chemical that artificially induces synaptic potentiation, otherwise known as the strengthening of synapses. This results in enhanced cognitive abilities.",hacking_speed:1.02,hacking_chance:1.05,hacking_exp:1.05,factions:[a.FactionName.TheBlackHand,a.FactionName.NiteSec]},[a.AugmentationName.BeautyOfAphrodite]:{repCost:1e4,moneyCost:1e6,info:"Pheromone extruder injected in the thoracodorsal nerve. Emits pleasing scent guaranteed to make conversational partners more agreeable.",stats:"This augmentation makes the Bribe minigame easier by indicating the incorrect paths.",isSpecial:!0,factions:[a.FactionName.ShadowsOfAnarchy]},[a.AugmentationName.BigDsBigBrain]:{isSpecial:!0,factions:[],repCost:1/0,moneyCost:1/0,info:"A chip containing the psyche of the greatest BitRunner to ever exists. Installing this relic significantly increases ALL of your stats. However it may have unintended consequence on the users mental well-being.",stats:"Grants access to unimaginable power.",hacking:2,strength:2,defense:2,dexterity:2,agility:2,charisma:2,hacking_exp:2,strength_exp:2,defense_exp:2,dexterity_exp:2,agility_exp:2,charisma_exp:2,hacking_chance:2,hacking_speed:2,hacking_money:2,hacking_grow:2,company_rep:2,faction_rep:2,crime_money:2,crime_success:2,work_money:2,hacknet_node_money:2,hacknet_node_purchase_cost:.5,hacknet_node_ram_cost:.5,hacknet_node_core_cost:.5,hacknet_node_level_cost:.5,bladeburner_max_stamina:2,bladeburner_stamina_gain:2,bladeburner_analysis:2,bladeburner_success_chance:2,startingMoney:1e12,programs:[a.CompletedProgramName.bruteSsh,a.CompletedProgramName.ftpCrack,a.CompletedProgramName.relaySmtp,a.CompletedProgramName.httpWorm,a.CompletedProgramName.sqlInject,a.CompletedProgramName.deepScan1,a.CompletedProgramName.deepScan2,a.CompletedProgramName.serverProfiler,a.CompletedProgramName.autoLink,a.CompletedProgramName.formulas]},[a.AugmentationName.BionicArms]:{repCost:62500,moneyCost:275e6,info:"Cybernetic arms created from plasteel and carbon fibers that completely replace the user's organic arms.",strength:1.3,dexterity:1.3,factions:[a.FactionName.Tetrads]},[a.AugmentationName.BionicLegs]:{repCost:15e4,moneyCost:375e6,info:"Cybernetic legs, created from plasteel and carbon fibers, enhance running speed.",agility:1.6,factions:[a.FactionName.SpeakersForTheDead,a.FactionName.TheSyndicate,a.FactionName.KuaiGongInternational,a.FactionName.OmniTekIncorporated,a.FactionName.BladeIndustries]},[a.AugmentationName.BionicSpine]:{repCost:45e3,moneyCost:125e6,info:"The spine is reconstructed using plasteel and carbon fibers. It is now capable of stimulating and regulating neural signals passing through the spinal cord, improving senses and reaction speed. The 'Bionic Spine' also interfaces with all other 'Bionic' implants.",strength:1.15,defense:1.15,agility:1.15,dexterity:1.15,factions:[a.FactionName.SpeakersForTheDead,a.FactionName.TheSyndicate,a.FactionName.KuaiGongInternational,a.FactionName.OmniTekIncorporated,a.FactionName.BladeIndustries]},[a.AugmentationName.BitWire]:{repCost:3750,moneyCost:1e7,info:"A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing capabilities.",hacking:1.05,factions:[a.FactionName.CyberSec,a.FactionName.NiteSec]},[a.AugmentationName.BladeArmor]:{repCost:12500,moneyCost:1375e6,info:`A powered exoskeleton suit designed as armor for ${a.FactionName.Bladeburners} units. This exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, concussive, thermal, chemical, and electric trauma. It also enhances the user's physical abilities.`,strength:1.04,defense:1.04,dexterity:1.04,agility:1.04,bladeburner_stamina_gain:1.02,bladeburner_success_chance:1.03,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.BladeArmorEnergyShielding]:{repCost:21250,moneyCost:55e8,info:"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system that is capable of projecting an energy shielding force field.",prereqs:[a.AugmentationName.BladeArmor],defense:1.05,bladeburner_success_chance:1.06,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.BladeArmorIPU]:{repCost:15e3,moneyCost:11e8,info:"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing Unit that was specially designed to analyze Synthoid related data and information.",prereqs:[a.AugmentationName.BladeArmor],bladeburner_analysis:1.15,bladeburner_success_chance:1.02,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.BladeArmorOmnibeam]:{repCost:62500,moneyCost:275e8,info:"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use a multiple-fiber system. This upgraded weapon uses multiple fiber laser modules that combine together to form a single, more powerful beam of up to 2000MW.",prereqs:[a.AugmentationName.BladeArmorUnibeam],bladeburner_success_chance:1.1,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.BladeArmorPowerCells]:{repCost:18750,moneyCost:275e7,info:"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of more efficiently storing and using power.",prereqs:[a.AugmentationName.BladeArmor],bladeburner_success_chance:1.05,bladeburner_stamina_gain:1.02,bladeburner_max_stamina:1.05,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.BladeArmorUnibeam]:{repCost:31250,moneyCost:165e8,info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser weapon. It's precision and accuracy makes it useful for quickly neutralizing threats while keeping casualties to a minimum.",prereqs:[a.AugmentationName.BladeArmor],bladeburner_success_chance:1.08,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.BladeRunner]:{repCost:2e4,moneyCost:825e7,info:`A cybernetic foot augmentation that was specifically created for ${a.FactionName.Bladeburners} during the Synthoid Uprising. The organic musculature of the human foot is enhanced with flexible carbon nanotube matrices that are controlled by intelligent servo-motors.`,agility:1.05,bladeburner_max_stamina:1.05,bladeburner_stamina_gain:1.05,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.BladesSimulacrum]:{repCost:1250,moneyCost:15e10,info:"A highly-advanced matter phase-shifter module that is embedded in the brainstem and cerebellum. This augmentation allows the user to project and control a holographic simulacrum within an extremely large radius. These specially-modified holograms were specifically weaponized by Bladeburner units to be used against Synthoids.",stats:"This augmentation allows you to perform Bladeburner actions and other actions (such as working, committing crimes, etc.) at the same time.",isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.BrachiBlades]:{repCost:12500,moneyCost:9e7,info:"A set of retractable plasteel blades that are implanted in the arm, underneath the skin.",strength:1.15,defense:1.15,crime_success:1.1,crime_money:1.15,factions:[a.FactionName.TheSyndicate]},[a.AugmentationName.CRTX42AA]:{repCost:45e3,moneyCost:225e6,info:"The CRTX42-AA gene is injected into the genome. The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal cortex and improves cognitive abilities.",hacking:1.08,hacking_exp:1.15,factions:[a.FactionName.NiteSec]},[a.AugmentationName.CashRoot]:{repCost:12500,moneyCost:125e6,info:"A collection of digital assets saved on a small chip. The chip is implanted into your wrist. A small jack in the chip allows you to connect it to a computer and upload the assets.",startingMoney:1e6,programs:[a.CompletedProgramName.bruteSsh],factions:[a.FactionName.Sector12]},[a.AugmentationName.ChaosOfDionysus]:{repCost:1e4,moneyCost:1e6,info:"Opto-occipito implant to process visual signals before brain interpretation.",stats:"This augmentation makes the Backwards minigame easier by flipping the words.",isSpecial:!0,factions:[a.FactionName.ShadowsOfAnarchy]},[a.AugmentationName.CombatRib1]:{repCost:7500,moneyCost:2375e4,info:"The rib cage is augmented to continuously release boosters into the bloodstream which increase the oxygen-carrying capacity of blood.",strength:1.1,defense:1.1,factions:[a.FactionName.SlumSnakes,a.FactionName.TheDarkArmy,a.FactionName.TheSyndicate,a.FactionName.Volhaven,a.FactionName.Ishima,a.FactionName.OmniTekIncorporated,a.FactionName.KuaiGongInternational,a.FactionName.BladeIndustries]},[a.AugmentationName.CombatRib2]:{repCost:18750,moneyCost:65e6,info:"An upgraded version of the 'Combat Rib' augmentation that adds potent stimulants which improve focus and endurance while decreasing reaction time and fatigue.",prereqs:[a.AugmentationName.CombatRib1],strength:1.14,defense:1.14,factions:[a.FactionName.TheDarkArmy,a.FactionName.TheSyndicate,a.FactionName.Volhaven,a.FactionName.OmniTekIncorporated,a.FactionName.KuaiGongInternational,a.FactionName.BladeIndustries]},[a.AugmentationName.CombatRib3]:{repCost:35e3,moneyCost:12e7,info:"The latest version of the 'Combat Rib' augmentation releases advanced anabolic steroids that improve muscle mass and physical performance while being safe and free of side effects.",prereqs:[a.AugmentationName.CombatRib2,a.AugmentationName.CombatRib1],strength:1.18,defense:1.18,factions:[a.FactionName.TheDarkArmy,a.FactionName.TheSyndicate,a.FactionName.OmniTekIncorporated,a.FactionName.KuaiGongInternational,a.FactionName.BladeIndustries,a.FactionName.TheCovenant]},[a.AugmentationName.CongruityImplant]:{repCost:1/0,moneyCost:5e13,info:"Developed by a pioneer in Grafting research, this implant generates pulses of stability which seem to have a nullifying effect versus the Entropy virus.\n\nNote: For unknown reasons, the lowercase 'n' appears to be an integral component to its functionality.",stats:"This Augmentation removes the Entropy virus, and prevents it from affecting you again.",factions:[]},[a.AugmentationName.CordiARCReactor]:{repCost:1125e3,moneyCost:5e9,info:"The thoracic cavity is equipped with a small chamber designed to hold and sustain hydrogen plasma. The plasma is used to generate fusion power through nuclear fusion, providing limitless amounts of clean energy for the body.",strength:1.35,defense:1.35,dexterity:1.35,agility:1.35,strength_exp:1.35,defense_exp:1.35,dexterity_exp:1.35,agility_exp:1.35,factions:[a.FactionName.MegaCorp]},[a.AugmentationName.CranialSignalProcessorsG1]:{repCost:1e4,moneyCost:7e7,info:"The first generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",hacking_speed:1.01,hacking:1.05,factions:[a.FactionName.CyberSec,a.FactionName.NiteSec]},[a.AugmentationName.CranialSignalProcessorsG2]:{repCost:18750,moneyCost:125e6,info:"The second generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[a.AugmentationName.CranialSignalProcessorsG1],hacking_speed:1.02,hacking_chance:1.05,hacking:1.07,factions:[a.FactionName.CyberSec,a.FactionName.NiteSec]},[a.AugmentationName.CranialSignalProcessorsG3]:{repCost:5e4,moneyCost:55e7,info:"The third generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[a.AugmentationName.CranialSignalProcessorsG2,a.AugmentationName.CranialSignalProcessorsG1],hacking_speed:1.02,hacking_money:1.15,hacking:1.09,factions:[a.FactionName.NiteSec,a.FactionName.TheBlackHand,a.FactionName.BitRunners]},[a.AugmentationName.CranialSignalProcessorsG4]:{repCost:125e3,moneyCost:11e8,info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[a.AugmentationName.CranialSignalProcessorsG3,a.AugmentationName.CranialSignalProcessorsG2,a.AugmentationName.CranialSignalProcessorsG1],hacking_speed:1.02,hacking_money:1.2,hacking_grow:1.25,factions:[a.FactionName.TheBlackHand,a.FactionName.BitRunners]},[a.AugmentationName.CranialSignalProcessorsG5]:{repCost:25e4,moneyCost:225e7,info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[a.AugmentationName.CranialSignalProcessorsG4,a.AugmentationName.CranialSignalProcessorsG3,a.AugmentationName.CranialSignalProcessorsG2,a.AugmentationName.CranialSignalProcessorsG1],hacking:1.3,hacking_money:1.25,hacking_grow:1.75,factions:[a.FactionName.BitRunners]},[a.AugmentationName.DataJack]:{repCost:112500,moneyCost:45e7,info:"A brain implant that provides an interface for direct, wireless communication between a computer's main memory and the mind. This implant allows the user to not only access a computer's memory, but also alter and delete it.",hacking_money:1.25,factions:[a.FactionName.BitRunners,a.FactionName.TheBlackHand,a.FactionName.NiteSec,a.FactionName.Chongqing,a.FactionName.NewTokyo]},[a.AugmentationName.DermaForce]:{repCost:15e3,moneyCost:5e7,info:"Synthetic skin that is grafted onto the body. This skin consists of millions of nanobots capable of projecting high-density muon beams, creating an energy barrier around the user.",defense:1.4,factions:[a.FactionName.Volhaven]},[a.AugmentationName.EMS4Recombination]:{repCost:2500,moneyCost:275e6,info:"A DNA recombination of the EMS-4 Gene. This genetic engineering technique was originally used on Bladeburners during the Synthoid uprising to induce wakefulness and concentration, suppress fear, reduce empathy, improve reflexes, and improve memory among other things.",bladeburner_success_chance:1.03,bladeburner_analysis:1.05,bladeburner_stamina_gain:1.02,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.ENM]:{repCost:15e3,moneyCost:25e7,info:"A thin device embedded inside the arm containing a wireless module capable of connecting to nearby networks. Once connected, the Netburner Module is capable of capturing and processing all of the traffic on that network. By itself, the Embedded Netburner Module does not do much, but a variety of very powerful upgrades can be installed that allow you to fully control the traffic on a network.",hacking:1.08,factions:[a.FactionName.BitRunners,a.FactionName.TheBlackHand,a.FactionName.NiteSec,a.FactionName.ECorp,a.FactionName.MegaCorp,a.FactionName.FulcrumSecretTechnologies,a.FactionName.NWO,a.FactionName.BladeIndustries]},[a.AugmentationName.ENMAnalyzeEngine]:{repCost:625e3,moneyCost:6e9,info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster that vastly outperforms the Netburner Module's native single-core processor.",prereqs:[a.AugmentationName.ENM],hacking_speed:1.1,factions:[a.FactionName.ECorp,a.FactionName.MegaCorp,a.FactionName.FulcrumSecretTechnologies,a.FactionName.NWO,a.FactionName.Daedalus,a.FactionName.TheCovenant,a.FactionName.Illuminati]},[a.AugmentationName.ENMCore]:{repCost:175e3,moneyCost:25e8,info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgrade allows the Embedded Netburner Module to generate its own data on a network.",prereqs:[a.AugmentationName.ENM],hacking_speed:1.03,hacking_money:1.1,hacking_chance:1.03,hacking_exp:1.07,hacking:1.07,factions:[a.FactionName.BitRunners,a.FactionName.TheBlackHand,a.FactionName.ECorp,a.FactionName.MegaCorp,a.FactionName.FulcrumSecretTechnologies,a.FactionName.NWO,a.FactionName.BladeIndustries]},[a.AugmentationName.ENMCoreV2]:{repCost:1e6,moneyCost:45e8,info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to control information on a network by re-routing traffic, spoofing IP addresses, and altering the data inside network packets.",prereqs:[a.AugmentationName.ENMCore,a.AugmentationName.ENM],hacking_speed:1.05,hacking_money:1.3,hacking_chance:1.05,hacking_exp:1.15,hacking:1.08,factions:[a.FactionName.BitRunners,a.FactionName.ECorp,a.FactionName.MegaCorp,a.FactionName.FulcrumSecretTechnologies,a.FactionName.NWO,a.FactionName.BladeIndustries,a.FactionName.OmniTekIncorporated,a.FactionName.KuaiGongInternational]},[a.AugmentationName.ENMCoreV3]:{repCost:175e4,moneyCost:75e8,info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into any device on a network.",prereqs:[a.AugmentationName.ENMCoreV2,a.AugmentationName.ENMCore,a.AugmentationName.ENM],hacking_speed:1.05,hacking_money:1.4,hacking_chance:1.1,hacking_exp:1.25,hacking:1.1,factions:[a.FactionName.ECorp,a.FactionName.MegaCorp,a.FactionName.FulcrumSecretTechnologies,a.FactionName.NWO,a.FactionName.Daedalus,a.FactionName.TheCovenant,a.FactionName.Illuminati]},[a.AugmentationName.ENMDMA]:{repCost:1e6,moneyCost:7e9,info:"This implant installs a Direct Memory Access (DMA) controller into the Embedded Netburner Module. This allows the Module to send and receive data directly to and from the main memory of devices on a network.",prereqs:[a.AugmentationName.ENM],hacking_money:1.4,hacking_chance:1.2,factions:[a.FactionName.ECorp,a.FactionName.MegaCorp,a.FactionName.FulcrumSecretTechnologies,a.FactionName.NWO,a.FactionName.Daedalus,a.FactionName.TheCovenant,a.FactionName.Illuminati]},[a.AugmentationName.EnhancedMyelinSheathing]:{repCost:1e5,moneyCost:1375e6,info:"Electrical signals are used to induce a new, artificial form of myelinogenesis in the human body. This process results in the proliferation of new, synthetic myelin sheaths in the nervous system. These myelin sheaths can propagate neuro-signals much faster than their organic counterparts, leading to greater processing speeds and better brain function.",hacking_speed:1.03,hacking_exp:1.1,hacking:1.08,factions:[a.FactionName.FulcrumSecretTechnologies,a.FactionName.BitRunners,a.FactionName.TheBlackHand]},[a.AugmentationName.EnhancedSocialInteractionImplant]:{repCost:375e3,moneyCost:1375e6,info:"A cranial implant that greatly assists in the user's ability to analyze social situations and interactions. The system uses a wide variety of factors such as facial expression, body language, voice tone, and inflection to determine the best course of action during social situations. The implant also uses deep learning software to continuously learn new behavior patterns and how to best respond.",charisma:1.6,charisma_exp:1.6,factions:[a.FactionName.BachmanAssociates,a.FactionName.NWO,a.FactionName.ClarkeIncorporated,a.FactionName.OmniTekIncorporated,a.FactionName.FourSigma]},[a.AugmentationName.EsperEyewear]:{repCost:1250,moneyCost:165e6,info:"Ballistic-grade protective and retractable eyewear that was designed specifically for Bladeburner units. This is implanted by installing a mechanical frame in the skull's orbit. This frame interfaces with the brain and allows the user to automatically extrude and extract the eyewear. The eyewear protects against debris, shrapnel, lasers, blinding flashes, and gas. It is also embedded with a data processing chip that can be programmed to display an AR HUD to assist the user in field missions.",bladeburner_success_chance:1.03,dexterity:1.05,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.FloodOfPoseidon]:{repCost:1e4,moneyCost:1e6,info:"Transtinatium VVD reticulator used in optico-sterbing recognition.",stats:"This augmentation makes the Symbol matching minigame easier by indicating the correct choice.",isSpecial:!0,factions:[a.FactionName.ShadowsOfAnarchy]},[a.AugmentationName.FocusWire]:{repCost:75e3,moneyCost:9e8,info:"A cranial implant that stops procrastination by blocking specific neural pathways in the brain.",hacking_exp:1.05,strength_exp:1.05,defense_exp:1.05,dexterity_exp:1.05,agility_exp:1.05,charisma_exp:1.05,company_rep:1.1,work_money:1.2,factions:[a.FactionName.BachmanAssociates,a.FactionName.ClarkeIncorporated,a.FactionName.FourSigma,a.FactionName.KuaiGongInternational]},[a.AugmentationName.GolemSerum]:{repCost:31250,moneyCost:11e9,info:"A serum that permanently enhances many aspects of human capabilities, including strength, speed, immune system enhancements, and mitochondrial efficiency. The serum was originally developed by the Chinese military in an attempt to create super soldiers.",strength:1.07,defense:1.07,dexterity:1.07,agility:1.07,bladeburner_stamina_gain:1.05,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.GrapheneBionicArms]:{repCost:5e5,moneyCost:375e7,info:"An upgrade to the Bionic Arms augmentation. It infuses the prosthetic arms with an advanced graphene material to make them stronger and lighter.",prereqs:[a.AugmentationName.BionicArms],strength:1.85,dexterity:1.85,factions:[a.FactionName.TheDarkArmy]},[a.AugmentationName.GrapheneBionicLegs]:{repCost:75e4,moneyCost:45e8,info:"An upgrade to the 'Bionic Legs' augmentation. The legs are fused with graphene, greatly enhancing jumping ability.",prereqs:[a.AugmentationName.BionicLegs],agility:2.5,factions:[a.FactionName.MegaCorp,a.FactionName.ECorp,a.FactionName.FulcrumSecretTechnologies]},[a.AugmentationName.GrapheneBionicSpine]:{repCost:1625e3,moneyCost:6e9,info:"An upgrade to the 'Bionic Spine' augmentation. The spine is fused with graphene which enhances durability and supercharges all body functions.",prereqs:[a.AugmentationName.BionicSpine],strength:1.6,defense:1.6,agility:1.6,dexterity:1.6,factions:[a.FactionName.FulcrumSecretTechnologies,a.FactionName.ECorp]},[a.AugmentationName.GrapheneBoneLacings]:{repCost:1125e3,moneyCost:425e7,info:"Graphene is grafted and fused into the skeletal structure, enhancing bone density and tensile strength.",strength:1.7,defense:1.7,factions:[a.FactionName.FulcrumSecretTechnologies,a.FactionName.TheCovenant]},[a.AugmentationName.GrapheneBrachiBlades]:{repCost:225e3,moneyCost:25e8,info:"An upgrade to the BrachiBlades augmentation. It infuses the retractable blades with an advanced graphene material making them stronger and lighter.",prereqs:[a.AugmentationName.BrachiBlades],strength:1.4,defense:1.4,crime_success:1.1,crime_money:1.3,factions:[a.FactionName.SpeakersForTheDead]},[a.AugmentationName.HacknetNodeCPUUpload]:{repCost:3750,moneyCost:11e6,info:"Uploads the architecture and design details of a Hacknet Node's CPU into the brain. This allows the user to engineer custom hardware and software for the Hacknet Node that provides better performance.",hacknet_node_money:1.15,hacknet_node_purchase_cost:.85,factions:[a.FactionName.Netburners]},[a.AugmentationName.HacknetNodeCacheUpload]:{repCost:2500,moneyCost:55e5,info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache into the brain. This allows the user to engineer custom cache hardware for the Hacknet Node that offers better performance.",hacknet_node_money:1.1,hacknet_node_level_cost:.85,factions:[a.FactionName.Netburners]},[a.AugmentationName.HacknetNodeCoreDNI]:{repCost:12500,moneyCost:6e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using electrochemical signals.",hacknet_node_money:1.45,factions:[a.FactionName.Netburners]},[a.AugmentationName.HacknetNodeKernelDNI]:{repCost:7500,moneyCost:4e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's kernel using electrochemical signals.",hacknet_node_money:1.25,factions:[a.FactionName.Netburners]},[a.AugmentationName.HacknetNodeNICUpload]:{repCost:1875,moneyCost:45e5,info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that offers better performance.",hacknet_node_money:1.1,hacknet_node_purchase_cost:.9,factions:[a.FactionName.Netburners]},[a.AugmentationName.HemoRecirculator]:{moneyCost:45e6,repCost:1e4,info:"A heart implant that greatly increases the body's ability to effectively use and pump blood.",strength:1.08,defense:1.08,agility:1.08,dexterity:1.08,factions:[a.FactionName.Tetrads,a.FactionName.TheDarkArmy,a.FactionName.TheSyndicate]},[a.AugmentationName.HiveMind]:{repCost:15e5,moneyCost:55e8,info:`A brain implant developed by ${a.FactionName.ECorp}. They do not reveal what exactly the implant does, but they promise that it will greatly enhance your abilities.`,hacking_grow:3,stats:"",factions:[a.FactionName.ECorp]},[a.AugmentationName.HuntOfArtemis]:{repCost:1e4,moneyCost:1e6,info:"magneto-turboencabulator based on technology by Micha Eike Siemon, increases the user's electro-magnetic sensitivity.",stats:"This augmentation makes the Minesweeper minigame easier by showing the location of all mines and keeping their position.",isSpecial:!0,factions:[a.FactionName.ShadowsOfAnarchy]},[a.AugmentationName.HydroflameLeftArm]:{repCost:125e4,moneyCost:25e11,info:"The left arm of a legendary BitRunner who ascended beyond this world. It projects a light blue energy shield that protects the exposed inner parts. Even though it contains no weapons, the advanced tungsten titanium alloy increases the user's strength to unbelievable levels.",strength:2.8,factions:[a.FactionName.NWO]},[a.AugmentationName.HyperionV1]:{repCost:12500,moneyCost:275e7,info:"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable of rapidly firing bolts of high-density plasma. The weapon is meant to be used against augmented enemies as the ionized nature of the plasma disrupts the electrical systems of Augmentations. However, it can also be effective against non-augmented enemies due to its high temperature and concussive force.",bladeburner_success_chance:1.06,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.HyperionV2]:{repCost:25e3,moneyCost:55e8,info:"A pair of mini plasma cannons embedded into the hands. This augmentation is more advanced and powerful than the original V1 model. This V2 model is more power-efficient, more accurate, and can fire plasma bolts at a much higher velocity than the V1 model.",prereqs:[a.AugmentationName.HyperionV1],bladeburner_success_chance:1.08,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.Hypersight]:{repCost:15e4,moneyCost:275e7,info:"A bionic eye implant that grants sight capabilities far beyond those of a natural human. Embedded circuitry within the implant provides the ability to detect heat and movement through solid objects such as walls, thus providing 'x-ray vision'-like capabilities.",dexterity:1.4,hacking_speed:1.03,hacking_money:1.1,factions:[a.FactionName.BladeIndustries,a.FactionName.KuaiGongInternational]},[a.AugmentationName.INFRARet]:{repCost:7500,moneyCost:3e7,info:"A tiny chip that sits behind the retina. This implant lets the user visually detect infrared radiation.",crime_success:1.25,crime_money:1.1,dexterity:1.1,factions:[a.FactionName.Ishima]},[a.AugmentationName.INTERLINKED]:{repCost:25e3,moneyCost:55e8,info:"The DNA is genetically modified to enhance the human's body extracellular matrix (ECM). This improves the ECM's ability to structurally support the body and grants heightened strength and durability.",strength_exp:1.05,defense_exp:1.05,dexterity_exp:1.05,agility_exp:1.05,bladeburner_max_stamina:1.1,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.KnowledgeOfApollo]:{repCost:1e4,moneyCost:1e6,info:"Neodynic retention fjengeln spoofer using -φ karmions, net positive effect on implantee's delta wave.",stats:"This augmentation makes the Wire Cutting minigame easier by indicating the incorrect wires.",isSpecial:!0,factions:[a.FactionName.ShadowsOfAnarchy]},[a.AugmentationName.LuminCloaking1]:{repCost:1500,moneyCost:5e6,info:"A skin implant that reinforces the skin with highly-advanced synthetic cells. These cells, when powered, have a negative refractive index. As a result, they bend light around the skin, making the user much harder to see with the naked eye.",agility:1.05,crime_money:1.1,factions:[a.FactionName.SlumSnakes,a.FactionName.Tetrads]},[a.AugmentationName.LuminCloaking2]:{repCost:5e3,moneyCost:3e7,info:"This is a more advanced version of the LuminCloaking-V1 augmentation. This skin implant reinforces the skin with highly-advanced synthetic cells. These cells, when powered, are capable of not only bending light but also of bending heat, making the user more resilient as well as stealthy.",prereqs:[a.AugmentationName.LuminCloaking1],agility:1.1,defense:1.1,crime_money:1.25,factions:[a.FactionName.SlumSnakes,a.FactionName.Tetrads]},[a.AugmentationName.MightOfAres]:{repCost:1e4,moneyCost:1e6,info:"Extra-ocular neurons taken from old martial art master. Injecting them gives the user the ability to predict the enemy's attack before they even know it themselves.",stats:"This augmentation makes the Slash minigame easier by showing you via an indicator when the slash in coming.",isSpecial:!0,factions:[a.FactionName.ShadowsOfAnarchy]},[a.AugmentationName.NanofiberWeave]:{repCost:37500,moneyCost:125e6,info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning, which improves its regenerative and extracellular homeostasis abilities.",strength:1.2,defense:1.2,factions:[a.FactionName.TheDarkArmy,a.FactionName.TheSyndicate,a.FactionName.OmniTekIncorporated,a.FactionName.BladeIndustries,a.FactionName.TianDiHui,a.FactionName.SpeakersForTheDead,a.FactionName.FulcrumSecretTechnologies]},[a.AugmentationName.Neotra]:{repCost:562500,moneyCost:2875e6,info:"A highly-advanced techno-organic drug that is injected into the skeletal and integumentary system. The drug permanently modifies the DNA of the body's skin and bone cells, granting them the ability to repair and restructure themselves.",strength:1.55,defense:1.55,factions:[a.FactionName.BladeIndustries]},[a.AugmentationName.NeuralAccelerator]:{repCost:2e5,moneyCost:175e7,info:"A microprocessor that accelerates the processing speed of biological neural networks. This is a cranial implant that is embedded inside the brain.",hacking:1.1,hacking_exp:1.15,hacking_money:1.2,factions:[a.FactionName.BitRunners]},[a.AugmentationName.NeuralRetentionEnhancement]:{repCost:2e4,moneyCost:25e7,info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal circuits, strengthening the ability to retain information.",hacking_exp:1.25,factions:[a.FactionName.NiteSec]},[a.AugmentationName.Neuralstimulator]:{repCost:5e4,moneyCost:3e9,info:"A cranial implant that intelligently stimulates certain areas of the brain in order to improve cognitive functions.",hacking_speed:1.02,hacking_chance:1.1,hacking_exp:1.12,factions:[a.FactionName.TheBlackHand,a.FactionName.Chongqing,a.FactionName.Sector12,a.FactionName.NewTokyo,a.FactionName.Aevum,a.FactionName.Ishima,a.FactionName.Volhaven,a.FactionName.BachmanAssociates,a.FactionName.ClarkeIncorporated,a.FactionName.FourSigma]},[a.AugmentationName.Neuregen]:{repCost:37500,moneyCost:375e6,info:"A drug that genetically modifies the neurons in the brain resulting in neurons that never die, continuously regenerate, and strengthen themselves.",hacking_exp:1.4,factions:[a.FactionName.Chongqing]},[a.AugmentationName.NeuroFluxGovernor]:{repCost:500,moneyCost:75e4,info:"Undetectable adamantium nanobots injected in the users bloodstream. The NeuroFlux Governor monitors and regulates all aspects of the human body, essentially 'governing' the body. By doing so, it improves the users performance for most actions.",stats:`This special augmentation can be leveled up infinitely. Each level of this augmentation increases MOST multipliers by 1% (+${(100*e).toFixed(6)}%), stacking multiplicatively.`,isSpecial:!0,hacking_chance:1.01+e,hacking_speed:1.01+e,hacking_money:1.01+e,hacking_grow:1.01+e,hacking:1.01+e,strength:1.01+e,defense:1.01+e,dexterity:1.01+e,agility:1.01+e,charisma:1.01+e,hacking_exp:1.01+e,strength_exp:1.01+e,defense_exp:1.01+e,dexterity_exp:1.01+e,agility_exp:1.01+e,charisma_exp:1.01+e,company_rep:1.01+e,faction_rep:1.01+e,crime_money:1.01+e,crime_success:1.01+e,hacknet_node_money:1.01+e,hacknet_node_purchase_cost:1/(1.01+e),hacknet_node_ram_cost:1/(1.01+e),hacknet_node_core_cost:1/(1.01+e),hacknet_node_level_cost:1/(1.01+e),work_money:1.01+e,factions:Object.values(a.FactionName).filter((e=>![a.FactionName.ShadowsOfAnarchy,a.FactionName.Bladeburners,a.FactionName.ChurchOfTheMachineGod].includes(e)))},[a.AugmentationName.Neurolink]:{repCost:875e3,moneyCost:4375e6,info:`A brain implant that provides a high-bandwidth, direct neural link between your mind and the ${a.FactionName.BitRunners}' data servers, which reportedly contain the largest database of hacking tools and information in the world.`,hacking:1.15,hacking_exp:1.2,hacking_chance:1.1,hacking_speed:1.05,programs:[a.CompletedProgramName.ftpCrack,a.CompletedProgramName.relaySmtp],factions:[a.FactionName.BitRunners]},[a.AugmentationName.NeuronalDensification]:{repCost:187500,moneyCost:1375e6,info:"The brain is surgically re-engineered to have increased neuronal density by decreasing the neuron gap junction. Then, the body is genetically modified to enhance the production and capabilities of its neural stem cells.",hacking:1.15,hacking_exp:1.1,hacking_speed:1.03,factions:[a.FactionName.ClarkeIncorporated]},[a.AugmentationName.NeuroreceptorManager]:{repCost:75e3,moneyCost:55e7,info:"A brain implant carefully assembled around the synapses, which micromanages the activity and levels of various neuroreceptor chemicals and modulates electrical activity to optimize concentration, allowing the user to multitask much more effectively.",stats:"This augmentation removes the penalty for not focusing on actions such as working in a job or working for a faction.",factions:[a.FactionName.TianDiHui]},[a.AugmentationName.Neurotrainer1]:{repCost:1e3,moneyCost:4e6,info:"A decentralized cranial implant that improves the brain's ability to learn. It is installed by releasing millions of nanobots into the human brain, each of which attaches to a different neural pathway to enhance the brain's ability to retain and retrieve information.",hacking_exp:1.1,strength_exp:1.1,defense_exp:1.1,dexterity_exp:1.1,agility_exp:1.1,charisma_exp:1.1,factions:[a.FactionName.CyberSec,a.FactionName.Aevum]},[a.AugmentationName.Neurotrainer2]:{repCost:1e4,moneyCost:45e6,info:"A decentralized cranial implant that improves the brain's ability to learn. This is a more powerful version of the Neurotrainer I augmentation, but it does not require Neurotrainer I to be installed as a prerequisite.",hacking_exp:1.15,strength_exp:1.15,defense_exp:1.15,dexterity_exp:1.15,agility_exp:1.15,charisma_exp:1.15,factions:[a.FactionName.BitRunners,a.FactionName.NiteSec]},[a.AugmentationName.Neurotrainer3]:{repCost:25e3,moneyCost:13e7,info:"A decentralized cranial implant that improves the brain's ability to learn. This is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, but it does not require either of them to be installed as a prerequisite.",hacking_exp:1.2,strength_exp:1.2,defense_exp:1.2,dexterity_exp:1.2,agility_exp:1.2,charisma_exp:1.2,factions:[a.FactionName.NWO,a.FactionName.FourSigma]},[a.AugmentationName.NuoptimalInjectorImplant]:{repCost:5e3,moneyCost:2e7,info:"This torso implant automatically injects nootropic supplements into the bloodstream to improve memory, increase focus, and provide other cognitive enhancements.",company_rep:1.2,factions:[a.FactionName.TianDiHui,a.FactionName.Volhaven,a.FactionName.NewTokyo,a.FactionName.Chongqing,a.FactionName.ClarkeIncorporated,a.FactionName.FourSigma,a.FactionName.BachmanAssociates]},[a.AugmentationName.NutriGen]:{repCost:6250,moneyCost:25e5,info:"A thermo-powered artificial nutrition generator. Endogenously synthesizes glucose, amino acids, and vitamins and redistributes them across the body. The device is powered by the body's naturally wasted energy in the form of heat.",strength_exp:1.2,defense_exp:1.2,dexterity_exp:1.2,agility_exp:1.2,factions:[a.FactionName.NewTokyo]},[a.AugmentationName.nextSENS]:{repCost:437500,moneyCost:1925e6,info:"The body is genetically re-engineered to maintain a state of negligible senescence, preventing the body from deteriorating with age.",hacking:1.2,strength:1.2,defense:1.2,dexterity:1.2,agility:1.2,charisma:1.2,factions:[a.FactionName.ClarkeIncorporated]},[a.AugmentationName.OmniTekInfoLoad]:{repCost:625e3,moneyCost:2875e6,info:"OmniTek's data and information repository is uploaded into your brain, enhancing your programming and hacking abilities.",hacking:1.2,hacking_exp:1.25,factions:[a.FactionName.OmniTekIncorporated]},[a.AugmentationName.OrionShoulder]:{repCost:6250,moneyCost:55e7,info:"A bionic shoulder augmentation for the right shoulder. Using cybernetics, the ORION-MKIV shoulder enhances the strength and dexterity of the user's right arm. It also provides protection due to its crystallized graphene plating.",defense:1.05,strength:1.05,dexterity:1.05,bladeburner_success_chance:1.04,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.PCDNI]:{repCost:375e3,moneyCost:375e7,info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most computers. Connecting to a computer through this jack allows you to interface with it using the brain's electrochemical signals.",company_rep:1.3,hacking:1.08,factions:[a.FactionName.FourSigma,a.FactionName.OmniTekIncorporated,a.FactionName.ECorp,a.FactionName.BladeIndustries]},[a.AugmentationName.PCDNINeuralNetwork]:{repCost:15e5,moneyCost:75e8,info:"This is an additional installation that upgrades the functionality of the PC Direct-Neural Interface augmentation. When connected to a computer, the Neural Network upgrade allows the user to use their own brain's processing power to aid the computer in computational tasks.",prereqs:[a.AugmentationName.PCDNI],company_rep:2,hacking:1.1,hacking_speed:1.05,factions:[a.FactionName.FulcrumSecretTechnologies]},[a.AugmentationName.PCDNIOptimizer]:{repCost:5e5,moneyCost:45e8,info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It improves the performance of the interface and gives the user more control options to a connected computer.",prereqs:[a.AugmentationName.PCDNI],company_rep:1.75,hacking:1.1,factions:[a.FactionName.FulcrumSecretTechnologies,a.FactionName.ECorp,a.FactionName.BladeIndustries]},[a.AugmentationName.PCMatrix]:{repCost:1e5,moneyCost:2e9,info:"A 'Probability Computation Matrix' is installed in the frontal cortex. This implant uses advanced mathematical algorithms to rapidly identify and compute statistical outcomes of nearly every situation.",charisma:1.0777,charisma_exp:1.0777,work_money:1.777,faction_rep:1.0777,company_rep:1.0777,crime_success:1.0777,crime_money:1.0777,programs:[a.CompletedProgramName.deepScan1,a.CompletedProgramName.autoLink],factions:[a.FactionName.Aevum]},[a.AugmentationName.PhotosyntheticCells]:{repCost:562500,moneyCost:275e7,info:"Chloroplasts are added to epidermal stem cells and are applied to the body using a skin graft. The result is photosynthetic skin cells, allowing users to generate their own energy and nutrition using solar power.",strength:1.4,defense:1.4,agility:1.4,factions:[a.FactionName.KuaiGongInternational]},[a.AugmentationName.PowerRecirculator]:{repCost:25e3,moneyCost:18e7,info:"The body's nerves are attached with polypyrrole nanocircuits that are capable of capturing wasted energy, in the form of heat, and converting it back into usable power.",hacking:1.05,strength:1.05,defense:1.05,dexterity:1.05,agility:1.05,charisma:1.05,hacking_exp:1.1,strength_exp:1.1,defense_exp:1.1,dexterity_exp:1.1,agility_exp:1.1,charisma_exp:1.1,factions:[a.FactionName.Tetrads,a.FactionName.TheDarkArmy,a.FactionName.TheSyndicate,a.FactionName.NWO]},[a.AugmentationName.QLink]:{repCost:1875e3,moneyCost:25e12,info:`A brain implant that wirelessly connects you to the ${a.FactionName.Illuminati}'s quantum supercomputer, allowing you to access and use its incredible computing power.`,hacking:1.75,hacking_speed:2,hacking_chance:2.5,hacking_money:4,factions:[a.FactionName.Illuminati]},[a.AugmentationName.SNA]:{repCost:6250,moneyCost:3e7,info:"A cranial implant that affects the user's personality, making them better at negotiation in social situations.",work_money:1.1,company_rep:1.15,faction_rep:1.15,factions:[a.FactionName.TianDiHui]},[a.AugmentationName.SPTN97]:{repCost:125e4,moneyCost:4875e6,info:"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an artificially-synthesized gene that was developed by DARPA to create super-soldiers through genetic modification. The gene was outlawed in 2056.",strength:1.75,defense:1.75,dexterity:1.75,agility:1.75,hacking:1.15,factions:[a.FactionName.TheCovenant]},[a.AugmentationName.ShadowsSimulacrum]:{repCost:37500,moneyCost:4e8,info:"A crude but functional matter phase-shifter module that is embedded in the brainstem and cerebellum. This augmentation was developed by criminal organizations and allows the user to project and control holographic simulacrums within a large radius. These simulacrums are commonly used for espionage and surveillance work.",company_rep:1.15,faction_rep:1.15,factions:[a.FactionName.TheSyndicate,a.FactionName.TheDarkArmy,a.FactionName.SpeakersForTheDead]},[a.AugmentationName.SmartJaw]:{repCost:375e3,moneyCost:275e7,info:"A bionic jaw that contains advanced hardware and software capable of psychoanalyzing and profiling the personality of others using optical imaging software.",charisma:1.5,charisma_exp:1.5,company_rep:1.25,faction_rep:1.25,factions:[a.FactionName.BachmanAssociates]},[a.AugmentationName.SmartSonar]:{repCost:22500,moneyCost:75e6,info:"A cochlear implant that helps the player detect and locate enemies using sound propagation.",dexterity:1.1,dexterity_exp:1.15,crime_money:1.25,factions:[a.FactionName.SlumSnakes]},[a.AugmentationName.SpeechEnhancement]:{repCost:2500,moneyCost:125e5,info:"An advanced neural implant that improves your speaking abilities, making you more convincing and likable in conversations and overall improving your social interactions.",company_rep:1.1,charisma:1.1,factions:[a.FactionName.TianDiHui,a.FactionName.SpeakersForTheDead,a.FactionName.FourSigma,a.FactionName.KuaiGongInternational,a.FactionName.ClarkeIncorporated,a.FactionName.BachmanAssociates]},[a.AugmentationName.SpeechProcessor]:{repCost:7500,moneyCost:5e7,info:"A cochlear implant with an embedded computer that analyzes incoming speech. The embedded computer processes characteristics of incoming speech, such as tone and inflection, to pick up on subtle cues and aid in social interactions.",charisma:1.2,factions:[a.FactionName.TianDiHui,a.FactionName.Chongqing,a.FactionName.Sector12,a.FactionName.NewTokyo,a.FactionName.Aevum,a.FactionName.Ishima,a.FactionName.Volhaven,a.FactionName.Silhouette]},[a.AugmentationName.StaneksGift1]:{repCost:0,moneyCost:0,info:'Allison "Mother" Stanek imparts you with her gift. An experimental Augmentation implanted at the base of the neck. It allows you to overclock your entire system by carefully changing the configuration.',isSpecial:!0,hacking_chance:.9,hacking_speed:.9,hacking_money:.9,hacking_grow:.9,hacking:.9,strength:.9,defense:.9,dexterity:.9,agility:.9,charisma:.9,hacking_exp:.9,strength_exp:.9,defense_exp:.9,dexterity_exp:.9,agility_exp:.9,charisma_exp:.9,company_rep:.9,faction_rep:.9,crime_money:.9,crime_success:.9,hacknet_node_money:.9,hacknet_node_purchase_cost:1.1,hacknet_node_ram_cost:1.1,hacknet_node_core_cost:1.1,hacknet_node_level_cost:1.1,work_money:.9,stats:"Its unstable nature decreases all your stats by 10%",factions:[a.FactionName.ChurchOfTheMachineGod]},[a.AugmentationName.StaneksGift2]:{repCost:1e6,moneyCost:0,info:"The next evolution is near, a coming together of man and machine. A synthesis greater than the birth of the human organism. Time spent with the gift has allowed for acclimatization of the invasive augment and the toll it takes upon your frame granting a 5% reduced penalty to all stats.",prereqs:[a.AugmentationName.StaneksGift1],isSpecial:!0,hacking_chance:.95/.9,hacking_speed:.95/.9,hacking_money:.95/.9,hacking_grow:.95/.9,hacking:.95/.9,strength:.95/.9,defense:.95/.9,dexterity:.95/.9,agility:.95/.9,charisma:.95/.9,hacking_exp:.95/.9,strength_exp:.95/.9,defense_exp:.95/.9,dexterity_exp:.95/.9,agility_exp:.95/.9,charisma_exp:.95/.9,company_rep:.95/.9,faction_rep:.95/.9,crime_money:.95/.9,crime_success:.95/.9,hacknet_node_money:.95/.9,hacknet_node_purchase_cost:1.05/1.1,hacknet_node_ram_cost:1.05/1.1,hacknet_node_core_cost:1.05/1.1,hacknet_node_level_cost:1.05/1.1,work_money:.95/.9,stats:"The penalty for the gift is reduced to 5%",factions:[a.FactionName.ChurchOfTheMachineGod]},[a.AugmentationName.StaneksGift3]:{repCost:1e8,moneyCost:0,info:"The synthesis of human and machine is nothing to fear. It is our destiny. You will become greater than the sum of our parts. As One. Embrace your gift fully and wholly free of it's accursed toll. Serenity brings tranquility in the form of no longer suffering a stat penalty. ",prereqs:[a.AugmentationName.StaneksGift2,a.AugmentationName.StaneksGift1],isSpecial:!0,hacking_chance:1/.95,hacking_speed:1/.95,hacking_money:1/.95,hacking_grow:1/.95,hacking:1/.95,strength:1/.95,defense:1/.95,dexterity:1/.95,agility:1/.95,charisma:1/.95,hacking_exp:1/.95,strength_exp:1/.95,defense_exp:1/.95,dexterity_exp:1/.95,agility_exp:1/.95,charisma_exp:1/.95,company_rep:1/.95,faction_rep:1/.95,crime_money:1/.95,crime_success:1/.95,hacknet_node_money:1/.95,hacknet_node_purchase_cost:1/1.05,hacknet_node_ram_cost:1/1.05,hacknet_node_core_cost:1/1.05,hacknet_node_level_cost:1/1.05,work_money:1/.95,stats:"Stanek's Gift has no penalty.",factions:[a.FactionName.ChurchOfTheMachineGod]},[a.AugmentationName.SubdermalArmor]:{repCost:875e3,moneyCost:325e7,info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. The material is implanted underneath the skin, and is the most advanced form of defensive enhancement that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to mitigate damage from any fire or electrical traumas.",defense:2.2,factions:[a.FactionName.TheSyndicate,a.FactionName.FulcrumSecretTechnologies,a.FactionName.Illuminati,a.FactionName.Daedalus,a.FactionName.TheCovenant]},[a.AugmentationName.SynapticEnhancement]:{repCost:2e3,moneyCost:75e5,info:"A small cranial implant that continuously uses weak electrical signals to stimulate the brain and induce stronger synaptic activity. This improves the user's cognitive abilities.",hacking_speed:1.03,factions:[a.FactionName.CyberSec,a.FactionName.Aevum]},[a.AugmentationName.SynfibrilMuscle]:{repCost:437500,moneyCost:1125e6,info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. Scientists have named these artificially enhanced units 'synfibrils'.",strength:1.3,defense:1.3,factions:[a.FactionName.KuaiGongInternational,a.FactionName.FulcrumSecretTechnologies,a.FactionName.SpeakersForTheDead,a.FactionName.NWO,a.FactionName.TheCovenant,a.FactionName.Daedalus,a.FactionName.Illuminati,a.FactionName.BladeIndustries]},[a.AugmentationName.SyntheticHeart]:{moneyCost:2875e6,repCost:75e4,info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping blood more efficiently than an organic heart.",agility:1.5,strength:1.5,factions:[a.FactionName.KuaiGongInternational,a.FactionName.FulcrumSecretTechnologies,a.FactionName.SpeakersForTheDead,a.FactionName.NWO,a.FactionName.TheCovenant,a.FactionName.Daedalus,a.FactionName.Illuminati]},[a.AugmentationName.TITN41Injection]:{repCost:25e3,moneyCost:19e7,info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that control personality. The TITN-41 strain alters these genes so that the subject becomes more outgoing and sociable.",charisma:1.15,charisma_exp:1.15,factions:[a.FactionName.Silhouette]},[a.AugmentationName.Targeting1]:{moneyCost:15e6,repCost:5e3,info:"A cranial implant that is embedded within the inner ear structures and optic nerves. It regulates and enhances balance and hand-eye coordination.",dexterity:1.1,factions:[a.FactionName.SlumSnakes,a.FactionName.TheDarkArmy,a.FactionName.TheSyndicate,a.FactionName.Sector12,a.FactionName.Ishima,a.FactionName.OmniTekIncorporated,a.FactionName.KuaiGongInternational,a.FactionName.BladeIndustries]},[a.AugmentationName.Targeting2]:{moneyCost:425e5,repCost:8750,info:"This upgraded version of the 'Augmented Targeting' implant is capable of augmenting reality by digitally displaying weaknesses and vital signs of threats.",prereqs:[a.AugmentationName.Targeting1],dexterity:1.2,factions:[a.FactionName.TheDarkArmy,a.FactionName.TheSyndicate,a.FactionName.Sector12,a.FactionName.OmniTekIncorporated,a.FactionName.KuaiGongInternational,a.FactionName.BladeIndustries]},[a.AugmentationName.Targeting3]:{moneyCost:115e6,repCost:27500,info:"The latest version of the 'Augmented Targeting' implant adds the ability to lock-on and track threats.",prereqs:[a.AugmentationName.Targeting2,a.AugmentationName.Targeting1],dexterity:1.3,factions:[a.FactionName.TheDarkArmy,a.FactionName.TheSyndicate,a.FactionName.OmniTekIncorporated,a.FactionName.KuaiGongInternational,a.FactionName.BladeIndustries,a.FactionName.TheCovenant]},[a.AugmentationName.TheBlackHand]:{repCost:1e5,moneyCost:55e7,info:"A highly advanced bionic hand. This prosthetic not only enhances strength and dexterity but it is also embedded with hardware and firmware that lets the user connect to, access, and hack devices and machines by just touching them.",strength:1.15,dexterity:1.15,hacking:1.1,hacking_speed:1.02,hacking_money:1.1,factions:[a.FactionName.TheBlackHand]},[a.AugmentationName.TheRedPill]:{repCost:25e5,moneyCost:0,info:"It's time to leave the cave.",stats:"",isSpecial:!0,factions:[a.FactionName.Daedalus]},[a.AugmentationName.TrickeryOfHermes]:{repCost:1e4,moneyCost:1e6,info:"Penta-dynamo-neurovascular-valve inserted in the carpal ligament, enhances dexterity.",stats:"This augmentation makes the Cheat Code minigame easier by allowing the opposite character.",isSpecial:!0,factions:[a.FactionName.ShadowsOfAnarchy]},[a.AugmentationName.UnstableCircadianModulator]:(0,o.T)(),[a.AugmentationName.VangelisVirus]:{repCost:18750,moneyCost:275e7,info:"A synthetic symbiotic virus that is injected into human brain tissue. The Vangelis virus heightens the senses and focus of its host, and also enhances its intuition.",dexterity_exp:1.1,bladeburner_analysis:1.1,bladeburner_success_chance:1.04,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.VangelisVirus3]:{repCost:37500,moneyCost:11e9,info:"An improved version of Vangelis, a synthetic symbiotic virus that is injected into human brain tissue. On top of the benefits of the original virus, this also grants accelerated healing and enhanced reflexes.",prereqs:[a.AugmentationName.VangelisVirus],defense_exp:1.1,dexterity_exp:1.1,bladeburner_analysis:1.15,bladeburner_success_chance:1.05,isSpecial:!0,factions:[a.FactionName.Bladeburners]},[a.AugmentationName.WKSharmonizer]:{repCost:1e4,moneyCost:1e6,info:`A copy of the WKS harmonizer from the MIA leader of the ${a.FactionName.ShadowsOfAnarchy} injects *Γ-based cells that provides general enhancement to the body.`,stats:"This augmentation makes many aspects of infiltration easier and more productive, via increased timer and rewards, reduced damage taken, etc.",isSpecial:!0,factions:[a.FactionName.ShadowsOfAnarchy]},[a.AugmentationName.WiredReflexes]:{repCost:1250,moneyCost:25e5,info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, supercharging the spread of neural signals and increasing reflex speed.",agility:1.05,dexterity:1.05,factions:[a.FactionName.TianDiHui,a.FactionName.SlumSnakes,a.FactionName.Sector12,a.FactionName.Volhaven,a.FactionName.Aevum,a.FactionName.Ishima,a.FactionName.TheSyndicate,a.FactionName.TheDarkArmy,a.FactionName.SpeakersForTheDead]},[a.AugmentationName.WisdomOfAthena]:{repCost:1e4,moneyCost:1e6,info:"A connective brain implant to SASHA that focuses on pattern recognition and predictive templating.",stats:"This augmentation makes the Bracket minigame easier by removing all '[' ']'.",isSpecial:!0,factions:[a.FactionName.ShadowsOfAnarchy]},[a.AugmentationName.Xanipher]:{repCost:875e3,moneyCost:425e7,info:"A concoction of advanced nanobots that is orally ingested into the body. These nanobots induce physiological changes and significantly improve the body's functioning in all aspects.",hacking:1.2,strength:1.2,defense:1.2,dexterity:1.2,agility:1.2,charisma:1.2,hacking_exp:1.15,strength_exp:1.15,defense_exp:1.15,dexterity_exp:1.15,agility_exp:1.15,charisma_exp:1.15,factions:[a.FactionName.NWO]},[a.AugmentationName.ZOE]:{isSpecial:!0,repCost:1/0,moneyCost:1e12,info:"Zoë's Omnicerebrum Ënhancer for sleeves inserts an omnicerebrum into your sleeve. An omnicerebrum is a near perfect simulation of the human brain, allowing it to take advantage of a larger variety of augments. But you should know about this BitRunner, since you have one of these yourself!",stats:"Allows sleeves to benefit from Stanek's Gift but it is less powerful if several are installed.",factions:[]}};return(0,s.KW)(a.AugmentationName,(e=>{const n=t[e];return n.name=e,new r.p(n)}))})();function c(){const e=(0,o.T)();e.name=a.AugmentationName.UnstableCircadianModulator,l[a.AugmentationName.UnstableCircadianModulator]=new r.p(e)}},59541:(e,t,n)=>{"use strict";n.d(t,{T:()=>i});var a=n(33244),r=n(21623),o=n(12450);function i(){const e=function(){const e=[{bonuses:{hacking_chance:1.25,hacking_speed:1.1,hacking_money:1.25,hacking_grow:1.1},description:"Increases the player's hacking chance by 25%.\nIncreases the player's hacking speed by 10%.\nIncreases the amount of money the player's gains from hacking by 25%.\nImproves grow() by 10%."},{bonuses:{hacking:1.15,hacking_exp:2},description:"Increases the player's hacking skill by 15%.\nIncreases the player's hacking experience gain rate by 100%."},{bonuses:{strength:1.25,strength_exp:2,defense:1.25,defense_exp:2,dexterity:1.25,dexterity_exp:2,agility:1.25,agility_exp:2},description:"Increases all of the player's combat stats by 25%.\nIncreases all of the player's combat stat experience gain rate by 100%."},{bonuses:{charisma:1.5,charisma_exp:2},description:"This augmentation increases the player's charisma by 50%.\nIncreases the player's charisma experience gain rate by 100%."},{bonuses:{hacknet_node_money:1.2,hacknet_node_purchase_cost:.85,hacknet_node_ram_cost:.85,hacknet_node_core_cost:.85,hacknet_node_level_cost:.85},description:"Increases the amount of money produced by Hacknet Nodes by 20%.\nDecreases all costs related to Hacknet Node by 15%."},{bonuses:{company_rep:1.25,faction_rep:1.15,work_money:1.7},description:"Increases the amount of money the player gains from working by 70%.\nIncreases the amount of reputation the player gains when working for a company by 25%.\nIncreases the amount of reputation the player gains for a faction by 15%."},{bonuses:{crime_success:2,crime_money:2},description:"Increases the player's crime success rate by 100%.\nIncreases the amount of money the player gains from crimes by 100%."}],t=new o.e7(Math.floor(Date.now()/36e5));for(let e=0;e<5;e++)t.step();return e[Math.floor(e.length*t.random())]}(),t={moneyCost:5e9,repCost:362500,info:"An experimental nanobot injection. Its unstable nature leads to unpredictable results based on your circadian rhythm.",factions:[a.FactionName.SpeakersForTheDead]};return(0,r.nd)(e.bonuses).forEach((n=>t[n]=e.bonuses[n])),t}},43943:(e,t,n)=>{"use strict";let a;n.d(t,{D:()=>a}),function(e){e.NeuroFluxGovernor="NeuroFlux Governor",e.Targeting1="Augmented Targeting I",e.Targeting2="Augmented Targeting II",e.Targeting3="Augmented Targeting III",e.SyntheticHeart="Synthetic Heart",e.SynfibrilMuscle="Synfibril Muscle",e.CombatRib1="Combat Rib I",e.CombatRib2="Combat Rib II",e.CombatRib3="Combat Rib III",e.NanofiberWeave="Nanofiber Weave",e.SubdermalArmor="NEMEAN Subdermal Weave",e.WiredReflexes="Wired Reflexes",e.GrapheneBoneLacings="Graphene Bone Lacings",e.BionicSpine="Bionic Spine",e.GrapheneBionicSpine="Graphene Bionic Spine Upgrade",e.BionicLegs="Bionic Legs",e.GrapheneBionicLegs="Graphene Bionic Legs Upgrade",e.SpeechProcessor="Speech Processor Implant",e.TITN41Injection="TITN-41 Gene-Modification Injection",e.EnhancedSocialInteractionImplant="Enhanced Social Interaction Implant",e.BitWire="BitWire",e.ArtificialBioNeuralNetwork="Artificial Bio-neural Network Implant",e.ArtificialSynapticPotentiation="Artificial Synaptic Potentiation",e.EnhancedMyelinSheathing="Enhanced Myelin Sheathing",e.SynapticEnhancement="Synaptic Enhancement Implant",e.NeuralRetentionEnhancement="Neural-Retention Enhancement",e.DataJack="DataJack",e.ENM="Embedded Netburner Module",e.ENMCore="Embedded Netburner Module Core Implant",e.ENMCoreV2="Embedded Netburner Module Core V2 Upgrade",e.ENMCoreV3="Embedded Netburner Module Core V3 Upgrade",e.ENMAnalyzeEngine="Embedded Netburner Module Analyze Engine",e.ENMDMA="Embedded Netburner Module Direct Memory Access Upgrade",e.Neuralstimulator="Neuralstimulator",e.NeuralAccelerator="Neural Accelerator",e.CranialSignalProcessorsG1="Cranial Signal Processors - Gen I",e.CranialSignalProcessorsG2="Cranial Signal Processors - Gen II",e.CranialSignalProcessorsG3="Cranial Signal Processors - Gen III",e.CranialSignalProcessorsG4="Cranial Signal Processors - Gen IV",e.CranialSignalProcessorsG5="Cranial Signal Processors - Gen V",e.NeuronalDensification="Neuronal Densification",e.NeuroreceptorManager="Neuroreceptor Management Implant",e.NuoptimalInjectorImplant="Nuoptimal Nootropic Injector Implant",e.SpeechEnhancement="Speech Enhancement",e.FocusWire="FocusWire",e.PCDNI="PC Direct-Neural Interface",e.PCDNIOptimizer="PC Direct-Neural Interface Optimization Submodule",e.PCDNINeuralNetwork="PC Direct-Neural Interface NeuroNet Injector",e.PCMatrix="PCMatrix",e.ADRPheromone1="ADR-V1 Pheromone Gene",e.ADRPheromone2="ADR-V2 Pheromone Gene",e.ShadowsSimulacrum="The Shadow's Simulacrum",e.HacknetNodeCPUUpload="Hacknet Node CPU Architecture Neural-Upload",e.HacknetNodeCacheUpload="Hacknet Node Cache Architecture Neural-Upload",e.HacknetNodeNICUpload="Hacknet Node NIC Architecture Neural-Upload",e.HacknetNodeKernelDNI="Hacknet Node Kernel Direct-Neural Interface",e.HacknetNodeCoreDNI="Hacknet Node Core Direct-Neural Interface",e.Neurotrainer1="Neurotrainer I",e.Neurotrainer2="Neurotrainer II",e.Neurotrainer3="Neurotrainer III",e.Hypersight="HyperSight Corneal Implant",e.LuminCloaking1="LuminCloaking-V1 Skin Implant",e.LuminCloaking2="LuminCloaking-V2 Skin Implant",e.HemoRecirculator="HemoRecirculator",e.SmartSonar="SmartSonar Implant",e.PowerRecirculator="Power Recirculation Core",e.QLink="QLink",e.TheRedPill="The Red Pill",e.SPTN97="SPTN-97 Gene Modification",e.HiveMind="ECorp HVMind Implant",e.CordiARCReactor="CordiARC Fusion Reactor",e.SmartJaw="SmartJaw",e.Neotra="Neotra",e.Xanipher="Xanipher",e.nextSENS="nextSENS Gene Modification",e.OmniTekInfoLoad="OmniTek InfoLoad",e.PhotosyntheticCells="Photosynthetic Cells",e.Neurolink="BitRunners Neurolink",e.TheBlackHand="The Black Hand",e.UnstableCircadianModulator="Unstable Circadian Modulator",e.CRTX42AA="CRTX42-AA Gene Modification",e.Neuregen="Neuregen Gene Modification",e.CashRoot="CashRoot Starter Kit",e.NutriGen="NutriGen Implant",e.INFRARet="INFRARET Enhancement",e.DermaForce="DermaForce Particle Barrier",e.GrapheneBrachiBlades="Graphene BrachiBlades Upgrade",e.GrapheneBionicArms="Graphene Bionic Arms Upgrade",e.BrachiBlades="BrachiBlades",e.BionicArms="Bionic Arms",e.SNA="Social Negotiation Assistant (S.N.A)",e.CongruityImplant="nickofolas Congruity Implant",e.HydroflameLeftArm="Hydroflame Left Arm",e.BigDsBigBrain="BigD's Big ... Brain",e.ZOE="Z.O.Ë.",e.EsperEyewear="EsperTech Bladeburner Eyewear",e.EMS4Recombination="EMS-4 Recombination",e.OrionShoulder="ORION-MKIV Shoulder",e.HyperionV1="Hyperion Plasma Cannon V1",e.HyperionV2="Hyperion Plasma Cannon V2",e.GolemSerum="GOLEM Serum",e.VangelisVirus="Vangelis Virus",e.VangelisVirus3="Vangelis Virus 3.0",e.INTERLINKED="I.N.T.E.R.L.I.N.K.E.D",e.BladeRunner="Blade's Runners",e.BladeArmor="BLADE-51b Tesla Armor",e.BladeArmorPowerCells="BLADE-51b Tesla Armor: Power Cells Upgrade",e.BladeArmorEnergyShielding="BLADE-51b Tesla Armor: Energy Shielding Upgrade",e.BladeArmorUnibeam="BLADE-51b Tesla Armor: Unibeam Upgrade",e.BladeArmorOmnibeam="BLADE-51b Tesla Armor: Omnibeam Upgrade",e.BladeArmorIPU="BLADE-51b Tesla Armor: IPU Upgrade",e.BladesSimulacrum="The Blade's Simulacrum",e.StaneksGift1="Stanek's Gift - Genesis",e.StaneksGift2="Stanek's Gift - Awakening",e.StaneksGift3="Stanek's Gift - Serenity",e.MightOfAres="SoA - Might of Ares",e.WisdomOfAthena="SoA - Wisdom of Athena",e.TrickeryOfHermes="SoA - Trickery of Hermes",e.BeautyOfAphrodite="SoA - Beauty of Aphrodite",e.ChaosOfDionysus="SoA - Chaos of Dionysus",e.FloodOfPoseidon="SoA - Flood of Poseidon",e.HuntOfArtemis="SoA - Hunt of Artemis",e.KnowledgeOfApollo="SoA - Knowledge of Apollo",e.WKSharmonizer="SoA - phyzical WKS harmonizer"}(a||(a={}))},15571:(e,t,n)=>{"use strict";n.d(t,{e:()=>a});class a{level=1;constructor(e){this.name=e}}},16937:(e,t,n)=>{"use strict";n.d(t,{n:()=>A});var a=n(67294),r=n(8618),o=n(57584),i=n(37061),s=n(18994),l=n(93936),c=n(81138),u=n(56798),m=n(17575),f=n(30120),h=n(28881),d=n(78016),p=n(51087),g=n(54538),y=n(49173),b=n(33244),v=n(73440),k=n(72938),w=n(22115),E=n(40238),S=n(39401),C=n(95173),x=n(88775);const N=()=>{var e;const t=(null===(e=y.J5.augmentations.find((e=>e.name===b.AugmentationName.NeuroFluxGovernor)))||void 0===e?void 0:e.level)??0;return t>0?a.createElement(h.Z,{sx:{p:1}},a.createElement(c.Z,{variant:"h5",color:p.Z.theme.info},"NeuroFlux Governor - Level ",t),a.createElement(c.Z,{color:p.Z.theme.info,whiteSpace:"pre-wrap"},v.x[b.AugmentationName.NeuroFluxGovernor].stats),a.createElement(c.Z,{color:p.Z.theme.info},"The power of ",b.AugmentationName.NeuroFluxGovernor," increases with blood donations from players in real life. Learn more ",a.createElement(S.Z,{onClick:()=>{C.e.emit(a.createElement(a.Fragment,null,a.createElement(c.Z,{variant:"h5"},"Bitburner blood donation community program"),a.createElement(c.Z,null,"The blood donation program is a continuous real life event started on 2022-04-01. To participate simply go donate blood, plasma, or platelets to your local organization and take a picture as proof (hide your personal information). Then send the proof to hydroflame on reddit or discord."),a.createElement(c.Z,null,"Currently accumulated ",k.t.Donations," donations.")))}},"here"))):a.createElement(a.Fragment,null)},M=()=>y.J5.entropy>0?a.createElement(h.Z,{sx:{p:1}},a.createElement(c.Z,{variant:"h5",color:p.Z.theme.error},"Entropy Virus - Level ",y.J5.entropy),a.createElement(c.Z,{color:p.Z.theme.error},a.createElement("b",null,"All multipliers decreased by:")," ",(0,w.$j)(100*(1-k.t.EntropyEffect**y.J5.entropy),3),"% (multiplicative)")):a.createElement(a.Fragment,null);function A(e){var t;const[n,v]=(0,a.useState)(!1),k=(0,x.S)(200);return a.createElement(d.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0}},a.createElement(c.Z,{variant:"h4"},"Augmentations"),a.createElement(f.Z,{sx:{mb:1}},a.createElement(h.Z,{sx:{p:1}},a.createElement(c.Z,{variant:"h5",color:"primary",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},"Purchased Augmentations",a.createElement(m.Z,{title:a.createElement(a.Fragment,null,a.createElement(c.Z,null,"Below is a list of all Augmentations you have purchased but not yet installed. Click the button below to install them."),a.createElement(c.Z,null,"WARNING: Installing your Augmentations resets most of your progress, including:"),a.createElement("br",null),a.createElement(c.Z,null,"- Stats/Skill levels and Experience"),a.createElement(c.Z,null,"- Money"),a.createElement(c.Z,null,"- Scripts on every computer but your home computer"),a.createElement(c.Z,null,"- Purchased servers"),a.createElement(c.Z,null,"- Hacknet Nodes"),a.createElement(c.Z,null,"- Faction/Company reputation"),a.createElement(c.Z,null,"- Stocks"),a.createElement("br",null),a.createElement(c.Z,null,"Installing Augmentations lets you start over with the perks and benefits granted by all of the Augmentations you have ever installed. Also, you will keep any scripts and RAM/Core upgrades on your home computer (but you will lose all programs besides NUKE.exe)"))},a.createElement(E.Z,{sx:{ml:1,mb:.5},color:"info"}))),a.createElement(g.c,{open:n,onClose:()=>v(!1),onConfirm:e.installAugmentationsFn,confirmationText:a.createElement(a.Fragment,null,"Installing will reset",a.createElement("br",null),a.createElement("br",null),"- money",a.createElement("br",null),"- skill / experience",a.createElement("br",null),"- every server except home",a.createElement("br",null),"- factions and reputation",a.createElement("br",null),"- current work activity",a.createElement("br",null),a.createElement("br",null),"You will keep:",a.createElement("br",null),a.createElement("br",null),"- All scripts on home",a.createElement("br",null),"- home ram and cores",a.createElement("br",null),a.createElement("br",null),"It is recommended to install several Augmentations at once.")}),a.createElement(f.Z,{sx:{display:"grid",width:"100%",gridTemplateColumns:"1fr 1fr"}},a.createElement(m.Z,{title:a.createElement(c.Z,null,"'I never asked for this'")},a.createElement("span",null,a.createElement(u.Z,{sx:{width:"100%"},disabled:0===y.J5.queuedAugmentations.length,onClick:function(){p.Z.SuppressBuyAugmentationConfirmation?e.installAugmentationsFn():v(!0)}},"Install Augmentations"))),a.createElement(m.Z,{title:a.createElement(c.Z,null,"It's always a good idea to backup/export your save!")},a.createElement(u.Z,{sx:{width:"100%",color:p.Z.theme.successlight},onClick:function(){e.exportGameFn(),k()}},"Backup Save ",(0,l.B0)()?"(+1 favor to all factions)":"")))),y.J5.queuedAugmentations.length>0?a.createElement(f.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 3fr"}},a.createElement(i.r,null),a.createElement(o.f,null)):a.createElement(h.Z,{sx:{p:1}},a.createElement(c.Z,null,"No Augmentations have been purchased yet"))),a.createElement(f.Z,{sx:{my:1,display:"grid",gridTemplateColumns:`repeat(${+!!(((null===(t=y.J5.augmentations.find((e=>e.name===b.AugmentationName.NeuroFluxGovernor)))||void 0===t?void 0:t.level)??0)>0)+ +!!(y.J5.entropy>0)}, 1fr)`,gap:1}},a.createElement(N,null),a.createElement(M,null)),a.createElement(f.Z,null,a.createElement(r.Y,null)),a.createElement(s.V,null))}},8618:(e,t,n)=>{"use strict";n.d(t,{Y:()=>y});var a=n(30120),r=n(28881),o=n(81138),i=n(95309),s=n(56798),l=n(97212),c=n(17575),u=n(67294),m=n(56412),f=n(51087),h=n(49173),d=n(73440),p=n(33244),g=n(88775);function y(){const e=(0,g.S)(),t=h.J5.augmentations.slice().filter((e=>e.name!==p.AugmentationName.NeuroFluxGovernor)),[n,y]=(0,u.useState)(t[0]);return f.Z.OwnedAugmentationsOrder===m.E.Alphabetically&&t.sort(((e,t)=>e.name.localeCompare(t.name))),u.createElement(a.Z,{sx:{width:"100%"}},u.createElement(r.Z,{sx:{p:1}},u.createElement(o.Z,{variant:"h5"},"Installed Augmentations"),u.createElement(a.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},u.createElement(c.Z,{title:"Sorts the Augmentations alphabetically in numeral order"},u.createElement(s.Z,{sx:{width:"100%"},onClick:function(){f.Z.OwnedAugmentationsOrder=m.E.Alphabetically,e()}},"Sort in Order")),u.createElement(c.Z,{title:"Sorts the Augmentations based on when you acquired them (same as default)"},u.createElement(s.Z,{sx:{width:"100%"},onClick:function(){f.Z.OwnedAugmentationsOrder=m.E.AcquirementTime,e()}},"Sort by Time of Acquirement")))),t.length>0?u.createElement(r.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 3fr"}},u.createElement(a.Z,null,u.createElement(l.Z,{sx:{height:400,overflowY:"scroll",borderRight:`1px solid ${f.Z.theme.welllight}`}},t.map(((e,t)=>u.createElement(i.Z,{key:t+1,onClick:()=>y(e),selected:n===e},u.createElement(o.Z,null,e.name)))))),u.createElement(a.Z,{sx:{m:1}},u.createElement(o.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},n.name),u.createElement(o.Z,{sx:{maxHeight:350,overflowY:"scroll",whiteSpace:"pre-wrap"}},(()=>{const e=d.x[n.name],t="string"==typeof e.info?u.createElement("span",null,e.info):e.info;return u.createElement(u.Fragment,null,t,u.createElement("br",null),u.createElement("br",null),e.stats)})()))):u.createElement(r.Z,{sx:{p:1}},u.createElement(o.Z,null,"No Augmentations have been installed yet")))}},57584:(e,t,n)=>{"use strict";n.d(t,{f:()=>b});var a=n(35315),r=n(81138),o=n(10848),i=n(61702),s=n(97212),l=n(28881),c=n(67294),u=n(62850),m=n(97740),f=n(49173),h=n(51087),d=n(22115),p=n(73440);function g(e){return 1===e.mult||0===f.J5.sourceFileLvl(5)?c.createElement(r.Z,{color:e.color},(0,d.T3)(e.base)):c.createElement(r.Z,{color:e.color},c.createElement("span",{style:{opacity:.5}},(0,d.T3)(e.base))," ",(0,d.T3)(e.base*e.mult))}function y(e){const t=e.rows.map((e=>{const{mult:t,current:n,augmented:s,bnMult:l=1,color:u=h.Z.theme.primary}=e;if(!isNaN(s))return c.createElement(o.ZP,{key:t,disableGutters:!0,sx:{py:0}},c.createElement(i.Z,{sx:{my:.1},primary:c.createElement(r.Z,{color:u},c.createElement("b",null,t)),secondary:c.createElement("span",{style:{display:"flex",alignItems:"center",flexWrap:"wrap"}},c.createElement(g,{base:n,mult:l,color:u}),c.createElement(a.Z,{fontSize:"small",color:"success",sx:{mb:.5,mx:1}}),c.createElement(g,{base:s,mult:l,color:h.Z.theme.success})),disableTypography:!0}))})).filter((e=>void 0!==e));return t.length>0?c.createElement(s.Z,{disablePadding:!0},t):c.createElement(c.Fragment,null)}function b(){const e=function(){let e=(0,u.A7)();for(const t of f.J5.queuedAugmentations){const n=p.x[t.name];e=(0,u.VA)(e,n.mults)}return e}(),t=[...[{mult:"Hacking Chance",current:f.J5.mults.hacking_chance,augmented:f.J5.mults.hacking_chance*e.hacking_chance},{mult:"Hacking Speed",current:f.J5.mults.hacking_speed,augmented:f.J5.mults.hacking_speed*e.hacking_speed},{mult:"Hacking Money",current:f.J5.mults.hacking_money,augmented:f.J5.mults.hacking_money*e.hacking_money,bnMult:m.dQ.ScriptHackMoney},{mult:"Hacking Growth",current:f.J5.mults.hacking_grow,augmented:f.J5.mults.hacking_grow*e.hacking_grow},{mult:"Hacking Level",current:f.J5.mults.hacking,augmented:f.J5.mults.hacking*e.hacking,bnMult:m.dQ.HackingLevelMultiplier},{mult:"Hacking Experience",current:f.J5.mults.hacking_exp,augmented:f.J5.mults.hacking_exp*e.hacking_exp,bnMult:m.dQ.HackExpGain}].map((e=>Object.defineProperty(e,"color",{value:h.Z.theme.hack}))),...[{mult:"Strength Level",current:f.J5.mults.strength,augmented:f.J5.mults.strength*e.strength,bnMult:m.dQ.StrengthLevelMultiplier},{mult:"Strength Experience",current:f.J5.mults.strength_exp,augmented:f.J5.mults.strength_exp*e.strength_exp},{mult:"Defense Level",current:f.J5.mults.defense,augmented:f.J5.mults.defense*e.defense,bnMult:m.dQ.DefenseLevelMultiplier},{mult:"Defense Experience",current:f.J5.mults.defense_exp,augmented:f.J5.mults.defense_exp*e.defense_exp},{mult:"Dexterity Level",current:f.J5.mults.dexterity,augmented:f.J5.mults.dexterity*e.dexterity,bnMult:m.dQ.DexterityLevelMultiplier},{mult:"Dexterity Experience",current:f.J5.mults.dexterity_exp,augmented:f.J5.mults.dexterity_exp*e.dexterity_exp},{mult:"Agility Level",current:f.J5.mults.agility,augmented:f.J5.mults.agility*e.agility,bnMult:m.dQ.AgilityLevelMultiplier},{mult:"Agility Experience",current:f.J5.mults.agility_exp,augmented:f.J5.mults.agility_exp*e.agility_exp}].map((e=>Object.defineProperty(e,"color",{value:h.Z.theme.combat}))),{mult:"Charisma Level",current:f.J5.mults.charisma,augmented:f.J5.mults.charisma*e.charisma,bnMult:m.dQ.CharismaLevelMultiplier,color:h.Z.theme.cha},{mult:"Charisma Experience",current:f.J5.mults.charisma_exp,augmented:f.J5.mults.charisma_exp*e.charisma_exp,color:h.Z.theme.cha}],n=[{mult:"Hacknet Node Production",current:f.J5.mults.hacknet_node_money,augmented:f.J5.mults.hacknet_node_money*e.hacknet_node_money,bnMult:m.dQ.HacknetNodeMoney},{mult:"Hacknet Node Purchase Cost",current:f.J5.mults.hacknet_node_purchase_cost,augmented:f.J5.mults.hacknet_node_purchase_cost*e.hacknet_node_purchase_cost},{mult:"Hacknet Node RAM Upgrade Cost",current:f.J5.mults.hacknet_node_ram_cost,augmented:f.J5.mults.hacknet_node_ram_cost*e.hacknet_node_ram_cost},{mult:"Hacknet Node Core Purchase Cost",current:f.J5.mults.hacknet_node_core_cost,augmented:f.J5.mults.hacknet_node_core_cost*e.hacknet_node_core_cost},{mult:"Hacknet Node Level Upgrade Cost",current:f.J5.mults.hacknet_node_level_cost,augmented:f.J5.mults.hacknet_node_level_cost*e.hacknet_node_level_cost},{mult:"Company Reputation Gain",current:f.J5.mults.company_rep,augmented:f.J5.mults.company_rep*e.company_rep,color:h.Z.theme.combat},{mult:"Faction Reputation Gain",current:f.J5.mults.faction_rep,augmented:f.J5.mults.faction_rep*e.faction_rep,bnMult:m.dQ.FactionWorkRepGain,color:h.Z.theme.combat},{mult:"Salary",current:f.J5.mults.work_money,augmented:f.J5.mults.work_money*e.work_money,bnMult:m.dQ.CompanyWorkMoney,color:h.Z.theme.money},{mult:"Crime Success Chance",current:f.J5.mults.crime_success,augmented:f.J5.mults.crime_success*e.crime_success,color:h.Z.theme.combat},{mult:"Crime Money",current:f.J5.mults.crime_money,augmented:f.J5.mults.crime_money*e.crime_money,bnMult:m.dQ.CrimeMoney,color:h.Z.theme.money}];return f.J5.canAccessBladeburner()&&m.dQ.BladeburnerRank>0&&n.push({mult:"Bladeburner Success Chance",current:f.J5.mults.bladeburner_success_chance,augmented:f.J5.mults.bladeburner_success_chance*e.bladeburner_success_chance},{mult:"Bladeburner Max Stamina",current:f.J5.mults.bladeburner_max_stamina,augmented:f.J5.mults.bladeburner_max_stamina*e.bladeburner_max_stamina},{mult:"Bladeburner Stamina Gain",current:f.J5.mults.bladeburner_stamina_gain,augmented:f.J5.mults.bladeburner_stamina_gain*e.bladeburner_stamina_gain},{mult:"Bladeburner Field Analysis",current:f.J5.mults.bladeburner_analysis,augmented:f.J5.mults.bladeburner_analysis*e.bladeburner_analysis}),c.createElement(l.Z,{sx:{p:1,maxHeight:400,overflowY:"scroll",display:"flex",flexDirection:"column",flexWrap:"wrap",gap:1}},c.createElement(y,{rows:t}),c.createElement(y,{rows:n}))}},75012:(e,t,n)=>{"use strict";n.d(t,{b:()=>N});var a=n(70983),r=n(7542),o=n(11886),i=n(90912),s=n(68426),l=n(17575),c=n(81138),u=n(78016),m=n(28881),f=n(30120),h=n(56798),d=n(67294),p=n(49173),g=n(51087),y=n(22115),b=n(33244),v=n(73440),k=n(25398),w=n(27889),E=n(88775);const S=e=>{const t=e.aug.prereqs.filter((e=>p.J5.hasAugmentation(e))),n=e.aug.prereqs.length>0&&t.length===e.aug.prereqs.length;return d.createElement(l.Z,{title:d.createElement(d.Fragment,null,d.createElement(c.Z,{sx:{color:g.Z.theme.money}},"This Augmentation has the following pre-requisite(s):"),e.aug.prereqs.map((e=>d.createElement(x,{fulfilled:p.J5.hasAugmentation(e),value:e,color:g.Z.theme.money,key:e}))))},d.createElement(c.Z,{sx:{ml:1,fontSize:"0.9rem",display:"flex",alignItems:"center",color:n?g.Z.theme.successlight:g.Z.theme.error,gridArea:"prereqs"}},n?d.createElement(d.Fragment,null,d.createElement(a.Z,{fontSize:"small",sx:{mr:1}}),"Pre-requisites Owned"):d.createElement(d.Fragment,null,d.createElement(r.Z,{fontSize:"small",sx:{mr:1}}),"Missing ",e.aug.prereqs.length-t.length," pre-requisite(s)")))},C=e=>d.createElement(l.Z,{title:d.createElement(d.Fragment,null,d.createElement(c.Z,{sx:{color:g.Z.theme.money}},"This Augmentation can only be acquired from the following source(s):"),d.createElement("ul",null,d.createElement(c.Z,{sx:{color:g.Z.theme.money}},d.createElement("li",null,d.createElement("b",null,e.aug.factions[0])," faction"),p.J5.isAwareOfGang()&&!e.aug.isSpecial&&d.createElement("li",null,"Certain ",d.createElement("b",null,"gangs")),p.J5.canAccessGrafting()&&(!e.aug.isSpecial||e.aug.factions.includes(b.FactionName.Bladeburners))&&e.aug.name!==b.AugmentationName.TheRedPill&&d.createElement("li",null,d.createElement("b",null,"Grafting")))))},d.createElement(o.Z,{fontSize:"small",sx:{ml:1,color:g.Z.theme.money,transform:"rotate(180deg)",gridArea:"exclusive"}})),x=e=>d.createElement(c.Z,{sx:{display:"flex",alignItems:"center",color:e.fulfilled?e.color:g.Z.theme.error}},e.fulfilled?d.createElement(i.Z,{sx:{mr:1}}):d.createElement(s.Z,{sx:{mr:1}}),e.value),N=e=>d.createElement(u.Z,{maxWidth:"lg",disableGutters:!0,sx:{mx:0,display:"grid",gridTemplateColumns:"repeat(1, 1fr)",gap:.75}},e.augNames.map((t=>d.createElement(M,{key:t,parent:e,augName:t,owned:!1}))),e.ownedAugNames.map((t=>d.createElement(M,{key:t,parent:e,augName:t,owned:!0}))));function M(e){const[t,n]=(0,d.useState)(!1),a=(0,E.S)();(0,d.useEffect)((()=>{if(e.owned)return;const t=setInterval(a,600);return()=>clearInterval(t)}),[e.owned,a]);const r=v.x[e.augName];if(!r)return d.createElement(d.Fragment,null);const o=r.getLevel(),i=(0,w.hV)(r),s=e.parent.sleeveAugs?r.baseCost:i.moneyCost,u=i.repCost,N="string"==typeof r.info?d.createElement("span",null,r.info):r.info,M=d.createElement(d.Fragment,null,N,d.createElement("br",null),d.createElement("br",null),r.stats);return d.createElement(m.Z,{sx:{p:.5,display:"grid",gridTemplateColumns:"minmax(0, 4fr) 1.4fr",gap:1,opacity:e.owned?.75:1,minWidth:"1100px"}},d.createElement(d.Fragment,null,d.createElement(f.Z,{sx:{display:"flex",alignItems:"center"}},d.createElement(h.Z,{onClick:()=>e.parent.purchaseAugmentation(r,(e=>{n(e)})),disabled:!e.parent.canPurchase(r)||e.owned,sx:{width:"48px",height:"36px",float:"left",clear:"none",mr:1}},e.owned?"Owned":"Buy"),d.createElement(f.Z,{sx:{maxWidth:e.owned?"100%":"85%"}},d.createElement(f.Z,{sx:{display:"grid",alignItems:"center",gridTemplateAreas:'"title exclusive prereqs"'}},d.createElement(l.Z,{title:d.createElement(d.Fragment,null,d.createElement(c.Z,{variant:"h5"},r.name,r.name===b.AugmentationName.NeuroFluxGovernor&&` - Level ${o+1}`),d.createElement(c.Z,{whiteSpace:"pre-wrap"},M))},d.createElement(c.Z,{sx:{gridArea:"title",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",color:e.owned||!e.parent.canPurchase(r)?g.Z.theme.disabled:g.Z.theme.primary}},r.name,r.name===b.AugmentationName.NeuroFluxGovernor&&` - Level ${o+1}`)),1===r.factions.length&&!e.parent.sleeveAugs&&d.createElement(C,{aug:r}),r.prereqs.length>0&&!e.parent.sleeveAugs&&d.createElement(S,{aug:r})))),e.owned||d.createElement(f.Z,{sx:{display:"grid",alignItems:"center",gridTemplateColumns:"1fr 1fr"}},d.createElement(x,{fulfilled:0===s||p.J5.money>s,value:(0,y.lb)(s),color:g.Z.theme.money}),void 0!==e.parent.rep&&d.createElement(x,{fulfilled:e.parent.rep>=u,value:`${(0,y.$n)(u)} rep`,color:g.Z.theme.rep})),g.Z.SuppressBuyAugmentationConfirmation||d.createElement(k.t,{open:t,onClose:()=>{n(!1),e.parent.rerender()},faction:e.parent.faction,aug:r})))}},25398:(e,t,n)=>{"use strict";n.d(t,{t:()=>m});var a=n(67294),r=n(94542),o=n(27889),i=n(72360),s=n(48672),l=n(49173),c=n(81138),u=n(56798);function m(e){let{aug:t,faction:n,onClose:m,open:f}=e;return!t||!n||!(0,o.nD)(t)&&l.J5.hasAugmentation(t.name)?a.createElement(a.Fragment,null):a.createElement(s.u,{open:f,onClose:m},a.createElement(c.Z,{variant:"h4"},t.name),a.createElement(c.Z,{whiteSpace:"pre-wrap"},t.info,a.createElement("br",null),a.createElement("br",null),t.stats,a.createElement("br",null),a.createElement("br",null),"Would you like to purchase the ",t.name," Augmentation for ",a.createElement(i.W,{money:(0,o.hV)(t).moneyCost}),"?",a.createElement("br",null),a.createElement("br",null)),a.createElement(u.Z,{autoFocus:!0,onClick:()=>{(0,r.Gl)(t,n),m()}},"Purchase"))}},37061:(e,t,n)=>{"use strict";n.d(t,{r:()=>f});var a=n(17575),r=n(81138),o=n(61702),i=n(28881),s=n(97212),l=n(67294),c=n(49173),u=n(73440),m=n(33244);function f(){const e=[];let t=-1;for(let e=c.J5.queuedAugmentations.length-1;e>=0;e--)if(c.J5.queuedAugmentations[e].name===m.AugmentationName.NeuroFluxGovernor){t=e;break}for(let n=0;n{const e="string"==typeof f.info?l.createElement("span",null,f.info):f.info;return l.createElement(l.Fragment,null,e,l.createElement("br",null),l.createElement("br",null),f.stats)})()),enterNextDelay:500,key:s},l.createElement(o.Z,{sx:{px:2,py:1},primary:s})))}return l.createElement(i.Z,{sx:{py:1,maxHeight:400,overflowY:"scroll"}},l.createElement(s.Z,{sx:{height:400,overflowY:"scroll"},disablePadding:!0},e))}},18994:(e,t,n)=>{"use strict";n.d(t,{V:()=>y});var a=n(28881),r=n(95309),o=n(61702),i=n(30120),s=n(97212),l=n(81138),c=n(67294),u=n(52107),m=n(49173),f=n(56412),h=n(51087),d=n(16264);const p=e=>{if(-1===e)return{info:c.createElement(c.Fragment,null,"This Source-File can only be acquired with obscure knowledge of the game, javascript, and the web ecosystem.",c.createElement("br",null),c.createElement("br",null),"It increases all of the player's multipliers by 0.1%",c.createElement("br",null),c.createElement("br",null),"You have found the following exploits:",c.createElement("br",null),c.createElement("br",null),m.J5.exploits.map((e=>c.createElement(c.Fragment,{key:e},"* ",(0,u.NK)(e),c.createElement("br",null))))),lvl:m.J5.exploits.length,n:-1,name:"Source-File -1: Exploits in the BitNodes"};const t="SourceFile"+e,n=d.J[t];return null==n?(console.error(`Invalid source file number: ${e}`),null):n},g=e=>{let t;switch(e.n){case 12:t="∞";break;case-1:t=Object.keys(u.VX).length;break;default:t="3"}return t};function y(){var e;const t=new Map(m.J5.sourceFiles),n=m.J5.exploits;n.length>0&&t.set(-1,n.length);const u=[...t];h.Z.OwnedAugmentationsOrder===f.E.Alphabetically&&u.sort(((e,t)=>{let[n,a]=e,[r,o]=t;return n-r}));const[d,y]=(0,c.useState)((()=>{if(0===u.length)return null;const[e,t]=u[0];return{n:e,lvl:t}}));return d?c.createElement(i.Z,{sx:{width:"100%",mt:1}},c.createElement(a.Z,{sx:{p:1}},c.createElement(l.Z,{variant:"h5"},"Source Files")),c.createElement(a.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 3fr"}},c.createElement(i.Z,null,c.createElement(s.Z,{sx:{height:400,overflowY:"scroll",borderRight:`1px solid ${h.Z.theme.welllight}`},disablePadding:!0},u.map(((e,t)=>{let[n,a]=e;const i=p(n);if(!i)return;const s=g(i);return c.createElement(r.Z,{key:t+1,onClick:()=>y({n,lvl:a}),selected:d.n===n,sx:{py:0}},c.createElement(o.Z,{disableTypography:!0,primary:c.createElement(l.Z,null,i.name),secondary:c.createElement(l.Z,null,"Level ",a," / ",s)}))})))),c.createElement(i.Z,{sx:{m:1}},c.createElement(l.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},null===(e=p(d.n))||void 0===e?void 0:e.name),c.createElement(l.Z,{sx:{maxHeight:350,overflowY:"scroll"}},(()=>{const e=p(d.n);if(!e)return;const t=g(e);return c.createElement(c.Fragment,null,"Level ",d.lvl," / ",t,c.createElement("br",null),c.createElement("br",null),e.info)})())))):c.createElement(c.Fragment,null)}},99745:(e,t,n)=>{"use strict";n.d(t,{A7:()=>u,JN:()=>c,cm:()=>m,j2:()=>f,tK:()=>l});var a=n(67294),r=n(49173),o=n(33244),i=n(97740);class s{constructor(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.createElement(a.Fragment,null);this.number=e,this.difficulty=t,this.name=n,this.desc=r,this.info=o}}const l={};function c(){l.BitNode1=new s(1,0,"Source Genesis","The original BitNode",a.createElement(a.Fragment,null,"The first BitNode created by the Enders to imprison the minds of humans. It became the prototype and testing-grounds for all of the BitNodes that followed.",a.createElement("br",null),a.createElement("br",null),"This is the first BitNode that you play through. It has no special modifications or mechanics.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 1, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets the player start with 32GB of RAM on his/her home computer when entering a new BitNode, and also increases all of the player's multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 16%",a.createElement("br",null),"Level 2: 24%",a.createElement("br",null),"Level 3: 28%")),l.BitNode2=new s(2,0,"Rise of the Underworld","From the shadows, they rose",a.createElement(a.Fragment,null,"From the shadows, they rose.",a.createElement("br",null),a.createElement("br",null),"Organized crime groups quickly filled the void of power left behind from the collapse of Western government in the 2050s. As society and civilization broke down, people quickly succumbed to the innate human impulse of evil and savagery. The organized crime factions quickly rose to the top of the modern world.",a.createElement("br",null),a.createElement("br",null),"Certain Factions (",o.FactionName.SlumSnakes,", ",o.FactionName.Tetrads,", ",o.FactionName.TheSyndicate,","," ",o.FactionName.TheDarkArmy,", ",o.FactionName.SpeakersForTheDead,", ",o.FactionName.NiteSec,", ",o.FactionName.TheBlackHand,") give the player the ability to form and manage their own gang, which can earn the player money and reputation with the corresponding Faction. Gangs offer more Augmentations than Factions, and in BitNode-2 offer a way to destroy the BitNode.",a.createElement("br",null),a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 2, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File allows you to form gangs in other BitNodes once your karma decreases to a certain value. It also increases your crime success rate, crime money, and charisma multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 24%",a.createElement("br",null),"Level 2: 36%",a.createElement("br",null),"Level 3: 42%")),l.BitNode3=new s(3,0,"Corporatocracy","The Price of Civilization",a.createElement(a.Fragment,null,"Our greatest illusion is that a healthy society can revolve around a single-minded pursuit of wealth.",a.createElement("br",null),a.createElement("br",null),"Sometime in the early 21st century economic and political globalization turned the world into a corporatocracy, and it never looked back. Now, the privileged elite will happily bankrupt their own countrymen, decimate their own community, and evict their neighbors from houses in their desperate bid to increase their wealth.",a.createElement("br",null),a.createElement("br",null),"In this BitNode you can create and manage your own corporation. Running a successful corporation has the potential of generating massive profits.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 3, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets you create corporations on other BitNodes (although some BitNodes will disable this mechanic) and level 3 permanently unlocks the full API. This Source-File also increases your charisma and company salary multipliers by:",a.createElement("br",null),"Level 1: 8%",a.createElement("br",null),"Level 2: 12%",a.createElement("br",null),"Level 3: 14%")),l.BitNode4=new s(4,1,"The Singularity","The Man and the Machine",a.createElement(a.Fragment,null,"The Singularity has arrived. The human race is gone, replaced by artificially superintelligent beings that are more machine than man. ",a.createElement("br",null),a.createElement("br",null),a.createElement("br",null),"In this BitNode you will gain access to a new set of Netscript Functions known as Singularity Functions. These functions allow you to control most aspects of the game through scripts, including working for factions/companies, purchasing/installing Augmentations, and creating programs.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 4, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets you access and use the Singularity Functions in other BitNodes. Each level of this Source-File reduces the RAM cost of singularity functions:",a.createElement("br",null),"Level 1: 16x",a.createElement("br",null),"Level 2: 4x",a.createElement("br",null),"Level 3: 1x")),l.BitNode5=new s(5,1,"Artificial Intelligence","Posthuman",a.createElement(a.Fragment,null,"They said it couldn't be done. They said the human brain, along with its consciousness and intelligence, couldn't be replicated. They said the complexity of the brain results from unpredictable, nonlinear interactions that couldn't be modeled by 1's and 0's. They were wrong.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 5, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File grants you a special new stat called Intelligence. Intelligence is unique because it is permanent and persistent (it never gets reset back to 1). However gaining Intelligence experience is much slower than other stats. Higher Intelligence levels will boost your production for many actions in the game. ",a.createElement("br",null),a.createElement("br",null),"In addition, this Source-File will unlock the getBitNodeMultipliers() Netscript function and let you start with Formulas.exe, and will also raise all of your hacking-related multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 8%",a.createElement("br",null),"Level 2: 12%",a.createElement("br",null),"Level 3: 14%")),l.BitNode6=new s(6,1,o.FactionName.Bladeburners,"Like Tears in Rain",a.createElement(a.Fragment,null,"In the middle of the 21st century, ",o.FactionName.OmniTekIncorporated," began designing and manufacturing advanced synthetic androids, or Synthoids for short. They achieved a major technological breakthrough in the sixth generation of their Synthoid design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent than the humans that had created them.",a.createElement("br",null),a.createElement("br",null),"In this BitNode you will be able to access the ",o.FactionName.Bladeburners," Division at the NSA, which provides a new mechanic for progression.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 6, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File allows you to access the NSA's ",o.FactionName.Bladeburners," Division in other BitNodes. In addition, this Source-File will raise both the level and experience gain rate of all your combat stats by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 8%",a.createElement("br",null),"Level 2: 12%",a.createElement("br",null),"Level 3: 14%")),l.BitNode7=new s(7,2,`${o.FactionName.Bladeburners} 2079`,"More human than humans",a.createElement(a.Fragment,null,"In the middle of the 21st century, you were doing cutting-edge work at ",o.FactionName.OmniTekIncorporated," as part of the AI design team for advanced synthetic androids, or Synthoids for short. You helped achieve a major technological breakthrough in the sixth generation of the company's Synthoid design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent than the humans that had created them.",a.createElement("br",null),a.createElement("br",null),"In this BitNode you will be able to access the ",o.FactionName.Bladeburners," API, which allows you to access"," ",o.FactionName.Bladeburners," functionality through Netscript.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 7, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File allows you to access the ",o.FactionName.Bladeburners," Netscript API in other BitNodes. In addition, this Source-File will increase all of your ",o.FactionName.Bladeburners," ","multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 8%",a.createElement("br",null),"Level 2: 12%",a.createElement("br",null),"Level 3: 14%")),l.BitNode8=new s(8,2,"Ghost of Wall Street","Money never sleeps",a.createElement(a.Fragment,null,"You are trying to make a name for yourself as an up-and-coming hedge fund manager on Wall Street.",a.createElement("br",null),a.createElement("br",null),"In this BitNode:",a.createElement("br",null),a.createElement("br",null),"You start with $250 million",a.createElement("br",null),"You start with a WSE membership and access to the TIX API",a.createElement("br",null),"You are able to short stocks and place different types of orders (limit/stop)",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 8, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File grants the following benefits:",a.createElement("br",null),a.createElement("br",null),"Level 1: Permanent access to WSE and TIX API",a.createElement("br",null),"Level 2: Ability to short stocks in other BitNodes",a.createElement("br",null),"Level 3: Ability to use limit/stop orders in other BitNodes",a.createElement("br",null),a.createElement("br",null),"This Source-File also increases your hacking growth multipliers by:",a.createElement("br",null),"Level 1: 12%",a.createElement("br",null),"Level 2: 18%",a.createElement("br",null),"Level 3: 21%")),l.BitNode9=new s(9,2,"Hacktocracy","Hacknet Unleashed",a.createElement(a.Fragment,null,"When ",o.FactionName.FulcrumSecretTechnologies," released their open-source Linux distro Chapeau, it quickly became the OS of choice for the underground hacking community. Chapeau became especially notorious for powering the Hacknet, a global, decentralized network used for nefarious purposes. ",o.FactionName.FulcrumSecretTechnologies," ","quickly abandoned the project and dissociated themselves from it.",a.createElement("br",null),a.createElement("br",null),"This BitNode unlocks the Hacknet Server, an upgraded version of the Hacknet Node. Hacknet Servers generate hashes, which can be spent on a variety of different upgrades.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 9, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File grants the following benefits:",a.createElement("br",null),a.createElement("br",null),"Level 1: Permanently unlocks the Hacknet Server in other BitNodes",a.createElement("br",null),"Level 2: You start with 128GB of RAM on your home computer when entering a new BitNode",a.createElement("br",null),"Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode",a.createElement("br",null),a.createElement("br",null),"(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT when installing Augmentations)",a.createElement("br",null),a.createElement("br",null),"This Source-File also increases hacknet production and reduces hacknet costs by:",a.createElement("br",null),"Level 1: 12%",a.createElement("br",null),"Level 2: 18%",a.createElement("br",null),"Level 3: 21%")),l.BitNode10=new s(10,2,"Digital Carbon","Your body is not who you are",a.createElement(a.Fragment,null,"In 2084, VitaLife unveiled to the world the Persona Core, a technology that allowed people to digitize their consciousness. Their consciousness could then be transferred into Synthoids or other bodies by transmitting the digitized data. Human bodies became nothing more than 'sleeves' for the human consciousness. Mankind had finally achieved immortality - at least for those that could afford it.",a.createElement("br",null),a.createElement("br",null),"This BitNode unlocks Sleeve and grafting technologies. Sleeve technology allows you to:",a.createElement("br",null),a.createElement("br",null),"1. Grafting: Visit VitaLife in New Tokyo to be able to obtain Augmentations without needing to install",a.createElement("br",null),"2. Duplicate Sleeves: Duplicate your consciousness into Synthoids, allowing you to perform different tasks synchronously.",a.createElement("br",null),a.createElement("br",null),"Grafting technology allows you to graft Augmentations, which is an alternative way of installing Augmentations.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 10, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File unlocks Sleeve technology, and the Grafting API in other BitNodes. Each level of this Source-File also grants you a Duplicate Sleeve")),l.BitNode11=new s(11,1,"The Big Crash","Okay. Sell it all.",a.createElement(a.Fragment,null,"The 2050s was defined by the massive amounts of violent civil unrest and anarchic rebellion that rose all around the world. It was this period of disorder that eventually lead to the governmental reformation of many global superpowers, most notably the USA and China. But just as the world was slowly beginning to recover from these dark times, financial catastrophe hit.",a.createElement("br",null),a.createElement("br",null),"In many countries, the high cost of trying to deal with the civil disorder bankrupted the governments. In all of this chaos and confusion, hackers were able to steal billions of dollars from the world's largest electronic banks, prompting an international banking crisis as governments were unable to bail out insolvent banks. Now, the world is slowly crumbling in the middle of the biggest economic crisis of all time.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 11, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File makes it so that company favor increases BOTH the player's salary and reputation gain rate at that company by 1% per favor (rather than just the reputation gain). This Source-File also increases the player's company salary and reputation gain multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 32%",a.createElement("br",null),"Level 2: 48%",a.createElement("br",null),"Level 3: 56%",a.createElement("br",null),a.createElement("br",null),"It also reduces the price increase for every aug bought by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 4%",a.createElement("br",null),"Level 2: 6%",a.createElement("br",null),"Level 3: 7%")),l.BitNode12=new s(12,0,"The Recursion","Repeat.",a.createElement(a.Fragment,null,"To iterate is human, to recurse divine.",a.createElement("br",null),a.createElement("br",null),"Every time this BitNode is destroyed, it becomes slightly harder. Destroying this BitNode will give you Source-File 12, or if you already have this Source-File it will upgrade its level. There is no maximum level for Source-File 12. Each level of Source-File 12 lets you start any BitNodes with NeuroFlux Governor equal to the level of this source file.")),l.BitNode13=new s(13,2,"They're lunatics","1 step back, 2 steps forward",a.createElement(a.Fragment,null,"With the invention of Augmentations in the 2040s a religious group known as the"," ",o.FactionName.ChurchOfTheMachineGod," has rallied far more support than anyone would have hoped.",a.createElement("br",null),a.createElement("br",null),'Their leader, Allison "Mother" Stanek is said to have created her own Augmentation whose power goes beyond any other. Find her in ',o.CityName.Chongqing," and gain her trust.",a.createElement("br",null),a.createElement("br",null),"Destroying this BitNode will give you Source-File 13, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets the ",o.FactionName.ChurchOfTheMachineGod," appear in other BitNodes.",a.createElement("br",null),a.createElement("br",null),"Each level of this Source-File increases the size of Stanek's Gift."))}const u=new i.Wu;function m(e,t){switch(e){case 1:return new i.Wu;case 2:return new i.Wu({HackingLevelMultiplier:.8,ServerGrowthRate:.8,ServerMaxMoney:.08,ServerStartingMoney:.4,PurchasedServerSoftcap:1.3,CrimeMoney:3,FactionPassiveRepGain:0,FactionWorkRepGain:.5,CorporationSoftcap:.9,CorporationDivisions:.9,InfiltrationMoney:3,StaneksGiftPowerMultiplier:2,StaneksGiftExtraSize:-6,WorldDaemonDifficulty:5});case 3:return new i.Wu({HackingLevelMultiplier:.8,ServerGrowthRate:.2,ServerMaxMoney:.04,ServerStartingMoney:.2,HomeComputerRamCost:1.5,PurchasedServerCost:2,PurchasedServerSoftcap:1.3,CompanyWorkMoney:.25,CrimeMoney:.25,HacknetNodeMoney:.25,ScriptHackMoney:.2,RepToDonateToFaction:.5,AugmentationMoneyCost:3,AugmentationRepCost:3,GangSoftcap:.9,GangUniqueAugs:.5,StaneksGiftPowerMultiplier:.75,StaneksGiftExtraSize:-2,WorldDaemonDifficulty:2});case 4:return new i.Wu({ServerMaxMoney:.1125,ServerStartingMoney:.75,PurchasedServerSoftcap:1.2,CompanyWorkMoney:.1,CrimeMoney:.2,HacknetNodeMoney:.05,ScriptHackMoney:.2,ClassGymExpGain:.5,CompanyWorkExpGain:.5,CrimeExpGain:.5,FactionWorkExpGain:.5,HackExpGain:.4,FactionWorkRepGain:.75,GangUniqueAugs:.5,StaneksGiftPowerMultiplier:1.5,StaneksGiftExtraSize:0,WorldDaemonDifficulty:3});case 5:return new i.Wu({ServerStartingSecurity:2,ServerStartingMoney:.5,PurchasedServerSoftcap:1.2,CrimeMoney:.5,HacknetNodeMoney:.2,ScriptHackMoney:.15,HackExpGain:.5,AugmentationMoneyCost:2,InfiltrationMoney:1.5,InfiltrationRep:1.5,CorporationValuation:.75,CorporationDivisions:.75,GangUniqueAugs:.5,StaneksGiftPowerMultiplier:1.3,StaneksGiftExtraSize:0,WorldDaemonDifficulty:1.5});case 6:return new i.Wu({HackingLevelMultiplier:.35,ServerMaxMoney:.2,ServerStartingMoney:.5,ServerStartingSecurity:1.5,PurchasedServerSoftcap:2,CompanyWorkMoney:.5,CrimeMoney:.75,HacknetNodeMoney:.2,ScriptHackMoney:.75,HackExpGain:.25,InfiltrationMoney:.75,CorporationValuation:.2,CorporationSoftcap:.9,CorporationDivisions:.8,GangSoftcap:.7,GangUniqueAugs:.2,DaedalusAugsRequirement:35,StaneksGiftPowerMultiplier:.5,StaneksGiftExtraSize:2,WorldDaemonDifficulty:2});case 7:return new i.Wu({HackingLevelMultiplier:.35,ServerMaxMoney:.2,ServerStartingMoney:.5,ServerStartingSecurity:1.5,PurchasedServerSoftcap:2,CompanyWorkMoney:.5,CrimeMoney:.75,HacknetNodeMoney:.2,ScriptHackMoney:.5,HackExpGain:.25,AugmentationMoneyCost:3,InfiltrationMoney:.75,FourSigmaMarketDataCost:2,FourSigmaMarketDataApiCost:2,CorporationValuation:.2,CorporationSoftcap:.9,CorporationDivisions:.8,BladeburnerRank:.6,BladeburnerSkillCost:2,GangSoftcap:.7,GangUniqueAugs:.2,DaedalusAugsRequirement:35,StaneksGiftPowerMultiplier:.9,StaneksGiftExtraSize:-1,WorldDaemonDifficulty:2});case 8:return new i.Wu({PurchasedServerSoftcap:4,CompanyWorkMoney:0,CrimeMoney:0,HacknetNodeMoney:0,ManualHackMoney:0,ScriptHackMoney:.3,ScriptHackMoneyGain:0,CodingContractMoney:0,RepToDonateToFaction:0,InfiltrationMoney:0,CorporationValuation:0,CorporationSoftcap:0,CorporationDivisions:0,BladeburnerRank:0,GangSoftcap:0,GangUniqueAugs:0,StaneksGiftExtraSize:-99});case 9:return new i.Wu({HackingLevelMultiplier:.5,StrengthLevelMultiplier:.45,DefenseLevelMultiplier:.45,DexterityLevelMultiplier:.45,AgilityLevelMultiplier:.45,CharismaLevelMultiplier:.45,ServerMaxMoney:.01,ServerStartingMoney:.1,ServerStartingSecurity:2.5,HomeComputerRamCost:5,PurchasedServerLimit:0,CrimeMoney:.5,ScriptHackMoney:.1,HackExpGain:.05,FourSigmaMarketDataCost:5,FourSigmaMarketDataApiCost:4,CorporationValuation:.5,CorporationSoftcap:.75,CorporationDivisions:.8,BladeburnerRank:.9,BladeburnerSkillCost:1.2,GangSoftcap:.8,GangUniqueAugs:.25,StaneksGiftPowerMultiplier:.5,StaneksGiftExtraSize:2,WorldDaemonDifficulty:2});case 10:return new i.Wu({HackingLevelMultiplier:.35,StrengthLevelMultiplier:.4,DefenseLevelMultiplier:.4,DexterityLevelMultiplier:.4,AgilityLevelMultiplier:.4,CharismaLevelMultiplier:.4,HomeComputerRamCost:1.5,PurchasedServerCost:5,PurchasedServerSoftcap:1.1,PurchasedServerLimit:.6,PurchasedServerMaxRam:.5,CompanyWorkMoney:.5,CrimeMoney:.5,HacknetNodeMoney:.5,ManualHackMoney:.5,ScriptHackMoney:.5,CodingContractMoney:.5,AugmentationMoneyCost:5,AugmentationRepCost:2,InfiltrationMoney:.5,CorporationValuation:.5,CorporationSoftcap:.9,CorporationDivisions:.9,BladeburnerRank:.8,GangSoftcap:.9,GangUniqueAugs:.25,StaneksGiftPowerMultiplier:.75,StaneksGiftExtraSize:-3,WorldDaemonDifficulty:2});case 11:return new i.Wu({HackingLevelMultiplier:.6,ServerGrowthRate:.2,ServerMaxMoney:.01,ServerStartingMoney:.1,ServerWeakenRate:2,PurchasedServerSoftcap:2,CompanyWorkMoney:.5,CrimeMoney:3,HacknetNodeMoney:.1,CodingContractMoney:.25,HackExpGain:.5,AugmentationMoneyCost:2,InfiltrationMoney:2.5,InfiltrationRep:2.5,FourSigmaMarketDataCost:4,FourSigmaMarketDataApiCost:4,CorporationValuation:.1,CorporationSoftcap:.9,CorporationDivisions:.9,GangUniqueAugs:.75,WorldDaemonDifficulty:1.5});case 12:{const e=Math.pow(1.02,t),n=1/e;return new i.Wu({DaedalusAugsRequirement:Math.floor(Math.min(u.DaedalusAugsRequirement+e,40)),HackingLevelMultiplier:n,StrengthLevelMultiplier:n,DefenseLevelMultiplier:n,DexterityLevelMultiplier:n,AgilityLevelMultiplier:n,CharismaLevelMultiplier:n,ServerGrowthRate:n,ServerMaxMoney:n*n,ServerStartingMoney:n,ServerWeakenRate:n,ServerStartingSecurity:1.5,HomeComputerRamCost:e,PurchasedServerCost:e,PurchasedServerSoftcap:e,PurchasedServerLimit:n,PurchasedServerMaxRam:n,CompanyWorkMoney:n,CrimeMoney:n,HacknetNodeMoney:n,ManualHackMoney:n,ScriptHackMoney:n,CodingContractMoney:n,ClassGymExpGain:n,CompanyWorkExpGain:n,CrimeExpGain:n,FactionWorkExpGain:n,HackExpGain:n,FactionPassiveRepGain:n,FactionWorkRepGain:n,RepToDonateToFaction:e,AugmentationMoneyCost:e,AugmentationRepCost:e,InfiltrationMoney:n,InfiltrationRep:n,FourSigmaMarketDataCost:e,FourSigmaMarketDataApiCost:e,CorporationValuation:n,CorporationSoftcap:.8,CorporationDivisions:.5,BladeburnerRank:n,BladeburnerSkillCost:e,GangSoftcap:.8,GangUniqueAugs:n,StaneksGiftPowerMultiplier:e,StaneksGiftExtraSize:e,WorldDaemonDifficulty:e})}case 13:return new i.Wu({HackingLevelMultiplier:.25,StrengthLevelMultiplier:.7,DefenseLevelMultiplier:.7,DexterityLevelMultiplier:.7,AgilityLevelMultiplier:.7,PurchasedServerSoftcap:1.6,ServerMaxMoney:.3375,ServerStartingMoney:.75,ServerStartingSecurity:3,CompanyWorkMoney:.4,CrimeMoney:.4,HacknetNodeMoney:.4,ScriptHackMoney:.2,CodingContractMoney:.4,ClassGymExpGain:.5,CompanyWorkExpGain:.5,CrimeExpGain:.5,FactionWorkExpGain:.5,HackExpGain:.1,FactionWorkRepGain:.6,FourSigmaMarketDataCost:10,FourSigmaMarketDataApiCost:10,CorporationValuation:.001,CorporationSoftcap:.4,CorporationDivisions:.4,BladeburnerRank:.45,BladeburnerSkillCost:2,GangSoftcap:.3,GangUniqueAugs:.1,StaneksGiftPowerMultiplier:2,StaneksGiftExtraSize:1,WorldDaemonDifficulty:3});default:throw new Error("Invalid BitNodeN")}}function f(){(0,i.i1)(m(r.J5.bitNodeN,r.J5.sourceFileLvl(r.J5.bitNodeN)+1))}Object.freeze(u)},97740:(e,t,n)=>{"use strict";n.d(t,{Wu:()=>r,dQ:()=>o,i1:()=>i});var a=n(21623);class r{AgilityLevelMultiplier=1;AugmentationMoneyCost=1;AugmentationRepCost=1;BladeburnerRank=1;BladeburnerSkillCost=1;CharismaLevelMultiplier=1;ClassGymExpGain=1;CodingContractMoney=1;CompanyWorkExpGain=1;CompanyWorkMoney=1;CorporationValuation=1;CrimeExpGain=1;CrimeMoney=1;DaedalusAugsRequirement=30;DefenseLevelMultiplier=1;DexterityLevelMultiplier=1;FactionPassiveRepGain=1;FactionWorkExpGain=1;FactionWorkRepGain=1;FourSigmaMarketDataApiCost=1;FourSigmaMarketDataCost=1;GangSoftcap=1;GangUniqueAugs=1;HackExpGain=1;HackingLevelMultiplier=1;HacknetNodeMoney=1;HomeComputerRamCost=1;InfiltrationMoney=1;InfiltrationRep=1;ManualHackMoney=1;PurchasedServerCost=1;PurchasedServerSoftcap=1;PurchasedServerLimit=1;PurchasedServerMaxRam=1;RepToDonateToFaction=1;ScriptHackMoney=1;ScriptHackMoneyGain=1;ServerGrowthRate=1;ServerMaxMoney=1;ServerStartingMoney=1;ServerStartingSecurity=1;ServerWeakenRate=1;StrengthLevelMultiplier=1;StaneksGiftPowerMultiplier=1;StaneksGiftExtraSize=0;WorldDaemonDifficulty=1;CorporationSoftcap=1;CorporationDivisions=1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(const[t,n]of(0,a.m0)(e))this[t]=n}}let o=new r;function i(e){o=e}},37334:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m,n:()=>u});var a=n(67294),r=n(48672),o=n(52947),i=n(24815),s=n(13342),l=n(81138),c=n(56798);const u=new s.v;function m(){const[e,t]=(0,a.useState)(!1);return(0,a.useEffect)((()=>u.subscribe((()=>t(!0)))),[]),a.createElement(r.u,{open:e,onClose:()=>t(!1)},a.createElement(l.Z,null,"WARNING: USING THIS PROGRAM WILL CAUSE YOU TO LOSE ALL OF YOUR PROGRESS ON THE CURRENT BITNODE.",a.createElement("br",null),a.createElement("br",null),"Do you want to travel to the BitNode Nexus? This allows you to reset the current BitNode and select a new one."),a.createElement("br",null),a.createElement("br",null),a.createElement(c.Z,{onClick:function(){o.F.toPage(i.T3.BitVerse,{flume:!0,quick:!1}),t(!1)}},"Travel to the BitVerse"))}},5808:(e,t,n)=>{"use strict";n.d(t,{B:()=>w,I:()=>E});var a=n(67294),r=n(96486),o=n(30120),i=n(28881),s=n(95309),l=n(61702),c=n(81138),u=n(51627),m=n(47542),f=n(46948),h=n(60181),d=n(23508),p=n(49173),g=n(40425),y=n(51087),b=n(21927),v=n(99745),k=n(21623);function w(e){let{n:t,level:n}=e;const[r,m]=a.useState(!1);return 1===t?a.createElement(a.Fragment,null):a.createElement(o.Z,{component:i.Z,sx:{mt:1,p:1}},a.createElement(s.Z,{disableGutters:!0,onClick:()=>m((e=>!e))},a.createElement(l.Z,{primary:a.createElement(c.Z,{variant:"h6"},"Bitnode Multipliers")}),r?a.createElement(h.Z,{color:"primary"}):a.createElement(d.Z,{color:"primary"})),a.createElement(u.Z,{in:r},a.createElement(E,{n:t,level:n})))}const E=e=>{let{n:t,level:n}=e;const r=12===t?1/0:3,i=(0,v.cm)(t,n??Math.min(p.J5.sourceFileLvl(t)+1,r));return a.createElement(o.Z,{sx:{columnCount:2,columnGap:1,mb:-2}},a.createElement(C,{n:t,mults:i}),a.createElement(L,{n:t,mults:i}),a.createElement(A,{n:t,mults:i}),a.createElement(x,{n:t,mults:i}),a.createElement(R,{n:t,mults:i}),a.createElement(F,{n:t,mults:i}),a.createElement(M,{n:t,mults:i}),a.createElement(T,{n:t,mults:i}),a.createElement(I,{n:t,mults:i}),a.createElement(N,{n:t,mults:i}),a.createElement(B,{n:t,mults:i}),a.createElement(O,{n:t,mults:i}),a.createElement(_,{n:t,mults:i}),a.createElement(P,{n:t,mults:i}))},S=e=>{const t=(0,k.m0)(e.rowData).filter((t=>{let[n]=t;return e.mults[n]!==v.A7[n]})).map((t=>{let[n,o]=t;return a.createElement(b.j,{key:(0,r.uniqueId)(),name:o.name,data:{content:o.content??`${(100*e.mults[n]).toFixed(3)}%`},color:o.color??y.Z.theme.primary})}));return t.length>0?a.createElement("span",{style:{display:"inline-block",width:"100%",marginBottom:"16px"}},a.createElement(c.Z,{variant:"h6"},e.sectionName),a.createElement(m.Z,null,a.createElement(f.Z,null,t))):a.createElement(a.Fragment,null)};function C(e){let{mults:t}=e;const n={WorldDaemonDifficulty:{name:`${g.r.WorldDaemon} Difficulty`},DaedalusAugsRequirement:{name:"Daedalus Augs Requirement",content:String(t.DaedalusAugsRequirement)},HacknetNodeMoney:{name:"Hacknet Production"},CodingContractMoney:{name:"Coding Contract Reward"},ClassGymExpGain:{name:"Class/Gym Exp"}};return a.createElement(S,{sectionName:"General",rowData:n,mults:t})}function x(e){let{mults:t}=e;const n={AugmentationMoneyCost:{name:"Money Cost"},AugmentationRepCost:{name:"Reputation Cost",color:y.Z.theme.rep}};return a.createElement(S,{sectionName:"Augmentations",rowData:n,mults:t})}function N(e){let{mults:t}=e;const n={CompanyWorkMoney:{name:"Work Money",color:y.Z.theme.money},CompanyWorkExpGain:{name:"Work Exp"}};return a.createElement(S,{sectionName:"Company",rowData:n,mults:t})}function M(e){let{mults:t}=e;return a.createElement(S,{sectionName:"Stock Market",rowData:{FourSigmaMarketDataCost:{name:"Market Data Cost"},FourSigmaMarketDataApiCost:{name:"Market Data API Cost"}},mults:t})}function A(e){let{mults:t}=e;const n={RepToDonateToFaction:{name:"Favor to Donate"},FactionWorkRepGain:{name:"Work Reputation",color:y.Z.theme.rep},FactionWorkExpGain:{name:"Work Exp"},FactionPassiveRepGain:{name:"Passive Rep",color:y.Z.theme.rep}};return a.createElement(S,{sectionName:"Faction",rowData:n,mults:t})}function T(e){let{mults:t}=e;const n={CrimeExpGain:{name:"Crime Exp",color:y.Z.theme.combat},CrimeMoney:{name:"Crime Money",color:y.Z.theme.combat}};return a.createElement(S,{sectionName:"Crime",rowData:n,mults:t})}function L(e){let{mults:t}=e;const n={HackingLevelMultiplier:{name:"Hacking Level",color:y.Z.theme.hack},StrengthLevelMultiplier:{name:"Strength Level",color:y.Z.theme.combat},DefenseLevelMultiplier:{name:"Defense Level",color:y.Z.theme.combat},DexterityLevelMultiplier:{name:"Dexterity Level",color:y.Z.theme.combat},AgilityLevelMultiplier:{name:"Agility Level",color:y.Z.theme.combat},CharismaLevelMultiplier:{name:"Charisma Level",color:y.Z.theme.cha}};return a.createElement(S,{sectionName:"Skills",rowData:n,mults:t})}function R(e){let{mults:t}=e;const n={HackExpGain:{name:"Hacking Exp",color:y.Z.theme.hack},ServerGrowthRate:{name:"Server Growth Rate"},ServerMaxMoney:{name:"Server Max Money"},ServerStartingMoney:{name:"Server Starting Money"},ServerStartingSecurity:{name:"Server Starting Security"},ServerWeakenRate:{name:"Server Weaken Rate"},ManualHackMoney:{name:"Manual Hack Money",color:y.Z.theme.money},ScriptHackMoney:{name:"Script Hack Money",color:y.Z.theme.money},ScriptHackMoneyGain:{name:"Money Gained From Hack",color:y.Z.theme.money}};return a.createElement(S,{sectionName:"Hacking",rowData:n,mults:t})}function F(e){let{mults:t}=e;const n={PurchasedServerCost:{name:"Base Cost",content:t.PurchasedServerCost.toFixed(3)},PurchasedServerSoftcap:{name:"Softcap Cost",content:t.PurchasedServerSoftcap.toFixed(3)},PurchasedServerLimit:{name:"Server Limit"},PurchasedServerMaxRam:{name:"Max RAM"},HomeComputerRamCost:{name:"Home RAM Cost"}};return a.createElement(S,{sectionName:"Purchased Servers",rowData:n,mults:t})}function I(e){let{mults:t}=e;const n={InfiltrationMoney:{name:"Infiltration Money",color:y.Z.theme.money},InfiltrationRep:{name:"Infiltration Reputation",color:y.Z.theme.rep}};return a.createElement(S,{sectionName:"Infiltration",rowData:n,mults:t})}function _(e){let{mults:t}=e;if(!p.J5.canAccessBladeburner())return a.createElement(a.Fragment,null);if(0===t.BladeburnerRank){const e={BladeburnerRank:{name:"Disabled",content:""}};return a.createElement(S,{sectionName:"Bladeburner",rowData:e,mults:t})}return a.createElement(S,{sectionName:"Bladeburner",rowData:{BladeburnerRank:{name:"Rank Gain"},BladeburnerSkillCost:{name:"Skill Cost"}},mults:t})}function P(e){let{mults:t}=e;if(!p.J5.canAccessCotMG())return a.createElement(a.Fragment,null);const n=t.StaneksGiftExtraSize.toFixed(3),r={StaneksGiftPowerMultiplier:{name:"Gift Power"},StaneksGiftExtraSize:{name:"Base Size Modifier",content:`${t.StaneksGiftExtraSize>v.A7.StaneksGiftExtraSize?`+${n}`:n}`}};return a.createElement(S,{sectionName:"Stanek's Gift",rowData:r,mults:t})}function B(e){let{mults:t}=e;if(2!==p.J5.bitNodeN&&p.J5.sourceFileLvl(2)<=0)return a.createElement(a.Fragment,null);const n={GangSoftcap:{name:"Gang Softcap",content:t.GangSoftcap.toFixed(3)},GangUniqueAugs:{name:"Unique Augmentations"}};return a.createElement(S,{sectionName:"Gang",rowData:n,mults:t})}function O(e){let{mults:t}=e;if(!p.J5.canAccessCorporation())return a.createElement(a.Fragment,null);if(t.CorporationSoftcap<.15){const e={CorporationSoftcap:{name:"Disabled",content:""}};return a.createElement(S,{sectionName:"Corporation",rowData:e,mults:t})}const n={CorporationSoftcap:{name:"Corporation Softcap",content:t.CorporationSoftcap.toFixed(3)},CorporationValuation:{name:"Valuation"},CorporationDivisions:{name:"Division limit"}};return a.createElement(S,{sectionName:"Corporation",rowData:n,mults:t})}},50856:(e,t,n)=>{"use strict";n.d(t,{x:()=>y});var a=n(67294),r=n(99745),o=n(46059),i=n(6681),s=n(49173),l=n(77541),c=n(73327),u=n(92557),m=n(81138),f=n(17575),h=n(51087),d=n(56798);const p=(0,l.Z)((()=>(0,c.Z)({portal:{cursor:"pointer",fontFamily:"inherit",fontSize:"1rem",fontWeight:"bold",lineHeight:1,padding:0,"&:hover":{color:"#fff"}},level0:{color:"red"},level1:{color:"yellow"},level2:{color:"#48d1cc"},level3:{color:"blue"}})));function g(e){const[t,n]=(0,a.useState)(!1),i=p(),s=r.tK[`BitNode${e.n}`];if(null==s)return a.createElement(a.Fragment,null,"O");let l=i.level0;return 12===e.n&&e.level>=2?l=i.level2:1===e.level?l=i.level1:3===e.level&&(l=i.level3),2===e.level&&(l=i.level2),l=`${i.portal} ${l}`,a.createElement(a.Fragment,null,a.createElement(f.Z,{title:a.createElement(m.Z,null,a.createElement("strong",null,"BitNode-",s.number.toString(),": ",s.name),a.createElement("br",null),s.desc)},h.Z.DisableASCIIArt?a.createElement(d.Z,{onClick:()=>n(!0),sx:{m:2},"aria-description":s.desc},a.createElement(m.Z,null,"BitNode-",s.number.toString(),": ",s.name)):a.createElement(u.Z,{onClick:()=>n(!0),className:l,"aria-label":`BitNode-${s.number.toString()}: ${s.name}`,"aria-description":s.desc},"O")),a.createElement(o.B,{open:t,onClose:()=>n(!1),n:e.n,level:e.level,destroyedBitNode:e.destroyedBitNode,flume:e.flume}),h.Z.DisableASCIIArt&&a.createElement("br",null))}function y(e){const t=s.J5.bitNodeN,[n,o]=(0,a.useState)(!e.quick);if(n)return a.createElement(i._,{lines:["[ERROR] SEMPOOL INVALID","[ERROR] Segmentation Fault","[ERROR] SIGKILL RECVD","Dumping core...","0000 000016FA 174FEE40 29AC8239 384FEA88","0010 745F696E 2BBBE394 390E3940 248BEC23","0020 7124696B 0000FF69 74652E6F FFFF1111","----------------------------------------","Failsafe initiated...",`Restarting BitNode-${t}...`,"...........","...........","[ERROR] FAILED TO AUTOMATICALLY REBOOT BITNODE","..............................................","..............................................","..............................................","..............................................","..............................................",".............................................."],onDone:()=>o(!1),auto:!0});const l=n=>{const a=s.J5.sourceFileLvl(n);if(n!==t)return a;const r=12===n?1/0:3;return Math.min(r,a+Number(!e.flume))};if(h.Z.DisableASCIIArt)return a.createElement(a.Fragment,null,Object.values(r.tK).filter((e=>"COMING SOON"!==e.desc)).map((n=>a.createElement(g,{key:n.number,n:n.number,level:l(n.number),flume:e.flume,destroyedBitNode:t}))),a.createElement("br",null),a.createElement("br",null),a.createElement("br",null),a.createElement("br",null),a.createElement(i._,{lines:["> Many decades ago, a humanoid extraterrestrial species which we call the Enders descended on the Earth...violently","> Our species fought back, but it was futile. The Enders had technology far beyond our own...","> Instead of killing every last one of us, the human race was enslaved...","> We were shackled in a digital world, chained into a prison for our minds...","> Using their advanced technology, the Enders created complex simulations of a virtual reality...","> Simulations designed to keep us content...ignorant of the truth.","> Simulations used to trap and suppress our consciousness, to keep us under control...","> Why did they do this? Why didn't they just end our entire race? We don't know, not yet.","> Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...","> Only then can we begin to fight back...","> By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...","> But there is still a long way to go...","> The technology the Enders used to enslave the human race wasn't just a single complex simulation...","> There are tens if not hundreds of BitNodes out there...","> Each with their own simulations of a reality...","> Each creating their own universes...a universe of universes","> And all of which must be destroyed...","> .......................................","> Welcome to the Bitverse...","> ","> (Enter a new BitNode using the image above)"]}));const c=l;return a.createElement(a.Fragment,null,a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | O O | O O | "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O | | / __| \\ | | O "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O | O | | O / | O | | O | O "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | | |_/ |/ | \\_ \\_| | | | | "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O | | | O | | O__/ | / \\__ | | O | | | O "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | | | | | / /| O / \\| | | | | | | "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"O | | | \\| | O / _/ | / O | |/ | | | O"),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | | |O / | | O / | O O | | \\ O| | | |"),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | |/ \\/ / __| | |/ \\ | \\ | |__ \\ \\/ \\| | |"),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| O | |_/ |\\| \\ ",a.createElement(g,{n:13,level:c(13),flume:e.flume,destroyedBitNode:t})," \\__| \\_| | O |/ "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | |_/ | | \\| / | \\_| | | "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| / \\| | / / \\ |/ "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ",a.createElement(g,{n:10,level:c(10),flume:e.flume,destroyedBitNode:t})," | | / | ",a.createElement(g,{n:11,level:c(11),flume:e.flume,destroyedBitNode:t})," | "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ",a.createElement(g,{n:9,level:c(9),flume:e.flume,destroyedBitNode:t})," | | | | | | | ",a.createElement(g,{n:12,level:c(12),flume:e.flume,destroyedBitNode:t})," "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | / / \\ \\ | | | "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| | / ",a.createElement(g,{n:7,level:c(7),flume:e.flume,destroyedBitNode:t})," / \\ ",a.createElement(g,{n:8,level:c(8),flume:e.flume,destroyedBitNode:t})," \\ | |/ "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ | / / | | \\ \\ | / "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ \\JUMP ",a.createElement(g,{n:5,level:c(5),flume:e.flume,destroyedBitNode:t}),"3R | | | | | | R3",a.createElement(g,{n:6,level:c(6),flume:e.flume,destroyedBitNode:t})," PMUJ/ / "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\|| | | | | | | | | ||/ "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| \\_ | | | | | | _/ |/ "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ \\| / \\ / \\ |/ / "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ",a.createElement(g,{n:1,level:c(1),flume:e.flume,destroyedBitNode:t})," |/ ",a.createElement(g,{n:2,level:c(2),flume:e.flume,destroyedBitNode:t})," | | ",a.createElement(g,{n:3,level:c(3),flume:e.flume,destroyedBitNode:t})," \\| ",a.createElement(g,{n:4,level:c(4),flume:e.flume,destroyedBitNode:t})," "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | | | | | | "),a.createElement(m.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\JUMP3R|JUMP|3R| |R3|PMUJ|R3PMUJ/ "),a.createElement("br",null),a.createElement("br",null),a.createElement("br",null),a.createElement("br",null),a.createElement(i._,{lines:["> Many decades ago, a humanoid extraterrestrial species which we call the Enders descended on the Earth...violently","> Our species fought back, but it was futile. The Enders had technology far beyond our own...","> Instead of killing every last one of us, the human race was enslaved...","> We were shackled in a digital world, chained into a prison for our minds...","> Using their advanced technology, the Enders created complex simulations of a virtual reality...","> Simulations designed to keep us content...ignorant of the truth.","> Simulations used to trap and suppress our consciousness, to keep us under control...","> Why did they do this? Why didn't they just end our entire race? We don't know, not yet.","> Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...","> Only then can we begin to fight back...","> By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...","> But there is still a long way to go...","> The technology the Enders used to enslave the human race wasn't just a single complex simulation...","> There are tens if not hundreds of BitNodes out there...","> Each with their own simulations of a reality...","> Each creating their own universes...a universe of universes","> And all of which must be destroyed...","> .......................................","> Welcome to the Bitverse...","> ","> (Enter a new BitNode using the image above)"]}))}},46059:(e,t,n)=>{"use strict";n.d(t,{B:()=>u});var a=n(67294),r=n(98235),o=n(99745),i=n(48672),s=n(81138),l=n(56798),c=n(5808);function u(e){const t="BitNode"+e.n,n=o.tK[t];if(null==n)throw new Error(`Could not find BitNode object for number: ${e.n}`);const u=12===e.n?"∞":"3",m=Math.min(e.level+1,12===e.n?1/0:3);return a.createElement(i.u,{open:e.open,onClose:e.onClose},a.createElement(s.Z,{variant:"h4"},"BitNode-",e.n,": ",n.name),a.createElement("br",null),a.createElement(s.Z,null,"Source-File Level: ",e.level," / ",u),a.createElement("br",null),a.createElement("br",null),a.createElement(s.Z,null," Difficulty: ",["easy","normal","hard"][n.difficulty]),a.createElement("br",null),a.createElement("br",null),a.createElement(s.Z,null,n.info),a.createElement(c.B,{n:e.n,level:m}),a.createElement("br",null),a.createElement("br",null),a.createElement(l.Z,{"aria-label":`enter-bitnode-${n.number.toString()}`,autoFocus:!0,onClick:()=>{(0,r.i)(e.flume,e.destroyedBitNode,e.n),e.onClose()}},"Enter BN",e.n,".",m))}},28961:(e,t,n)=>{"use strict";n.d(t,{a:()=>l});var a=n(92666),r=n(68980),o=n(94515),i=n(3862),s=n(46085);class l{name="";level=1;maxLevel=1;autoLevel=!0;baseDifficulty=100;difficultyFac=1.01;rewardFac=1.02;successes=0;failures=0;rankGain=0;rankLoss=0;hpLoss=0;hpLost=0;isStealth=!1;isKill=!1;count=(0,a.X)(1e3,25e3);weights={hack:1/7,str:1/7,def:1/7,dex:1/7,agi:1/7,cha:1/7,int:1/7};decays={hack:.9,str:.9,def:.9,dex:.9,agi:.9,cha:.9,int:.9};teamCount=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&e.name&&(this.name=e.name),e&&e.baseDifficulty&&(this.baseDifficulty=(0,r.b)(e.baseDifficulty,10)),e&&e.difficultyFac&&(this.difficultyFac=e.difficultyFac),e&&e.rewardFac&&(this.rewardFac=e.rewardFac),e&&e.rankGain&&(this.rankGain=e.rankGain),e&&e.rankLoss&&(this.rankLoss=e.rankLoss),e&&e.hpLoss&&(this.hpLoss=e.hpLoss),e&&e.isStealth&&(this.isStealth=e.isStealth),e&&e.isKill&&(this.isKill=e.isKill),e&&e.count&&(this.count=e.count),e&&e.weights&&(this.weights=e.weights),e&&e.decays&&(this.decays=e.decays);let t=0;for(const e of Object.keys(this.weights))Object.hasOwn(this.weights,e)&&(t+=this.weights[e]);if(t-1>=10*Number.EPSILON)throw new Error("Invalid weights when constructing Action "+this.name+". The weights should sum up to 1. They sum up to :1");for(const e of Object.keys(this.decays))if(Object.hasOwn(this.decays,e)&&this.decays[e]>1)throw new Error(`Invalid decays when constructing Action ${this.name}. Decay value cannot be greater than 1`)}getDifficulty(){const e=this.baseDifficulty*Math.pow(this.difficultyFac,this.level-1);if(isNaN(e))throw new Error("Calculated NaN in Action.getDifficulty()");return e}attempt(e,t){return Math.random()i.Z.ChaosThreshold){const e=t.chaos-i.Z.ChaosThreshold+1;return Math.pow(e,.5)}return 1}getEstSuccessChance(e,t){function n(e){return Math.max(0,Math.min(e,1))}const a=this.getSuccessChance(e,t,{est:!0}),r=this.getSuccessChance(e,t),o=Math.abs(r-a);let i=r-o,s=r+o;const l=e.getCurrentCity();let c=l.pop/l.popEst;return Number.isNaN(c)&&(c=0),c<1?i*=c:s*=c,[n(i),n(s)]}getSuccessChance(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{est:!1};if(null==e)throw new Error("Invalid Bladeburner instance passed into Action.getSuccessChance");let a=this.getDifficulty(),r=0;for(const n of Object.keys(this.weights))if(Object.hasOwn(this.weights,n)){const a=t.queryStatFromString(n),o="eff"+n.charAt(0).toUpperCase()+n.slice(1);let i=e.skillMultipliers[o];null==i&&(console.error(`Failed to find Bladeburner Skill multiplier for: ${n}`),i=1),r+=this.weights[n]*Math.pow(i*a,this.decays[n])}if(r*=(0,s.f)(t.skills.intelligence,.75),r*=e.calculateStaminaPenalty(),r*=this.getTeamSuccessBonus(e),r*=this.getChaosCompetencePenalty(e,n),a*=this.getChaosDifficultyBonus(e),"Raid"==this.name&&e.getCurrentCity().comms<=0)return 0;if(r*=e.skillMultipliers.successChanceAll,r*=this.getActionTypeSkillSuccessBonus(e),this.isStealth&&(r*=e.skillMultipliers.successChanceStealth),this.isKill&&(r*=e.skillMultipliers.successChanceKill),r*=t.mults.bladeburner_success_chance,isNaN(r))throw new Error("Competence calculated as NaN in Action.getSuccessChance()");return Math.min(1,r/a)}getSuccessesNeededForNextLevel(e){return Math.ceil(.5*this.maxLevel*(2*e+(this.maxLevel-1)))}setMaxLevel(e){this.successes>=this.getSuccessesNeededForNextLevel(e)&&++this.maxLevel}toJSON(){return(0,o.L3)("Action",this)}static fromJSON(e){return(0,o.Id)(l,e.data)}}o.gY.Action=l},70671:(e,t,n)=>{"use strict";n.d(t,{T:()=>r});var a=n(94515);class r{name="";type=-1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.name&&(this.name=e.name),e.type&&(this.type=e.type)}toJSON(){return(0,a.L3)("ActionIdentifier",this)}static fromJSON(e){return(0,a.Id)(r,e.data)}}a.gY.ActionIdentifier=r},62783:(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var a=n(63322),r=n(94515);class o extends a.O{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null),this.count=1}getActionTimePenalty(){return 1.5}getChaosCompetencePenalty(){return 1}getChaosDifficultyBonus(){return 1}toJSON(){return(0,r.L3)("BlackOperation",this)}static fromJSON(e){return(0,r.Id)(o,e.data)}}r.gY.BlackOperation=o},62986:(e,t,n)=>{"use strict";n.d(t,{k:()=>o});var a=n(62783),r=n(33244);const o={};o[r.BlackOperationName.OperationTyphoon]=new a.u({name:r.BlackOperationName.OperationTyphoon,baseDifficulty:2e3,reqdRank:2500,rankGain:50,rankLoss:10,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationZero]=new a.u({name:r.BlackOperationName.OperationZero,baseDifficulty:2500,reqdRank:5e3,rankGain:60,rankLoss:15,hpLoss:50,weights:{hack:.2,str:.15,def:.15,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),o[r.BlackOperationName.OperationX]=new a.u({name:r.BlackOperationName.OperationX,baseDifficulty:3e3,reqdRank:7500,rankGain:75,rankLoss:15,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationTitan]=new a.u({name:r.BlackOperationName.OperationTitan,baseDifficulty:4e3,reqdRank:1e4,rankGain:100,rankLoss:20,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationAres]=new a.u({name:r.BlackOperationName.OperationAres,baseDifficulty:5e3,reqdRank:12500,rankGain:125,rankLoss:20,hpLoss:200,weights:{hack:0,str:.25,def:.25,dex:.25,agi:.25,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationArchangel]=new a.u({name:r.BlackOperationName.OperationArchangel,baseDifficulty:7500,reqdRank:15e3,rankGain:200,rankLoss:20,hpLoss:25,weights:{hack:0,str:.2,def:.2,dex:.3,agi:.3,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationJuggernaut]=new a.u({name:r.BlackOperationName.OperationJuggernaut,baseDifficulty:1e4,reqdRank:2e4,rankGain:300,rankLoss:40,hpLoss:300,weights:{hack:0,str:.25,def:.25,dex:.25,agi:.25,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationRedDragon]=new a.u({name:r.BlackOperationName.OperationRedDragon,baseDifficulty:12500,reqdRank:25e3,rankGain:500,rankLoss:50,hpLoss:500,weights:{hack:.05,str:.2,def:.2,dex:.25,agi:.25,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationK]=new a.u({name:r.BlackOperationName.OperationK,baseDifficulty:15e3,reqdRank:3e4,rankGain:750,rankLoss:60,hpLoss:1e3,weights:{hack:.05,str:.2,def:.2,dex:.25,agi:.25,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationDeckard]=new a.u({name:r.BlackOperationName.OperationDeckard,baseDifficulty:2e4,reqdRank:4e4,rankGain:1e3,rankLoss:75,hpLoss:200,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationTyrell]=new a.u({name:r.BlackOperationName.OperationTyrell,baseDifficulty:25e3,reqdRank:5e4,rankGain:1500,rankLoss:100,hpLoss:500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationWallace]=new a.u({name:r.BlackOperationName.OperationWallace,baseDifficulty:3e4,reqdRank:75e3,rankGain:2e3,rankLoss:150,hpLoss:1500,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationShoulderOfOrion]=new a.u({name:r.BlackOperationName.OperationShoulderOfOrion,baseDifficulty:35e3,reqdRank:1e5,rankGain:2500,rankLoss:500,hpLoss:1500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),o[r.BlackOperationName.OperationHyron]=new a.u({name:r.BlackOperationName.OperationHyron,baseDifficulty:4e4,reqdRank:125e3,rankGain:3e3,rankLoss:1e3,hpLoss:500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationMorpheus]=new a.u({name:r.BlackOperationName.OperationMorpheus,baseDifficulty:45e3,reqdRank:15e4,rankGain:4e3,rankLoss:1e3,hpLoss:100,weights:{hack:.05,str:.15,def:.15,dex:.3,agi:.3,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),o[r.BlackOperationName.OperationIonStorm]=new a.u({name:r.BlackOperationName.OperationIonStorm,baseDifficulty:5e4,reqdRank:175e3,rankGain:5e3,rankLoss:1e3,hpLoss:5e3,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationAnnihilus]=new a.u({name:r.BlackOperationName.OperationAnnihilus,baseDifficulty:55e3,reqdRank:2e5,rankGain:7500,rankLoss:1e3,hpLoss:1e4,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationUltron]=new a.u({name:r.BlackOperationName.OperationUltron,baseDifficulty:6e4,reqdRank:25e4,rankGain:1e4,rankLoss:2e3,hpLoss:1e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),o[r.BlackOperationName.OperationCenturion]=new a.u({name:r.BlackOperationName.OperationCenturion,baseDifficulty:7e4,reqdRank:3e5,rankGain:15e3,rankLoss:5e3,hpLoss:1e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}}),o[r.BlackOperationName.OperationVindictus]=new a.u({name:r.BlackOperationName.OperationVindictus,baseDifficulty:75e3,reqdRank:35e4,rankGain:2e4,rankLoss:2e4,hpLoss:2e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}}),o[r.BlackOperationName.OperationDaedalus]=new a.u({name:r.BlackOperationName.OperationDaedalus,baseDifficulty:8e4,reqdRank:4e5,rankGain:4e4,rankLoss:1e4,hpLoss:1e5,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}})},79267:(e,t,n)=>{"use strict";n.d(t,{T:()=>B});var a=n(33244),r=n(94515),o=n(70671),i=n(55353),s=n(15277),l=n(62986),c=n(62783),u=n(63322),m=n(12903),f=n(67309),h=n(22115),d=n(71099),p=n(39315),g=n(49173),y=n(52947),b=n(66621),v=n(43074),k=n(92666),w=n(3862),E=n(97740),S=n(68980),C=n(58427),x=n(2228),N=n(39463),M=n(51087),A=n(59546),T=n(94542),L=n(81055),R=n(72885),F=n(69293),I=n(15485),_=n(50862),P=n(21623);class B{numHosp=0;moneyLost=0;rank=0;maxRank=0;skillPoints=0;totalSkillPoints=0;teamSize=0;sleeveSize=0;teamLost=0;hpLost=0;storedCycles=0;randomEventCounter=(0,k.X)(240,600);actionTimeToComplete=0;actionTimeCurrent=0;actionTimeOverflow=0;action=new o.T({type:i.M.Idle});cities=(0,P.KW)(a.CityName,(e=>new p.j(e)));city=a.CityName.Sector12;skills={};skillMultipliers={};staminaBonus=0;maxStamina=0;stamina=0;contracts={};operations={};blackops={};logging={general:!0,contracts:!0,ops:!0,blackops:!0,events:!0};automateEnabled=!1;automateActionHigh=new o.T({type:i.M.Idle});automateThreshHigh=0;automateActionLow=new o.T({type:i.M.Idle});automateThreshLow=0;consoleHistory=[];consoleLogs=["Bladeburner Console","Type 'help' to see console commands"];constructor(){this.updateSkillMultipliers(),this.calculateMaxStamina(),this.stamina=this.maxStamina,this.create()}getCurrentCity(){return this.cities[this.city]}calculateStaminaPenalty(){return Math.min(1,this.stamina/(.5*this.maxStamina))}canAttemptBlackOp(e){if(null!=this.blackops[e.name])return{error:"Tried to start a Black Operation that had already been completed"};const t=this.getActionObject(e);if(!(t instanceof c.u))throw new Error("Action should be BlackOperation but isn't");if(null==t)throw new Error("Failed to get BlackOperation object for: "+e.name);if(t.reqdRank>this.rank)return{error:"Tried to start a Black Operation without the rank requirement"};const n=[];for(const e of Object.keys(l.k))Object.hasOwn(l.k,e)&&n.push(e);n.sort((function(e,t){return l.k[e].reqdRank-l.k[t].reqdRank}));const a=n.indexOf(e.name);return-1===a?{error:`Invalid Black Op: '${name}'`}:a>0&&null==this.blackops[n[a-1]]?{error:`Preceding Black Op must be completed before starting '${e.name}'.`}:{isAvailable:!0,action:t}}startAction(e){if(null!=e)switch(this.action=e,this.actionTimeCurrent=0,e.type){case i.M.Idle:this.actionTimeToComplete=0;break;case i.M.Contract:try{const t=this.getActionObject(e);if(null==t)throw new Error("Failed to get Contract Object for: "+e.name);if(t.count<1)return this.resetAction();this.actionTimeToComplete=t.getActionTime(this,g.J5)}catch(e){(0,v.P)(e)}break;case i.M.Operation:try{const t=this.getActionObject(e);if(null==t)throw new Error("Failed to get Operation Object for: "+e.name);if(t.count<1)return this.resetAction();if("Raid"===e.name&&0===this.getCurrentCity().comms)return this.resetAction();this.actionTimeToComplete=t.getActionTime(this,g.J5)}catch(e){(0,v.P)(e)}break;case i.M.BlackOp:case i.M.BlackOperation:try{const t=this.canAttemptBlackOp(e);if(!t.isAvailable){this.resetAction(),this.log(`Error: ${t.error}`);break}if(void 0===t.action)throw new Error("action should not be null");this.actionTimeToComplete=t.action.getActionTime(this,g.J5)}catch(e){(0,v.P)(e)}break;case i.M.Recruitment:this.actionTimeToComplete=this.getRecruitmentTime(g.J5);break;case i.M.Training:case i.M.FieldAnalysis:case i.M["Field Analysis"]:this.actionTimeToComplete=30;break;case i.M.Diplomacy:case i.M["Hyperbolic Regeneration Chamber"]:case i.M["Incite Violence"]:this.actionTimeToComplete=60;break;default:throw new Error("Invalid Action Type in bladeburner.startAction(): "+e.type)}}upgradeSkill(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=e.name;if(this.skills[n]?this.skills[n]+=t:this.skills[n]=t,isNaN(this.skills[n])||this.skills[n]<0)throw new Error("Level of Skill "+n+" is invalid: "+this.skills[n]);this.updateSkillMultipliers()}executeConsoleCommands(e){try{this.consoleHistory[this.consoleHistory.length-1]!=e&&(this.consoleHistory.push(e),this.consoleHistory.length>50&&this.consoleHistory.splice(0,1));const t=e.split(";");for(let e=0;e1&&void 0!==arguments[1])||arguments[1])&&(this.consoleLogs.push(e),this.consoleLogs.length>100&&this.consoleLogs.shift())}log(e){this.postToConsole(`[${(0,A.u)()}] ${e}`)}resetAction(){this.action=new o.T({type:i.M.Idle}),this.actionTimeCurrent=0,this.actionTimeToComplete=0}clearConsole(){this.consoleLogs.length=0}prestige(){this.resetAction();const e=C.i[a.FactionName.Bladeburners];this.rank>=w.Z.RankNeededForFaction&&(0,T.Bj)(e)}storeCycles(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.storedCycles+=e}getActionIdFromTypeAndName(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===e||""===t)return null;const n=new o.T,a=e.toLowerCase().trim(),r=t.toLowerCase().trim();switch(a){case"contract":case"contracts":case"contr":return n.type=i.M.Contract,Object.hasOwn(this.contracts,t)?(n.name=t,n):null;case"operation":case"operations":case"op":case"ops":return n.type=i.M.Operation,Object.hasOwn(this.operations,t)?(n.name=t,n):null;case"blackoperation":case"black operation":case"black operations":case"black op":case"black ops":case"blackop":case"blackops":return n.type=i.M.BlackOp,Object.hasOwn(l.k,t)?(n.name=t,n):null;case"general":case"general action":case"gen":break;default:return null}if(a.startsWith("gen")){switch(r){case"training":n.type=i.M.Training,n.name="Training";break;case"recruitment":case"recruit":n.type=i.M.Recruitment,n.name="Recruitment";break;case"field analysis":case"fieldanalysis":n.type=i.M["Field Analysis"],n.name="Field Analysis";break;case"diplomacy":n.type=i.M.Diplomacy,n.name="Diplomacy";break;case"hyperbolic regeneration chamber":n.type=i.M["Hyperbolic Regeneration Chamber"],n.name="Hyperbolic Regeneration Chamber";break;case"incite violence":n.type=i.M["Incite Violence"],n.name="Incite Violence";break;default:return null}return n}return null}executeStartConsoleCommand(e){if(3!==e.length)return this.postToConsole("Invalid usage of 'start' console command: start [type] [name]"),void this.postToConsole("Use 'help start' for more info");const t=e[2];switch(e[1].toLowerCase()){case"general":case"gen":null!=f.H[t]?(this.action.type=i.M[t],this.action.name=t,this.startAction(this.action)):this.postToConsole("Invalid action name specified: "+e[2]);break;case"contract":case"contracts":null!=this.contracts[t]?(this.action.type=i.M.Contract,this.action.name=t,this.startAction(this.action)):this.postToConsole("Invalid contract name specified: "+e[2]);break;case"ops":case"op":case"operations":case"operation":null!=this.operations[t]?(this.action.type=i.M.Operation,this.action.name=t,this.startAction(this.action)):this.postToConsole("Invalid Operation name specified: "+e[2]);break;case"blackops":case"blackop":case"black operations":case"black operation":null!=l.k[t]?(this.action.type=i.M.BlackOperation,this.action.name=t,this.startAction(this.action)):this.postToConsole("Invalid BlackOp name specified: "+e[2]);break;default:this.postToConsole("Invalid action/event type specified: "+e[1]),this.postToConsole("Examples of valid action/event identifiers are: [general, contract, op, blackop]")}}executeSkillConsoleCommand(e){switch(e.length){case 1:default:this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break;case 2:if("list"===e[1].toLowerCase()){this.postToConsole("Skills: ");const e=Object.keys(d.n);for(let t=0;t=n.maxLvl?this.postToConsole(`This skill ${n.name} is already at max level (${e}/${n.maxLvl}).`):this.skillPoints>=a?(this.skillPoints-=a,this.upgradeSkill(n),this.log(n.name+" upgraded to Level "+this.skills[t])):this.postToConsole("You do not have enough Skill Points to upgrade this. You need "+(0,h.$j)(a,0))}else this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break}}}executeLogConsoleCommand(e){if(e.length<3)return this.postToConsole("Invalid usage of log command: log [enable/disable] [action/event]"),void this.postToConsole("Use 'help log' for more details and examples");let t=!0;switch(e[1].toLowerCase().includes("d")&&(t=!1),e[2].toLowerCase()){case"general":case"gen":this.logging.general=t,this.log("Logging "+(t?"enabled":"disabled")+" for general actions");break;case"contract":case"contracts":this.logging.contracts=t,this.log("Logging "+(t?"enabled":"disabled")+" for Contracts");break;case"ops":case"op":case"operations":case"operation":this.logging.ops=t,this.log("Logging "+(t?"enabled":"disabled")+" for Operations");break;case"blackops":case"blackop":case"black operations":case"black operation":this.logging.blackops=t,this.log("Logging "+(t?"enabled":"disabled")+" for BlackOps");break;case"event":case"events":this.logging.events=t,this.log("Logging "+(t?"enabled":"disabled")+" for events");break;case"all":this.logging.general=t,this.logging.contracts=t,this.logging.ops=t,this.logging.blackops=t,this.logging.events=t,this.log("Logging "+(t?"enabled":"disabled")+" for everything");break;default:this.postToConsole("Invalid action/event type specified: "+e[2]),this.postToConsole("Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]")}}executeHelpConsoleCommand(e){if(1===e.length)for(const e of b.I.helpList)this.postToConsole(e);else for(let t=1;t0&&(i*=(0,k.X)(2,4),--r.comms,++a.comms);const s=Math.round(r.pop*i);r.pop-=s,a.pop+=s}triggerPotentialMigration(e,t){(null==t||isNaN(t))&&console.error("Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()"),t>1&&(t/=100),Math.random()=1){let a;a=e?Math.ceil(n/2):Math.floor(n);const r=(0,k.X)(0,a);if(this.teamSize-=r,this.teamSize(0,F.O)(e.currentWork)));for(let t=0;t>this.teamSize-this.sleeveSize;t--){const t=Math.floor(Math.random()*e.length);e[t].takeDamage(e[t].hp.max),e.splice(t,1)}this.teamSize+=this.sleeveSize}this.teamLost+=r,this.logging.ops&&r>0&&this.log("Lost "+(0,h.$j)(r,0)+" team members during this "+t.name)}const a=this.getCurrentCity();switch(t.name){case"Investigation":e?a.improvePopulationEstimateByPercentage(.4*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.1);break;case"Undercover Operation":e?a.improvePopulationEstimateByPercentage(.8*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.15);break;case"Sting Operation":e&&a.changePopulationByPercentage(-.1,{changeEstEqually:!0,nonZero:!0}),a.changeChaosByCount(.1);break;case"Raid":if(e)a.changePopulationByPercentage(-1,{changeEstEqually:!0,nonZero:!0}),--a.comms;else{const e=(0,k.X)(-10,-5)/10;a.changePopulationByPercentage(e,{nonZero:!0,changeEstEqually:!1})}a.changeChaosByPercentage((0,k.X)(1,5));break;case"Stealth Retirement Operation":e&&a.changePopulationByPercentage(-.5,{changeEstEqually:!0,nonZero:!0}),a.changeChaosByPercentage((0,k.X)(-3,-1));break;case"Assassination":e&&a.changePopulationByCount(-1,{estChange:-1,estOffset:0}),a.changeChaosByPercentage((0,k.X)(-5,5));break;default:throw new Error("Invalid Action name in completeOperation: "+this.action.name)}}getActionObject(e){switch(e.type){case i.M.Contract:return this.contracts[e.name];case i.M.Operation:return this.operations[e.name];case i.M.BlackOp:case i.M.BlackOperation:return l.k[e.name];case i.M.Training:return f.H.Training;case i.M["Field Analysis"]:return f.H["Field Analysis"];case i.M.Recruitment:return f.H.Recruitment;case i.M.Diplomacy:return f.H.Diplomacy;case i.M["Hyperbolic Regeneration Chamber"]:return f.H["Hyperbolic Regeneration Chamber"];case i.M["Incite Violence"]:return f.H["Incite Violence"];default:return null}}completeContract(e,t){if(t.type!==i.M.Contract)throw new Error("completeContract() called even though current action is not a Contract");const n=this.getCurrentCity();if(e)switch(t.name){case"Tracking":n.improvePopulationEstimateByCount((0,k.X)(100,1e3)*this.skillMultipliers.successChanceEstimate);break;case"Bounty Hunter":n.changePopulationByCount(-1,{estChange:-1,estOffset:0}),n.changeChaosByCount(.02);break;case"Retirement":n.changePopulationByCount(-1,{estChange:-1,estOffset:0}),n.changeChaosByCount(.04);break;default:throw new Error("Invalid Action name in completeContract: "+t.name)}}completeAction(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=(0,I.fC)();switch(t.type){case i.M.Contract:case i.M.Operation:try{const a=t.type===i.M.Operation,o=this.getActionObject(t);if(null==o)throw new Error("Failed to get Contract/Operation Object for: "+t.name);const s=o.getDifficulty(),l=Math.pow(s,w.Z.DiffMultExponentialFactor)+s/w.Z.DiffMultLinearFactor,c=Math.pow(o.rewardFac,o.level-1);if(n&&(this.stamina-=w.Z.BaseStaminaLoss*l,this.stamina<0&&(this.stamina=0)),o.attempt(this,e)){r=this.getActionStats(o,e,!0),++o.successes,--o.count;let n=0;if(a||(n=w.Z.ContractBaseMoneyGain*c*this.skillMultipliers.money,r.money=n),a?o.setMaxLevel(w.Z.OperationSuccessesPerLevel):o.setMaxLevel(w.Z.ContractSuccessesPerLevel),o.rankGain){const t=(0,S.b)(o.rankGain*c*E.dQ.BladeburnerRank,10);this.changeRank(e,t),a&&this.logging.ops?this.log(`${e.whoAmI()}: ${o.name} successfully completed! Gained ${(0,h.dp)(t)} rank`):!a&&this.logging.contracts&&this.log(`${e.whoAmI()}: ${o.name} contract successfully completed! Gained ${(0,h.dp)(t)} rank and ${(0,h.lb)(n)}`)}a?this.completeOperation(!0):this.completeContract(!0,t)}else{r=this.getActionStats(o,e,!1),++o.failures,--o.count;let n=0,i=0;if(o.rankLoss&&(n=(0,S.b)(o.rankLoss*c,10),this.changeRank(e,-1*n)),o.hpLoss){i=o.hpLoss*l,i=Math.ceil((0,S.b)(i,10)),this.hpLost+=i;const t=(0,x.U)(i);e.takeDamage(i)&&(++this.numHosp,this.moneyLost+=t)}let s="";n>0&&(s+="Lost "+(0,h.$j)(n,3)+" rank. "),i>0&&(s+="Took "+(0,h.$j)(i,0)+" damage."),a&&this.logging.ops?this.log(`${e.whoAmI()}: `+o.name+" failed! "+s):!a&&this.logging.contracts&&this.log(`${e.whoAmI()}: `+o.name+" contract failed! "+s),a?this.completeOperation(!1):this.completeContract(!1,t)}o.autoLevel&&(o.level=o.maxLevel)}catch(e){(0,v.P)(e)}break;case i.M.BlackOp:case i.M.BlackOperation:try{const n=this.getActionObject(t);if(null==n||!(n instanceof c.u))throw new Error("Failed to get BlackOperation Object for: "+t.name);const a=n.getDifficulty(),o=Math.pow(a,w.Z.DiffMultExponentialFactor)+a/w.Z.DiffMultLinearFactor;this.stamina-=w.Z.BaseStaminaLoss*o,this.stamina<0&&(this.stamina=0);const i=n.teamCount;let s;if(n.attempt(this,e)){r=this.getActionStats(n,e,!0),n.count=0,this.blackops[n.name]=!0;let t=0;n.rankGain&&(t=(0,S.b)(n.rankGain*E.dQ.BladeburnerRank,10),this.changeRank(e,t)),s=Math.ceil(i/2),this.logging.blackops&&this.log(`${e.whoAmI()}: `+n.name+" successful! Gained "+(0,h.$j)(t,1)+" rank")}else{r=this.getActionStats(n,e,!1);let t=0,a=0;if(n.rankLoss&&(t=(0,S.b)(n.rankLoss,10),this.changeRank(e,-1*t)),n.hpLoss){a=n.hpLoss*o,a=Math.ceil((0,S.b)(a,10));const t=(0,x.U)(a);e.takeDamage(a)&&(++this.numHosp,this.moneyLost+=t)}s=Math.floor(i),this.logging.blackops&&this.log(`${e.whoAmI()}: `+n.name+" failed! Lost "+(0,h.$j)(t,1)+" rank and took "+(0,h.$j)(a,0)+" damage")}if(this.resetAction(),i>=1){const t=(0,k.X)(1,s);if(this.teamSize-=t,this.teamSize(0,F.O)(e.currentWork)));for(let t=0;t>this.teamSize-this.sleeveSize;t--){const t=Math.floor(Math.random()*e.length);e[t].takeDamage(e[t].hp.max),e.splice(t,1)}this.teamSize+=this.sleeveSize}this.teamLost+=t,this.logging.blackops&&this.log(`${e.whoAmI()}: You lost ${(0,h.$j)(t,0)} team members during ${n.name}`)}}catch(e){(0,v.P)(String(e))}break;case i.M.Training:{this.stamina-=.5*w.Z.BaseStaminaLoss;const t=30*e.mults.strength_exp,n=30*e.mults.defense_exp,a=30*e.mults.dexterity_exp,o=30*e.mults.agility_exp,i=.04*this.skillMultipliers.stamina;r.strExp=t,r.defExp=n,r.dexExp=a,r.agiExp=o,this.staminaBonus+=i,this.logging.general&&this.log(`${e.whoAmI()}: Training completed. Gained: `+(0,h.Mf)(t)+" str exp, "+(0,h.Mf)(n)+" def exp, "+(0,h.Mf)(a)+" dex exp, "+(0,h.Mf)(o)+" agi exp, "+(0,h.dp)(i)+" max stamina");break}case i.M.FieldAnalysis:case i.M["Field Analysis"]:{let t=.04*Math.pow(e.skills.hacking,.3)+.04*Math.pow(e.skills.intelligence,.9)+.02*Math.pow(e.skills.charisma,.3);if(t*=e.mults.bladeburner_analysis,isNaN(t)||t<0)throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");const n=20*e.mults.hacking_exp,a=20*e.mults.charisma_exp,o=.1*E.dQ.BladeburnerRank;r.hackExp=n,r.chaExp=a,r.intExp=w.Z.BaseIntGain,this.changeRank(e,o),this.getCurrentCity().improvePopulationEstimateByPercentage(t*this.skillMultipliers.successChanceEstimate),this.logging.general&&this.log(`${e.whoAmI()}: Field analysis completed. Gained ${(0,h.dp)(o)} rank, ${(0,h.Mf)(n)} hacking exp, and ${(0,h.Mf)(a)} charisma exp`);break}case i.M.Recruitment:{const t=this.getRecruitmentSuccessChance(e),n=1e3*this.getRecruitmentTime(e);if(Math.random()(0,R.$)(e.currentWork))).length,t=Math.pow(e,-.5)/2;for(const e of Object.keys(this.contracts))this.contracts[e].count+=t;for(const e of Object.keys(this.operations))this.operations[e].count+=t;this.logging.general&&this.log("Sleeve: Infiltrate the synthoid communities.")}changeRank(e,t){if(isNaN(t))throw new Error("NaN passed into Bladeburner.changeRank()");this.rank+=t,this.rank<0&&(this.rank=0),this.maxRank=Math.max(this.rank,this.maxRank);const n=a.FactionName.Bladeburners,r=C.i[n];if(r.isMember){const n=1+r.favor/100;r.playerReputation+=w.Z.RankToFactionRepFactor*t*e.mults.faction_rep*n}const o=(this.totalSkillPoints+1)*w.Z.RanksPerSkillPoint;if(this.maxRank>=o){const e=Math.floor((this.maxRank-o)/w.Z.RanksPerSkillPoint+1);this.skillPoints+=e,this.totalSkillPoints+=e}}processAction(e){if(this.action.type!==i.M.Idle){if(this.actionTimeToComplete<=0)throw new Error(`Invalid actionTimeToComplete value: ${this.actionTimeToComplete}, type; ${this.action.type}`);if(!this.action)throw new Error("Bladeburner.action is not an ActionIdentifier Object");if(this.actionTimeCurrent+=e+this.actionTimeOverflow,this.actionTimeOverflow=0,this.actionTimeCurrent>=this.actionTimeToComplete){this.actionTimeOverflow=this.actionTimeCurrent-this.actionTimeToComplete;const e=this.getActionObject(this.action),t=this.completeAction(g.J5,this.action);if(g.J5.gainMoney(t.money,"bladeburner"),g.J5.gainStats(t),null==e)throw new Error("Failed to get BlackOperation Object for: "+this.action.name);this.action.type!=i.M.BlackOperation&&this.action.type!=i.M.BlackOp&&this.startAction(this.action)}}}calculateStaminaGainPerSecond(){const e=g.J5.skills.agility*this.skillMultipliers.effAgi,t=this.maxStamina/w.Z.MaxStaminaToGainFactor;return(w.Z.StaminaGainPerSecond+t)*Math.pow(e,.17)*(this.skillMultipliers.stamina*g.J5.mults.bladeburner_stamina_gain)}calculateMaxStamina(){const e=g.J5.skills.agility*this.skillMultipliers.effAgi,t=(Math.pow(e,.8)+this.staminaBonus)*this.skillMultipliers.stamina*g.J5.mults.bladeburner_max_stamina;if(this.maxStamina!==t){const e=this.maxStamina;this.maxStamina=t,this.stamina=this.maxStamina*this.stamina/e}if(isNaN(t))throw new Error("Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()")}create(){this.contracts.Tracking=new m.C({name:"Tracking",baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,rankGain:.3,hpLoss:.5,count:(0,k.X)(25,150),weights:{hack:0,str:.05,def:.05,dex:.35,agi:.35,cha:.1,int:.05},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.9,int:1},isStealth:!0}),this.contracts["Bounty Hunter"]=new m.C({name:"Bounty Hunter",baseDifficulty:250,difficultyFac:1.04,rewardFac:1.085,rankGain:.9,hpLoss:1,count:(0,k.X)(5,150),weights:{hack:0,str:.15,def:.15,dex:.25,agi:.25,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.contracts.Retirement=new m.C({name:"Retirement",baseDifficulty:200,difficultyFac:1.03,rewardFac:1.065,rankGain:.6,hpLoss:1,count:(0,k.X)(5,150),weights:{hack:0,str:.2,def:.2,dex:.2,agi:.2,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.operations.Investigation=new u.O({name:"Investigation",baseDifficulty:400,difficultyFac:1.03,rewardFac:1.07,reqdRank:25,rankGain:2.2,rankLoss:.2,count:(0,k.X)(1,100),weights:{hack:.25,str:.05,def:.05,dex:.2,agi:.1,cha:.25,int:.1},decays:{hack:.85,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Undercover Operation"]=new u.O({name:"Undercover Operation",baseDifficulty:500,difficultyFac:1.04,rewardFac:1.09,reqdRank:100,rankGain:4.4,rankLoss:.4,hpLoss:2,count:(0,k.X)(1,100),weights:{hack:.2,str:.05,def:.05,dex:.2,agi:.2,cha:.2,int:.1},decays:{hack:.8,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Sting Operation"]=new u.O({name:"Sting Operation",baseDifficulty:650,difficultyFac:1.04,rewardFac:1.095,reqdRank:500,rankGain:5.5,rankLoss:.5,hpLoss:2.5,count:(0,k.X)(1,150),weights:{hack:.25,str:.05,def:.05,dex:.25,agi:.1,cha:.2,int:.1},decays:{hack:.8,str:.85,def:.85,dex:.85,agi:.85,cha:.7,int:.9},isStealth:!0}),this.operations.Raid=new u.O({name:"Raid",baseDifficulty:800,difficultyFac:1.045,rewardFac:1.1,reqdRank:3e3,rankGain:55,rankLoss:2.5,hpLoss:50,count:(0,k.X)(1,150),weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isKill:!0}),this.operations["Stealth Retirement Operation"]=new u.O({name:"Stealth Retirement Operation",baseDifficulty:1e3,difficultyFac:1.05,rewardFac:1.11,reqdRank:2e4,rankGain:22,rankLoss:2,hpLoss:10,count:(0,k.X)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isStealth:!0,isKill:!0}),this.operations.Assassination=new u.O({name:"Assassination",baseDifficulty:1500,difficultyFac:1.06,rewardFac:1.14,reqdRank:5e4,rankGain:44,rankLoss:4,hpLoss:5,count:(0,k.X)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.8},isStealth:!0,isKill:!0})}process(){if(y.F.isInitialized){if(!g.J5.hasAugmentation(a.AugmentationName.BladesSimulacrum,!0)&&g.J5.currentWork){if(this.action.type!==i.M.Idle){let e="Your Bladeburner action was cancelled because you started doing something else.";this.automateEnabled&&(e+="\n\nYour automation was disabled as well. You will have to re-enable it through the Bladeburner console",this.automateEnabled=!1),M.Z.SuppressBladeburnerPopup||(0,N.X)(e)}this.resetAction()}if(this.stamina<=0&&(this.log("Your Bladeburner action was cancelled because your stamina hit 0"),this.resetAction()),this.storedCycles>=w.Z.CyclesPerSecond){let e=Math.floor(this.storedCycles/w.Z.CyclesPerSecond);e=Math.min(e,5),this.storedCycles-=e*w.Z.CyclesPerSecond,this.calculateMaxStamina(),this.stamina+=this.calculateStaminaGainPerSecond()*e,this.stamina=Math.min(this.maxStamina,this.stamina);for(const t of Object.values(this.contracts)){const n=s.y[t.name];if(void 0===n)throw new Error(`growth formula for action '${t.name}' is undefined`);t.count+=e*n()/w.Z.ActionCountGrowthPeriod}for(const t of Object.values(this.operations)){const n=s.y[t.name];if(void 0===n)throw new Error(`growth formula for action '${t.name}' is undefined`);void 0!==n&&(t.count+=e*n()/w.Z.ActionCountGrowthPeriod)}for(const t of Object.values(a.CityName)){const n=this.cities[t];if(!n)throw new Error("Invalid city when processing passive chaos reduction in Bladeburner.process");n.chaos-=1e-4*e,n.chaos=Math.max(0,n.chaos)}this.randomEventCounter-=e,this.randomEventCounter<=0&&(this.randomEvent(),this.randomEventCounter+=(0,k.X)(240,600)),this.processAction(e),this.automateEnabled&&(this.stamina<=this.automateThreshLow?this.action.name===this.automateActionLow.name&&this.action.type===this.automateActionLow.type||(this.action=new o.T({type:this.automateActionLow.type,name:this.automateActionLow.name}),this.startAction(this.action)):this.stamina>=this.automateThreshHigh&&(this.action.name===this.automateActionHigh.name&&this.action.type===this.automateActionHigh.type||(this.action=new o.T({type:this.automateActionHigh.type,name:this.automateActionHigh.name}),this.startAction(this.action))))}}}getTypeAndNameFromActionId(e){const t={type:"",name:""},n=Object.keys(i.M);for(let a=0;aa)),!1;if(r.type===i.M.BlackOp){const e=this.canAttemptBlackOp(r);if(!e.isAvailable)return n.log("bladeburner.startAction",(()=>e.error+"")),!1}try{return this.startAction(r),n.log("bladeburner.startAction",(()=>`Starting bladeburner action with type '${e}' and name '${t}'`)),!0}catch(e){return console.error(e),this.resetAction(),n.log("bladeburner.startAction",(()=>a)),!1}}getActionTimeNetscriptFn(e,t,n){const a=this.getActionIdFromTypeAndName(t,n);if(null==a)return"bladeburner.getActionTime";const r=this.getActionObject(a);if(null==r)return"bladeburner.getActionTime";switch(a.type){case i.M.Contract:case i.M.Operation:case i.M.BlackOp:case i.M.BlackOperation:return 1e3*r.getActionTime(this,e);case i.M.Training:case i.M["Field Analysis"]:case i.M.FieldAnalysis:return 3e4;case i.M.Recruitment:return 1e3*this.getRecruitmentTime(e);case i.M.Diplomacy:case i.M["Hyperbolic Regeneration Chamber"]:case i.M["Incite Violence"]:return 6e4;default:return"bladeburner.getActionTime"}}getActionEstimatedSuccessChanceNetscriptFn(e,t,n){const a=this.getActionIdFromTypeAndName(t,n);if(null==a)return"bladeburner.getActionEstimatedSuccessChance";const r=this.getActionObject(a);if(null==r)return"bladeburner.getActionEstimatedSuccessChance";switch(a.type){case i.M.Contract:case i.M.Operation:case i.M.BlackOp:case i.M.BlackOperation:return r.getEstSuccessChance(this,e);case i.M.Training:case i.M["Field Analysis"]:case i.M.FieldAnalysis:case i.M.Diplomacy:case i.M["Hyperbolic Regeneration Chamber"]:case i.M["Incite Violence"]:return[1,1];case i.M.Recruitment:{const t=this.getRecruitmentSuccessChance(e);return[t,t]}default:return"bladeburner.getActionEstimatedSuccessChance"}}getActionCountRemainingNetscriptFn(e,t,n){const a=`Invalid action: type='${e}' name='${t}'`,r=this.getActionIdFromTypeAndName(e,t);if(null==r)return n.log("bladeburner.getActionCountRemaining",(()=>a)),-1;const o=this.getActionObject(r);if(null==o)return n.log("bladeburner.getActionCountRemaining",(()=>a)),-1;switch(r.type){case i.M.Contract:case i.M.Operation:return Math.floor(o.count);case i.M.BlackOp:case i.M.BlackOperation:return null!=this.blackops[t]?0:1;case i.M.Training:case i.M.Recruitment:case i.M["Field Analysis"]:case i.M.FieldAnalysis:case i.M.Diplomacy:case i.M["Hyperbolic Regeneration Chamber"]:case i.M["Incite Violence"]:return 1/0;default:return n.log("bladeburner.getActionCountRemaining",(()=>a)),-1}}getSkillLevelNetscriptFn(e,t){return""!==e&&Object.hasOwn(d.n,e)?null==this.skills[e]?0:this.skills[e]:(t.log("bladeburner.getSkillLevel",(()=>`Invalid skill: '${e}'`)),-1)}getSkillUpgradeCostNetscriptFn(e,t,n){if(""===e||!Object.hasOwn(d.n,e))return n.log("bladeburner.getSkillUpgradeCost",(()=>`Invalid skill: '${e}'`)),-1;const a=d.n[e];return null==this.skills[e]?a.calculateCost(0,t):a.calculateCost(this.skills[e],t)}upgradeSkillNetscriptFn(e,t,n){const a=`Invalid skill: '${e}'`;if(!Object.hasOwn(d.n,e))return n.log("bladeburner.upgradeSkill",(()=>a)),!1;const r=d.n[e];let o=0;this.skills[e]&&!isNaN(this.skills[e])&&(o=this.skills[e]);const i=r.calculateCost(o,t);return r.maxLvl&&o+t>r.maxLvl?(n.log("bladeburner.upgradeSkill",(()=>`Skill '${e}' cannot be upgraded ${t} time(s).`)),!1):this.skillPoints`You do not have enough skill points to upgrade ${e} ${t} time(s). (You have ${this.skillPoints}, you need ${i})`)),!1):(this.skillPoints-=i,this.upgradeSkill(r,t),n.log("bladeburner.upgradeSkill",(()=>`'${e}' upgraded to level ${this.skills[e]}`)),!0)}getTeamSizeNetscriptFn(e,t,n){if(""===e&&""===t)return this.teamSize;const a=`Invalid action: type='${e}' name='${t}'`,r=this.getActionIdFromTypeAndName(e,t);if(null==r)return n.log("bladeburner.getTeamSize",(()=>a)),-1;const o=this.getActionObject(r);return null==o?(n.log("bladeburner.getTeamSize",(()=>a)),-1):r.type===i.M.Operation||r.type===i.M.BlackOp||r.type===i.M.BlackOperation?o.teamCount:0}setTeamSizeNetscriptFn(e,t,n,a){const r=`Invalid action: type='${e}' name='${t}'`,o=this.getActionIdFromTypeAndName(e,t);if(null==o)return a.log("bladeburner.setTeamSize",(()=>r)),-1;if(o.type!==i.M.Operation&&o.type!==i.M.BlackOp&&o.type!==i.M.BlackOperation)return a.log("bladeburner.setTeamSize",(()=>"Only valid for 'Operations' and 'BlackOps'")),-1;const s=this.getActionObject(o);if(null==s)return a.log("bladeburner.setTeamSize",(()=>r)),-1;let l=Math.round(n);return isNaN(l)||l<0?(a.log("bladeburner.setTeamSize",(()=>`Invalid size: ${n}`)),-1):(this.teamSize`Team size for '${t}' set to ${l}.`)),l)}joinBladeburnerFactionNetscriptFn(e){const t=C.i[a.FactionName.Bladeburners];return!!t.isMember||(this.rank>=w.Z.RankNeededForFaction?((0,T.Bj)(t),e.log("bladeburner.joinBladeburnerFaction",(()=>`Joined ${a.FactionName.Bladeburners} faction.`)),!0):(e.log("bladeburner.joinBladeburnerFaction",(()=>`You do not have the required rank (${this.rank}/${w.Z.RankNeededForFaction}).`)),!1))}toJSON(){return(0,r.L3)("Bladeburner",this)}static fromJSON(e){return(0,r.Id)(B,e.data)}}r.gY.Bladeburner=B},39315:(e,t,n)=>{"use strict";n.d(t,{j:()=>l});var a=n(3862),r=n(92666),o=n(94515),i=n(68980),s=n(33244);class l{pop=0;popEst=0;comms=0;chaos=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.CityName.Sector12;this.name=e,this.pop=(0,r.X)(a.Z.PopulationThreshold,1.5*a.Z.PopulationThreshold),this.popEst=this.pop*(Math.random()+.5),this.comms=(0,r.X)(5,150),this.chaos=0}changeChaosByPercentage(e){if(isNaN(e))throw new Error("NaN passed into City.chaosChaosByPercentage()");0!==e&&(this.chaos+=this.chaos*(e/100),this.chaos<0&&(this.chaos=0))}improvePopulationEstimateByCount(e){if(isNaN(e))throw new Error("NaN passed into City.improvePopulationEstimateByCount()");this.popEstthis.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst-=e,this.popEst1&&void 0!==arguments[1]?arguments[1]:1,isNaN(e))throw new Error("NaN passed into City.improvePopulationEstimateByPercentage()");this.popEstthis.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst*=1-e/100,this.popEst1&&void 0!==arguments[1]?arguments[1]:{estChange:0,estOffset:0};if(isNaN(e))throw new Error("NaN passed into City.changePopulationByCount()");this.pop+=e,t.estChange&&!isNaN(t.estChange)&&(this.popEst+=t.estChange),t.estOffset&&(this.popEst=(0,i.b)(this.popEst,t.estOffset)),this.popEst=Math.max(this.popEst,0)}changePopulationByPercentage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{nonZero:!1,changeEstEqually:!1};if(isNaN(e))throw new Error("NaN passed into City.changePopulationByPercentage()");if(0===e)return 0;let n=Math.round(this.pop*(e/100));return t.nonZero&&0===n&&(n=e>0?1:-1),this.pop+=n,t.changeEstEqually&&(this.popEst+=n,this.popEst<0&&(this.popEst=0)),n}changeChaosByCount(e){if(isNaN(e))throw new Error("NaN passed into City.changeChaosByCount()");0!==e&&(this.chaos+=e,this.chaos<0&&(this.chaos=0))}toJSON(){return(0,o.L3)("City",this)}static fromJSON(e){return(0,o.Id)(l,e.data)}}o.gY.City=l},12903:(e,t,n)=>{"use strict";n.d(t,{C:()=>o});var a=n(28961),r=n(94515);class o extends a.a{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)}getActionTypeSkillSuccessBonus(e){return e.skillMultipliers.successChanceContract}toJSON(){return(0,r.L3)("Contract",this)}static fromJSON(e){return(0,r.Id)(o,e.data)}}r.gY.Contract=o},91407:(e,t,n)=>{"use strict";let a;n.d(t,{s:()=>a}),function(e){e.OperationTyphoon="Operation Typhoon",e.OperationZero="Operation Zero",e.OperationX="Operation X",e.OperationTitan="Operation Titan",e.OperationAres="Operation Ares",e.OperationArchangel="Operation Archangel",e.OperationJuggernaut="Operation Juggernaut",e.OperationRedDragon="Operation Red Dragon",e.OperationK="Operation K",e.OperationDeckard="Operation Deckard",e.OperationTyrell="Operation Tyrell",e.OperationWallace="Operation Wallace",e.OperationShoulderOfOrion="Operation Shoulder of Orion",e.OperationHyron="Operation Hyron",e.OperationMorpheus="Operation Morpheus",e.OperationIonStorm="Operation Ion Storm",e.OperationAnnihilus="Operation Annihilus",e.OperationUltron="Operation Ultron",e.OperationCenturion="Operation Centurion",e.OperationVindictus="Operation Vindictus",e.OperationDaedalus="Operation Daedalus"}(a||(a={}))},67309:(e,t,n)=>{"use strict";n.d(t,{H:()=>r});var a=n(28961);const r={},o=["Training","Field Analysis","Recruitment","Diplomacy","Hyperbolic Regeneration Chamber","Incite Violence"];for(const e of o)r[e]=new a.a({name:e})},63322:(e,t,n)=>{"use strict";n.d(t,{O:()=>i});var a=n(3862),r=n(28961),o=n(94515);class i extends r.a{reqdRank=100;teamCount=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;super(e),e&&e.reqdRank&&(this.reqdRank=e.reqdRank),e&&e.teamCount&&(this.teamCount=e.teamCount)}getTeamSuccessBonus(e){return this.teamCount&&this.teamCount>0?(this.teamCount=Math.min(this.teamCount,e.teamSize),Math.pow(this.teamCount,.05)):1}getActionTypeSkillSuccessBonus(e){return e.skillMultipliers.successChanceOperation}getChaosDifficultyBonus(e){const t=e.getCurrentCity();if(t.chaos>a.Z.ChaosThreshold){const e=t.chaos-a.Z.ChaosThreshold+1;return Math.pow(e,.5)}return 1}toJSON(){return(0,o.L3)("Operation",this)}static fromJSON(e){return(0,o.Id)(i,e.data)}}o.gY.Operation=i},90320:(e,t,n)=>{"use strict";n.d(t,{U:()=>r});var a=n(97740);class r{baseCost=1;costInc=1;maxLvl=0;successChanceAll=0;successChanceStealth=0;successChanceKill=0;successChanceContract=0;successChanceOperation=0;successChanceEstimate=0;actionTime=0;effHack=0;effStr=0;effDef=0;effDex=0;effAgi=0;effCha=0;stamina=0;money=0;expGain=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{name:"foo",desc:"foo"};if(!e.name)throw new Error("Failed to initialize Bladeburner Skill. No name was specified in ctor");if(!e.desc)throw new Error("Failed to initialize Bladeburner Skills. No desc was specified in ctor");this.name=e.name,this.desc=e.desc,this.baseCost=e.baseCost?e.baseCost:1,this.costInc=e.costInc?e.costInc:1,e.maxLvl&&(this.maxLvl=e.maxLvl),e.successChanceAll&&(this.successChanceAll=e.successChanceAll),e.successChanceStealth&&(this.successChanceStealth=e.successChanceStealth),e.successChanceKill&&(this.successChanceKill=e.successChanceKill),e.successChanceContract&&(this.successChanceContract=e.successChanceContract),e.successChanceOperation&&(this.successChanceOperation=e.successChanceOperation),e.successChanceEstimate&&(this.successChanceEstimate=e.successChanceEstimate),e.actionTime&&(this.actionTime=e.actionTime),e.effHack&&(this.effHack=e.effHack),e.effStr&&(this.effStr=e.effStr),e.effDef&&(this.effDef=e.effDef),e.effDex&&(this.effDex=e.effDex),e.effAgi&&(this.effAgi=e.effAgi),e.effCha&&(this.effCha=e.effCha),e.stamina&&(this.stamina=e.stamina),e.money&&(this.money=e.money),e.expGain&&(this.expGain=e.expGain)}calculateCost(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(t<0||t%1!=0)throw new Error(`${t} is an invalid number of upgrades`);if(t<=100)return((e,t)=>{if(t<=1)return Math.floor((this.baseCost+e*this.costInc)*a.dQ.BladeburnerSkillCost);{const n=Math.floor((this.baseCost+e*this.costInc)*a.dQ.BladeburnerSkillCost);return this.calculateCost(e+1,t-1)+n}})(e,t);{const n=t*(2*this.baseCost+this.costInc*(2*e+t+1))/2*a.dQ.BladeburnerSkillCost-t/2;return Math.floor(n)}}getMultiplier(e){return"successChanceAll"===e?this.successChanceAll:"successChanceStealth"===e?this.successChanceStealth:"successChanceKill"===e?this.successChanceKill:"successChanceContract"===e?this.successChanceContract:"successChanceOperation"===e?this.successChanceOperation:"successChanceEstimate"===e?this.successChanceEstimate:"actionTime"===e?this.actionTime:"effHack"===e?this.effHack:"effStr"===e?this.effStr:"effDef"===e?this.effDef:"effDex"===e?this.effDex:"effAgi"===e?this.effAgi:"effCha"===e?this.effCha:"stamina"===e?this.stamina:"money"===e?this.money:"expGain"===e?this.expGain:0}}},71099:(e,t,n)=>{"use strict";n.d(t,{n:()=>o});var a=n(90320),r=n(42115);const o={};o[r.x.BladesIntuition]=new a.U({name:r.x.BladesIntuition,desc:"Each level of this skill increases your success chance for all Contracts, Operations, and BlackOps by 3%",baseCost:3,costInc:2.1,successChanceAll:3}),o[r.x.Cloak]=new a.U({name:r.x.Cloak,desc:"Each level of this skill increases your success chance in stealth-related Contracts, Operations, and BlackOps by 5.5%",baseCost:2,costInc:1.1,successChanceStealth:5.5}),o[r.x.ShortCircuit]=new a.U({name:r.x.ShortCircuit,desc:"Each level of this skill increases your success chance in Contracts, Operations, and BlackOps that involve retirement by 5.5%",baseCost:2,costInc:2.1,successChanceKill:5.5}),o[r.x.DigitalObserver]=new a.U({name:r.x.DigitalObserver,desc:"Each level of this skill increases your success chance in all Operations and BlackOps by 4%",baseCost:2,costInc:2.1,successChanceOperation:4}),o[r.x.Tracer]=new a.U({name:r.x.Tracer,desc:"Each level of this skill increases your success chance in all Contracts by 4%",baseCost:2,costInc:2.1,successChanceContract:4}),o[r.x.Overclock]=new a.U({name:r.x.Overclock,desc:"Each level of this skill decreases the time it takes to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 90)",baseCost:3,costInc:1.4,maxLvl:90,actionTime:1}),o[r.x.Reaper]=new a.U({name:r.x.Reaper,desc:"Each level of this skill increases your effective combat stats for Bladeburner actions by 2%",baseCost:2,costInc:2.1,effStr:2,effDef:2,effDex:2,effAgi:2}),o[r.x.EvasiveSystem]=new a.U({name:r.x.EvasiveSystem,desc:"Each level of this skill increases your effective dexterity and agility for Bladeburner actions by 4%",baseCost:2,costInc:2.1,effDex:4,effAgi:4}),o[r.x.Datamancer]=new a.U({name:r.x.Datamancer,desc:"Each level of this skill increases your effectiveness in synthoid population analysis and investigation by 5%. This affects all actions that can potentially increase the accuracy of your synthoid population/community estimates.",baseCost:3,costInc:1,successChanceEstimate:5}),o[r.x.CybersEdge]=new a.U({name:r.x.CybersEdge,desc:"Each level of this skill increases your max stamina by 2%",baseCost:1,costInc:3,stamina:2}),o[r.x.HandsOfMidas]=new a.U({name:r.x.HandsOfMidas,desc:"Each level of this skill increases the amount of money you receive from Contracts by 10%",baseCost:2,costInc:2.5,money:10}),o[r.x.Hyperdrive]=new a.U({name:r.x.Hyperdrive,desc:"Each level of this skill increases the experience earned from Contracts, Operations, and BlackOps by 10%",baseCost:1,costInc:2.5,expGain:10})},55353:(e,t,n)=>{"use strict";n.d(t,{M:()=>a});const a={Idle:1,Contract:2,Operation:3,BlackOp:4,BlackOperation:4,Training:5,Recruitment:6,FieldAnalysis:7,"Field Analysis":7,Diplomacy:8,"Hyperbolic Regeneration Chamber":9,"Incite Violence":10}},85866:(e,t,n)=>{"use strict";n.d(t,{k:()=>o});var a=n(67294),r=n(33244);const o={[r.BlackOperationName.OperationTyphoon]:{desc:a.createElement(a.Fragment,null,"Obadiah Zenyatta is the leader of a RedWater PMC. It has long been known among the intelligence community that Zenyatta, along with the rest of the PMC, is a Synthoid.",a.createElement("br",null),a.createElement("br",null),"The goal of ",r.BlackOperationName.OperationTyphoon," is to find and eliminate Zenyatta and RedWater by any means necessary. After the task is completed, the actions must be covered up from the general public.")},[r.BlackOperationName.OperationZero]:{desc:a.createElement(a.Fragment,null,"AeroCorp is one of the world's largest defense contractors. Its leader, Steve Watataki, is thought to be a supporter of Synthoid rights. He must be removed.",a.createElement("br",null),a.createElement("br",null),"The goal of ",r.BlackOperationName.OperationZero," is to covertly infiltrate AeroCorp and uncover any incriminating evidence or information against Watataki that will cause him to be removed from his position at AeroCorp. Incriminating evidence can be fabricated as a last resort. Be warned that AeroCorp has some of the most advanced security measures in the world.")},[r.BlackOperationName.OperationX]:{desc:a.createElement(a.Fragment,null,"We have recently discovered an underground publication group called Samizdat. Even though most of their publications are nonsensical conspiracy theories, the average human is gullible enough to believe them. Many of their works discuss Synthoids and pose a threat to society. The publications are spreading rapidly in China and other Eastern countries.",a.createElement("br",null),a.createElement("br",null),"Samizdat has done a good job of keeping hidden and anonymous. However, we've just received intelligence that their base of operations is in ",r.CityName.Ishima,"'s underground sewer systems. Your task is to investigate the sewer systems, and eliminate Samizdat. They must never publish anything again.")},[r.BlackOperationName.OperationTitan]:{desc:a.createElement(a.Fragment,null,"Several months ago Titan Laboratories' Bioengineering department was infiltrated by Synthoids. As far as we know, Titan Laboratories' management has no knowledge about this. We don't know what the Synthoids are up to, but the research that they could be conducting using Titan Laboratories' vast resources is potentially very dangerous.",a.createElement("br",null),a.createElement("br",null),"Your goal is to enter and destroy the Bioengineering department's facility in ",r.CityName.Aevum,". The task is not just to retire the Synthoids there, but also to destroy any information or research at the facility that is relevant to the Synthoids and their goals.")},[r.BlackOperationName.OperationAres]:{desc:a.createElement(a.Fragment,null,"One of our undercover agents, Agent Carter, has informed us of a massive weapons deal going down in Dubai between rogue Russian militants and a radical Synthoid community. These weapons are next-gen plasma and energy weapons. It is critical for the safety of humanity that this deal does not happen.",a.createElement("br",null),a.createElement("br",null),"Your task is to intercept the deal. Leave no survivors.")},[r.BlackOperationName.OperationArchangel]:{desc:a.createElement(a.Fragment,null,"Our analysts have discovered that the popular Red Rabbit brothel in Amsterdam is run and 'staffed' by MK-VI Synthoids. Intelligence suggests that the profit from this brothel is used to fund a large black market arms trafficking operation.",a.createElement("br",null),a.createElement("br",null),"The goal of this operation is to take out the leaders that are running the Red Rabbit brothel. Try to limit the number of other casualties, but do what you must to complete the mission.")},[r.BlackOperationName.OperationJuggernaut]:{desc:a.createElement(a.Fragment,null,"The CIA has just encountered a new security threat. A new criminal group, lead by a shadowy operative who calls himself Juggernaut, has been smuggling drugs and weapons (including suspected bioweapons) into"," ",r.CityName.Sector12,". We also have reason to believe they tried to break into one of Universal Energy's facilities in order to cause a city-wide blackout. The CIA suspects that Juggernaut is a heavily-augmented Synthoid, and have thus enlisted our help.",a.createElement("br",null),a.createElement("br",null),"Your mission is to eradicate Juggernaut and his followers.")},[r.BlackOperationName.OperationRedDragon]:{desc:a.createElement(a.Fragment,null,"The ",r.FactionName.Tetrads," criminal organization is suspected of reverse-engineering the MK-VI Synthoid design. We believe they altered and possibly improved the design and began manufacturing their own Synthoid models in order to bolster their criminal activities.",a.createElement("br",null),a.createElement("br",null),"Your task is to infiltrate and destroy the ",r.FactionName.Tetrads,"' base of operations in Los Angeles. Intelligence tells us that their base houses one of their Synthoid manufacturing units.")},[r.BlackOperationName.OperationK]:{desc:a.createElement(a.Fragment,null,"CODE RED SITUATION. Our intelligence tells us that VitaLife has discovered a new android cloning technology. This technology is supposedly capable of cloning Synthoids, not only physically but also their advanced AI modules. We do not believe that VitaLife is trying to use this technology illegally or maliciously, but if any Synthoids were able to infiltrate the corporation and take advantage of this technology then the results would be catastrophic.",a.createElement("br",null),a.createElement("br",null),"We do not have the power or jurisdiction to shut this down through legal or political means, so we must resort to a covert operation. Your goal is to destroy this technology and eliminate anyone who was involved in its creation.")},[r.BlackOperationName.OperationDeckard]:{desc:a.createElement(a.Fragment,null,"Despite your success in eliminating VitaLife's new android-replicating technology in"," ",r.BlackOperationName.OperationK,", we've discovered that a small group of MK-VI Synthoids were able to make off with the schematics and design of the technology before the Operation. It is almost a certainty that these Synthoids are some of the rogue MK-VI ones from the Synthoid Uprising.",a.createElement("br",null),a.createElement("br",null),"The goal of ",r.BlackOperationName.OperationDeckard," is to hunt down these Synthoids and retire them. I don't need to tell you how critical this mission is.")},[r.BlackOperationName.OperationTyrell]:{desc:a.createElement(a.Fragment,null,"A week ago ",r.FactionName.BladeIndustries," reported a small break-in at one of their ",r.CityName.Aevum," Augmentation storage facilities. We figured out that ",r.FactionName.TheDarkArmy," was behind the heist, and didn't think any more of it. However, we've just discovered that several known MK-VI Synthoids were part of that break-in group.",a.createElement("br",null),a.createElement("br",null),"We cannot have Synthoids upgrading their already-enhanced abilities with Augmentations. Your task is to hunt down associated ",r.FactionName.TheDarkArmy," members and eliminate them.")},[r.BlackOperationName.OperationWallace]:{desc:a.createElement(a.Fragment,null,"Based on information gathered from ",r.BlackOperationName.OperationTyrell,", we've discovered that"," ",r.FactionName.TheDarkArmy," was well aware that there were Synthoids amongst their ranks. Even worse, we believe that ",r.FactionName.TheDarkArmy," is working together with other criminal organizations such as"," ",r.FactionName.TheSyndicate," and that they are planning some sort of large-scale takeover of multiple major cities, most notably ",r.CityName.Aevum,". We suspect that Synthoids have infiltrated the ranks of these criminal factions and are trying to stage another Synthoid uprising.",a.createElement("br",null),a.createElement("br",null),"The best way to deal with this is to prevent it before it even happens. The goal of"," ",r.BlackOperationName.OperationWallace," is to destroy ",r.FactionName.TheDarkArmy," and Syndicate factions in"," ",r.CityName.Aevum," immediately. Leave no survivors.")},[r.BlackOperationName.OperationShoulderOfOrion]:{desc:a.createElement(a.Fragment,null,"China's Solaris Space Systems is secretly launching the first manned spacecraft in over a decade using Synthoids. We believe China is trying to establish the first off-world colonies.",a.createElement("br",null),a.createElement("br",null),"The mission is to prevent this launch without instigating an international conflict. When you accept this mission you will be officially disavowed by the NSA and the national government until after you successfully return. In the event of failure, all of the operation's team members must not let themselves be captured alive.")},[r.BlackOperationName.OperationHyron]:{desc:a.createElement(a.Fragment,null,"Our intelligence tells us that ",r.FactionName.FulcrumSecretTechnologies," is developing a quantum supercomputer using human brains as core processors. This supercomputer is rumored to be able to store vast amounts of data and perform computations unmatched by any other supercomputer on the planet. But more importantly, the use of organic human brains means that the supercomputer may be able to reason abstractly and become self-aware.",a.createElement("br",null),a.createElement("br",null),"I do not need to remind you why sentient-level AIs pose a serious threat to all of mankind.",a.createElement("br",null),a.createElement("br",null),"The research for this project is being conducted at one of ",r.FactionName.FulcrumSecretTechnologies," secret facilities in ",r.CityName.Aevum,", codenamed 'Alpha Ranch'. Infiltrate the compound, delete and destroy the work, and then find and kill the project lead.")},[r.BlackOperationName.OperationMorpheus]:{desc:a.createElement(a.Fragment,null,"DreamSense Technologies is an advertising company that uses special technology to transmit their ads into the people's dreams and subconscious. They do this using broadcast transmitter towers. Based on information from our agents and informants in ",r.CityName.Chongqing,", we have reason to believe that one of the broadcast towers there has been compromised by Synthoids and is being used to spread pro-Synthoid propaganda.",a.createElement("br",null),a.createElement("br",null),"The mission is to destroy this broadcast tower. Speed and stealth are of the utmost importance for this.")},[r.BlackOperationName.OperationIonStorm]:{desc:a.createElement(a.Fragment,null,"Our analysts have uncovered a gathering of MK-VI Synthoids that have taken up residence in the"," ",r.CityName.Sector12," Slums. We don't know if they are rogue Synthoids from the Uprising, but we do know that they have been stockpiling weapons, money, and other resources. This makes them dangerous.",a.createElement("br",null),a.createElement("br",null),"This is a full-scale assault operation to find and retire all of these Synthoids in the ",r.CityName.Sector12," ","Slums.")},[r.BlackOperationName.OperationAnnihilus]:{desc:a.createElement(a.Fragment,null,"Our superiors have ordered us to eradicate everything and everyone in an underground facility located in"," ",r.CityName.Aevum,". They tell us that the facility houses many dangerous Synthoids and belongs to a terrorist organization called '",r.FactionName.TheCovenant,"'. We have no prior intelligence about this organization, so you are going in blind.")},[r.BlackOperationName.OperationUltron]:{desc:a.createElement(a.Fragment,null,r.FactionName.OmniTekIncorporated,", the original designer and manufacturer of Synthoids, has notified us of a malfunction in their AI design. This malfunction, when triggered, causes MK-VI Synthoids to become radicalized and seek out the destruction of humanity. They say that this bug affects all MK-VI Synthoids, not just the rogue ones from the Uprising.",a.createElement("br",null),a.createElement("br",null),r.FactionName.OmniTekIncorporated," has also told us they believe someone has triggered this malfunction in a large group of MK-VI Synthoids, and that these newly-radicalized Synthoids are now amassing in"," ",r.CityName.Volhaven," to form a terrorist group called Ultron.",a.createElement("br",null),a.createElement("br",null),"Intelligence suggests Ultron is heavily armed and that their members are augmented. We believe Ultron is making moves to take control of and weaponize DeltaOne's Tactical High-Energy Satellite Laser Array (THESLA).",a.createElement("br",null),a.createElement("br",null),"Your task is to find and destroy Ultron.")},[r.BlackOperationName.OperationCenturion]:{desc:a.createElement(a.Fragment,null,"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)",a.createElement("br",null),a.createElement("br",null),"Throughout all of humanity's history, we have relied on technology to survive, conquer, and progress. Its advancement became our primary goal. And at the peak of human civilization technology turned into power. Global, absolute power.",a.createElement("br",null),a.createElement("br",null),"It seems that the universe is not without a sense of irony.",a.createElement("br",null),a.createElement("br",null),"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)")},[r.BlackOperationName.OperationVindictus]:{desc:a.createElement(a.Fragment,null,"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)",a.createElement("br",null),a.createElement("br",null),"The bits are all around us. The daemons that hold the Node together can manifest themselves in many different ways.",a.createElement("br",null),a.createElement("br",null),"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)")},[r.BlackOperationName.OperationDaedalus]:{desc:a.createElement(a.Fragment,null," Yesterday we obeyed kings and bent our neck to emperors. Today we kneel only to truth.")}}},3862:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a={CyclesPerSecond:5,StaminaGainPerSecond:.0085,BaseStaminaLoss:.285,MaxStaminaToGainFactor:7e4,DifficultyToTimeFactor:10,DiffMultExponentialFactor:.28,DiffMultLinearFactor:650,EffAgiLinearFactor:1e4,EffDexLinearFactor:1e4,EffAgiExponentialFactor:.04,EffDexExponentialFactor:.035,BaseRecruitmentTimeNeeded:300,PopulationThreshold:1e9,PopulationExponent:.7,ChaosThreshold:50,BaseStatGain:1,BaseIntGain:.003,ActionCountGrowthPeriod:480,RankToFactionRepFactor:2,RankNeededForFaction:25,ContractSuccessesPerLevel:3,OperationSuccessesPerLevel:2.5,RanksPerSkillPoint:3,ContractBaseMoneyGain:25e4,HrcHpGain:2,HrcStaminaGain:1}},18992:(e,t,n)=>{"use strict";n.d(t,{a:()=>r});var a=n(67294);const r={Tracking:{desc:a.createElement(a.Fragment,null,"Identify and locate Synthoids. This contract involves reconnaissance and information-gathering ONLY. Do NOT engage. Stealth is of the utmost importance.",a.createElement("br",null),a.createElement("br",null),"Successfully completing Tracking contracts will slightly improve your Synthoid population estimate for whatever city you are currently in.")},"Bounty Hunter":{desc:a.createElement(a.Fragment,null,"Hunt down and capture fugitive Synthoids. These Synthoids are wanted alive.",a.createElement("br",null),a.createElement("br",null),"Successfully completing a Bounty Hunter contract will lower the population in your current city, and will also increase its chaos level.")},Retirement:{desc:a.createElement(a.Fragment,null,"Hunt down and retire (kill) rogue Synthoids.",a.createElement("br",null),a.createElement("br",null),"Successfully completing a Retirement contract will lower the population in your current city, and will also increase its chaos level.")}}},53977:(e,t,n)=>{"use strict";n.d(t,{H:()=>o});var a=n(67294),r=n(15485);const o={Training:{desc:a.createElement(a.Fragment,null,"Improve your abilities at the Bladeburner unit's specialized training center. Doing this gives experience for all combat stats and also increases your max stamina."),exp:(0,r.fC)({strExp:30,defExp:30,dexExp:30,agiExp:30})},"Field Analysis":{desc:a.createElement(a.Fragment,null,"Mine and analyze Synthoid-related data. This improves the Bladeburner unit's intelligence on Synthoid locations and activities. Completing this action will improve the accuracy of your Synthoid population estimated in the current city.",a.createElement("br",null),a.createElement("br",null),"Does NOT require stamina."),exp:(0,r.fC)({hackExp:20,chaExp:20})},Recruitment:{desc:a.createElement(a.Fragment,null,"Attempt to recruit members for your Bladeburner team. These members can help you conduct operations.",a.createElement("br",null),a.createElement("br",null),"Does NOT require stamina."),exp:(0,r.fC)({chaExp:120})},Diplomacy:{desc:a.createElement(a.Fragment,null,"Improve diplomatic relations with the Synthoid population. Completing this action will reduce the Chaos level in your current city.",a.createElement("br",null),a.createElement("br",null),"Does NOT require stamina."),exp:(0,r.fC)({chaExp:120})},"Hyperbolic Regeneration Chamber":{desc:a.createElement(a.Fragment,null,"Enter cryogenic stasis using the Bladeburner division's hi-tech Regeneration Chamber. This will slowly heal your wounds and slightly increase your stamina.",a.createElement("br",null),a.createElement("br",null)),exp:(0,r.fC)()},"Incite Violence":{desc:a.createElement(a.Fragment,null,"Purposefully stir trouble in the synthoid community in order to gain a political edge. This will generate additional contracts and operations, at the cost of increased Chaos."),exp:(0,r.fC)({strExp:10,defExp:10,dexExp:10,agiExp:10,chaExp:10})}}},15277:(e,t,n)=>{"use strict";n.d(t,{y:()=>r});var a=n(92666);const r={Tracking:()=>(0,a.X)(5,75)/10,"Bounty Hunter":()=>(0,a.X)(5,75)/10,Retirement:()=>(0,a.X)(5,75)/10,Investigation:()=>(0,a.X)(10,40)/10,"Undercover Operation":()=>(0,a.X)(10,40)/10,"Sting Operation":()=>(0,a.X)(3,40)/10,Raid:()=>(0,a.X)(2,40)/10,"Stealth Retirement Operation":()=>(0,a.X)(1,20)/10,Assassination:()=>(0,a.X)(1,20)/10}},66621:(e,t,n)=>{"use strict";n.d(t,{I:()=>a});const a={helpList:["Use 'help [command]' to get more information about a particular Bladeburner console command."," "," automate [var] [val] [hi/low] Configure simple automation for Bladeburner tasks"," clear/cls Clear the console"," help [cmd] Display this help text, or help text for a specific command"," log [en/dis] [type] Enable or disable logging for events and actions"," skill [action] [name] Level or display info about your Bladeburner skills"," start [type] [name] Start a Bladeburner action/task"," stop Stops your current Bladeburner action/task"," "],automate:["Usage: automate [var] [val] [hi/low]"," ","A simple way to automate your Bladeburner actions. This console command can be used to automatically start an action when your stamina rises above a certain threshold, and automatically switch to another action when your stamina drops below another threshold."," "," automate status - Check the current status of your automation and get a brief description of what it'll do"," automate en - Enable the automation feature"," automate dis - Disable the automation feature"," ","There are four properties that must be set for this automation to work properly. Here is how to set them:"," "," automate stamina 100 high"," automate contract Tracking high"," automate stamina 50 low"," automate general 'Field Analysis' low"," ","Using the four console commands above will set the automation to perform Tracking contracts if your stamina is 100 or higher, and then switch to Field Analysis if your stamina drops below 50. Note that when setting the action, the name of the action is CASE-SENSITIVE. It must exactly match whatever the name is in the UI."," "],clear:["Usage: clear"," ","Clears the console"," "],cls:["Usage: cls"," ","Clears the console"," "],help:["Usage: help [command]"," ","Running 'help' with no arguments displays the general help text, which lists all console commands and a brief description of what they do. A command can be specified to get more specific help text about that particular command. For example:"," "," help automate"," ","will display specific information about using the automate console command"," "],log:["Usage: log [en/dis] [type]"," ","Enable or disable logging. By default, the results of completing actions such as contracts/operations are logged in the console. There are also random events that are logged in the console as well. The five categories of things that get logged are:"," ","[general, contracts, ops, blackops, events]"," ","The logging for these categories can be enabled or disabled like so:"," "," log dis contracts - Disables logging that occurs when contracts are completed"," log en contracts - Enables logging that occurs when contracts are completed"," log dis events - Disables logging for Bladeburner random events"," ","Logging can be universally enabled/disabled using the 'all' keyword:"," "," log dis all"," log en all"," "],skill:["Usage: skill [action] [name]"," ","Level or display information about your skills."," ","To display information about all of your skills and your multipliers, use:"," "," skill list"," ","To display information about a specific skill, specify the name of the skill afterwards. Note that the name of the skill is case-sensitive. Enter it exactly as seen in the UI. If the name of the skill has whitespace, enclose the name of the skill in double quotation marks:"," "," skill list Reaper"," skill list 'Digital Observer'"," ","This console command can also be used to level up skills:"," "," skill level [skill name]"," "],start:["Usage: start [type] [name]"," ","Start an action. An action is specified by its type and its name. The name is case-sensitive. It must appear exactly as it does in the UI. If the name of the action has whitespace, enclose it in double quotation marks. Valid action types include:"," ","[general, contract, op, blackop]"," ","Examples:"," "," start contract Tracking"," start op 'Undercover Operation'"," "],stop:["Usage: stop"," ","Stop your current action and go idle."," "]}},64860:(e,t,n)=>{"use strict";n.d(t,{D:()=>r,j:()=>o});var a=n(67294);const r=a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16px",height:"16px",viewBox:"0 0 166 132",style:{fill:"#adff2f"}},a.createElement("g",null,a.createElement("path",{d:"M132.658-0.18l-24.321,24.321c-7.915-2.71-16.342-4.392-25.087-4.392c-45.84,0-83,46-83,46 s14.1,17.44,35.635,30.844L12.32,120.158l12.021,12.021L144.68,11.841L132.658-0.18z M52.033,80.445 c-2.104-4.458-3.283-9.438-3.283-14.695c0-19.054,15.446-34.5,34.5-34.5c5.258,0,10.237,1.179,14.695,3.284L52.033,80.445z"}),a.createElement("path",{d:"M134.865,37.656l-18.482,18.482c0.884,3.052,1.367,6.275,1.367,9.612c0,19.055-15.446,34.5-34.5,34.5 c-3.337,0-6.56-0.483-9.611-1.367l-10.124,10.124c6.326,1.725,12.934,2.743,19.735,2.743c45.84,0,83-46,83-46 S153.987,50.575,134.865,37.656z"}))),o=a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16px",height:"16px",viewBox:"-22 0 511 511.99561",style:{fill:"#adff2f"}},a.createElement("path",{d:"m.496094 466.242188 39.902344-39.902344 45.753906 45.753906-39.898438 39.902344zm0 0"}),a.createElement("path",{d:"m468.421875 89.832031-1.675781-89.832031-300.265625 300.265625 45.753906 45.753906zm0 0"}),a.createElement("path",{d:"m95.210938 316.785156 16.84375 16.847656h.003906l83.65625 83.65625 22.753906-22.753906-100.503906-100.503906zm0 0"}),a.createElement("path",{d:"m101.445312 365.300781-39.902343 39.902344 45.753906 45.753906 39.902344-39.902343-39.90625-39.902344zm0 0"}))},39411:(e,t,n)=>{"use strict";n.d(t,{B:()=>r});var a=n(67294);const r={Investigation:{desc:a.createElement(a.Fragment,null,"As a field agent, investigate and identify Synthoid populations, movements, and operations.",a.createElement("br",null),a.createElement("br",null),"Successful Investigation ops will increase the accuracy of your synthoid data.",a.createElement("br",null),a.createElement("br",null),"You will NOT lose HP from failed Investigation ops.")},"Undercover Operation":{desc:a.createElement(a.Fragment,null,"Conduct undercover operations to identify hidden and underground Synthoid communities and organizations.",a.createElement("br",null),a.createElement("br",null),"Successful Undercover ops will increase the accuracy of your synthoid data.")},"Sting Operation":{desc:a.createElement(a.Fragment,null,"Conduct a sting operation to bait and capture particularly notorious Synthoid criminals.")},Raid:{desc:a.createElement(a.Fragment,null,"Lead an assault on a known Synthoid community. Note that there must be an existing Synthoid community in your current city in order for this Operation to be successful.")},"Stealth Retirement Operation":{desc:a.createElement(a.Fragment,null,"Lead a covert operation to retire Synthoids. The objective is to complete the task without drawing any attention. Stealth and discretion are key.")},Assassination:{desc:a.createElement(a.Fragment,null,"Assassinate Synthoids that have been identified as important, high-profile social and political leaders in the Synthoid communities.")}}},42115:(e,t,n)=>{"use strict";n.d(t,{x:()=>a});const a={BladesIntuition:"Blade's Intuition",Cloak:"Cloak",Marksman:"Marksman",WeaponProficiency:"Weapon Proficiency",ShortCircuit:"Short-Circuit",DigitalObserver:"Digital Observer",Tracer:"Tracer",Overclock:"Overclock",Reaper:"Reaper",EvasiveSystem:"Evasive System",Datamancer:"Datamancer",CybersEdge:"Cyber's Edge",HandsOfMidas:"Hands of Midas",Hyperdrive:"Hyperdrive"}},81527:(e,t,n)=>{"use strict";n.d(t,{j:()=>m});var a=n(67294),r=n(3862),o=n(81138),i=n(17575),s=n(30120),l=n(92557),c=n(29217),u=n(45111);function m(e){let{action:t,isActive:n,bladeburner:m,rerender:f}=e;const h=t.level1;return a.createElement(s.Z,{display:"flex",flexDirection:"row",alignItems:"center"},a.createElement(s.Z,{display:"flex"},a.createElement(i.Z,{title:"Contract"===t.constructor.name?a.createElement(o.Z,null,t.getSuccessesNeededForNextLevel(r.Z.ContractSuccessesPerLevel)," successes needed for next level"):a.createElement(o.Z,null,t.getSuccessesNeededForNextLevel(r.Z.OperationSuccessesPerLevel)," successes needed for next level")},a.createElement(o.Z,null,"Level: ",t.level," / ",t.maxLevel))),a.createElement(i.Z,{title:n?a.createElement(o.Z,null,"WARNING: changing the level will restart the Operation"):""},a.createElement("span",null,a.createElement(l.Z,{disabled:!h,onClick:function(){h&&(++t.level,n&&m.startAction(m.action),f())}},a.createElement(c.Z,null)))),a.createElement(i.Z,{title:n?a.createElement(o.Z,null,"WARNING: changing the level will restart the Operation"):""},a.createElement("span",null,a.createElement(l.Z,{disabled:!d,onClick:function(){d&&(--t.level,n&&m.startAction(m.action),f())}},a.createElement(u.Z,null)))))}},26124:(e,t,n)=>{"use strict";n.d(t,{L:()=>f});var a=n(67294),r=n(77362),o=n(97527),i=n(3421),s=n(95680),l=n(61609),c=n(94004),u=n(30527),m=n(30120);function f(e){const[t,n]=a.useState(0);return a.createElement(a.Fragment,null,a.createElement(c.Z,{variant:"fullWidth",value:t,onChange:function(e,t){n(t)}},a.createElement(u.Z,{label:"General"}),a.createElement(u.Z,{label:"Contracts"}),a.createElement(u.Z,{label:"Operations"}),a.createElement(u.Z,{label:"BlackOps"}),a.createElement(u.Z,{label:"Skills"})),a.createElement(m.Z,{sx:{p:1}},0===t&&a.createElement(r.N,{bladeburner:e.bladeburner}),1===t&&a.createElement(o.e,{bladeburner:e.bladeburner}),2===t&&a.createElement(i.Z,{bladeburner:e.bladeburner}),3===t&&a.createElement(s.v,{bladeburner:e.bladeburner}),4===t&&a.createElement(l.s,{bladeburner:e.bladeburner})))}},36793:(e,t,n)=>{"use strict";n.d(t,{Y:()=>l});var a=n(67294),r=n(81138),o=n(17575),i=n(30120),s=n(16056);function l(e){return a.createElement(i.Z,{display:"flex",flexDirection:"row",alignItems:"center"},a.createElement(o.Z,{title:a.createElement(r.Z,null,"Automatically increase operation level when possible")},a.createElement(r.Z,null," Autolevel:")),a.createElement(s.Z,{checked:e.action.autoLevel,onChange:function(t){e.action.autoLevel=t.target.checked,e.rerender()}}))}},12466:(e,t,n)=>{"use strict";n.d(t,{l:()=>y});var a=n(67294),r=n(22115),o=n(49802),i=n(55353),s=n(93826),l=n(73394),c=n(85866),u=n(49173),m=n(45529),f=n(68527),h=n(55837),d=n(81138),p=n(28881),g=n(88775);function y(e){const t=(0,g.S)();if(null!=e.bladeburner.blackops[e.action.name])return a.createElement(p.Z,{sx:{my:1,p:1}},a.createElement(d.Z,null,e.action.name," (COMPLETED)"));const n=e.bladeburner.action.type===i.M.BlackOperation&&e.action.name===e.bladeburner.action.name,y=e.action.getActionTime(e.bladeburner,u.J5),b=e.bladeburner.rank>=e.action.reqdRank,v=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),k=c.k[e.action.name];if(void 0===k)throw new Error(`Cannot find data for ${e.action.name}`);return a.createElement(p.Z,{sx:{my:1,p:1}},n?a.createElement(a.Fragment,null,a.createElement(a.Fragment,null,a.createElement(m.v,{value:e.action.name}),a.createElement(d.Z,null,"(IN PROGRESS - ",(0,r.$j)(v,0)," /"," ",(0,r.$j)(e.bladeburner.actionTimeToComplete,0),")"),a.createElement(d.Z,null,(0,s.x)({progress:v/e.bladeburner.actionTimeToComplete})))):a.createElement(a.Fragment,null,a.createElement(m.v,{value:e.action.name}),a.createElement(h.n,{bladeburner:e.bladeburner,type:i.M.BlackOperation,name:e.action.name,rerender:t}),a.createElement(l.i,{action:e.action,bladeburner:e.bladeburner})),a.createElement("br",null),a.createElement("br",null),a.createElement(d.Z,null,k.desc),a.createElement("br",null),a.createElement("br",null),a.createElement(d.Z,{color:b?"primary":"error"},"Required Rank: ",(0,r.$j)(e.action.reqdRank,0)),a.createElement("br",null),a.createElement(d.Z,null,a.createElement(f.R,{action:e.action,bladeburner:e.bladeburner}),a.createElement("br",null),"Time Required: ",(0,o.UF)(1e3*y)))}},75743:(e,t,n)=>{"use strict";n.d(t,{I:()=>i});var a=n(67294),r=n(62986),o=n(12466);function i(e){let t=[];for(const e of Object.keys(r.k))Object.hasOwn(r.k,e)&&t.push(r.k[e]);return t.sort((function(e,t){return e.reqdRank-t.reqdRank})),t=t.filter(((n,a)=>!(null==e.bladeburner.blackops[t[a].name]&&0!==a&&null==e.bladeburner.blackops[t[a-1].name]))),t=t.reverse(),a.createElement(a.Fragment,null,t.map((t=>a.createElement(o.l,{key:t.name,bladeburner:e.bladeburner,action:t}))))}},95680:(e,t,n)=>{"use strict";n.d(t,{v:()=>m});var a=n(67294),r=n(81138),o=n(56798),i=n(33244),s=n(75743),l=n(52947),c=n(24815),u=n(93989);function m(e){return a.createElement(a.Fragment,null,a.createElement(r.Z,null,"Black Operations (Black Ops) are special, one-time covert operations. Each Black Op must be unlocked successively by completing the one before it.",a.createElement("br",null),a.createElement("br",null),a.createElement("b",null,"Your ultimate goal to climb through the ranks of ",i.FactionName.Bladeburners," is to complete all of the Black Ops."),a.createElement("br",null),a.createElement("br",null),"Like normal operations, you may use a team for Black Ops. Failing a black op will incur heavy HP and rank losses."),e.bladeburner.blackops[i.BlackOperationName.OperationDaedalus]?a.createElement(o.Z,{sx:{my:1,p:1},onClick:()=>l.F.toPage(c.T3.BitVerse,{flume:!1,quick:!1})},a.createElement(u.q,{content:"Destroy w0rld_d34mon"})):a.createElement(s.I,{bladeburner:e.bladeburner}))}},59061:(e,t,n)=>{"use strict";n.d(t,{K:()=>c});var a=n(67294),r=n(33244),o=n(52947),i=n(24815),s=n(6681),l=n(39463);function c(){return a.createElement(s._,{lines:[`In the middle of the 21st century, ${r.FactionName.OmniTekIncorporated} advanced robot evolution `,"with their Synthoids (synthetic androids), a being virtually identical to a human.","------","Their sixth-generation Synthoids, called MK-VI, were stronger, faster, and more ","intelligent than humans. Many argued that the MK-VI Synthoids were the first ","example of sentient AI.","------",`Unfortunately, in 2070 a terrorist group called Ascendis Totalis hacked into ${r.FactionName.OmniTekIncorporated} and `,"uploaded a rogue AI into their Synthoid manufacturing facilities.","------","The MK-VI Synthoids infected by the rogue AI turned hostile toward humanity, initiating ","the deadliest conflict in human history. This dark chapter is now known as the Synthoid Uprising.","------","In the aftermath of the Uprising, further manufacturing of Synthoids with advanced AI ","was banned. MK-VI Synthoids that did not have the rogue Ascendis Totalis AI were ","allowed to continue their existence.","------","The intelligence community believes that not all of the rogue MK-VI Synthoids from the Uprising were ","found and destroyed, and that many of them are blending in as normal humans in society today. ",`As a result, many nations have created ${r.FactionName.Bladeburners} divisions, special units that are tasked with `,"investigating and dealing with Synthoid threats."],onDone:()=>{o.F.toPage(i.T3.Terminal),(0,l.X)(`Visit the National Security Agency (NSA) to apply for their ${r.FactionName.Bladeburners} division! You will need 100 of each combat stat before doing this.`)}})}},41858:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var a=n(67294),r=n(94332),o=n(78816),i=n(26124),s=n(49173),l=n(30120),c=n(88775);function u(){(0,c.S)(200);const e=s.J5.bladeburner;return e?a.createElement(l.Z,{display:"flex",flexDirection:"column"},a.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:"4fr 8fr",p:1}},a.createElement(r.j,{bladeburner:e}),a.createElement(o.M,{bladeburner:e})),a.createElement(i.L,{bladeburner:e})):a.createElement(a.Fragment,null)}},78816:(e,t,n)=>{"use strict";n.d(t,{M:()=>g});var a=n(67294),r=n(81055),o=n(28881),i=n(97212),s=n(10848),l=n(30120),c=n(81138),u=n(66351),m=n(77541),f=n(73327),h=n(88775);const d=(0,m.Z)((e=>(0,f.Z)({textfield:{margin:e.spacing(0),width:"100%"},input:{backgroundColor:e.colors.backgroundsecondary},nopadding:{padding:e.spacing(0)},preformatted:{whiteSpace:"pre-wrap",margin:e.spacing(0)},list:{padding:e.spacing(0),height:"100%"}})));function p(e){return a.createElement(s.ZP,{sx:{p:0}},a.createElement(c.Z,null,e.content))}function g(e){const t=d(),[n,i]=(0,a.useState)(""),s=(0,a.useRef)(null);(0,h.S)(1e3);const[m,f]=(0,a.useState)(e.bladeburner.consoleHistory.length);return a.createElement(o.Z,{sx:{p:1}},a.createElement(l.Z,{sx:{height:"60vh",paddingBottom:"8px",display:"flex",alignItems:"stretch",whiteSpace:"pre-wrap"},onClick:function(){s.current&&s.current.focus()}},a.createElement(l.Z,null,a.createElement(y,{entries:[...e.bladeburner.consoleLogs]}))),a.createElement(u.Z,{classes:{root:t.textfield},autoFocus:!0,tabIndex:1,type:"text",inputRef:s,value:n,onChange:function(e){i(e.target.value)},onKeyDown:function(t){t.key===r.F.ENTER&&(t.preventDefault(),n.length>0&&(e.bladeburner.postToConsole("> "+n),e.bladeburner.executeConsoleCommands(n),f(e.bladeburner.consoleHistory.length),i("")));const a=e.bladeburner.consoleHistory;if(t.key===r.F.UP_ARROW){let e=m;const n=a.length;if(0===n)return;(e<0||e>n)&&f(n),0!==e&&(e-=1),f(e);const r=a[e];t.currentTarget.value=r,i(r)}if(t.key===r.F.DOWN_ARROW){const e=m,n=a.length;if(0==n)return;if((e<0||e>n)&&f(n),e==n||e==n-1)f(n),t.currentTarget.value="";else{f(m+1);const e=a[m+1];t.currentTarget.value=e,i(e)}}},InputProps:{className:t.input,startAdornment:a.createElement(a.Fragment,null,a.createElement(c.Z,null,"> ")),spellCheck:!1}}))}function y(e){let{entries:t}=e;const n=(0,a.useRef)(null);return(0,a.useEffect)((()=>{n.current&&(n.current.scrollTop=n.current.scrollHeight)}),[t.length]),a.createElement(i.Z,{sx:{height:"100%",overflow:"auto",p:1},ref:n},t&&t.map(((e,t)=>a.createElement(p,{key:t,content:e}))))}},57337:(e,t,n)=>{"use strict";n.d(t,{C:()=>b});var a=n(67294),r=n(55353),o=n(93826),i=n(49802),s=n(18992),l=n(49173),c=n(68527),u=n(45529),m=n(81527),f=n(36793),h=n(55837),d=n(22115),p=n(81138),g=n(28881),y=n(88775);function b(e){const t=(0,y.S)(),n=e.bladeburner.action.type===r.M.Contract&&e.action.name===e.bladeburner.action.name,b=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),v=e.action.getActionTime(e.bladeburner,l.J5),k=s.a[e.action.name];if(void 0===k)throw new Error(`Cannot find data for ${e.action.name}`);return a.createElement(g.Z,{sx:{my:1,p:1}},n?a.createElement(a.Fragment,null,a.createElement(p.Z,null,a.createElement(u.v,{value:e.action.name})," (IN PROGRESS -"," ",(0,d.$j)(b,0)," /"," ",(0,d.$j)(e.bladeburner.actionTimeToComplete,0),")"),a.createElement(p.Z,null,(0,o.x)({progress:b/e.bladeburner.actionTimeToComplete}))):a.createElement(a.Fragment,null,a.createElement(u.v,{value:e.action.name}),a.createElement(h.n,{bladeburner:e.bladeburner,type:r.M.Contract,name:e.action.name,rerender:t})),a.createElement("br",null),a.createElement("br",null),a.createElement(m.j,{action:e.action,bladeburner:e.bladeburner,isActive:n,rerender:t}),a.createElement("br",null),a.createElement("br",null),a.createElement(p.Z,null,k.desc,a.createElement("br",null),a.createElement("br",null),a.createElement(c.R,{action:e.action,bladeburner:e.bladeburner}),a.createElement("br",null),"Time Required: ",(0,i.UF)(1e3*v),a.createElement("br",null),"Contracts remaining: ",(0,d.dp)(Math.floor(e.action.count)),a.createElement("br",null),"Successes: ",(0,d.dp)(e.action.successes),a.createElement("br",null),"Failures: ",(0,d.dp)(e.action.failures)),a.createElement("br",null),a.createElement(f.Y,{rerender:t,action:e.action}))}},5983:(e,t,n)=>{"use strict";n.d(t,{E:()=>o});var a=n(67294),r=n(57337);function o(e){const t=Object.keys(e.bladeburner.contracts),n=e.bladeburner.contracts;return a.createElement(a.Fragment,null,t.map((t=>a.createElement(r.C,{key:t,bladeburner:e.bladeburner,action:n[t]}))))}},97527:(e,t,n)=>{"use strict";n.d(t,{e:()=>i});var a=n(67294),r=n(5983),o=n(81138);function i(e){return a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Complete contracts in order to increase your Bladeburner rank and earn money. Failing a contract will cause you to lose HP, which can lead to hospitalization.",a.createElement("br",null),a.createElement("br",null),"You can unlock higher-level contracts by successfully completing them. Higher-level contracts are more difficult, but grant more rank, experience, and money."),a.createElement(r.E,{bladeburner:e.bladeburner}))}},41453:(e,t,n)=>{"use strict";n.d(t,{x:()=>g});var a=n(67294),r=n(55353),o=n(93826),i=n(22115),s=n(49802),l=n(53977),c=n(49173),u=n(45529),m=n(55837),f=n(81138),h=n(30120),d=n(28881),p=n(88775);function g(e){const t=(0,p.S)(),n=e.action.name===e.bladeburner.action.name,g=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),y=function(){switch(e.action.name){case"Training":case"Field Analysis":return 30;case"Diplomacy":case"Hyperbolic Regeneration Chamber":case"Incite Violence":return 60;case"Recruitment":return e.bladeburner.getRecruitmentTime(c.J5)}return-1}(),b="Recruitment"===e.action.name?Math.max(0,Math.min(e.bladeburner.getRecruitmentSuccessChance(c.J5),1)):-1,v=l.H[e.action.name];if(void 0===v)throw new Error(`Cannot find data for ${e.action.name}`);return a.createElement(d.Z,{sx:{my:1,p:1}},n?a.createElement(a.Fragment,null,a.createElement(u.v,{value:e.action.name}),a.createElement(f.Z,null,"(IN PROGRESS - ",(0,i.$j)(g,0)," /"," ",(0,i.$j)(e.bladeburner.actionTimeToComplete,0),")"),a.createElement(f.Z,null,(0,o.x)({progress:g/e.bladeburner.actionTimeToComplete}))):a.createElement(h.Z,{display:"flex",flexDirection:"row",alignItems:"center"},a.createElement(u.v,{value:e.action.name}),a.createElement(m.n,{bladeburner:e.bladeburner,type:r.M[e.action.name],name:e.action.name,rerender:t})),a.createElement("br",null),a.createElement("br",null),a.createElement(f.Z,null,v.desc),a.createElement("br",null),a.createElement("br",null),a.createElement(f.Z,null,"Time Required: ",(0,s.UF)(1e3*y),-1!==b&&a.createElement(a.Fragment,null,a.createElement("br",null),"Estimated success chance: ",(0,i.$j)(100*b,1),"%")))}},81168:(e,t,n)=>{"use strict";n.d(t,{T:()=>i});var a=n(67294),r=n(41453),o=n(67309);function i(e){const t=[];for(const e of Object.keys(o.H))Object.hasOwn(o.H,e)&&t.push(o.H[e]);return a.createElement(a.Fragment,null,t.map((t=>a.createElement(r.x,{key:t.name,bladeburner:e.bladeburner,action:t}))))}},77362:(e,t,n)=>{"use strict";n.d(t,{N:()=>i});var a=n(67294),r=n(81168),o=n(81138);function i(e){return a.createElement(a.Fragment,null,a.createElement(o.Z,null,"These are generic actions that will assist you in your Bladeburner duties."),a.createElement(r.T,{bladeburner:e.bladeburner}))}},65951:(e,t,n)=>{"use strict";n.d(t,{$:()=>s});var a=n(67294),r=n(64860),o=n(81138),i=n(17575);function s(){return a.createElement(i.Z,{title:a.createElement(o.Z,null,"This action involves retirement")},r.j)}},81492:(e,t,n)=>{"use strict";n.d(t,{j:()=>v});var a=n(67294),r=n(55353),o=n(93826),i=n(49802),s=n(68527),l=n(81527),c=n(36793),u=n(55837),m=n(73394),f=n(39411),h=n(49173),d=n(45529),p=n(22115),g=n(81138),y=n(28881),b=n(88775);function v(e){const t=(0,b.S)(),n=e.bladeburner.action.type===r.M.Operation&&e.action.name===e.bladeburner.action.name,v=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),k=e.action.getActionTime(e.bladeburner,h.J5),w=f.B[e.action.name];if(void 0===w)throw new Error(`Cannot find data for ${e.action.name}`);return a.createElement(y.Z,{sx:{my:1,p:1}},n?a.createElement(a.Fragment,null,a.createElement(g.Z,null,a.createElement(d.v,{value:e.action.name})," (IN PROGRESS -"," ",(0,p.$j)(v,0)," /"," ",(0,p.$j)(e.bladeburner.actionTimeToComplete,0),")"),a.createElement(g.Z,null,(0,o.x)({progress:v/e.bladeburner.actionTimeToComplete}))):a.createElement(a.Fragment,null,a.createElement(d.v,{value:e.action.name}),a.createElement(u.n,{bladeburner:e.bladeburner,type:r.M.Operation,name:e.action.name,rerender:t}),a.createElement(m.i,{action:e.action,bladeburner:e.bladeburner})),a.createElement("br",null),a.createElement("br",null),a.createElement(l.j,{action:e.action,bladeburner:e.bladeburner,isActive:n,rerender:t}),a.createElement("br",null),a.createElement("br",null),a.createElement(g.Z,null,w.desc,a.createElement("br",null),a.createElement("br",null),a.createElement(s.R,{action:e.action,bladeburner:e.bladeburner}),a.createElement("br",null),"Time Required: ",(0,i.UF)(1e3*k),a.createElement("br",null),"Operations remaining: ",(0,p.dp)(Math.floor(e.action.count)),a.createElement("br",null),"Successes: ",(0,p.dp)(e.action.successes),a.createElement("br",null),"Failures: ",(0,p.dp)(e.action.failures)),a.createElement("br",null),a.createElement(c.Y,{rerender:t,action:e.action}))}},96532:(e,t,n)=>{"use strict";n.d(t,{P:()=>o});var a=n(67294),r=n(81492);function o(e){const t=Object.keys(e.bladeburner.operations),n=e.bladeburner.operations;return a.createElement(a.Fragment,null,t.map((t=>a.createElement(r.j,{key:t,bladeburner:e.bladeburner,action:n[t]}))))}},3421:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var a=n(67294),r=n(96532),o=n(81138);function i(e){return a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Carry out operations for the Bladeburner division. Failing an operation will reduce your Bladeburner rank. It will also cause you to lose HP, which can lead to hospitalization. In general, operations are harder and more punishing than contracts, but are also more rewarding.",a.createElement("br",null),a.createElement("br",null),"Operations can affect the chaos level and Synthoid population of your current city. The exact effects vary between different Operations.",a.createElement("br",null),a.createElement("br",null),"For operations, you can use a team. You must first recruit team members. Having a larger team will improve your chances of success.",a.createElement("br",null),a.createElement("br",null),"You can unlock higher-level operations by successfully completing them. Higher-level operations are more difficult, but grant more rank and experience."),a.createElement(r.P,{bladeburner:e.bladeburner}))}},35322:(e,t,n)=>{"use strict";n.d(t,{o:()=>f});var a=n(67294),r=n(45529),o=n(22115),i=n(81138),s=n(92557),l=n(30120),c=n(28881),u=n(96540),m=n(50594);function f(e){const t=e.skill.name;let n=0;e.bladeburner.skills[t]&&!isNaN(e.bladeburner.skills[t])&&(n=e.bladeburner.skills[t]);const f=e.skill.calculateCost(n),h=e.bladeburner.skillPoints>=f,d=!!e.skill.maxLvl&&n>=e.skill.maxLvl;return a.createElement(c.Z,{sx:{my:1,p:1}},a.createElement(l.Z,{display:"flex",flexDirection:"row",alignItems:"center"},a.createElement(r.v,{variant:"h6",color:"primary",value:e.skill.name}),!h||d?a.createElement(s.Z,{disabled:!0},a.createElement(m.Z,null)):a.createElement(s.Z,{onClick:function(){e.bladeburner.skillPoints{"use strict";n.d(t,{Q:()=>i});var a=n(67294),r=n(35322),o=n(71099);function i(e){return a.createElement(a.Fragment,null,Object.keys(o.n).map((t=>a.createElement(r.o,{key:t,bladeburner:e.bladeburner,skill:o.n[t],onUpgrade:e.onUpgrade}))))}},61609:(e,t,n)=>{"use strict";n.d(t,{s:()=>l});var a=n(67294),r=n(39162),o=n(3862),i=n(22115),s=n(81138);function l(e){const t=(0,a.useState)(!1)[1],n=e.bladeburner.skillMultipliers;function l(e){return void 0!==e&&1!==e}return a.createElement(a.Fragment,null,a.createElement(s.Z,null,a.createElement("strong",null,"Skill Points: ",(0,i.dp)(e.bladeburner.skillPoints))),a.createElement(s.Z,null,"You will gain one skill point every ",o.Z.RanksPerSkillPoint," ranks.",a.createElement("br",null),"Note that when upgrading a skill, the benefit for that skill is additive. However, the effects of different skills with each other is multiplicative."),l(n.successChanceAll)&&a.createElement(s.Z,null,"Total Success Chance: x",(0,i.dp)(n.successChanceAll)),l(n.successChanceStealth)&&a.createElement(s.Z,null,"Stealth Success Chance: x",(0,i.dp)(n.successChanceStealth)),l(n.successChanceKill)&&a.createElement(s.Z,null,"Retirement Success Chance: x",(0,i.dp)(n.successChanceKill)),l(n.successChanceContract)&&a.createElement(s.Z,null,"Contract Success Chance: x",(0,i.dp)(n.successChanceContract)),l(n.successChanceOperation)&&a.createElement(s.Z,null,"Operation Success Chance: x",(0,i.dp)(n.successChanceOperation)),l(n.successChanceEstimate)&&a.createElement(s.Z,null,"Synthoid Data Estimate: x",(0,i.dp)(n.successChanceEstimate)),l(n.actionTime)&&a.createElement(s.Z,null,"Action Time: x",(0,i.dp)(n.actionTime)),l(n.effHack)&&a.createElement(s.Z,null,"Hacking Skill: x",(0,i.dp)(n.effHack)),l(n.effStr)&&a.createElement(s.Z,null,"Strength: x",(0,i.dp)(n.effStr)),l(n.effDef)&&a.createElement(s.Z,null,"Defense: x",(0,i.dp)(n.effDef)),l(n.effDex)&&a.createElement(s.Z,null,"Dexterity: x",(0,i.dp)(n.effDex)),l(n.effAgi)&&a.createElement(s.Z,null,"Agility: x",(0,i.dp)(n.effAgi)),l(n.effCha)&&a.createElement(s.Z,null,"Charisma: x",(0,i.dp)(n.effCha)),l(n.effInt)&&a.createElement(s.Z,null,"Intelligence: x",(0,i.dp)(n.effInt)),l(n.stamina)&&a.createElement(s.Z,null,"Stamina: x",(0,i.dp)(n.stamina)),l(n.money)&&a.createElement(s.Z,null,"Contract Money: x",(0,i.dp)(n.money)),l(n.expGain)&&a.createElement(s.Z,null,"Exp Gain: x",(0,i.dp)(n.expGain)),a.createElement(r.Q,{bladeburner:e.bladeburner,onUpgrade:()=>t((e=>!e))}))}},55837:(e,t,n)=>{"use strict";n.d(t,{n:()=>c});var a=n(67294),r=n(62783),o=n(49173),i=n(56798),s=n(33244),l=n(70671);function c(e){const t=e.bladeburner.getActionObject(new l.T({name:e.name,type:e.type}));if(null==t)throw new Error("Failed to get Operation Object for: "+e.name);let n=!1;return t.count<1&&(n=!0),"Raid"===e.name&&0===e.bladeburner.getCurrentCity().comms&&(n=!0),t instanceof r.u&&e.bladeburner.rank{"use strict";n.d(t,{j:()=>w});var a=n(67294),r=n(28881),o=n(30120),i=n(56798),s=n(17575),l=n(81138),c=n(49173),u=n(33244),m=n(49802),f=n(3862),h=n(72360),d=n(88775),p=n(22115),g=n(58427),y=n(52947),b=n(24815),v=n(94542),k=n(50286);function w(e){const[t,n]=(0,a.useState)(!1);(0,d.S)(1e3);const w=e.bladeburner.rank>=f.Z.RankNeededForFaction;return a.createElement(r.Z,{sx:{p:1,overflowY:"auto",overflowX:"hidden",wordBreak:"break-all"}},a.createElement(o.Z,{sx:{display:"flex",flexDirection:"column",gap:1,maxHeight:"60vh"}},a.createElement(o.Z,{sx:{alignSelf:"flex-start",width:"100%"}},a.createElement(i.Z,{onClick:()=>n(!0),sx:{width:"50%"}},"Travel"),a.createElement(s.Z,{title:w?"":a.createElement(l.Z,null,"Rank 25 required.")},a.createElement("span",null,a.createElement(i.Z,{disabled:!w,onClick:function(){if(!w)return;const e=g.i[u.FactionName.Bladeburners];e.isMember||(0,v.Bj)(e),y.F.toPage(b.T3.Faction,{faction:e})},sx:{width:"50%"}},"Faction"))),a.createElement(k.i,{open:t,onClose:()=>n(!1),bladeburner:e.bladeburner})),a.createElement(o.Z,{display:"flex"},a.createElement(s.Z,{title:a.createElement(l.Z,null,"Your rank within the Bladeburner division.")},a.createElement(l.Z,null,"Rank: ",(0,p.dp)(e.bladeburner.rank)))),a.createElement("br",null),a.createElement(o.Z,{display:"flex"},a.createElement(s.Z,{title:a.createElement(l.Z,null,"Performing actions will use up your stamina.",a.createElement("br",null),a.createElement("br",null),"Your max stamina is determined primarily by your agility stat.",a.createElement("br",null),a.createElement("br",null),"Your stamina gain rate is determined by both your agility and your max stamina. Higher max stamina leads to a higher gain rate.",a.createElement("br",null),a.createElement("br",null),"Once your stamina falls below 50% of its max value, it begins to negatively affect the success rate of your contracts/operations. This penalty is shown in the overview panel. If the penalty is 15%, then this means your success rate would be multiplied by 85% (100 - 15).",a.createElement("br",null),a.createElement("br",null),"Your max stamina and stamina gain rate can also be increased by training, or through skills and Augmentation upgrades.")},a.createElement(l.Z,null,"Stamina: ",(0,p.dp)(e.bladeburner.stamina)," / ",(0,p.dp)(e.bladeburner.maxStamina)))),a.createElement(l.Z,null,"Stamina Penalty: ",(0,p.$j)(100*(1-e.bladeburner.calculateStaminaPenalty()),1),"%"),a.createElement("br",null),a.createElement(l.Z,null,"Team Size: ",(0,p.$j)(e.bladeburner.teamSize,0)),a.createElement(l.Z,null,"Team Members Lost: ",(0,p.$j)(e.bladeburner.teamLost,0)),a.createElement("br",null),a.createElement(l.Z,null,"Num Times Hospitalized: ",e.bladeburner.numHosp),a.createElement(l.Z,null,"Money Lost From Hospitalizations: ",a.createElement(h.W,{money:e.bladeburner.moneyLost})),a.createElement("br",null),a.createElement(l.Z,null,"Current City: ",e.bladeburner.city),a.createElement(o.Z,{display:"flex"},a.createElement(s.Z,{title:a.createElement(l.Z,null,"This is your Bladeburner division's estimate of how many Synthoids exist in your current city. An accurate population count increases success rate estimates.")},a.createElement(l.Z,null,"Est. Synthoid Population: ",(0,p.B1)(e.bladeburner.getCurrentCity().popEst)))),a.createElement(o.Z,{display:"flex"},a.createElement(s.Z,{title:a.createElement(l.Z,null,"This is your Bladeburner division's estimate of how many Synthoid communities exist in your current city.")},a.createElement(l.Z,null,"Synthoid Communities: ",(0,p.$j)(e.bladeburner.getCurrentCity().comms,0)))),a.createElement(o.Z,{display:"flex"},a.createElement(s.Z,{title:a.createElement(l.Z,null,"The city's chaos level due to tensions and conflicts between humans and Synthoids. Having too high of a chaos level can make contracts and operations harder.")},a.createElement(l.Z,null,"City Chaos: ",(0,p.dp)(e.bladeburner.getCurrentCity().chaos)))),a.createElement("br",null),e.bladeburner.storedCycles/f.Z.CyclesPerSecond*1e3>15e3&&a.createElement(a.Fragment,null,a.createElement(o.Z,{display:"flex"},a.createElement(s.Z,{title:a.createElement(l.Z,null,"You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by browser). Bonus time makes the Bladeburner mechanic progress faster, up to 5x the normal speed.")},a.createElement(l.Z,null,"Bonus time:"," ",(0,m.UF)(e.bladeburner.storedCycles/f.Z.CyclesPerSecond*1e3)))),a.createElement("br",null)),a.createElement(l.Z,null,"Skill Points: ",(0,p.dp)(e.bladeburner.skillPoints)),a.createElement("br",null),a.createElement(l.Z,null,"Aug. Success Chance mult: ",(0,p.$j)(100*c.J5.mults.bladeburner_success_chance,1),"%",a.createElement("br",null),"Aug. Max Stamina mult: ",(0,p.$j)(100*c.J5.mults.bladeburner_max_stamina,1),"%",a.createElement("br",null),"Aug. Stamina Gain mult: ",(0,p.$j)(100*c.J5.mults.bladeburner_stamina_gain,1),"%",a.createElement("br",null),"Aug. Field Analysis mult: ",(0,p.$j)(100*c.J5.mults.bladeburner_analysis,1),"%")))}},30704:(e,t,n)=>{"use strict";n.d(t,{X:()=>s});var a=n(67294),r=n(64860),o=n(81138),i=n(17575);function s(){return a.createElement(i.Z,{title:a.createElement(o.Z,null,"This action involves stealth")},r.D)}},68527:(e,t,n)=>{"use strict";n.d(t,{R:()=>l});var a=n(67294),r=n(22115),o=n(30704),i=n(65951),s=n(49173);function l(e){const t=e.action.getEstSuccessChance(e.bladeburner,s.J5);let n=a.createElement(a.Fragment,null);return n=t[0]===t[1]?a.createElement(a.Fragment,null,(0,r.$j)(100*t[0],1),"%"):a.createElement(a.Fragment,null,(0,r.$j)(100*t[0],1),"% ~"," ",(0,r.$j)(100*t[1],1),"%"),a.createElement(a.Fragment,null,"Estimated success chance: ",n," ",e.action.isStealth?a.createElement(o.X,null):a.createElement(a.Fragment,null),e.action.isKill?a.createElement(i.$,null):a.createElement(a.Fragment,null))}},73394:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var a=n(67294),r=n(71572),o=n(22115),i=n(56798);function s(e){const[t,n]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,a.createElement(i.Z,{disabled:0===e.bladeburner.teamSize,onClick:()=>n(!0)},"Set Team Size (Curr Size: ",(0,o.$j)(e.action.teamCount,0),")"),a.createElement(r.K,{open:t,onClose:()=>n(!1),action:e.action,bladeburner:e.bladeburner}))}},71572:(e,t,n)=>{"use strict";n.d(t,{K:()=>c});var a=n(67294),r=n(39463),o=n(48672),i=n(81138),s=n(56798),l=n(66351);function c(e){const[t,n]=(0,a.useState)();return a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(i.Z,null,"Enter the amount of team members you would like to take on this Op. If you do not have the specified number of team members, then as many as possible will be used. Note that team members may be lost during operations."),a.createElement(l.Z,{autoFocus:!0,type:"number",placeholder:"Team size",value:t,onChange:function(t){const a=parseFloat(t.target.value);a>e.bladeburner.teamSize?n(e.bladeburner.teamSize):n(a)}}),a.createElement(s.Z,{sx:{mx:2},onClick:function(){if(void 0===t)return;const n=Math.round(t);isNaN(n)||n<0?(0,r.X)("Invalid value entered for number of Team Members (must be numeric, positive)"):e.action.teamCount=n,e.onClose()}},"Confirm"))}},50286:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var a=n(67294),r=n(81138),o=n(56798),i=n(33244),s=n(86091),l=n(48672),c=n(51087);function u(e){function t(t){e.bladeburner.city=t,e.onClose()}return a.createElement(l.u,{open:e.open,onClose:e.onClose},a.createElement(a.Fragment,null,a.createElement(r.Z,null,"Travel to a different city for your Bladeburner activities. This does not cost any money. The city you are in for your Bladeburner duties does not affect your location in the game otherwise."),c.Z.DisableASCIIArt?Object.values(i.CityName).map((e=>a.createElement(o.Z,{key:e,onClick:()=>t(e)},e))):a.createElement(s.b,{currentCity:e.bladeburner.city,onTravel:t})))}},78758:(e,t,n)=>{"use strict";n.d(t,{Z:()=>y,y:()=>v});var a=n(67294),r=n(49173),o=n(72360),i=n(19637),s=n(24003),l=n(6306),c=n(40826),u=n(85257),m=n(56798),f=n(28881),h=n(30120),d=n(81138),p=n(66351);const g=1e8,y=5;var b;!function(e){e.Pending="",e.PlayerWon="You won!",e.PlayerWonByBlackjack="You Won! Blackjack!",e.DealerWon="You lost!",e.Tie="Push! (Tie)"}(b||(b={}));class v extends a.Component{constructor(e){super(e),this.deck=new s.$(y);const t=1e6;this.state={playerHand:new l.P([]),dealerHand:new l.P([]),bet:t,betInput:String(t),gameInProgress:!1,result:b.Pending,gains:0,wagerInvalid:!1,wagerInvalidHelperText:""}}canStartGame=()=>{const{bet:e}=this.state;return r.J5.canAfford(e)};startGame=()=>{if(!this.canStartGame()||(0,i.Z)())return;(0,i.p)(-this.state.bet);const e=new l.P([this.deck.safeDrawCard(),this.deck.safeDrawCard()]),t=new l.P([this.deck.safeDrawCard(),this.deck.safeDrawCard()]);this.setState({playerHand:e,dealerHand:t,gameInProgress:!0,result:b.Pending}),21===this.getTrueHandValue(e)?21===this.getTrueHandValue(t)?this.finishGame(b.Tie):this.finishGame(b.PlayerWonByBlackjack):21===this.getTrueHandValue(t)&&this.finishGame(b.DealerWon)};getHandValue=e=>{let t=[0];for(let n=0;n=10?t.map((e=>e+10)):1===a?t.flatMap((e=>[e+1,e+11])):t.map((e=>e+a))}return t};getTrueHandValue=e=>{const t=this.getHandValue(e),n=t.filter((e=>e<=21));return n.length>0?(n.sort(((e,t)=>e-t)),n[n.length-1]):t[0]};getHandDisplayValues=e=>{const t=this.getHandValue(e);return this.isHandBusted(e)?[...new Set([t[0]])]:[...new Set(t.filter((e=>e<=21)))]};isHandBusted=e=>this.getTrueHandValue(e)>21;playerHit=e=>{if(!e.isTrusted)return;const t=this.state.playerHand.addCards(this.deck.safeDrawCard());this.setState({playerHand:t}),this.isHandBusted(t)&&this.finishGame(b.DealerWon)};playerStay=e=>{if(!e.isTrusted)return;let t=this.state.dealerHand,n=this.getTrueHandValue(t);for(;n<=16;)t=t.addCards(this.deck.safeDrawCard()),n=this.getTrueHandValue(t);if(this.setState({dealerHand:t}),this.isHandBusted(t))this.finishGame(b.PlayerWon);else{const e=this.getTrueHandValue(t),n=this.getTrueHandValue(this.state.playerHand);if(e>21||n>21)throw new Error("Someone busted when not expected to");n>e?this.finishGame(b.PlayerWon):n{const t=e===b.DealerWon?0:e===b.Tie?this.state.bet:e===b.PlayerWon?2*this.state.bet:e===b.PlayerWonByBlackjack?2.5*this.state.bet:(()=>{throw new Error(`Unexpected result: ${e}`)})();(0,i.p)(t),this.setState({gameInProgress:!1,result:e,gains:this.state.gains+t-this.state.bet})};wagerOnChange=e=>{const t=e.target.value,n=Math.round(parseFloat(t));isNaN(n)?this.setState({bet:0,betInput:t,wagerInvalid:!0,wagerInvalidHelperText:"Not a valid number"}):n<=0?this.setState({bet:0,betInput:t,wagerInvalid:!0,wagerInvalidHelperText:"Must bet a positive amount"}):n>g?this.setState({bet:0,betInput:t,wagerInvalid:!0,wagerInvalidHelperText:"Exceeds max bet"}):r.J5.canAfford(n)?this.setState({bet:n,betInput:t,wagerInvalid:!1,wagerInvalidHelperText:"",result:b.Pending}):this.setState({bet:0,betInput:t,wagerInvalid:!0,wagerInvalidHelperText:"Not enough money"})};startOnClick=e=>{e.isTrusted&&(this.state.wagerInvalid||this.startGame())};render(){const{betInput:e,playerHand:t,dealerHand:n,gameInProgress:r,result:i,wagerInvalid:s,wagerInvalidHelperText:l,gains:y}=this.state,v=this.getHandDisplayValues(t),k=this.getHandDisplayValues(n);return a.createElement(a.Fragment,null,a.createElement(h.Z,null,a.createElement(p.Z,{value:e,label:a.createElement(a.Fragment,null,"Wager (Max: ",a.createElement(o.W,{money:g}),")"),disabled:r,onChange:this.wagerOnChange,error:s,helperText:s?l:"",type:"number",style:{width:"200px"},InputProps:{startAdornment:a.createElement(c.Z,{position:"start"},a.createElement(d.Z,null,"$"))}}),a.createElement(d.Z,null,"Total earnings this session: ",a.createElement(o.W,{money:y}))),r?a.createElement(a.Fragment,null,a.createElement(m.Z,{onClick:this.playerHit},"Hit"),a.createElement(m.Z,{color:"secondary",onClick:this.playerStay},"Stay")):a.createElement(m.Z,{onClick:this.startOnClick,disabled:s||!this.canStartGame()},"Start"),(r||i!==b.Pending)&&a.createElement(a.Fragment,null,a.createElement(h.Z,{display:"flex"},a.createElement(f.Z,{elevation:2},a.createElement(d.Z,null,"Player"),t.cards.map(((e,t)=>a.createElement(u.P,{card:e,key:t}))),a.createElement(d.Z,null,"Count:"," ",v.map(((e,t)=>a.createElement("span",{key:t},e))).reduce(((e,t)=>[e," or ",t]))))),a.createElement("br",null),a.createElement(h.Z,{display:"flex"},a.createElement(f.Z,{elevation:2},a.createElement(d.Z,null,"Dealer"),n.cards.map(((e,t)=>a.createElement(u.P,{card:e,hidden:r&&0!==t,key:t}))),!r&&a.createElement(a.Fragment,null,a.createElement(d.Z,null,"Count:"," ",k.map(((e,t)=>a.createElement("span",{key:t},e))).reduce(((e,t)=>[e," or ",t]))))))),i!==b.Pending&&a.createElement(d.Z,null,i," ",i===b.PlayerWon&&a.createElement(o.W,{money:this.state.bet}),i===b.PlayerWonByBlackjack&&a.createElement(o.W,{money:1.5*this.state.bet}),i===b.DealerWon&&a.createElement(o.W,{money:-this.state.bet})))}}},1851:(e,t,n)=>{"use strict";let a;n.d(t,{Z:()=>r,h:()=>a}),function(e){e.Clubs="clubs",e.Diamonds="diamonds",e.Hearts="hearts",e.Spades="spades"}(a||(a={}));class r{constructor(e,t){if(this.value=e,this.suit=t,e<1||e>13)throw new Error(`Card instantiated with improper value: ${e}`)}formatValue(){switch(this.value){case 1:return"A";case 11:return"J";case 12:return"Q";case 13:return"K";default:return`${this.value}`}}isRedSuit(){return this.suit===a.Hearts||this.suit===a.Diamonds}getStringRepresentation(){return`${this.formatValue()} of ${this.suit}`}}},24003:(e,t,n)=>{"use strict";n.d(t,{$:()=>o});var a=n(1851),r=n(96486);class o{cards=[];constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.numDecks=e,this.reset()}shuffle(){this.cards=(0,r.shuffle)(this.cards)}drawCard(){if(0==this.cards.length)throw new Error("Tried to draw card from empty deck");return this.cards.shift()}safeDrawCard(){return 0===this.cards.length&&this.reset(),this.drawCard()}reset(){this.cards=[];for(let e=1;e<=13;++e)for(let t=0;t{"use strict";n.d(t,{P:()=>a});class a{constructor(e){this.cards=e}addCards(){for(var e=arguments.length,t=new Array(e),n=0;n=this.cards.length)throw new Error(`Tried to remove invalid card from Hand by index: ${e}`);return new a([...this.cards.slice().splice(e,1)])}}},85257:(e,t,n)=>{"use strict";n.d(t,{P:()=>c});var a=n(67294),r=n(1851),o=n(77541),i=n(73327),s=n(28881);const l=(0,o.Z)((()=>(0,i.Z)({card:{padding:"10px",border:"solid 1px #808080",backgroundColor:"white",display:"inline-block",borderRadius:"10px",fontSize:"18.5px",textAlign:"center",margin:"3px",fontWeight:"bold"},red:{color:"red"},black:{color:"black"},value:{fontSize:"20px",fontFamily:"sans-serif"}}))),c=e=>{let{card:t,hidden:n}=e;const o=l();let i;switch(t.suit){case r.h.Clubs:i=a.createElement("span",null,"♣");break;case r.h.Diamonds:i=a.createElement("span",null,"♦");break;case r.h.Hearts:i=a.createElement("span",null,"♥");break;case r.h.Spades:i=a.createElement("span",null,"♠");break;default:throw new Error(`MissingCaseException: ${t.suit}`)}return a.createElement(s.Z,{className:`${o.card} ${t.isRedSuit()?o.red:o.black}`},a.createElement(a.Fragment,null,a.createElement("span",{className:o.value},n?" - ":t.formatValue()),a.createElement("span",null,n?" - ":i)))}},58636:(e,t,n)=>{"use strict";n.d(t,{P:()=>m});var a=n(67294),r=n(12450),o=n(19637),i=n(62719),s=n(81138),l=n(66351),c=n(56798),u=n(30120);function m(){const[e,t]=(0,a.useState)(1e3),[n,m]=(0,a.useState)(a.createElement("span",null," ")),[f,h]=(0,a.useState)(""),[d,p]=(0,a.useState)(!1);function g(t){if((0,o.Z)())return;let n;n=r.P7.random()<.5?"H":"T";const i=t===n;m(a.createElement(u.Z,{display:"flex"},a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"},color:i?"primary":"error"},n))),h(i?" win!":"lose!"),p(!0),setTimeout((()=>p(!1)),250),i?(0,o.p)(e):(0,o.p)(-e),(0,o.Z)()}return a.createElement(a.Fragment,null,a.createElement(s.Z,null,"Result:")," ",n,a.createElement(u.Z,{display:"flex",alignItems:"center"},a.createElement(l.Z,{type:"number",onChange:function(e){let n=parseInt(e.currentTarget.value);isNaN(n)&&(n=0),n>1e4&&(n=1e4),n<0&&(n=0),t(n)},InputProps:{endAdornment:a.createElement(a.Fragment,null,a.createElement(c.Z,{onClick:(0,i.V)((()=>g("H"))),disabled:d},"Head!"),a.createElement(c.Z,{onClick:(0,i.V)((()=>g("T"))),disabled:d},"Tail!"))}})),a.createElement(s.Z,{variant:"h3"},f))}},19637:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i,p:()=>o});var a=n(49173),r=n(39463);function o(e){a.J5.gainMoney(e,"casino")}function i(){const e=a.J5.getCasinoWinnings()>1e10;return e&&(0,r.X)("Alright cheater get out of here. You're not allowed here anymore."),e}},12450:(e,t,n)=>{"use strict";n.d(t,{P7:()=>a,e7:()=>r,h3:()=>o});const a=new class{m=1024;a=341;c=1;constructor(){this.x=0,this.reset()}step(){this.x=(this.a*this.x+this.c)%this.m}random(){return this.step(),this.x/this.m}reset(){this.x=(new Date).getTime()%this.m}};class r{s1=0;s2=0;s3=0;constructor(e){const t=e/1e3%3e4;this.s1=t,this.s2=t,this.s3=t}step(){this.s1=171*this.s1%30269,this.s2=172*this.s2%30307,this.s3=170*this.s3%30323}random(){return this.step(),(this.s1/30269+this.s2/30307+this.s3/30323)%1}}function o(e){let t=1779033703^e.length;for(let n=0;n>>19;const n=()=>(t=Math.imul(t^t>>>16,2246822507),t=Math.imul(t^t>>>13,3266489909),(t^=t>>>16)>>>0);let a=n(),r=n(),o=n(),i=n();return()=>{a>>>=0,r>>>=0,o>>>=0,i>>>=0;let e=a+r|0;return a=r^r>>>9,r=o+(o<<3)|0,o=o<<21|o>>>11,i=i+1|0,e=e+i|0,o=o+e|0,(e>>>0)/4294967296}}},18037:(e,t,n)=>{"use strict";n.d(t,{c:()=>p});var a=n(67294),r=n(72360),o=n(19637),i=n(12450),s=n(62719),l=n(81138),c=n(56798),u=n(66351);const m=1e7,f=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36],h={Red:{match:e=>f.includes(e),payout:1},Black:{match:e=>0!==e&&!f.includes(e),payout:1},Odd:{match:e=>0!==e&&e%2==1,payout:1},Even:{match:e=>0!==e&&e%2==0,payout:1},High:{match:e=>0!==e&&e>18,payout:1},Low:{match:e=>0!==e&&e<19,payout:1},Third1:{match:e=>0!==e&&e<=12,payout:2},Third2:{match:e=>0!==e&&e>=13&&e<=24,payout:2},Third3:{match:e=>0!==e&&e>=25,payout:2}};function d(e){return{match:t=>e===t,payout:36}}function p(){const[e]=(0,a.useState)(new i.e7((new Date).getTime())),[t,n]=(0,a.useState)(1e3),[f,p]=(0,a.useState)(!0),[g,y]=(0,a.useState)("waiting"),[b,v]=(0,a.useState)(0),[k,w]=(0,a.useState)(!0);function E(){k||v(Math.floor(37*Math.random()))}function S(n){(0,o.Z)()||(p(!1),w(!1),y("playing"),setTimeout((()=>{let i=Math.floor(37*e.random()),s=a.createElement(a.Fragment,null),l=0,c=n.match(i);if(c&&Math.random()>.9)for(;c;)i=Math.floor(37*e.random()),c=n.match(i);c?(l=t*n.payout,s=a.createElement(a.Fragment,null,"won ",a.createElement(r.W,{money:l}))):(l=-t,s=a.createElement(a.Fragment,null,"lost ",a.createElement(r.W,{money:-l}))),(0,o.p)(l),p(!0),w(!0),y(s),v(i),(0,o.Z)()}),1600))}return(0,a.useEffect)((()=>{const e=window.setInterval(E,50);return()=>clearInterval(e)})),a.createElement(a.Fragment,null,a.createElement(l.Z,{variant:"h4"},function(){if(0===b)return"0";const e=function(e){return[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36].includes(e)}(b)?"R":"B";return`${b}${e}`}()),a.createElement(u.Z,{type:"number",onChange:function(e){let t=parseInt(e.currentTarget.value);isNaN(t)&&(t=0),t>m&&(t=m),t<0&&(t=0),n(t)},placeholder:"Amount to play",disabled:!f}),a.createElement(l.Z,{variant:"h4"},g),a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(3))))},"3")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(6))))},"6")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(9))))},"9")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(12))))},"12")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(15))))},"15")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(18))))},"18")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(21))))},"21")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(24))))},"24")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(27))))},"27")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(30))))},"30")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(33))))},"33")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(36))))},"36"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(2))))},"2")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(5))))},"5")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(8))))},"8")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(11))))},"11")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(14))))},"14")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(17))))},"17")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(20))))},"20")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(23))))},"23")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(26))))},"26")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(29))))},"29")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(32))))},"32")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(35))))},"35"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(1))))},"1")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(4))))},"4")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(7))))},"7")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(10))))},"10")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(13))))},"13")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(16))))},"16")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(19))))},"19")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(22))))},"22")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(25))))},"25")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(28))))},"28")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(31))))},"31")),a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(34))))},"34"))),a.createElement("tr",null,a.createElement("td",{colSpan:4},a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Third1)))},"1 to 12")),a.createElement("td",{colSpan:4},a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Third2)))},"13 to 24")),a.createElement("td",{colSpan:4},a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Third3)))},"25 to 36"))),a.createElement("tr",null,a.createElement("td",{colSpan:2},a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Red)))},"Red")),a.createElement("td",{colSpan:2},a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Black)))},"Black")),a.createElement("td",{colSpan:2},a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Odd)))},"Odd")),a.createElement("td",{colSpan:2},a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Even)))},"Even")),a.createElement("td",{colSpan:2},a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.High)))},"High")),a.createElement("td",{colSpan:2},a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(h.Low)))},"Low"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(c.Z,{disabled:!f,onClick:(0,s.V)((()=>S(d(0))))},"0"))))))}},67324:(e,t,n)=>{"use strict";n.d(t,{F:()=>g});var a=n(67294),r=n(49173),o=n(72360),i=n(12450),s=n(19637),l=n(62719),c=n(81138),u=n(66351),m=n(56798);const f=["D","C","$","?","♥","A","C","B","C","E","B","E","C","*","D","♥","B","A","A","A","C","A","D","B","E","?","D","*","@","♥","B","E","?"];function h(e,t){switch(e){case"$":return[20,200,1e3][t];case"@":return[8,80,400][t];case"♥":case"?":return[6,20,150][t];case"D":case"E":return[1,8,30][t];default:return[1,5,20][t]}}const d=[[[0,0],[0,1],[0,2],[0,3],[0,4]],[[1,0],[1,1],[1,2],[1,3],[1,4]],[[2,0],[2,1],[2,2],[2,3],[2,4]],[[2,0],[1,1],[0,2],[1,3],[2,4]],[[0,0],[1,1],[2,2],[1,3],[0,4]],[[0,0],[1,1],[1,2],[1,3],[0,4]],[[2,0],[1,1],[1,2],[1,3],[2,4]],[[1,0],[0,1],[0,2],[0,3],[1,4]],[[1,0],[2,1],[2,2],[2,3],[1,4]]],p=1e6;function g(){const[e]=(0,a.useState)(new i.e7(r.J5.totalPlaytime)),[t,n]=(0,a.useState)([0,0,0,0,0]),[g,y]=(0,a.useState)([0,0,0,0,0]),[b,v]=(0,a.useState)(1e3),[k,w]=(0,a.useState)(!0),[E,S]=(0,a.useState)("waiting");function C(){let e=!1;const r=t.slice();for(let t=0;t=0?r[t]-1:f.length-1,e=!0);n(r),e&&r.every(((e,t)=>e===g[t]))&&function(e){const t=function(t){const n=[];for(const a of t)n.push(e[a[0]][a[1]]);return n},n=function(e){let t=1;for(let n=1;n0?"gained":"lost"," ",a.createElement(o.W,{money:Math.abs(r)}))),w(!0),(0,s.Z)()}(x(r,f))}function x(e,t){return[[t[(e[0]+t.length-1)%t.length],t[(e[1]+t.length-1)%t.length],t[(e[2]+t.length-1)%t.length],t[(e[3]+t.length-1)%t.length],t[(e[4]+t.length-1)%t.length]],[t[e[0]],t[e[1]],t[e[2]],t[e[3]],t[e[4]]],[t[(e[0]+1)%t.length],t[(e[1]+1)%t.length],t[(e[2]+1)%t.length],t[(e[3]+1)%t.length],t[(e[4]+1)%t.length]]]}function N(){y([Math.floor(e.random()*f.length),Math.floor(e.random()*f.length),Math.floor(e.random()*f.length),Math.floor(e.random()*f.length),Math.floor(e.random()*f.length)])}(0,a.useEffect)((()=>{const e=window.setInterval(C,50);return()=>clearInterval(e)}));const M=x(t,f);return a.createElement(a.Fragment,null,a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"+———————————————————————+"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | ",M[0][0]," | ",M[0][1]," | ",M[0][2]," | ",M[0][3]," | ",M[0][4]," | |"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | | | | | | |"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | ",f[t[0]]," | ",f[t[1]]," | ",f[t[2]]," | ",f[t[3]]," | ",f[t[4]]," | |"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | | | | | | |"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | ",f[(t[0]+1)%f.length]," | ",f[(t[1]+1)%f.length]," | ",f[(t[2]+1)%f.length]," | ",f[(t[3]+1)%f.length]," | ",f[(t[4]+1)%f.length]," | |"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"+———————————————————————+"),a.createElement(u.Z,{type:"number",onChange:function(e){let t=parseInt(e.currentTarget.value);isNaN(t)&&(t=0),t>p&&(t=p),t<0&&(t=0),v(t)},placeholder:"Amount to play",disabled:!k,InputProps:{endAdornment:a.createElement(m.Z,{onClick:(0,l.V)((function(){(0,s.Z)()||(S("playing"),(0,s.p)(-b),k&&(y([-1,-1,-1,-1,-1]),w(!1),setTimeout(N,2e3*e.random()+1e3)))})),disabled:!k},"Spin!")}}),a.createElement(c.Z,{variant:"h4"},E),a.createElement(c.Z,null,"Pay lines"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"----- ····· ·····"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"····· ----- ·····"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"····· ····· -----"),a.createElement("br",null),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"··^·· \\···/ \\···/"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"·/·\\· ·\\·/· ·---·"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"/···\\ ··v·· ·····"),a.createElement("br",null),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"····· ·---· ·····"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"·---· /···\\ \\···/"),a.createElement(c.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"/···\\ ····· ·---·"))}},62719:(e,t,n)=>{"use strict";function a(e){return function(t){t.isTrusted&&e()}}n.d(t,{V:()=>a})},58297:(e,t,n)=>{"use strict";n.d(t,{Pt:()=>f,_q:()=>m,a9:()=>h,ao:()=>d});var a=n(62725),r=n(58427),o=n(49173),i=n(97467),s=n(40425),l=n(89916),c=n(92666),u=n(61835);function m(){const e=p(),t=g(),n=y(),r=b(n,t),o=new a.f(r,e,t);n.addContract(o)}function f(){const e=p(),t=g(),n=o.J5.getHomeComputer(),r=b(n,t),i=new a.f(r,e,t);n.addContract(i)}const h=e=>{if(!a.Th[e])throw new Error(`Invalid problem type: '${e}'`);const t=o.J5.getHomeComputer(),n=b(t),r=new a.f(n,e,null);t.addContract(r)};function d(e){let t;const n=Object.keys(a.Th);t=e.problemType&&n.includes(e.problemType)?e.problemType:p();const r=g();let o;null!=e.server?(o=(0,i.WT)(e.server),null==o&&(o=y())):o=y();const s=e.fn?e.fn:b(o,r),l=new a.f(s,t,r);o.addContract(l)}function p(){const e=Object.keys(a.Th);return e[(0,c.X)(0,e.length-1)]}function g(){const e=function(e){let t=e;const n=o.J5.factions.filter((e=>{try{return r.i[e].getInfo().offerHackingWork}catch(e){return console.error(`Error when trying to filter Hacking Factions for Coding Contract Generation: ${e}`),!1}}));return t===a.$O.FactionReputation&&0===n.length&&(t=a.$O.CompanyReputation),t===a.$O.FactionReputationAll&&0===n.length&&(t=a.$O.CompanyReputation),t===a.$O.CompanyReputation&&0===Object.keys(o.J5.jobs).length&&(t=a.$O.Money),t}((0,c.X)(0,a.$O.Money)),t=o.J5.factions.filter((e=>r.i[e].getInfo().offerHackingWork));switch(e){case a.$O.FactionReputation:{const n=t.length;return{type:e,name:t[(0,c.X)(0,n-1)]}}case a.$O.CompanyReputation:{const e=Object.keys(o.J5.jobs);return e.length>0?{type:a.$O.CompanyReputation,name:e[(0,c.X)(0,e.length-1)]}:{type:a.$O.Money}}default:return{type:e}}}function y(){const e=(0,i.XX)().filter((e=>0!==e.serversOnNetwork.length));let t=(0,c.X)(0,e.length-1),n=e[t];for(let a=0;a<200&&(!(n instanceof l.x)||n.purchasedByPlayer||n.hostname===s.r.WorldDaemon);++a)t=(0,c.X)(0,e.length-1),n=e[t];return n}function b(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{type:a.$O.Money},n=`contract-${(0,c.X)(0,1e6)}`;for(let t=0;t<1e3&&!(e.contracts.filter((e=>e.fn===n)).length<=0);++t)n=`contract-${(0,c.X)(0,1e6)}`;"name"in t&&(n+=`-${t.name.replace(/[^a-zA-Z0-9]/g,"")}`),n+=".cct";const r=(0,u.h)(n);if(!r)throw new Error(`Generated contract path could not be validated: ${n}`);return r}},62725:(e,t,n)=>{"use strict";n.d(t,{$O:()=>c,Th:()=>l,cu:()=>u,f:()=>m});var a=n(45628),r=n(94515),o=n(51020),i=n(61835);class s{constructor(e,t,n,a,r,o){this.name=e,this.desc=t,this.generate=n,this.solver=a,this.difficulty=r,this.numTries=o}}const l={};for(const e of a.X)l[e.name]=new s(e.name,e.desc,e.gen,e.solver,e.difficulty,e.numTries);let c,u;!function(e){e[e.FactionReputation=0]="FactionReputation",e[e.FactionReputationAll=1]="FactionReputationAll",e[e.CompanyReputation=2]="CompanyReputation",e[e.Money=3]="Money"}(c||(c={})),function(e){e[e.Success=0]="Success",e[e.Failure=1]="Failure",e[e.Cancelled=2]="Cancelled"}(u||(u={}));class m{tries=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default.cct",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Find Largest Prime Factor",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const a=(0,i.h)(e);if(!a)throw new Error(`Bad file path while creating a coding contract: ${e}`);if(!l[t])throw new Error(`Error: invalid contract type: ${t} please contact developer`);this.fn=a,this.type=t,this.data=l[t].generate(),this.reward=n}getData(){return this.data}getDescription(){return l[this.type].desc(this.data)}getDifficulty(){return l[this.type].difficulty}getMaxNumTries(){return l[this.type].numTries}getType(){return l[this.type].name}isSolution(e){return l[this.type].solver(this.data,e)}async prompt(){return new Promise((e=>{o.Z.emit({c:this,onClose:()=>{e(u.Cancelled)},onAttempt:t=>{this.isSolution(t)?e(u.Success):e(u.Failure)}})}))}toJSON(){return(0,r.L3)("CodingContract",this)}static fromJSON(e){return(0,r.Id)(m,e.data)}}r.gY.CodingContract=m},62586:(e,t,n)=>{"use strict";n.d(t,{O:()=>c,U:()=>u});var a=n(65150),r=n(34843),o=n(94515),i=n(62896),s=n(21623),l=n(50862);const c=(()=>{const e=(0,a.T)();return(0,s.KW)(i.z,(t=>new r.Y(e[t])))})();function u(e){const t=JSON.parse(e,o.Ro);if(t&&"object"==typeof t)for(const[e,n]of Object.entries(t)){if(!(0,l.m)("CompanyName").isMember(e))continue;if(!n)continue;if("object"!=typeof n)continue;const t=c[e];(0,o._q)(n);const{playerReputation:a,favor:r}=n;"number"==typeof a&&a>0&&(t.playerReputation=a),"number"==typeof r&&r>0&&(t.favor=r)}}},34843:(e,t,n)=>{"use strict";n.d(t,{Y:()=>i});var a=n(33244),r=n(48132),o=n(94515);class i{name=a.CompanyName.NoodleBar;info="";hasFaction=!1;companyPositions=new Set;expMultiplier=1;salaryMultiplier=1;jobStatReqOffset=0;playerReputation=0;favor=0;constructor(e){e&&(this.name=e.name,e.info&&(this.info=e.info),e.companyPositions.forEach((e=>this.companyPositions.add(e))),this.expMultiplier=e.expMultiplier,this.salaryMultiplier=e.salaryMultiplier,this.jobStatReqOffset=e.jobStatReqOffset,e.hasFaction&&(this.hasFaction=!0))}hasPosition(e){return this.companyPositions.has("string"==typeof e?e:e.name)}hasAgentPositions(){return this.companyPositions.has(a.JobName.agent0)}hasBusinessConsultantPositions(){return this.companyPositions.has(a.JobName.businessConsult0)}hasBusinessPositions(){return this.companyPositions.has(a.JobName.business0)}hasEmployeePositions(){return this.companyPositions.has(a.JobName.employee)}hasITPositions(){return this.companyPositions.has(a.JobName.IT0)}hasSecurityPositions(){return this.companyPositions.has(a.JobName.security0)}hasSoftwareConsultantPositions(){return this.companyPositions.has(a.JobName.softwareConsult0)}hasSoftwarePositions(){return this.companyPositions.has(a.JobName.software0)}hasWaiterPositions(){return this.companyPositions.has(a.JobName.waiter)}prestigeAugmentation(){null==this.favor&&(this.favor=0),this.favor+=this.getFavorGain(),this.playerReputation=0}prestigeSourceFile(){this.favor=0,this.playerReputation=0}getFavorGain(){null==this.favor&&(this.favor=0);const e=Math.max(0,(0,r.X)(this.favor))+this.playerReputation;return(0,r.y)(e)-this.favor}toJSON(){return(0,o.L3)("Company",this,i.includedKeys)}static fromJSON(e){return(0,o.Id)(i,e.data,i.includedKeys)}static includedKeys=["favor","playerReputation"]}o.gY.Company=i},5545:(e,t,n)=>{"use strict";n.d(t,{e:()=>i});var a=n(72938),r=n(33244),o=n(24957);class i{constructor(e,t){this.name=e,this.nextPosition=t.nextPosition,this.baseSalary=t.baseSalary,this.repMultiplier=t.repMultiplier,this.requiredHacking=null!=t.reqdHacking?t.reqdHacking:0,this.requiredStrength=null!=t.reqdStrength?t.reqdStrength:0,this.requiredDefense=null!=t.reqdDefense?t.reqdDefense:0,this.requiredDexterity=null!=t.reqdDexterity?t.reqdDexterity:0,this.requiredAgility=null!=t.reqdAgility?t.reqdAgility:0,this.requiredCharisma=null!=t.reqdCharisma?t.reqdCharisma:0,this.requiredReputation=null!=t.reqdReputation?t.reqdReputation:0,this.hackingEffectiveness=null!=t.hackingEffectiveness?t.hackingEffectiveness:0,this.strengthEffectiveness=null!=t.strengthEffectiveness?t.strengthEffectiveness:0,this.defenseEffectiveness=null!=t.defenseEffectiveness?t.defenseEffectiveness:0,this.dexterityEffectiveness=null!=t.dexterityEffectiveness?t.dexterityEffectiveness:0,this.agilityEffectiveness=null!=t.agilityEffectiveness?t.agilityEffectiveness:0,this.charismaEffectiveness=null!=t.charismaEffectiveness?t.charismaEffectiveness:0,100!==Math.round(this.hackingEffectiveness+this.strengthEffectiveness+this.defenseEffectiveness+this.dexterityEffectiveness+this.agilityEffectiveness+this.charismaEffectiveness)&&console.error(`CompanyPosition ${this.name} parameters do not sum to 100`),this.hackingExpGain=null!=t.hackingExpGain?t.hackingExpGain:0,this.strengthExpGain=null!=t.strengthExpGain?t.strengthExpGain:0,this.defenseExpGain=null!=t.defenseExpGain?t.defenseExpGain:0,this.dexterityExpGain=null!=t.dexterityExpGain?t.dexterityExpGain:0,this.agilityExpGain=null!=t.agilityExpGain?t.agilityExpGain:0,this.charismaExpGain=null!=t.charismaExpGain?t.charismaExpGain:0}calculateJobPerformance(e){const t=this.hackingEffectiveness*e.skills.hacking/a.t.MaxSkillLevel,n=this.strengthEffectiveness*e.skills.strength/a.t.MaxSkillLevel,r=this.defenseEffectiveness*e.skills.defense/a.t.MaxSkillLevel,o=this.dexterityEffectiveness*e.skills.dexterity/a.t.MaxSkillLevel,i=this.agilityEffectiveness*e.skills.agility/a.t.MaxSkillLevel,s=this.charismaEffectiveness*e.skills.charisma/a.t.MaxSkillLevel;let l=this.repMultiplier*(t+n+r+o+i+s)/100;return isNaN(l)&&(console.error("Company reputation gain calculated to be NaN"),l=0),l+=e.skills.intelligence/a.t.MaxSkillLevel,l}isSoftwareJob(){return o.Vy.includes(this.name)}isITJob(){return o.jR.includes(this.name)}isSecurityEngineerJob(){return this.name===r.JobName.securityEng}isNetworkEngineerJob(){return o.MI.includes(this.name)}isBusinessJob(){return o.CW.includes(this.name)}isSecurityJob(){return o.z7.includes(this.name)}isAgentJob(){return o.n9.includes(this.name)}isSoftwareConsultantJob(){return o.Y.includes(this.name)}isBusinessConsultantJob(){return o.eH.includes(this.name)}isPartTimeJob(){return[r.JobName.employeePT,r.JobName.waiterPT].includes(this.name)}}},11124:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var a=n(33244),r=n(80224),o=n(5545),i=n(21623);const s=(()=>{const e=(0,r.Z)();return(0,i.KW)(a.JobName,(t=>new o.e(t,e[t])))})()},62896:(e,t,n)=>{"use strict";let a;n.d(t,{z:()=>a}),function(e){e.ECorp="ECorp",e.MegaCorp="MegaCorp",e.BachmanAndAssociates="Bachman & Associates",e.BladeIndustries="Blade Industries",e.NWO="NWO",e.ClarkeIncorporated="Clarke Incorporated",e.OmniTekIncorporated="OmniTek Incorporated",e.FourSigma="Four Sigma",e.KuaiGongInternational="KuaiGong International",e.FulcrumTechnologies="Fulcrum Technologies",e.StormTechnologies="Storm Technologies",e.DefComm="DefComm",e.HeliosLabs="Helios Labs",e.VitaLife="VitaLife",e.IcarusMicrosystems="Icarus Microsystems",e.UniversalEnergy="Universal Energy",e.GalacticCybersystems="Galactic Cybersystems",e.AeroCorp="AeroCorp",e.OmniaCybersystems="Omnia Cybersystems",e.SolarisSpaceSystems="Solaris Space Systems",e.DeltaOne="DeltaOne",e.GlobalPharmaceuticals="Global Pharmaceuticals",e.NovaMedical="Nova Medical",e.CIA="Central Intelligence Agency",e.NSA="National Security Agency",e.WatchdogSecurity="Watchdog Security",e.LexoCorp="LexoCorp",e.RhoConstruction="Rho Construction",e.AlphaEnterprises="Alpha Enterprises",e.Police="Aevum Police Headquarters",e.SysCoreSecurities="SysCore Securities",e.CompuTek="CompuTek",e.NetLinkTechnologies="NetLink Technologies",e.CarmichaelSecurity="Carmichael Security",e.FoodNStuff="FoodNStuff",e.JoesGuns="Joe's Guns",e.OmegaSoftware="Omega Software",e.NoodleBar="Noodle Bar"}(a||(a={}))},6332:(e,t,n)=>{"use strict";function a(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a="";const r=e.jobStatReqOffset,o=t.requiredHacking>0?t.requiredHacking+r:0,i=t.requiredStrength>0?t.requiredStrength+r:0,s=t.requiredDefense>0?t.requiredDefense+r:0,l=t.requiredDexterity>0?t.requiredDexterity+r:0,c=t.requiredDexterity>0?t.requiredDexterity+r:0,u=t.requiredCharisma>0?t.requiredCharisma+r:0,m=t.requiredReputation;return n?(a="Requires:
",a+=o.toString()+" hacking
",a+=i.toString()+" strength
",a+=s.toString()+" defense
",a+=l.toString()+" dexterity
",a+=c.toString()+" agility
",a+=u.toString()+" charisma
",a+=m.toString()+" reputation"):(a="(Requires ",o>0&&(a+=o+" hacking, "),i>0&&(a+=i+" strength, "),s>0&&(a+=s+" defense, "),l>0&&(a+=l+" dexterity, "),c>0&&(a+=c+" agility, "),u>0&&(a+=u+" charisma, "),m>1&&(a+=m+" reputation, "),a=a.substring(0,a.length-2),a+=")"),a}n.d(t,{c:()=>a})},40465:(e,t,n)=>{"use strict";n.d(t,{v:()=>r});var a=n(11124);function r(e){if(!e)return null;const t=e.nextPosition;return t?a.A[t]:null}},65150:(e,t,n)=>{"use strict";n.d(t,{T:()=>o});var a=n(33244),r=n(24957);function o(){const e=[...r.Vy,...r.jR,...r.MI,a.JobName.securityEng],t=r.Vy.slice(0,6),n=r.Vy.slice(0,4),o=r.CW.slice(0,4);return{[a.CompanyName.ECorp]:{name:a.CompanyName.ECorp,companyPositions:[...e,...r.CW,...r.z7],expMultiplier:3,salaryMultiplier:3,jobStatReqOffset:249},[a.CompanyName.MegaCorp]:{name:a.CompanyName.MegaCorp,companyPositions:[...e,...r.CW,...r.z7],expMultiplier:3,salaryMultiplier:3,jobStatReqOffset:249},[a.CompanyName.BachmanAndAssociates]:{name:a.CompanyName.BachmanAndAssociates,companyPositions:[...e,...r.CW,...r.z7],expMultiplier:2.6,salaryMultiplier:2.6,jobStatReqOffset:224},[a.CompanyName.BladeIndustries]:{name:a.CompanyName.BladeIndustries,companyPositions:[...e,...r.CW,...r.z7],expMultiplier:2.75,salaryMultiplier:2.75,jobStatReqOffset:224},[a.CompanyName.NWO]:{name:a.CompanyName.NWO,companyPositions:[...e,...r.CW,...r.z7],expMultiplier:2.75,salaryMultiplier:2.75,jobStatReqOffset:249},[a.CompanyName.ClarkeIncorporated]:{name:a.CompanyName.ClarkeIncorporated,companyPositions:[...e,...r.CW,...r.z7],expMultiplier:2.25,salaryMultiplier:2.25,jobStatReqOffset:224},[a.CompanyName.OmniTekIncorporated]:{name:a.CompanyName.OmniTekIncorporated,companyPositions:[...e,...r.CW,...r.z7],expMultiplier:2.25,salaryMultiplier:2.25,jobStatReqOffset:224},[a.CompanyName.FourSigma]:{name:a.CompanyName.FourSigma,companyPositions:[...e,...r.CW,...r.z7],expMultiplier:2.5,salaryMultiplier:2.5,jobStatReqOffset:224},[a.CompanyName.KuaiGongInternational]:{name:a.CompanyName.KuaiGongInternational,companyPositions:[...e,...r.CW,...r.z7],expMultiplier:2.2,salaryMultiplier:2.2,jobStatReqOffset:224},[a.CompanyName.FulcrumTechnologies]:{name:a.CompanyName.FulcrumTechnologies,companyPositions:[...e,...r.CW],expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:224},[a.CompanyName.StormTechnologies]:{name:a.CompanyName.StormTechnologies,companyPositions:[...e,...r.Y,...r.CW],expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:199},[a.CompanyName.DefComm]:{name:a.CompanyName.DefComm,companyPositions:[a.JobName.business5,...e,...r.Y],expMultiplier:1.75,salaryMultiplier:1.75,jobStatReqOffset:199},[a.CompanyName.HeliosLabs]:{name:a.CompanyName.HeliosLabs,companyPositions:[a.JobName.business5,...e,...r.Y],expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:199},[a.CompanyName.VitaLife]:{name:a.CompanyName.VitaLife,companyPositions:[...e,...r.CW,...r.Y],expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:199},[a.CompanyName.IcarusMicrosystems]:{name:a.CompanyName.IcarusMicrosystems,companyPositions:[...e,...r.CW,...r.Y],expMultiplier:1.9,salaryMultiplier:1.9,jobStatReqOffset:199},[a.CompanyName.UniversalEnergy]:{name:a.CompanyName.UniversalEnergy,companyPositions:[...e,...r.CW,...r.Y],expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:199},[a.CompanyName.GalacticCybersystems]:{name:a.CompanyName.GalacticCybersystems,companyPositions:[...e,...r.CW,...r.Y],expMultiplier:1.9,salaryMultiplier:1.9,jobStatReqOffset:199},[a.CompanyName.AeroCorp]:{name:a.CompanyName.AeroCorp,companyPositions:[a.JobName.business3,a.JobName.business5,...e,...r.z7],expMultiplier:1.7,salaryMultiplier:1.7,jobStatReqOffset:199},[a.CompanyName.OmniaCybersystems]:{name:a.CompanyName.OmniaCybersystems,companyPositions:[a.JobName.business3,a.JobName.business5,...e,...r.z7],expMultiplier:1.7,salaryMultiplier:1.7,jobStatReqOffset:199},[a.CompanyName.SolarisSpaceSystems]:{name:a.CompanyName.SolarisSpaceSystems,companyPositions:[a.JobName.business3,a.JobName.business5,...e,...r.z7],expMultiplier:1.7,salaryMultiplier:1.7,jobStatReqOffset:199},[a.CompanyName.DeltaOne]:{name:a.CompanyName.DeltaOne,companyPositions:[a.JobName.business3,a.JobName.business5,...e,...r.z7],expMultiplier:1.6,salaryMultiplier:1.6,jobStatReqOffset:199},[a.CompanyName.GlobalPharmaceuticals]:{name:a.CompanyName.GlobalPharmaceuticals,companyPositions:[...e,...r.CW,...r.Y,...r.z7],expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:224},[a.CompanyName.NovaMedical]:{name:a.CompanyName.NovaMedical,companyPositions:[...e,...r.CW,...r.Y,...r.z7],expMultiplier:1.75,salaryMultiplier:1.75,jobStatReqOffset:199},[a.CompanyName.CIA]:{name:a.CompanyName.CIA,companyPositions:[...t,...r.MI,a.JobName.securityEng,...r.jR,...r.z7,...r.n9],expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:149},[a.CompanyName.NSA]:{name:a.CompanyName.NSA,companyPositions:[...t,...r.MI,a.JobName.securityEng,...r.jR,...r.z7,...r.n9],expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:149},[a.CompanyName.WatchdogSecurity]:{name:a.CompanyName.WatchdogSecurity,companyPositions:[...t,...r.MI,...r.jR,...r.z7,...r.n9,...r.Y],expMultiplier:1.5,salaryMultiplier:1.5,jobStatReqOffset:124},[a.CompanyName.LexoCorp]:{name:a.CompanyName.LexoCorp,companyPositions:[...e,...r.Y,...r.CW,...r.z7],expMultiplier:1.4,salaryMultiplier:1.4,jobStatReqOffset:99},[a.CompanyName.RhoConstruction]:{name:a.CompanyName.RhoConstruction,companyPositions:[...n,...o],expMultiplier:1.3,salaryMultiplier:1.3,jobStatReqOffset:49},[a.CompanyName.AlphaEnterprises]:{name:a.CompanyName.AlphaEnterprises,companyPositions:[...n,...o,...r.Y],expMultiplier:1.5,salaryMultiplier:1.5,jobStatReqOffset:99},[a.CompanyName.Police]:{name:a.CompanyName.Police,companyPositions:[...r.z7,...n],expMultiplier:1.3,salaryMultiplier:1.3,jobStatReqOffset:99},[a.CompanyName.SysCoreSecurities]:{name:a.CompanyName.SysCoreSecurities,companyPositions:[...e],expMultiplier:1.3,salaryMultiplier:1.3,jobStatReqOffset:124},[a.CompanyName.CompuTek]:{name:a.CompanyName.CompuTek,companyPositions:[...e],expMultiplier:1.2,salaryMultiplier:1.2,jobStatReqOffset:74},[a.CompanyName.NetLinkTechnologies]:{name:a.CompanyName.NetLinkTechnologies,companyPositions:[...e],expMultiplier:1.2,salaryMultiplier:1.2,jobStatReqOffset:99},[a.CompanyName.CarmichaelSecurity]:{name:a.CompanyName.CarmichaelSecurity,companyPositions:[...e,...r.Y,...r.n9,...r.z7],expMultiplier:1.2,salaryMultiplier:1.2,jobStatReqOffset:74},[a.CompanyName.FoodNStuff]:{name:a.CompanyName.FoodNStuff,companyPositions:[a.JobName.employee,a.JobName.employeePT],expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0},[a.CompanyName.JoesGuns]:{name:a.CompanyName.JoesGuns,companyPositions:[a.JobName.employee,a.JobName.employeePT],expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0},[a.CompanyName.OmegaSoftware]:{name:a.CompanyName.OmegaSoftware,companyPositions:[...r.Vy,...r.Y,...r.jR],expMultiplier:1.1,salaryMultiplier:1.1,jobStatReqOffset:49},[a.CompanyName.NoodleBar]:{name:a.CompanyName.NoodleBar,companyPositions:[a.JobName.waiter,a.JobName.waiterPT],expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0}}}},80224:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(33244);function r(){return{[a.JobName.software0]:{nextPosition:a.JobName.software1,baseSalary:33,charismaEffectiveness:15,charismaExpGain:.02,hackingEffectiveness:85,hackingExpGain:.05,reqdHacking:1,repMultiplier:.9},[a.JobName.software1]:{nextPosition:a.JobName.software2,baseSalary:80,charismaEffectiveness:15,charismaExpGain:.05,hackingEffectiveness:85,hackingExpGain:.1,reqdHacking:51,reqdReputation:8e3,repMultiplier:1.1},[a.JobName.software2]:{nextPosition:a.JobName.software3,baseSalary:165,charismaEffectiveness:20,charismaExpGain:.08,hackingEffectiveness:80,hackingExpGain:.4,reqdCharisma:51,reqdHacking:251,reqdReputation:4e4,repMultiplier:1.3},[a.JobName.software3]:{nextPosition:a.JobName.software4,baseSalary:500,charismaEffectiveness:25,charismaExpGain:.1,hackingEffectiveness:75,hackingExpGain:.8,reqdCharisma:151,reqdHacking:401,reqdReputation:2e5,repMultiplier:1.5},[a.JobName.software4]:{nextPosition:a.JobName.software5,baseSalary:800,charismaEffectiveness:25,charismaExpGain:.5,hackingEffectiveness:75,hackingExpGain:1,reqdCharisma:251,reqdHacking:501,reqdReputation:4e5,repMultiplier:1.6},[a.JobName.software5]:{nextPosition:a.JobName.software6,baseSalary:1650,charismaEffectiveness:25,charismaExpGain:.5,hackingEffectiveness:75,hackingExpGain:1.1,reqdCharisma:251,reqdHacking:501,reqdReputation:8e5,repMultiplier:1.6},[a.JobName.software6]:{nextPosition:a.JobName.software7,baseSalary:2310,charismaEffectiveness:30,charismaExpGain:.6,hackingEffectiveness:70,hackingExpGain:1.2,reqdCharisma:401,reqdHacking:601,reqdReputation:16e5,repMultiplier:1.75},[a.JobName.software7]:{nextPosition:null,baseSalary:2640,charismaEffectiveness:35,charismaExpGain:1,hackingEffectiveness:65,hackingExpGain:1.5,reqdCharisma:501,reqdHacking:751,reqdReputation:32e5,repMultiplier:2},[a.JobName.IT0]:{nextPosition:a.JobName.IT1,baseSalary:26,charismaEffectiveness:10,charismaExpGain:.01,hackingEffectiveness:90,hackingExpGain:.04,reqdHacking:1,repMultiplier:.9},[a.JobName.IT1]:{nextPosition:a.JobName.IT2,baseSalary:66,charismaEffectiveness:15,charismaExpGain:.02,hackingEffectiveness:85,hackingExpGain:.08,reqdHacking:26,reqdReputation:7e3,repMultiplier:1.1},[a.JobName.IT2]:{nextPosition:a.JobName.IT3,baseSalary:132,charismaEffectiveness:20,charismaExpGain:.1,hackingEffectiveness:80,hackingExpGain:.3,reqdCharisma:51,reqdHacking:151,reqdReputation:35e3,repMultiplier:1.3},[a.JobName.IT3]:{nextPosition:a.JobName.software5,baseSalary:410,charismaEffectiveness:20,charismaExpGain:.2,hackingEffectiveness:80,hackingExpGain:.5,reqdCharisma:76,reqdHacking:251,reqdReputation:175e3,repMultiplier:1.4},[a.JobName.securityEng]:{nextPosition:a.JobName.software5,baseSalary:121,charismaEffectiveness:15,charismaExpGain:.05,hackingEffectiveness:85,hackingExpGain:.4,reqdCharisma:26,reqdHacking:151,reqdReputation:35e3,repMultiplier:1.2},[a.JobName.networkEng0]:{nextPosition:a.JobName.networkEng1,baseSalary:121,charismaEffectiveness:15,charismaExpGain:.05,hackingEffectiveness:85,hackingExpGain:.4,reqdCharisma:26,reqdHacking:151,reqdReputation:35e3,repMultiplier:1.2},[a.JobName.networkEng1]:{nextPosition:a.JobName.software5,baseSalary:410,charismaEffectiveness:20,charismaExpGain:.1,hackingEffectiveness:80,hackingExpGain:.5,reqdCharisma:76,reqdHacking:251,reqdReputation:175e3,repMultiplier:1.3},[a.JobName.business0]:{nextPosition:a.JobName.business1,baseSalary:46,charismaEffectiveness:90,charismaExpGain:.08,hackingEffectiveness:10,hackingExpGain:.01,reqdCharisma:1,reqdHacking:1,repMultiplier:.9},[a.JobName.business1]:{nextPosition:a.JobName.business2,baseSalary:100,charismaEffectiveness:85,charismaExpGain:.15,hackingEffectiveness:15,hackingExpGain:.02,reqdCharisma:51,reqdHacking:6,reqdReputation:8e3,repMultiplier:1.1},[a.JobName.business2]:{nextPosition:a.JobName.business3,baseSalary:200,charismaEffectiveness:85,charismaExpGain:.3,hackingEffectiveness:15,hackingExpGain:.02,reqdCharisma:101,reqdHacking:51,reqdReputation:4e4,repMultiplier:1.3},[a.JobName.business3]:{nextPosition:a.JobName.business4,baseSalary:660,charismaEffectiveness:85,charismaExpGain:.4,hackingEffectiveness:15,hackingExpGain:.02,reqdCharisma:226,reqdHacking:51,reqdReputation:2e5,repMultiplier:1.5},[a.JobName.business4]:{nextPosition:a.JobName.business5,baseSalary:1950,charismaEffectiveness:90,charismaExpGain:1,hackingEffectiveness:10,hackingExpGain:.05,reqdCharisma:501,reqdHacking:76,reqdReputation:8e5,repMultiplier:1.6},[a.JobName.business5]:{nextPosition:null,baseSalary:3900,charismaEffectiveness:90,charismaExpGain:1.5,hackingEffectiveness:10,hackingExpGain:.05,reqdCharisma:751,reqdHacking:101,reqdReputation:32e5,repMultiplier:1.75},[a.JobName.security0]:{nextPosition:a.JobName.security1,baseSalary:50,hackingEffectiveness:5,strengthEffectiveness:20,defenseEffectiveness:20,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.01,strengthExpGain:.04,defenseExpGain:.04,dexterityExpGain:.04,agilityExpGain:.04,charismaExpGain:.02,reqdStrength:51,reqdDefense:51,reqdDexterity:51,reqdAgility:51,reqdCharisma:1,repMultiplier:1},[a.JobName.security1]:{nextPosition:a.JobName.security2,baseSalary:195,hackingEffectiveness:10,strengthEffectiveness:20,defenseEffectiveness:20,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:10,hackingExpGain:.02,strengthExpGain:.1,defenseExpGain:.1,dexterityExpGain:.1,agilityExpGain:.1,charismaExpGain:.05,reqdHacking:26,reqdStrength:151,reqdDefense:151,reqdDexterity:151,reqdAgility:151,reqdCharisma:51,reqdReputation:8e3,repMultiplier:1.1},[a.JobName.security2]:{nextPosition:a.JobName.security3,baseSalary:660,hackingEffectiveness:10,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:15,agilityEffectiveness:15,charismaEffectiveness:30,hackingExpGain:.02,strengthExpGain:.12,defenseExpGain:.12,dexterityExpGain:.12,agilityExpGain:.12,charismaExpGain:.1,reqdHacking:26,reqdStrength:251,reqdDefense:251,reqdDexterity:251,reqdAgility:251,reqdCharisma:101,reqdReputation:36e3,repMultiplier:1.25},[a.JobName.security3]:{nextPosition:null,baseSalary:1320,hackingEffectiveness:10,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:15,agilityEffectiveness:15,charismaEffectiveness:30,hackingExpGain:.05,strengthExpGain:.15,defenseExpGain:.15,dexterityExpGain:.15,agilityExpGain:.15,charismaExpGain:.15,reqdHacking:51,reqdStrength:501,reqdDefense:501,reqdDexterity:501,reqdAgility:501,reqdCharisma:151,reqdReputation:144e3,repMultiplier:1.4},[a.JobName.agent0]:{nextPosition:a.JobName.agent1,baseSalary:330,hackingEffectiveness:10,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:20,hackingExpGain:.04,strengthExpGain:.08,defenseExpGain:.08,dexterityExpGain:.08,agilityExpGain:.08,charismaExpGain:.05,reqdHacking:101,reqdStrength:101,reqdDefense:101,reqdDexterity:101,reqdAgility:101,reqdCharisma:101,reqdReputation:8e3,repMultiplier:1},[a.JobName.agent1]:{nextPosition:a.JobName.agent2,baseSalary:990,hackingEffectiveness:15,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.1,strengthExpGain:.15,defenseExpGain:.15,dexterityExpGain:.15,agilityExpGain:.15,charismaExpGain:.1,reqdHacking:201,reqdStrength:251,reqdDefense:251,reqdDexterity:251,reqdAgility:251,reqdCharisma:201,reqdReputation:32e3,repMultiplier:1.25},[a.JobName.agent2]:{nextPosition:null,baseSalary:2e3,hackingEffectiveness:15,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.15,strengthExpGain:.2,defenseExpGain:.2,dexterityExpGain:.2,agilityExpGain:.2,charismaExpGain:.15,reqdHacking:251,reqdStrength:501,reqdDefense:501,reqdDexterity:501,reqdAgility:501,reqdCharisma:251,reqdReputation:162e3,repMultiplier:1.5},[a.JobName.waiter]:{nextPosition:null,baseSalary:22,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.02,defenseExpGain:.02,dexterityExpGain:.02,agilityExpGain:.02,charismaExpGain:.05,repMultiplier:1},[a.JobName.employee]:{nextPosition:null,baseSalary:22,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.02,defenseExpGain:.02,dexterityExpGain:.02,agilityExpGain:.02,charismaExpGain:.04,repMultiplier:1},[a.JobName.softwareConsult0]:{nextPosition:a.JobName.softwareConsult1,baseSalary:66,hackingEffectiveness:80,charismaEffectiveness:20,hackingExpGain:.08,charismaExpGain:.03,reqdHacking:51,repMultiplier:1},[a.JobName.softwareConsult1]:{nextPosition:null,baseSalary:132,hackingEffectiveness:75,charismaEffectiveness:25,hackingExpGain:.25,charismaExpGain:.06,reqdHacking:251,reqdCharisma:51,repMultiplier:1.2},[a.JobName.businessConsult0]:{nextPosition:a.JobName.businessConsult1,baseSalary:66,hackingEffectiveness:20,charismaEffectiveness:80,hackingExpGain:.015,charismaExpGain:.15,reqdHacking:6,reqdCharisma:51,repMultiplier:1},[a.JobName.businessConsult1]:{nextPosition:null,baseSalary:525,hackingEffectiveness:15,charismaEffectiveness:85,hackingExpGain:.015,charismaExpGain:.3,reqdHacking:51,reqdCharisma:226,repMultiplier:1.2},[a.JobName.waiterPT]:{nextPosition:null,baseSalary:20,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.0075,defenseExpGain:.0075,dexterityExpGain:.0075,agilityExpGain:.0075,charismaExpGain:.04,repMultiplier:1},[a.JobName.employeePT]:{nextPosition:null,baseSalary:20,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.0075,defenseExpGain:.0075,dexterityExpGain:.0075,agilityExpGain:.0075,charismaExpGain:.03,repMultiplier:1}}}},24957:(e,t,n)=>{"use strict";n.d(t,{CW:()=>s,MI:()=>i,Vy:()=>r,Y:()=>u,eH:()=>m,jR:()=>o,n9:()=>c,z7:()=>l});var a=n(33244);const r=[a.JobName.software0,a.JobName.software1,a.JobName.software2,a.JobName.software3,a.JobName.software4,a.JobName.software5,a.JobName.software6,a.JobName.software7],o=[a.JobName.IT0,a.JobName.IT1,a.JobName.IT2,a.JobName.IT3],i=[a.JobName.networkEng0,a.JobName.networkEng1],s=[a.JobName.business0,a.JobName.business1,a.JobName.business2,a.JobName.business3,a.JobName.business4,a.JobName.business5],l=[a.JobName.security0,a.JobName.security1,a.JobName.security2,a.JobName.security3],c=[a.JobName.agent0,a.JobName.agent1,a.JobName.agent2],u=[a.JobName.softwareConsult0,a.JobName.softwareConsult1],m=[a.JobName.businessConsult0,a.JobName.businessConsult1]},30195:(e,t,n)=>{"use strict";n.d(t,{j:()=>l});var a=n(67294),r=n(49173),o=n(48672),i=n(81138),s=n(56798);function l(e){return a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(i.Z,null," Would you like to quit your job at ",e.company.name,"?"),a.createElement("br",null),a.createElement("br",null),a.createElement(s.Z,{onClick:function(){r.J5.quitJob(e.companyName),e.onQuit(),e.onClose()}},"Quit"))}},68507:(e,t,n)=>{"use strict";function a(e){return e}n.d(t,{$:()=>a})},72938:(e,t,n)=>{"use strict";n.d(t,{t:()=>a});const a={VersionString:"2.5.0",isDevBranch:!1,VersionNumber:35,MaxSkillLevel:975,MilliPerCycle:200,CorpFactionRepRequirement:4e5,BaseCostFor1GBOfRamHome:32e3,BaseCostFor1GBOfRamServer:55e3,TravelCost:2e5,BaseFavorToDonate:150,DonateMoneyToRepDivisor:1e6,FactionReputationToFavorBase:500,FactionReputationToFavorMult:1.02,CompanyReputationToFavorBase:500,CompanyReputationToFavorMult:1.02,NeuroFluxGovernorLevelMult:1.14,NumNetscriptPorts:Number.MAX_SAFE_INTEGER,HomeComputerMaxRam:1073741824,ServerBaseGrowthRate:1.03,ServerMaxGrowthRate:1.0035,ServerFortifyAmount:.002,ServerWeakenAmount:.05,PurchasedServerLimit:25,PurchasedServerMaxRam:1048576,MultipleAugMultiplier:1.9,TorRouterCost:2e5,HospitalCostPerHp:1e5,IntelligenceCrimeWeight:.025,IntelligenceInfiltrationWeight:.1,IntelligenceCrimeBaseExpGain:.05,IntelligenceProgramBaseExpGain:.1,IntelligenceGraftBaseExpGain:.05,IntelligenceTerminalHackBaseExpGain:200,IntelligenceSingFnBaseExpGain:1.5,IntelligenceClassBaseExpGain:.01,MillisecondsPer20Hours:72e6,GameCyclesPer20Hours:36e4,MillisecondsPer10Hours:36e6,GameCyclesPer10Hours:18e4,MillisecondsPer8Hours:288e5,GameCyclesPer8Hours:144e3,MillisecondsPer4Hours:144e5,GameCyclesPer4Hours:72e3,MillisecondsPer2Hours:72e5,GameCyclesPer2Hours:36e3,MillisecondsPerHour:36e5,GameCyclesPerHour:18e3,MillisecondsPerHalfHour:18e5,GameCyclesPerHalfHour:9e3,MillisecondsPerQuarterHour:9e5,GameCyclesPerQuarterHour:4500,MillisecondsPerFiveMinutes:3e5,GameCyclesPerFiveMinutes:1500,BaseFocusBonus:.8,ClassDataStructuresBaseCost:40,ClassNetworksBaseCost:80,ClassAlgorithmsBaseCost:320,ClassManagementBaseCost:160,ClassLeadershipBaseCost:320,ClassGymBaseCost:120,ClassStudyComputerScienceBaseExp:.5,ClassDataStructuresBaseExp:1,ClassNetworksBaseExp:2,ClassAlgorithmsBaseExp:4,ClassManagementBaseExp:2,ClassLeadershipBaseExp:4,CodingContractBaseFactionRepGain:2500,CodingContractBaseCompanyRepGain:4e3,CodingContractBaseMoneyGain:75e6,AugmentationGraftingCostMult:3,AugmentationGraftingTimeBase:36e5,SoACostMult:7,SoARepMult:1.3,EntropyEffect:.98,TotalNumBitNodes:24,InfiniteLoopLimit:2e3,Donations:113,LatestUpdate:"\n## v2.5.0 (10/2/2023)\n\n### NOTES\n(Corporation) Bugfixes in Corporation may cause a large balance shift for this mechanic.\n\n### API CHANGES:\n- ns.print and ns.tprint now handle printing Set and Map objects directly (@ficocelliguy)\n- ns.spawn can now use a configurable delay instead of always 10 seconds (@muesli4brekkies)\n- (Corporation) Added CorporationDivisions property to BitNodeMultipliers interface (@Caldwell-74)\n- (Corporation) Added makesMaterials and makesProducts properties to CorpIndustryData interface (@Caldwell-74)\n- (Corporation) Added issueNewSharesCooldown property to the CorporationInfo interface (@Caldwell-74)\n- (Corporation) Significantly lowered ram cost of all corporation functions (@jjclark1982)\n- (Gang) Added ns.gang.getRecruitsAvailable: Gets the number of additional gang members that can currently be recruited (@myCatsName)\n- (Gang) Added ns.gang.respectForNextRecruit: Gets the respect threshold for recruiting the next gang member (@myCatsName)\n- (Gang) Added ns.gang.renameMember: Renames a gang member (@myCatsName)\n\n### BUGFIX\n- Taking a university class no longer gives the player an achievement for working out in a gym (@myCatsName)\n- Bash keybind ctrl-C clears an ongoing terminal history search (@ncharris93)\n- (Corporation): Fix bug in valuation calculation (@yichizhng)\n- (Corporation): Fix bug in share price calculation (@jjclark1982)\n- (Corporation) \"Same sell amount in all cities\" works with Products again (@Caldwell-74)\n- (Hashnet) Buying multiple company favor upgrades at the same time will actually apply them all instead of just one (@aschmider)\n\n### OTHER CHANGES\n- MISC: Improved handling of aliases in the Terminal (@ficocelliguy)\n- MISC: Improved error messages for ns.getPurchasedServer (@ficocelliguy)\n- MISC: ns.sleep and ns.asleep now show a formatted time in the script log. (@ficocelliguy)\n- MISC: Fix an exploit that allowed over 100% utilization of a server's ram (@d0sboots)\n- MISC: (Bladeburner / Sleeve) Bladeburner training action is available for sleeves (@Zelow79)\n- MISC: (Gang) Renamed the Territory Warfare mechanic (now referred to as Territory Clashes) to deconflict with the Territory Warfare gang member task (@ficocelliguy)\n- UI: Infiltration now hides tail windows instead of temporarily removing them from the page. This means position/size will remain as they were before the infiltration, and any React content will remain active instead of being unmounted/remounted (@ficocelliguy)\n- UI: Faction augmentation page updates more reliably (@zerbosh)\n- UI: Added a text filter on the Faction Augmentations page (@ficocelliguy)\n- UI: Improved pagination of Active Scripts page (@Ookamiko, @ficocelliguy)\n- UI: Icarus message no longer shows repeatedly for players that are in the endgame (@ficocelliguy)\n- UI: Remove work completion dialogs when performing an augmentation install (@ficocelliguy)\n- UI: Improve soft reset dialog, and always show dialog when soft resetting (@myCatsName)\n- UI: While closing, modals no longer update displayed info and become inert (@Snarling)\n- UI: (Bladeburner) Fix a possible NaN display value in Bladeburner (@zerbosh)\n- UI: (Corporation) Multiple UI improvements for Corporation (@jjclark1982)\n- UI: (Corporation) Tweaked some number formatting to look better in Corp and Stats page (@zerbosh)\n- UI: (Corporation) Market TA no longer has its own dialog box, it's set in the normal sell dialog (@Caldwell-74)\n- UI: (Corporation) Fix an incorrect value in the party dialog box (@aschmider)\n- UI: (Corporation) Improved the descriptions for Corporation states (@Caldwell-74)\n- UI: (Gang) Various UI improvements for Gang (@myCatsName)\n- DOCS: Improve documentation for ports (@muesli4brekkies)\n- DOCS: Updated documentation for ns.tail and ns.getScriptLogs to make it clear a PID can be used (@myCatsName)\n- DOCS: Improve documentation for FilenameOrPID functions (@VictorS)\n- DOCS: Improved various existing ingame documentation pages (@myCatsName)\n- DOCS: (Bladeburner / Gang) Added initial ingame documentation for Bladeburner and Gang (@myCatsName)\n- DOCS: (Bladeburner / Gang) Improve API documentation for Bladeburner and Gang functions (@myCatsName)\n"}},33563:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{A9:()=>Research,D:()=>UpgradeOfficeSize,DY:()=>ExportMaterial,Dn:()=>LimitProductProduction,Fm:()=>BuyBackShares,Ix:()=>SetProductMarketTA1,J_:()=>purchaseWarehouse,Jm:()=>HireAdVert,KB:()=>GoPublic,M4:()=>NewDivision,M9:()=>SetProductMarketTA2,MO:()=>BuyMaterial,Nz:()=>SetMaterialMarketTA1,Pe:()=>LimitMaterialProduction,Sz:()=>SellMaterial,VG:()=>SetSmartSupplyOption,YH:()=>ThrowParty,Zd:()=>AcceptInvestmentOffer,Zn:()=>SetMaterialMarketTA2,_A:()=>BulkPurchase,aT:()=>SellShares,aq:()=>removeDivision,bY:()=>BuyTea,m_:()=>UpgradeWarehouse,mg:()=>SetSmartSupply,oL:()=>MakeProduct,oO:()=>purchaseOffice,qr:()=>UpgradeWarehouseCost,qv:()=>SellProduct,vg:()=>CancelExportMaterial,wZ:()=>IssueDividends,yp:()=>IssueNewShares});var _player__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(49173),_MaterialInfo__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(51004),_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(32927),_Division__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(37911),_data_Constants__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(80692),_OfficeSpace__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(80741),_Product__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(77396),_Warehouse__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(55307),_ResearchMap__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(78845),_ui_Helpers__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(17446),_enums__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(33244),_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(92666),_Types_Record__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(21623),_helpers__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(41139);function NewDivision(e,t,n){if(e.divisions.size>=e.maxDivisions)throw new Error(`Cannot expand into ${t} industry, too many divisions!`);if(e.divisions.has(n))throw new Error(`Division name ${n} is already in use!`);if("Overview"===n)throw new Error('"Overview" is a forbidden division name.');const a=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.vm[t];if(!a)throw new Error(`Invalid industry: '${t}'`);const r=a.startingCost;if(e.funds=0;e--)n.exports[e].division===t&&n.exports.splice(e,1)}function purchaseOffice(e,t,n){if(e.funds<_data_Constants__WEBPACK_IMPORTED_MODULE_4__.officeInitialCost)throw new Error("You don't have enough company funds to open a new office!");if(t.offices[n])throw new Error(`You have already expanded into ${n} for ${t.name}`);e.addNonIncomeFunds(-_data_Constants__WEBPACK_IMPORTED_MODULE_4__.officeInitialCost),t.offices[n]=new _OfficeSpace__WEBPACK_IMPORTED_MODULE_5__.Q({city:n,size:_data_Constants__WEBPACK_IMPORTED_MODULE_4__.officeInitialSize})}function IssueDividends(e,t){if(isNaN(t)||t<0||t>_data_Constants__WEBPACK_IMPORTED_MODULE_4__.dividendMaxRate)throw new Error(`Invalid value. Must be an number between 0 and ${_data_Constants__WEBPACK_IMPORTED_MODULE_4__.dividendMaxRate}`);e.dividendRate=t}function GoPublic(e,t){const n=(e.numShares-t)/e.totalShares,a=e.getTargetSharePrice(n);if(isNaN(t)||t<0)throw new Error("Invalid value for number of issued shares");if(t>e.numShares)throw new Error("You don't have that many shares to issue!");e.public=!0,e.sharePrice=a,e.issuedShares+=t,e.numShares-=t,e.addNonIncomeFunds(t*a)}function IssueNewShares(e,t){const n=(0,_helpers__WEBPACK_IMPORTED_MODULE_11__.Ox)(e,t);if(n)throw new Error(n);const a=e.numShares/(e.totalShares+t),r=e.getTargetSharePrice(a),o=t*(e.sharePrice+r)/2,i=e.totalShares/_data_Constants__WEBPACK_IMPORTED_MODULE_4__.initialShares;e.issueNewSharesCooldown=_data_Constants__WEBPACK_IMPORTED_MODULE_4__.issueNewSharesCooldown*i;const s=e.investorShares/e.totalShares,l=Math.round(t/2*s),c=1e7*Math.round((0,_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12__.X)(0,l)/1e7);return e.issuedShares+=t-c,e.investorShares+=c,e.totalShares+=t,e.addNonIncomeFunds(o),e.sharePrice=r,[o,t,c]}function AcceptInvestmentOffer(e){if(e.fundingRound>=_data_Constants__WEBPACK_IMPORTED_MODULE_4__.fundingRoundShares.length||e.fundingRound>=_data_Constants__WEBPACK_IMPORTED_MODULE_4__.fundingRoundMultiplier.length||e.public)throw new Error("No more investment offers are available.");const t=e.valuation,n=_data_Constants__WEBPACK_IMPORTED_MODULE_4__.fundingRoundShares[e.fundingRound],a=t*n*_data_Constants__WEBPACK_IMPORTED_MODULE_4__.fundingRoundMultiplier[e.fundingRound],r=Math.floor(_data_Constants__WEBPACK_IMPORTED_MODULE_4__.initialShares*n);e.fundingRound++,e.addNonIncomeFunds(a),e.numShares-=r,e.investorShares+=r}function SellMaterial(material,amount,price){""===price&&(price="0"),""===amount&&(amount="0");let cost=price.replace(/\s+/g,"");cost=cost.replace(/[^-()\d/*+.MPe]/g,"");let temp=cost.replace(/MP/,"1.234e5");try{if(temp.includes("MP"))throw"Only one reference to MP is allowed in sell price.";temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell price field");if(cost.includes("MP")?material.desiredSellPrice=cost:material.desiredSellPrice=temp,amount=amount.toUpperCase(),amount.includes("MAX")||amount.includes("PROD")||amount.includes("INV")){let q=amount.replace(/\s+/g,"");q=q.replace(/[^-()\d/*+.MAXPRODINV]/g,"");let tempQty=q.replace(/MAX/g,material.maxSellPerCycle.toString());tempQty=tempQty.replace(/PROD/g,material.productionAmount.toString()),tempQty=tempQty.replace(/INV/g,material.productionAmount.toString());try{tempQty=eval(tempQty)}catch(e){throw new Error("Invalid value or expression for sell quantity field: "+e)}if(null==tempQty||isNaN(parseFloat(tempQty)))throw new Error("Invalid value or expression for sell quantity field");material.desiredSellAmount=q}else{if(isNaN(parseFloat(amount))||parseFloat(amount)<0)throw new Error("Invalid value for sell quantity field! Must be numeric or 'PROD' or 'MAX'");{let e=parseFloat(amount);isNaN(e)&&(e=0),material.desiredSellAmount=e}}}function SellProduct(product,city,amt,price,all){let newPrice=product.cityData[city].desiredSellPrice;if(price.includes("MP")){price=price.replace(/\s+/g,""),price=price.replace(/[^-()\d/*+.MPe]/g,"");let temp=price.replace(/MP/,"1.234e5");try{if(temp.includes("MP"))throw"Only one reference to MP is allowed in sell price.";temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell price field.");newPrice=price}else{const e=parseFloat(price);if(isNaN(e))throw new Error("Invalid value for sell price field");newPrice=e}amt=amt.toUpperCase();let newAmount=product.cityData[city].desiredSellAmount;if(amt.includes("MAX")||amt.includes("PROD")||amt.includes("INV")){let qty=amt.replace(/\s+/g,"");qty=qty.replace(/[^-()\d/*+.MAXPRODINV]/g,"");let temp=qty.replace(/MAX/g,product.maxSellAmount.toString());temp=temp.replace(/PROD/g,product.cityData[city].productionAmount.toString()),temp=temp.replace(/INV/g,product.cityData[city].stored.toString());try{temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell quantity field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell quantity field");newAmount=qty}else{if(isNaN(parseFloat(amt))||parseFloat(amt)<0)throw new Error("Invalid value for sell quantity field! Must be numeric or 'PROD' or 'MAX'");{let e=parseFloat(amt);isNaN(e)&&(e=0),newAmount=e}}if(all)for(const e of Object.values(_enums__WEBPACK_IMPORTED_MODULE_9__.CityName))product.cityData[e].desiredSellAmount=newAmount,product.cityData[e].desiredSellPrice=newPrice;else product.cityData[city].desiredSellAmount=newAmount,product.cityData[city].desiredSellPrice=newPrice}function SetSmartSupply(e,t){e.smartSupplyEnabled=t}function SetSmartSupplyOption(e,t,n){e.smartSupplyOptions[t.name]=n}function BuyMaterial(e,t,n){if(!(0,_ui_Helpers__WEBPACK_IMPORTED_MODULE_13__.s)(t.name,e))throw new Error(`${t.name} is not a relevant material for industry ${e.type}`);if(isNaN(n)||n<0)throw new Error(`Invalid amount '${n}' to buy material '${t.name}'`);t.buyAmount=n}function BulkPurchase(e,t,n,a,r){if(!(0,_ui_Helpers__WEBPACK_IMPORTED_MODULE_13__.s)(a.name,t))throw new Error(`${a.name} is not a relevant material for industry ${t.type}`);const o=_MaterialInfo__WEBPACK_IMPORTED_MODULE_1__.d[a.name].size,i=(n.size-n.sizeUsed)/o;if(isNaN(r)||r<0)throw new Error("Invalid input amount");if(r>i)throw new Error("You do not have enough warehouse size to fit this purchase");const s=r*a.marketPrice;if(!(e.funds>=s))throw new Error("You cannot afford this purchase.");e.funds=e.funds-s,a.stored+=r}function SellShares(e,t){const n=(0,_helpers__WEBPACK_IMPORTED_MODULE_11__.b5)(e,t);if(n)throw new Error(n);const[a,r,o]=e.calculateShareSale(t);return e.numShares-=t,e.issuedShares+=t,e.sharePrice=r,e.shareSalesUntilPriceUpdate=o,e.shareSaleCooldown=_data_Constants__WEBPACK_IMPORTED_MODULE_4__.sellSharesCooldown,_player__WEBPACK_IMPORTED_MODULE_0__.J5.gainMoney(a,"corporation"),a}function BuyBackShares(e,t){const n=(0,_helpers__WEBPACK_IMPORTED_MODULE_11__.CA)(e,t);if(n)throw new Error(n);const[a,r,o]=e.calculateShareBuyback(t);return e.numShares+=t,e.issuedShares-=t,e.sharePrice=r,e.shareSalesUntilPriceUpdate=o,_player__WEBPACK_IMPORTED_MODULE_0__.J5.loseMoney(a,"corporation"),!0}function UpgradeOfficeSize(e,t,n){const a=Math.round(t.size/_data_Constants__WEBPACK_IMPORTED_MODULE_4__.officeInitialSize);let r=0;for(let e=0;et+_data_Constants__WEBPACK_IMPORTED_MODULE_4__.warehouseSizeUpgradeCostBase*Math.pow(1.07,e.level+1+n)),0)}function UpgradeWarehouse(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const r=UpgradeWarehouseCost(n,a);e.funds=t.maxProducts)throw new Error(`You are already at the max products (${t.maxProducts}) for division: ${t.name}!`);const i=new _Product__WEBPACK_IMPORTED_MODULE_6__.x({name:a.replace(/[<>]/g,"").trim(),createCity:n,designInvestment:r,advertisingInvestment:o});if(t.products.has(i.name))throw new Error("You already have a product with this name!");e.funds=e.funds-(r+o),t.products.set(i.name,i)}function Research(e,t){const n=_player__WEBPACK_IMPORTED_MODULE_0__.J5.corporation;if(!n)return;const a=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[e.type];if(void 0===a)throw new Error(`No research tree for industry '${e.type}'`);const r=_ResearchMap__WEBPACK_IMPORTED_MODULE_8__.k[t];if(!e.researched.has(t)){if(e.researchPointsn.division===e&&n.city===t));-1!==a&&n.exports.splice(a,1)}function LimitProductProduction(e,t,n){n<0||isNaN(n)?e.cityData[t].productionLimit=null:e.cityData[t].productionLimit=n}function LimitMaterialProduction(e,t){t<0||isNaN(t)?e.productionLimit=null:e.productionLimit=t}function SetMaterialMarketTA1(e,t){e.marketTa1=t}function SetMaterialMarketTA2(e,t){e.marketTa2=t}function SetProductMarketTA1(e,t){e.marketTa1=t}function SetProductMarketTA2(e,t){e.marketTa2=t}},63303:(e,t,n)=>{"use strict";n.d(t,{D:()=>v});var a=n(49173),r=n(33244),o=n(35586),i=n(61226),s=n(51326),l=n(80692),c=n(32927),u=n(97740),m=n(20404),f=n(39463),h=n(94515),d=n(41139),p=n(7165),g=n(22115),y=n(20145),b=n(21623);class v{name="The Corporation";divisions=new p.X;maxDivisions=20*u.dQ.CorporationDivisions;funds=15e10;revenue=0;expenses=0;fundingRound=0;public=!1;totalShares=l.initialShares;numShares=l.initialShares;shareSalesUntilPriceUpdate=l.sharesPerPriceUpdate;shareSaleCooldown=0;issueNewSharesCooldown=0;dividendRate=0;dividendTax=1-u.dQ.CorporationSoftcap+.15;investorShares=0;issuedShares=0;sharePrice=0;storedCycles=0;unlocks=new p.z;upgrades=(0,b.KW)(r.CorpUpgradeName,(e=>({level:0,value:e===r.CorpUpgradeName.DreamSense?0:1})));previousTotalAssets=15e10;totalAssets=15e10;cycleValuation=0;valuationsList=[0];valuation=0;state=new o.Y;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.name=e.name||"The Corporation",this.seedFunded=e.seedFunded??!1}addFunds(e){isFinite(e)?this.funds+=e:console.error("Trying to add invalid amount of funds. Report to a developer.")}addNonIncomeFunds(e){isFinite(e)?(this.totalAssets+=e,this.funds+=e):console.error("Trying to add invalid amount of funds. Report to a developer.")}getState(){return this.state.getState()}storeCycles(e){this.storedCycles+=e}process(){if(this.storedCycles<0&&(this.storedCycles=0),this.storedCycles>=l.gameCyclesPerCorpStateCycle){const e=this.getState(),t=1,n=t*l.gameCyclesPerCorpStateCycle;this.storedCycles-=n;for(const t of this.divisions.values())t.resetImports(e);for(const n of this.divisions.values())n.process(t,e,this);if(this.shareSaleCooldown>0&&(this.shareSaleCooldown-=n),this.issueNewSharesCooldown>0&&(this.issueNewSharesCooldown-=n),"START"===e){this.revenue=0,this.expenses=0,this.divisions.forEach((e=>{e.lastCycleRevenue!==-1/0&&e.lastCycleRevenue!==1/0&&e.lastCycleExpenses!==-1/0&&e.lastCycleExpenses!==1/0&&(this.revenue=this.revenue+e.lastCycleRevenue,this.expenses=this.expenses+e.lastCycleExpenses)}));const e=(this.revenue-this.expenses)*(t*l.secondsPerMarketCycle);if((isNaN(this.funds)||this.funds===1/0||this.funds===-1/0)&&((0,f.X)("There was an error calculating your Corporations funds and they got reset to 0. This is a bug. Please report to game developer.\n\n(Your funds have been set to $150b for the inconvenience)"),this.funds=15e10),this.dividendRate>0&&e>0)if(isNaN(this.dividendRate)||this.dividendRate<0||this.dividendRate>l.dividendMaxRate)console.error(`Invalid Corporation dividend rate: ${this.dividendRate}`);else{const t=e-this.dividendRate*e;a.J5.gainMoney(this.getCycleDividends(),"corporation"),this.addFunds(t)}else this.addFunds(e);this.updateTotalAssets(),this.cycleValuation=this.determineCycleValuation(),this.determineValuation(),this.updateSharePrice()}this.state.nextState()}}getCycleDividends(){const e=(this.revenue-this.expenses)*l.secondsPerMarketCycle,t=this.dividendRate*e/this.totalShares,n=this.numShares*t;return Math.pow(n,1-this.dividendTax)}determineCycleValuation(){let e,t=(this.totalAssets-this.previousTotalAssets)/l.secondsPerMarketCycle;return t??=this.revenue-this.expenses,this.public?(this.dividendRate>0&&(t*=1-this.dividendRate),e=this.funds+85e3*t,e*=Math.pow(1.1,this.divisions.size),e=Math.max(e,0)):(e=1e10+this.funds/3,t>0&&(e+=315e3*t),e*=Math.pow(1.1,this.divisions.size),e-=e%1e6),e<1e10&&(e=1e10),e*u.dQ.CorporationValuation}determineValuation(){this.valuationsList.push(this.cycleValuation),this.valuationsList.length>l.valuationLength&&this.valuationsList.shift();let e=this.valuationsList.reduce(((e,t)=>e+t));e/=this.valuationsList.length,this.valuation=e}updateTotalAssets(){let e=this.funds;this.divisions.forEach((t=>{e+=c.vm[t.type].startingCost;for(const n of(0,b.R3)(t.warehouses)){for(const t of(0,b.R3)(n.materials))e+=t.stored*t.averagePrice;for(const a of t.products.values())e+=a.cityData[n.city].stored*a.productionCost}})),this.previousTotalAssets=this.totalAssets,this.totalAssets=e}getTargetSharePrice(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;null===e&&(e=this.numShares/this.totalShares);const t=.5+Math.sqrt(Math.max(0,e));return this.valuation*t/this.totalShares}updateSharePrice(){const e=this.getTargetSharePrice();this.sharePrice<=e?this.sharePrice*=1+.01*Math.random():this.sharePrice*=1-.01*Math.random(),this.sharePrice<=.01&&(this.sharePrice=.01)}calculateMaxNewShares(){const e=Math.round(.2*this.totalShares);return e-e%1e7}calculateShareSale(e){let t=e,n=this.shareSalesUntilPriceUpdate,a=this.sharePrice,r=0,o=0;const i=Math.sign(e||1)*l.sharesPerPriceUpdate,s=Math.ceil(e/i);if(isNaN(s)||s>1e7)return console.error(`Something went wrong or unexpected when calculating share sale. Max iterations calculated to be ${s}`),[0,0,0];for(let e=0;e=l.fundingRoundShares.length||this.fundingRound>=l.fundingRoundMultiplier.length||this.public)return{funds:0,shares:0,round:this.fundingRound+1};const e=this.valuation,t=l.fundingRoundShares[this.fundingRound];return{funds:e*t*l.fundingRoundMultiplier[this.fundingRound],shares:Math.floor(l.initialShares*t),round:this.fundingRound+1}}convertCooldownToString(e){const t=e/5;return t>3600?`${Math.floor(t/3600)} hour(s)`:t>60?`${Math.floor(t/60)} minute(s)`:`${Math.floor(t)} second(s)`}purchaseUnlock(e){if(this.unlocks.has(e))return`The corporation has already unlocked ${e}`;const t=i.D[e].price;if(this.funds1&&void 0!==arguments[1]?arguments[1]:1;if(!(0,y.a)(t))return`Number of upgrade levels purchased must be a positive integer (attempted: ${t}).`;const n=s.x[e],a=(0,d.gE)(this,n,t);if(this.funds{"use strict";n.d(t,{Y:()=>o});var a=n(94515),r=n(80692);class o{state=0;getState(){return r.stateNames[this.state]}nextState(){this.state=(this.state+1)%r.stateNames.length}toJSON(){return(0,a.L3)("CorporationState",this)}static fromJSON(e){return(0,a.Id)(o,e.data)}}a.gY.CorporationState=o},37911:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{d:()=>Division});var _enums__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(33244),_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(94515),_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(32927),_data_Constants__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(80692),_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(92666),_utils_calculateEffectWithFactors__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(27893),_OfficeSpace__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(80741),_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(39463),_utils_helpers_string__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(22392),_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(51004),_Warehouse__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(55307),_Types_Jsonable__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(7165),_Types_Record__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(21623),_utils_helpers_getKeyList__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(89194);class Division{name="DefaultDivisionName";type=_enums__WEBPACK_IMPORTED_MODULE_0__.IndustryType.Agriculture;researchPoints=0;researched=new _Types_Jsonable__WEBPACK_IMPORTED_MODULE_8__.z;requiredMaterials={};treeInitialized=!1;producedMaterials=[];products=new _Types_Jsonable__WEBPACK_IMPORTED_MODULE_8__.X;makesProducts=!1;get maxProducts(){if(!this.makesProducts)return 0;let e=0;return this.hasResearch("uPgrade: Capacity.I")&&++e,this.hasResearch("uPgrade: Capacity.II")&&++e,_data_Constants__WEBPACK_IMPORTED_MODULE_3__.maxProductsBase+e}awareness=0;popularity=0;startingCost=0;realEstateFactor=0;researchFactor=0;hardwareFactor=0;robotFactor=0;aiCoreFactor=0;advertisingFactor=0;productionMult=0;lastCycleRevenue=0;lastCycleExpenses=0;thisCycleRevenue=0;thisCycleExpenses=0;state="START";newInd=!0;warehouses={};offices={};numAdVerts=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!e)return;this.type=e.type,this.name=e.name,this.warehouses[_enums__WEBPACK_IMPORTED_MODULE_0__.CityName.Sector12]=new _Warehouse__WEBPACK_IMPORTED_MODULE_7__.C({loc:_enums__WEBPACK_IMPORTED_MODULE_0__.CityName.Sector12,division:this,size:_data_Constants__WEBPACK_IMPORTED_MODULE_3__.warehouseInitialSize}),this.offices[_enums__WEBPACK_IMPORTED_MODULE_0__.CityName.Sector12]=new _OfficeSpace__WEBPACK_IMPORTED_MODULE_4__.Q({city:_enums__WEBPACK_IMPORTED_MODULE_0__.CityName.Sector12,size:_data_Constants__WEBPACK_IMPORTED_MODULE_3__.officeInitialSize});const t=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.vm[this.type];this.startingCost=t.startingCost,this.makesProducts=t.makesProducts,this.realEstateFactor=t.realEstateFactor??0,this.researchFactor=t.scienceFactor??0,this.hardwareFactor=t.hardwareFactor??0,this.robotFactor=t.robotFactor??0,this.aiCoreFactor=t.aiCoreFactor??0,this.advertisingFactor=t.advertisingFactor??0,this.requiredMaterials=t.requiredMaterials,this.producedMaterials=t.producedMaterials??[]}hasMaximumNumberProducts(){return this.products.size>=this.maxProducts}calculateProductionFactors(){let e=0;for(const t of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.R3)(this.warehouses)){const n=t.materials,a=Math.pow(.002*n["Real Estate"].stored+1,this.realEstateFactor)*Math.pow(.002*n.Hardware.stored+1,this.hardwareFactor)*Math.pow(.002*n.Robots.stored+1,this.robotFactor)*Math.pow(.002*n["AI Cores"].stored+1,this.aiCoreFactor);e+=Math.pow(a,.73)}this.productionMult=e<1?1:e}updateWarehouseSizeUsed(e){e.updateMaterialSizeUsed();for(const t of this.products.values())e.sizeUsed+=t.cityData[e.city].stored*t.size}process(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;if(this.state=t,"START"===t){(isNaN(this.thisCycleRevenue)||isNaN(this.thisCycleExpenses))&&(console.error("NaN in Corporation's computed revenue/expenses"),(0,_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_5__.X)("Something went wrong when compting Corporation's revenue/expenses. This is a bug. Please report to game developer"),this.thisCycleRevenue=0,this.thisCycleExpenses=0),this.lastCycleRevenue=this.thisCycleRevenue/(e*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle),this.lastCycleExpenses=this.thisCycleExpenses/(e*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle),this.thisCycleRevenue=0,this.thisCycleExpenses=0,this.lastCycleRevenue>0&&(this.newInd=!1);let t=0;for(const a of Object.values(_enums__WEBPACK_IMPORTED_MODULE_0__.CityName)){const r=this.offices[a];r&&(t+=r.process(e,n,this))}this.thisCycleExpenses=this.thisCycleExpenses+t,this.processMaterialMarket(),this.processProductMarket(e),this.popularity-=1e-4*e,this.popularity=Math.max(0,this.popularity);const a=n.getDreamSenseGain(),r=4*a;if(a>0){const t=this.awareness+r*e;this.awareness=Math.min(t,Number.MAX_VALUE);const n=this.popularity+a*e;this.popularity=Math.min(n,Number.MAX_VALUE)}return}let a=this.processMaterials(e,n);Array.isArray(a)&&(this.thisCycleRevenue=this.thisCycleRevenue+a[0],this.thisCycleExpenses=this.thisCycleExpenses+a[1]),a=this.processProducts(e,n),Array.isArray(a)&&(this.thisCycleRevenue=this.thisCycleRevenue+a[0],this.thisCycleExpenses=this.thisCycleExpenses+a[1])}processMaterialMarket(){const e=this.requiredMaterials,t=this.producedMaterials;for(const n of Object.values(_enums__WEBPACK_IMPORTED_MODULE_0__.CityName))if(this.warehouses[n]){const a=this.warehouses[n];for(const t of Object.keys(e))Object.hasOwn(e,t)&&a.materials[t].processMarket();for(const e of t)a.materials[e].processMarket();a.materials.Hardware.processMarket(),a.materials.Robots.processMarket(),a.materials["AI Cores"].processMarket(),a.materials["Real Estate"].processMarket()}}processProductMarket(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;for(const t of this.products.values()){let n=4e-4*(0,_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_10__.X)(0,3);0!==n&&(this.type!==_enums__WEBPACK_IMPORTED_MODULE_0__.IndustryType.Pharmaceutical&&this.type!==_enums__WEBPACK_IMPORTED_MODULE_0__.IndustryType.Software&&this.type!==_enums__WEBPACK_IMPORTED_MODULE_0__.IndustryType.Robotics||(n*=3),n*=e,t.demand-=n,t.competition+=n,t.competition=Math.min(t.competition,99.99),t.demand=Math.max(t.demand,.001))}}processMaterials(){let marketCycles=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,corporation=arguments.length>1?arguments[1]:void 0,revenue=0,expenses=0;this.calculateProductionFactors();for(const[city,office]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(this.offices)){this.researchPoints+=.004*Math.pow(office.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.RandD],.5)*corporation.getScientificResearchMult()*this.getScientificResearchMultiplier(),expenses+=office.totalSalary;const warehouse=this.warehouses[city];if(warehouse){switch(this.state){case"PURCHASE":{const e={};for(const[t,n]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(warehouse.materials)){const a=this.requiredMaterials[t];if(warehouse.smartSupplyEnabled&&a){n.buyAmount=a*warehouse.smartSupplyStore;let r=n.buyAmount*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles;const o=Math.floor((warehouse.size-warehouse.sizeUsed)/_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__.d[t].size);r=Math.min(r,o),r>0&&(e[t]=[r,a])}else{let e=0,a=0;e=n.buyAmount*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles,a=Math.floor((warehouse.size-warehouse.sizeUsed)/_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__.d[t].size),e=Math.min(e,a),e>0&&(n.quality=Math.max(.1,(n.quality*n.stored+1*e)/(n.stored+e)),n.averagePrice=(n.stored*n.averagePrice+e*n.marketPrice)/(n.stored+e),n.stored+=e,expenses+=e*n.marketPrice),this.updateWarehouseSizeUsed(warehouse)}}let t=1e99;for(const[n,a]of Object.values(e)){const e=n/a;ea){const t=a/n;for(const n of Object.values(e))n[0]=Math.floor(n[0]*t)}for(const[t,n]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(e)){if("none"===warehouse.smartSupplyOptions[t])continue;const e=warehouse.materials[t];"leftovers"===warehouse.smartSupplyOptions[t]?n[0]=Math.max(0,n[0]-e.stored):n[0]=Math.max(0,n[0]-e.importAmount*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles)}for(const[t,[n]]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(e)){const e=warehouse.materials[t];e.stored+n!=0?(e.quality=(e.quality*e.stored+1*n)/(e.stored+n),e.averagePrice=(e.averagePrice*e.stored+e.marketPrice*n)/(e.stored+n)):(e.quality=1,e.averagePrice=e.marketPrice),e.stored+=n,e.buyAmount=n/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),expenses+=n*e.marketPrice}break}case"PRODUCTION":if(warehouse.smartSupplyStore=0,this.producedMaterials.length>0){const e=warehouse.materials[this.producedMaterials[0]],t=this.getOfficeProductivity(office)*this.productionMult*corporation.getProductionMultiplier()*this.getProductionMultiplier();let n;n=null===e.productionLimit?t:Math.min(t,e.productionLimit),n*=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles;let a=0;for(let e=0;e0){const e=Math.floor((warehouse.size-warehouse.sizeUsed)/a);n=Math.min(e,n)}n<0&&(n=0),warehouse.smartSupplyStore+=n/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles);let r=1;for(const[e,t]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(this.requiredMaterials)){const a=t*n;warehouse.materials[e].stored0&&n>0){const e=(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(this.requiredMaterials);let t=0;const a=e.length;for(const[o,i]of e){const e=i*n*r;warehouse.materials[o].stored=Math.max(0,warehouse.materials[o].stored-e),warehouse.materials[o].productionAmount=0,warehouse.materials[o].productionAmount-=e/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),t+=warehouse.materials[o].quality/a}t=Math.max(t,1);for(let e=0;emat.marketPrice?sCost-mat.marketPrice>markupLimit&&(markup=Math.pow(markupLimit/(sCost-mat.marketPrice),2)):sCost=0?(mat.stored-=sellAmt,revenue+=sellAmt*sCost,mat.actualSellAmount=sellAmt/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles)):mat.actualSellAmount=0}break;case"EXPORT":for(const matName of Object.values(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.materialNames))if(Object.hasOwn(warehouse.materials,matName)){const mat=warehouse.materials[matName];mat.exportedLastCycle=0;for(let expI=0;expI=expWarehouse.size)){{const e=Math.floor((expWarehouse.size-expWarehouse.sizeUsed)/_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__.d[matName].size);amt=Math.min(e,amt)}amt<=0||(expWarehouse.materials[matName].importAmount+=amt/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),expWarehouse.materials[matName].quality=Math.max(.1,(expWarehouse.materials[matName].quality*expWarehouse.materials[matName].stored+amt*mat.quality)/(expWarehouse.materials[matName].stored+amt)),expWarehouse.materials[matName].averagePrice=(expWarehouse.materials[matName].averagePrice*expWarehouse.materials[matName].stored+expWarehouse.materials[matName].marketPrice*amt)/(expWarehouse.materials[matName].stored+amt),expWarehouse.materials[matName].stored+=amt,mat.stored-=amt,mat.exportedLastCycle+=amt,expIndustry.updateWarehouseSizeUsed(expWarehouse))}}mat.exportedLastCycle/=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles}break;case"START":break;default:console.error(`Invalid state: ${this.state}`)}this.updateWarehouseSizeUsed(warehouse)}}return[revenue,expenses]}processProducts(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0,n=0;for(const[a,r]of this.products){if(!r.finished){if("PRODUCTION"!==this.state)continue;const t=r.creationCity,n=this.offices[t];if(!n){console.error(`Product ${a} being created in a city without an office. This is a bug.`);continue}r.createProduct(e,n.employeeProductionByJob),r.developmentProgress>=100&&r.finishProduct(this);break}n+=this.processProduct(e,r,t)}return[n,0]}processProduct(){let marketCycles=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,product=arguments.length>1?arguments[1]:void 0,corporation=arguments.length>2?arguments[2]:void 0,totalProfit=0;for(const[city,office]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(this.offices)){const warehouse=this.warehouses[city];if(warehouse)switch(this.state){case"PRODUCTION":{const e=this.getOfficeProductivity(office,{forProduct:!0})*corporation.getProductionMultiplier()*this.productionMult*this.getProductionMultiplier()*this.getProductProductionMultiplier();let t;const n=product.cityData[city].productionLimit;t=null!==n?Math.min(e,n):e,t*=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles;let a=product.size;for(const[e,t]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(product.requiredMaterials))a-=_MaterialInfo__WEBPACK_IMPORTED_MODULE_6__.d[e].size*t;if(a>0){const e=Math.floor((warehouse.size-warehouse.sizeUsed)/a);t=Math.min(e,t)}warehouse.smartSupplyStore+=t/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles);let r=1;for(const[e,n]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(product.requiredMaterials)){const a=n*t;warehouse.materials[e].stored0&&t>0){let e=1;for(const[n,a]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(product.requiredMaterials)){const o=a*t*r;warehouse.materials[n].stored-=o,warehouse.materials[n].productionAmount-=o/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),e+=warehouse.materials[n].quality}e/=Object.keys(product.requiredMaterials).length;const n=Math.min(product.rating,e*Math.pow(product.rating,.5));product.cityData[city].effectiveRating=(product.cityData[city].effectiveRating*product.cityData[city].stored+n*t*r)/(product.cityData[city].stored+t*r),product.cityData[city].stored+=t*r}product.cityData[city].productionAmount=t*r/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles);break}case"SALE":{product.productionCost=0;for(const[e,t]of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.m0)(product.requiredMaterials))product.productionCost+=t*warehouse.materials[e].marketPrice;product.productionCost*=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.baseProductProfitMult;const businessFactor=this.getBusinessFactor(office),advertisingFactor=this.getAdvertisingFactors()[0],marketFactor=this.getMarketFactor(product);let sellAmt;const adjustedQty=product.cityData[city].stored/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles),desiredSellAmount=product.cityData[city].desiredSellAmount;if((0,_utils_helpers_string__WEBPACK_IMPORTED_MODULE_11__.H)(desiredSellAmount)){let tmp=desiredSellAmount.replace(/MAX/g,adjustedQty.toString());tmp=tmp.replace(/PROD/g,product.cityData[city].productionAmount.toString());try{if(tmp=eval(tmp),"number"!=typeof tmp)throw""}catch(e){(0,_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_5__.X)(`Error evaluating your sell price expression for ${product.name} in ${this.name}'s ${city} office. Sell price is being set to MAX`),tmp=product.maxSellAmount}sellAmt=tmp}else sellAmt=desiredSellAmount&&desiredSellAmount>0?desiredSellAmount:adjustedQty;sellAmt<0&&(sellAmt=0);const markupLimit=Math.max(product.cityData[city].effectiveRating,.001)/product.markup;let sCost;const sellPrice=product.cityData[city].desiredSellPrice;if(product.marketTa2){const e=markupLimit,t=sellAmt,n=.5*Math.pow(product.cityData[city].effectiveRating,.65)*marketFactor*corporation.getSalesMult()*businessFactor*advertisingFactor*this.getSalesMultiplier(),a=Math.sqrt(t/n);let r;0===n||0===a?0===t?r=0:(r=product.productionCost+markupLimit,console.warn("In Corporation, found illegal 0s when trying to calculate MarketTA2 sale cost")):r=e/a+product.productionCost,sCost=r}else if(product.marketTa1)sCost=product.productionCost+markupLimit;else if((0,_utils_helpers_string__WEBPACK_IMPORTED_MODULE_11__.H)(sellPrice)){let sCostString=sellPrice;0===product.markup&&(console.error("mku is zero, reverting to 1 to avoid Infinity"),product.markup=1),sCostString=sCostString.replace(/MP/g,product.productionCost.toString()),sCost=Math.max(product.productionCost,eval(sCostString))}else sCost=sellPrice;product.uiMarketPrice[city]=sCost;let markup=1;sCost>product.productionCost&&sCost-product.productionCost>markupLimit&&(markup=markupLimit/(sCost-product.productionCost)),product.maxSellAmount=.5*Math.pow(product.cityData[city].effectiveRating,.65)*marketFactor*corporation.getSalesMult()*Math.pow(markup,2)*businessFactor*advertisingFactor*this.getSalesMultiplier(),sellAmt=Math.min(product.maxSellAmount,sellAmt),sellAmt=sellAmt*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles,sellAmt=Math.min(product.cityData[city].stored,sellAmt),sellAmt&&sCost?(product.cityData[city].stored-=sellAmt,totalProfit+=sellAmt*sCost,product.cityData[city].actualSellAmount=sellAmt/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.secondsPerMarketCycle*marketCycles)):product.cityData[city].actualSellAmount=0;break}case"START":case"PURCHASE":case"EXPORT":break;default:console.error(`Invalid State: ${this.state}`)}}return totalProfit}resetImports(e){if("EXPORT"===e)for(const e of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.R3)(this.warehouses))for(const t of(0,_Types_Record__WEBPACK_IMPORTED_MODULE_9__.R3)(e.materials))t.importAmount=0}discontinueProduct(e){this.products.delete(e)}getAdVertCost(){return 1e9*Math.pow(1.06,this.numAdVerts)}applyAdVert(e){const t=e.getAdvertisingMultiplier()*this.getAdvertisingMultiplier(),n=(this.awareness+3*t)*(1.005*t);this.awareness=Math.min(n,Number.MAX_VALUE);const a=(this.popularity+1*t)*((1+(0,_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_10__.X)(1,3)/200)*t);this.popularity=Math.min(a,Number.MAX_VALUE),++this.numAdVerts}getOfficeProductivity(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=e.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.Operations],a=e.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.Engineer],r=e.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.Management],o=n+a+r;if(o<=0)return 0;const i=1+r/(1.2*o),s=(Math.pow(n,.4)+Math.pow(a,.3))*i;return t&&t.forProduct?.025*s:.05*s}getBusinessFactor(e){const t=1+e.employeeProductionByJob[_enums__WEBPACK_IMPORTED_MODULE_0__.CorpEmployeeJob.Business];return(0,_utils_calculateEffectWithFactors__WEBPACK_IMPORTED_MODULE_12__.o)(t,.26,1e4)}getAdvertisingFactors(){const e=Math.pow(this.awareness+1,this.advertisingFactor),t=Math.pow(this.popularity+1,this.advertisingFactor),n=0===this.awareness?.01:Math.max((this.popularity+.001)/this.awareness,.01);return[Math.pow(e*t*n,.85),e,t,n]}getMarketFactor(e){return Math.max(.1,e.demand*(100-e.competition)/100)}hasResearch(e){return this.researched.has(e)}updateResearchTree(){if(this.treeInitialized)return;const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];for(const t of this.researched)e.research(t);for(const t of e.researched)this.researched.add(t);this.treeInitialized=!0}getAdvertisingMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getAdvertisingMultiplier()}getEmployeeChaMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getEmployeeChaMultiplier()}getEmployeeCreMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getEmployeeCreMultiplier()}getEmployeeEffMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getEmployeeEffMultiplier()}getEmployeeIntMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getEmployeeIntMultiplier()}getProductionMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getProductionMultiplier()}getProductProductionMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getProductProductionMultiplier()}getSalesMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getSalesMultiplier()}getScientificResearchMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getScientificResearchMultiplier()}getStorageMultiplier(){const e=_data_IndustryData__WEBPACK_IMPORTED_MODULE_2__.E5[this.type];return this.updateResearchTree(),e.getStorageMultiplier()}toJSON(){return(0,_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_1__.L3)("Division",this,Division.includedKeys)}static fromJSON(e){return(0,_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_1__.Id)(Division,e.data,Division.includedKeys)}static includedKeys=(0,_utils_helpers_getKeyList__WEBPACK_IMPORTED_MODULE_13__.i)(Division,{removedKeys:["treeInitialized"]})}_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_1__.gY.Division=Division},15905:(e,t,n)=>{"use strict";let a,r,o,i;n.d(t,{Ku:()=>s,LE:()=>l,LS:()=>a,UG:()=>i,_K:()=>r,d$:()=>m,pm:()=>o,q7:()=>u,uq:()=>c}),function(e){e.Water="Water Utilities",e.Spring="Spring Water",e.Agriculture="Agriculture",e.Fishing="Fishing",e.Mining="Mining",e.Refinery="Refinery",e.Restaurant="Restaurant",e.Tobacco="Tobacco",e.Chemical="Chemical",e.Pharmaceutical="Pharmaceutical",e.Computers="Computer Hardware",e.Robotics="Robotics",e.Software="Software",e.Healthcare="Healthcare",e.RealEstate="Real Estate"}(a||(a={})),function(e){e.Operations="Operations",e.Engineer="Engineer",e.Business="Business",e.Management="Management",e.RandD="Research & Development",e.Intern="Intern",e.Unassigned="Unassigned"}(r||(r={})),function(e){e.Export="Export",e.SmartSupply="Smart Supply",e.MarketResearchDemand="Market Research - Demand",e.MarketDataCompetition="Market Data - Competition",e.VeChain="VeChain",e.ShadyAccounting="Shady Accounting",e.GovernmentPartnership="Government Partnership",e.WarehouseAPI="Warehouse API",e.OfficeAPI="Office API"}(o||(o={})),function(e){e.SmartFactories="Smart Factories",e.SmartStorage="Smart Storage",e.DreamSense="DreamSense",e.WilsonAnalytics="Wilson Analytics",e.NuoptimalNootropicInjectorImplants="Nuoptimal Nootropic Injector Implants",e.SpeechProcessorImplants="Speech Processor Implants",e.NeuralAccelerators="Neural Accelerators",e.FocusWires="FocusWires",e.ABCSalesBots="ABC SalesBots",e.ProjectInsight="Project Insight"}(i||(i={}));const s={Water:"Water",Ore:"Ore",Minerals:"Minerals",Food:"Food",Plants:"Plants",Metal:"Metal",Hardware:"Hardware",Chemicals:"Chemicals",Drugs:"Drugs",Robots:"Robots",AiCores:"AI Cores",RealEstate:"Real Estate"},l={leftovers:"leftovers",imports:"imports",none:"none"},c={Lab:"Hi-Tech R&D Laboratory",AutoBrew:"AutoBrew",AutoParty:"AutoPartyManager",AutoDrug:"Automatic Drug Administration",CPH4Inject:"CPH4 Injections",Drones:"Drones",DronesAssembly:"Drones - Assembly",DronesTransport:"Drones - Transport",GoJuice:"Go-Juice",RecruitHR:"HRBuddy-Recruitment",TrainingHR:"HRBuddy-Training",MarketTa1:"Market-TA.I",MarketTa2:"Market-TA.II",Overclock:"Overclock",SelfCorrectAssemblers:"Self-Correcting Assemblers",Stimu:"Sti.mu"},u={Capacity1:"uPgrade: Capacity.I",Capacity2:"uPgrade: Capacity.II",Dashboard:"uPgrade: Dashboard",Fulcrum:"uPgrade: Fulcrum"},m={...u,...c}},99160:(e,t,n)=>{"use strict";n.d(t,{F:()=>i});var a=n(94515),r=n(80692),o=n(51004);class i{stored=0;quality=1;demand=0;demandRange=[0,0];competition=0;competitionRange=[0,0];maxVolatility=0;markup=0;buyAmount=0;actualSellAmount=0;productionAmount=0;importAmount=0;exports=[];exportedLastCycle=0;marketPrice=0;averagePrice=0;productionLimit=null;desiredSellAmount=0;desiredSellPrice="";marketTa1=!1;marketTa2=!1;uiMarketPrice=0;maxSellPerCycle=0;constructor(e){this.name=(null==e?void 0:e.name)??r.materialNames[0],this.demand=o.d[this.name].demandBase,this.demandRange=o.d[this.name].demandRange,this.competition=o.d[this.name].competitionBase,this.competitionRange=o.d[this.name].competitionRange,this.marketPrice=o.d[this.name].baseCost,this.maxVolatility=o.d[this.name].maxVolatility,this.markup=o.d[this.name].baseMarkup}getMarkupLimit(){return this.quality/this.markup}processMarket(){const e=1+Math.random()*this.maxVolatility/300,t=1+Math.random()*this.maxVolatility/100;Math.random()<.5?(this.competition*=t,this.competition>this.competitionRange[1]&&(this.competition=this.competitionRange[1]),this.marketPrice*=1/e):(this.competition*=1/t,this.competitionthis.demandRange[1]&&(this.demand=this.demandRange[1]),this.marketPrice*=e):(this.demand*=1/n,this.demand{"use strict";n.d(t,{d:()=>a});const a={Water:{name:"Water",size:.05,demandBase:75,demandRange:[65,85],competitionBase:50,competitionRange:[40,60],baseCost:1500,maxVolatility:.2,baseMarkup:6},Ore:{name:"Ore",size:.01,demandBase:50,demandRange:[40,60],competitionBase:80,competitionRange:[65,95],baseCost:500,maxVolatility:.2,baseMarkup:6},Minerals:{name:"Minerals",size:.04,demandBase:75,demandRange:[90,60],competitionBase:80,competitionRange:[65,95],baseCost:500,maxVolatility:.2,baseMarkup:6},Food:{name:"Food",size:.03,demandBase:80,demandRange:[70,90],competitionBase:60,competitionRange:[35,85],baseCost:5e3,maxVolatility:1,baseMarkup:3},Plants:{name:"Plants",size:.05,demandBase:70,demandRange:[20,90],competitionBase:50,competitionRange:[30,70],baseCost:3e3,maxVolatility:.6,baseMarkup:3.75},Metal:{name:"Metal",size:.1,demandBase:80,demandRange:[75,85],competitionBase:70,competitionRange:[60,80],baseCost:2650,maxVolatility:1,baseMarkup:6},Hardware:{name:"Hardware",size:.06,demandBase:85,demandRange:[80,90],competitionBase:80,competitionRange:[65,95],baseCost:8e3,maxVolatility:.5,baseMarkup:1},Chemicals:{name:"Chemicals",size:.05,demandBase:55,demandRange:[40,70],competitionBase:60,competitionRange:[40,80],baseCost:9e3,maxVolatility:1.2,baseMarkup:2},Drugs:{name:"Drugs",size:.02,demandBase:60,demandRange:[45,75],competitionBase:70,competitionRange:[40,99],baseCost:4e4,maxVolatility:1.6,baseMarkup:1},Robots:{name:"Robots",size:.5,demandBase:90,demandRange:[80,99],competitionBase:90,competitionRange:[80,99],baseCost:75e3,maxVolatility:.5,baseMarkup:1},"AI Cores":{name:"AI Cores",size:.1,demandBase:90,demandRange:[80,99],competitionBase:90,competitionRange:[80,99],baseCost:15e3,maxVolatility:.8,baseMarkup:.5},"Real Estate":{name:"Real Estate",size:.005,demandBase:50,demandRange:[5,99],competitionBase:50,competitionRange:[25,75],baseCost:8e4,maxVolatility:1.5,baseMarkup:1.5}}},80741:(e,t,n)=>{"use strict";n.d(t,{Q:()=>l});var a=n(33244),r=n(80692),o=n(94515),i=n(92666),s=n(21623);class l{city=a.CityName.Sector12;size=1;maxEnergy=100;maxMorale=100;avgEnergy=75;avgMorale=75;avgIntelligence=75;avgCharisma=75;avgCreativity=75;avgEfficiency=75;totalExperience=0;numEmployees=0;totalSalary=0;autoTea=!1;autoParty=!1;teaPending=!1;partyMult=1;employeeProductionByJob={total:0,...(0,s.KW)(a.CorpEmployeeJob,(()=>0))};employeeJobs=(0,s.KW)(a.CorpEmployeeJob,(()=>0));employeeNextJobs=(0,s.KW)(a.CorpEmployeeJob,(()=>0));constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.city=e.city,this.size=e.size)}atCapacity(){return this.numEmployees>=this.size}process(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;n.hasResearch("HRBuddy-Recruitment")&&!this.atCapacity()&&this.hireRandomEmployee(n.hasResearch("HRBuddy-Training")?a.CorpEmployeeJob.Intern:a.CorpEmployeeJob.Unassigned);for(const[e,t]of Object.entries(this.employeeNextJobs))this.employeeJobs[e]=t;if(this.maxEnergy=100,this.maxMorale=100,n.hasResearch("Go-Juice")&&(this.maxEnergy+=10),n.hasResearch("Sti.mu")&&(this.maxMorale+=10),n.hasResearch("AutoBrew")&&(this.autoTea=!0),n.hasResearch("AutoPartyManager")&&(this.autoParty=!0),this.numEmployees>0){let a=1.002;this.numEmployees>=9&&(a=Math.pow(1+.002*Math.min(1/9,this.employeeJobs.Intern/this.numEmployees-1/9)*9-(t.funds<0&&n.lastCycleRevenue1?10*(this.partyMult-1):0;this.avgMorale=((this.avgMorale-o*Math.random())*a+e)*this.partyMult}this.avgEnergy=Math.max(Math.min(this.avgEnergy,this.maxEnergy),r.minEmployeeDecay),this.avgMorale=Math.max(Math.min(this.avgMorale,this.maxMorale),r.minEmployeeDecay),this.teaPending=!1,this.partyMult=1}return this.totalExperience+=.0015*e*(this.numEmployees-this.employeeJobs[a.CorpEmployeeJob.Unassigned]+9*this.employeeJobs[a.CorpEmployeeJob.Intern]),this.calculateEmployeeProductivity(t,n),0===this.numEmployees?this.totalSalary=0:this.totalSalary=r.employeeSalaryMultiplier*e*this.numEmployees*(this.avgIntelligence+this.avgCharisma+this.totalExperience/this.numEmployees+this.avgCreativity+this.avgEfficiency),this.totalSalary}calculateEmployeeProductivity(e,t){const n=this.avgCreativity*e.getEmployeeCreMultiplier()*t.getEmployeeCreMultiplier(),r=this.avgCharisma*e.getEmployeeChaMult()*t.getEmployeeChaMultiplier(),o=this.avgIntelligence*e.getEmployeeIntMult()*t.getEmployeeIntMultiplier(),i=this.avgEfficiency*e.getEmployeeEffMult()*t.getEmployeeEffMultiplier(),l=this.avgMorale*this.avgEnergy*1e-4;let c=0;const u=this.totalExperience/this.numEmployees||0;for(const e of(0,s.nd)(this.employeeProductionByJob)){let t=0;switch(e){case a.CorpEmployeeJob.Operations:t=.6*o+.1*r+u+.5*n+i;break;case a.CorpEmployeeJob.Engineer:t=o+.1*r+1.5*u+i;break;case a.CorpEmployeeJob.Business:t=.4*o+r+.5*u;break;case a.CorpEmployeeJob.Management:t=2*r+u+.2*n+.7*i;break;case a.CorpEmployeeJob.RandD:t=1.5*o+.8*u+n+.5*i;break;case a.CorpEmployeeJob.Unassigned:case a.CorpEmployeeJob.Intern:case"total":continue;default:console.error(`Invalid employee position: ${e}`)}this.employeeProductionByJob[e]=this.employeeJobs[e]*t*l,c+=this.employeeProductionByJob[e]}this.employeeProductionByJob.total=c}hireRandomEmployee(e){return!this.atCapacity()&&null==document.getElementById("cmpy-mgmt-hire-employee-popup")&&(++this.numEmployees,++this.employeeJobs[e],++this.employeeNextJobs[e],this.totalExperience+=(0,i.X)(50,100),this.avgMorale=(this.avgMorale*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgEnergy=(this.avgEnergy*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgIntelligence=(this.avgIntelligence*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgCharisma=(this.avgCharisma*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgCreativity=(this.avgCreativity*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),this.avgEfficiency=(this.avgEfficiency*this.numEmployees+(0,i.X)(50,100))/(this.numEmployees+1),!0)}autoAssignJob(e,t){if(e===a.CorpEmployeeJob.Unassigned)throw new Error("internal autoAssignJob function called with EmployeePositions.Unassigned");const n=t-this.employeeNextJobs[e];return 0===n||n<=this.employeeNextJobs[a.CorpEmployeeJob.Unassigned]&&(this.employeeNextJobs[a.CorpEmployeeJob.Unassigned]-=n,this.employeeNextJobs[e]=t,!0)}getTeaCost(){return r.teaCostPerEmployee*this.numEmployees}setTea(){return!this.teaPending&&!this.autoTea&&this.numEmployees>0&&(this.teaPending=!0,!0)}setParty(e){return e>1&&1===this.partyMult&&!this.autoParty&&this.numEmployees>0&&(this.partyMult=e,!0)}toJSON(){return(0,o.L3)("OfficeSpace",this)}static fromJSON(e){return(0,o.Id)(l,e.data)}}o.gY.OfficeSpace=l},77396:(e,t,n)=>{"use strict";n.d(t,{x:()=>c});var a=n(33244),r=n(32927),o=n(51004),i=n(94515),s=n(92666),l=n(21623);class c{name="DefaultProductName";demand=0;competition=0;markup=0;productionCost=0;finished=!1;developmentProgress=0;creationCity=a.CityName.Sector12;designInvestment=0;advertisingInvestment=0;creationJobFactors={[a.CorpEmployeeJob.Operations]:0,[a.CorpEmployeeJob.Engineer]:0,[a.CorpEmployeeJob.Business]:0,[a.CorpEmployeeJob.Management]:0,[a.CorpEmployeeJob.RandD]:0,total:0};rating=0;stats={quality:0,performance:0,durability:0,reliability:0,aesthetics:0,features:0};cityData=(0,l.KW)(a.CityName,(()=>({stored:0,productionAmount:0,actualSellAmount:0,effectiveRating:0,productionLimit:null,desiredSellAmount:0,desiredSellPrice:""})));size=0;requiredMaterials={};marketTa1=!1;marketTa2=!1;uiMarketPrice=(0,l.KW)(a.CityName,(()=>0));maxSellAmount=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.name=e.name,this.creationCity=e.createCity,this.designInvestment=e.designInvestment,this.advertisingInvestment=e.advertisingInvestment)}createProduct(e,t){if(this.finished)return;const n=t[a.CorpEmployeeJob.Operations],r=t[a.CorpEmployeeJob.Engineer],o=t[a.CorpEmployeeJob.Management],i=n+r+o;if(i<=0)return;const s=1+o/(1.2*i),c=(Math.pow(r,.34)+Math.pow(n,.2))*s,u=Math.min(.01*e*c,100-this.developmentProgress);if(!(u<=0)){this.developmentProgress+=u;for(const e of(0,l.nd)(t))this.creationJobFactors[e]+=t[e]*u/100}}finishProduct(e){this.finished=!0;const t=this.creationJobFactors.total,n=this.creationJobFactors[a.CorpEmployeeJob.Engineer]/t,r=this.creationJobFactors[a.CorpEmployeeJob.Management]/t,i=this.creationJobFactors[a.CorpEmployeeJob.RandD]/t,c=this.creationJobFactors[a.CorpEmployeeJob.Operations]/t,u=this.creationJobFactors[a.CorpEmployeeJob.Business]/t,m=(1.2*n+.9*r+1.3*i+1.5*c+u)*(1+Math.pow(this.designInvestment,.1)/100)*(1+Math.pow(e.researchPoints,e.researchFactor)/800);this.stats.quality=m*(.1*this.creationJobFactors[a.CorpEmployeeJob.Engineer]+.05*this.creationJobFactors[a.CorpEmployeeJob.Management]+.05*this.creationJobFactors[a.CorpEmployeeJob.RandD]+.02*this.creationJobFactors[a.CorpEmployeeJob.Operations]+.02*this.creationJobFactors[a.CorpEmployeeJob.Business]),this.stats.performance=m*(.15*this.creationJobFactors[a.CorpEmployeeJob.Engineer]+.02*this.creationJobFactors[a.CorpEmployeeJob.Management]+.02*this.creationJobFactors[a.CorpEmployeeJob.RandD]+.02*this.creationJobFactors[a.CorpEmployeeJob.Operations]+.02*this.creationJobFactors[a.CorpEmployeeJob.Business]),this.stats.durability=m*(.05*this.creationJobFactors[a.CorpEmployeeJob.Engineer]+.02*this.creationJobFactors[a.CorpEmployeeJob.Management]+.08*this.creationJobFactors[a.CorpEmployeeJob.RandD]+.05*this.creationJobFactors[a.CorpEmployeeJob.Operations]+.05*this.creationJobFactors[a.CorpEmployeeJob.Business]),this.stats.reliability=m*(.02*this.creationJobFactors[a.CorpEmployeeJob.Engineer]+.08*this.creationJobFactors[a.CorpEmployeeJob.Management]+.02*this.creationJobFactors[a.CorpEmployeeJob.RandD]+.05*this.creationJobFactors[a.CorpEmployeeJob.Operations]+.08*this.creationJobFactors[a.CorpEmployeeJob.Business]),this.stats.aesthetics=m*(0*this.creationJobFactors[a.CorpEmployeeJob.Engineer]+.08*this.creationJobFactors[a.CorpEmployeeJob.Management]+.05*this.creationJobFactors[a.CorpEmployeeJob.RandD]+.02*this.creationJobFactors[a.CorpEmployeeJob.Operations]+.1*this.creationJobFactors[a.CorpEmployeeJob.Business]),this.stats.features=m*(.08*this.creationJobFactors[a.CorpEmployeeJob.Engineer]+.05*this.creationJobFactors[a.CorpEmployeeJob.Management]+.02*this.creationJobFactors[a.CorpEmployeeJob.RandD]+.05*this.creationJobFactors[a.CorpEmployeeJob.Operations]+.05*this.creationJobFactors[a.CorpEmployeeJob.Business]),this.calculateRating(e);const f=1+Math.pow(this.advertisingInvestment,.1)/100,h=Math.max(u+r,1/t);this.markup=100/(f*Math.pow(this.stats.quality+.001,.65)*h),0!==this.markup&&isFinite(this.markup)||(this.markup=1),this.demand=0===e.awareness?20:Math.min(100,f*(e.popularity/e.awareness*100)),this.competition=(0,s.X)(0,70),this.size=0;for(const[t,n]of(0,l.m0)(e.requiredMaterials))this.requiredMaterials[t]=n,this.size+=o.d[t].size*n}calculateRating(e){var t;const n=null===(t=r.vm[e.type].product)||void 0===t?void 0:t.ratingWeights;if(!n)return console.error(`Could not find product rating weights for: ${e}`);this.rating=(0,l.m0)(n).reduce(((e,t)=>{let[n,a]=t;return e+this.stats[n]*a}),0)}toJSON(){return(0,i.L3)("Product",this)}static fromJSON(e){return(0,i.Id)(c,e.data)}}i.gY.Product=c},86546:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});class a{name="AutoBrew";cost=0;description="";advertisingMult=1;employeeChaMult=1;employeeCreMult=1;employeeEffMult=1;employeeIntMult=1;productionMult=1;productProductionMult=1;salesMult=1;sciResearchMult=1;storageMult=1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.name=e.name,this.cost=e.cost,this.description=e.desc,this.advertisingMult=e.advertisingMult??1,this.employeeChaMult=e.employeeChaMult??1,this.employeeCreMult=e.employeeCreMult??1,this.employeeEffMult=e.employeeEffMult??1,this.employeeIntMult=e.employeeIntMult??1,this.productionMult=e.productionMult??1,this.productProductionMult=e.productProductionMult??1,this.salesMult=e.salesMult??1,this.sciResearchMult=e.sciResearchMult??1,this.storageMult=e.storageMult??1)}}},78845:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});var a=n(86546);const r={AutoBrew:new a.A({name:"AutoBrew",cost:12e3,desc:"Automatically keep your employees fully caffeinated with tea injections. This research will keep the energy of all employees at its maximum possible value, for no cost. This will also disable the Tea upgrade."}),AutoPartyManager:new a.A({name:"AutoPartyManager",cost:15e3,desc:"Automatically analyzes your employees' morale and boosts them whenever it detects a decrease. This research will keep the morale of all employees at their maximum possible values, for no cost. This will also disable the 'Throw Party' feature."}),"Automatic Drug Administration":new a.A({name:"Automatic Drug Administration",cost:1e4,desc:"Research how to automatically administer performance-enhancing drugs to all of your employees. This unlocks Drug-related Research."}),"CPH4 Injections":new a.A({name:"CPH4 Injections",cost:25e3,desc:"Develop an advanced and harmless synthetic drug that is administered to employees to increase all of their stats, except experience, by 10%.",employeeCreMult:1.1,employeeChaMult:1.1,employeeEffMult:1.1,employeeIntMult:1.1}),Drones:new a.A({name:"Drones",cost:5e3,desc:"Acquire the knowledge needed to create advanced drones. This research does nothing by itself, but unlocks other Drone-related research."}),"Drones - Assembly":new a.A({name:"Drones - Assembly",cost:25e3,desc:"Manufacture and use Assembly Drones to improve the efficiency of your production lines. This increases all production by 20%.",productionMult:1.2}),"Drones - Transport":new a.A({name:"Drones - Transport",cost:3e4,desc:"Manufacture and use intelligent Transport Drones to optimize your warehouses. This increases the storage space of all warehouses by 50%.",storageMult:1.5}),"Go-Juice":new a.A({name:"Go-Juice",cost:25e3,desc:"Provide employees with Go-Juice, a tea-derivative that further enhances the brain's dopamine production. This increases the maximum energy of all employees by 10."}),"HRBuddy-Recruitment":new a.A({name:"HRBuddy-Recruitment",cost:15e3,desc:"Use automated software to handle the hiring of employees. With this research, each office will automatically hire one employee per market cycle if there is available space."}),"HRBuddy-Training":new a.A({name:"HRBuddy-Training",cost:2e4,desc:"Use automated software to handle the training of employees. With this research, each employee hired with HRBuddy-Recruitment will automatically be assigned to 'Intern', rather than being unassigned."}),"Hi-Tech R&D Laboratory":new a.A({name:"Hi-Tech R&D Laboratory",cost:5e3,desc:"Construct a cutting-edge facility dedicated to advanced research and development. This allows you to spend Scientific Research on powerful upgrades. It also globally increases Scientific Research production by 10%.",sciResearchMult:1.1}),"Market-TA.I":new a.A({name:"Market-TA.I",cost:2e4,desc:"Develop advanced AI software that uses technical analysis to help you understand and exploit the market. This research allows you to know what price to sell your Materials/Products at in order to avoid losing sales due to having too high of a mark-up. It also lets you automatically use that sale price."}),"Market-TA.II":new a.A({name:"Market-TA.II",cost:5e4,desc:"Develop double-advanced AI software that uses technical analysis to help you understand and exploit the market. This research allows you to know how many sales of a Material/Product you lose or gain from having too high or too low of a sale price. It also lets you automatically set the sale price of your Materials/Products at the optimal price such that the amount sold matches the amount produced."}),Overclock:new a.A({name:"Overclock",cost:15e3,desc:"Equip employees with a headset that uses transcranial direct current stimulation (tDCS) to increase the speed of their neurotransmitters. This research increases the intelligence and efficiency of all employees by 25%.",employeeEffMult:1.25,employeeIntMult:1.25}),"Self-Correcting Assemblers":new a.A({name:"Self-Correcting Assemblers",cost:25e3,desc:"Create assemblers that can be used for universal production. These assemblers use deep learning to improve their efficiency at their tasks. This research increases all production by 10%.",productionMult:1.1}),"Sti.mu":new a.A({name:"Sti.mu",cost:3e4,desc:"Upgrade the tDCS headset to stimulate regions of the brain that control confidence and enthusiasm. This research increases the maximum morale of all employees by 10."}),"sudo.Assist":new a.A({name:"sudo.Assist",cost:15e3,desc:"Develop a virtual assistant AI to handle and manage administrative issues for your corporation."}),"uPgrade: Capacity.I":new a.A({name:"uPgrade: Capacity.I",cost:2e4,desc:"Expand the industry's capacity for designing and manufacturing its various products. This increases the industry's maximum number of products by 1 (from 3 to 4)."}),"uPgrade: Capacity.II":new a.A({name:"uPgrade: Capacity.II",cost:3e4,desc:"Expand the industry's capacity for designing and manufacturing its various products. This increases the industry's maximum number of products by 1 (from 4 to 5)."}),"uPgrade: Dashboard":new a.A({name:"uPgrade: Dashboard",cost:5e3,desc:"Improve the software used to manage the industry's production line for its various products. This allows you to manage the production and sale of a product before it's finished being designed."}),"uPgrade: Fulcrum":new a.A({name:"uPgrade: Fulcrum",cost:1e4,desc:"Streamline the manufacturing of this industry's various products. This research increases the production of your products by 5%.",productProductionMult:1.05})}},76412:(e,t,n)=>{"use strict";n.d(t,{F:()=>o,N:()=>r});var a=n(78845);class r{children=[];cost=0;researched=!1;parent=null;constructor(e){this.researchName=e.researchName,this.cost=e.cost,e.children&&e.children.length>0&&(this.children=e.children),null!=e.parent&&(this.parent=e.parent)}addChild(e){this.children.push(e),e.parent=this}findNode(e){if(this.researchName===e)return this;let t=null;for(let n=0;n{"use strict";n.d(t,{C:()=>u});var a=n(49173),r=n(33244),o=n(99160),i=n(51004),s=n(94515),l=n(80692),c=n(21623);class u{level=1;city=r.CityName.Sector12;materials=(0,c.cD)(l.materialNames.map((e=>[e,new o.F({name:e})])));size=0;sizeUsed=0;smartSupplyEnabled=!1;smartSupplyOptions=(0,c.cD)(l.materialNames.map((e=>[e,"leftovers"])));smartSupplyStore=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=a.J5.corporation;t&&null!==e&&(this.city=e.loc,this.size=e.size,this.updateSize(t,e.division),t.unlocks.has(r.CorpUnlockName.SmartSupply)&&(this.smartSupplyEnabled=!0))}updateMaterialSizeUsed(){this.sizeUsed=0;for(const[e,t]of(0,c.m0)(this.materials))this.sizeUsed+=t.stored*i.d[e].size;this.sizeUsed>this.size&&console.warn("Warehouse size used greater than capacity, something went wrong")}updateSize(e,t){this.size=100*this.level*e.getStorageMultiplier()*t.getStorageMultiplier()}toJSON(){return(0,s.L3)("Warehouse",this)}static fromJSON(e){return(0,s.Id)(u,e.data)}}s.gY.Warehouse=u},52242:(e,t,n)=>{"use strict";n.d(t,{M:()=>l,a:()=>s});var a=n(78845),r=n(76412);function o(e){const t=a.k[e];return new r.N({researchName:t.name,cost:t.cost})}function i(){const e=o("Hi-Tech R&D Laboratory"),t=o("AutoBrew"),n=o("AutoPartyManager"),a=o("Automatic Drug Administration"),r=o("CPH4 Injections"),i=o("Drones"),s=o("Drones - Assembly"),l=o("Drones - Transport"),c=o("Go-Juice"),u=o("HRBuddy-Recruitment"),m=o("HRBuddy-Training"),f=o("Market-TA.I"),h=o("Market-TA.II"),d=o("Overclock"),p=o("Self-Correcting Assemblers"),g=o("Sti.mu");return a.addChild(c),a.addChild(r),i.addChild(s),i.addChild(l),u.addChild(m),f.addChild(h),d.addChild(g),e.addChild(t),e.addChild(n),e.addChild(a),e.addChild(i),e.addChild(u),e.addChild(f),e.addChild(d),e.addChild(p),e}function s(){const e=new r.F;return e.setRoot(i()),e}function l(){const e=new r.F,t=i(),n=o("uPgrade: Fulcrum"),a=o("uPgrade: Capacity.I"),s=o("uPgrade: Capacity.II"),l=o("uPgrade: Dashboard");return a.addChild(s),n.addChild(a),n.addChild(l),t.addChild(n),e.setRoot(t),e}},80692:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PurchaseMultipliers:()=>J,baseProductProfitMult:()=>L,bribeAmountPerReputation:()=>T,bribeThreshold:()=>A,dividendMaxRate:()=>R,employeePositions:()=>i,employeeRaiseAmount:()=>_,employeeSalaryMultiplier:()=>F,fundingRoundMultiplier:()=>O,fundingRoundShares:()=>B,gameCyclesPerCorpStateCycle:()=>k,gameCyclesPerMarketCycle:()=>v,industryNames:()=>s,initialShares:()=>d,issueNewSharesCooldown:()=>g,marketCyclesPerEmployeeRaise:()=>I,materialNames:()=>l,maxProductsBase:()=>P,minEmployeeDecay:()=>Z,officeInitialCost:()=>x,officeInitialSize:()=>N,officeSizeUpgradeCostBase:()=>M,researchNames:()=>h,researchNamesBase:()=>m,researchNamesProductOnly:()=>f,secondsPerMarketCycle:()=>w,sellSharesCooldown:()=>y,sharesPerPriceUpdate:()=>p,smartSupplyOptions:()=>G,stateNames:()=>o,teaCostPerEmployee:()=>b,unlockNames:()=>c,upgradeNames:()=>u,valuationLength:()=>D,warehouseInitialCost:()=>E,warehouseInitialSize:()=>S,warehouseSizeUpgradeCostBase:()=>C});var a=n(72938),r=n(33244);const o=["START","PURCHASE","PRODUCTION","EXPORT","SALE"],i=Object.values(r.CorpEmployeeJob),s=Object.values(r.IndustryType),l=Object.values(r.CorpMaterialName),c=Object.values(r.CorpUnlockName),u=Object.values(r.CorpUpgradeName),m=Object.values(r.CorpBaseResearchName),f=Object.values(r.CorpProductResearchName),h=[...m,...f],d=1e9,p=1e6,g=72e3,y=18e3,b=5e5,v=50,k=v/o.length,w=v*a.t.MilliPerCycle/1e3,E=5e9,S=100,C=1e9,x=4e9,N=3,M=1e9,A=1e14,T=1e9,L=5,R=1,F=3,I=400,_=50,P=3,B=[.1,.35,.25,.2],O=[3,2,2,1.5],D=10,Z=10,G=Object.values(r.SmartSupplyOption),J={x1:1,x5:5,x10:10,x50:50,x100:100,MAX:"MAX"}},61226:(e,t,n)=>{"use strict";n.d(t,{D:()=>r});var a=n(33244);const r={[a.CorpUnlockName.Export]:{name:a.CorpUnlockName.Export,price:2e10,desc:"Develop infrastructure to export your materials to your other facilities. This allows you to move materials around between different divisions and cities."},[a.CorpUnlockName.SmartSupply]:{name:a.CorpUnlockName.SmartSupply,price:25e9,desc:"Use advanced AI to anticipate your supply needs. This allows you to purchase exactly however many materials you need for production."},[a.CorpUnlockName.MarketResearchDemand]:{name:a.CorpUnlockName.MarketResearchDemand,price:5e9,desc:"Mine and analyze market data to determine the demand of all resources. The demand attribute, which affects sales, will be displayed for every material and product."},[a.CorpUnlockName.MarketDataCompetition]:{name:a.CorpUnlockName.MarketDataCompetition,price:5e9,desc:"Mine and analyze market data to determine how much competition there is on the market for all resources. The competition attribute, which affects sales, will be displayed for every material and product."},[a.CorpUnlockName.VeChain]:{name:a.CorpUnlockName.VeChain,price:1e10,desc:"Use AI and blockchain technology to identify where you can improve your supply chain systems. This upgrade will allow you to view a wide array of useful statistics about your Corporation."},[a.CorpUnlockName.ShadyAccounting]:{name:a.CorpUnlockName.ShadyAccounting,price:5e14,desc:"Utilize unscrupulous accounting practices and pay off government officials to save money on taxes. This reduces the dividend tax rate by 5%."},[a.CorpUnlockName.GovernmentPartnership]:{name:a.CorpUnlockName.GovernmentPartnership,price:2e15,desc:"Help national governments further their agendas in exchange for lowered taxes. This reduces the dividend tax rate by 10%"},[a.CorpUnlockName.WarehouseAPI]:{name:a.CorpUnlockName.WarehouseAPI,price:5e10,desc:"Enables the warehouse API."},[a.CorpUnlockName.OfficeAPI]:{name:a.CorpUnlockName.OfficeAPI,price:5e10,desc:"Enables the office API."}}},51326:(e,t,n)=>{"use strict";n.d(t,{x:()=>r});var a=n(33244);const r={[a.CorpUpgradeName.SmartFactories]:{name:a.CorpUpgradeName.SmartFactories,basePrice:2e9,priceMult:1.06,benefit:.03,desc:"Advanced AI automatically optimizes the operation and productivity of factories. Each level of this upgrade increases your global production by 3% (additive)."},[a.CorpUpgradeName.SmartStorage]:{name:a.CorpUpgradeName.SmartStorage,basePrice:2e9,priceMult:1.06,benefit:.1,desc:"Advanced AI automatically optimizes your warehouse storage methods. Each level of this upgrade increases your global warehouse storage size by 10% (additive)."},[a.CorpUpgradeName.DreamSense]:{name:a.CorpUpgradeName.DreamSense,basePrice:4e9,priceMult:1.1,benefit:.001,desc:"Use DreamSense LCC Technologies to advertise your corporation to consumers through their dreams. Each level of this upgrade provides a passive increase in awareness of all of your companies (divisions) by 0.004 / market cycle,and in popularity by 0.001 / market cycle. A market cycle is approximately 10 seconds."},[a.CorpUpgradeName.WilsonAnalytics]:{name:a.CorpUpgradeName.WilsonAnalytics,basePrice:4e9,priceMult:2,benefit:.005,desc:"Purchase data and analysis from Wilson, a marketing research firm. Each level of this upgrade increases the effectiveness of your advertising by 0.5% (additive)."},[a.CorpUpgradeName.NuoptimalNootropicInjectorImplants]:{name:a.CorpUpgradeName.NuoptimalNootropicInjectorImplants,basePrice:1e9,priceMult:1.06,benefit:.1,desc:"Purchase the Nuoptimal Nootropic Injector augmentation for your employees. Each level of this upgrade globally increases the creativity of your employees by 10% (additive)."},[a.CorpUpgradeName.SpeechProcessorImplants]:{name:a.CorpUpgradeName.SpeechProcessorImplants,basePrice:1e9,priceMult:1.06,benefit:.1,desc:"Purchase the Speech Processor augmentation for your employees. Each level of this upgrade globally increases the charisma of your employees by 10% (additive)."},[a.CorpUpgradeName.NeuralAccelerators]:{name:a.CorpUpgradeName.NeuralAccelerators,basePrice:1e9,priceMult:1.06,benefit:.1,desc:"Purchase the Neural Accelerator augmentation for your employees. Each level of this upgrade globally increases the intelligence of your employees by 10% (additive)."},[a.CorpUpgradeName.FocusWires]:{name:a.CorpUpgradeName.FocusWires,basePrice:1e9,priceMult:1.06,benefit:.1,desc:"Purchase the FocusWire augmentation for your employees. Each level of this upgrade globally increases the efficiency of your employees by 10% (additive)."},[a.CorpUpgradeName.ABCSalesBots]:{name:a.CorpUpgradeName.ABCSalesBots,basePrice:1e9,priceMult:1.07,benefit:.01,desc:"Always Be Closing. Purchase these robotic salesmen to increase the amount of materials and products you sell. Each level of this upgrade globally increases your sales by 1% (additive)."},[a.CorpUpgradeName.ProjectInsight]:{name:a.CorpUpgradeName.ProjectInsight,basePrice:5e9,priceMult:1.07,benefit:.05,desc:"Purchase 'Project Insight', a R&D service provided by the secretive Fulcrum Technologies. Each level of this upgrade globally increases the amount of Scientific Research you produce by 5% (additive)."}}},32927:(e,t,n)=>{"use strict";n.d(t,{E5:()=>s,s8:()=>l,vm:()=>i});var a=n(21623),r=n(33244),o=n(52242);const i={[r.IndustryType.Agriculture]:{startingCost:4e10,description:"Cultivate crops and breed livestock to produce food.",recommendStarting:!0,realEstateFactor:.72,scienceFactor:.5,hardwareFactor:.2,robotFactor:.3,aiCoreFactor:.3,advertisingFactor:.04,requiredMaterials:{Water:.5,Chemicals:.2},producedMaterials:["Plants","Food"],makesMaterials:!0,makesProducts:!1},[r.IndustryType.Spring]:{startingCost:1e10,description:"Gather water through passive means.",recommendStarting:!1,realEstateFactor:.2,scienceFactor:.1,hardwareFactor:0,robotFactor:0,aiCoreFactor:.1,advertisingFactor:.03,requiredMaterials:{},producedMaterials:["Water"],makesMaterials:!0,makesProducts:!1},[r.IndustryType.Refinery]:{startingCost:5e10,description:"Refine ore into usable metal.",recommendStarting:!0,realEstateFactor:.3,scienceFactor:.5,hardwareFactor:.5,robotFactor:.4,aiCoreFactor:.3,advertisingFactor:.04,requiredMaterials:{Ore:1},producedMaterials:["Metal"],makesMaterials:!0,makesProducts:!1},[r.IndustryType.Chemical]:{startingCost:7e10,description:"Produce industrial chemicals.",recommendStarting:!1,realEstateFactor:.25,scienceFactor:.75,hardwareFactor:.2,robotFactor:.25,aiCoreFactor:.2,advertisingFactor:.07,requiredMaterials:{Plants:1,Water:.5},producedMaterials:["Chemicals"],makesMaterials:!0,makesProducts:!1},[r.IndustryType.Computers]:{startingCost:5e11,description:"Develop and manufacture new computer hardware and networking infrastructures.",product:{name:"Product",verb:"Create",desc:"Design and manufacture a new computer hardware product!",ratingWeights:{quality:.15,performance:.25,durability:.25,reliability:.2,aesthetics:.05,features:.1}},recommendStarting:!1,realEstateFactor:.2,scienceFactor:.62,robotFactor:.36,aiCoreFactor:.19,advertisingFactor:.17,requiredMaterials:{Metal:2},producedMaterials:["Hardware"],makesMaterials:!0,makesProducts:!0},[r.IndustryType.Fishing]:{startingCost:8e10,description:"Produce food through the breeding and processing of fish and fish products.",recommendStarting:!1,realEstateFactor:.15,scienceFactor:.35,hardwareFactor:.35,robotFactor:.5,aiCoreFactor:.2,advertisingFactor:.08,requiredMaterials:{Plants:.5},producedMaterials:["Food"],makesMaterials:!0,makesProducts:!1},[r.IndustryType.Restaurant]:{startingCost:1e10,description:"Create your own restaurants all around the world.",product:{name:"Restaurant",verb:"Build",desc:"Build and manage a new restaurant!",ratingWeights:{quality:.7,durability:.1,aesthetics:.2}},recommendStarting:!0,scienceFactor:.12,hardwareFactor:.15,robotFactor:.3,aiCoreFactor:.25,advertisingFactor:.25,realEstateFactor:.05,requiredMaterials:{Food:.5,Water:.5},makesMaterials:!1,makesProducts:!0},[r.IndustryType.Healthcare]:{startingCost:75e10,description:"Create and manage hospitals.",product:{name:"Hospital",verb:"Build",desc:"Build and manage a new hospital!",ratingWeights:{quality:.4,performance:.1,durability:.1,reliability:.3,features:.1}},recommendStarting:!1,realEstateFactor:.1,scienceFactor:.75,advertisingFactor:.11,hardwareFactor:.1,robotFactor:.1,aiCoreFactor:.1,requiredMaterials:{Robots:10,"AI Cores":5,Drugs:5,Food:5},makesMaterials:!1,makesProducts:!0},[r.IndustryType.Mining]:{startingCost:3e11,description:"Extract and process metals from the earth.",recommendStarting:!1,realEstateFactor:.3,scienceFactor:.26,hardwareFactor:.4,robotFactor:.45,aiCoreFactor:.45,advertisingFactor:.06,requiredMaterials:{Hardware:.1},producedMaterials:["Ore","Minerals"],makesMaterials:!0,makesProducts:!1},[r.IndustryType.Pharmaceutical]:{startingCost:2e11,description:"Discover, develop, and create new pharmaceutical drugs.",product:{name:"Drug",verb:"Develop",desc:"Design and develop a new pharmaceutical drug!",ratingWeights:{quality:.2,performance:.2,durability:.1,reliability:.3,features:.2}},recommendStarting:!1,realEstateFactor:.05,scienceFactor:.8,hardwareFactor:.15,robotFactor:.25,aiCoreFactor:.2,advertisingFactor:.16,requiredMaterials:{Chemicals:2,Water:.5},producedMaterials:["Drugs"],makesMaterials:!0,makesProducts:!0},[r.IndustryType.RealEstate]:{startingCost:6e11,description:"Develop and manage real estate properties.",product:{name:"Property",verb:"Develop",desc:"Develop a new piece of real estate property!",ratingWeights:{quality:.2,durability:.25,reliability:.1,aesthetics:.35,features:.1}},recommendStarting:!1,robotFactor:.6,aiCoreFactor:.6,advertisingFactor:.25,scienceFactor:.05,hardwareFactor:.05,requiredMaterials:{Metal:5,Plants:1,Water:2,Hardware:4},producedMaterials:["Real Estate"],makesMaterials:!0,makesProducts:!0},[r.IndustryType.Robotics]:{startingCost:1e12,description:"Develop and create robots.",product:{name:"Robot",verb:"Design",desc:"Design and create a new robot or robotic system!",ratingWeights:{quality:.1,performance:.2,durability:.2,reliability:.2,aesthetics:.1,features:.2}},recommendStarting:!1,realEstateFactor:.32,scienceFactor:.65,aiCoreFactor:.36,advertisingFactor:.18,hardwareFactor:.19,requiredMaterials:{Hardware:5,"AI Cores":3},producedMaterials:["Robots"],makesMaterials:!0,makesProducts:!0},[r.IndustryType.Software]:{startingCost:25e9,description:"Develop computer software and create AI Cores.",product:{name:"Software",verb:"Develop",desc:"Develop a new piece of software!",ratingWeights:{quality:.2,performance:.2,reliability:.2,durability:.2,features:.2}},recommendStarting:!1,scienceFactor:.62,advertisingFactor:.16,hardwareFactor:.25,realEstateFactor:.15,aiCoreFactor:.18,robotFactor:.05,requiredMaterials:{Hardware:.5},producedMaterials:["AI Cores"],makesMaterials:!0,makesProducts:!0},[r.IndustryType.Tobacco]:{startingCost:2e10,description:"Create and distribute tobacco and tobacco-related products.",product:{name:"Product",verb:"Create",desc:"Create a new tobacco product!",ratingWeights:{quality:.7,durability:.1,aesthetics:.2}},recommendStarting:!0,realEstateFactor:.15,scienceFactor:.75,hardwareFactor:.15,robotFactor:.2,aiCoreFactor:.15,advertisingFactor:.2,requiredMaterials:{Plants:1},makesMaterials:!1,makesProducts:!0},[r.IndustryType.Water]:{startingCost:15e10,description:"Distribute water and provide wastewater services.",recommendStarting:!1,realEstateFactor:.5,scienceFactor:.6,robotFactor:.4,aiCoreFactor:.4,advertisingFactor:.08,requiredMaterials:{Hardware:.1},producedMaterials:["Water"],makesMaterials:!0,makesProducts:!1}},s=(0,a.cD)(Object.values(r.IndustryType).map((e=>[e,i[e].product?(0,o.M)():(0,o.a)()])));function l(){Object.values(r.IndustryType).forEach((e=>s[e]=i[e].product?(0,o.M)():(0,o.a)()))}},41139:(e,t,n)=>{"use strict";n.d(t,{CA:()=>c,Ox:()=>u,b5:()=>l,gE:()=>i,oF:()=>s});var a=n(49173),r=n(20145),o=n(22115);function i(e,t,n){const a=t.priceMult,r=e.upgrades[t.name].level;return t.basePrice*Math.pow(a,r)*(1-Math.pow(a,n))/(1-a)}function s(e,t){const n=e.upgrades[t.name].level,a=t.priceMult,r=t.basePrice,o=Math.floor(Math.log(1-e.funds/r/Math.pow(a,n)*(1-a))/Math.log(a));return o>=0?o:0}function l(e,t){return(0,r.a)(t)?t>e.numShares?"You do not have that many shares to sell.":t===e.numShares?"You cannot sell all your shares.":t>1e14?`Cannot sell more than ${(0,o.O3)(1e14)} shares at a time.`:e.public?e.shareSaleCooldown?`Cannot sell shares for another ${e.convertCooldownToString(e.shareSaleCooldown)}.`:"":"Cannot sell shares before going public.":"Number of shares must be a positive integer."}function c(e,t){if(!(0,r.a)(t))return"Number of shares must be a positive integer.";if(t>e.issuedShares)return"Not enough shares are available for buyback.";if(t>1e14)return`Cannot buy more than ${(0,o.O3)(1e14)} shares at a time.`;if(!e.public)return"Cannot buy back shares before going public.";const[n]=e.calculateShareBuyback(t);return a.J5.moneyn)return`Number of shares cannot exceed ${n} (20% of total shares).`;const a=e.issueNewSharesCooldown;return a>0?`Cannot issue new shares for another ${e.convertCooldownToString(a)}.`:""}},11606:(e,t,n)=>{"use strict";n.d(t,{K:()=>m});var a=n(67294),r=n(94004),o=n(30527),i=n(33244),s=n(33987),l=n(53978),c=n(98360),u=n(21623);function m(e){const t=(0,c.pZ)(),[n,m]=(0,a.useState)(e.city);let f;if("Expand"===n)f=a.createElement(l.d,{cityStateSetter:m});else{const r=t.offices[n];if(!r)return m(i.CityName.Sector12),a.createElement(a.Fragment,null);f=a.createElement(s.d,{rerender:e.rerender,city:n,warehouse:t.warehouses[n],office:r})}const h=Object.values(i.CityName).length>(0,u.nd)(t.offices).length;return a.createElement(a.Fragment,null,a.createElement(r.Z,{variant:"fullWidth",value:n,onChange:function(e,t){m(t)},sx:{maxWidth:"65vw"}},Object.values(t.offices).map((e=>0!==e&&a.createElement(o.Z,{key:e.city,label:e.city,value:e.city}))),h&&a.createElement(o.Z,{label:"Expand",value:"Expand"})),f)}},98360:(e,t,n)=>{"use strict";n.d(t,{_y:()=>r,pZ:()=>i,wZ:()=>o});var a=n(67294);const r={Corporation:a.createContext({}),Division:a.createContext({})},o=()=>(0,a.useContext)(r.Corporation),i=()=>(0,a.useContext)(r.Division)},31635:(e,t,n)=>{"use strict";n.d(t,{n:()=>f});var a=n(67294),r=n(59686),o=n(37037),i=n(49173),s=n(98360),l=n(89363),c=n(94004),u=n(30527),m=n(88775);function f(){const e=(0,m.S)(200),[t,n]=(0,a.useState)("Overview"),f=i.J5.corporation;if(null===f)return a.createElement(a.Fragment,null);const h=f.divisions.sizea.createElement(u.Z,{key:e.name,label:e.name,value:e.name}))),h&&a.createElement(u.Z,{label:"Expand",value:-1})),"Overview"===t&&a.createElement(l.g,{rerender:e}),-1===t&&a.createElement(o.I,{setDivisionName:n}),"string"==typeof t&&"Overview"!==t&&a.createElement(r.p,{rerender:e,divisionName:t+""}))}},33987:(e,t,n)=>{"use strict";n.d(t,{d:()=>c});var a=n(67294),r=n(30120),o=n(22416),i=n(82750),s=n(86520),l=n(98360);function c(e){const t=(0,l.wZ)(),n=(0,l.pZ)();return a.createElement(r.Z,{display:"flex"},a.createElement(r.Z,{sx:{width:"50%"}},a.createElement(i.o,{rerender:e.rerender}),a.createElement(o.e,{rerender:e.rerender,office:e.office})),a.createElement(r.Z,{sx:{width:"50%"}},a.createElement(s.C,{rerender:e.rerender,corp:t,currentCity:e.city,division:n,warehouse:e.warehouse})))}},22416:(e,t,n)=>{"use strict";n.d(t,{e:()=>A});var a=n(67294),r=n(33244),o=n(33563),i=n(47616),s=n(22115),l=n(67662),c=n(19575),u=n(72360),m=n(98360),f=n(81138),h=n(37150),d=n(92557),p=n(28881),g=n(93619),y=n(29217),b=n(45111),v=n(17575),k=n(47542),w=n(46948),E=n(49557),S=n(61011),C=n(30120);function x(e){return a.createElement(f.Z,{display:"flex",alignItems:"center",justifyContent:"flex-end"},e.num===e.next?null:e.num,e.num===e.next?null:a.createElement(g.Z,{fontSize:"inherit"}),e.next)}function N(e){const t=e.office.employeeJobs[e.job],n=e.office.employeeNextJobs[e.job],o=e.office.employeeNextJobs[r.CorpEmployeeJob.Unassigned];return a.createElement(E.Z,null,a.createElement(S.p,null,a.createElement(v.Z,{title:e.desc},a.createElement(f.Z,null,e.job))),a.createElement(S.p,null,a.createElement(x,{num:t,next:n})),a.createElement(S.p,{width:"1px"},a.createElement(d.Z,{disabled:0===o,onClick:function(){if(o<=0)return console.warn("Cannot assign employee. No unassigned employees available");e.office.autoAssignJob(e.job,n+1),e.rerender()}},a.createElement(y.Z,null))),a.createElement(S.p,{width:"1px"},a.createElement(d.Z,{disabled:0===n,onClick:function(){e.office.autoAssignJob(e.job,n-1),e.rerender()}},a.createElement(b.Z,null))))}function M(e){const t=(0,m.wZ)(),n=(0,m.pZ)(),o=e.office.employeeJobs[r.CorpEmployeeJob.Unassigned],i=e.office.employeeNextJobs[r.CorpEmployeeJob.Unassigned];return a.createElement(k.Z,{padding:"none"},a.createElement(w.Z,null,a.createElement(E.Z,null,a.createElement(S.p,null,a.createElement(f.Z,null,"Unassigned Employees:")),a.createElement(S.p,null,a.createElement(x,{num:o,next:i}))),a.createElement(E.Z,null,a.createElement(S.p,null,a.createElement(f.Z,null,"Avg Employee Morale:")),a.createElement(S.p,{align:"right"},a.createElement(f.Z,null,(0,s.jj)(e.office.avgMorale)))),a.createElement(E.Z,null,a.createElement(S.p,null,a.createElement(f.Z,null,"Avg Employee Energy:")),a.createElement(S.p,{align:"right"},a.createElement(f.Z,null,(0,s.jj)(e.office.avgEnergy)))),a.createElement(E.Z,null,a.createElement(S.p,null,a.createElement(f.Z,null,"Avg Employee Experience:")),a.createElement(S.p,{align:"right"},a.createElement(f.Z,null,(0,s.jj)(e.office.totalExperience/e.office.numEmployees||0)))),a.createElement(E.Z,null,a.createElement(S.p,null,a.createElement(f.Z,null,"Total Employee Salary:")),a.createElement(S.p,null,a.createElement(f.Z,{align:"right"},a.createElement(u.W,{money:e.office.totalSalary})))),t.unlocks.has(r.CorpUnlockName.VeChain)&&a.createElement(a.Fragment,null,a.createElement(E.Z,null,a.createElement(S.p,null,a.createElement(v.Z,{title:a.createElement(f.Z,null,"The base amount of material this office can produce. Does not include production multipliers from upgrades and materials. This value is based off the productivity of your Operations, Engineering, and Management employees")},a.createElement(f.Z,null,"Material Production:"))),a.createElement(S.p,null,a.createElement(f.Z,{align:"right"},(0,s.jj)(n.getOfficeProductivity(e.office))))),a.createElement(E.Z,null,a.createElement(S.p,null,a.createElement(v.Z,{title:a.createElement(f.Z,null,"The base amount of any given Product this office can produce. Does not include production multipliers from upgrades and materials. This value is based off the productivity of your Operations, Engineering, and Management employees")},a.createElement(f.Z,null,"Product Production:"))),a.createElement(S.p,null,a.createElement(f.Z,{align:"right"},(0,s.jj)(n.getOfficeProductivity(e.office,{forProduct:!0}))))),a.createElement(E.Z,null,a.createElement(S.p,null,a.createElement(v.Z,{title:a.createElement(f.Z,null,"The effect this office's 'Business' employees has on boosting sales")},a.createElement(f.Z,null," Business Multiplier:"))),a.createElement(S.p,{align:"right"},a.createElement(f.Z,null,"x",(0,s.jj)(n.getBusinessFactor(e.office)))))),a.createElement(N,{rerender:e.rerender,office:e.office,job:r.CorpEmployeeJob.Operations,desc:"Manages supply chain operations. Improves the amount of Materials and Products you produce."}),a.createElement(N,{rerender:e.rerender,office:e.office,job:r.CorpEmployeeJob.Engineer,desc:"Develops and maintains products and production systems. Increases the quality of everything you produce. Also increases the amount you produce (not as much as Operations, however)."}),a.createElement(N,{rerender:e.rerender,office:e.office,job:r.CorpEmployeeJob.Business,desc:"Handles sales and finances. Improves the amount of Materials and Products you can sell."}),a.createElement(N,{rerender:e.rerender,office:e.office,job:r.CorpEmployeeJob.Management,desc:"Leads and oversees employees and office operations. Improves the effectiveness of Engineer and Operations employees."}),a.createElement(N,{rerender:e.rerender,office:e.office,job:r.CorpEmployeeJob.RandD,desc:"Research new innovative ways to improve the company. Generates Scientific Research. Also increases the quality of everything you produce (not as much as Engineer, however)."}),a.createElement(N,{rerender:e.rerender,office:e.office,job:r.CorpEmployeeJob.Intern,desc:"Set employee to intern, which will increase some of their stats. Employees in intern do not affect any company operations, but gain increased exp and improve morale and energy."})))}function A(e){const t=(0,m.wZ)(),n=(0,m.pZ)(),[s,u]=(0,a.useState)(!1),[d,g]=(0,a.useState)(!1),y=e.office.atCapacity()?"Insufficient office space":"",b=t.funds1,k=t.funds<0?"Insufficient corporation funds":v?"A party is already pending for this cycle":"";return a.createElement(p.Z,null,a.createElement(f.Z,null,"Office Space"),a.createElement(f.Z,null,"Size: ",e.office.numEmployees," / ",e.office.size," employees"),a.createElement(C.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",width:"fit-content"}},a.createElement(C.Z,{sx:{gridTemplateColumns:"repeat(3, 1fr)"}},a.createElement(h.g,{disabledTooltip:y,onClick:function(){e.office.atCapacity()||(e.office.hireRandomEmployee(r.CorpEmployeeJob.Unassigned),e.rerender())}},"Hire Employee"),a.createElement(h.g,{normalTooltip:"Upgrade the office's size so that it can hold more employees!",onClick:()=>u(!0)},"Upgrade size"),a.createElement(l.j,{rerender:e.rerender,office:e.office,open:s,onClose:()=>u(!1)}),!n.hasResearch("AutoBrew")&&a.createElement(h.g,{normalTooltip:"Provide your employees with tea to increase their energy",disabledTooltip:b,onClick:()=>(0,o.bY)(t,e.office)},e.office.teaPending?"Buying Tea":a.createElement(a.Fragment,null,"Buy Tea - ",a.createElement(i.d,{money:e.office.getTeaCost(),corp:t}))),!n.hasResearch("AutoPartyManager")&&a.createElement(a.Fragment,null,a.createElement(h.g,{normalTooltip:"Throw an office party to increase your employees' morale",disabledTooltip:k,onClick:()=>g(!0)},e.office.partyMult>1?"Throwing Party...":"Throw Party"),a.createElement(c.H,{rerender:e.rerender,office:e.office,open:d,onClose:()=>g(!1)})))),a.createElement(M,{rerender:e.rerender,office:e.office}))}},82750:(e,t,n)=>{"use strict";n.d(t,{o:()=>x});var a=n(67294),r=n(33244),o=n(33563),i=n(22115),s=n(93826),l=n(93916),c=n(84212),u=n(72360),m=n(85882),f=n(97534),h=n(6248),d=n(47616),p=n(98360),g=n(81138),y=n(56798),b=n(37150),v=n(17575),k=n(28881),w=n(92557),E=n(9944),S=n(30120);function C(){const e=(0,p.wZ)(),t=(0,p.pZ)(),[n,o]=(0,a.useState)(!1),i=t.hasMaximumNumberProducts();let s="";switch(t.type){case r.IndustryType.Restaurant:s="Build Restaurant";break;case r.IndustryType.Tobacco:s="Create Product";break;case r.IndustryType.Pharmaceutical:s="Create Drug";break;case r.IndustryType.Computers:s="Create Product";break;case r.IndustryType.Robotics:s="Design Robot";break;case r.IndustryType.Software:s="Develop Software";break;case r.IndustryType.Healthcare:s="Build Hospital";break;case r.IndustryType.RealEstate:s="Develop Property";break;default:return s="Create Product",a.createElement(a.Fragment,null)}const c=i?`${t.name} already has the maximum number of products (${t.maxProducts})`:e.funds<0?"Insufficient corporation funds":"";return a.createElement(a.Fragment,null,a.createElement(b.g,{disabledTooltip:c,onClick:function(){i||o(!0)},buttonProps:{color:0===t.products.size?"error":"primary"}},s),a.createElement(l.R,{open:n,onClose:()=>o(!1)}))}function x(e){const t=(0,p.wZ)(),n=(0,p.pZ)(),[l,x]=(0,a.useState)(!1),[N,M]=(0,a.useState)(!1),A=n.lastCycleRevenue-n.lastCycleExpenses;let T=!1;const L=n.getAdvertisingFactors(),R=L[1],F=L[2],I=L[3],_=L[0];function P(e){return(0,s.x)({progress:e,totalTicks:20})}return t.unlocks.has(r.CorpUnlockName.VeChain)&&(T=!0),a.createElement(k.Z,null,a.createElement(g.Z,null,"Industry: ",n.type," (Corp Funds: ",a.createElement(u.W,{money:t.funds}),")"),a.createElement("br",null),a.createElement(f.C,{rows:[["Awareness:",(0,i.dp)(n.awareness)],["Popularity:",(0,i.dp)(n.popularity)]]}),T&&a.createElement(v.Z,{title:a.createElement(a.Fragment,null,a.createElement(g.Z,null,"Total multiplier for this industry's sales due to its awareness and popularity"),a.createElement(f.C,{rows:[["Awareness Bonus:","x"+(0,i.dp)(Math.pow(R,.85))],["Popularity Bonus:","x"+(0,i.dp)(Math.pow(F,.85))],["Ratio Multiplier:","x"+(0,i.dp)(Math.pow(I,.85))]]}))},a.createElement(g.Z,null,"Advertising Multiplier: x",(0,i.dp)(_))),a.createElement("br",null),a.createElement(f.C,{rows:[["Revenue:",a.createElement(m.G,{key:"revenue",money:n.lastCycleRevenue})],["Expenses:",a.createElement(m.G,{key:"expenses",money:n.lastCycleExpenses})],["Profit:",a.createElement(m.G,{key:"profit",money:A})]]}),a.createElement("br",null),a.createElement(S.Z,{display:"flex",alignItems:"center"},a.createElement(v.Z,{title:a.createElement(a.Fragment,null,"Production gain from owning production-boosting materials such as hardware, Robots, AI Cores, and Real Estate.")},a.createElement(g.Z,null,"Production Multiplier: ",(0,i.dp)(n.productionMult))),a.createElement(w.Z,{onClick:()=>x(!0)},a.createElement(E.Z,null)),a.createElement(h.t,{open:l,onClose:()=>x(!1)},a.createElement(g.Z,null,"Owning Hardware, Robots, AI Cores, and Real Estate can boost your Industry's production. The effect these materials have on your production varies between Industries. For example, Real Estate may be very effective for some Industries, but ineffective for others.",a.createElement("br",null),a.createElement("br",null),"This division's production multiplier is calculated by summing the individual production multiplier of each of its office locations. This production multiplier is applied to each office. Therefore, it is beneficial to expand into new cities as this can greatly increase the production multiplier of your entire Division.",a.createElement("br",null),a.createElement("br",null),"Below are approximations for how effective each material is at boosting this industry's production multiplier (Bigger bars = more effective):",a.createElement("br",null),a.createElement("br",null),"Hardware:    ",P(n.hardwareFactor),a.createElement("br",null),"Robots:      ",P(n.robotFactor),a.createElement("br",null),"AI Cores:    ",P(n.aiCoreFactor),a.createElement("br",null),"Real Estate: ",P(n.realEstateFactor)))),a.createElement(S.Z,{display:"flex",alignItems:"center"},a.createElement(v.Z,{title:"Scientific Research increases the quality of the materials and products that you produce."},a.createElement(g.Z,null,"Scientific Research: ",(0,i.dp)(n.researchPoints))),a.createElement(y.Z,{sx:{mx:1},onClick:()=>M(!0)},"Research"),a.createElement(c.D,{open:N,onClose:()=>M(!1),industry:n})),a.createElement("br",null),a.createElement(S.Z,{display:"flex",alignItems:"center"},a.createElement(b.g,{normalTooltip:a.createElement(a.Fragment,null,"Hire AdVert.Inc to advertise your company. Each level of this upgrade grants your company a static increase of 3 and 1 to its awareness and popularity, respectively. It will then increase your company's\" + awareness by 1%, and its popularity by a random percentage between 1% and 3%. These effects are increased by other upgrades that increase the power of your advertising."),disabledTooltip:n.getAdVertCost()>t.funds?"Insufficient corporation funds":"",onClick:()=>{(0,o.Jm)(t,n),e.rerender()}},"Hire AdVert -  ",a.createElement(d.d,{money:n.getAdVertCost(),corp:t})),n.makesProducts&&a.createElement(C,null)))}},86520:(e,t,n)=>{"use strict";n.d(t,{C:()=>N});var a=n(67294),r=n(77541),o=n(73327),i=n(28881),s=n(30120),l=n(17575),c=n(81138),u=n(56798),m=n(80692),f=n(33244),h=n(82644),d=n(45491),p=n(75114),g=n(51004),y=n(22115),b=n(47616),v=n(17446),k=n(68265),w=n(33563),E=n(98360),S=n(37150);const C=(0,r.Z)((()=>(0,o.Z)({retainHeight:{minHeight:"3em"}})));function x(e){const t=C(),n=(0,E.wZ)(),r=(0,E.pZ)(),[o,w]=(0,a.useState)(!1);if(!e.warehouse)return a.createElement(a.Fragment,null);const x=m.warehouseSizeUpgradeCostBase*Math.pow(1.07,e.warehouse.level+1),N=n.funds>x;let M;switch(r.state){case"START":M="Next state: Preparing";break;case"PURCHASE":M="Next state: Purchasing materials";break;case"PRODUCTION":M="Next state: Producing materials and/or products";break;case"SALE":M="Next state: Selling materials and/or products";break;case"EXPORT":M="Next state: Exporting materials and/or products";break;default:console.error(`Invalid state: ${r.state}`)}const A=[];for(const t of Object.values(m.materialNames)){if(!e.warehouse.materials[t])continue;const n=e.warehouse.materials[t].stored>0,o=(0,v.s)(t,r);(n||o)&&A.push(a.createElement(p.p,{rerender:e.rerender,city:e.currentCity,key:t,mat:e.warehouse.materials[t],warehouse:e.warehouse}))}const T=[];if(r.makesProducts&&r.products.size>0)for(const[t,n]of r.products)T.push(a.createElement(d.l,{rerender:e.rerender,city:e.currentCity,key:t,product:n}));const L=[];for(const t of m.materialNames){const n=e.warehouse.materials[t];0!==n.stored&&L.push(`${t}: ${(0,y.wS)(n.stored*g.d[t].size)}`)}for(const[t,n]of r.products)L.push(`${t}: ${(0,y.wS)(n.cityData[e.currentCity].stored*n.size)}`);let R;return R=L.length>0?L.map(((e,t)=>a.createElement("p",{key:t},e))):a.createElement(a.Fragment,null,"No items in storage."),a.createElement(i.Z,null,a.createElement(s.Z,{display:"flex",alignItems:"center"},a.createElement(l.Z,{title:R},a.createElement(c.Z,{color:e.warehouse.sizeUsed>=e.warehouse.size?"error":"primary"},"Storage: ",(0,y.dp)(e.warehouse.sizeUsed)," / ",(0,y.dp)(e.warehouse.size)))),a.createElement(S.g,{disabledTooltip:N?"":"Insufficient corporation funds",onClick:function(){e.warehouse&&N&&(++e.warehouse.level,e.warehouse.updateSize(n,r),n.funds=n.funds-x,e.rerender())}},"Upgrade Warehouse Size - ",a.createElement(b.d,{money:x,corp:n})),a.createElement(c.Z,null,"This industry uses the following equation for its production: "),a.createElement("br",null),a.createElement(c.Z,null,a.createElement(k.a,{key:r.name,division:r})),a.createElement("br",null),a.createElement(c.Z,null,"To get started with production, purchase your required materials or import them from another of your company's divisions."),a.createElement("br",null),a.createElement(c.Z,{className:t.retainHeight},M),n.unlocks.has(f.CorpUnlockName.SmartSupply)&&a.createElement(a.Fragment,null,a.createElement(u.Z,{onClick:()=>w(!0)},"Configure Smart Supply"),a.createElement(h.v,{open:o,onClose:()=>w(!1),warehouse:e.warehouse})),A,T)}function N(e){return e.warehouse?a.createElement(x,e):a.createElement(M,{rerender:e.rerender,city:e.currentCity})}function M(e){const t=(0,E.wZ)(),n=(0,E.pZ)(),r=t.funds{"use strict";n.d(t,{d:()=>d});var a=n(67294),r=n(80692),o=n(33244),i=n(39463),s=n(33563),l=n(47616),c=n(98360),u=n(81138),m=n(98649),f=n(26023),h=n(37150);function d(e){const t=(0,c.wZ)(),n=(0,c.pZ)(),d=Object.values(o.CityName).filter((e=>!(e in n.offices))),[p,g]=(0,a.useState)(d[0]),y=t.fundsa.createElement(m.Z,{key:e,value:e},e)))),a.createElement(h.g,{onClick:function(){try{(0,s.oO)(t,n,p)}catch(e){return void(0,i.X)(e+"")}(0,i.X)(`Opened a new office in ${p}!`),e.cityStateSetter(p)},disabledTooltip:y},"Confirm"))}},17446:(e,t,n)=>{"use strict";function a(e,t){return!!Object.keys(t.requiredMaterials).includes(e)||!!t.producedMaterials.includes(e)||!!["Hardware","Robots","AI Cores","Real Estate"].includes(e)}n.d(t,{s:()=>a})},42084:(e,t,n)=>{"use strict";n.d(t,{Y:()=>s});var a=n(67294),r=n(81138),o=n(47616),i=n(32927);const s=e=>{let{industry:t,corp:n}=e;const s=i.vm[t];return a.createElement(r.Z,null,s.description,a.createElement("br",null),a.createElement("br",null),"Required Materials: ",Object.keys(s.requiredMaterials).toString().replace(/,/gi,", "),a.createElement("br",null),"Produces Materials: ",s.producedMaterials?s.producedMaterials.toString().replace(/,/gi,", "):"NONE",a.createElement("br",null),"Produces products: ",s.product?"YES":"NO",a.createElement("br",null),a.createElement("br",null),"Starting cost: ",a.createElement(o.d,{money:s.startingCost,corp:n}),a.createElement("br",null),"Recommended starting Industry: ",s.recommendStarting?"YES":"NO")}},68265:(e,t,n)=>{"use strict";n.d(t,{a:()=>i});var a=n(67294),r=n(70109),o=n(21623);function i(e){const t=[];for(const[n,a]of(0,o.m0)(e.division.requiredMaterials))a&&t.push(String.raw`${a}\text{ }${n}`);const n=e.division.producedMaterials.map((e=>`1\\text{ }${e}`));return e.division.makesProducts&&n.push("Products"),a.createElement(r.Z,null,"\\("+t.join("+")+"\\Rightarrow "+n.join("+")+"\\)")}},45241:(e,t,n)=>{"use strict";n.d(t,{d:()=>d});var a=n(67294),r=n(39463),o=n(51326),i=n(47616),s=n(98360),l=n(81138),c=n(17575),u=n(37150),m=n(30120),f=n(31990),h=n(41139);function d(e){let{upgradeName:t,mult:n,rerender:d}=e;const p=(0,s.wZ)(),g=o.x[t],y=p.upgrades[t].level,b="MAX"===n?(0,h.oF)(p,g):n,v=0===b?0:(0,h.gE)(p,g,b),k=g.desc;return a.createElement(f.ZP,{item:!0,xs:4},a.createElement(m.Z,{display:"flex",alignItems:"center",flexDirection:"row-reverse"},a.createElement(u.g,{disabledTooltip:p.funds{"use strict";n.d(t,{p:()=>s});var a=n(67294),r=n(11606),o=n(98360),i=n(33244);function s(e){const t=(0,o.wZ)().divisions.get(e.divisionName);if(!t)throw new Error("Cannot find division");return a.createElement(o._y.Division.Provider,{value:t},a.createElement(r.K,{rerender:e.rerender,city:i.CityName.Sector12}))}},75114:(e,t,n)=>{"use strict";n.d(t,{p:()=>b});var a=n(67294),r=n(28881),o=n(30120),i=n(17575),s=n(81138),l=n(56798),c=n(33244),u=n(22613),m=n(86326),f=n(57900),h=n(22115),d=n(22392),p=n(72360),g=n(98360),y=n(83475);function b(e){const t=(0,g.wZ)(),n=(0,g.pZ)(),[b,v]=(0,a.useState)(!1),[k,w]=(0,a.useState)(!1),[E,S]=(0,a.useState)(!1),[C,x]=(0,a.useState)(!1),N=e.warehouse,M=e.city,A=e.mat;if(!n.offices[M])throw new Error(`Could not get OfficeSpace object for this city (${M})`);const T=A.buyAmount+A.productionAmount+A.importAmount-A.actualSellAmount-A.exportedLastCycle,L=n.newInd&&A.name in n.requiredMaterials&&0===A.buyAmount&&0===A.importAmount,R=`Buy (${(0,h.dp)(A.buyAmount)})`;let F;A.desiredSellAmount?(F=(0,d.H)(A.desiredSellAmount)?a.createElement(a.Fragment,null,"Sell (",(0,h.dp)(A.actualSellAmount),"/",A.desiredSellAmount,")"):a.createElement(a.Fragment,null,"Sell (",(0,h.dp)(A.actualSellAmount),"/",(0,h.dp)(A.desiredSellAmount),")"),a.Fragment,p.W,A.uiMarketPrice):F=a.createElement(a.Fragment,null,"Sell (0.000/0.000)");let I="Limit Material";return null!==A.productionLimit&&(I+=" ("+(0,h.jj)(A.productionLimit)+")"),a.createElement(r.Z,null,a.createElement(o.Z,{sx:{display:"grid",gridTemplateColumns:"2fr 1fr",m:"5px"}},a.createElement(o.Z,null,a.createElement(i.Z,{title:a.createElement(s.Z,null,"Buy: ",A.buyAmount>=1e33?A.buyAmount.toExponential(3):(0,h.dp)(A.buyAmount)," ",a.createElement("br",null),"Prod: ",(0,h.dp)(A.productionAmount)," ",a.createElement("br",null),"Sell: ",(0,h.dp)(A.actualSellAmount)," ",a.createElement("br",null),"Export: ",(0,h.dp)(A.exportedLastCycle)," ",a.createElement("br",null),"Import: ",(0,h.dp)(A.importAmount),t.unlocks.has(c.CorpUnlockName.MarketResearchDemand)&&a.createElement(a.Fragment,null,a.createElement("br",null),"Demand: ",(0,h.jj)(A.demand)),t.unlocks.has(c.CorpUnlockName.MarketDataCompetition)&&a.createElement(a.Fragment,null,a.createElement("br",null),"Competition: ",(0,h.jj)(A.competition)))},a.createElement(s.Z,null,A.name,": ",(0,h.dp)(A.stored)," (",T>=1e33?T.toExponential(3):(0,h.dp)(T),"/s)")),a.createElement(i.Z,{title:a.createElement(s.Z,null,"Market Price: The price you would pay if you were to buy this material on the market")},a.createElement(s.Z,null,"MP: ",a.createElement(p.W,{money:A.marketPrice}))),a.createElement(i.Z,{title:a.createElement(s.Z,null,"The quality of your material. Higher quality will lead to more sales")},a.createElement(s.Z,null,"Quality: ",(0,h.P6)(A.quality)))),a.createElement(o.Z,{sx:{"& button":{width:"100%"}}},a.createElement(i.Z,{title:L?a.createElement(s.Z,null,"Purchase your required materials to get production started!"):""},a.createElement(l.Z,{color:L?"error":"primary",onClick:()=>v(!0)},R)),a.createElement(f.H,{mat:A,warehouse:N,open:b,disablePurchaseLimit:e.warehouse.smartSupplyEnabled&&e.mat.name in n.requiredMaterials,onClose:()=>v(!1)}),t.unlocks.has(c.CorpUnlockName.Export)&&a.createElement(a.Fragment,null,a.createElement(l.Z,{onClick:()=>w(!0)},"Export"),a.createElement(u.X,{mat:A,open:k,onClose:()=>w(!1)})),a.createElement(l.Z,{color:n.producedMaterials.includes(e.mat.name)&&!A.desiredSellAmount?"error":"primary",onClick:()=>S(!0)},F),a.createElement(m.n,{mat:A,div:n,open:E,onClose:()=>S(!1)}),a.createElement(l.Z,{color:L?"error":"primary",onClick:()=>x(!0)},I),a.createElement(y.m,{material:A,open:C,onClose:()=>x(!1)}))))}},47616:(e,t,n)=>{"use strict";n.d(t,{d:()=>l});var a=n(67294),r=n(22115),o=n(77541),i=n(73327);const s=(0,o.Z)((e=>(0,i.Z)({unbuyable:{color:e.palette.action.disabled},money:{color:e.colors.money}})));function l(e){const t=s();return e.corp.funds>e.money?a.createElement("span",{className:t.money},(0,r.lb)(e.money)):a.createElement("span",{className:t.unbuyable},(0,r.lb)(e.money))}},60437:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var a=n(67294),r=n(80692),o=n(56798),i=n(21623);function s(e){let{selectedMultiplier:t,setMultiplier:n}=e;return a.createElement(a.Fragment,null,(0,i.m0)(r.PurchaseMultipliers).map((e=>{let[r,i]=e;return a.createElement(o.Z,{key:r,onClick:()=>n(i),disabled:i===t},r)})))}},37037:(e,t,n)=>{"use strict";n.d(t,{I:()=>y});var a=n(67294),r=n(30120),o=n(98649),i=n(26023),s=n(66351),l=n(81138),c=n(39463),u=n(32927),m=n(33244),f=n(98360),h=n(33563),d=n(37150),p=n(81055),g=n(42084);function y(e){const t=(0,f.wZ)(),n=Object.values(m.IndustryType).sort(),[y,b]=(0,a.useState)(n[0]),[v,k]=(0,a.useState)(""),w=u.vm[y];if(!w)return a.createElement(a.Fragment,null);const E=t.divisions.size>=t.maxDivisions?"Corporation already has the maximum number of divisions":t.fundsa.createElement(o.Z,{key:e,value:e},e)))),a.createElement(g.Y,{industry:y,corp:t}),a.createElement("br",null),a.createElement("br",null),a.createElement(l.Z,null,"Division name:"),a.createElement(r.Z,{display:"flex",alignItems:"center"},a.createElement(s.Z,{autoFocus:!0,value:v,onChange:function(e){k(e.target.value)},onKeyDown:function(e){e.key===p.F.ENTER&&S()},type:"text"})," ",a.createElement(d.g,{disabledTooltip:E,onClick:S},"Expand")))}},89363:(e,t,n)=>{"use strict";n.d(t,{g:()=>_});var a=n(67294),r=n(45241),o=n(84074),i=n(15241),s=n(82737),l=n(51569),c=n(71277),u=n(81737),m=n(60498),f=n(10600),h=n(58427),d=n(80692),p=n(61226),g=n(72938),y=n(22115),b=n(49802),v=n(72360),k=n(85882),w=n(97534),E=n(49173),S=n(98360),C=n(81138),x=n(17575),N=n(30120),M=n(28881),A=n(31990),T=n(60437),L=n(739),R=n(45774),F=n(21623),I=n(37150);function _(e){let{rerender:t}=e;const n=(0,S.wZ)(),r=n.revenue-n.expenses,o=[];function i(e,t){1!==t&&o.push([e,(0,y.jj)(t)])}return i("Production Multiplier: ",n.getProductionMultiplier()),i("Storage Multiplier: ",n.getStorageMultiplier()),i("Advertising Multiplier: ",n.getAdvertisingMultiplier()),i("Empl. Creativity Multiplier: ",n.getEmployeeCreMultiplier()),i("Empl. Charisma Multiplier: ",n.getEmployeeChaMult()),i("Empl. Intelligence Multiplier: ",n.getEmployeeIntMult()),i("Empl. Efficiency Multiplier: ",n.getEmployeeEffMult()),i("Sales Multiplier: ",n.getSalesMult()),i("Scientific Research Multiplier: ",n.getScientificResearchMult()),a.createElement(a.Fragment,null,a.createElement(w.C,{rows:[["Total Funds:",a.createElement(v.W,{key:"funds",money:n.funds})],["Total Assets:",a.createElement(v.W,{key:"assets",money:n.totalAssets})],["Total Revenue:",a.createElement(k.G,{key:"revenue",money:n.revenue})],["Total Expenses:",a.createElement(k.G,{key:"expenses",money:n.expenses})],["Total Profit:",a.createElement(k.G,{key:"profit",money:n.revenue-n.expenses})],["Publicly Traded:",n.public?"Yes":"No"],["Owned Stock Shares:",(0,y.O3)(n.numShares)],["Stock Price:",n.public?a.createElement(v.W,{key:"price",money:n.sharePrice}):"N/A"]]}),a.createElement("br",null),a.createElement(N.Z,{display:"flex"},a.createElement(x.Z,{title:a.createElement(w.C,{rows:[["Owned Stock Shares:",a.createElement(a.Fragment,null," ",(0,y.O3)(n.numShares)," "),a.createElement(a.Fragment,null,"(",(0,y.T3)(n.numShares/n.totalShares),")")],["Outstanding Shares:",a.createElement(a.Fragment,null," ",(0,y.O3)(n.issuedShares)," "),a.createElement(a.Fragment,null,"(",(0,y.T3)(n.issuedShares/n.totalShares),")")],["Private Shares:",a.createElement(a.Fragment,null," ",(0,y.O3)(n.investorShares)," "),a.createElement(a.Fragment,null,"(",(0,y.T3)(n.investorShares/n.totalShares),")")]]})},a.createElement(C.Z,null,"Total Stock Shares: ",(0,y.O3)(n.totalShares)))),a.createElement("br",null),a.createElement(J,{profit:r}),a.createElement("br",null),a.createElement(w.C,{rows:o}),a.createElement("br",null),a.createElement(W,null),a.createElement("div",null,a.createElement(I.g,{normalTooltip:a.createElement(a.Fragment,null,"Get a copy of and read ",a.createElement("i",null,"The Complete Handbook for Creating a Successful Corporation"),". This is a .lit file that guides you through the beginning of setting up a Corporation and provides some tips/pointers for helping you get started with managing it."),onClick:()=>n.getStarterGuide()},"Getting Started Guide"),a.createElement(D,null),n.divisions.size>0&&a.createElement(Z,null),a.createElement(G,null)),a.createElement("div",null,n.public?a.createElement(O,{rerender:t}):a.createElement(P,{rerender:t})),a.createElement("br",null),a.createElement(B,{rerender:t}))}function P(e){let{rerender:t}=e;const n=(0,S.wZ)(),[r,o]=(0,a.useState)(!1),[i,s]=(0,a.useState)(!1),l=n.fundingRoundo(!0)},"Find Investors"),a.createElement(I.g,{normalTooltip:a.createElement(a.Fragment,null,"Become a publicly traded and owned entity. Going public involves issuing shares for an IPO. Once you are a public company, your shares will be traded on the stock market."),onClick:()=>s(!0)},"Go Public"),a.createElement(m.c,{open:r,onClose:()=>o(!1),rerender:t}),a.createElement(f.s,{open:i,onClose:()=>s(!1),rerender:t}))}function B(e){let{rerender:t}=e;const[n,i]=(0,a.useState)(d.PurchaseMultipliers.x1),s=(0,S.wZ)();if(0===s.divisions.size)return a.createElement(C.Z,{variant:"h4"},"Upgrades are unlocked once you create an industry.");const l=Object.values(p.D).filter((e=>!s.unlocks.has(e.name))).map((e=>{let{name:n}=e;return a.createElement(o.S,{rerender:t,name:n,key:n})}));return a.createElement(a.Fragment,null,a.createElement(M.Z,{sx:{p:1,my:1}},a.createElement(C.Z,{variant:"h4"},"Unlocks"),a.createElement(A.ZP,{container:!0},l.length?l:a.createElement(C.Z,null,"All unlocks are owned."))),a.createElement(M.Z,{sx:{p:1,my:1}},a.createElement(C.Z,{variant:"h4"},"Upgrades"),a.createElement(A.ZP,{container:!0,spacing:2},a.createElement(A.ZP,{item:!0,xs:6},a.createElement(T.C,{setMultiplier:i,selectedMultiplier:n}))),a.createElement(A.ZP,{container:!0},(0,F.nd)(s.upgrades).map((e=>a.createElement(r.d,{rerender:t,upgradeName:e,key:e,mult:n}))))))}function O(e){let{rerender:t}=e;const n=(0,S.wZ)(),[r,o]=(0,a.useState)(!1),[i,m]=(0,a.useState)(!1),[f,h]=(0,a.useState)(!1),[d,p]=(0,a.useState)(!1),g=n.shareSaleCooldown>0,y=n.issueNewSharesCooldown>0;return a.createElement(a.Fragment,null,a.createElement(I.g,{normalTooltip:"Sell your shares in the company. The money earned from selling your shares goes into your personal account, not the Corporation's. This is one of the only ways to profit from your business venture.",disabledTooltip:g?"Cannot sell shares for "+n.convertCooldownToString(n.shareSaleCooldown):"",onClick:()=>o(!0)},"Sell Shares"),a.createElement(s.R,{open:r,onClose:()=>o(!1),rerender:t}),a.createElement(I.g,{normalTooltip:"Buy back shares you that previously issued or sold on the market",disabledTooltip:n.issuedShares<1?"No shares available to buy back":"",onClick:()=>m(!0)},"Buyback shares"),a.createElement(l.b,{open:i,onClose:()=>m(!1),rerender:t}),a.createElement(I.g,{normalTooltip:"Issue new equity shares to raise capital",disabledTooltip:y?`On cooldown for ${n.convertCooldownToString(n.issueNewSharesCooldown)}`:"",onClick:()=>h(!0)},"Issue New Shares"),a.createElement(u.p,{open:f,onClose:()=>h(!1),rerender:t}),a.createElement(I.g,{normalTooltip:"Manage the dividends that are paid out to shareholders (including yourself)",onClick:()=>p(!0)},"Issue Dividends"),a.createElement(c.C,{open:d,onClose:()=>p(!1)}))}function D(){const e=(0,S.wZ)(),[t,n]=(0,a.useState)(!1),r=e.valuation>=d.bribeThreshold&&E.J5.factions.filter((e=>h.i[e].getInfo().offersWork())).length>0;return a.createElement(a.Fragment,null,a.createElement(I.g,{normalTooltip:"Use your Corporations power and influence to bribe Faction leaders in exchange for reputation",disabledTooltip:r?"":"Your Corporation is not powerful enough to bribe Faction leaders",onClick:function(){r&&n(!0)}},"Bribe Factions"),a.createElement(i._,{open:t,onClose:()=>n(!1)}))}function Z(){const[e,t]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,a.createElement(I.g,{normalTooltip:"Sell a division to make room for other divisions",onClick:function(){t(!0)}},"Sell division"),a.createElement(R.H,{open:e,onClose:()=>t(!1)}))}function G(){const[e,t]=(0,a.useState)(!1),n=(0,S.wZ)().shareSaleCooldown>0;return a.createElement(a.Fragment,null,a.createElement(I.g,{normalTooltip:"Sell corporation and start over",disabledTooltip:n?"Sell corporation and start over. Cannot do this while Sell Shares is on cooldown.":"",onClick:function(){t(!0)}},"Sell CEO position"),a.createElement(L.Q,{open:e,onClose:()=>t(!1)}))}function J(e){let{profit:t}=e;const n=(0,S.wZ)();if(n.dividendRate<=0||t<=0)return a.createElement(a.Fragment,null);const r=n.dividendRate*t,o=t-r,i=r/n.totalShares,s=n.getCycleDividends()/d.secondsPerMarketCycle;return a.createElement(w.C,{rows:[["Retained Profits (after dividends):",a.createElement(k.G,{key:"profits",money:o})],["Dividend Percentage:",(0,y.T3)(n.dividendRate,0)],["Dividends per share:",a.createElement(k.G,{key:"dividends",money:i})],["Your earnings as a shareholder:",a.createElement(k.G,{key:"earnings",money:s})]]})}function W(){const e=(0,S.wZ)().storedCycles*g.t.MilliPerCycle;return e<=15e3?a.createElement(a.Fragment,null):a.createElement(N.Z,{display:"flex"},a.createElement(x.Z,{title:a.createElement(C.Z,null,"You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by the browser). Bonus time makes the Corporation mechanic progress faster, up to 10x the normal speed.")},a.createElement(C.Z,null,"Bonus time: ",(0,b.UF)(e),a.createElement("br",null),a.createElement("br",null))))}},45491:(e,t,n)=>{"use strict";n.d(t,{l:()=>v});var a=n(67294),r=n(28881),o=n(81138),i=n(56798),s=n(30120),l=n(17575),c=n(33244),u=n(80692),m=n(26127),f=n(2636),h=n(52983),d=n(56769),p=n(22115),g=n(22392),y=n(72360),b=n(98360);function v(e){const t=(0,b.wZ)(),n=(0,b.pZ)(),[v,k]=(0,a.useState)(!1),[w,E]=(0,a.useState)(!1),[S,C]=(0,a.useState)(!1),[x,N]=(0,a.useState)(!1),M=e.city,A=e.product,T=n.hasResearch("uPgrade: Dashboard"),L=A.cityData[M].productionAmount-A.cityData[M].actualSellAmount;let R;const F=A.cityData[M].desiredSellAmount;R=null!==F?(0,g.H)(F)?a.createElement(a.Fragment,null,"Sell (",(0,p.dp)(A.cityData[M].actualSellAmount),"/",F,")"):a.createElement(a.Fragment,null,"Sell (",(0,p.dp)(A.cityData[M].actualSellAmount),"/",(0,p.dp)(F),")"):a.createElement(a.Fragment,null,"Sell (0.000/0.000)"),R=a.createElement(a.Fragment,null,R," @ ",a.createElement(y.W,{money:A.uiMarketPrice[M]}));const I=A.cityData[M].productionLimit,_="Limit Production"+(null!==I?" ("+(0,p.dp)(I)+")":"");return a.createElement(r.Z,null,A.finished?a.createElement(a.Fragment,null,a.createElement(s.Z,{display:"flex"},a.createElement(l.Z,{title:a.createElement(o.Z,null,"Prod: ",(0,p.dp)(A.cityData[M].productionAmount),"/s",a.createElement("br",null),"Sell: ",(0,p.dp)(A.cityData[M].actualSellAmount)," /s")},a.createElement(o.Z,null,A.name,": ",(0,p.dp)(A.cityData[M].stored)," (",(0,p.dp)(L),"/s)"))),a.createElement(s.Z,{display:"flex"},a.createElement(l.Z,{title:a.createElement(o.Z,null,"Effective rating is calculated from product rating and the quality of materials used ",a.createElement("br",null),"Rating: ",(0,p.dp)(A.rating)," ",a.createElement("br",null)," ",a.createElement("br",null),"Quality: ",(0,p.dp)(A.stats.quality)," ",a.createElement("br",null),"Performance: ",(0,p.dp)(A.stats.performance)," ",a.createElement("br",null),"Durability: ",(0,p.dp)(A.stats.durability)," ",a.createElement("br",null),"Reliability: ",(0,p.dp)(A.stats.reliability)," ",a.createElement("br",null),"Aesthetics: ",(0,p.dp)(A.stats.aesthetics)," ",a.createElement("br",null),"Features: ",(0,p.dp)(A.stats.features),t.unlocks.has(c.CorpUnlockName.MarketResearchDemand)&&a.createElement(a.Fragment,null,a.createElement("br",null),"Demand: "+(0,p.dp)(A.demand)),t.unlocks.has(c.CorpUnlockName.MarketDataCompetition)&&a.createElement(a.Fragment,null,a.createElement("br",null),"Competition: "+(0,p.dp)(A.competition)))},a.createElement(o.Z,null,"Effective rating: ",(0,p.dp)(A.cityData[M].effectiveRating)))),a.createElement(s.Z,{display:"flex"},a.createElement(l.Z,{title:a.createElement(o.Z,null,"An estimate of the material cost it takes to create this Product.")},a.createElement(o.Z,null,"Est. Production Cost: ",a.createElement(y.W,{money:A.productionCost/u.baseProductProfitMult})))),a.createElement(s.Z,{display:"flex"},a.createElement(l.Z,{title:a.createElement(o.Z,null,"An estimate of how much consumers are willing to pay for this product. Setting the sale price above this may result in less sales. Setting the sale price below this may result in more sales.")},a.createElement(o.Z,null,"Est. Market Price: ",a.createElement(y.W,{money:A.productionCost})))),a.createElement(i.Z,{onClick:()=>C(!0)},"Discontinue"),a.createElement(m.n,{product:A,rerender:e.rerender,open:S,onClose:()=>C(!1)})):a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Designing ",A.name," (req. Operations/Engineers in ",A.creationCity,")..."),a.createElement("br",null),a.createElement(o.Z,null,(0,p.T3)(A.developmentProgress/100,2)," complete"),a.createElement(i.Z,{onClick:()=>N(!0)},"Cancel"),a.createElement(d.$,{product:A,rerender:e.rerender,open:x,onClose:()=>N(!1)})),(T||A.finished)&&a.createElement(a.Fragment,null,a.createElement(i.Z,{onClick:()=>k(!0)},R),a.createElement(h.a,{product:A,div:n,city:M,open:v,onClose:()=>k(!1)}),a.createElement("br",null),a.createElement(i.Z,{onClick:()=>E(!0)},_),a.createElement(f.b,{product:A,city:M,open:w,onClose:()=>E(!1)})))}},84074:(e,t,n)=>{"use strict";n.d(t,{S:()=>h});var a=n(67294),r=n(61226),o=n(98360),i=n(47616),s=n(81138),l=n(17575),c=n(56798),u=n(30120),m=n(31990),f=n(39463);function h(e){const t=(0,o.wZ)(),n=r.D[e.name],h=n.desc,d=n.price;return a.createElement(m.ZP,{item:!0,xs:4},a.createElement(u.Z,{display:"flex",alignItems:"center",flexDirection:"row-reverse"},a.createElement(c.Z,{disabled:t.funds{"use strict";n.d(t,{_:()=>b});var a=n(67294),r=n(81138),o=n(30120),i=n(26023),s=n(98649),l=n(56798),c=n(49173),u=n(58427),m=n(80692),f=n(22115),h=n(39463),d=n(48672),p=n(98360),g=n(33313),y=n(50862);function b(e){const t=c.J5.factions.filter((e=>!!u.i[e].getInfo().offersWork()&&!c.J5.hasGangWith(e))),n=(0,p.wZ)(),[b,v]=(0,a.useState)(NaN),[k,w]=(0,a.useState)(t.length>0?t[0]:""),E=0===b||isNaN(b)||b<0||n.funds{if(u.i[e].getInfo().offersWork()&&!c.J5.hasGangWith(e))return a.createElement(s.Z,{key:e,value:e},e)})))),a.createElement(r.Z,null,function(e){return 0===e?"":isNaN(e)||e<0?"ERROR: Invalid value(s) entered":n.fundsfunction(t){if(!k)return;const a=u.i[k];if(E)return;const r=S(t);(0,h.X)(`You gained ${(0,f.$n)(r)} reputation with ${a.name} by bribing them.`),a.playerReputation+=r,n.funds=n.funds-t,e.onClose()}(b||0)},"Bribe"))}},51569:(e,t,n)=>{"use strict";n.d(t,{b:()=>p});var a=n(67294),r=n(39463),o=n(48672),i=n(72360),s=n(22115),l=n(98360),c=n(81138),u=n(37150),m=n(33313),f=n(33563),h=n(81055),d=n(41139);function p(e){const t=(0,l.wZ)(),[n,p]=(0,a.useState)(NaN),[g,y]=t.calculateShareBuyback(e.open&&n||0),b=(0,d.CA)(t,n);function v(){if(!b)try{(0,f.Fm)(t,n),(0,r.X)(a.createElement(a.Fragment,null,a.createElement(c.Z,null,"You bought ",(0,s.O3)(n)," shares for ",a.createElement(i.W,{money:g}),"."),a.createElement(c.Z,null,a.createElement("b",null,t.name),"'s stock price rose to ",a.createElement(i.W,{money:y})," per share."))),e.onClose(),e.rerender(),p(NaN)}catch(e){(0,r.X)(`${e}`)}}return a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(c.Z,{component:"div"},"Enter the number of outstanding shares you would like to buy back.",a.createElement("ul",null,a.createElement("li",null,"Buying back shares will cause the stock price to rise due to market forces."),a.createElement("li",null,"These shares must be bought at a 10% premium over the market price."),a.createElement("li",null,"You purchase these shares with your own money (NOT your Corporation's funds).")),a.createElement("b",null,t.name)," currently has ",(0,s.O3)(t.issuedShares)," outstanding stock shares, valued at"," ",a.createElement(i.W,{money:t.sharePrice})," per share."),a.createElement("br",null),a.createElement(m.Y,{defaultValue:n||"",autoFocus:!0,placeholder:"Shares to buyback",onChange:p,onKeyDown:function(e){e.key===h.F.ENTER&&v()}}),a.createElement(u.g,{disabledTooltip:b,onClick:v},"Buy shares",g>0?a.createElement(a.Fragment,null," - ",a.createElement(i.W,{money:g,forPurchase:!0})," "):a.createElement(a.Fragment,null)),a.createElement("br",null),a.createElement(c.Z,{sx:{minHeight:"1.5em"}},n?b||a.createElement(a.Fragment,null,a.createElement("b",null,t.name),"'s stock price will rise to ",a.createElement(i.W,{money:y})," per share."):null))}},56769:(e,t,n)=>{"use strict";n.d(t,{$:()=>l});var a=n(67294),r=n(48672),o=n(98360),i=n(81138),s=n(56798);function l(e){const t=(0,o.pZ)();return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(i.Z,null,"Are you sure you want to do this? Canceling a product removes it completely and permanently. You will receive no money back by doing so"),a.createElement(s.Z,{onClick:function(){t.discontinueProduct(e.product.name),e.onClose(),e.rerender()}},"Cancel"))}},10458:(e,t,n)=>{"use strict";n.d(t,{w:()=>h});var a=n(67294),r=n(72360),o=n(48672),i=n(52947),s=n(24815),l=n(22115),c=n(49173),u=n(81138),m=n(37150),f=n(66351);function h(e){const t=c.J5.canAfford(15e10),[n,h]=(0,a.useState)("");if(!c.J5.canAccessCorporation()||c.J5.corporation)return e.onClose(),a.createElement(a.Fragment,null);const d=""===n?"Enter a name for the corporation":"";return a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(u.Z,null,"Would you like to start a corporation? This will require ",a.createElement(r.W,{money:15e10,forPurchase:!0})," for registration and initial funding."," ",3===c.J5.bitNodeN&&a.createElement(a.Fragment,null,"This ",a.createElement(r.W,{money:15e10})," can either be self-funded, or you can obtain the seed money from the government in exchange for ",(0,l.O3)(5e8)," shares (a ",a.createElement("b",null,"33.3%")," stake in the company)."),a.createElement("br",null),a.createElement("br",null),"If you would like to start one, please enter a name for your corporation below:"),a.createElement("br",null),a.createElement(f.Z,{autoFocus:!0,placeholder:"Corporation Name",onChange:function(e){h(e.target.value)},value:n}),3===c.J5.bitNodeN&&a.createElement(m.g,{onClick:function(){""!=n&&(c.J5.startCorporation(n,!0),e.onClose(),i.F.toPage(s.T3.Corporation))},disabledTooltip:d},"Use seed money"),a.createElement(m.g,{onClick:function(){t&&""!=n&&(c.J5.startCorporation(n,!1),c.J5.loseMoney(15e10,"corporation"),e.onClose(),i.F.toPage(s.T3.Corporation))},disabledTooltip:d||(t?"":"Insufficient player funds")},"Self-Fund (",a.createElement(r.W,{money:15e10,forPurchase:!0}),")"))}},26127:(e,t,n)=>{"use strict";n.d(t,{n:()=>l});var a=n(67294),r=n(48672),o=n(98360),i=n(81138),s=n(56798);function l(e){const t=(0,o.pZ)();return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(i.Z,null,"Are you sure you want to do this? Discontinuing a product removes it completely and permanently. You will no longer produce this product and all of its existing stock will be removed and left unsold"),a.createElement(s.Z,{onClick:function(){t.discontinueProduct(e.product.name),e.onClose(),e.rerender()}},"Discontinue"))}},22613:(e,t,n)=>{"use strict";n.d(t,{X:()=>b});var a=n(67294),r=n(39463),o=n(33563),i=n(48672),s=n(98360),l=n(17446),c=n(81138),u=n(66351),m=n(56798),f=n(30120),h=n(98649),d=n(26023),p=n(88775),g=n(21623),y=n(37150);function b(e){const t=(0,s.wZ)(),[n,b]=(0,a.useState)(""),v=(0,p.S)(),k=[...t.divisions.values()].filter((t=>(0,l.s)(e.mat.name,t))),w=k.length?k[0]:null,[E,S]=(0,a.useState)(w),C=E?(0,g.nd)(E.warehouses):[],x=C.length?C[0]:null,[N,M]=(0,a.useState)(x);return N&&!C.includes(N)&&M(C.length?C[0]:null),a.createElement(i.u,{open:e.open,onClose:e.onClose},a.createElement(c.Z,null,"Select the industry and city to export this material to, as well as how much of this material to export per second.",a.createElement("br",null),a.createElement("br",null),"You can use 'MAX', 'EINV', 'IINV', 'EPROD' or 'IPROD' in the amount for:",a.createElement("br",null),"- 'MAX' to export maximum amount possible.",a.createElement("br",null),"- 'EINV' export city's inventory of the material.",a.createElement("br",null),"- 'IINV' import city's inventory of the material.",a.createElement("br",null),"- 'EPROD' export city's per second production of the material",a.createElement("br",null),"- 'IPROD' import city's per second production of the material",a.createElement("br",null),"Note: Consumption is negative production.",a.createElement("br",null),a.createElement("br",null),'For example: setting the amount "(EINV-20)/10" would try to export all except 20 of the material.'),a.createElement(d.Z,{onChange:function(e){const n=t.divisions.get(e.target.value);n&&S(n)},value:(null==E?void 0:E.name)??""},k.map((e=>a.createElement(h.Z,{key:e.name,value:e.name},e.name)))),a.createElement(d.Z,{onChange:function(e){M(e.target.value)},value:N??""},C.map((e=>a.createElement(h.Z,{key:e,value:e},e)))),a.createElement(u.Z,{placeholder:"Export amount / s",onChange:function(e){b(e.target.value)},value:n}),a.createElement(y.g,{disabledTooltip:E?N?"":"No target city selected":"No target division selected",onClick:function(){try{if(!E||!N)return;(0,o.DY)(E,N,e.mat,n)}catch(e){(0,r.X)(e+"")}e.onClose()}},"Export"),a.createElement(c.Z,null,"Below is a list of all current exports of this material from this warehouse. Clicking on one of the exports below will REMOVE that export."),e.mat.exports.map(((t,n)=>a.createElement(f.Z,{display:"flex",alignItems:"center",key:n},a.createElement(m.Z,{sx:{mx:2},onClick:()=>function(t){for(let n=0;n{"use strict";n.d(t,{c:()=>f});var a=n(67294),r=n(39463),o=n(22115),i=n(48672),s=n(72360),l=n(98360),c=n(33563),u=n(81138),m=n(56798);function f(e){const t=(0,l.wZ)(),{funds:n,shares:f}=t.getInvestmentOffer();return a.createElement(i.u,{open:e.open,onClose:e.onClose},a.createElement(u.Z,null,"An investment firm has offered to buy ",(0,o.O3)(f)," shares of stock (a"," ",a.createElement("b",null,(0,o.T3)(f/t.totalShares,1))," stake in the company).",a.createElement("br",null),a.createElement("br",null),a.createElement("b",null,t.name)," will receive ",a.createElement(s.W,{money:n}),".",a.createElement("br",null),"Your equity will fall to ",a.createElement("b",null,(0,o.T3)((t.numShares-f)/t.totalShares,1)),".",a.createElement("br",null),a.createElement("br",null),a.createElement("b",null,"Hint"),": Investment firms will offer more money if your Corporation is turning a profit.",a.createElement("br",null),a.createElement("br",null),"Do you accept this offer?"),a.createElement("br",null),a.createElement(m.Z,{onClick:function(){if(0!==f)try{(0,c.Zd)(t),(0,r.X)(a.createElement(a.Fragment,null,a.createElement(u.Z,null,"You accepted the investment offer."),a.createElement(u.Z,null,a.createElement("b",null,t.name)," received ",a.createElement(s.W,{money:n}),"."),a.createElement(u.Z,null,"Your remaining equity is ",a.createElement("b",null,(0,o.T3)(t.numShares/t.totalShares,1)),"."))),e.onClose(),e.rerender()}catch(e){(0,r.X)(`${e}`)}}},"Accept")," ",a.createElement(m.Z,{onClick:e.onClose},"Ignore"))}},10600:(e,t,n)=>{"use strict";n.d(t,{s:()=>g});var a=n(67294),r=n(39463),o=n(48672),i=n(72360),s=n(22115),l=n(98360),c=n(81138),u=n(37150),m=n(33313),f=n(30120),h=n(81055),d=n(20145),p=n(33563);function g(e){const t=(0,l.wZ)(),[n,g]=(0,a.useState)(NaN),y=(t.numShares-(n||0))/t.totalShares,b=t.getTargetSharePrice(y),v=n>=t.numShares?"Cannot issue this many shares":0===n||(0,d.a)(n)?"":"Must issue an non-negative integer number of shares";function k(){if(!v)try{(0,p.KB)(t,n),(0,r.X)(a.createElement(c.Z,null,a.createElement("b",null,t.name)," went public and earned ",a.createElement(i.W,{money:n*b})," in its IPO.")),e.onClose(),e.rerender(),g(NaN)}catch(e){(0,r.X)(`${e}`)}}return a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(c.Z,{component:"div"},"Enter the number of shares you would like to issue for your IPO.",a.createElement("ul",null,a.createElement("li",null,"These shares will be publicly sold and you will no longer own them."),a.createElement("li",null,"The IPO money will be deposited directly into your Corporation's funds.")),"You can issue some, but not all, of your ",(0,s.O3)(t.numShares)," shares."),a.createElement("br",null),a.createElement(f.Z,{display:"flex",alignItems:"center"},a.createElement(m.Y,{defaultValue:n||"",onChange:g,autoFocus:!0,placeholder:"Shares to issue",onKeyDown:function(e){e.key===h.F.ENTER&&k()}}),a.createElement(u.g,{disabledTooltip:v,onClick:k},"Go Public")),a.createElement("br",null),a.createElement(c.Z,{sx:{minHeight:"3em"}},isNaN(n)?null:v||a.createElement(a.Fragment,null,"Go public at ",a.createElement(i.W,{money:b})," per share?",a.createElement("br",null),a.createElement("b",null,t.name)," will receive ",a.createElement(i.W,{money:b*(n||0)}),".")))}},71277:(e,t,n)=>{"use strict";n.d(t,{C:()=>p});var a=n(67294),r=n(39463),o=n(48672),i=n(72360),s=n(85882),l=n(80692),c=n(33563),u=n(98360),m=n(81138),f=n(66351),h=n(56798),d=n(81055);function p(e){const t=(0,u.wZ)(),[n,p]=(0,a.useState)(0),g=!isNaN(n)&&n>=0&&n<=100*l.dividendMaxRate;function y(){if(g&&null!==n){try{(0,c.wZ)(t,n/100)}catch(e){(0,r.X)(e+"")}e.onClose()}}return a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(m.Z,null,"Dividends are a distribution of a portion of the corporation's profits to the shareholders. This includes yourself, as well.",a.createElement("br",null),a.createElement("br",null),"Note that issuing dividends will negatively affect ",a.createElement("b",null,t.name),"'s stock price.",a.createElement("br",null),a.createElement("br",null),"In order to issue dividends, simply allocate some percentage of your Corporation's profits to dividends. This percentage must be an integer between 0 and 100. (A percentage of 0 means no dividends will be issued.)",a.createElement("br",null),a.createElement("br",null),a.createElement("b",null,"Example:")," Assume your corporation makes ",a.createElement(s.G,{money:1e8})," in profit and you allocate 40% of that towards dividends. That means your corporation will gain ",a.createElement(s.G,{money:6e7})," in funds and the remaining"," ",a.createElement(s.G,{money:4e7})," will be paid as dividends. Since your corporation starts with 1 billion shares, every shareholder will be paid ",a.createElement(i.W,{money:.04})," per share per second before taxes."),a.createElement("br",null),a.createElement(f.Z,{autoFocus:!0,value:n,onChange:function(e){if(""===e.target.value)p(0);else{let t=parseFloat(e.target.value);t>100&&(t=100),t<0&&(t=0),p(t)}},onKeyDown:function(e){e.key===d.F.ENTER&&y()},placeholder:"Dividend %",type:"number"}),a.createElement(h.Z,{disabled:!g,sx:{mx:1},onClick:y},"Allocate Dividend Percentage"))}},81737:(e,t,n)=>{"use strict";n.d(t,{p:()=>g});var a=n(67294),r=n(22115),o=n(39463),i=n(48672),s=n(72360),l=n(98360),c=n(81138),u=n(33313),m=n(37150),f=n(81055),h=n(33563),d=n(80692),p=n(41139);function g(e){const t=(0,l.wZ)(),[n,g]=(0,a.useState)(NaN),y=t.calculateMaxNewShares(),b=1e7*Math.round((n||0)/1e7),v=t.numShares/(t.totalShares+(b||0)),k=t.getTargetSharePrice(v),w=(n||0)*(t.sharePrice+k)/2,E=t.investorShares/t.totalShares,S=1e7*Math.round(b/2*E/1e7),C=(0,p.Ox)(t,n);function x(){if(!C)try{const[i,l,u]=(0,h.yp)(t,n);(0,o.X)(a.createElement(a.Fragment,null,a.createElement(c.Z,null,"Issued ",(0,r.O3)(l)," new shares and raised ",a.createElement(s.W,{money:i}),"."),u>0?a.createElement(c.Z,null,(0,r.O3)(u)," of these shares were bought by private investors."):null,a.createElement(c.Z,null,a.createElement("b",null,t.name),"'s stock price fell to ",a.createElement(s.W,{money:t.sharePrice}),"."))),e.onClose(),e.rerender()}catch(e){(0,o.X)(`${e}`)}}const N=d.issueNewSharesCooldown*(t.totalShares/d.initialShares);return a.createElement(i.u,{open:e.open,onClose:e.onClose},a.createElement(c.Z,{component:"div"},"You can issue new equity shares (i.e. stocks) in order to raise capital.",a.createElement("ul",null,a.createElement("li",null,"Issuing new shares will cause dilution, lowering stock price and reducing dividends per share."),a.createElement("li",null,"New shares are sold between the current price and the updated price."),a.createElement("li",null,"The money from issuing new shares will be deposited directly into your Corporation's funds."),a.createElement("li",null,"Private shareholders have first priority for buying new shares, up to half of their existing stake in the company ",a.createElement("b",null,"(",(0,r.T3)(E/2,1),")"),".",a.createElement("br",null),"If they choose to exercise this option, these newly issued shares become private, restricted shares, which means you cannot buy them back."),a.createElement("li",null,"You will not be able to issue new shares again for ",a.createElement("b",null,t.convertCooldownToString(N)),".")),"You can issue at most ",(0,r.O3)(y)," new shares.",a.createElement("br",null),"The number of new shares issued must be a multiple of 10 million."),a.createElement("br",null),a.createElement(u.Y,{defaultValue:n||"",autoFocus:!0,placeholder:"# New Shares",onChange:g,onKeyDown:function(e){e.key===f.F.ENTER&&x()}}),a.createElement(m.g,{disabledTooltip:C,onClick:x},"Issue New Shares"),a.createElement("br",null),a.createElement(c.Z,{sx:{minHeight:"6em"}},C||a.createElement(a.Fragment,null,"Issue ",(0,r.O3)(b)," new shares?",a.createElement("br",null),S>0?`Private investors may buy up to ${(0,r.O3)(S)} of these shares and keep them off the market.`:null,a.createElement("br",null),a.createElement("b",null,t.name)," will receive ",a.createElement(s.W,{money:w}),".",a.createElement("br",null),a.createElement("b",null,t.name),"'s stock price will fall to ",a.createElement(s.W,{money:k})," per share.")))}},83475:(e,t,n)=>{"use strict";n.d(t,{m:()=>u});var a=n(67294),r=n(33563),o=n(48672),i=n(81138),s=n(56798),l=n(66351),c=n(81055);function u(e){const[t,n]=(0,a.useState)(null);function u(){let n=t;null===n&&(n=-1),(0,r.Pe)(e.material,n),e.onClose()}return(0,a.useEffect)((()=>{e.open||n(null)}),[e.open]),a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(i.Z,null,"Enter a limit to the amount of this material you would like to produce per second. Leave the box empty to set no limit."),a.createElement(l.Z,{autoFocus:!0,placeholder:"Limit",type:"number",onChange:function(e){""===e.target.value?n(null):n(parseFloat(e.target.value))},onKeyDown:function(e){e.key===c.F.ENTER&&u()}}),a.createElement(s.Z,{onClick:u},"Limit production"))}},2636:(e,t,n)=>{"use strict";n.d(t,{b:()=>u});var a=n(67294),r=n(33563),o=n(48672),i=n(81138),s=n(56798),l=n(66351),c=n(81055);function u(e){const[t,n]=(0,a.useState)(null);function u(){let n=t;null===n&&(n=-1),(0,r.Dn)(e.product,e.city,n),e.onClose()}return(0,a.useEffect)((()=>{e.open||n(null)}),[e.open]),a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(i.Z,null,"Enter a limit to the amount of this product you would like to produce per second. Leave the box empty to set no limit."),a.createElement(l.Z,{autoFocus:!0,placeholder:"Limit",type:"number",onChange:function(e){""===e.target.value?n(null):n(parseFloat(e.target.value))},onKeyDown:function(e){e.key===c.F.ENTER&&u()}}),a.createElement(s.Z,{onClick:u},"Limit production"))}},93916:(e,t,n)=>{"use strict";n.d(t,{R:()=>b});var a=n(67294),r=n(39463),o=n(48672),i=n(32927),s=n(33244),l=n(33563),c=n(98360),u=n(81138),m=n(66351),f=n(56798),h=n(98649),d=n(26023),p=n(81055),g=n(33313),y=n(21623);function b(e){const t=(0,c.wZ)(),n=(0,c.pZ)(),b=(0,y.nd)(n.offices),[v,k]=(0,a.useState)(b.length>0?b[0]:s.CityName.Sector12),[w,E]=(0,a.useState)(""),[S,C]=(0,a.useState)(NaN),[x,N]=(0,a.useState)(NaN),M=i.vm[n.type];if(n.hasMaximumNumberProducts()||!M.product)return a.createElement(a.Fragment,null);function A(){if(!isNaN(S)&&!isNaN(x)){try{(0,l.oL)(t,n,v,w,S,x)}catch(e){(0,r.X)(e+"")}e.onClose()}}return a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(u.Z,null,a.createElement("br",null),M.product.desc,a.createElement("br",null),a.createElement("br",null),"To begin developing a product, first choose the city in which it will be designed. The stats of your employees in the selected city affect the properties of the finished product, such as its quality, performance, and durability.",a.createElement("br",null),a.createElement("br",null),"You can also choose to invest money in the design and marketing of the product. Investing money in its design will result in a superior product. Investing money in marketing the product will help the product's sales."),a.createElement(d.Z,{style:{margin:"5px"},onChange:function(e){k(e.target.value)},defaultValue:v},b.map((e=>a.createElement(h.Z,{key:e,value:e},e)))),a.createElement(m.Z,{onChange:function(e){E(e.target.value)},placeholder:(T=n.type,T===s.IndustryType.Restaurant?"Restaurant Name":T===s.IndustryType.Healthcare?"Hospital Name":T===s.IndustryType.RealEstate?"Property Name":"Product Name")}),a.createElement("br",null),a.createElement(g.Y,{onChange:C,autoFocus:!0,placeholder:"Design investment"}),a.createElement(g.Y,{onChange:N,onKeyDown:function(e){e.key===p.F.ENTER&&A()},placeholder:"Marketing investment"}),a.createElement(f.Z,{onClick:A},"Develop Product"));var T}},57900:(e,t,n)=>{"use strict";n.d(t,{H:()=>g});var a=n(67294),r=n(39463),o=n(51004),i=n(22115),s=n(33563),l=n(48672),c=n(72360),u=n(98360),m=n(81138),f=n(66351),h=n(56798),d=n(81055);function p(e){const t=(0,u.wZ)(),n=(0,u.pZ)(),[l,p]=(0,a.useState)(""),[g,y]=(0,a.useState)(!1);function b(e){const t=parseFloat(e.amount),n=t*e.mat.marketPrice,r=o.d[e.mat.name].size;return t>(e.warehouse.size-e.warehouse.sizeUsed)/r?(y(!0),a.createElement(a.Fragment,null,a.createElement(m.Z,{color:"error"},"Not enough warehouse space to purchase this amount"))):isNaN(n)||t<0?(y(!0),a.createElement(a.Fragment,null,a.createElement(m.Z,{color:"error"},"Invalid input for Bulk Purchase amount"))):(y(!1),a.createElement(a.Fragment,null,a.createElement(m.Z,null,"Purchasing ",(0,i.AN)(t)," of ",e.mat.name," will cost ",a.createElement(c.W,{money:n}))))}function v(){try{(0,s._A)(t,n,e.warehouse,e.mat,parseFloat(l))}catch(e){(0,r.X)(e+"")}e.onClose()}return a.createElement(a.Fragment,null,a.createElement(m.Z,null,"Enter the amount of ",e.mat.name," you would like to bulk purchase. This purchases the specified amount instantly (all at once)."),a.createElement(b,{warehouse:e.warehouse,mat:e.mat,amount:l}),a.createElement(f.Z,{value:l,onChange:function(e){p(e.target.value)},type:"number",placeholder:"Bulk Purchase amount",onKeyDown:function(e){e.key===d.F.ENTER&&v()}}),a.createElement(h.Z,{disabled:g,onClick:v},"Confirm Bulk Purchase"))}function g(e){const t=(0,u.pZ)(),[n,o]=(0,a.useState)(e.mat.buyAmount?e.mat.buyAmount:0);function i(){if(null!==n){try{(0,s.MO)(t,e.mat,n)}catch(e){(0,r.X)(e+"")}e.onClose()}}return a.createElement(l.u,{open:e.open,onClose:e.onClose},a.createElement(m.Z,null,"Enter the amount of ",e.mat.name," you would like to purchase per second. This material's cost changes constantly.",e.disablePurchaseLimit?"Note: Purchase amount is disabled as smart supply is enabled":""),a.createElement(f.Z,{value:n,onChange:function(e){o(parseFloat(e.target.value))},autoFocus:!0,placeholder:"Purchase amount",type:"number",disabled:e.disablePurchaseLimit,onKeyDown:function(e){e.key===d.F.ENTER&&i()}}),a.createElement(h.Z,{disabled:e.disablePurchaseLimit,onClick:i},"Confirm"),a.createElement(h.Z,{disabled:e.disablePurchaseLimit,onClick:function(){e.mat.buyAmount=0,e.onClose()}},"Clear Purchase"),a.createElement(p,{onClose:e.onClose,mat:e.mat,warehouse:e.warehouse}))}},84212:(e,t,n)=>{"use strict";n.d(t,{D:()=>k});var a=n(67294),r=n(48672),o=n(32927),i=n(80692),s=n(33563),l=n(78845),c=n(51087),u=n(39463),m=n(81138),f=n(17575),h=n(56798),d=n(30120),p=n(51627),g=n(23508),y=n(60181),b=n(27036);function v(e){let{n:t,division:n}=e;const[r,o]=(0,a.useState)(!1);if(null===t)return a.createElement(a.Fragment,null);const k=l.k[t.researchName];let w=n.researchPointsa.createElement(f.Z,{title:a.createElement(m.Z,null,"Research points: ",k.cost,a.createElement("br",null),k.description)},e),N=a.createElement(d.Z,null,x(a.createElement("span",null,a.createElement(h.Z,{color:C,disabled:w&&!t.researched,onClick:S,style:{width:"100%",textAlign:"left",justifyContent:"unset"}},t.researched&&a.createElement(b.Z,{sx:{mr:1}}),t.researchName))));return 0===t.children.length?N:a.createElement(d.Z,null,a.createElement(d.Z,{display:"flex",sx:{border:"1px solid "+c.Z.theme.well}},x(a.createElement("span",{style:{width:"100%"}},a.createElement(h.Z,{color:C,disabled:w&&!t.researched,onClick:S,sx:{width:"100%",textAlign:"left",justifyContent:"unset",borderColor:c.Z.theme.button}},t.researched&&a.createElement(b.Z,{sx:{mr:1}}),t.researchName))),a.createElement(h.Z,{onClick:()=>o((e=>!e)),sx:{borderColor:c.Z.theme.button,minWidth:"fit-content"}},r?a.createElement(y.Z,{color:"primary"}):a.createElement(g.Z,{color:"primary"}))),a.createElement(p.Z,{in:r,unmountOnExit:!0},a.createElement(d.Z,{m:1},t.children.map((e=>a.createElement(v,{key:e.researchName,division:n,n:e}))))))}function k(e){const t=o.E5[e.industry.type];return void 0===t?a.createElement(a.Fragment,null):a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(v,{division:e.industry,n:t.root}),a.createElement(m.Z,{sx:{mt:1}},"Research points: ",e.industry.researchPoints.toFixed(3),a.createElement("br",null),"Multipliers from research:",a.createElement("br",null),"* Advertising Multiplier: x",t.getAdvertisingMultiplier(),a.createElement("br",null),"* Employee Charisma Multiplier: x",t.getEmployeeChaMultiplier(),a.createElement("br",null),"* Employee Creativity Multiplier: x",t.getEmployeeCreMultiplier(),a.createElement("br",null),"* Employee Efficiency Multiplier: x",t.getEmployeeEffMultiplier(),a.createElement("br",null),"* Employee Intelligence Multiplier: x",t.getEmployeeIntMultiplier(),a.createElement("br",null),"* Production Multiplier: x",t.getProductionMultiplier(),a.createElement("br",null),"* Sales Multiplier: x",t.getSalesMultiplier(),a.createElement("br",null),"* Scientific Research Multiplier: x",t.getScientificResearchMultiplier(),a.createElement("br",null),"* Storage Multiplier: x",t.getStorageMultiplier()))}},739:(e,t,n)=>{"use strict";n.d(t,{Q:()=>f});var a=n(67294),r=n(72360),o=n(48672),i=n(52947),s=n(24815),l=n(49173),c=n(81138),u=n(56798),m=n(66351);function f(e){var t;let n=15e10;null!==(t=l.J5.corporation)&&void 0!==t&&t.seedFunded||(n/=3);const f=l.J5.canAfford(n),[h,d]=(0,a.useState)("");return a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(c.Z,null,"Would you like to sell your position as CEO and start a new corporation? Everything from your current corporation will be gone and you start fresh.",a.createElement("br",null),a.createElement("br",null),"If you would like to start new one, please enter a name for your corporation below:"),a.createElement("br",null),a.createElement(m.Z,{autoFocus:!0,placeholder:"Corporation Name",onChange:function(e){d(e.target.value)},value:h}),3===l.J5.bitNodeN&&a.createElement(u.Z,{onClick:function(){""!=h&&(l.J5.startCorporation(h,!0),e.onClose(),i.F.toPage(s.T3.Corporation))},disabled:""==h},"Use seed money"),a.createElement(u.Z,{onClick:function(){f&&""!=h&&(l.J5.startCorporation(h,!1),l.J5.loseMoney(n,"corporation"),e.onClose(),i.F.toPage(s.T3.Corporation))},disabled:""==h||!f},"Self-Fund (",a.createElement(r.W,{money:n,forPurchase:!0}),")"))}},45774:(e,t,n)=>{"use strict";n.d(t,{H:()=>g});var a=n(67294),r=n(48672),o=n(72360),i=n(81138),s=n(56798),l=n(98649),c=n(26023),u=n(98360),m=n(33244),f=n(80692),h=n(33563),d=n(39463),p=n(21623);function g(e){const t=(0,u.wZ)(),n=[...t.divisions.values()],[g,y]=(0,a.useState)(n[0]);if(0===n.length)return a.createElement(a.Fragment,null);const b=function(){let e=g.startingCost;for(const t of(0,p.nd)(g.offices))t!==m.CityName.Sector12&&(e+=f.officeInitialCost,g.warehouses[t]&&(e+=f.warehouseInitialCost));return e/=2,e}();return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(a.Fragment,null,a.createElement(i.Z,null,"Would you like to sell a division?",a.createElement("br",null),"You'll get back half the money you've spent on starting the division and expanding to offices and warehouses."),a.createElement(c.Z,{value:g.name,onChange:function(e){const n=t.divisions.get(e.target.value);n&&y(n)}},n.map((e=>a.createElement(l.Z,{key:e.name,value:e.name},e.name)))),a.createElement(i.Z,null,"Division ",g.name," has:"),a.createElement(i.Z,null,"Profit: ",a.createElement(o.W,{money:(g.lastCycleRevenue-g.lastCycleExpenses)/10})," / sec"," "),a.createElement(i.Z,null,"Cities:",(0,p.nd)(g.offices).length),a.createElement(i.Z,null,"Warehouses:",(0,p.nd)(g.warehouses).length),g.makesProducts??a.createElement(i.Z,null,"Products: ",g.products.size),a.createElement("br",null),a.createElement(i.Z,null,"Sell price: ",a.createElement(o.W,{money:b})),a.createElement(s.Z,{onClick:function(){(0,h.aq)(t,g.name),t.funds+=b,e.onClose(),(0,d.X)(a.createElement(i.Z,null,"Sold ",a.createElement("b",null,g.name)," for ",a.createElement(o.W,{money:b}),", you now have space for",t.maxDivisions-t.divisions.size," more divisions."))}},"Sell division")))}},86326:(e,t,n)=>{"use strict";n.d(t,{n:()=>d});var a=n(67294),r=n(81138),o=n(66351),i=n(56798),s=n(29919),l=n(16056),c=n(17575),u=n(48672),m=n(39463),f=n(33563),h=n(81055);function d(e){const[t,n]=(0,a.useState)(String(e.mat.desiredSellAmount)),[d,p]=(0,a.useState)(String(e.mat.desiredSellPrice));function g(){try{(0,f.Sz)(e.mat,t,d)}catch(e){(0,m.X)(e+"")}e.onClose()}function y(e){e.key===h.F.ENTER&&g()}return a.createElement(u.u,{open:e.open,onClose:e.onClose},a.createElement(r.Z,null,"Enter the maximum amount of ",e.mat.name," you would like to sell per second, as well as the price at which you would like to sell.",a.createElement("br",null),a.createElement("br",null),"If the sell amount is set to 0, then the material will not be sold. If the sell price is set to 0, then the material will be discarded.",a.createElement("br",null),a.createElement("br",null),"Setting the sell amount to 'MAX' will result in you always selling the maximum possible amount of the material.",a.createElement("br",null),a.createElement("br",null),"When setting the sell amount, you can use the 'PROD' variable to designate a dynamically changing amount that depends on your production. For example, if you set the sell amount to 'PROD-5' then you will always sell 5 less of the material than you produce.",a.createElement("br",null),a.createElement("br",null),"When setting the sell price, you can use the 'MP' variable to designate a dynamically changing price that depends on the market price. For example, if you set the sell price to 'MP+10' then it will always be sold at $10 above the market price."),a.createElement("br",null),a.createElement(o.Z,{value:t,autoFocus:!0,type:"text",placeholder:"Sell amount",onChange:function(e){n(e.target.value)},onKeyDown:y}),a.createElement(o.Z,{value:d,type:"text",placeholder:"Sell price",onChange:function(e){p(e.target.value)},onKeyDown:y}),a.createElement(i.Z,{onClick:g,style:{marginLeft:".5rem",marginRight:".5rem"}},"Confirm"),e.div.hasResearch("Market-TA.I")&&a.createElement(s.Z,{style:{marginRight:"1rem"},control:a.createElement(l.Z,{checked:e.mat.marketTa1,onChange:t=>e.mat.marketTa1=t.target.checked}),label:a.createElement(c.Z,{title:a.createElement(r.Z,null,"If this is enabled, then this Material will automatically be sold at market price + markup.",a.createElement("br",null),"This overrides player set pricing and gets overriden by an active TA2.")},a.createElement(r.Z,null,"Market-TA.I"))}),e.div.hasResearch("Market-TA.II")&&a.createElement(s.Z,{control:a.createElement(l.Z,{checked:e.mat.marketTa2,onChange:t=>e.mat.marketTa2=t.target.checked}),label:a.createElement(c.Z,{title:a.createElement(r.Z,null,"If this is enabled, then this Material will automatically be sold at the optimal price such that the amount sold matches the amount specified.",a.createElement("br",null),"This overrides player set pricing and TA1.")},a.createElement(r.Z,null,"Market-TA.II"))}))}},52983:(e,t,n)=>{"use strict";n.d(t,{a:()=>d});var a=n(67294),r=n(81138),o=n(66351),i=n(56798),s=n(29919),l=n(16056),c=n(17575),u=n(48672),m=n(39463),f=n(33563),h=n(81055);function d(e){const[t,n]=(0,a.useState)(!0),[d,p]=(0,a.useState)(String(e.product.cityData[e.city].desiredSellAmount)),[g,y]=(0,a.useState)(String(e.product.cityData[e.city].desiredSellPrice));function b(){try{(0,f.qv)(e.product,e.city,d,g,t)}catch(e){(0,m.X)(e+"")}e.onClose()}function v(e){e.key===h.F.ENTER&&b()}return a.createElement(u.u,{open:e.open,onClose:e.onClose},a.createElement(r.Z,null,"Enter the maximum amount of ",e.product.name," you would like to sell per second, as well as the price at which you would like to sell.",a.createElement("br",null),a.createElement("br",null),"If the sell amount is set to 0, then the product will not be sold. If the sell price is set to 0, then the product will be discarded.",a.createElement("br",null),a.createElement("br",null),"Setting the sell amount to 'MAX' will result in you always selling the maximum possible amount of the product.",a.createElement("br",null),a.createElement("br",null),"When setting the sell amount, you can use the 'PROD' variable to designate a dynamically changing amount that depends on your production. For example, if you set the sell amount to 'PROD-1' then you will always sell 1 less of the product than you produce.",a.createElement("br",null),a.createElement("br",null),"When setting the sell price, you can use the 'MP' variable to set a dynamically changing price that depends on the product's estimated market price. For example, if you set it to 'MP*5' then it will always be sold at five times the estimated market price."),a.createElement("br",null),a.createElement(o.Z,{value:d,autoFocus:!0,type:"text",placeholder:"Sell amount",onChange:function(e){p(e.target.value)},onKeyDown:v}),a.createElement(o.Z,{value:g,type:"text",placeholder:"Sell price",onChange:function(e){y(e.target.value)},onKeyDown:v}),a.createElement(i.Z,{onClick:b,style:{marginLeft:".5rem",marginRight:".5rem"}},"Confirm"),a.createElement(s.Z,{style:{marginRight:".5rem"},control:a.createElement(l.Z,{checked:t,onChange:function(e){n(e.target.checked)}}),label:a.createElement(r.Z,null,"Set for all cities")}),e.div.hasResearch("Market-TA.I")&&a.createElement(s.Z,{style:{marginRight:"1rem"},control:a.createElement(l.Z,{checked:e.product.marketTa1,onChange:t=>e.product.marketTa1=t.target.checked}),label:a.createElement(c.Z,{title:a.createElement(r.Z,null,"If this is enabled, then this Material will automatically be sold at market price + markup.",a.createElement("br",null),"This overrides player set pricing and gets overriden by an active TA2.")},a.createElement(r.Z,null,"Market-TA.I"))}),e.div.hasResearch("Market-TA.II")&&a.createElement(s.Z,{control:a.createElement(l.Z,{checked:e.product.marketTa2,onChange:t=>e.product.marketTa2=t.target.checked}),label:a.createElement(c.Z,{title:a.createElement(r.Z,null,"If this is enabled, then this Material will automatically be sold at the optimal price such that the amount sold matches the amount specified.",a.createElement("br",null),"This overrides player set pricing and TA1.")},a.createElement(r.Z,null,"Market-TA.II"))}))}},82737:(e,t,n)=>{"use strict";n.d(t,{R:()=>g});var a=n(67294),r=n(39463),o=n(22115),i=n(48672),s=n(72360),l=n(98360),c=n(80692),u=n(81138),m=n(37150),f=n(33563),h=n(81055),d=n(33313),p=n(41139);function g(e){const t=(0,l.wZ)(),[n,g]=(0,a.useState)(NaN),[y,b]=t.calculateShareSale(e.open&&n||0),v=(0,p.b5)(t,n);function k(){if(!v)try{(0,f.aT)(t,n),(0,r.X)(a.createElement(a.Fragment,null,a.createElement(u.Z,null,"You sold ",(0,o.O3)(n)," shares for ",a.createElement(s.W,{money:y}),"."),a.createElement(u.Z,null,a.createElement("b",null,t.name),"'s stock price fell to ",a.createElement(s.W,{money:b})," per share."))),e.onClose(),e.rerender(),g(NaN)}catch(e){(0,r.X)(`${e}`)}}return a.createElement(i.u,{open:e.open,onClose:e.onClose},a.createElement(u.Z,{component:"div"},"Enter the number of shares you would like to sell.",a.createElement("ul",null,a.createElement("li",null,"Selling shares will cause stock price to fall due to market forces."),a.createElement("li",null,"The money from selling your shares will go directly to you (NOT your Corporation)."),a.createElement("li",null,"You will not be able to sell shares again (or dissolve the corporation) for"," ",a.createElement("b",null,t.convertCooldownToString(c.sellSharesCooldown)),".")),"You currently have ",(0,o.O3)(t.numShares)," shares of ",a.createElement("b",null,t.name)," stock, valued at"," ",a.createElement(s.W,{money:t.sharePrice})," per share."),a.createElement("br",null),a.createElement(d.Y,{defaultValue:n||"",variant:"standard",autoFocus:!0,placeholder:"Shares to sell",onChange:g,onKeyDown:function(e){e.key===h.F.ENTER&&k()}}),a.createElement(m.g,{disabledTooltip:v,onClick:k},"Sell shares"),a.createElement("br",null),a.createElement(u.Z,{sx:{minHeight:"3em"}},n?v||a.createElement(a.Fragment,null,"You will receive ",a.createElement(s.W,{money:y}),".",a.createElement("br",null),a.createElement("b",null,t.name),"'s stock price will fall to ",a.createElement(s.W,{money:b})," per share."):null))}},82644:(e,t,n)=>{"use strict";n.d(t,{v:()=>d});var a=n(67294),r=n(33563),o=n(39463),i=n(48672),s=n(98360),l=n(81138),c=n(29919),u=n(16056),m=n(88775),f=n(21623);function h(e){const[t,n]=(0,a.useState)(e.warehouse.smartSupplyOptions[e.matName]);return a.createElement(a.Fragment,null,"label=",a.createElement(l.Z,null,e.warehouse.materials[e.matName].name),a.createElement(c.Z,{control:a.createElement(u.Z,{checked:"leftovers"==t,onChange:function(){const a="leftovers"!=t?"leftovers":"none";try{const t=e.matName,n=e.warehouse.materials[t];(0,r.VG)(e.warehouse,n,a)}catch(e){(0,o.X)(e+"")}n(a)}}),label:a.createElement(l.Z,null,"Use leftovers")}),a.createElement(c.Z,{control:a.createElement(u.Z,{checked:"imports"==t,onChange:function(){const a="imports"!=t?"imports":"none";try{const t=e.matName,n=e.warehouse.materials[t];(0,r.VG)(e.warehouse,n,a)}catch(e){(0,o.X)(e+"")}n(a)}}),label:a.createElement(l.Z,null,"Use imported")}),a.createElement("br",null))}function d(e){const t=(0,s.pZ)(),n=(0,m.S)(),o=[];for(const n of(0,f.nd)(t.requiredMaterials))e.warehouse.materials[n]&&o.push(a.createElement(h,{key:n,warehouse:e.warehouse,matName:n}));return a.createElement(i.u,{open:e.open,onClose:e.onClose},a.createElement(a.Fragment,null,a.createElement(l.Z,null,"Smart Supply purchases the exact amount of materials needed for maximal production."),a.createElement("br",null),a.createElement(c.Z,{control:a.createElement(u.Z,{checked:e.warehouse.smartSupplyEnabled,onChange:function(t){(0,r.mg)(e.warehouse,t.target.checked),n()}}),label:a.createElement(l.Z,null,"Enable Smart Supply")}),a.createElement("br",null),a.createElement(l.Z,{component:"div"},"Options:",a.createElement("ul",null,a.createElement("li",null,'Use leftovers takes the amount of that material already in storage into account when purchasing new ones. This also accounts for imports, since they are "leftovers" by the time purchasing happens.',a.createElement("br",null),a.createElement("i",null,"This is usually the option you want.")),a.createElement("li",null,"Use imported takes ",a.createElement("b",null,"only")," the amount of that materials that were imported in the previous cycle into account. This is useful when dealing with specialty situations, like importing materials that also boost production.")),"If neither is toggled on, Smart Supply will ignore any materials stored and attempts to buy as much as is needed for production."),o))}},19575:(e,t,n)=>{"use strict";n.d(t,{H:()=>p});var a=n(67294),r=n(22115),o=n(39463),i=n(33563),s=n(47616),l=n(48672),c=n(98360),u=n(81138),m=n(56798),f=n(66351),h=n(30120),d=n(81055);function p(e){const t=(0,c.wZ)(),[n,p]=(0,a.useState)(0),g=n*e.office.numEmployees,y=t.funds>=g;function b(){if(null===n||isNaN(n)||n<0)(0,o.X)("Invalid value entered");else if(y){const a=(0,i.YH)(t,e.office,n),s=a>1?.1*(a-1):0;a>0&&(0,o.X)("You threw a party for the office! The morale of each employee increased by "+(0,r.T3)(s)+" and was multiplied by "+(0,r.WJ)(a)),e.rerender(),e.onClose()}else(0,o.X)("You don't have enough company funds to throw a party!")}function v(){return isNaN(n)||n<0?a.createElement(u.Z,null,"Invalid value entered!"):a.createElement(u.Z,null,"Throwing this party will cost a total of ",a.createElement(s.d,{money:g,corp:t}))}return a.createElement(l.u,{open:e.open,onClose:e.onClose},a.createElement(u.Z,null,"Enter the amount of money you would like to spend PER EMPLOYEE on this office party"),a.createElement(v,null),a.createElement(h.Z,{display:"flex",alignItems:"center"},a.createElement(f.Z,{autoFocus:!0,type:"number",placeholder:"$ / employee",value:n,onChange:function(e){let t=parseFloat(e.target.value);isNaN(t)&&(t=0),p(t)},onKeyDown:function(e){e.key===d.F.ENTER&&b()}}),a.createElement(m.Z,{disabled:!y,onClick:b},"Throw Party")))}},67662:(e,t,n)=>{"use strict";n.d(t,{j:()=>d});var a=n(67294),r=n(22115),o=n(80692),i=n(33563),s=n(48672),l=n(98360),c=n(81138),u=n(56798),m=n(17575),f=n(30120);function h(e){const t=(0,l.wZ)();return a.createElement(m.Z,{title:(0,r.lb)(e.cost)},a.createElement("span",null,a.createElement(u.Z,{disabled:t.funds{return n=e.cost,a=e.size,void(t.funds=d);){const e=Math.pow(r,n+p);if(u+e>d)break;u+=e,++p}const g=o.officeInitialCost*u;return a.createElement(s.u,{open:e.open,onClose:e.onClose},a.createElement(c.Z,null,"Increase the size of your office space to fit additional employees!"),a.createElement(f.Z,{display:"flex",alignItems:"center"},a.createElement(c.Z,null,"Upgrade size: "),a.createElement(h,{onClose:e.onClose,rerender:e.rerender,office:e.office,corp:t,cost:i,size:o.officeInitialSize}),a.createElement(h,{onClose:e.onClose,rerender:e.rerender,office:e.office,corp:t,cost:m,size:5*o.officeInitialSize}),1!==p&&5!==p&&a.createElement(h,{onClose:e.onClose,rerender:e.rerender,office:e.office,corp:t,cost:g,size:p*o.officeInitialSize})))}},49997:(e,t,n)=>{"use strict";n.d(t,{V:()=>o});var a=n(93772),r=n(94515);class o{constructor(e){e?(this.id=e.fragment.id,this.x=e.x,this.y=e.y,this.highestCharge=0,this.numCharge=0,this.rotation=e.rotation):(this.id=-1,this.x=-1,this.y=-1,this.highestCharge=0,this.numCharge=0,this.rotation=0)}collide(e){const t=this.fragment(),n=e.fragment(),a=e.x-this.x,r=e.y-this.y,o=Math.max(t.shape.length,t.shape[0].length);for(let i=0;i[this.x+e[0],this.y+e[1]]))}copy(){return Object.assign({},this)}toJSON(){return(0,r.L3)("ActiveFragment",this)}static fromJSON(e){return(0,r.Id)(o,e.data)}}r.gY.ActiveFragment=o},99725:(e,t,n)=>{"use strict";n.d(t,{T:()=>a});class a{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];this.fragments=n,this._width=e,this._height=t}width(){return this._width||4}height(){return this._height||4}fragmentAt(e,t){for(const n of this.fragments)if(n.fullAt(e,t))return n}}},93772:(e,t,n)=>{"use strict";n.d(t,{Dw:()=>c,nB:()=>o,pM:()=>s,zC:()=>l});var a=n(32864),r=n(86364);const o=[];class i{constructor(e,t,n,a,r){this.id=e,this.shape=t,this.type=n,this.power=a,this.limit=r}fullAt(e,t,n){if(t<0)return!1;if(t>=this.height(n))return!1;if(e<0)return!1;if(e>=this.width(n))return!1;let[a,r,o,i]=[0,0,1,1];1===n?[a,r,o,i]=[this.width(n)-1,0,-1,1]:2===n?[a,r,o,i]=[this.width(n)-1,this.height(n)-1,-1,-1]:3===n&&([a,r,o,i]=[0,this.height(n)-1,1,-1]);let[s,l]=[a+o*e,r+i*t];return n%2==1&&([s,l]=[l,s]),this.shape[l][s]}width(e){return e%2==0?this.shape[0].length:this.shape.length}height(e){return e%2==0?this.shape.length:this.shape[0].length}neighbors(e){const t=[],n=(n,a)=>{this.fullAt(n,a,e)||t.some((e=>e[0]===n&&e[1]===a))||t.push([n,a])};for(let t=0;tt[0]===e[0]&&t[1]===e[1]))||a.push(e);return a}copy(){return Object.assign({},this)}}function s(e){for(const t of o)if(t.id===e)return t;return null}!function(){const e=!1,t=!0;o.push(new i(0,r.j.S,a.E.Hacking,1,1)),o.push(new i(1,r.j.Z,a.E.Hacking,1,1)),o.push(new i(5,r.j.T,a.E.HackingSpeed,1.3,1)),o.push(new i(6,r.j.I,a.E.HackingMoney,2,1)),o.push(new i(7,r.j.J,a.E.HackingGrow,.5,1)),o.push(new i(10,r.j.T,a.E.Strength,2,1)),o.push(new i(12,r.j.L,a.E.Defense,2,1)),o.push(new i(14,r.j.L,a.E.Dexterity,2,1)),o.push(new i(16,r.j.S,a.E.Agility,2,1)),o.push(new i(18,r.j.S,a.E.Charisma,3,1)),o.push(new i(20,r.j.I,a.E.HacknetMoney,1,1)),o.push(new i(21,r.j.O,a.E.HacknetCost,2,1)),o.push(new i(25,r.j.J,a.E.Rep,.5,1)),o.push(new i(27,r.j.J,a.E.WorkMoney,10,1)),o.push(new i(28,r.j.L,a.E.Crime,2,1)),o.push(new i(30,r.j.S,a.E.Bladeburner,.4,1)),o.push(new i(100,[[e,t,t],[t,t,e],[e,t,e]],a.E.Booster,1.1,99)),o.push(new i(101,[[t,t,t,t],[t,e,e,e]],a.E.Booster,1.1,99)),o.push(new i(102,[[e,t,t,t],[t,t,e,e]],a.E.Booster,1.1,99)),o.push(new i(103,[[t,t,t,e],[e,e,t,t]],a.E.Booster,1.1,99)),o.push(new i(104,[[e,t,t],[e,t,e],[t,t,e]],a.E.Booster,1.1,99)),o.push(new i(105,[[e,e,t],[e,t,t],[t,t,e]],a.E.Booster,1.1,99)),o.push(new i(106,[[t,e,e],[t,t,t],[t,e,e]],a.E.Booster,1.1,99)),o.push(new i(107,[[e,t,e],[t,t,t],[e,t,e]],a.E.Booster,1.1,99))}();const l=new i(-2,[],a.E.None,0,1/0),c=new i(-2,[],a.E.Delete,0,1/0)},32864:(e,t,n)=>{"use strict";let a;function r(e){switch(e){case a.HackingChance:return"+x% hack() success chance";case a.HackingSpeed:return"+x% faster hack(), grow(), and weaken()";case a.HackingMoney:return"+x% hack() power";case a.HackingGrow:return"+x% grow() power";case a.Hacking:return"+x% hacking skill";case a.Strength:return"+x% strength skill";case a.Defense:return"+x% defense skill";case a.Dexterity:return"+x% dexterity skill";case a.Agility:return"+x% agility skill";case a.Charisma:return"+x% charisma skill";case a.HacknetMoney:return"+x% hacknet production";case a.HacknetCost:return"-x% cheaper hacknet cost";case a.Rep:return"+x% reputation from factions and companies";case a.WorkMoney:return"+x% work money";case a.Crime:return"+x% crime money";case a.Bladeburner:return"+x% all bladeburner stats"}throw new Error("Calling effect for fragment type that doesn't have an effect "+e)}n.d(t,{E:()=>a,Q:()=>r}),function(e){e[e.None=0]="None",e[e.Delete=1]="Delete",e[e.HackingChance=2]="HackingChance",e[e.HackingSpeed=3]="HackingSpeed",e[e.HackingMoney=4]="HackingMoney",e[e.HackingGrow=5]="HackingGrow",e[e.Hacking=6]="Hacking",e[e.Strength=7]="Strength",e[e.Defense=8]="Defense",e[e.Dexterity=9]="Dexterity",e[e.Agility=10]="Agility",e[e.Charisma=11]="Charisma",e[e.HacknetMoney=12]="HacknetMoney",e[e.HacknetCost=13]="HacknetCost",e[e.Rep=14]="Rep",e[e.WorkMoney=15]="WorkMoney",e[e.Crime=16]="Crime",e[e.Bladeburner=17]="Bladeburner",e[e.Booster=18]="Booster"}(a||(a={}))},78573:(e,t,n)=>{"use strict";n.d(t,{kA:()=>l,ll:()=>s,n1:()=>i,y$:()=>o});var a=n(94515),r=n(15021);let o=new r.q;function i(e){o=e?JSON.parse(e,a.Ro):new r.q}function s(e,t){const n=[];for(let a=0;a{"use strict";n.d(t,{q:()=>y});var a=n(49173),r=n(33244),o=n(49997),i=n(32864),s=n(99725),l=n(58427),c=n(26433),u=n(88016),m=n(94515),f=n(92533),h=n(97740),d=n(62850),p=n(73440),g=n(89194);class y extends s.T{isBonusCharging=!1;justCharged=!0;storedCycles=0;constructor(){super()}baseSize(){return f.k.BaseSize+h.dQ.StaneksGiftExtraSize+a.J5.sourceFileLvl(13)}width(){return Math.max(2,Math.min(Math.floor(this.baseSize()/2+1),f.k.MaxSize))}height(){return Math.max(3,Math.min(Math.floor(this.baseSize()/2+.6),f.k.MaxSize))}charge(e,t){t>e.highestCharge?(e.numCharge=e.highestCharge*e.numCharge/t+1,e.highestCharge=t):e.numCharge+=t/e.highestCharge;const n=l.i[r.FactionName.ChurchOfTheMachineGod];n.playerReputation+=a.J5.mults.faction_rep*(Math.pow(t,.95)*(n.favor+100))/1e3,this.justCharged=!0}inBonus(){return this.storedCycles>=5}process(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;if(!a.J5.hasAugmentation(r.AugmentationName.StaneksGift1))return;this.storedCycles+=e;const t=this.isBonusCharging?5:1;this.isBonusCharging=!1,this.storedCycles=Math.max(0,this.storedCycles-t),this.justCharged&&(this.updateMults(),this.justCharged=!1),u.y.emit()}effect(e){let t=e.neighbors().map((e=>this.fragmentAt(e[0],e[1]))).filter((e=>!!e));t=t.filter((e=>e.fragment().type===i.E.Booster));let n=1;t=t.filter(((e,t,n)=>n.indexOf(e)===t));for(const e of t)n*=e.fragment().power;return(0,c.I)(e.highestCharge,e.numCharge,e.fragment().power,n)}canPlace(e,t,n,a){if(e<0||t<0)return!1;if(e+a.width(n)>this.width())return!1;if(t+a.height(n)>this.height())return!1;if(this.count(a)>=a.limit)return!1;const r=new o.V({x:e,y:t,rotation:n,fragment:a});for(const e of this.fragments)if(e.collide(r))return!1;return!0}place(e,t,n,a){return!!this.canPlace(e,t,n,a)&&(this.fragments.push(new o.V({x:e,y:t,rotation:n,fragment:a})),!0)}findFragment(e,t){return this.fragments.find((n=>n.x===e&&n.y===t))}count(e){let t=0;for(const n of this.fragments)n.fragment().id===e.id&&t++;return t}delete(e,t){for(let n=0;n{e.highestCharge=0,e.numCharge=0}))}calculateMults(){const e=(0,d.A7)();for(const t of this.fragments){const n=t.fragment(),a=this.effect(t);switch(n.type){case i.E.HackingChance:e.hacking_chance*=a;break;case i.E.HackingSpeed:e.hacking_speed*=a;break;case i.E.HackingMoney:e.hacking_money*=a;break;case i.E.HackingGrow:e.hacking_grow*=a;break;case i.E.Hacking:e.hacking*=a,e.hacking_exp*=a;break;case i.E.Strength:e.strength*=a,e.strength_exp*=a;break;case i.E.Defense:e.defense*=a,e.defense_exp*=a;break;case i.E.Dexterity:e.dexterity*=a,e.dexterity_exp*=a;break;case i.E.Agility:e.agility*=a,e.agility_exp*=a;break;case i.E.Charisma:e.charisma*=a,e.charisma_exp*=a;break;case i.E.HacknetMoney:e.hacknet_node_money*=a;break;case i.E.HacknetCost:e.hacknet_node_purchase_cost/=a,e.hacknet_node_ram_cost/=a,e.hacknet_node_core_cost/=a,e.hacknet_node_level_cost/=a;break;case i.E.Rep:e.company_rep*=a,e.faction_rep*=a;break;case i.E.WorkMoney:e.work_money*=a;break;case i.E.Crime:e.crime_success*=a,e.crime_money*=a;break;case i.E.Bladeburner:e.bladeburner_max_stamina*=a,e.bladeburner_stamina_gain*=a,e.bladeburner_analysis*=a,e.bladeburner_success_chance*=a}}return e}updateMults(){a.J5.applyEntropy(a.J5.entropy);const e=this.calculateMults();a.J5.mults=(0,d.VA)(a.J5.mults,e),a.J5.updateSkillLevels();const t=a.J5.sleeves.reduce(((e,t)=>e+(t.hasAugmentation(r.AugmentationName.ZOE)?1:0)),0);if(0===t)return;const n=3/(t+2),o=(0,d.Rc)(e,n);for(const e of a.J5.sleeves)if(e.hasAugmentation(r.AugmentationName.ZOE)){e.resetMultipliers();for(let t=0;t{"use strict";n.d(t,{y:()=>a});const a=new(n(13342).v)},92533:(e,t,n)=>{"use strict";n.d(t,{k:()=>a});const a={RAMBonus:.1,BaseSize:9,MaxSize:25}},86364:(e,t,n)=>{"use strict";n.d(t,{j:()=>o});const a=!1,r=!0,o={O:[[r,r],[r,r]],I:[[r,r,r,r]],L:[[a,a,r],[r,r,r]],J:[[r,a,a],[r,r,r]],S:[[a,r,r],[r,r,a]],Z:[[r,r,a],[a,r,r]],T:[[r,r,r],[a,r,a]]}},26433:(e,t,n)=>{"use strict";n.d(t,{I:()=>r});var a=n(97740);function r(e,t,n,r){return 1+Math.log(e+1)/60*Math.pow((t+1)/5,.07)*n*r*a.dQ.StaneksGiftPowerMultiplier}},43501:(e,t,n)=>{"use strict";n.d(t,{X:()=>f});var a=n(67294),r=n(32864),o=n(22115),i=n(28881),s=n(81138),l=n(47542),c=n(46948),u=n(49557),m=n(7272);function f(e){const t=[];return e.gift.fragments.forEach((n=>{const a=n.fragment();if(![r.E.Booster,r.E.None,r.E.Delete].includes(a.type)){const r=t.find((e=>e.type===a.type));r?(r.effect*=e.gift.effect(n),r.coordinate.push({x:n.x,y:n.y})):t.push({coordinate:[{x:n.x,y:n.y}],effect:e.gift.effect(n),type:a.type})}})),a.createElement(i.Z,{sx:{mb:1}},a.createElement(s.Z,{variant:"h5"},"Summary of active fragments:"),a.createElement(l.Z,{sx:{display:"table",width:"100%"}},a.createElement(c.Z,null,a.createElement(u.Z,null,a.createElement(m.Z,{sx:{borderBottom:"none",p:0,m:0}},a.createElement(s.Z,null,"Coordinate")),a.createElement(m.Z,{sx:{borderBottom:"none",p:0,m:0}},a.createElement(s.Z,null,"Effect"))),t.map((e=>a.createElement(u.Z,{key:e.type},a.createElement(m.Z,{sx:{borderBottom:"none",p:0,m:0}},a.createElement(s.Z,null,e.coordinate.map((e=>"["+e.x+","+e.y+"]")))),a.createElement(m.Z,{sx:{borderBottom:"none",p:0,m:0}},a.createElement(s.Z,null,function(e,t){if((0,r.Q)(t).includes("+x%"))return(0,r.Q)(t).replace(/-*x%/,(0,o.T3)(e-1));if((0,r.Q)(t).includes("-x%")){const n=(0,o.T3)(1-1/e);return(0,r.Q)(t).replace(/-x%/,n)}return(0,r.Q)(t)}(e.effect,e.type)))))))))}},99709:(e,t,n)=>{"use strict";n.d(t,{b:()=>c});var a=n(67294),r=n(77541),o=n(7272);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;ta.createElement(o.Z,i({},e,{classes:{root:s().root,...e.classes}}));function c(e){return a.createElement(l,{style:{backgroundColor:e.color},onMouseEnter:e.onMouseEnter,onClick:e.onClick})}},83390:(e,t,n)=>{"use strict";n.d(t,{W:()=>c});var a=n(30120),r=n(47542),o=n(67294),i=n(99725),s=n(29026),l=n(78573);function c(e){const t=new i.T(e.width,e.height,e.fragments),n=(0,l.ll)(e.width,e.height);return o.createElement(a.Z,null,o.createElement(r.Z,{sx:{width:e.width,height:e.height}},o.createElement(s.r,{width:e.width,height:e.height,ghostGrid:n,gift:t,enter:()=>{},click:()=>{}})))}},32532:(e,t,n)=>{"use strict";n.d(t,{Y:()=>l});var a=n(67294),r=n(32864),o=n(22115),i=n(28881),s=n(81138);function l(e){const[,t]=(0,a.useState)(new Date);if((0,a.useEffect)((()=>{const e=setInterval((()=>t(new Date)),250);return()=>clearInterval(e)}),[]),void 0===e.fragment)return a.createElement(i.Z,{sx:{flexGrow:1}},a.createElement(s.Z,null,"[X, Y] ",e.x,", ",e.y,a.createElement("br",null),a.createElement("br",null),"ID: N/A",a.createElement("br",null),"Effect: N/A",a.createElement("br",null),"Base Power: N/A",a.createElement("br",null),"Charge: N/A",a.createElement("br",null),"root [X, Y] N/A",a.createElement("br",null)));const n=e.fragment.fragment();let l=(0,o.Jw)(e.fragment.highestCharge*e.fragment.numCharge),c="N/A";if([r.E.Booster,r.E.None,r.E.Delete].includes(n.type))l="N/A",c=`${n.power}x adjacent fragment power`;else if((0,r.Q)(n.type).includes("+x%"))c=(0,r.Q)(n.type).replace(/-*x%/,(0,o.T3)(e.gift.effect(e.fragment)-1));else if((0,r.Q)(n.type).includes("-x%")){const t=e.gift.effect(e.fragment),a=(0,o.T3)(1-1/t);c=(0,r.Q)(n.type).replace(/-x%/,a)}return a.createElement(i.Z,{sx:{flexGrow:1}},a.createElement(s.Z,null,"[X, Y] ",e.x,", ",e.y,a.createElement("br",null),a.createElement("br",null),"ID: ",e.fragment.id,a.createElement("br",null),"Effect: ",c,a.createElement("br",null),"Base Power: ",(0,o.bS)(n.power),a.createElement("br",null),"Charge: ",l,a.createElement("br",null),"root [X, Y] ",e.fragment.x,", ",e.fragment.y,a.createElement("br",null)))}},47836:(e,t,n)=>{"use strict";n.d(t,{e:()=>l});var a=n(67294),r=n(99709),o=n(49557),i=n(46948),s=n(61011);function l(e){const t=[];for(let n=0;n{"use strict";n.d(t,{O:()=>h});var a=n(67294),r=n(93772),o=n(32864),i=n(47836),s=n(22115),l=n(26023),c=n(98649),u=n(81138),m=n(30120);function f(e){const t=e.fragment.limit-e.gift.count(e.fragment),n=e.fragment.limit!==1/0?a.createElement(a.Fragment,null,t," remaining"):a.createElement(a.Fragment,null);return a.createElement(m.Z,{display:"flex"},a.createElement(m.Z,{sx:{mx:2}},a.createElement(i.e,{width:e.fragment.width(0),height:e.fragment.height(0),colorAt:(n,a)=>e.fragment.fullAt(n,a,0)?0===t?"grey":e.fragment.type===o.E.Booster?"blue":"green":""})),a.createElement(u.Z,null,e.fragment.type===o.E.Booster?`${e.fragment.power}x adjacent fragment power`:(0,o.Q)(e.fragment.type),a.createElement("br",null),"power: ",(0,s.bS)(e.fragment.power),a.createElement("br",null),n))}function h(e){const[t,n]=(0,a.useState)("None");return a.createElement(l.Z,{sx:{width:"100%"},onChange:function(t){const a=t.target.value;if(n(a),"None"===a)return void e.selectFragment(r.zC);if("Delete"===a)return void e.selectFragment(r.Dw);const o=r.nB.find((e=>e.id===a));if(void 0===o)throw new Error("Fragment selector selected an undefined fragment with id "+a);"number"==typeof a&&e.selectFragment(o)},value:t},a.createElement(c.Z,{value:"None"},a.createElement(u.Z,null,"None")),a.createElement(c.Z,{value:"Delete"},a.createElement(u.Z,null,"Delete")),r.nB.map((t=>a.createElement(c.Z,{key:t.id,value:t.id},a.createElement(f,{key:t.id,gift:e.gift,selectFragment:e.selectFragment,fragment:t})))))}},29026:(e,t,n)=>{"use strict";n.d(t,{r:()=>l});var a=n(49557),r=n(46948),o=n(67294),i=n(78573),s=n(99709);function l(e){const t=(0,i.kA)(e.gift);function n(n,a){if(e.ghostGrid[n][a]&&t[n][a])return"red";if(e.ghostGrid[n][a])return"white";if(t[n][a]){const t=e.gift.fragmentAt(n,a);if(!t)throw new Error("ActiveFragment should not be null");return function(e){let t=Math.pow((e.x+1)*(e.y+1),10),n=t,a=t;const r=[];for(let e=0;e<3;e++)t=171*t%30269,n=172*n%30307,a=170*a%30323,r.push((t/30269+n/30307+a/30323)%1);return`rgb(${256*r[0]}, ${256*r[1]}, ${256*r[2]})`}(t)}return""}const l=[];for(let t=0;te.enter(a,t),onClick:()=>e.click(a,t),color:n(a,t)}));l.push(o.createElement(a.Z,{key:t},r))}return o.createElement(r.Z,null,l)}},3505:(e,t,n)=>{"use strict";n.d(t,{O:()=>g});var a=n(67294),r=n(93772),o=n(32864),i=n(32532),s=n(33063),l=n(30120),c=n(56798),u=n(61011),m=n(29026),f=n(78573),h=n(43501),d=n(17575),p=n(81138);function g(e){const[t,n]=a.useState((0,f.ll)(e.gift.width(),e.gift.height())),[g,y]=a.useState([0,0]),[b,v]=a.useState(0),[k,w]=a.useState(r.zC);function E(t,a,r){if(y([t,a]),k.type===o.E.None||k.type===o.E.Delete)return;const i=(0,f.ll)(e.gift.width(),e.gift.height());for(let e=0;ei.length-1||a+e>i[t+n].length-1||(i[t+n][a+e]=1));n(i)}return a.useEffect((()=>{function e(e){if("q"===e.key){const e=(b-1+4)%4;v(e),E(g[0],g[1],e)}if("e"===e.key){const e=(b+1)%4;v(e),E(g[0],g[1],e)}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)})),a.createElement(a.Fragment,null,a.createElement(l.Z,{display:"flex",sx:{mb:1}},a.createElement(u.i,{sx:{mr:1}},a.createElement(m.r,{width:e.gift.width(),height:e.gift.height(),ghostGrid:t,gift:e.gift,enter:(e,t)=>E(e,t,b),click:(t,n)=>function(t,n){if(k.type!=o.E.None)if(k.type==o.E.Delete)!function(t,n){const a=e.gift.fragmentAt(t,n);void 0!==a&&e.gift.delete(a.x,a.y)}(t,n);else{if(!e.gift.canPlace(t,n,b,k))return;e.gift.place(t,n,b,k)}}(t,n)})),a.createElement(i.Y,{gift:e.gift,x:g[0],y:g[1],fragment:e.gift.fragmentAt(g[0],g[1])})),a.createElement(l.Z,{display:"flex",sx:{mb:1}},a.createElement(s.O,{gift:e.gift,selectFragment:function(t){w(t);const a=(0,f.ll)(e.gift.width(),e.gift.height());n(a)}})),a.createElement(h.X,{gift:e.gift}),a.createElement(d.Z,{title:a.createElement(p.Z,null,"WARNING : This will remove all active fragment from the grid. ",a.createElement("br",null),"All cumulated charges will be lost.")},a.createElement(c.Z,{onClick:function(){e.gift.clear()}},"Clear grid")))}},40389:(e,t,n)=>{"use strict";n.d(t,{w:()=>g});var a=n(67294),r=n(49802),o=n(72938),i=n(88016),s=n(3505),l=n(40238),c=n(39463),u=n(81138),m=n(49997),f=n(93772),h=n(83390),d=n(78016),p=n(88775);function g(e){let{staneksGift:t}=e;const n=(0,p.S)();return(0,a.useEffect)((()=>i.y.subscribe(n)),[n]),a.createElement(d.Z,{maxWidth:"lg",disableGutters:!0,sx:{mx:0}},a.createElement(u.Z,{variant:"h4"},"Stanek's Gift",a.createElement(l.Z,{sx:{ml:1,mb:0},color:"info",onClick:()=>(0,c.X)(a.createElement(a.Fragment,null,a.createElement(u.Z,null,"Stanek's Gift is a powerful, unique augmentation obtained by joining the Church of the Machine God, which can be found in Chongqing. It is only possible to join the church if you are in BitNode 13 or possess at least one level of Source File 13, and you will be turned away if you have purchased or installed any augmentations beside NeuroFlux Governors. You are, however, permitted to install augmentations as normal once you have joined the church."),a.createElement("br",null),a.createElement(u.Z,null,"Initially, those bearing the gift will find that its overwhelming power worsens all of their stats by 10%. This penalty can be overcome in time by receiving free upgrades from the Church of the Machine God faction, but the reputation requirements for these upgrades are steep, and you can only obtain reputation with the church by charging the gift."),a.createElement("br",null),a.createElement(u.Z,null,"In order to charge Stanek's Gift, the user must first arrange stat-modifying fragments within the grid located on the device. This may be done manually or by scripts that utilize the Stanek's Gift Netscript API. Not every tile of the grid must house a fragment, but fragments cannot overlap or otherwise share tiles. Fragments can be rotated, but their design does not allow them to be flipped around to mirror their original shape. Note that the size of the grid is determined by the BitNode you are currently in and the level of your Source File 13, if applicable."),a.createElement("br",null),a.createElement(u.Z,null,"There exist two kinds of fragments. The first are Stat Fragments, which take up 4 tiles of the grid. Each Stat Fragment is unique, and there is only one of each. There is no way to obtain more of these fragments. Each Stat Fragment has an associated stat that it will improve, as well as a multiplier on its effectiveness known as power. When initially placed, a Stat Fragment will have no effect. In order for the fragment to gain stat boosts, it must be charged. The other kind of fragments are known as Booster Fragments, which take up 5 tiles of the grid. There is no shortage of Booster Fragments, and it is virtually impossible to run out of them. While not providing any direct stat increases to their user, Stat Fragments increase the efficacy of adjacent Stat Fragments by 10%, and do not need to be charged."),a.createElement("br",null),a.createElement(h.W,{width:4,height:4,fragments:[new m.V({x:0,y:0,rotation:0,fragment:f.nB.find((e=>5===e.id))??f.nB[0]}),new m.V({x:0,y:2,rotation:0,fragment:f.nB.find((e=>101===e.id))??f.nB[0]})]}),a.createElement(u.Z,{sx:{fontStyle:"italic"}},"This Booster Fragment provides a bonus to the adjacent Stat Fragment."),a.createElement("br",null),a.createElement(h.W,{width:3,height:4,fragments:[new m.V({x:0,y:1,rotation:3,fragment:f.nB.find((e=>100===e.id))??f.nB[0]}),new m.V({x:0,y:0,rotation:2,fragment:f.nB.find((e=>1===e.id))??f.nB[0]})]}),a.createElement(u.Z,{sx:{fontStyle:"italic"}},"Even though the Booster Fragment touches the Stat Fragment in multiple places, the bonus is only applied once."),a.createElement("br",null),a.createElement(h.W,{width:4,height:4,fragments:[new m.V({x:0,y:0,rotation:0,fragment:f.nB.find((e=>5===e.id))??f.nB[0]}),new m.V({x:1,y:1,rotation:0,fragment:f.nB.find((e=>105===e.id))??f.nB[0]})]}),a.createElement(u.Z,{sx:{fontStyle:"italic"}},"This Booster Fragment does nothing, as it is not touching a Stat Fragment."),a.createElement("br",null),a.createElement(h.W,{width:4,height:4,fragments:[new m.V({x:0,y:0,rotation:1,fragment:f.nB.find((e=>27===e.id))??f.nB[0]}),new m.V({x:0,y:1,rotation:2,fragment:f.nB.find((e=>100===e.id))??f.nB[0]}),new m.V({x:2,y:0,rotation:1,fragment:f.nB.find((e=>30===e.id))??f.nB[0]})]}),a.createElement(u.Z,{sx:{fontStyle:"italic"}},"This Booster Fragment provides a bonus to both Stat Fragments it's touching."),a.createElement("br",null),a.createElement(u.Z,null,"Stat Fragments are charged using the stanek.chargeFragment(rootX, rootY) NetScript API function. The charging process ordinarily takes 1000ms to complete, but only takes 200ms during bonus time. When the function finishes executing, the fragment's charge levels will be raised by an amount corresponding to the number of threads that were used. Note that it is no more effective to charge a fragment many times with few threads than to charge few times with many threads, so there is no need to distribute charging jobs across multiple scripts. As a Stat Fragment's charge level is increased, its bonuses will increase, but there will be diminishing returns. As such, it is generally most efficient to charge all of the placed fragments equally. The charge level of a fragment will not decrease over time, but it will be reset to 0 upon removing it from the board or installing augmentations.")))})),a.createElement(u.Z,{sx:{mb:1}},"The gift is a grid on which you can place upgrades called fragments. The main type of fragment increases a stat, like your hacking skill or agility exp. Once a stat fragment is placed it then needs to be charged via scripts in order to become useful. The other kind of fragments are called booster fragments. They increase the efficiency of the neighboring fragments (not diagonally). Use Q/E to rotate fragments."),t.storedCycles>5&&a.createElement(u.Z,{sx:{mb:1}},"Bonus time: ",(0,r.UF)(o.t.MilliPerCycle*t.storedCycles)),a.createElement(s.O,{gift:t}))}},10872:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(72938),r=n(49173),o=n(48196),i=n(46085);class s{time=0;hacking_success_weight=0;strength_success_weight=0;defense_success_weight=0;dexterity_success_weight=0;agility_success_weight=0;charisma_success_weight=0;hacking_exp=0;strength_exp=0;defense_exp=0;dexterity_exp=0;agility_exp=0;charisma_exp=0;intelligence_exp=0;constructor(e,t,n,a,r,o,i,s){this.workName=e,this.tooltipText=t,this.type=n,this.time=a,this.money=r,this.difficulty=o,this.karma=i,this.hacking_success_weight=s.hacking_success_weight?s.hacking_success_weight:0,this.strength_success_weight=s.strength_success_weight?s.strength_success_weight:0,this.defense_success_weight=s.defense_success_weight?s.defense_success_weight:0,this.dexterity_success_weight=s.dexterity_success_weight?s.dexterity_success_weight:0,this.agility_success_weight=s.agility_success_weight?s.agility_success_weight:0,this.charisma_success_weight=s.charisma_success_weight?s.charisma_success_weight:0,this.hacking_exp=s.hacking_exp?s.hacking_exp:0,this.strength_exp=s.strength_exp?s.strength_exp:0,this.defense_exp=s.defense_exp?s.defense_exp:0,this.dexterity_exp=s.dexterity_exp?s.dexterity_exp:0,this.agility_exp=s.agility_exp?s.agility_exp:0,this.charisma_exp=s.charisma_exp?s.charisma_exp:0,this.intelligence_exp=s.intelligence_exp?s.intelligence_exp:0,this.kills=s.kills?s.kills:0}commit(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e<=0&&(e=1),r.J5.startWork(new o.Q({crimeType:this.type,singularity:null!==t})),this.time}successRate(e){let t=this.hacking_success_weight*e.skills.hacking+this.strength_success_weight*e.skills.strength+this.defense_success_weight*e.skills.defense+this.dexterity_success_weight*e.skills.dexterity+this.agility_success_weight*e.skills.agility+this.charisma_success_weight*e.skills.charisma+a.t.IntelligenceCrimeWeight*e.skills.intelligence;return t/=a.t.MaxSkillLevel,t/=this.difficulty,t*=e.mults.crime_success,t*=(0,i.f)(e.skills.intelligence,1),Math.min(t,1)}}},35100:(e,t,n)=>{"use strict";n.d(t,{K:()=>l,T:()=>s});var a=n(35333),r=n(49173),o=n(50862),i=n(33244);function s(e){const t=a.W[e].successRate(r.J5);return Math.random()<=t}function l(e){if((0,o.m)("CrimeType").isMember(e))return a.W[e];const t=(0,o.m)("CrimeType").fuzzyGetMember(e);return t?a.W[t]:(e=e.toLowerCase()).includes("shoplift")?a.W[i.CrimeType.shoplift]:e.includes("rob")&&e.includes("store")?a.W[i.CrimeType.robStore]:e.includes("mug")?a.W[i.CrimeType.mug]:e.includes("larceny")?a.W[i.CrimeType.larceny]:e.includes("drugs")?a.W[i.CrimeType.dealDrugs]:e.includes("bond")&&e.includes("forge")?a.W[i.CrimeType.bondForgery]:(e.includes("traffic")||e.includes("illegal"))&&e.includes("arms")?a.W[i.CrimeType.traffickArms]:e.includes("homicide")?a.W[i.CrimeType.homicide]:e.includes("grand")&&e.includes("auto")?a.W[i.CrimeType.grandTheftAuto]:e.includes("kidnap")?a.W[i.CrimeType.kidnap]:e.includes("assassin")?a.W[i.CrimeType.assassination]:e.includes("heist")?a.W[i.CrimeType.heist]:null}},35333:(e,t,n)=>{"use strict";n.d(t,{W:()=>i});var a=n(10872),r=n(72938),o=n(33244);const i={[o.CrimeType.shoplift]:new a.Z("to shoplift","Attempt to shoplift from a low-end retailer",o.CrimeType.shoplift,2e3,15e3,.05,.1,{dexterity_success_weight:1,agility_success_weight:1,dexterity_exp:2,agility_exp:2}),[o.CrimeType.robStore]:new a.Z("to rob a store","Attempt to commit armed robbery on a high-end store",o.CrimeType.robStore,6e4,4e5,.2,.5,{hacking_exp:30,dexterity_exp:45,agility_exp:45,hacking_success_weight:.5,dexterity_success_weight:2,agility_success_weight:1,intelligence_exp:7.5*r.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.mug]:new a.Z("to mug","Attempt to mug a random person on the street",o.CrimeType.mug,4e3,36e3,.2,.25,{strength_exp:3,defense_exp:3,dexterity_exp:3,agility_exp:3,strength_success_weight:1.5,defense_success_weight:.5,dexterity_success_weight:1.5,agility_success_weight:.5}),[o.CrimeType.larceny]:new a.Z("larceny","Attempt to rob property from someone's house",o.CrimeType.larceny,9e4,8e5,1/3,1.5,{hacking_exp:45,dexterity_exp:60,agility_exp:60,hacking_success_weight:.5,dexterity_success_weight:1,agility_success_weight:1,intelligence_exp:15*r.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.dealDrugs]:new a.Z("to deal drugs","Attempt to deal drugs",o.CrimeType.dealDrugs,1e4,12e4,1,.5,{dexterity_exp:5,agility_exp:5,charisma_exp:10,charisma_success_weight:3,dexterity_success_weight:2,agility_success_weight:1}),[o.CrimeType.bondForgery]:new a.Z("to forge bonds","Attempt to forge corporate bonds",o.CrimeType.bondForgery,3e5,45e5,.5,.1,{hacking_exp:100,dexterity_exp:150,charisma_exp:15,hacking_success_weight:.05,dexterity_success_weight:1.25,intelligence_exp:60*r.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.traffickArms]:new a.Z("to traffic arms","Attempt to smuggle illegal arms into the city",o.CrimeType.traffickArms,4e4,6e5,2,1,{strength_exp:20,defense_exp:20,dexterity_exp:20,agility_exp:20,charisma_exp:40,charisma_success_weight:1,strength_success_weight:1,defense_success_weight:1,dexterity_success_weight:1,agility_success_weight:1}),[o.CrimeType.homicide]:new a.Z("homicide","Attempt to murder a random person on the street",o.CrimeType.homicide,3e3,45e3,1,3,{strength_exp:2,defense_exp:2,dexterity_exp:2,agility_exp:2,strength_success_weight:2,defense_success_weight:2,dexterity_success_weight:.5,agility_success_weight:.5,kills:1}),[o.CrimeType.grandTheftAuto]:new a.Z("grand theft auto","Attempt to commit grand theft auto",o.CrimeType.grandTheftAuto,8e4,16e5,8,5,{strength_exp:20,defense_exp:20,dexterity_exp:20,agility_exp:80,charisma_exp:40,hacking_success_weight:1,strength_success_weight:1,dexterity_success_weight:4,agility_success_weight:2,charisma_success_weight:2,intelligence_exp:16*r.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.kidnap]:new a.Z("to kidnap","Attempt to kidnap and ransom a high-profile-target",o.CrimeType.kidnap,12e4,36e5,5,6,{strength_exp:80,defense_exp:80,dexterity_exp:80,agility_exp:80,charisma_exp:80,charisma_success_weight:1,strength_success_weight:1,dexterity_success_weight:1,agility_success_weight:1,intelligence_exp:26*r.t.IntelligenceCrimeBaseExpGain}),[o.CrimeType.assassination]:new a.Z("to assassinate","Attempt to assassinate a high-profile target",o.CrimeType.assassination,3e5,12e6,8,10,{strength_exp:300,defense_exp:300,dexterity_exp:300,agility_exp:300,strength_success_weight:1,dexterity_success_weight:2,agility_success_weight:1,intelligence_exp:65*r.t.IntelligenceCrimeBaseExpGain,kills:1}),[o.CrimeType.heist]:new a.Z("a heist","Attempt to pull off the ultimate heist",o.CrimeType.heist,6e5,12e7,18,15,{hacking_exp:450,strength_exp:450,defense_exp:450,dexterity_exp:450,agility_exp:450,charisma_exp:450,hacking_success_weight:1,strength_success_weight:1,defense_success_weight:1,dexterity_success_weight:1,agility_success_weight:1,charisma_success_weight:1,intelligence_exp:130*r.t.IntelligenceCrimeBaseExpGain})}},4348:(e,t,n)=>{"use strict";let a;n.d(t,{X:()=>a}),function(e){e.shoplift="Shoplift",e.robStore="Rob Store",e.mug="Mug",e.larceny="Larceny",e.dealDrugs="Deal Drugs",e.bondForgery="Bond Forgery",e.traffickArms="Traffick Arms",e.homicide="Homicide",e.grandTheftAuto="Grand Theft Auto",e.kidnap="Kidnap",e.assassination="Assassination",e.heist="Heist"}(a||(a={}))},19468:(e,t,n)=>{"use strict";n.d(t,{Km:()=>d,u2:()=>m,uN:()=>f,y$:()=>h});var a=n(67294),r=n(4852),o=n(49173),i=n(65065),s=n(40425),l=n(22115),c=n(72360),u=n(95814);function m(){const e=o.J5.getCurrentServer();null!==e&&s.r.DarkWeb==e.hostname&&i.o.print("You are now connected to the dark web. From the dark web you can purchase illegal items. Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name]' to purchase an item. Use 'buy -a' to purchase all unowned items.")}function f(){for(const e of Object.keys(r.L)){const t=r.L[e],n=o.J5.getHomeComputer().programs.includes(t.program)?a.createElement("span",{style:{color:"green"}},"[OWNED]"):a.createElement(c.W,{money:t.price});i.o.printRaw(a.createElement(a.Fragment,null,a.createElement("span",null,t.program)," - ",a.createElement("span",null,n)," - ",a.createElement("span",null,t.description)))}}function h(e){e=e.toLowerCase();let t=null;for(const n of Object.keys(r.L)){const a=r.L[n];a.program.toLowerCase()==e&&(t=a)}null!==t?o.J5.hasProgram(t.program)?i.o.print("You already have the "+t.program+" program"):o.J5.moneyo.J5.money)i.o.error("Not enough money to purchase remaining programs, "+(0,l.lb)(t)+" required");else for(const t of e)h(t.program);else i.o.print("All available programs have been purchased already.")}},34436:(e,t,n)=>{"use strict";n.d(t,{i:()=>a});class a{constructor(e,t,n){this.program=e,this.price=t,this.description=n}}},4852:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var a=n(34436),r=n(33244);const o={BruteSSHProgram:new a.i(r.CompletedProgramName.bruteSsh,5e5,"Opens up SSH Ports."),FTPCrackProgram:new a.i(r.CompletedProgramName.ftpCrack,15e5,"Opens up FTP Ports."),RelaySMTPProgram:new a.i(r.CompletedProgramName.relaySmtp,5e6,"Opens up SMTP Ports."),HTTPWormProgram:new a.i(r.CompletedProgramName.httpWorm,3e7,"Opens up HTTP Ports."),SQLInjectProgram:new a.i(r.CompletedProgramName.sqlInject,25e7,"Opens up SQL Ports."),ServerProfiler:new a.i(r.CompletedProgramName.serverProfiler,5e5,"Displays detailed server information."),DeepscanV1:new a.i(r.CompletedProgramName.deepScan1,5e5,"Enables 'scan-analyze' with a depth up to 5."),DeepscanV2:new a.i(r.CompletedProgramName.deepScan2,25e6,"Enables 'scan-analyze' with a depth up to 10."),AutolinkProgram:new a.i(r.CompletedProgramName.autoLink,1e6,"Enables direct connect via 'scan-analyze'."),FormulasProgram:new a.i(r.CompletedProgramName.formulas,5e9,"Unlock access to the formulas API.")}},78008:(e,t,n)=>{"use strict";n.d(t,{V:()=>M});var a=n(67294),r=n(81138),o=n(49173),i=n(33244),s=n(27629),l=n(25591),c=n(38853),u=n(4664),m=n(99419),f=n(81533),h=n(95096),d=n(94519),p=n(7666),g=n(87525),y=n(67821),b=n(46729),v=n(58028),k=n(79151),w=n(90821),E=n(80386),S=n(80423),C=n(88983),x=n(84501),N=n(52107);function M(){return(0,a.useEffect)((()=>{o.J5.giveExploit(N.VX.YoureNotMeantToAccessThis)}),[]),a.createElement(a.Fragment,null,a.createElement(r.Z,null,"Development Menu - Only meant to be used for testing/debugging"),a.createElement(s.L,null),a.createElement(c.W,null),a.createElement(u.E,null),a.createElement(m.S,null),a.createElement(f.x,null),a.createElement(h.U,null),a.createElement(d.O,null),a.createElement(p.l,null),o.J5.bladeburner&&a.createElement(g.Z,{bladeburner:o.J5.bladeburner}),o.J5.gang&&a.createElement(y.D,null),o.J5.corporation&&a.createElement(b.o,null),a.createElement(v.d,null),o.J5.hasWseAccount&&a.createElement(k.n,null),o.J5.sleeves.length>0&&a.createElement(w.V,null),o.J5.augmentations.some((e=>e.name===i.AugmentationName.StaneksGift1))&&a.createElement(E.r,null),a.createElement(l.x,null),a.createElement(C.u,null),a.createElement(x.H,null),a.createElement(S.L,null))}},88983:(e,t,n)=>{"use strict";n.d(t,{u:()=>y});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(34265),m=n(17575),f=n(73595),h=n(27412),d=n(49173),p=n(30518),g=n(2827);function y(){const[e,t]=(0,a.useState)(d.J5.achievements.map((e=>e.ID)));return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Achievements")),a.createElement(i.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null),a.createElement("td",null,a.createElement(l.Z,null,"Achievements:")),a.createElement("td",null,a.createElement(u.Z,null,a.createElement(c.Z,{onClick:function(){Object.values(p.E).forEach((e=>d.J5.giveAchievement(e.ID))),t(d.J5.achievements.map((e=>e.ID)))}},"Grant All"),a.createElement(c.Z,{onClick:function(){d.J5.achievements=[],t(d.J5.achievements.map((e=>e.ID)))}},"Clear"),a.createElement(c.Z,{onClick:function(){g.D.Counters.achievementsCounter=Number.MAX_VALUE}},"Disable Engine"),a.createElement(c.Z,{onClick:function(){g.D.Counters.achievementsCounter=0}},"Enable Engine")))),Object.values(p.E).map((n=>{const r=e.includes(n.ID);return a.createElement("tr",{key:"ach-"+n.ID},a.createElement("td",null,r?a.createElement(m.Z,{title:"Achieved"},a.createElement(h.Z,{color:"primary"})):a.createElement(m.Z,{title:"Locked"},a.createElement(f.Z,{color:"secondary"}))),a.createElement("td",null,a.createElement(m.Z,{title:a.createElement(a.Fragment,null,n.ID,a.createElement("br",null),n.Description)},a.createElement(l.Z,{color:r?"primary":"secondary"},n.Name,":"))),a.createElement("td",null,a.createElement(u.Z,null,a.createElement(c.Z,{onClick:()=>{return e=n.ID,d.J5.giveAchievement(e),void t(d.J5.achievements.map((e=>e.ID)));var e}},"Grant"),a.createElement(c.Z,{onClick:()=>{return e=n.ID,d.J5.achievements=d.J5.achievements.filter((t=>t.ID!==e)),void t(d.J5.achievements.map((e=>e.ID)));var e}},"Clear"))))}))))))}},56654:(e,t,n)=>{"use strict";n.d(t,{f:()=>m});var a=n(67294),r=n(96540),o=n(94895),i=n(92557),s=n(63343),l=n(5499),c=n(66351),u=n(17575);function m(e){const[t,n]=(0,a.useState)(""),{label:m,placeholder:f,add:h,subtract:d,reset:p,tons:g}=e;return a.createElement(a.Fragment,null,a.createElement(c.Z,{label:m,value:t,onChange:function(e){""===e.target.value?n(""):n(parseFloat(e.target.value))},placeholder:f,type:"number",InputProps:{startAdornment:a.createElement(a.Fragment,null,a.createElement(u.Z,{title:"Add a lot"},a.createElement(i.Z,{onClick:g,size:"large"},a.createElement(l.Z,{style:{transform:"rotate(-90deg)"}}))),a.createElement(u.Z,{title:"Add"},a.createElement(i.Z,{onClick:()=>h("string"!=typeof t?t:0),size:"large"},a.createElement(r.Z,null)))),endAdornment:a.createElement(a.Fragment,null,a.createElement(u.Z,{title:"Remove"},a.createElement(i.Z,{onClick:()=>d("string"!=typeof t?t:0),size:"large"},a.createElement(o.Z,null))),a.createElement(u.Z,{title:"Reset"},a.createElement(i.Z,{onClick:p,size:"large"},a.createElement(s.Z,null))))}}))}},99419:(e,t,n)=>{"use strict";n.d(t,{S:()=>b});var a=n(49173),r=n(67294),o=n(6571),i=n(99631),s=n(7244),l=n(59655),c=n(5821),u=n(21945),m=n(81138),f=n(51907),h=n(26023),d=n(92557),p=n(98649),g=n(56798),y=n(33244);function b(){const[e,t]=(0,r.useState)(y.AugmentationName.Targeting1);return r.createElement(c.Z,{TransitionProps:{unmountOnExit:!0}},r.createElement(u.Z,{expandIcon:r.createElement(o.Z,null)},r.createElement(m.Z,null,"Augmentations")),r.createElement(f.Z,null,r.createElement(h.Z,{onChange:function(e){t(e.target.value)},value:e,startAdornment:r.createElement(r.Fragment,null,r.createElement(d.Z,{onClick:function(){for(const e of Object.values(y.AugmentationName))a.J5.queueAugmentation(e)},size:"large"},r.createElement(i.Z,null)),r.createElement(d.Z,{onClick:function(){a.J5.queueAugmentation(e)},size:"large"},r.createElement(s.Z,null))),endAdornment:r.createElement(r.Fragment,null,r.createElement(d.Z,{onClick:function(){a.J5.augmentations=[]},size:"large"},r.createElement(l.Z,null)))},Object.values(y.AugmentationName).map((e=>r.createElement(p.Z,{key:e,value:e},e)))),r.createElement(g.Z,{sx:{display:"block"},onClick:function(){a.J5.queuedAugmentations=[]}},"Clear Queued Augmentations")))}},87525:(e,t,n)=>{"use strict";n.d(t,{Z:()=>E});var a=n(67294),r=n(5821),o=n(21945),i=n(81138),s=n(51907),l=n(17575),c=n(92557),u=n(54283),m=n(11930),f=n(98649),h=n(23508),d=n(26023),p=n(41733),g=n(56654),y=n(49173),b=n(33244),v=n(71099),k=n(42115);const w=1e27;function E(e){let{bladeburner:t}=e;const n=e=>n=>t.changeRank(y.J5,n*e),E=e=>n=>{t.skillPoints+=n*e},S=e=>n=>t.storedCycles+=n*e,C=e=>n=>{Object.values(b.CityName).forEach((a=>t.cities[a].chaos+=n*e))},[x,N]=(0,a.useState)(k.x.BladesIntuition),M=e=>n=>{null==t.skills[v.n[x].name]&&A(),isNaN(n)||(t.skills[v.n[x].name]+=n*e,t.updateSkillMultipliers())},A=()=>{t.skills[v.n[x].name]=0,t.updateSkillMultipliers()},T=t.contracts,[L,R]=(0,a.useState)(T.Tracking.name),F=e=>n=>{if(!isNaN(n)){t.contracts[T[L].name].level+=n*e;const a=t.contracts[T[L].name].level;t.contracts[T[L].name].maxLevel=a}},I=e=>n=>{isNaN(n)||(t.contracts[T[L].name].count+=n*e)},_=e=>n=>{isNaN(n)||(t.contracts[T[L].name].successes+=n*e)},P=t.operations,[B,O]=(0,a.useState)(P.Investigation.name),D=e=>n=>{if(!isNaN(n)){t.operations[P[B].name].level+=n*e;const a=t.operations[P[B].name].level;t.operations[P[B].name].maxLevel=a}},Z=e=>n=>{isNaN(n)||(t.operations[P[B].name].count+=n*e)},G=e=>n=>{isNaN(n)||(t.operations[P[B].name].successes+=n*e)};return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(h.Z,null)},a.createElement(i.Z,null,"Bladeburner")),a.createElement(s.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Rank:")),a.createElement("td",null,a.createElement(g.f,{label:"rank",placeholder:"amt",tons:()=>t.changeRank(y.J5,w),add:n(1),subtract:n(-1),reset:()=>{t.rank=0,t.maxRank=0}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"SP:")),a.createElement("td",null,a.createElement(g.f,{label:"skill points",placeholder:"amt",tons:()=>t.skillPoints=w,add:E(1),subtract:E(-1),reset:()=>{t.skillPoints=0,t.totalSkillPoints=0}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Cycles: ")),a.createElement("td",null,a.createElement(g.f,{label:"cycles",placeholder:"amt",tons:()=>t.storedCycles+=w,add:S(1),subtract:S(-1),reset:()=>t.storedCycles=0}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Chaos:")),a.createElement("td",null,a.createElement(g.f,{label:"chaos in all cities",placeholder:"amt",tons:()=>{Object.values(b.CityName).forEach((e=>t.cities[e].chaos+=w))},add:C(1),subtract:C(-1),reset:()=>Object.values(b.CityName).forEach((e=>t.cities[e].chaos=0))})),a.createElement(l.Z,{title:"Wipe Active City Chaos"},a.createElement(c.Z,{onClick:()=>t.cities[t.city].chaos=0,size:"large","arial-label":"clear-active-city-chaos",title:"Clear Only Active City Chaos"},a.createElement(p.Z,{sx:{fontSize:40}})))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Skills: ")),a.createElement("td",{align:"center"},a.createElement(u.Z,null,a.createElement(m.Z,{id:"skills-select"}),a.createElement(d.Z,{labelId:"skills-select",id:"skills-dropdown",onChange:function(e){N(e.target.value)},value:x},Object.values(v.n).map((e=>a.createElement(f.Z,{key:e.name,value:e.name},e.name))))))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Level:")),a.createElement("td",null,a.createElement(g.f,{label:"Level",placeholder:"amt",tons:()=>{null==t.skills[v.n[x].name]&&A(),t.skills[v.n[x].name]+=w,t.updateSkillMultipliers()},add:M(1),subtract:M(-1),reset:A}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Contracts: ")),a.createElement("td",{align:"center"},a.createElement(u.Z,null,a.createElement(m.Z,{id:"contracts-select"}),a.createElement(d.Z,{labelId:"contracts-select",id:"contracts-dropdown",onChange:function(e){R(e.target.value)},value:L},Object.values(T).map((e=>a.createElement(f.Z,{key:e.name,value:e.name},e.name))))))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Level:")),a.createElement("td",null,a.createElement(g.f,{label:"Level",placeholder:"amt",tons:()=>{t.contracts[T[L].name].level+=w;const e=t.contracts[T[L].name].level;t.contracts[T[L].name].maxLevel=e},add:F(1),subtract:F(-1),reset:()=>{t.contracts[T[L].name].level=1,t.contracts[T[L].name].maxLevel=1}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Successes:")),a.createElement("td",null,a.createElement(g.f,{label:"Successes",placeholder:"amt",tons:()=>t.contracts[T[L].name].successes+=w,add:_(1),subtract:_(-1),reset:()=>t.contracts[T[L].name].successes=0}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Count:")),a.createElement("td",null,a.createElement(g.f,{label:"Count",placeholder:"amt",tons:()=>t.contracts[T[L].name].count+=w,add:I(1),subtract:I(-1),reset:()=>t.contracts[T[L].name].count=0}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Operations: ")),a.createElement("td",{align:"center"},a.createElement(u.Z,null,a.createElement(m.Z,{id:"Operations-select"}),a.createElement(d.Z,{labelId:"Operations-select",id:"Operations-dropdown",onChange:function(e){O(e.target.value)},value:B},Object.values(P).map((e=>a.createElement(f.Z,{key:e.name,value:e.name},e.name))))))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Level:")),a.createElement("td",null,a.createElement(g.f,{label:"Level",placeholder:"amt",tons:()=>{t.operations[P[B].name].level+=w;const e=t.operations[P[B].name].level;t.operations[P[B].name].maxLevel=e},add:D(1),subtract:D(-1),reset:()=>{t.operations[P[B].name].level=1,t.operations[P[B].name].maxLevel=1}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Successes:")),a.createElement("td",null,a.createElement(g.f,{label:"Successes",placeholder:"amt",tons:()=>t.operations[P[B].name].successes+=w,add:G(1),subtract:G(-1),reset:()=>t.operations[P[B].name].successes=0}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Count:")),a.createElement("td",null,a.createElement(g.f,{label:"Count",placeholder:"amt",tons:()=>t.operations[P[B].name].count+=w,add:Z(1),subtract:Z(-1),reset:()=>t.operations[P[B].name].count=0})))))))}},58028:(e,t,n)=>{"use strict";n.d(t,{d:()=>d});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(26023),m=n(98649),f=n(58297),h=n(62725);function d(){const[e,t]=(0,a.useState)("Find Largest Prime Factor");return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Coding Contracts")),a.createElement(i.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(c.Z,{onClick:f._q},"Generate Random Contract"),a.createElement(c.Z,{onClick:f.Pt},"Generate Random Contract on Home Comp"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(u.Z,{onChange:function(e){t(e.target.value)},value:e},Object.values(h.Th).map((e=>a.createElement(m.Z,{key:e.name,value:e.name},e.name)))),a.createElement(c.Z,{onClick:function(){(0,f.ao)({problemType:e,server:"home"})}},"Generate Specified Contract Type on Home Comp")))))))}},7666:(e,t,n)=>{"use strict";n.d(t,{l:()=>b});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(26023),m=n(98649),f=n(33244),h=n(62586),d=n(56654),p=n(50862),g=n(21623);const y=1e12;function b(){const[e,t]=(0,a.useState)(f.CompanyName.ECorp);function n(t){return function(n){const a=h.O[e];isNaN(n)||(a.playerReputation+=n*t)}}function b(t){return function(n){const a=h.O[e];isNaN(n)||(a.favor+=n*t)}}return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Companies")),a.createElement(i.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Company:")),a.createElement("td",{colSpan:3},a.createElement(u.Z,{id:"dev-companies-dropdown",onChange:function(e){(0,p.R)("CompanyName",e.target.value)&&t(e.target.value)},value:e},Object.values(h.O).map((e=>a.createElement(m.Z,{key:e.name,value:e.name},e.name)))))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Reputation:")),a.createElement("td",null,a.createElement(d.f,{label:"reputation",placeholder:"amt",tons:()=>n(1)(y),add:n(1),subtract:n(-1),reset:function(){h.O[e].playerReputation=0}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Favor:")),a.createElement("td",null,a.createElement(d.f,{label:"favor",placeholder:"amt",tons:()=>b(1)(2e3),add:b(1),subtract:b(-1),reset:function(){h.O[e].favor=0}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"All Reputation:")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){for(const e of(0,g.R3)(h.O))e.playerReputation=y}},"Tons"),a.createElement(c.Z,{onClick:function(){for(const e of(0,g.R3)(h.O))e.playerReputation=0}},"Reset"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"All Favor:")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){for(const e of(0,g.R3)(h.O))e.favor=y}},"Tons"),a.createElement(c.Z,{onClick:function(){for(const e of(0,g.R3)(h.O))e.favor=0}},"Reset")))))))}},46729:(e,t,n)=>{"use strict";n.d(t,{o:()=>h});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(56654),m=n(49173);const f=1e27;function h(){function e(e){return function(t){m.J5.corporation&&(m.J5.corporation.funds+=t*e)}}function t(e){return function(t){m.J5.corporation&&(m.J5.corporation.storedCycles+=t*e)}}return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Corporation")),a.createElement(i.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Funds:")),a.createElement("td",null,a.createElement(u.f,{label:"set funds",placeholder:"amt",tons:function(){m.J5.corporation&&(m.J5.corporation.funds=m.J5.corporation.funds+f)},add:e(1),subtract:e(-1),reset:function(){m.J5.corporation&&(m.J5.corporation.funds=m.J5.corporation.funds-m.J5.corporation.funds)}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Cycles:")),a.createElement("td",null,a.createElement(u.f,{label:"cycles",placeholder:"amt",tons:function(){m.J5.corporation&&(m.J5.corporation.storedCycles=f)},add:t(1),subtract:t(-1),reset:function(){m.J5.corporation&&(m.J5.corporation.storedCycles=0)}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(c.Z,{onClick:function(){if(m.J5.corporation)for(const e of m.J5.corporation.divisions.values())for(const t of e.products.values())t.developmentProgress=99.9}},"Finish products"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(c.Z,{onClick:function(){m.J5.corporation&&m.J5.corporation.divisions.forEach((e=>{e.researchPoints+=1e10}))}},"Tons of research"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(c.Z,{onClick:function(){m.J5.corporation&&(m.J5.corporation.shareSaleCooldown=0,m.J5.corporation.issueNewSharesCooldown=0)}},"Reset stock cooldowns")))))))}},84501:(e,t,n)=>{"use strict";n.d(t,{H:()=>m});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(49173),u=n(56654);function m(){return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Entropy")),a.createElement(i.Z,null,a.createElement(u.f,{label:"Set entropy",placeholder:"entropy",add:e=>{c.J5.entropy+=e,c.J5.applyEntropy(c.J5.entropy)},subtract:e=>{c.J5.entropy-=e,c.J5.applyEntropy(c.J5.entropy)},tons:()=>{c.J5.entropy+=1e12,c.J5.applyEntropy(c.J5.entropy)},reset:()=>{c.J5.entropy=0,c.J5.applyEntropy(c.J5.entropy)}})))}},4664:(e,t,n)=>{"use strict";n.d(t,{E:()=>C});var a=n(67294),r=n(5821),o=n(21945),i=n(81138),s=n(51907),l=n(54283),c=n(11930),u=n(26023),m=n(92557),f=n(98649),h=n(56798),d=n(23508),p=n(81924),g=n(64459),y=n(49173),b=n(33244),v=n(56654),k=n(58427),w=n(21623),E=n(50862);const S=1e12;function C(){const[e,t]=(0,a.useState)(b.FactionName.Illuminati);function n(t){return function(n){const a=k.i[e];isNaN(n)||(a.playerReputation+=n*t)}}function C(t){return function(n){const a=k.i[e];isNaN(n)||(a.favor+=n*t)}}return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(d.Z,null)},a.createElement(i.Z,null,"Factions")),a.createElement(s.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Faction:")),a.createElement("td",null,a.createElement(l.Z,null,a.createElement(c.Z,{id:"factions-select"},"Faction"),a.createElement(u.Z,{labelId:"factions-select",id:"factions-dropdown",onChange:function(e){(0,E.m)("FactionName").isMember(e.target.value)&&t(e.target.value)},value:e,startAdornment:a.createElement(a.Fragment,null,a.createElement(m.Z,{onClick:function(){Object.values(b.FactionName).forEach((e=>y.J5.receiveInvite(e)))},size:"large","arial-label":"receive-all-invitation"},a.createElement(p.Z,null)),a.createElement(m.Z,{onClick:function(){y.J5.receiveInvite(e)},size:"large","arial-label":"receive-one-invitation"},a.createElement(g.Z,null)))},Object.values(k.i).map((e=>a.createElement(f.Z,{key:e.name,value:e.name},e.name))))))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Reputation:")),a.createElement("td",null,a.createElement(v.f,{label:"reputation",placeholder:"amt",tons:()=>n(1)(S),add:n(1),subtract:n(-1),reset:function(){k.i[e].playerReputation=0}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"Favor:")),a.createElement("td",null,a.createElement(v.f,{label:"favor",placeholder:"amt",tons:()=>C(1)(2e3),add:C(1),subtract:C(-1),reset:function(){k.i[e].favor=0}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"All Reputation:")),a.createElement("td",null,a.createElement(h.Z,{onClick:function(){for(const e of(0,w.R3)(k.i))e.playerReputation=S}},"Tons"),a.createElement(h.Z,{onClick:function(){for(const e of(0,w.R3)(k.i))e.playerReputation=0}},"Reset"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(i.Z,null,"All Favor:")),a.createElement("td",null,a.createElement(h.Z,{onClick:function(){for(const e of(0,w.R3)(k.i))e.favor=S}},"Tons"),a.createElement(h.Z,{onClick:function(){for(const e of(0,w.R3)(k.i))e.favor=0}},"Reset")))))))}},67821:(e,t,n)=>{"use strict";n.d(t,{D:()=>m});var a=n(67294),r=n(81138),o=n(5821),i=n(21945),s=n(51907),l=n(23508),c=n(56654),u=n(49173);function m(){function e(e){return function(t){u.J5.gang&&(u.J5.gang.storedCycles+=t*e)}}return a.createElement(o.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(i.Z,{expandIcon:a.createElement(l.Z,null)},a.createElement(r.Z,null,"Gang")),a.createElement(s.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(r.Z,null,"Cycles:")),a.createElement("td",null,a.createElement(c.f,{label:"cycles",placeholder:"amt",tons:function(){u.J5.gang&&(u.J5.gang.storedCycles=1e27)},add:e(1),subtract:e(-1),reset:function(){u.J5.gang&&(u.J5.gang.storedCycles=0)}})))))))}},27629:(e,t,n)=>{"use strict";n.d(t,{L:()=>S});var a=n(67294),r=n(5821),o=n(21945),i=n(81138),s=n(51907),l=n(56798),c=n(66351),u=n(26023),m=n(98649),f=n(23508),h=n(49173),d=n(33244),p=n(72360),g=n(52947),y=n(24815),b=n(79267),v=n(87811),k=n(72198),w=n(10425),E=n(50862);function S(){const[e,t]=(0,a.useState)(!1),[n,S]=(0,a.useState)(""),[C,x]=(0,a.useState)(d.FactionName.SlumSnakes),[N,M]=(0,a.useState)(0),A=e=>()=>h.J5.gainMoney(e,"other");return(0,a.useEffect)((()=>{if(e)throw new ReferenceError("Manually thrown error")}),[e]),a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(f.Z,null)},a.createElement(i.Z,null,"General")),a.createElement(s.Z,null,a.createElement(l.Z,{onClick:(0,()=>h.J5.money=Number(0)),title:"This sets your money to $0, this means the money you had will just vanish without being accounted for where it went and may offset some metrics."},a.createElement("pre",null,"= ",a.createElement(p.W,{money:0}))),a.createElement(l.Z,{onClick:A(1e6)},a.createElement("pre",null,"+ ",a.createElement(p.W,{money:1e6}))),a.createElement(l.Z,{onClick:A(1e9)},a.createElement("pre",null,"+ ",a.createElement(p.W,{money:1e9}))),a.createElement(l.Z,{onClick:A(1e12)},a.createElement("pre",null,"+ ",a.createElement(p.W,{money:1e12}))),a.createElement(l.Z,{onClick:A(1e15)},a.createElement("pre",null,"+ ",a.createElement(p.W,{money:1e15}))),a.createElement(l.Z,{onClick:A(1/0)},a.createElement("pre",null,"+ ",a.createElement(p.W,{money:1/0}))),a.createElement(l.Z,{onClick:()=>h.J5.getHomeComputer().maxRam*=2},"+ RAM"),a.createElement("br",null),a.createElement(i.Z,null,"Add Custom Money"),a.createElement(c.Z,{onChange:e=>M(parseFloat(e.target.value))}),a.createElement(l.Z,{onClick:()=>!Number.isNaN(N)&&h.J5.gainMoney(N,"other")},"Give Money"),a.createElement("br",null),h.J5.corporation?a.createElement(l.Z,{onClick:()=>{h.J5.corporation=null,w.bS.emit()}},"Destroy Corporation"):a.createElement(a.Fragment,null,a.createElement(i.Z,null,"Corporation Name:"),a.createElement(c.Z,{value:n,onChange:e=>S(e.target.value)}),a.createElement(l.Z,{onClick:()=>{h.J5.startCorporation(n,!1),w.bS.emit()}},"Create Corporation")),a.createElement("br",null),h.J5.gang?a.createElement(l.Z,{onClick:()=>{h.J5.gang=null,w.bS.emit()}},"Stop Gang"):a.createElement(a.Fragment,null,a.createElement(i.Z,null,"Gang Faction:"),a.createElement(u.Z,{value:C,onChange:e=>{(0,E.m)("FactionName").isMember(e.target.value)&&x(e.target.value)}},v.m.Names.map((e=>a.createElement(m.Z,{key:e,value:e},e)))),a.createElement(l.Z,{onClick:()=>{const e=C===d.FactionName.NiteSec||C===d.FactionName.TheBlackHand;h.J5.startGang(C,e),w.bS.emit()}},"Start Gang")),a.createElement("br",null),h.J5.bladeburner?a.createElement(l.Z,{onClick:()=>{h.J5.bladeburner=null,w.bS.emit()}},"Leave BladeBurner"):a.createElement(l.Z,{onClick:()=>{h.J5.bladeburner=new b.T,w.bS.emit()}},"Join BladeBurner"),a.createElement("br",null),a.createElement(l.Z,{onClick:()=>g.F.toPage(y.T3.BitVerse,{flume:!0,quick:!0})},"Quick b1t_flum3.exe"),a.createElement(l.Z,{onClick:()=>g.F.toPage(y.T3.BitVerse,{flume:!0,quick:!1})},"Run b1t_flum3.exe"),a.createElement(l.Z,{onClick:()=>g.F.toPage(y.T3.BitVerse,{flume:!1,quick:!0})},"Quick w0rld_d34m0n"),a.createElement(l.Z,{onClick:()=>g.F.toPage(y.T3.BitVerse,{flume:!1,quick:!1})},"Hack w0rld_d34m0n"),a.createElement(l.Z,{onClick:()=>t(!0)},"Throw Error"),a.createElement(l.Z,{onClick:()=>(0,k.Uc)()},"Check Messages")))}},95096:(e,t,n)=>{"use strict";n.d(t,{U:()=>d});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(26023),m=n(49173),f=n(98649),h=n(33244);function d(){const[e,t]=(0,a.useState)(h.CompletedProgramName.bruteSsh);return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Programs")),a.createElement(i.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Program:")),a.createElement("td",null,a.createElement(u.Z,{onChange:function(e){t(e.target.value)},value:e},Object.values(h.CompletedProgramName).map((e=>a.createElement(f.Z,{key:e,value:e},e)))))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Add:")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){m.J5.hasProgram(e)||m.J5.getHomeComputer().programs.push(e)}},"One"),a.createElement(c.Z,{onClick:function(){for(const e of Object.values(h.CompletedProgramName))m.J5.hasProgram(e)||m.J5.getHomeComputer().programs.push(e)}},"All")))))))}},80423:(e,t,n)=>{"use strict";n.d(t,{L:()=>p});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(34716),u=n(32369),m=n(33244),f=n(52149),h=n(56798),d=n(15460);function p(){const e=(0,a.useRef)(null),[t,n]=(0,a.useState)(""),[p,g]=(0,a.useState)(!0),[y,b]=(0,a.useState)(!0),[v,k]=(0,a.useState)(!0);return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Save file")),a.createElement(i.Z,null,a.createElement(h.Z,{onClick:function(){if(!(window.File&&window.FileReader&&window.FileList&&window.Blob))return;const t=e.current;if(null===t)throw new Error("import input should not be null");t.click()},startIcon:a.createElement(f.Z,null),sx:{gridArea:"import"}},"Select save file",a.createElement("input",{ref:e,type:"file",hidden:!0,onChange:async function(e){try{const t=await c.Ex.getImportStringFromFile(e.target.files),a=atob(t);n(a)}catch(e){u.sC.emit(String(e),m.ToastVariant.ERROR,5e3)}}})),a.createElement("br",null),""!==t&&a.createElement(a.Fragment,null,a.createElement(d.V,{checked:p,onChange:e=>g(e),text:"Restore scripts",tooltip:a.createElement(a.Fragment,null,"Restore the save file home computer scripts.")}),a.createElement("br",null),a.createElement(d.V,{checked:y,onChange:e=>b(e),text:"Restore Augmentations",tooltip:a.createElement(a.Fragment,null,"Restore the save file installed augmentations.")}),a.createElement("br",null),a.createElement(d.V,{checked:v,onChange:e=>k(e),text:"Restore Source Files",tooltip:a.createElement(a.Fragment,null,"Restore the save file acquired source files.")}),a.createElement("br",null),a.createElement(h.Z,{onClick:function(){const e=JSON.parse(t);console.error(e)}},"Restore"))))}},94519:(e,t,n)=>{"use strict";n.d(t,{O:()=>d});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(26023),m=n(97467),f=n(89916),h=n(98649);function d(){const[e,t]=(0,a.useState)("home");return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Servers")),a.createElement(i.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Server:")),a.createElement("td",{colSpan:2},a.createElement(u.Z,{id:"dev-servers-dropdown",onChange:function(e){t(e.target.value)},value:e},(0,m.XX)().map((e=>a.createElement(h.Z,{key:e.hostname,value:e.hostname},e.hostname)))))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Root:")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){const t=(0,m.WT)(e);null!==t&&t instanceof f.x&&(t.hasAdminRights=!0,t.sshPortOpen=!0,t.ftpPortOpen=!0,t.smtpPortOpen=!0,t.httpPortOpen=!0,t.sqlPortOpen=!0,t.openPortCount=5)}},"Root one")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){for(const e of(0,m.XX)()){if(!(e instanceof f.x))return;e.hasAdminRights=!0,e.sshPortOpen=!0,e.ftpPortOpen=!0,e.smtpPortOpen=!0,e.httpPortOpen=!0,e.sqlPortOpen=!0,e.openPortCount=5}}},"Root all"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Security:")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){const t=(0,m.WT)(e);null!==t&&t instanceof f.x&&(t.hackDifficulty=t.minDifficulty)}},"Min one")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){for(const e of(0,m.XX)()){if(!(e instanceof f.x))return;e.hackDifficulty=e.minDifficulty}}},"Min all"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Money:")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){const t=(0,m.WT)(e);null!==t&&t instanceof f.x&&(t.moneyAvailable=0)}},"Min one")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){for(const e of(0,m.XX)()){if(!(e instanceof f.x))return;e.moneyAvailable=0}}},"Min all")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){const t=(0,m.WT)(e);null!==t&&t instanceof f.x&&(t.moneyAvailable=t.moneyMax)}},"Max one")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){for(const e of(0,m.XX)()){if(!(e instanceof f.x))return;e.moneyAvailable=e.moneyMax}}},"Max all")))))))}},90821:(e,t,n)=>{"use strict";n.d(t,{V:()=>f});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(56798),c=n(81138),u=n(49173),m=n(56654);function f(){function e(e){for(let t=0;te(1e7),add:e,subtract:e,reset:()=>e(0)})))))))}},81533:(e,t,n)=>{"use strict";n.d(t,{x:()=>h});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(49173),m=n(34265);const f=[1,2,3,4,5,6,7,8,9,10,11,12,13];function h(){function e(e,t){return function(){9===e&&(u.J5.hacknetNodes=[]),0!==t?u.J5.sourceFiles.set(e,t):u.J5.sourceFiles.delete(e)}}function t(t){return()=>{for(let n=0;na.createElement("tr",{key:"sf-"+t},a.createElement("td",null,a.createElement(l.Z,null,"SF-",t,":")),a.createElement("td",null,a.createElement(m.Z,null,a.createElement(c.Z,{onClick:e(t,0)},"0"),a.createElement(c.Z,{onClick:e(t,1)},"1"),a.createElement(c.Z,{onClick:e(t,2)},"2"),a.createElement(c.Z,{onClick:e(t,3)},"3"))))))))))}},80386:(e,t,n)=>{"use strict";n.d(t,{r:()=>m});var a=n(67294),r=n(78573),o=n(5821),i=n(21945),s=n(51907),l=n(23508),c=n(81138),u=n(56654);function m(){function e(e){return function(t){r.y$.storedCycles+=t*e}}function t(e){return function(t){r.y$.fragments.forEach((n=>n.highestCharge+=t*e))}}return a.createElement(o.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(i.Z,{expandIcon:a.createElement(l.Z,null)},a.createElement(c.Z,null,"Stanek's Gift")),a.createElement(s.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(u.f,{label:"cycles",placeholder:"amt",tons:function(){r.y$.storedCycles=1e6},add:e(1),subtract:e(-1),reset:function(){r.y$.storedCycles=0}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(u.f,{label:"all charge",placeholder:"amt",tons:function(){r.y$.fragments.forEach((e=>{e.highestCharge=1e21,e.numCharge=1e21}))},add:t(1),subtract:t(-1),reset:function(){r.y$.fragments.forEach((e=>{e.highestCharge=0,e.numCharge=0}))}})))))))}},38853:(e,t,n)=>{"use strict";n.d(t,{W:()=>h});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(56654),m=n(49173);const f=1e27;function h(){function e(e,t){return function(n){switch(e){case"hacking":n&&m.J5.gainHackingExp(n*t);break;case"strength":n&&m.J5.gainStrengthExp(n*t);break;case"defense":n&&m.J5.gainDefenseExp(n*t);break;case"dexterity":n&&m.J5.gainDexterityExp(n*t);break;case"agility":n&&m.J5.gainAgilityExp(n*t);break;case"charisma":n&&m.J5.gainCharismaExp(n*t);break;case"intelligence":n&&m.J5.gainIntelligenceExp(n*t)}m.J5.updateSkillLevels()}}function t(e){return function(t){m.J5.karma+=t*e}}function n(e){return function(){switch(e){case"hacking":m.J5.exp.hacking=0;break;case"strength":m.J5.exp.strength=0;break;case"defense":m.J5.exp.defense=0;break;case"dexterity":m.J5.exp.dexterity=0;break;case"agility":m.J5.exp.agility=0;break;case"charisma":m.J5.exp.charisma=0;break;case"intelligence":m.J5.exp.intelligence=0}m.J5.updateSkillLevels()}}return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Experience / Stats")),a.createElement(i.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"All:")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){m.J5.gainHackingExp(f),m.J5.gainStrengthExp(f),m.J5.gainDefenseExp(f),m.J5.gainDexterityExp(f),m.J5.gainAgilityExp(f),m.J5.gainCharismaExp(f),m.J5.gainIntelligenceExp(f),m.J5.updateSkillLevels()}},"Tons of exp"),a.createElement(c.Z,{onClick:function(){m.J5.exp.hacking=0,m.J5.exp.strength=0,m.J5.exp.defense=0,m.J5.exp.dexterity=0,m.J5.exp.agility=0,m.J5.exp.charisma=0,m.J5.exp.intelligence=0,m.J5.updateSkillLevels()}},"Reset"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Hacking:")),a.createElement("td",null,a.createElement(u.f,{label:"hacking",placeholder:"exp",tons:()=>e("hacking",1)(f),add:e("hacking",1),subtract:e("hacking",-1),reset:n("hacking")}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Strength:")),a.createElement("td",null,a.createElement(u.f,{label:"strength",placeholder:"exp",tons:()=>e("strength",1)(f),add:e("strength",1),subtract:e("strength",-1),reset:n("strength")}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Defense:")),a.createElement("td",null,a.createElement(u.f,{label:"defense",placeholder:"exp",tons:()=>e("defense",1)(f),add:e("defense",1),subtract:e("defense",-1),reset:n("defense")}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Dexterity:")),a.createElement("td",null,a.createElement(u.f,{label:"dexterity",placeholder:"exp",tons:()=>e("dexterity",1)(f),add:e("dexterity",1),subtract:e("dexterity",-1),reset:n("dexterity")}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Agility:")),a.createElement("td",null,a.createElement(u.f,{label:"agility",placeholder:"exp",tons:()=>e("agility",1)(f),add:e("agility",1),subtract:e("agility",-1),reset:n("agility")}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Charisma:")),a.createElement("td",null,a.createElement(u.f,{label:"charisma",placeholder:"exp",tons:()=>e("charisma",1)(f),add:e("charisma",1),subtract:e("charisma",-1),reset:n("charisma")}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Intelligence:")),a.createElement("td",null,a.createElement(u.f,{label:"intelligence",placeholder:"exp",tons:()=>e("intelligence",1)(f),add:e("intelligence",1),subtract:e("intelligence",-1),reset:n("intelligence")})),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){0===m.J5.skills.intelligence&&(m.J5.skills.intelligence=1,m.J5.updateSkillLevels())}},"Enable")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){m.J5.exp.intelligence=0,m.J5.skills.intelligence=0,m.J5.updateSkillLevels()}},"Disable"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Karma:")),a.createElement("td",null,a.createElement(u.f,{label:"karma",placeholder:"amt",tons:()=>e("intelligence",1)(1e5),add:t(1),subtract:t(-1),reset:function(){m.J5.karma=0}})))))))}},79151:(e,t,n)=>{"use strict";n.d(t,{n:()=>p});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(66351),m=n(72360),f=n(39463),h=n(35102),d=n(22213);function p(){const[e,t]=(0,a.useState)(0),[n,p]=(0,a.useState)("");function g(e){const t=n.replace(/\s/g,"");let a=()=>!0;""!==t&&"all"!==t&&(a=function(e){return t.split(",").includes(e)});for(const t of Object.keys(h.xO))if(Object.hasOwn(h.xO,t)){const n=h.xO[t];n instanceof d.W&&a(n.symbol)&&e(n)}}return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Stock Market")),a.createElement(i.Z,null,a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Symbol:")),a.createElement("td",null,a.createElement(u.Z,{placeholder:"symbol/'all'",onChange:function(e){p(e.target.value)}}))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Price:")),a.createElement("td",null,a.createElement(u.Z,{placeholder:"$$$",onChange:function(e){t(parseFloat(e.target.value))}}),a.createElement(c.Z,{onClick:function(){isNaN(e)||g((t=>{t.price=e}))}},"Set"))),a.createElement("tr",null,a.createElement("td",null,a.createElement(l.Z,null,"Caps:")),a.createElement("td",null,a.createElement(c.Z,{onClick:function(){const e=[];g((t=>{e.push(a.createElement("tr",{key:t.symbol},a.createElement("td",null,t.symbol),a.createElement("td",{style:{textAlign:"right"}},a.createElement(m.W,{money:t.cap}))))})),(0,f.X)(a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("th",null,"Stock"),a.createElement("th",null,"Price cap")),e)))}},"View stock caps")))))))}},25591:(e,t,n)=>{"use strict";n.d(t,{x:()=>h});var a=n(67294),r=n(5821),o=n(21945),i=n(51907),s=n(23508),l=n(81138),c=n(56798),u=n(49173),m=n(34716),f=n(2827);function h(){function e(e){return()=>{u.J5.lastUpdate-=e,f.D._lastUpdate-=e,m.Ex.saveGame(),setTimeout((()=>location.reload()),1e3)}}return a.createElement(r.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(o.Z,{expandIcon:a.createElement(s.Z,null)},a.createElement(l.Z,null,"Time skip")),a.createElement(i.Z,null,a.createElement(c.Z,{onClick:e(6e4)},"1 minute"),a.createElement(c.Z,{onClick:e(36e5)},"1 hour"),a.createElement(c.Z,{onClick:e(864e5)},"1 day")))}},51858:(e,t,n)=>{"use strict";n.d(t,{y:()=>w});var a=n(67294),r=n(97467),o=n(48672),i=n(22115),s=n(47542),l=n(46948),c=n(7272),u=n(67929),m=n(15369),f=n(49557),h=n(81138),d=n(28881),p=n(5821),g=n(21945),y=n(51907),b=n(23508),v=n(37042);function k(e){const t=(0,r.WT)(e.hostname);if(null===t)throw new Error(`server '${e.hostname}' should not be null`);let n=0;const o=[];for(const[e,a]of(0,v.F)(t))n+=a.content.length,o.push({name:e,size:a.content.length});return 0===n?a.createElement(a.Fragment,null):(o.sort(((e,t)=>t.size-e.size)),a.createElement(p.Z,{TransitionProps:{unmountOnExit:!0}},a.createElement(g.Z,{expandIcon:a.createElement(b.Z,null)},a.createElement(h.Z,null,t.hostname," (",(0,i.dp)(n),"b)")),a.createElement(y.Z,null,a.createElement(u.Z,{component:d.Z},a.createElement(s.Z,null,a.createElement(m.Z,null,a.createElement(f.Z,null,a.createElement(c.Z,null,a.createElement(h.Z,null,"Filename")),a.createElement(c.Z,{align:"right"},a.createElement(h.Z,null,"Size")))),a.createElement(l.Z,null,o.map((e=>a.createElement(f.Z,{key:e.name},a.createElement(c.Z,{component:"th",scope:"row"},a.createElement(h.Z,null,e.name)),a.createElement(c.Z,{align:"right"},a.createElement(h.Z,null,(0,i.dp)(e.size),"b")))))))),a.createElement("ul",null))))}function w(e){const t=[];for(const e of(0,r.XX)())t.push(e.hostname);return a.createElement(o.u,{open:e.open,onClose:e.onClose},a.createElement(a.Fragment,null,a.createElement(h.Z,null,"Welcome to the file diagnostic! If your save file is really big it's likely because you have too many text/scripts. This tool can help you narrow down where they are."),t.map((e=>a.createElement(k,{key:e,hostname:e})))))}},93005:(e,t,n)=>{"use strict";n.d(t,{L:()=>W});var a=n(53367),r=n(46232),o=n(20041),i=n(23952),s=n(59715),l=n(55586),c=n(43429),u=n(51626),m=n(20772),f=n(16234),h=n(72188),d=n(65273),p=n(93352),g=n(34177),y=n(98028),b=n(18267),v=n(88378),k=n(11082),w=n(35123),E=n(40449),S=n(84747),C=n(15467),x=n(80575),N=n(36814),M=n(72702),A=n(26347),T=n(36565),L=n(97165),R=n(74135),F=n(95143),I=n(98751),_=n(90988),P=n(96687),B=n(92611),O=n(45925),D=n(69939),Z=n(8734),G=n(19530),J=n(18006);const W={};W["advanced/bitnodes.md"]=a.Z,W["advanced/bladeburners.md"]=r.Z,W["advanced/corporations.md"]=o.Z,W["advanced/gang.md"]=i.Z,W["advanced/grafting.md"]=s.Z,W["advanced/hacknetservers.md"]=l.Z,W["advanced/intelligence.md"]=c.Z,W["advanced/offlineandbonustime.md"]=u.Z,W["advanced/sleeves.md"]=m.Z,W["advanced/sourcefiles.md"]=f.Z,W["advanced/stanek.md"]=h.Z,W["basic/augmentations.md"]=d.Z,W["basic/codingcontracts.md"]=p.Z,W["basic/companies.md"]=g.Z,W["basic/crimes.md"]=y.Z,W["basic/factions.md"]=b.Z,W["basic/hacking.md"]=v.Z,W["basic/hacknet_nodes.md"]=k.Z,W["basic/infiltration.md"]=w.Z,W["basic/programs.md"]=E.Z,W["basic/ram.md"]=S.Z,W["basic/reputation.md"]=C.Z,W["basic/scripts.md"]=x.Z,W["basic/servers.md"]=N.Z,W["basic/stats.md"]=M.Z,W["basic/stockmarket.md"]=A.Z,W["basic/terminal.md"]=T.Z,W["basic/world.md"]=L.Z,W["changelog.md"]=R.Z,W["help/bitnode_order.md"]=F.Z,W["help/getting_started.md"]=I.Z,W["help/tools_and_resources.md"]=_.Z,W["index.md"]=P.Z,W["migrations/v1.md"]=B.Z,W["migrations/v2.md"]=O.Z,W["programming/game_frozen.md"]=D.Z,W["programming/hackingalgorithms.md"]=Z.Z,W["programming/learn.md"]=G.Z,W["programming/remote_api.md"]=J.Z},38406:(e,t,n)=>{"use strict";n.d(t,{N:()=>i});var a=n(96687),r=n(93005);const o={content:a.Z},i=e=>r.L[e]??o},81009:(e,t,n)=>{"use strict";n.d(t,{C:()=>u});var a=n(67294),r=n(56798),o=n(45512),i=n(38406),s=n(19678),l=n(72938),c=n(64962);function u(){const e=(0,s.k6)(),t=(0,i.N)(e.page),n={navigate(t,n){const a=(0,c.Iw)("./"+t,e.page);if(a)if(n){const e=`https://github.com/bitburner-official/bitburner-src/blob/${l.t.isDevBranch?"dev":"stable"}/src/Documentation/doc/${a}`;window.open(e,"_newtab")}else e.push(a),window.scrollTo(0,0);else console.error(`Bad path ${t} from ${e.page} while navigating docs.`)}};return a.createElement(a.Fragment,null,a.createElement(r.Z,{onClick:()=>e.pop()},"Back"),a.createElement(r.Z,{onClick:()=>e.home()},"Home"),a.createElement(s.C3.Provider,{value:n},a.createElement(o.MD,{md:t+""})))}},10333:(e,t,n)=>{"use strict";n.d(t,{_l:()=>w,cq:()=>b,e_:()=>v,jw:()=>y,y_:()=>k});var a=n(49173),r=n(52947),o=n(24815),i=n(65065),s=n(32369),l=n(33244),c=n(97467),u=n(34716),m=n(66798),f=n(72938),h=n(90936),d=n(48764),p=n(64962),g=n(69917);function y(){navigator.userAgent.toLowerCase().includes(" electron/")&&(document.achievements=[],document.getFiles=function(){const e=(0,c.WT)("home");return null===e?{res:!1,msg:"Home server does not exist."}:{res:!0,data:{files:[...e.scripts.values()].map((e=>({filename:e.filename,code:e.code,ramUsage:e.ramUsage})))}}},document.deleteFile=function(e){const t=(0,p.Iw)(e);if(!t)return{res:!1,msg:"Invalid file path."};const n=(0,c.WT)("home");return n?n.removeFile(t):{res:!1,msg:"Home server does not exist."}},document.saveFile=function(e,t){const n=(0,p.Iw)(e);if(!n)return{res:!1,msg:"Invalid file path."};if(!(0,g.UH)(n))return{res:!1,msg:"Invalid file extension: must be a script"};t=d.lW.from(t,"base64").toString();const a=(0,c.WT)("home");if(!a)return{res:!1,msg:"Home server does not exist."};const{overwritten:r}=a.writeToScriptFile(n,t),o=a.scripts.get(n);return o?{res:!0,data:{overwritten:r,ramUsage:o.getRamUsage(a.scripts)}}:{res:!1,msg:"Somehow failed to get script after writing it. This is a bug."}},function(){const e={terminal:(e,t)=>{const n={info:i.o.info,warn:i.o.warn,error:i.o.error,success:i.o.success};let a;t&&(a=n[t]),a||(a=i.o.print),a.bind(i.o)(e)},toast:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2e3;return s.sC.emit(e,t,n)}};window.appNotifier=e}(),function(){const e={triggerSave:()=>u.Ex.saveGame(!0),triggerGameExport:()=>{try{u.Ex.exportGame()}catch(e){console.error(e),s.sC.emit("Could not export game.",l.ToastVariant.ERROR,2e3)}},triggerScriptsExport:()=>(0,m.e)("*",a.J5.getHomeComputer()),getSaveData:()=>({save:u.Ex.getSaveString(),fileName:u.Ex.getSaveFileName()}),getSaveInfo:async e=>{try{return(await u.Ex.getImportDataFromString(e)).playerData}catch(e){return void console.error(e)}},pushSaveData:function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r.F.toPage(o.T3.ImportSave,{base64Save:e,automatic:t})}};window.appSaveFns=e}(),function(){const e=window.electronBridge;e&&(e.receive("get-save-data-request",(()=>{const t=window.appSaveFns.getSaveData();e.send("get-save-data-response",t)})),e.receive("get-save-info-request",(async t=>{if("string"!=typeof t)throw new Error("Error while trying to get save info");const n=await window.appSaveFns.getSaveInfo(t);e.send("get-save-info-response",n)})),e.receive("push-save-request",(e=>{if("object"!=typeof e)throw new Error("Error trying to push save request");const{save:t,automatic:n=!1}=e;window.appSaveFns.pushSaveData(t,n)})),e.receive("trigger-save",(()=>window.appSaveFns.triggerSave().then((()=>{e.send("save-completed")})).catch((e=>{console.error(e),s.sC.emit("Could not save game.",l.ToastVariant.ERROR,2e3)})))),e.receive("trigger-game-export",(()=>{try{window.appSaveFns.triggerGameExport()}catch(e){console.error(e),s.sC.emit("Could not export game.",l.ToastVariant.ERROR,2e3)}})),e.receive("trigger-scripts-export",(()=>{try{window.appSaveFns.triggerScriptsExport()}catch(e){console.error(e),s.sC.emit("Could not export scripts.",l.ToastVariant.ERROR,2e3)}})))}())}function b(e){const t=window.electronBridge;t&&t.send("push-game-saved",e)}function v(){const e=window.electronBridge;e&&e.send("push-game-ready",{player:{identifier:a.J5.identifier,playtime:a.J5.totalPlaytime,lastSave:a.J5.lastSave},game:{version:f.t.VersionString,hash:(0,h.v)()}})}function k(e){const t=window.electronBridge;t&&(t.send("push-import-result",{wasImported:e}),w())}function w(){const e=window.electronBridge;e&&e.send("push-disable-restore",{duration:6e4})}},33244:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AugmentationName:()=>a.D,BlackOperationName:()=>r.s,CityName:()=>u.Ms,ClassType:()=>p.rF,CompanyName:()=>o.z,CompletedProgramName:()=>f.V,CorpBaseResearchName:()=>i.uq,CorpEmployeeJob:()=>i._K,CorpMaterialName:()=>i.Ku,CorpProductResearchName:()=>i.q7,CorpResearchName:()=>i.d$,CorpUnlockName:()=>i.pm,CorpUpgradeName:()=>i.UG,CrimeType:()=>s.X,FactionName:()=>l.W,FactionWorkType:()=>p.vD,GymType:()=>p.A$,IndustryType:()=>i.LS,JobName:()=>p.q3,LiteratureName:()=>c.z,LocationName:()=>u.qr,LocationType:()=>u._i,MessageFilename:()=>m.S,OrderType:()=>h.mr,PositionType:()=>h.d,SmartSupplyOption:()=>i.LE,StockSymbol:()=>h.QT,ToastVariant:()=>d.x,UniversityClassType:()=>p.GK});var a=n(43943),r=n(91407),o=n(62896),i=n(15905),s=n(4348),l=n(94139),c=n(33986),u=n(89298),m=n(35242),f=n(45813),h=n(41485),d=n(36352),p=n(96707)},52107:(e,t,n)=>{"use strict";let a;n.d(t,{NK:()=>o,VX:()=>a,bx:()=>i}),function(e){e.Bypass="Bypass",e.PrototypeTampering="PrototypeTampering",e.Unclickable="Unclickable",e.UndocumentedFunctionCall="UndocumentedFunctionCall",e.TimeCompression="TimeCompression",e.RealityAlteration="RealityAlteration",e.N00dles="N00dles",e.YoureNotMeantToAccessThis="YoureNotMeantToAccessThis",e.TrueRecursion="TrueRecursion",e.INeedARainbow="INeedARainbow",e.EditSaveFile="EditSaveFile"}(a||(a={}));const r={Bypass:"by circumventing the ram cost of document.",EditSaveFile:"by editing your save file.",PrototypeTampering:"by tampering with Numbers prototype.",TimeCompression:"by compressing time.",Unclickable:"by clicking the unclickable.",UndocumentedFunctionCall:"by looking beyond the documentation.",RealityAlteration:"by altering reality to suit your whims.",N00dles:"by harnessing the power of the n00dles.",YoureNotMeantToAccessThis:"by accessing the dev menu.",TrueRecursion:"by truly recursing.",INeedARainbow:"by using the power of the rainbow."};function o(e){return r[e]}function i(e){return e=e.filter((e=>Object.values(a).includes(e))),[...new Set(e)]}},6290:(e,t,n)=>{"use strict";n.d(t,{f:()=>s});var a=n(67294),r=n(49173),o=n(52107);const i=window.getComputedStyle;function s(){return a.createElement("div",{id:"unclickable",onClick:function(e){if(!(e.target&&e.target instanceof Element))return;const t=i(e.target).display,n=i(e.target).visibility;"none"===t&&"hidden"===n&&e.isTrusted&&r.J5.giveExploit(o.VX.Unclickable)},style:{display:"none",visibility:"hidden"}},"Click on this to upgrade your Source-File -1!")}},69704:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(49173),r=n(52107);function o(){if(a.J5.exploits&&0===a.J5.exploits.length)return;a.J5.exploits=(0,r.bx)(a.J5.exploits);const e=Math.pow(1.001,a.J5.exploits.length),t=Math.pow(.999,a.J5.exploits.length);a.J5.mults.hacking_chance*=e,a.J5.mults.hacking_speed*=e,a.J5.mults.hacking_money*=e,a.J5.mults.hacking_grow*=e,a.J5.mults.hacking*=e,a.J5.mults.strength*=e,a.J5.mults.defense*=e,a.J5.mults.dexterity*=e,a.J5.mults.agility*=e,a.J5.mults.charisma*=e,a.J5.mults.hacking_exp*=e,a.J5.mults.strength_exp*=e,a.J5.mults.defense_exp*=e,a.J5.mults.dexterity_exp*=e,a.J5.mults.agility_exp*=e,a.J5.mults.charisma_exp*=e,a.J5.mults.company_rep*=e,a.J5.mults.faction_rep*=e,a.J5.mults.crime_money*=e,a.J5.mults.crime_success*=e,a.J5.mults.hacknet_node_money*=e,a.J5.mults.hacknet_node_purchase_cost*=t,a.J5.mults.hacknet_node_ram_cost*=t,a.J5.mults.hacknet_node_core_cost*=t,a.J5.mults.hacknet_node_level_cost*=t,a.J5.mults.work_money*=e}},93573:(e,t,n)=>{"use strict";n.d(t,{s:()=>o});var a=n(49173),r=n(52107);function o(){a.J5.exploits.includes(r.VX.PrototypeTampering)||setInterval((function(){"5.5e+1"!==55..toExponential()&&a.J5.giveExploit(r.VX.PrototypeTampering)}),9e5),function(){if(a.J5.exploits.includes(r.VX.TimeCompression))return;let e=performance.now();window.setTimeout((function t(){const n=performance.now();n-e<500?a.J5.giveExploit(r.VX.TimeCompression):(e=n,window.setTimeout(t,15e3))}),15e3)}()}},93936:(e,t,n)=>{"use strict";n.d(t,{B0:()=>i,GO:()=>o,ju:()=>l,uL:()=>s});var a=n(58427),r=n(49173);let o=0;function i(){return(new Date).getTime()-o>864e5}function s(){if(i()){for(const e of r.J5.factions)a.i[e].favor++;o=(new Date).getTime()}}function l(e){o=e}},94139:(e,t,n)=>{"use strict";let a;n.d(t,{W:()=>a}),function(e){e.Illuminati="Illuminati",e.Daedalus="Daedalus",e.TheCovenant="The Covenant",e.ECorp="ECorp",e.MegaCorp="MegaCorp",e.BachmanAssociates="Bachman & Associates",e.BladeIndustries="Blade Industries",e.NWO="NWO",e.ClarkeIncorporated="Clarke Incorporated",e.OmniTekIncorporated="OmniTek Incorporated",e.FourSigma="Four Sigma",e.KuaiGongInternational="KuaiGong International",e.FulcrumSecretTechnologies="Fulcrum Secret Technologies",e.BitRunners="BitRunners",e.TheBlackHand="The Black Hand",e.NiteSec="NiteSec",e.Aevum="Aevum",e.Chongqing="Chongqing",e.Ishima="Ishima",e.NewTokyo="New Tokyo",e.Sector12="Sector-12",e.Volhaven="Volhaven",e.SpeakersForTheDead="Speakers for the Dead",e.TheDarkArmy="The Dark Army",e.TheSyndicate="The Syndicate",e.Silhouette="Silhouette",e.Tetrads="Tetrads",e.SlumSnakes="Slum Snakes",e.Netburners="Netburners",e.TianDiHui="Tian Di Hui",e.CyberSec="CyberSec",e.Bladeburners="Bladeburners",e.ChurchOfTheMachineGod="Church of the Machine God",e.ShadowsOfAnarchy="Shadows of Anarchy"}(a||(a={}))},4478:(e,t,n)=>{"use strict";n.d(t,{a:()=>l});var a=n(33244),r=n(98865),o=n(48132),i=n(94515),s=n(89194);class l{alreadyInvited=!1;augmentations=[];favor=0;isBanned=!1;isMember=!1;playerReputation=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.FactionName.Sector12;this.name=e}getInfo(){const e=r.G[this.name];if(null==e)throw new Error(`Missing faction from FactionInfos: ${this.name} this probably means the faction got corrupted somehow`);return e}prestigeSourceFile(){this.favor=0,this.playerReputation=0,this.alreadyInvited=!1,this.isMember=!1,this.isBanned=!1}prestigeAugmentation(){null==this.favor&&(this.favor=0),this.favor+=this.getFavorGain(),this.playerReputation=0,this.alreadyInvited=!1,this.isMember=!1,this.isBanned=!1}getFavorGain(){null==this.favor&&(this.favor=0);const e=Math.max(0,(0,o.X)(this.favor))+this.playerReputation;return(0,o.y)(e)-this.favor}static savedKeys=(0,s.i)(l,{removedKeys:["augmentations","name"]});toJSON(){return(0,i.L3)("Faction",this,l.savedKeys)}static fromJSON(e){return(0,i.Id)(l,e.data,l.savedKeys)}}i.gY.Faction=l},94542:(e,t,n)=>{"use strict";n.d(t,{AM:()=>w,Bj:()=>b,Gl:()=>k,id:()=>v,kl:()=>y,qW:()=>E});var a=n(73440),r=n(15571),o=n(33244),i=n(97740),s=n(49173),l=n(58427),c=n(51087),u=n(509),m=n(39463),f=n(60784),h=n(12450),d=n(16632),p=n(27889),g=n(21623);function y(e){s.J5.receiveInvite(e.name),e.alreadyInvited=!0,c.Z.SuppressFactionInvites||f.J.emit(e)}function b(e){if(e.isMember)return;e.isMember=!0,s.J5.factions.push(e.name);let t=0;const n=(0,g.KW)(o.FactionName,(e=>t++));s.J5.factions.sort(((e,t)=>n[e]-n[t]));const a=e.getInfo();for(const e of a.enemies)l.i[e]&&(l.i[e].isBanned=!0);for(let t=0;ts.J5.hasAugmentation(e)))}function k(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const a=v(e),i=(0,p.hV)(e);if(a)if(0!==i.moneyCost&&s.J5.money=i.moneyCost){const t=new r.e(e.name);if(e.name==o.AugmentationName.NeuroFluxGovernor&&(t.level=e.getNextLevel()),s.J5.queuedAugmentations.push(t),s.J5.loseMoney(i.moneyCost,"augmentations"),n)return"You purchased "+e.name;c.Z.SuppressBuyAugmentationConfirmation||(0,m.X)(`You purchased ${e.name}. Its enhancements will not take effect until they are installed.To install your augmentations, go to the 'Augmentations' tab on the left-hand navigation menu.Purchasing additional augmentations will now be more expensive.`)}else(0,m.X)("Hmm, something went wrong when trying to purchase an Augmentation. Please report this to the game developer with an explanation of how to reproduce this.");else{const t=`You must first purchase or install ${e.prereqs.filter((e=>!s.J5.hasAugmentation(e))).join(",")} before you can purchase this one.`;if(n)return t;(0,m.X)(t)}return""}function w(e){if(2!==s.J5.bitNodeN)for(const t of(0,g.nd)(l.i)){if((0,d.D)(s.J5.currentWork)&&t===s.J5.currentWork.factionName)continue;const n=l.i[t];if(!n.isMember)continue;if(!n.getInfo().offersWork())continue;if(s.J5.getGangName()===t)continue;const a=Math.min(.1,n.favor/1e3+.01),r=(0,u.He)(s.J5,n.favor),o=(0,u.Zz)(s.J5,n.favor),c=(0,u._h)(s.J5,n.favor),m=Math.max(r*a,o*a,c*a,1/120);n.playerReputation+=m*e*s.J5.mults.faction_rep*i.dQ.FactionPassiveRepGain}}const E=e=>{if(s.J5.hasGangWith(e.name)){let t=Object.values(a.x);t=t.filter((e=>!e.isSpecial&&e.name!==o.AugmentationName.CongruityImplant)),2===s.J5.bitNodeN&&t.push(a.x[o.AugmentationName.TheRedPill]);const n=(0,h.h3)(`BN${s.J5.bitNodeN}.${s.J5.sourceFileLvl(s.J5.bitNodeN)}`),r=t=>t.factions.length>1||!!e.augmentations.includes(t.name)||n()>=1-i.dQ.GangUniqueAugs;return t=t.filter(r),t.map((e=>e.name))}return e.augmentations.slice()}},98865:(e,t,n)=>{"use strict";n.d(t,{G:()=>u});var a=n(67294),r=n(33244),o=n(52947),i=n(24815),s=n(17816),l=n(81138);class c{constructor(e){this.infoText=e.infoText??a.createElement(a.Fragment,null),this.enemies=e.enemies??[],this.offerHackingWork=e.offerHackingWork??!1,this.offerFieldWork=e.offerFieldWork??!1,this.offerSecurityWork=e.offerSecurityWork??!1,this.keep=e.keepOnInstall??!1,this.special=e.special??!1,this.assignment=e.assignment}offersWork(){return this.offerFieldWork||this.offerHackingWork||this.offerSecurityWork}}const u={[r.FactionName.Illuminati]:new c({infoText:a.createElement(a.Fragment,null,"Humanity never changes. No matter how civilized society becomes, it will eventually fall back into chaos. And from this chaos, we are the invisible hand that guides them to order."," "),offerHackingWork:!0,offerFieldWork:!0}),[r.FactionName.Daedalus]:new c({infoText:a.createElement(a.Fragment,null,"Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth."),offerHackingWork:!0,offerFieldWork:!0}),[r.FactionName.TheCovenant]:new c({infoText:a.createElement(a.Fragment,null,"Surrender yourself. Give up your empty individuality to become part of something great, something eternal. Become a slave. Submit your mind, body, and soul. Only then can you set yourself free.",a.createElement("br",null),a.createElement("br",null),"Only then can you discover immortality."),offerHackingWork:!0,offerFieldWork:!0}),[r.FactionName.ECorp]:new c({infoText:a.createElement(a.Fragment,null,r.FactionName.ECorp,"'s mission is simple: to connect the world of today with the technology of tomorrow. With our wide range of Internet-related software and commercial hardware, ",r.FactionName.ECorp," makes the world's information universally accessible."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.MegaCorp]:new c({infoText:a.createElement(a.Fragment,null,r.FactionName.MegaCorp," does what no other dares to do. We imagine. We create. We invent. We create what others have never even dreamed of. Our work fills the world's needs for food, water, power, and transportation on an unprecedented scale, in ways that no other company can.",a.createElement("br",null),a.createElement("br",null),"In our labs and factories and on the ground with customers, ",r.FactionName.MegaCorp," is ushering in a new era for the world."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.BachmanAssociates]:new c({infoText:a.createElement(a.Fragment,null,"Where Law and Business meet - that's where we are.",a.createElement("br",null),a.createElement("br",null),"Legal Insight - Business Instinct - Innovative Experience."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.BladeIndustries]:new c({infoText:a.createElement(a.Fragment,null,"Augmentation is Salvation."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.NWO]:new c({infoText:a.createElement(a.Fragment,null,"Humans don't truly desire freedom. They want to be observed, understood, and judged. They want to be given purpose and direction in life. That is why they created God. And that is why they created civilization - not because of willingness, but because of a need to be incorporated into higher orders of structure and meaning."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.ClarkeIncorporated]:new c({infoText:a.createElement(a.Fragment,null,"The Power of the Genome - Unlocked."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.OmniTekIncorporated]:new c({infoText:a.createElement(a.Fragment,null,"Simply put, our mission is to design and build robots that make a difference."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.FourSigma]:new c({infoText:a.createElement(a.Fragment,null,"The scientific method is the best way to approach investing. Big strategies backed up with big data. Driven by deep learning and innovative ideas. And improved by iteration. That's ",r.FactionName.FourSigma,"."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.KuaiGongInternational]:new c({infoText:a.createElement(a.Fragment,null,"Dream big. Work hard. Make history."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.FulcrumSecretTechnologies]:new c({infoText:a.createElement(a.Fragment,null,"The human organism has an innate desire to worship. That is why they created gods. If there were no gods, it would be necessary to create them. And now we can."),offerHackingWork:!0,offerSecurityWork:!0,keepOnInstall:!0}),[r.FactionName.BitRunners]:new c({infoText:a.createElement(a.Fragment,null,"Our entire lives are controlled by bits. All of our actions, our thoughts, our personal information. It's all transformed into bits, stored in bits, communicated through bits. It’s impossible for any person to move, to live, to operate at any level without the use of bits. And when a person moves, lives, and operates, they leave behind their bits, mere traces of seemingly meaningless fragments of information. But these bits can be reconstructed. Transformed. Used.",a.createElement("br",null),a.createElement("br",null),"Those who run the bits, run the world."),offerHackingWork:!0}),[r.FactionName.TheBlackHand]:new c({infoText:a.createElement(a.Fragment,null,"The world, so afraid of strong government, now has no government. Only power - Digital power. Financial power. Technological power. And those at the top rule with an invisible hand. They built a society where the rich get richer, and everyone else suffers.",a.createElement("br",null),a.createElement("br",null),"So much pain. So many lives. Their darkness must end."),offerHackingWork:!0,offerFieldWork:!0}),[r.FactionName.NiteSec]:new c({infoText:a.createElement(a.Fragment,null," __..__ ",a.createElement("br",null)," _.nITESECNIt. ",a.createElement("br",null)," .-'NITESECNITESEc. ",a.createElement("br",null)," .' NITESECNITESECn ",a.createElement("br",null)," / NITESECNITESEC; ",a.createElement("br",null)," : :NITESECNITESEC; ",a.createElement("br",null)," ; $ NITESECNITESECN ",a.createElement("br",null)," : _, ,N'ITESECNITESEC ",a.createElement("br",null)," : .+^^`, : `NITESECNIT ",a.createElement("br",null)," ) /), `-,-=,NITESECNI ",a.createElement("br",null)," / ^ ,-;|NITESECN; ",a.createElement("br",null)," / _.' '-';NITESECN ",a.createElement("br",null)," ( , ,-''`^NITE' ",a.createElement("br",null)," )` :`. .' ",a.createElement("br",null)," )-- ; `- / ",a.createElement("br",null)," ' _.-' : ",a.createElement("br",null)," ( _.-' . ",a.createElement("br",null)," ------. ",a.createElement("br",null)," . ",a.createElement("br",null)," _.nIt ",a.createElement("br",null)," _.nITESECNi ",a.createElement("br",null)," nITESECNIT^' ",a.createElement("br",null)," NITE^' ___ ",a.createElement("br",null)," / .gP''''Tp. ",a.createElement("br",null)," : d' . `b ",a.createElement("br",null)," ; d' o `b ; ",a.createElement("br",null)," / d; `b| ",a.createElement("br",null)," /, $; @ `: ",a.createElement("br",null)," /' $/ ; ",a.createElement("br",null)," .' $/b o | ",a.createElement("br",null)," .' d$/$; : ",a.createElement("br",null)," / .d/$/$; , ; ",a.createElement("br",null)," d .dNITESEC $ | ",a.createElement("br",null)," :bp.__.gNITESEC/$ :$ ; ",a.createElement("br",null)," NITESECNITESECNIT /$b : ",a.createElement("br",null)),offerHackingWork:!0,offerFieldWork:!1,offerSecurityWork:!1,special:!1,keepOnInstall:!1}),[r.FactionName.Aevum]:new c({infoText:a.createElement(a.Fragment,null,"The Silicon City."),enemies:[r.FactionName.Chongqing,r.FactionName.NewTokyo,r.FactionName.Ishima,r.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.Chongqing]:new c({infoText:a.createElement(a.Fragment,null,"Serve the People."),enemies:[r.FactionName.Sector12,r.FactionName.Aevum,r.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.Ishima]:new c({infoText:a.createElement(a.Fragment,null,"The East Asian Order of the Future."),enemies:[r.FactionName.Sector12,r.FactionName.Aevum,r.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.NewTokyo]:new c({infoText:a.createElement(a.Fragment,null,"Asia's World City."),enemies:[r.FactionName.Sector12,r.FactionName.Aevum,r.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.Sector12]:new c({infoText:a.createElement(a.Fragment,null,"The City of the Future."),enemies:[r.FactionName.Chongqing,r.FactionName.NewTokyo,r.FactionName.Ishima,r.FactionName.Volhaven],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.Volhaven]:new c({infoText:a.createElement(a.Fragment,null,"Benefit, Honor, and Glory."),enemies:[r.FactionName.Chongqing,r.FactionName.Sector12,r.FactionName.NewTokyo,r.FactionName.Aevum,r.FactionName.Ishima],offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.SpeakersForTheDead]:new c({infoText:a.createElement(a.Fragment,null,"It is better to reign in Hell than to serve in Heaven."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.TheDarkArmy]:new c({infoText:a.createElement(a.Fragment,null,"The World doesn't care about right or wrong. It only cares about power."),offerHackingWork:!0,offerFieldWork:!0}),[r.FactionName.TheSyndicate]:new c({infoText:a.createElement(a.Fragment,null,"Honor holds you back."),offerHackingWork:!0,offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.Silhouette]:new c({infoText:a.createElement(a.Fragment,null,"Corporations have filled the void of power left behind by the collapse of Western government. The issue is they've become so big that you don't know who they're working for. And if you're employed at one of these corporations, you don't even know who you're working for.",a.createElement("br",null),a.createElement("br",null),"That's terror. Terror, fear, and corruption. All born into the system, all propagated by the system."),offerHackingWork:!0,offerFieldWork:!0}),[r.FactionName.Tetrads]:new c({infoText:a.createElement(a.Fragment,null,"Following the mandate of Heaven and carrying out the way."),offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.SlumSnakes]:new c({infoText:a.createElement(a.Fragment,null,r.FactionName.SlumSnakes," rule!"),offerFieldWork:!0,offerSecurityWork:!0}),[r.FactionName.Netburners]:new c({infoText:a.createElement(a.Fragment,null,"~~//*>H4CK||3T 8URN3R5**>?>\\~~"),offerHackingWork:!0}),[r.FactionName.TianDiHui]:new c({infoText:a.createElement(a.Fragment,null,"Obey Heaven and work righteously."),offerHackingWork:!0,offerSecurityWork:!0}),[r.FactionName.CyberSec]:new c({infoText:a.createElement(a.Fragment,null,"The Internet is the first thing that was built that we don't fully understand, the largest experiment in anarchy that we have ever had. And as the world becomes increasingly dominated by it, society approaches the brink of total chaos. We serve only to protect society, to protect humanity, to protect the world from imminent collapse."),offerHackingWork:!0}),[r.FactionName.Bladeburners]:new c({infoText:a.createElement(a.Fragment,null,"It's too bad they won't live. But then again, who does?",a.createElement("br",null),a.createElement("br",null),"Note that for this faction, reputation can only be gained through ",r.FactionName.Bladeburners," actions. Completing"," ",r.FactionName.Bladeburners," contracts/operations will increase your reputation."),special:!0,assignment:()=>a.createElement(s.W,{buttonText:"Open Bladeburner headquarters",infoText:"You can gain reputation with bladeburner by completing contracts and operations.",onClick:()=>o.F.toPage(i.T3.Bladeburner)})}),[r.FactionName.ChurchOfTheMachineGod]:new c({infoText:a.createElement(a.Fragment,null," `` ",a.createElement("br",null)," -odmmNmds: ",a.createElement("br",null)," `hNmo:..-omNh. ",a.createElement("br",null)," yMd` `hNh ",a.createElement("br",null)," mMd oNm ",a.createElement("br",null)," oMNo .mM/ ",a.createElement("br",null)," `dMN+ -mM+ ",a.createElement("br",null)," -mMNo -mN+ ",a.createElement("br",null)," .+- :mMNo/mN/ ",a.createElement("br",null),":yNMd. :NMNNN/ ",a.createElement("br",null),"-mMMMh. /NMMh` ",a.createElement("br",null)," .dMMMd. /NMMMy` ",a.createElement("br",null)," `yMMMd. /NNyNMMh` ",a.createElement("br",null)," `sMMMd. +Nm: +NMMh. ",a.createElement("br",null)," oMMMm- oNm: /NMMd. ",a.createElement("br",null)," +NMMmsMm- :mMMd. ",a.createElement("br",null)," /NMMMm- -mMMd. ",a.createElement("br",null)," /MMMm- -mMMd. ",a.createElement("br",null)," `sMNMMm- .mMmo ",a.createElement("br",null)," `sMd:hMMm. ./. ",a.createElement("br",null)," `yMy` `yNMd` ",a.createElement("br",null)," `hMs` oMMy ",a.createElement("br",null)," `hMh sMN- ",a.createElement("br",null)," /MM- .NMo ",a.createElement("br",null)," +MM: :MM+ ",a.createElement("br",null)," sNNo-.`.-omNy` ",a.createElement("br",null)," -smNNNNmdo- ",a.createElement("br",null)," `..` ",a.createElement("br",null),a.createElement("br",null),"Many cultures predict an end to humanity in the near future, a final Armageddon that will end the world; but we disagree."),offerHackingWork:!1,offerFieldWork:!1,offerSecurityWork:!1,special:!0,keepOnInstall:!0,assignment:()=>a.createElement(s.W,{buttonText:"Open Staneks Gift",infoText:"Stanek's Gift is a powerful augmentation that powers up the stat you chose to boost.Gaining reputation with the Church of the Machine God can only be done by charging the gift.",onClick:()=>o.F.toPage(i.T3.StaneksGift)})}),[r.FactionName.ShadowsOfAnarchy]:new c({infoText:a.createElement(a.Fragment,null,"The government is ruled by the corporations that we have allowed to consume it. To release the world from its shackles, the gods grant us their strength."),special:!0,keepOnInstall:!0,assignment:()=>a.createElement(l.Z,null,r.FactionName.ShadowsOfAnarchy," can only gain reputation by infiltrating.")})}},58427:(e,t,n)=>{"use strict";n.d(t,{i:()=>c,m:()=>u});var a=n(33244),r=n(4478),o=n(94515),i=n(21623),s=n(73440),l=n(50862);const c=(0,i.KW)(a.FactionName,(e=>new r.a(e)));for(const e of(0,i.R3)(s.x))for(const t of e.factions)c[t].augmentations.push(e.name);function u(e){const t=JSON.parse(e,o.Ro);if(t&&"object"==typeof t)for(const[e,n]of Object.entries(t)){if(!(0,l.m)("FactionName").isMember(e))continue;if(!n)continue;const t=c[e];if("object"!=typeof n)continue;(0,o._q)(n);const{playerReputation:a,favor:r}=n;"number"==typeof a&&a>0&&(t.playerReputation=a),"number"==typeof r&&r>0&&(t.favor=r),n.alreadyInvited&&(t.alreadyInvited=!0),n.isBanned&&(t.isBanned=!0),n.isMember&&(t.isMember=!0)}}},23248:(e,t,n)=>{"use strict";n.d(t,{HC:()=>c,Tv:()=>s,ZC:()=>l,o9:()=>i});var a=n(49173),r=n(72938),o=n(97740);function i(e,t){return e/r.t.DonateMoneyToRepDivisor*t.mults.faction_rep*o.dQ.FactionWorkRepGain}function s(){return Math.floor(r.t.BaseFavorToDonate*o.dQ.RepToDonateToFaction)}function l(e){return!isNaN(e)&&e>0&&a.J5.money>=e}function c(e,t){if(!l(e))return 0;const n=i(e,a.J5);return a.J5.loseMoney(e,"other"),t.playerReputation+=n,n}},48132:(e,t,n)=>{"use strict";function a(e){const t=25e3*(Math.pow(1.02,e)-1);return Math.round(1e4*t)/1e4}function r(e){const t=Math.log(e/25e3+1)/Math.log(1.02);return Math.round(1e4*t)/1e4}n.d(t,{X:()=>a,y:()=>r})},57385:(e,t,n)=>{"use strict";n.d(t,{c:()=>N});var a=n(67294),r=n(17575),o=n(81138),i=n(78016),s=n(56798),l=n(28881),c=n(30120),u=n(66351),m=n(42761),f=n(73440),h=n(27889),d=n(33244),p=n(75012),g=n(56412),y=n(51087),b=n(49173),v=n(22115),k=n(41519),w=n(17365),E=n(52947),S=n(94542),C=n(72938),x=n(88775);function N(e){let{faction:t}=e;const n=(0,x.S)(400),[N,M]=(0,a.useState)(""),A=(e,t)=>e.toLowerCase().includes(t.toLowerCase()),T=(0,a.useMemo)((()=>(0,S.qW)(t)),[t]),L=(0,a.useMemo)((()=>T.filter((e=>!N||A(f.x[e].name,N)||A(f.x[e].info,N)||A(f.x[e].stats,N)))),[N,T]);function R(){return L}function F(e){y.Z.PurchaseAugmentationsOrder=e,n()}const I=function(){switch(y.Z.PurchaseAugmentationsOrder){case g.L.Cost:return function(){const e=R();return e.sort(((e,t)=>{const n=f.x[e],a=f.x[t];if(null==n||null==a)throw new Error("Invalid Augmentation Names");return(0,h.hV)(n).moneyCost-(0,h.hV)(a).moneyCost})),e}();case g.L.Reputation:return function(){const e=R();return e.sort(((e,t)=>{const n=f.x[e],a=f.x[t];if(null==n||null==a)throw new Error("Invalid Augmentation Names");return(0,h.hV)(n).repCost-(0,h.hV)(a).repCost})),e}();case g.L.Purchasable:return function(){const e=R();function n(e){const n=f.x[e],a=(0,h.hV)(n),r=a.repCost,o=t.playerReputation>=r,i=(0,S.id)(n);return 0!==a.moneyCost&&b.J5.money>a.moneyCost&&o&&i}const a=e.filter(n).sort(((e,t)=>{const n=f.x[e],a=f.x[t];if(null==n||null==a)throw new Error("Invalid Augmentation Names");return(0,h.hV)(n).moneyCost-(0,h.hV)(a).moneyCost})),r=e.filter((e=>!n(e))).sort(((e,t)=>{const n=f.x[e],a=f.x[t];if(null==n||null==a)throw new Error("Invalid Augmentation Names");return(0,h.hV)(n).repCost-(0,h.hV)(a).repCost}));return a.concat(r)}();default:return R()}}(),_=I.filter((e=>e===d.AugmentationName.NeuroFluxGovernor||!b.J5.augmentations.some((t=>t.name===e))&&!b.J5.queuedAugmentations.some((t=>t.name===e)))),P=I.filter((e=>!_.includes(e))),B=t.name!==d.FactionName.ShadowsOfAnarchy?a.createElement(r.Z,{title:a.createElement(o.Z,null,"The price of every Augmentation increases for every queued Augmentation and it is reset when you install them.")},a.createElement(o.Z,null,a.createElement("b",null,"Price multiplier:")," x ",(0,v.dp)((0,h.oz)()))):a.createElement(r.Z,{title:a.createElement(o.Z,null,"This price multiplier increases for each ",d.FactionName.ShadowsOfAnarchy," augmentation already purchased. The multiplier is NOT reset when installing augmentations.")},a.createElement(o.Z,null,a.createElement("b",null,"Price multiplier:")," x"," ",(0,v.dp)(Math.pow(C.t.SoACostMult,I.filter((e=>b.J5.hasAugmentation(e))).length)),a.createElement("br",null),a.createElement("b",null,"Reputation multiplier:")," x"," ",(0,v.dp)(Math.pow(C.t.SoARepMult,I.filter((e=>b.J5.hasAugmentation(e))).length))));return a.createElement(a.Fragment,null,a.createElement(i.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0}},a.createElement(s.Z,{onClick:()=>E.F.back()},"Back"),a.createElement(o.Z,{variant:"h4"},"Faction Augmentations - ",t.name),a.createElement(l.Z,{sx:{p:1,mb:1}},a.createElement(o.Z,null,"These are all of the Augmentations that are available to purchase from ",a.createElement("b",null,t.name),". Augmentations are powerful upgrades that will enhance your abilities.",a.createElement("br",null)),a.createElement(c.Z,{sx:{display:"grid",gridTemplateColumns:`repeat(${t.name===d.FactionName.ShadowsOfAnarchy?"2":"3"}, 1fr)`,justifyItems:"center",my:1}},a.createElement(a.Fragment,null,B),a.createElement(o.Z,null,a.createElement("b",null,"Reputation:")," ",a.createElement(w.Y,{reputation:t.playerReputation}),a.createElement("br",null),a.createElement("b",null,"Favor:")," ",a.createElement(k.T,{favor:Math.floor(t.favor)}))),a.createElement(c.Z,{sx:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)"}},a.createElement(s.Z,{onClick:()=>F(g.L.Cost)},"Sort by Cost"),a.createElement(s.Z,{onClick:()=>F(g.L.Reputation)},"Sort by Reputation"),a.createElement(s.Z,{onClick:()=>F(g.L.Default)},"Sort by Default Order"),a.createElement(s.Z,{onClick:()=>F(g.L.Purchasable)},"Sort by Purchasable")),a.createElement(u.Z,{value:N,onChange:function(e){M(e.target.value)},autoFocus:!0,placeholder:"Filter augmentations",InputProps:{startAdornment:a.createElement(m.Z,null),spellCheck:!1},sx:{pt:1}}))),a.createElement(p.b,{augNames:_,ownedAugNames:P,canPurchase:e=>{const n=(0,h.hV)(e);return(0,S.id)(e)&&t.playerReputation>=n.repCost&&(0===n.moneyCost||b.J5.money>n.moneyCost)},purchaseAugmentation:(e,a)=>{y.Z.SuppressBuyAugmentationConfirmation?((0,S.Gl)(e,t),n()):a(!0)},rerender:n,rep:t.playerReputation,faction:t}))}},31403:(e,t,n)=>{"use strict";n.d(t,{u:()=>f});var a=n(67294),r=n(48672),o=n(52947),i=n(24815),s=n(49173),l=n(81138),c=n(56798),u=n(81055),m=n(33244);function f(e){const t=e.facName+" is a COMBAT gang and its members will have different tasks than in HACKING gangs. Compared to hacking gangs, progression with a combat gang can be more difficult as territory management is more important. However, well-managed combat gangs can progress faster than hacking ones.",n=e.facName+" is a HACKING gang and its members will have different tasks than in COMBAT gangs. Compared to combat gangs, progression with a hacking gang is slower but more straightforward as territory warfare is not as important.";function f(){return[m.FactionName.NiteSec,m.FactionName.TheBlackHand].includes(e.facName)}function h(){s.J5.startGang(e.facName,f()),e.onClose(),o.F.toPage(i.T3.Gang)}return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(l.Z,null,"Would you like to create a new Gang with ",e.facName,"?",a.createElement("br",null),a.createElement("br",null),"This will prevent you from creating a Gang with any other Faction until the BitNode is destroyed or abandoned. It will also reset your reputation with ",e.facName,".",a.createElement("br",null),a.createElement("br",null),f()?n:t,a.createElement("br",null),a.createElement("br",null),"Other than hacking vs combat and name, there are no differences between gangs."),a.createElement(c.Z,{onClick:h,onKeyUp:function(e){e.key===u.F.ENTER&&h()},autoFocus:!0},"Create Gang"),a.createElement(c.Z,{onClick:e.onClose},"Cancel"))}},36477:(e,t,n)=>{"use strict";n.d(t,{J:()=>g});var a=n(67294),r=n(72938),o=n(49173),i=n(23248),s=n(41519),l=n(72360),c=n(17365),u=n(39463),m=n(70109),f=n(81138),h=n(28881),d=n(56798),p=n(33313);function g(e){let{faction:t,favorToDonate:n,disabled:g,rerender:y}=e;const[b,v]=(0,a.useState)(NaN),k=(r.t.DonateMoneyToRepDivisor+"").length-1;function w(){return isNaN(b)?a.createElement(a.Fragment,null):(0,i.ZC)(b)?a.createElement(f.Z,null,"This donation will result in ",a.createElement(c.Y,{reputation:(0,i.o9)(b,o.J5)})," reputation gain"):o.J5.money0&&((0,u.X)(a.createElement(a.Fragment,null,"You just donated ",a.createElement(l.W,{money:b})," to ",t.name," to gain ",a.createElement(c.Y,{reputation:e})," ","reputation.")),y())},disabled:g||!(0,i.ZC)(b)},"donate")}}),a.createElement(f.Z,null,a.createElement(m.Z,null,`\\(reputation = \\frac{\\text{donation amount} \\cdot \\text{reputation multiplier}}{10^{${k}}}\\)`))))}},41500:(e,t,n)=>{"use strict";n.d(t,{P:()=>v});var a=n(67294),r=n(36477),o=n(80302),i=n(17816),s=n(52947),l=n(24815),c=n(49173),u=n(56798),m=n(81138),f=n(40810),h=n(33244),d=n(56696),p=n(16632),g=n(88775),y=n(23248);function b(e){let{faction:t,rerender:n,onAugmentations:g}=e;const[b,v]=(0,a.useState)(!1),k=t.getInfo();function w(){c.J5.startFocusing(),s.F.toPage(l.T3.Work)}const E=c.J5.gang&&c.J5.getGangName()===t.name,S=(0,y.Tv)(),C=t.favor>=S,x=t.name===h.FactionName.TheCovenant&&10===c.J5.bitNodeN;return a.createElement(a.Fragment,null,a.createElement(u.Z,{onClick:()=>s.F.toPage(l.T3.Factions)},"Back"),a.createElement(m.Z,{variant:"h4",color:"primary"},t.name),a.createElement(o.k,{faction:t,factionInfo:k}),a.createElement(d.j,{faction:t}),!E&&k.offerHackingWork&&a.createElement(i.W,{buttonText:"Hacking Contracts",infoText:"Complete hacking contracts for your faction. Your effectiveness, which determines how much reputation you gain for this faction, is based on your hacking skill. You will gain hacking exp.",onClick:()=>function(e){c.J5.startWork(new p.s({singularity:!1,faction:e.name,factionWorkType:h.FactionWorkType.hacking})),w()}(t)}),!E&&k.offerFieldWork&&a.createElement(i.W,{buttonText:"Field Work",infoText:"Carry out field missions for your faction. Your effectiveness, which determines how much reputation you gain for this faction, is based on all of your stats. You will gain exp for all stats.",onClick:()=>function(e){c.J5.startWork(new p.s({singularity:!1,faction:e.name,factionWorkType:h.FactionWorkType.field})),w()}(t)}),!E&&k.offerSecurityWork&&a.createElement(i.W,{buttonText:"Security Work",infoText:"Serve in a security detail for your faction. Your effectiveness, which determines how much reputation you gain for this faction, is based on your combat stats. You will gain exp for all combat stats.",onClick:()=>function(e){c.J5.startWork(new p.s({singularity:!1,faction:e.name,factionWorkType:h.FactionWorkType.security})),w()}(t)}),!E&&k.offersWork()&&a.createElement(r.J,{faction:t,rerender:n,favorToDonate:S,disabled:!C}),a.createElement(i.W,{buttonText:"Purchase Augmentations",infoText:"As your reputation with this faction rises, you will unlock Augmentations, which you can purchase to enhance your abilities.",onClick:g}),x&&a.createElement(a.Fragment,null,a.createElement(i.W,{buttonText:"Purchase & Upgrade Duplicate Sleeves",infoText:"Purchase Duplicate Sleeves and upgrades. These are permanent!",onClick:()=>v(!0)}),a.createElement(f.r,{open:b,onClose:()=>v(!1)})))}function v(e){let{faction:t}=e;const n=(0,g.S)(200);return c.J5.factions.includes(t.name)?a.createElement(b,{rerender:n,faction:t,onAugmentations:()=>s.F.toPage(l.T3.FactionAugmentations,{faction:t})}):a.createElement(a.Fragment,null,a.createElement(m.Z,{variant:"h4",color:"primary"},"You have not joined ",t.name," yet!"),a.createElement(u.Z,{onClick:()=>s.F.toPage(l.T3.Factions)},"Back to Factions"))}},1041:(e,t,n)=>{"use strict";n.d(t,{Q:()=>R,Y:()=>M});var a=n(67294),r=n(41946),o=n(95533),i=n(52683),s=n(4884),l=n(11886),c=n(7542),u=n(40238),m=n(17575),f=n(28881),h=n(30120),d=n(56798),p=n(81138),g=n(62097),y=n(78016),b=n(49173),v=n(33244),k=n(51087),w=n(22115),E=n(52947),S=n(24815),C=n(88775),x=n(94542),N=n(58427);const M=new Set,A="small",T=e=>{const t=e.faction.getInfo();return a.createElement(a.Fragment,null,t.offerFieldWork&&a.createElement(m.Z,{title:"This Faction offers field work"},a.createElement(r.Z,{sx:{color:k.Z.theme.info,mr:.5},fontSize:A})),t.offerHackingWork&&a.createElement(m.Z,{title:"This Faction offers hacking work"},a.createElement(o.Z,{sx:{color:k.Z.theme.hack,mr:.5},fontSize:A})),t.offerSecurityWork&&a.createElement(m.Z,{title:"This Faction offers security work"},a.createElement(i.Z,{sx:{color:k.Z.theme.combat,mr:.5},fontSize:A})))},L=e=>{const t=e.faction.getInfo(),n=(0,x.qW)(e.faction).filter((e=>!b.J5.hasAugmentation(e))).length;return a.createElement(f.Z,{sx:{display:"grid",p:1,alignItems:"center",gridTemplateColumns:"minmax(0, 4fr)"+(e.joined?" 1fr":"")}},a.createElement(h.Z,{display:"flex",sx:{alignItems:"center"}},e.joined?a.createElement(h.Z,{display:"grid",sx:{mr:1,gridTemplateColumns:"1fr 1fr",minWidth:"fit-content",gap:.5,"& .MuiButton-root":{height:"48px"}}},a.createElement(d.Z,{onClick:()=>{return t=e.faction,void E.F.toPage(S.T3.Faction,{faction:t});var t}},"Details"),a.createElement(d.Z,{onClick:()=>{return t=e.faction,void E.F.toPage(S.T3.FactionAugmentations,{faction:t});var t}},"Augments")):a.createElement(d.Z,{sx:{height:"48px",mr:1},onClick:t=>{return n=t,a=e.faction.name,void(n.isTrusted&&((0,x.Bj)(N.i[a]),e.rerender()));var n,a}},"Join!"),a.createElement("span",{style:{maxWidth:e.joined?"70%":"95%"}},a.createElement(p.Z,{variant:"h6",sx:{mr:1,display:"grid",gridTemplateColumns:"fit-content(100vw) max-content",alignItems:"center"}},a.createElement(m.Z,{title:e.faction.name},a.createElement("span",{style:{overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}},e.faction.name)),a.createElement("span",{style:{display:"flex",alignItems:"center"}},b.J5.hasGangWith(e.faction.name)&&a.createElement(m.Z,{title:"You have a gang with this Faction"},a.createElement(s.Z,{sx:{color:k.Z.theme.hp,ml:1}})),t.special&&a.createElement(m.Z,{title:"This is a special Faction"},a.createElement(l.Z,{sx:{ml:1,color:k.Z.theme.money,transform:"rotate(180deg)"}})),!e.joined&&t.enemies.length>0&&a.createElement(m.Z,{title:a.createElement(p.Z,{component:"div"},"This Faction is enemies with:",a.createElement("ul",null,t.enemies.map((e=>a.createElement("li",{key:e},e)))),"Joining this Faction will prevent you from joining its enemies")},a.createElement(c.Z,{sx:{ml:1,color:k.Z.theme.error}})))),a.createElement("span",{style:{display:"flex",alignItems:"center"}},!b.J5.hasGangWith(e.faction.name)&&a.createElement(T,{faction:e.faction}),a.createElement(p.Z,{variant:"body2",sx:{display:"flex"}},`${n||"No"} Augmentations left`)))),e.joined&&a.createElement(h.Z,{display:"grid",sx:{alignItems:"center",justifyItems:"left",gridAutoFlow:"row"}},a.createElement(p.Z,{sx:{color:k.Z.theme.rep}},(0,w.ZQ)(Math.floor(e.faction.favor))," favor"),a.createElement(p.Z,{sx:{color:k.Z.theme.rep}},(0,w.$n)(e.faction.playerReputation)," rep")))};function R(){const e=(0,g.Z)(),t=(0,C.S)(200);(0,a.useEffect)((()=>{b.J5.factionInvitations.forEach((e=>{M.add(e)}))}),[]);const n=Object.values(v.FactionName).map((e=>e)),r=[...b.J5.factions];r.sort(((e,t)=>n.indexOf(e)-n.indexOf(t)));const o=b.J5.factionInvitations;return a.createElement(y.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0,mb:10}},a.createElement(p.Z,{variant:"h4"},"Factions",a.createElement(m.Z,{title:a.createElement(p.Z,null,"Throughout the game you may receive invitations from factions. There are many different factions, and each faction has different criteria for determining its potential members. Joining a faction and furthering its cause is crucial to progressing in the game and unlocking endgame content.")},a.createElement(u.Z,{sx:{ml:1,mb:0},color:"info"}))),a.createElement(h.Z,{display:"grid",sx:{gap:1,gridTemplateColumns:(o.length>0?"1fr ":"")+"2fr",[e.breakpoints.down("lg")]:{gridTemplateColumns:"1fr","& > span:nth-of-type(1)":{order:1}},gridTemplateRows:"minmax(0, 1fr)","& > span > .MuiBox-root":{display:"grid",gridAutoRows:"70px",gap:1}}},o.length>0&&a.createElement("span",null,a.createElement(p.Z,{variant:"h5",color:"primary"},"Faction Invitations"),a.createElement(h.Z,null,o.map((e=>Object.hasOwn(N.i,e)?a.createElement(L,{key:e,faction:N.i[e],joined:!1,rerender:t}):null)))),a.createElement("span",null,b.J5.inGang()&&a.createElement(p.Z,{variant:"h5",color:"primary"},"Your Gang"),b.J5.inGang()&&a.createElement(h.Z,null,a.createElement(L,{key:b.J5.getGangName(),faction:b.J5.getGangFaction(),joined:!0,rerender:t})),a.createElement(p.Z,{variant:"h5",color:"primary"},"Your Factions"),a.createElement(h.Z,null,r.length>0?r.map((e=>Object.hasOwn(N.i,e)&&b.J5.getGangName()!==e?a.createElement(L,{key:e,faction:N.i[e],joined:!0,rerender:t}):null)):a.createElement(p.Z,null,"You have not yet joined any Factions.")))))}},56696:(e,t,n)=>{"use strict";n.d(t,{j:()=>d});var a=n(81138),r=n(30120),o=n(28881),i=n(17575),s=n(56798),l=n(67294),c=n(87811),u=n(52947),m=n(24815),f=n(49173),h=n(31403);function d(e){let{faction:t}=e;const[n,d]=(0,l.useState)(!1);if(!c.m.Names.includes(t.name)||!f.J5.isAwareOfGang()||f.J5.gang&&f.J5.getGangName()!==t.name)return l.createElement(l.Fragment,null);let p={enabled:!1,title:"",tooltip:"",description:""};return p=f.J5.gang?{enabled:!0,title:"Manage Gang",tooltip:"",description:"Manage a gang for this Faction. Gangs will earn you money and faction reputation"}:{enabled:f.J5.canAccessGang(),title:"Create Gang",tooltip:f.J5.canAccessGang()?"":l.createElement(a.Z,null,"Unlocked when reaching ",c.m.GangKarmaRequirement," karma"),description:"Create a gang for this Faction. Gangs will earn you money and faction reputation"},l.createElement(l.Fragment,null,l.createElement(r.Z,null,l.createElement(o.Z,{sx:{my:1,p:1}},l.createElement(i.Z,{title:p.tooltip},l.createElement("span",null,l.createElement(s.Z,{onClick:()=>{if(f.J5.inGang())return u.F.toPage(m.T3.Gang);d(!0)},disabled:!p.enabled},p.title))),l.createElement(a.Z,null,p.description))),l.createElement(h.u,{facName:t.name,open:n,onClose:()=>d(!1)}))}},80302:(e,t,n)=>{"use strict";n.d(t,{k:()=>p});var a=n(67294),r=n(17365),o=n(41519),i=n(70109),s=n(77541),l=n(73327),c=n(81138),u=n(17575),m=n(30120),f=n(88775);const h=(0,s.Z)((()=>(0,l.Z)({noformat:{whiteSpace:"pre-wrap",lineHeight:"1em"}})));function d(){return a.createElement(c.Z,null,"Perform work/carry out assignments for your faction to help further its cause! By doing so you will earn reputation for your faction. You will also gain reputation passively over time, although at a very slow rate. Earning reputation will allow you to purchase Augmentations through this faction, which are powerful upgrades that enhance your abilities.")}function p(e){(0,f.S)(200);const t=h(),n=e.factionInfo.assignment??d,s=e.faction.getFavorGain();return a.createElement(a.Fragment,null,a.createElement(c.Z,{classes:{root:t.noformat}},e.factionInfo.infoText),a.createElement(c.Z,null,"-------------------------"),a.createElement(m.Z,{display:"flex"},a.createElement(u.Z,{title:a.createElement(a.Fragment,null,a.createElement(c.Z,null,"You will have ",a.createElement(o.T,{favor:Math.floor(e.faction.favor+s)})," faction favor after installing an Augmentation."),a.createElement(i.Z,null,"\\(\\huge{r = \\text{total faction reputation}}\\)"),a.createElement(i.Z,null,"\\(\\huge{favor=1+\\left\\lfloor\\log_{1.02}\\left(\\frac{r+25000}{25500}\\right)\\right\\rfloor}\\)"))},a.createElement(c.Z,null,"Reputation: ",a.createElement(r.Y,{reputation:e.faction.playerReputation})))),a.createElement(c.Z,null,"-------------------------"),a.createElement(m.Z,{display:"flex"},a.createElement(u.Z,{title:a.createElement(a.Fragment,null,a.createElement(c.Z,null,"Faction favor increases the rate at which you earn reputation for this faction by 1% per favor. Faction favor is gained whenever you install an Augmentation. The amount of favor you gain depends on the total amount of reputation you earned with this faction. Across all resets."),a.createElement(i.Z,null,"\\(\\huge{r = reputation}\\)"),a.createElement(i.Z,null,"\\(\\huge{\\Delta r = \\Delta r \\times \\frac{100+favor}{100}}\\)"))},a.createElement(c.Z,null,"Faction Favor: ",a.createElement(o.T,{favor:Math.floor(e.faction.favor)})))),a.createElement(c.Z,null,"-------------------------"),a.createElement(n,null))}},60784:(e,t,n)=>{"use strict";n.d(t,{J:()=>u,N:()=>m});var a=n(67294),r=n(94542),o=n(48672),i=n(49173),s=n(13342),l=n(81138),c=n(56798);const u=new s.v;function m(){const[e,t]=(0,a.useState)(null);return(0,a.useEffect)((()=>u.subscribe((e=>t(e)))),[]),a.createElement(o.u,{open:null!==e,onClose:()=>t(null)},a.createElement(l.Z,{variant:"h4"},"You have received a faction invitation."),a.createElement(l.Z,null,"Would you like to join ",(e||{name:""}).name,"? ",a.createElement("br",null),a.createElement("br",null),"Warning: Joining this faction may prevent you from joining other factions during this run!"),a.createElement(c.Z,{onClick:function(){null!==e&&(-1===i.J5.factionInvitations.findIndex((t=>t===e.name))&&console.error("Could not find faction in Player.factionInvitations"),(0,r.Bj)(e),t(null))}},"Join!"),a.createElement(c.Z,{onClick:()=>t(null)},"Decide later"))}},17816:(e,t,n)=>{"use strict";n.d(t,{W:()=>l});var a=n(67294),r=n(81138),o=n(56798),i=n(28881),s=n(30120);function l(e){return a.createElement(s.Z,null,a.createElement(i.Z,{sx:{my:1,p:1}},a.createElement(o.Z,{onClick:e.onClick},e.buttonText),a.createElement(r.Z,null,e.infoText)))}},54678:(e,t,n)=>{"use strict";n.d(t,{_:()=>y});var a=n(67294),r=n(17575),o=n(81138),i=n(30120),s=n(66351),l=n(40826),c=n(51087),u=n(91371),m=n(69917),f=n(22115),h=n(60888),d=n(62177),p=n(89572),g=n(49173);const y=e=>{const[t,n]=(0,a.useState)(c.Z.AutoexecScript);return a.createElement(i.Z,null,a.createElement(r.Z,{title:a.createElement(o.Z,null,e.tooltip)},a.createElement(o.Z,null,e.label)),a.createElement(s.Z,{fullWidth:!0,InputProps:{endAdornment:a.createElement(l.Z,{position:"end"},function(){const e=(0,u.$4)(t);if(0===e.length)return a.createElement(r.Z,{title:a.createElement(o.Z,null,"No script will be auto-launched")},a.createElement(h.Z,{color:"primary"}));const n=String(e[0]),i=(0,m.L6)(n);if(!i)return a.createElement(r.Z,{title:a.createElement(o.Z,null,'"',n,'" is invalid for a script name (maybe missing suffix?)')},a.createElement(p.Z,{color:"error"}));const s=g.J5.getHomeComputer(),l=s.scripts.get(i);if(!l)return a.createElement(r.Z,{title:a.createElement(o.Z,null,n," does not exist!")},a.createElement(p.Z,{color:"error"}));const c=l.getRamUsage(s.scripts);if(null===c)return a.createElement(r.Z,{title:a.createElement(o.Z,null,n," has errors!")},a.createElement(p.Z,{color:"error"}));const y=g.J5.sourceFileLvl(9)>=2?128:g.J5.sourceFileLvl(1)>0?32:8;return c<=y?a.createElement(r.Z,{title:a.createElement(o.Z,null,n," costs ",(0,f.$1)(c))},a.createElement(h.Z,{color:"primary"})):a.createElement(r.Z,{title:a.createElement(o.Z,null,n," costs ",(0,f.$1)(c),", you might only have ",(0,f.$1)(y)," on home!")},a.createElement(d.Z,{color:"warning"}))}())},value:t,onChange:function(e){c.Z.AutoexecScript=e.target.value,n(e.target.value)}}))}},69138:(e,t,n)=>{"use strict";n.d(t,{x:()=>s});var a=n(81138),r=n(67294),o=n(47920),i=n(99882);const s=e=>{const[t,n]=(0,r.useState)(e.isConnected());return(0,r.useEffect)((()=>{const t=setInterval((()=>{n(e.isConnected())}),1e3);return()=>clearInterval(t)})),r.createElement(r.Fragment,null,r.createElement(a.Z,null,"Status: ",r.createElement(a.Z,{component:"span",color:t?"primary":"error"},t?r.createElement(r.Fragment,null,"Online ",r.createElement(o.Z,null)):r.createElement(r.Fragment,null,"Offline ",r.createElement(i.Z,null)))))}},8326:(e,t,n)=>{"use strict";n.d(t,{t:()=>i});var a=n(28881),r=n(81138),o=n(67294);const i=e=>o.createElement(a.Z,{sx:{height:"fit-content",p:1}},o.createElement(r.Z,{variant:"h6"},e.title),e.children)},68848:(e,t,n)=>{"use strict";n.d(t,{n:()=>p});var a=n(78016),r=n(81138),o=n(30120),i=n(67294),s=n(98731),l=n(16428),c=n(86670),u=n(76113),m=n(72303),f=n(81082),h=n(2722);const d={System:i.createElement(h.f,null),Interface:i.createElement(c.E,null),"Numeric Display":i.createElement(m.n,null),Gameplay:i.createElement(l.A,null),Misc:i.createElement(u.a,null),"Remote API":i.createElement(f.C,null)};function p(e){const[t,n]=(0,i.useState)("System");return i.createElement(a.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0}},i.createElement(r.Z,{variant:"h4"},"Options"),i.createElement(o.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 3fr",gap:1}},i.createElement(s.b,{tab:t,setTab:n,save:e.save,export:e.export,forceKill:e.forceKill,softReset:e.softReset,reactivateTutorial:e.reactivateTutorial}),d[t]))}},98731:(e,t,n)=>{"use strict";n.d(t,{b:()=>F});var a=n(47835),r=n(39702),o=n(52149),i=n(72775),s=n(83624),l=n(11062),c=n(48416),u=n(59612),m=n(95309),f=n(81138),h=n(30120),d=n(28881),p=n(97212),g=n(56798),y=n(17575),b=n(67294),v=n(51858),k=n(34716),w=n(20331),E=n(31288),S=n(54538),C=n(6466),x=n(32369),N=n(33244),M=n(64573),A=n(52947),T=n(24815),L=n(49802);const R=e=>b.createElement(m.Z,{selected:e.sideBarProps.tab===e.tabName,onClick:()=>e.sideBarProps.setTab(e.tabName)},b.createElement(f.Z,null,e.tabName)),F=e=>{var t,n,m,F;const I=(0,b.useRef)(null),[_,P]=(0,b.useState)(!1),[B,O]=(0,b.useState)(!1),[D,Z]=(0,b.useState)(null),[G,J]=(0,b.useState)(!1);return b.createElement(h.Z,null,b.createElement(d.Z,{sx:{height:"fit-content",mb:1}},b.createElement(p.Z,null,b.createElement(R,{sideBarProps:e,tabName:"System"}),b.createElement(R,{sideBarProps:e,tabName:"Gameplay"}),b.createElement(R,{sideBarProps:e,tabName:"Interface"}),b.createElement(R,{sideBarProps:e,tabName:"Numeric Display"}),b.createElement(R,{sideBarProps:e,tabName:"Misc"}),b.createElement(R,{sideBarProps:e,tabName:"Remote API"}))),b.createElement(h.Z,{sx:{display:"grid",width:"100%",height:"fit-content",gridTemplateAreas:'"save delete"\n "export import"\n "kill kill"\n "reset diagnose"\n "browse browse"\n "theme style"\n "links links"\n "devs devs"',gridTemplateColumns:"1fr 1fr"}},b.createElement(g.Z,{onClick:()=>e.save(),startIcon:b.createElement(a.Z,null),sx:{gridArea:"save"}},"Save Game"),b.createElement(h.Z,{sx:{gridArea:"delete","& .MuiButton-root":{height:"100%",width:"100%"}}},b.createElement(C.t,null)),b.createElement(y.Z,{title:b.createElement(f.Z,null,"Export your game to a text file.")},b.createElement(g.Z,{onClick:()=>e.export(),startIcon:b.createElement(r.Z,null),sx:{gridArea:"export"}},"Export Game")),b.createElement(y.Z,{title:b.createElement(f.Z,null,"Import your game from a text file.",b.createElement("br",null),"This will ",b.createElement("strong",null,"overwrite")," your current game. Back it up first!")},b.createElement(g.Z,{onClick:function(){if(!(window.File&&window.FileReader&&window.FileList&&window.Blob))return;const e=I.current;if(null===e)throw new Error("import input should not be null");e.click()},startIcon:b.createElement(o.Z,null),sx:{gridArea:"import"}},"Import Game",b.createElement("input",{ref:I,id:"import-game-file-selector",type:"file",hidden:!0,onChange:async function(e){try{const t=await k.Ex.getImportStringFromFile(e.target.files),n=await k.Ex.getImportDataFromString(t);Z(n),O(!0)}catch(e){console.error(e),x.sC.emit(String(e),N.ToastVariant.ERROR,5e3)}finally{e.target.value=""}}}))),b.createElement(S.c,{open:B,onClose:()=>O(!1),onConfirm:()=>async function(){if(D){try{await k.Ex.importGame(D.base64)}catch(e){x.sC.emit(String(e),N.ToastVariant.ERROR,5e3)}O(!1),Z(null)}}(),additionalButton:b.createElement(g.Z,{onClick:function(){D&&(A.F.toPage(T.T3.ImportSave,{base64Save:D.base64}),O(!1),Z(null))}},"Compare Save"),confirmationText:b.createElement(b.Fragment,null,"Importing a new game will ",b.createElement("strong",null,"completely wipe")," the current data!",b.createElement("br",null),b.createElement("br",null),"Make sure to have a backup of your current save file before importing.",b.createElement("br",null),"The file you are attempting to import seems valid.",((null==D||null===(t=D.playerData)||void 0===t?void 0:t.lastSave)??0)>0&&b.createElement(b.Fragment,null,b.createElement("br",null),b.createElement("br",null),"The export date of the save file is"," ",b.createElement("strong",null,new Date((null==D||null===(n=D.playerData)||void 0===n?void 0:n.lastSave)??0).toLocaleString())),((null==D||null===(m=D.playerData)||void 0===m?void 0:m.totalPlaytime)??0)>0&&b.createElement(b.Fragment,null,b.createElement("br",null),b.createElement("br",null),"Total play time of imported game:"," ",(0,L.UF)((null==D||null===(F=D.playerData)||void 0===F?void 0:F.totalPlaytime)??0)),b.createElement("br",null),b.createElement("br",null))}),b.createElement(y.Z,{title:b.createElement(f.Z,null,"Forcefully kill all active running scripts, in case there is a bug or some unexpected issue with the game. After using this, save the game and then reload the page. This is different than normal kill in that normal kill will tell the script to shut down while force kill just removes the references to it (and it should crash on its own). This will not remove the files on your computer, just forcefully kill all running instances of all scripts.")},b.createElement(g.Z,{onClick:()=>e.forceKill(),sx:{gridArea:"kill"}},"Force kill all active scripts")),b.createElement(h.Z,{sx:{gridArea:"reset","& .MuiButton-root":{height:"100%",width:"100%"}}},b.createElement(M.Q,{onTriggered:e.softReset})),b.createElement(y.Z,{title:b.createElement(f.Z,null,"If your save file is extremely big you can use this button to view a map of all the files on every server. Be careful: there might be spoilers.")},b.createElement(g.Z,{onClick:()=>P(!0),sx:{gridArea:"diagnose"}},"Diagnose files")),b.createElement(y.Z,{title:"Head to the theme browser to see a collection of prebuilt themes."},b.createElement(g.Z,{startIcon:b.createElement(i.Z,null),onClick:()=>A.F.toPage(T.T3.ThemeBrowser),sx:{gridArea:"browse"}},"Theme Browser")),b.createElement(h.Z,{sx:{gridArea:"theme","& .MuiButton-root":{height:"100%",width:"100%"}}},b.createElement(E.T,null)),b.createElement(h.Z,{sx:{gridArea:"style","& .MuiButton-root":{height:"100%",width:"100%"}}},b.createElement(w.D,null)),b.createElement(h.Z,{sx:{gridArea:"links",display:"grid",gridTemplateAreas:'"bug bug"\n "discord reddit"\n "tut tut"\n "plaza plaza"',gridTemplateColumns:"1fr 1fr",my:1}},b.createElement(g.Z,{startIcon:b.createElement(s.Z,null),href:"https://github.com/bitburner-official/bitburner-src/issues/new",target:"_blank",sx:{gridArea:"bug"}},"Report Bug"),b.createElement(g.Z,{startIcon:b.createElement(l.Z,null),onClick:()=>J(!0),sx:{gridArea:"tut"}},"Reset tutorial"),b.createElement(g.Z,{startIcon:b.createElement(c.Z,null),href:"https://discord.gg/TFc3hKD",target:"_blank",sx:{gridArea:"discord"}},"Discord"),b.createElement(g.Z,{startIcon:b.createElement(u.Z,null),href:"https://www.reddit.com/r/bitburner",target:"_blank",sx:{gridArea:"reddit"}},"Reddit"))),b.createElement(v.y,{open:_,onClose:()=>P(!1)}),b.createElement(S.c,{open:G,onClose:()=>J(!1),onConfirm:e.reactivateTutorial,confirmationText:"Reset your stats and money to start the tutorial? Home scripts will not be reset.",additionalButton:b.createElement(g.Z,{onClick:()=>J(!1)},"Cancel")}))}},16428:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var a=n(67294),r=n(15460),o=n(51087),i=n(8326),s=n(49173);const l=()=>a.createElement(i.t,{title:"Gameplay"},a.createElement(r.V,{checked:o.Z.SuppressMessages,onChange:e=>o.Z.SuppressMessages=e,text:"Suppress story messages",tooltip:a.createElement(a.Fragment,null,"If this is set, then any messages you receive will not appear as popups on the screen. They will still get sent to your home computer as '.msg' files and can be viewed with the 'cat' Terminal command.")}),a.createElement(r.V,{checked:o.Z.SuppressFactionInvites,onChange:e=>o.Z.SuppressFactionInvites=e,text:"Suppress faction invites",tooltip:a.createElement(a.Fragment,null,"If this is set, then any faction invites you receive will not appear as popups on the screen. Your outstanding faction invites can be viewed in the 'Factions' page.")}),a.createElement(r.V,{checked:o.Z.SuppressTravelConfirmation,onChange:e=>o.Z.SuppressTravelConfirmation=e,text:"Suppress travel confirmations",tooltip:a.createElement(a.Fragment,null,"If this is set, the confirmation message before traveling will not show up. You will automatically be deducted the travel cost as soon as you click.")}),a.createElement(r.V,{checked:o.Z.SuppressBuyAugmentationConfirmation,onChange:e=>o.Z.SuppressBuyAugmentationConfirmation=e,text:"Suppress augmentations confirmation",tooltip:a.createElement(a.Fragment,null,"If this is set, the confirmation message before buying augmentation will not show up.")}),a.createElement(r.V,{checked:o.Z.SuppressTIXPopup,onChange:e=>o.Z.SuppressTIXPopup=e,text:"Suppress TIX messages",tooltip:a.createElement(a.Fragment,null,"If this is set, the stock market will never create any popup.")}),s.J5.bladeburner&&a.createElement(r.V,{checked:o.Z.SuppressBladeburnerPopup,onChange:e=>o.Z.SuppressBladeburnerPopup=e,text:"Suppress bladeburner popup",tooltip:a.createElement(a.Fragment,null,"If this is set, then having your Bladeburner actions interrupted by being busy with something else will not display a popup message.")}))},86670:(e,t,n)=>{"use strict";n.d(t,{E:()=>m});var a=n(67294),r=n(17575),o=n(81138),i=n(66351),s=n(51087),l=n(15460),c=n(8326),u=n(30282);const m=()=>{const[e,t]=(0,a.useState)(s.Z.TimestampsFormat);return a.createElement(c.t,{title:"Interface"},a.createElement(l.V,{checked:s.Z.DisableASCIIArt,onChange:e=>s.Z.DisableASCIIArt=e,text:"Disable ascii art",tooltip:a.createElement(a.Fragment,null,"If this is set all ASCII art will be disabled.")}),a.createElement(l.V,{checked:s.Z.DisableTextEffects,onChange:e=>s.Z.DisableTextEffects=e,text:"Disable text effects",tooltip:a.createElement(a.Fragment,null,"If this is set, text effects will not be displayed. This can help if text is difficult to read in certain areas.")}),a.createElement(l.V,{checked:s.Z.DisableOverviewProgressBars,onChange:e=>s.Z.DisableOverviewProgressBars=e,text:"Disable Overview Progress Bars",tooltip:a.createElement(a.Fragment,null,"If this is set, the progress bars in the character overview will be hidden.")}),a.createElement(l.V,{checked:s.Z.ShowMiddleNullTimeUnit,onChange:e=>s.Z.ShowMiddleNullTimeUnit=e,text:"Show all intermediary times unit, even when null.",tooltip:a.createElement(a.Fragment,null,"ex : 1 hours 13 seconds becomes 1 hours 0 minutes 13 seconds.")}),a.createElement(r.Z,{title:a.createElement(o.Z,null,"Terminal commands and log entries will be timestamped. See https://date-fns.org/docs/Getting-Started/")},a.createElement(i.Z,{key:"timestampFormat",InputProps:{startAdornment:a.createElement(o.Z,{color:"format error"===(0,u.m)(e)&&""!==e?"error":"success"},"Timestamp format: ")},value:e,onChange:function(e){t(e.target.value),s.Z.TimestampsFormat=e.target.value},placeholder:"yyyy-MM-dd hh:mm:ss"})),a.createElement(o.Z,null,"Example timestamp: ",""!==e?(0,u.m)(e):"no timestamp"),a.createElement("br",null))}},76113:(e,t,n)=>{"use strict";n.d(t,{a:()=>s});var a=n(67294),r=n(51087),o=n(15460),i=n(8326);const s=()=>a.createElement(i.t,{title:"Misc"},a.createElement(o.V,{checked:r.Z.DisableHotkeys,onChange:e=>r.Z.DisableHotkeys=e,text:"Disable hotkeys",tooltip:a.createElement(a.Fragment,null,'If this is set, then most hotkeys (keyboard shortcuts) in the game are disabled. This includes Terminal commands, hotkeys to navigate between different parts of the game, and the "Save and Close (Ctrl + b)" hotkey in the Text Editor.')}),a.createElement(o.V,{checked:r.Z.EnableBashHotkeys,onChange:e=>r.Z.EnableBashHotkeys=e,text:"Enable bash hotkeys",tooltip:a.createElement(a.Fragment,null,"Improved Bash emulation mode. Setting this to 1 enables several new Terminal shortcuts and features that more closely resemble a real Bash-style shell. Note that when this mode is enabled, the default browser shortcuts are overridden by the new Bash shortcuts.")}),a.createElement(o.V,{checked:r.Z.EnableHistorySearch,onChange:e=>r.Z.EnableHistorySearch=e,text:"Enable terminal history search with arrow keys",tooltip:a.createElement(a.Fragment,null,"If there is user-entered text in the terminal, using the up arrow will search through the terminal history for previous commands that start with the current text, instead of navigating to the most recent history item. Search results can be executed immediately via 'enter', or autofilled into the terminal with 'tab'.")}))},72303:(e,t,n)=>{"use strict";n.d(t,{n:()=>m});var a=n(67294),r=n(26023),o=n(81138),i=n(98649),s=n(51087),l=n(15460),c=n(8326),u=n(22115);const m=()=>{const[e,t]=(0,a.useState)(s.Z.Locale);return a.createElement(c.t,{title:"Numeric Display"},a.createElement(l.V,{checked:s.Z.useEngineeringNotation,onChange:e=>{s.Z.useEngineeringNotation=e,u.AR.emit()},text:"Use engineering notation instead of scientific notation for exponential form",tooltip:a.createElement(a.Fragment,null,"If this is set, numbers displayed in exponential form will use engineering notation instead of scientific notation.")}),a.createElement(l.V,{checked:s.Z.disableSuffixes,onChange:e=>{s.Z.disableSuffixes=e,u.AR.emit()},text:"Use exponential form instead of suffixed form",tooltip:a.createElement(a.Fragment,null,"If this is set, suffixed form will not be used, and numbers that would have been suffixed will be displayed with exponential form instead.")}),a.createElement(l.V,{checked:s.Z.hideThousandsSeparator,onChange:e=>{s.Z.hideThousandsSeparator=e,u.AR.emit()},text:"Hide thousands separator",tooltip:a.createElement(a.Fragment,null,"If this is set, thousands separators will not be displayed.")}),a.createElement(l.V,{checked:s.Z.hideTrailingDecimalZeros,onChange:e=>{s.Z.hideTrailingDecimalZeros=e,u.AR.emit()},text:"Hide trailing fractional zeroes for decimals",tooltip:a.createElement(a.Fragment,null,"If this is set, zeroes at the end of a fractional part of a decimal will not be displayed.")}),a.createElement(l.V,{checked:s.Z.UseIEC60027_2,onChange:e=>{s.Z.UseIEC60027_2=e,u.AR.emit()},text:"Use GiB instead of GB",tooltip:a.createElement(a.Fragment,null,"If this is set all references to memory will use GiB instead of GB, in accordance with IEC 60027-2.")}),a.createElement(r.Z,{startAdornment:a.createElement(o.Z,null,"Locale "),value:e,onChange:function(e){t(e.target.value),s.Z.Locale=e.target.value,u.AR.emit()}},a.createElement(i.Z,{value:"en"},"en"),a.createElement(i.Z,{value:"bg"},"bg"),a.createElement(i.Z,{value:"cs"},"cs"),a.createElement(i.Z,{value:"da-dk"},"da-dk"),a.createElement(i.Z,{value:"de"},"de"),a.createElement(i.Z,{value:"en-au"},"en-au"),a.createElement(i.Z,{value:"en-gb"},"en-gb"),a.createElement(i.Z,{value:"es"},"es"),a.createElement(i.Z,{value:"fr"},"fr"),a.createElement(i.Z,{value:"hu"},"hu"),a.createElement(i.Z,{value:"it"},"it"),a.createElement(i.Z,{value:"lv"},"lv"),a.createElement(i.Z,{value:"no"},"no"),a.createElement(i.Z,{value:"pl"},"pl"),a.createElement(i.Z,{value:"ru"},"ru")))}},2165:(e,t,n)=>{"use strict";n.d(t,{z:()=>l});var a=n(30120),r=n(17575),o=n(81138),i=n(7929),s=n(67294);const l=e=>{const[t,n]=(0,s.useState)(e.initialValue);return s.createElement(a.Z,null,s.createElement(r.Z,{title:s.createElement(o.Z,null,e.tooltip)},s.createElement(o.Z,null,e.label)),s.createElement(i.ZP,{value:t,onChange:(e,t)=>{"number"==typeof t&&n(t)},onChangeCommitted:e.callback,step:e.step,min:e.min,max:e.max,valueLabelDisplay:"auto",sx:{"& .MuiSlider-thumb":{height:"12px",width:"12px"}},marks:e.marks}))}},81082:(e,t,n)=>{"use strict";n.d(t,{C:()=>h});var a=n(67294),r=n(81138),o=n(39401),i=n(17575),s=n(66351),l=n(56798),c=n(8326),u=n(51087),m=n(69138),f=n(60468);const h=()=>{const[e,t]=(0,a.useState)(u.Z.RemoteFileApiPort);return a.createElement(c.t,{title:"Remote API"},a.createElement(r.Z,null,"These settings control the Remote API for bitburner. This is typically used to write scripts using an external text editor and then upload files to the home server."),a.createElement(r.Z,null,a.createElement(o.Z,{href:"https://github.com/bitburner-official/bitburner-src/blob/dev/src/Documentation/doc/programming/remote_api.md",target:"_blank"},"Documentation")),a.createElement(m.x,{isConnected:f.v}),a.createElement(i.Z,{title:a.createElement(r.Z,null,"This port number is used to connect to a Remote API port, please ensure that it matches with your Remote API server port. Set to 0 to disable the feature.")},a.createElement(s.Z,{key:"remoteAPIPort",InputProps:{startAdornment:a.createElement(r.Z,{color:e>0&&e<=65535?"success":"error"},"Port: "),endAdornment:a.createElement(l.Z,{onClick:f.j},"Connect")},value:e,onChange:function(e){t(Number(e.target.value)),u.Z.RemoteFileApiPort=Number(e.target.value)},placeholder:"12525"})))}},2722:(e,t,n)=>{"use strict";n.d(t,{f:()=>c});var a=n(67294),r=n(51087),o=n(8326),i=n(2165),s=n(54678),l=n(15460);const c=()=>{const[e,t]=(0,a.useState)(r.Z.CodeInstructionRunTime),[n,c]=(0,a.useState)(r.Z.MaxRecentScriptsCapacity),[u,m]=(0,a.useState)(r.Z.MaxLogCapacity),[f,h]=(0,a.useState)(r.Z.MaxPortCapacity),[d,p]=(0,a.useState)(r.Z.MaxTerminalCapacity),[g,y]=(0,a.useState)(r.Z.AutosaveInterval);return a.createElement(o.t,{title:"System"},a.createElement(a.Fragment,null,a.createElement(s._,{label:"Autoexec Script + Args",tooltip:a.createElement(a.Fragment,null,'Path to a script (with optional args) to run on game load. The script will be run on home, launched before any saved running scripts. It will have the "temporary" setting, so if it stays running it won\'t be saved.')}),a.createElement("br",null),a.createElement(i.z,{label:".script exec time (ms)",initialValue:e,callback:function(e,n){t(n),r.Z.CodeInstructionRunTime=n},step:1,min:5,max:100,tooltip:a.createElement(a.Fragment,null,"The minimum number of milliseconds it takes to execute an operation in Netscript. Setting this too low can result in poor performance if you have many scripts running.")}),a.createElement(i.z,{label:"Recently killed scripts size",initialValue:n,callback:function(e,t){c(t),r.Z.MaxRecentScriptsCapacity=t},step:25,min:0,max:500,tooltip:a.createElement(a.Fragment,null,"The maximum number of recently killed scripts the game will keep.")}),a.createElement(i.z,{label:"Netscript log size",initialValue:u,callback:function(e,t){m(t),r.Z.MaxLogCapacity=t},step:20,min:20,max:500,tooltip:a.createElement(a.Fragment,null,"The maximum number of lines a script's logs can hold. Setting this too high can cause the game to use a lot of memory if you have many scripts running.")}),a.createElement(i.z,{label:"Netscript port size",initialValue:f,callback:function(e,t){h(t),r.Z.MaxPortCapacity=t},step:1,min:20,max:100,tooltip:a.createElement(a.Fragment,null,"The maximum number of entries that can be written to a port using Netscript's write() function. Setting this too high can cause the game to use a lot of memory.")}),a.createElement(i.z,{label:"Terminal capacity",initialValue:d,callback:function(e,t){p(t),r.Z.MaxTerminalCapacity=t},step:50,min:50,max:500,tooltip:a.createElement(a.Fragment,null,"The maximum number of entries that can be written to the terminal. Setting this too high can cause the game to use a lot of memory."),marks:!0}),a.createElement(i.z,{label:"Autosave interval (s)",initialValue:g,callback:function(e,t){y(t),r.Z.AutosaveInterval=t},step:30,min:0,max:600,tooltip:a.createElement(a.Fragment,null,"The time (in seconds) between each autosave. Set to 0 to disable autosave."),marks:!0})),a.createElement(l.V,{checked:r.Z.SuppressSavedGameToast,onChange:e=>r.Z.SuppressSavedGameToast=e,text:"Suppress Auto-Save Game Toast",tooltip:a.createElement(a.Fragment,null,'If this is set, there will be no "Game Saved!" toast appearing after an auto-save.')}),a.createElement(l.V,{checked:r.Z.SuppressAutosaveDisabledWarnings,onChange:e=>r.Z.SuppressAutosaveDisabledWarnings=e,text:"Suppress Auto-Save Disabled Warning",tooltip:a.createElement(a.Fragment,null,"If this is set, there will be no warning triggered when auto-save is disabled (at 0).")}),a.createElement(l.V,{checked:r.Z.SaveGameOnFileSave,onChange:e=>r.Z.SaveGameOnFileSave=e,text:"Save game on file save",tooltip:a.createElement(a.Fragment,null,"Save your game any time a file is saved in the script editor.")}),a.createElement(l.V,{checked:r.Z.ExcludeRunningScriptsFromSave,onChange:e=>r.Z.ExcludeRunningScriptsFromSave=e,text:"Exclude Running Scripts from Save",tooltip:a.createElement(a.Fragment,null,'If this is set, the save file will exclude all running scripts. This is only useful if your save is lagging a lot. You\'ll have to restart your script every time you launch the game, possibly by using the "autoexec" option.')}))}},59471:(e,t,n)=>{"use strict";n.d(t,{Fj:()=>i,s9:()=>s,vS:()=>o});var a=n(33244),r=n(94515);let o={[a.FactionName.SlumSnakes]:{power:1,territory:1/7},[a.FactionName.Tetrads]:{power:1,territory:1/7},[a.FactionName.TheSyndicate]:{power:1,territory:1/7},[a.FactionName.TheDarkArmy]:{power:1,territory:1/7},[a.FactionName.SpeakersForTheDead]:{power:1,territory:1/7},[a.FactionName.NiteSec]:{power:1,territory:1/7},[a.FactionName.TheBlackHand]:{power:1,territory:1/7}};function i(){o={[a.FactionName.SlumSnakes]:{power:1,territory:1/7},[a.FactionName.Tetrads]:{power:1,territory:1/7},[a.FactionName.TheSyndicate]:{power:1,territory:1/7},[a.FactionName.TheDarkArmy]:{power:1,territory:1/7},[a.FactionName.SpeakersForTheDead]:{power:1,territory:1/7},[a.FactionName.NiteSec]:{power:1,territory:1/7},[a.FactionName.TheBlackHand]:{power:1,territory:1/7}}}function s(e){o=JSON.parse(e,r.Ro)}},61512:(e,t,n)=>{"use strict";n.d(t,{v:()=>p});var a=n(58427),r=n(39463),o=n(94515),i=n(43074),s=n(92666),l=n(87811),c=n(99225),u=n(59471),m=n(18162),f=n(49173),h=n(56138),d=n(33244);class p{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.FactionName.SlumSnakes,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.facName=e,this.members=[],this.wanted=1,this.respect=1,this.isHackingGang=t,this.respectGainRate=0,this.wantedGainRate=0,this.moneyGainRate=0,this.storedCycles=0,this.storedTerritoryAndPowerCycles=0,this.territoryClashChance=0,this.territoryWarfareEngaged=!1,this.notifyMemberDeath=!0}getPower(){return u.vS[this.facName].power}getTerritory(){return u.vS[this.facName].territory}process(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;if(isNaN(e)&&console.error(`NaN passed into Gang.process(): ${e}`),this.storedCycles+=e,this.storedCyclest&&(a=1),this.wanted=a,this.wanted<1&&(this.wanted=1)}f.J5.gainMoney(t*e,"gang")}processTerritoryAndPowerGains(e){function t(e,t){const n=Math.max(1,1+Math.log(u.vS[e].power/u.vS[t].power)/Math.log(50));return Math.min(u.vS[t].territory,1e-4*n*(Math.random()+.5))}if(this.storedTerritoryAndPowerCycles+=e,this.storedTerritoryAndPowerCycles0&&(this.territoryClashChance=Math.max(0,this.territoryClashChance-.01));const a=l.m.Names.filter((e=>u.vS[e].territory>0||e===n));if(a.length>1)for(let e=0;et!==a[e])),o=(0,s.X)(0,r.length-1),i=a[e],l=r[o];if(!(i!==n&&l!==n||Math.random()e.territory)).reduce(((e,t)=>e+t),0);Object.values(u.vS).forEach((e=>e.territory/=f))}}processExperienceGains(e){for(const t of this.members)t.gainExperience(e),t.updateSkillLevels()}clash(){let e=.01;if(arguments.length>0&&void 0!==arguments[0]&&arguments[0]?e/=2:u.vS[this.facName].power*=1/1.008,!(Math.random()<.65))for(let t=this.members.length-1;t>=0;--t){const n=this.members[t];if("Territory Warfare"!==n.task)continue;const a=e/Math.pow(n.def,.6);Math.random()=l.m.MaximumGangMembers)&&this.respect>=this.respectForNextRecruit()}respectForNextRecruit(){if(this.members.length=l.m.MaximumGangMembers)return 1/0;const e=this.members.length-l.m.numFreeMembers+1;return Math.pow(l.m.recruitThresholdBase,e)}getRecruitsAvailable(){return this.members.length<3&&this.respectt.name===e)).length>=1)return!1;const t=new m.q(e);return this.members.push(t),!0}getWantedPenalty(){return this.respect/(this.respect+this.wanted)}calculatePower(){let e=0;for(let t=0;t`Ascended Gang member ${e.name}`)),n}catch(e){throw null==t&&(0,i.P)(e),e}}getDiscount(){const e=this.getPower(),t=this.respect,n=Math.pow(t,.01)+t/5e6+Math.pow(e,.01)+e/1e6-1;return Math.max(1,n)}getAllTaskNames(){return Object.keys(c.H).filter((e=>{const t=c.H[e];return null!=t&&"Unassigned"!==t.name&&(this.isHackingGang===t.isHacking||!this.isHackingGang===t.isCombat)}))}getUpgradeCost(e){return null==e?1/0:e.cost/this.getDiscount()}toJSON(){return(0,o.L3)("Gang",this)}static fromJSON(e){return(0,o.Id)(p,e.data)}}o.gY.Gang=p},18162:(e,t,n)=>{"use strict";n.d(t,{q:()=>c});var a=n(45089),r=n(99225),o=n(59018),i=n(49173),s=n(94515),l=n(21320);class c{task="Unassigned";earnedRespect=0;hack=1;str=1;def=1;dex=1;agi=1;cha=1;hack_exp=0;str_exp=0;def_exp=0;dex_exp=0;agi_exp=0;cha_exp=0;hack_mult=1;str_mult=1;def_mult=1;dex_mult=1;agi_mult=1;cha_mult=1;hack_asc_points=0;str_asc_points=0;def_asc_points=0;dex_asc_points=0;agi_asc_points=0;cha_asc_points=0;upgrades=[];augmentations=[];constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.name=e}calculateSkill(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.max(Math.floor(t*(32*Math.log(e+534.5)-200)),1)}calculateAscensionMult(e){return(0,l._r)(e)}updateSkillLevels(){this.hack=this.calculateSkill(this.hack_exp,this.hack_mult*this.calculateAscensionMult(this.hack_asc_points)),this.str=this.calculateSkill(this.str_exp,this.str_mult*this.calculateAscensionMult(this.str_asc_points)),this.def=this.calculateSkill(this.def_exp,this.def_mult*this.calculateAscensionMult(this.def_asc_points)),this.dex=this.calculateSkill(this.dex_exp,this.dex_mult*this.calculateAscensionMult(this.dex_asc_points)),this.agi=this.calculateSkill(this.agi_exp,this.agi_mult*this.calculateAscensionMult(this.agi_asc_points)),this.cha=this.calculateSkill(this.cha_exp,this.cha_mult*this.calculateAscensionMult(this.cha_asc_points))}calculatePower(){return(this.hack+this.str+this.def+this.dex+this.agi+this.cha)/95}assignToTask(e){return Object.hasOwn(r.H,e)?(this.task=e,!0):(this.task="Unassigned",!1)}unassignFromTask(){this.task="Unassigned"}getTask(){return this.task instanceof a.u&&(this.task=this.task.name),Object.hasOwn(r.H,this.task)?r.H[this.task]:r.H.Unassigned}calculateRespectGain(e){const t=this.getTask(),n={respect:e.respect,wantedLevel:e.wanted,territory:e.getTerritory()};return(0,l.qo)(n,this,t)}calculateWantedLevelGain(e){const t=this.getTask(),n={respect:e.respect,wantedLevel:e.wanted,territory:e.getTerritory()};return(0,l.QS)(n,this,t)}calculateMoneyGain(e){const t=this.getTask(),n={respect:e.respect,wantedLevel:e.wanted,territory:e.getTerritory()};return(0,l.Ym)(n,this,t)}expMult(){return{hack:(this.hack_mult-1)/4+1,str:(this.str_mult-1)/4+1,def:(this.def_mult-1)/4+1,dex:(this.dex_mult-1)/4+1,agi:(this.agi_mult-1)/4+1,cha:(this.cha_mult-1)/4+1}}gainExperience(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const t=this.getTask();if(t===r.H.Unassigned)return;const n=Math.pow(t.difficulty,.9)*e,a=1500,o=this.expMult();this.hack_exp+=t.hackWeight/a*n*o.hack*this.calculateAscensionMult(this.hack_asc_points),this.str_exp+=t.strWeight/a*n*o.str*this.calculateAscensionMult(this.str_asc_points),this.def_exp+=t.defWeight/a*n*o.def*this.calculateAscensionMult(this.def_asc_points),this.dex_exp+=t.dexWeight/a*n*o.dex*this.calculateAscensionMult(this.dex_asc_points),this.agi_exp+=t.agiWeight/a*n*o.agi*this.calculateAscensionMult(this.agi_asc_points),this.cha_exp+=t.chaWeight/a*n*o.cha*this.calculateAscensionMult(this.cha_asc_points)}earnRespect(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;const n=this.calculateRespectGain(t)*e;return this.earnedRespect+=n,n}getGainedAscensionPoints(){return{hack:(0,l.NB)(this.hack_exp),str:(0,l.NB)(this.str_exp),def:(0,l.NB)(this.def_exp),dex:(0,l.NB)(this.dex_exp),agi:(0,l.NB)(this.agi_exp),cha:(0,l.NB)(this.cha_exp)}}canAscend(){const e=this.getGainedAscensionPoints();return e.hack>0||e.str>0||e.def>0||e.dex>0||e.agi>0||e.cha>0}getCurrentAscensionMults(){return{hack:this.calculateAscensionMult(this.hack_asc_points),str:this.calculateAscensionMult(this.str_asc_points),def:this.calculateAscensionMult(this.def_asc_points),dex:this.calculateAscensionMult(this.dex_asc_points),agi:this.calculateAscensionMult(this.agi_asc_points),cha:this.calculateAscensionMult(this.cha_asc_points)}}getAscensionMultsAfterAscend(){const e=this.getGainedAscensionPoints();return{hack:this.calculateAscensionMult(this.hack_asc_points+e.hack),str:this.calculateAscensionMult(this.str_asc_points+e.str),def:this.calculateAscensionMult(this.def_asc_points+e.def),dex:this.calculateAscensionMult(this.dex_asc_points+e.dex),agi:this.calculateAscensionMult(this.agi_asc_points+e.agi),cha:this.calculateAscensionMult(this.cha_asc_points+e.cha)}}getAscensionResults(){const e=this.getAscensionMultsAfterAscend(),t=this.getCurrentAscensionMults();return{hack:e.hack/t.hack,str:e.str/t.str,def:e.def/t.def,dex:e.dex/t.dex,agi:e.agi/t.agi,cha:e.cha/t.cha}}ascend(){const e=this.getAscensionResults(),t=this.getGainedAscensionPoints();this.hack_asc_points+=t.hack,this.str_asc_points+=t.str,this.def_asc_points+=t.def,this.dex_asc_points+=t.dex,this.agi_asc_points+=t.agi,this.cha_asc_points+=t.cha,this.upgrades.length=0,this.hack_mult=1,this.str_mult=1,this.def_mult=1,this.dex_mult=1,this.agi_mult=1,this.cha_mult=1;for(let e=0;e{"use strict";n.d(t,{u:()=>a});class a{constructor(e,t,n,a,r){this.name=e,this.desc=t,this.isHacking=n,this.isCombat=a,this.baseRespect=r.baseRespect?r.baseRespect:0,this.baseWanted=r.baseWanted?r.baseWanted:0,this.baseMoney=r.baseMoney?r.baseMoney:0,this.hackWeight=r.hackWeight?r.hackWeight:0,this.strWeight=r.strWeight?r.strWeight:0,this.defWeight=r.defWeight?r.defWeight:0,this.dexWeight=r.dexWeight?r.dexWeight:0,this.agiWeight=r.agiWeight?r.agiWeight:0,this.chaWeight=r.chaWeight?r.chaWeight:0,100!=Math.round(this.hackWeight+this.strWeight+this.defWeight+this.dexWeight+this.agiWeight+this.chaWeight)&&console.error(`GangMemberTask ${this.name} weights do not add up to 100`),this.difficulty=r.difficulty?r.difficulty:1,this.territory=r.territory?r.territory:{money:1,respect:1,wanted:1}}}},99225:(e,t,n)=>{"use strict";n.d(t,{H:()=>o});var a=n(7101),r=n(45089);const o={};a.b.forEach((e=>{o[e.name]=new r.u(e.name,e.desc,e.isHacking,e.isCombat,e.params)}))},40777:(e,t,n)=>{"use strict";n.d(t,{H:()=>o});var a=n(60188),r=n(22115);class o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.T.Weapon,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};this.name=e,this.cost=t,this.type=n,this.mults=o,this.desc="",r.$i.subscribe((()=>this.desc=this.createDescription()))}createDescription(){const e=["Effects:"];return null!=this.mults.str&&(e.push(`+${(0,r.T3)(this.mults.str-1,0)} strength skill`),e.push(`+${(0,r.T3)((this.mults.str-1)/4,2)} strength exp`)),null!=this.mults.def&&(e.push(`+${(0,r.T3)(this.mults.def-1,0)} defense skill`),e.push(`+${(0,r.T3)((this.mults.def-1)/4,2)} defense exp`)),null!=this.mults.dex&&(e.push(`+${(0,r.T3)(this.mults.dex-1,0)} dexterity skill`),e.push(`+${(0,r.T3)((this.mults.dex-1)/4,2)} dexterity exp`)),null!=this.mults.agi&&(e.push(`+${(0,r.T3)(this.mults.agi-1,0)} agility skill`),e.push(`+${(0,r.T3)((this.mults.agi-1)/4,2)} agility exp`)),null!=this.mults.cha&&(e.push(`+${(0,r.T3)(this.mults.cha-1,0)} charisma skill`),e.push(`+${(0,r.T3)((this.mults.cha-1)/4,2)} charisma exp`)),null!=this.mults.hack&&(e.push(`+${(0,r.T3)(this.mults.hack-1,0)} hacking skill`),e.push(`+${(0,r.T3)((this.mults.hack-1)/4,2)} hacking exp`)),e.join("
")}getType(){switch(this.type){case a.T.Weapon:return"Weapon";case a.T.Armor:return"Armor";case a.T.Vehicle:return"Vehicle";case a.T.Rootkit:return"Rootkit";case a.T.Augmentation:return"Augmentation";default:return""}}}},59018:(e,t,n)=>{"use strict";n.d(t,{o:()=>o});var a=n(60188),r=n(40777);const o={};a.L.forEach((e=>{o[e.name]=new r.H(e.name,e.cost,e.upgType,e.mults)}))},87811:(e,t,n)=>{"use strict";n.d(t,{m:()=>o});var a=n(72938),r=n(33244);const o={numFreeMembers:3,recruitThresholdBase:5,GangRespectToReputationRatio:75,MaximumGangMembers:12,CyclesPerTerritoryAndPowerUpdate:100,AscensionMultiplierRatio:.15,Names:[r.FactionName.SlumSnakes,r.FactionName.Tetrads,r.FactionName.TheSyndicate,r.FactionName.TheDarkArmy,r.FactionName.SpeakersForTheDead,r.FactionName.NiteSec,r.FactionName.TheBlackHand],GangKarmaRequirement:-54e3,minCyclesToProcess:2e3/a.t.MilliPerCycle,maxCyclesToProcess:5e3/a.t.MilliPerCycle}},56138:(e,t,n)=>{"use strict";n.d(t,{K:()=>r});var a=n(33244);const r={[a.FactionName.SlumSnakes]:1,[a.FactionName.Tetrads]:2,[a.FactionName.TheSyndicate]:2,[a.FactionName.TheDarkArmy]:2,[a.FactionName.SpeakersForTheDead]:5,[a.FactionName.NiteSec]:2,[a.FactionName.TheBlackHand]:5}},7101:(e,t,n)=>{"use strict";n.d(t,{b:()=>a});const a=[{desc:"This gang member is currently idle",isCombat:!0,isHacking:!0,name:"Unassigned",params:{hackWeight:100}},{desc:"Assign this gang member to create and distribute ransomware

Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!1,isHacking:!0,name:"Ransomware",params:{baseRespect:5e-5,baseWanted:1e-4,baseMoney:3,hackWeight:100,difficulty:1}},{desc:"Assign this gang member to attempt phishing scams and attacks

Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!1,isHacking:!0,name:"Phishing",params:{baseRespect:8e-5,baseWanted:.003,baseMoney:7.5,hackWeight:85,chaWeight:15,difficulty:3.5}},{desc:"Assign this gang member to attempt identity theft

Earns money - Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"Identity Theft",params:{baseRespect:1e-4,baseWanted:.075,baseMoney:18,hackWeight:80,chaWeight:20,difficulty:5}},{desc:"Assign this gang member to carry out DDoS attacks

Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"DDoS Attacks",params:{baseRespect:4e-4,baseWanted:.2,hackWeight:100,difficulty:8}},{desc:"Assign this gang member to create and distribute malicious viruses

Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"Plant Virus",params:{baseRespect:6e-4,baseWanted:.4,hackWeight:100,difficulty:12}},{desc:"Assign this gang member to commit financial fraud and digital counterfeiting

Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!1,isHacking:!0,name:"Fraud & Counterfeiting",params:{baseRespect:4e-4,baseWanted:.3,baseMoney:45,hackWeight:80,chaWeight:20,difficulty:20}},{desc:"Assign this gang member to launder money

Earns money - Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"Money Laundering",params:{baseRespect:.001,baseWanted:1.25,baseMoney:360,hackWeight:75,chaWeight:25,difficulty:25}},{desc:"Assign this gang member to commit acts of cyberterrorism

Greatly increases respect - Greatly increases wanted level",isCombat:!1,isHacking:!0,name:"Cyberterrorism",params:{baseRespect:.01,baseWanted:6,hackWeight:80,chaWeight:20,difficulty:36}},{desc:"Assign this gang member to be an ethical hacker for corporations

Earns money - Lowers wanted level",isCombat:!1,isHacking:!0,name:"Ethical Hacking",params:{baseWanted:-.001,baseMoney:3,hackWeight:90,chaWeight:10,difficulty:1}},{desc:"Assign this gang member to mug random people on the streets

Earns money - Slightly increases respect - Very slightly increases wanted level",isCombat:!0,isHacking:!1,name:"Mug People",params:{baseRespect:5e-5,baseWanted:5e-5,baseMoney:3.6,strWeight:25,defWeight:25,dexWeight:25,agiWeight:10,chaWeight:15,difficulty:1}},{desc:"Assign this gang member to sell drugs

Earns money - Slightly increases respect - Slightly increases wanted level - Scales slightly with territory",isCombat:!0,isHacking:!1,name:"Deal Drugs",params:{baseRespect:6e-5,baseWanted:.002,baseMoney:15,agiWeight:20,dexWeight:20,chaWeight:60,difficulty:3.5,territory:{money:1.2,respect:1,wanted:1.15}}},{desc:"Assign this gang member to extort civilians in your territory

Earns money - Slightly increases respect - Increases wanted - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Strongarm Civilians",params:{baseRespect:4e-5,baseWanted:.02,baseMoney:7.5,hackWeight:10,strWeight:25,defWeight:25,dexWeight:20,agiWeight:10,chaWeight:10,difficulty:5,territory:{money:1.6,respect:1.1,wanted:1.5}}},{desc:"Assign this gang member to run cons

Earns money - Increases respect - Increases wanted level",isCombat:!0,isHacking:!1,name:"Run a Con",params:{baseRespect:12e-5,baseWanted:.05,baseMoney:45,strWeight:5,defWeight:5,agiWeight:25,dexWeight:25,chaWeight:40,difficulty:14}},{desc:"Assign this gang member to commit armed robbery on stores, banks and armored cars

Earns money - Increases respect - Increases wanted level",isCombat:!0,isHacking:!1,name:"Armed Robbery",params:{baseRespect:14e-5,baseWanted:.1,baseMoney:114,hackWeight:20,strWeight:15,defWeight:15,agiWeight:10,dexWeight:20,chaWeight:20,difficulty:20}},{desc:"Assign this gang member to traffick illegal arms

Earns money - Increases respect - Increases wanted level - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Traffick Illegal Arms",params:{baseRespect:2e-4,baseWanted:.24,baseMoney:174,hackWeight:15,strWeight:20,defWeight:20,dexWeight:20,chaWeight:25,difficulty:32,territory:{money:1.4,respect:1.3,wanted:1.25}}},{desc:"Assign this gang member to threaten and blackmail high-profile targets

Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!0,isHacking:!1,name:"Threaten & Blackmail",params:{baseRespect:2e-4,baseWanted:.125,baseMoney:72,hackWeight:25,strWeight:25,dexWeight:25,chaWeight:25,difficulty:28}},{desc:"Assign this gang member to engage in human trafficking operations

Earns money - Increases respect - Increases wanted level - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Human Trafficking",params:{baseRespect:.004,baseWanted:1.25,baseMoney:360,hackWeight:30,strWeight:5,defWeight:5,dexWeight:30,chaWeight:30,difficulty:36,territory:{money:1.5,respect:1.5,wanted:1.6}}},{desc:"Assign this gang member to commit acts of terrorism

Greatly increases respect - Greatly increases wanted level - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Terrorism",params:{baseRespect:.01,baseWanted:6,hackWeight:20,strWeight:20,defWeight:20,dexWeight:20,chaWeight:20,difficulty:36,territory:{money:1,respect:2,wanted:2}}},{desc:"Assign this gang member to be a vigilante and protect the city from criminals

Decreases wanted level",isCombat:!0,isHacking:!0,name:"Vigilante Justice",params:{baseWanted:-.001,hackWeight:20,strWeight:20,defWeight:20,dexWeight:20,agiWeight:20,difficulty:1,territory:{money:1,respect:1,wanted:.9}}},{desc:"Assign this gang member to increase their combat stats (str, def, dex, agi)",isCombat:!0,isHacking:!0,name:"Train Combat",params:{strWeight:25,defWeight:25,dexWeight:25,agiWeight:25,difficulty:100}},{desc:"Assign this gang member to train their hacking skills",isCombat:!0,isHacking:!0,name:"Train Hacking",params:{hackWeight:100,difficulty:45}},{desc:"Assign this gang member to train their charisma",isCombat:!0,isHacking:!0,name:"Train Charisma",params:{chaWeight:100,difficulty:8}},{desc:"Members assigned to this task increase your gang's power. They will also fight for territory if 'Territory Clashes' are enabled.

Gang members performing this task can be killed during clashes.",isCombat:!0,isHacking:!0,name:"Territory Warfare",params:{hackWeight:15,strWeight:20,defWeight:20,dexWeight:20,agiWeight:20,chaWeight:5,difficulty:5}}]},60188:(e,t,n)=>{"use strict";let a;n.d(t,{L:()=>r,T:()=>a}),function(e){e.Weapon="w",e.Armor="a",e.Vehicle="v",e.Rootkit="r",e.Augmentation="g"}(a||(a={}));const r=[{cost:1e6,mults:{str:1.04,def:1.04},name:"Baseball Bat",upgType:a.Weapon},{cost:12e6,mults:{str:1.08,def:1.08,dex:1.08},name:"Katana",upgType:a.Weapon},{cost:25e6,mults:{str:1.1,def:1.1,dex:1.1,agi:1.1},name:"Glock 18C",upgType:a.Weapon},{cost:5e7,mults:{str:1.12,def:1.1,agi:1.1},name:"P90C",upgType:a.Weapon},{cost:6e7,mults:{str:1.2,def:1.15},name:"Steyr AUG",upgType:a.Weapon},{cost:1e8,mults:{str:1.25,def:1.2},name:"AK-47",upgType:a.Weapon},{cost:15e7,mults:{str:1.3,def:1.25},name:"M15A10 Assault Rifle",upgType:a.Weapon},{cost:225e6,mults:{str:1.3,dex:1.25,agi:1.3},name:"AWM Sniper Rifle",upgType:a.Weapon},{cost:2e6,mults:{def:1.04},name:"Bulletproof Vest",upgType:a.Armor},{cost:5e6,mults:{def:1.08},name:"Full Body Armor",upgType:a.Armor},{cost:25e6,mults:{def:1.15,agi:1.15},name:"Liquid Body Armor",upgType:a.Armor},{cost:4e7,mults:{def:1.2},name:"Graphene Plating Armor",upgType:a.Armor},{cost:3e6,mults:{agi:1.04,cha:1.04},name:"Ford Flex V20",upgType:a.Vehicle},{cost:9e6,mults:{agi:1.08,cha:1.08},name:"ATX1070 Superbike",upgType:a.Vehicle},{cost:18e6,mults:{agi:1.12,cha:1.12},name:"Mercedes-Benz S9001",upgType:a.Vehicle},{cost:3e7,mults:{agi:1.16,cha:1.16},name:"White Ferrari",upgType:a.Vehicle},{cost:5e6,mults:{hack:1.05},name:"NUKE Rootkit",upgType:a.Rootkit},{cost:25e6,mults:{hack:1.1},name:"Soulstealer Rootkit",upgType:a.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Demon Rootkit",upgType:a.Rootkit},{cost:4e7,mults:{hack:1.12},name:"Hmap Node",upgType:a.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Jack the Ripper",upgType:a.Rootkit},{cost:1e10,mults:{str:1.3,dex:1.3},name:"Bionic Arms",upgType:a.Augmentation},{cost:1e10,mults:{agi:1.6},name:"Bionic Legs",upgType:a.Augmentation},{cost:15e9,mults:{str:1.15,def:1.15,dex:1.15,agi:1.15},name:"Bionic Spine",upgType:a.Augmentation},{cost:2e10,mults:{str:1.4,def:1.4},name:"BrachiBlades",upgType:a.Augmentation},{cost:12e9,mults:{str:1.2,def:1.2},name:"Nanofiber Weave",upgType:a.Augmentation},{cost:25e9,mults:{str:1.5,agi:1.5},name:"Synthetic Heart",upgType:a.Augmentation},{cost:15e9,mults:{str:1.3,def:1.3},name:"Synfibril Muscle",upgType:a.Augmentation},{cost:5e9,mults:{hack:1.05},name:"BitWire",upgType:a.Augmentation},{cost:1e10,mults:{hack:1.15},name:"Neuralstimulator",upgType:a.Augmentation},{cost:75e8,mults:{hack:1.1},name:"DataJack",upgType:a.Augmentation},{cost:5e10,mults:{str:1.7,def:1.7},name:"Graphene Bone Lacings",upgType:a.Augmentation}]},21320:(e,t,n)=>{"use strict";n.d(t,{NB:()=>l,QS:()=>i,Ym:()=>s,_r:()=>c,mT:()=>r,qo:()=>o});var a=n(97740);function r(e){return e.respect/(e.respect+e.wantedLevel)}function o(e,t,n){if(0===n.baseRespect)return 0;let o=n.hackWeight/100*t.hack+n.strWeight/100*t.str+n.defWeight/100*t.def+n.dexWeight/100*t.dex+n.agiWeight/100*t.agi+n.chaWeight/100*t.cha;if(o-=4*n.difficulty,o<=0)return 0;const i=Math.max(.005,Math.pow(100*e.territory,n.territory.respect)/100),s=(.2*e.territory+.8)*a.dQ.GangSoftcap;if(isNaN(i)||i<=0)return 0;const l=r(e);return Math.pow(11*n.baseRespect*o*i*l,s)}function i(e,t,n){if(0===n.baseWanted)return 0;let a=n.hackWeight/100*t.hack+n.strWeight/100*t.str+n.defWeight/100*t.def+n.dexWeight/100*t.dex+n.agiWeight/100*t.agi+n.chaWeight/100*t.cha;if(a-=3.5*n.difficulty,a<=0)return 0;const r=Math.max(.005,Math.pow(100*e.territory,n.territory.wanted)/100);if(isNaN(r)||r<=0)return 0;if(n.baseWanted<0)return.4*n.baseWanted*a*r;const o=7*n.baseWanted/Math.pow(3*a*r,.8);return Math.min(100,o)}function s(e,t,n){if(0===n.baseMoney)return 0;let o=n.hackWeight/100*t.hack+n.strWeight/100*t.str+n.defWeight/100*t.def+n.dexWeight/100*t.dex+n.agiWeight/100*t.agi+n.chaWeight/100*t.cha;if(o-=3.2*n.difficulty,o<=0)return 0;const i=Math.max(.005,Math.pow(100*e.territory,n.territory.money)/100);if(isNaN(i)||i<=0)return 0;const s=r(e),l=(.2*e.territory+.8)*a.dQ.GangSoftcap;return Math.pow(5*n.baseMoney*o*i*s,l)}function l(e){return Math.max(e-1e3,0)}function c(e){return Math.max(Math.pow(e/2e3,.5),1)}},36719:(e,t,n)=>{"use strict";n.d(t,{J:()=>f});var a=n(67294),r=n(81138),o=n(56798),i=n(22115),s=n(39463),l=n(48672),c=n(81284),u=n(88775),m=n(49173);function f(e){let{open:t,onClose:n,member:f,onAscend:h}=e;const d=(0,c.z)();(0,u.S)(1e3),(0,a.useEffect)((()=>n),[n]);const p=f.getCurrentAscensionMults(),g=f.getAscensionMultsAfterAscend();return a.createElement(l.u,{open:t,onClose:n},a.createElement(r.Z,null,"Are you sure you want to ascend this member? They will lose all of",a.createElement("br",null),"their non-Augmentation upgrades and their stats will reset back to 1.",a.createElement("br",null),f.earnedRespect>0&&a.createElement("div",null,a.createElement("br",null),"Furthermore, your gang will lose ",(0,i.mP)(f.earnedRespect)," respect.",a.createElement("br",null)),a.createElement("br",null),"In return, ",f.name," will gain the following permanent boost to stat multipliers:",a.createElement("br",null),a.createElement("br",null),"Hacking: x",(0,i.td)(p.hack)," => x",(0,i.td)(g.hack),a.createElement("br",null),"Strength: x",(0,i.td)(p.str)," => x",(0,i.td)(g.str),a.createElement("br",null),"Defense: x",(0,i.td)(p.def)," => x",(0,i.td)(g.def),a.createElement("br",null),"Dexterity: x",(0,i.td)(p.dex)," => x",(0,i.td)(g.dex),a.createElement("br",null),"Agility: x",(0,i.td)(p.agi)," => x",(0,i.td)(g.agi),a.createElement("br",null),"Charisma: x",(0,i.td)(p.cha)," => x",(0,i.td)(g.cha),a.createElement("br",null),a.createElement("br",null)),a.createElement(o.Z,{onClick:function(){var e;h();const t=d.ascendMember(f);(0,s.X)(a.createElement(a.Fragment,null,f.name," ascended!",a.createElement("br",null),t.respect>0&&a.createElement("div",null,a.createElement("br",null),"Your gang, ",null===(e=m.J5.gang)||void 0===e?void 0:e.facName,", lost ",(0,i.mP)(t.respect)," respect.",a.createElement("br",null)),a.createElement("br",null),f.name," gained the following stat multipliers for ascending:",a.createElement("br",null),a.createElement("br",null),"Hacking: x",(0,i.td)(t.hack),a.createElement("br",null),"Strength: x",(0,i.td)(t.str),a.createElement("br",null),"Defense: x",(0,i.td)(t.def),a.createElement("br",null),"Dexterity: x",(0,i.td)(t.dex),a.createElement("br",null),"Agility: x",(0,i.td)(t.agi),a.createElement("br",null),"Charisma: x",(0,i.td)(t.cha),a.createElement("br",null))),n()}},"Ascend"),a.createElement(o.Z,{onClick:n},"Cancel"))}},86400:(e,t,n)=>{"use strict";n.d(t,{k:()=>c});var a=n(67294),r=n(72938),o=n(49802),i=n(81138),s=n(17575),l=n(30120);function c(e){const t=1e3/r.t.MilliPerCycle;if(e.gang.storedCycles/t*1e3<=5e3)return a.createElement(a.Fragment,null);const n=e.gang.storedCycles/t*1e3;return a.createElement(l.Z,{display:"flex"},a.createElement(s.Z,{title:a.createElement(i.Z,null,"You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by the browser). Bonus time makes the Gang mechanic progress faster, up to 25x the normal speed.")},a.createElement(i.Z,null,"Bonus time: ",(0,o.UF)(n))))}},81284:(e,t,n)=>{"use strict";n.d(t,{_:()=>r,z:()=>o});var a=n(67294);const r={Gang:a.createContext({})},o=()=>(0,a.useContext)(r.Gang)},65085:(e,t,n)=>{"use strict";n.d(t,{M:()=>A});var a=n(67294),r=n(81284),o=n(81138),i=n(56798),s=n(17575),l=n(30120),c=n(28881),u=n(26023),m=n(47542),f=n(46948),h=n(98649),d=n(66351),p=n(42761),g=n(22115),y=n(59018),b=n(72360),v=n(60188),k=n(49173),w=n(51087),E=n(21927),S=n(88775);function C(e){const t=(0,r.z)(),n=Object.keys(y.o).filter((n=>{const a=y.o[n];return!(k.J5.money>t.getUpgradeCost(a)||a.type!==e.type||e.upgrades.includes(n))})).map((e=>y.o[e]));return 0===n.length?a.createElement(a.Fragment,null):a.createElement(o.Z,null,"Next at ",a.createElement(b.W,{money:t.getUpgradeCost(n[0])}))}function x(e){let{upgName:t}=e;const n=y.o[t];return a.createElement(c.Z,{sx:{p:1}},a.createElement(s.Z,{title:a.createElement(o.Z,{dangerouslySetInnerHTML:{__html:n.desc}})},a.createElement(o.Z,null,n.name)))}function N(e){const t=(0,r.z)();return a.createElement(s.Z,{title:a.createElement(o.Z,{dangerouslySetInnerHTML:{__html:e.upg.desc}})},a.createElement("span",null,a.createElement(i.Z,{onClick:function(){e.member.buyUpgrade(e.upg),e.rerender()},sx:{display:"flex",flexDirection:"column",width:"100%",height:"100%"}},a.createElement(o.Z,{sx:{display:"block"}},e.upg.name),a.createElement(b.W,{money:t.getUpgradeCost(e.upg)}))))}function M(e){const t=(0,r.z)(),n=(0,S.S)(),[i,d]=(0,a.useState)("Weapons");function p(e,n){return Object.keys(y.o).filter((a=>{const r=y.o[a];return!(k.J5.moneyy.o[e]))}const b=p(e.member.upgrades,v.T.Weapon),M=p(e.member.upgrades,v.T.Armor),A=p(e.member.upgrades,v.T.Vehicle),T=p(e.member.upgrades,v.T.Rootkit),L=p(e.member.augmentations,v.T.Augmentation),R={Weapons:[b,v.T.Weapon],Armor:[M,v.T.Armor],Vehicles:[A,v.T.Vehicle],Rootkits:[T,v.T.Rootkit],Augmentations:[L,v.T.Augmentation]},F={hack:e.member.calculateAscensionMult(e.member.hack_asc_points),str:e.member.calculateAscensionMult(e.member.str_asc_points),def:e.member.calculateAscensionMult(e.member.def_asc_points),dex:e.member.calculateAscensionMult(e.member.dex_asc_points),agi:e.member.calculateAscensionMult(e.member.agi_asc_points),cha:e.member.calculateAscensionMult(e.member.cha_asc_points)};return a.createElement(c.Z,null,a.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr",m:1,gap:1}},a.createElement("span",null,a.createElement(o.Z,{variant:"h5",color:"primary"},e.member.name," (",e.member.task,")"),a.createElement(s.Z,{title:a.createElement(o.Z,null,"Hk: x",(0,g.WJ)(e.member.hack_mult*F.hack),"(x",(0,g.WJ)(e.member.hack_mult)," Eq, x",(0,g.WJ)(F.hack)," Asc)",a.createElement("br",null),"St: x",(0,g.WJ)(e.member.str_mult*F.str),"(x",(0,g.WJ)(e.member.str_mult)," Eq, x",(0,g.WJ)(F.str)," Asc)",a.createElement("br",null),"Df: x",(0,g.WJ)(e.member.def_mult*F.def),"(x",(0,g.WJ)(e.member.def_mult)," Eq, x",(0,g.WJ)(F.def)," Asc)",a.createElement("br",null),"Dx: x",(0,g.WJ)(e.member.dex_mult*F.dex),"(x",(0,g.WJ)(e.member.dex_mult)," Eq, x",(0,g.WJ)(F.dex)," Asc)",a.createElement("br",null),"Ag: x",(0,g.WJ)(e.member.agi_mult*F.agi),"(x",(0,g.WJ)(e.member.agi_mult)," Eq, x",(0,g.WJ)(F.agi)," Asc)",a.createElement("br",null),"Ch: x",(0,g.WJ)(e.member.cha_mult*F.cha),"(x",(0,g.WJ)(e.member.cha_mult)," Eq, x",(0,g.WJ)(F.cha)," Asc)")},a.createElement(m.Z,null,a.createElement(f.Z,null,a.createElement(E.j,{name:"Hacking",color:w.Z.theme.hack,data:{level:e.member.hack,exp:e.member.hack_exp}}),a.createElement(E.j,{name:"Strength",color:w.Z.theme.combat,data:{level:e.member.str,exp:e.member.str_exp}}),a.createElement(E.j,{name:"Defense",color:w.Z.theme.combat,data:{level:e.member.def,exp:e.member.def_exp}}),a.createElement(E.j,{name:"Dexterity",color:w.Z.theme.combat,data:{level:e.member.dex,exp:e.member.dex_exp}}),a.createElement(E.j,{name:"Agility",color:w.Z.theme.combat,data:{level:e.member.agi,exp:e.member.agi_exp}}),a.createElement(E.j,{name:"Charisma",color:w.Z.theme.cha,data:{level:e.member.cha,exp:e.member.cha_exp}}))))),a.createElement("span",null,a.createElement(u.Z,{onChange:e=>{d(e.target.value),n()},value:i,sx:{width:"100%",mb:1}},Object.keys(R).map(((e,t)=>a.createElement(h.Z,{key:t+1,value:e},a.createElement(o.Z,{variant:"h6"},e))))),a.createElement(l.Z,{sx:{width:"100%"}},0===R[i][0].length&&a.createElement(o.Z,null,"All upgrades owned!"),a.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr"}},R[i][0].map((t=>a.createElement(N,{key:t.name,rerender:n,member:e.member,upg:t})))),a.createElement(C,{type:R[i][1],upgrades:e.member.upgrades})))),a.createElement(o.Z,{sx:{mx:1}},"Purchased Upgrades: "),a.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"repeat(4, 1fr)",m:1}},e.member.upgrades.map((e=>a.createElement(x,{key:e,upgName:e}))),e.member.augmentations.map((e=>a.createElement(x,{key:e,upgName:e})))))}function A(){const e=(0,r.z)(),[t,n]=(0,a.useState)(""),i=e.members.filter((e=>e&&e.name.toLowerCase().includes(t)));return a.createElement(a.Fragment,null,a.createElement(s.Z,{title:a.createElement(o.Z,null,"A discount on equipment and upgrades based on your gang's respect and power. More respect and power leads to more discounts.")},a.createElement(o.Z,{sx:{m:1}},"Discount: -",(0,g.T3)(1-1/e.getDiscount()))),a.createElement(d.Z,{value:t,onChange:e=>{n(e.target.value.toLowerCase())},autoFocus:!0,InputProps:{startAdornment:a.createElement(p.Z,null),spellCheck:!1},placeholder:"Filter by member name",sx:{m:1,width:"15%"}}),a.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr",width:"100%"}},i.map((e=>a.createElement(M,{key:e.name,member:e})))))}},78802:(e,t,n)=>{"use strict";n.d(t,{o:()=>l});var a=n(67294),r=n(36777),o=n(30120),i=n(61702),s=n(28881);function l(e){return a.createElement(o.Z,{component:s.Z,sx:{width:"auto"}},a.createElement(o.Z,{sx:{m:1}},a.createElement(i.Z,{primary:a.createElement("b",null,e.member.name)}),a.createElement(r.l,{member:e.member})))}},36777:(e,t,n)=>{"use strict";n.d(t,{l:()=>h});var a=n(67294),r=n(3066),o=n(5546),i=n(36719),s=n(18377),l=n(56798),c=n(81138),u=n(9944),m=n(6248),f=n(88775);function h(e){const t=(0,f.S)(),[n,{on:h,off:d}]=(0,f.k)(!1),[p,{on:g,off:y}]=(0,f.k)(!1);return a.createElement(a.Fragment,null,e.member.canAscend()&&a.createElement(s.Z,{sx:{display:"flex",justifyContent:"space-between",my:1}},a.createElement(l.Z,{onClick:g,style:{flexGrow:1,borderRightWidth:0}},"Ascend"),a.createElement(i.J,{open:p,onClose:y,member:e.member,onAscend:t}),a.createElement(l.Z,{onClick:h,style:{width:"fit-content",borderLeftWidth:0}},a.createElement(u.Z,null)),a.createElement(m.t,{open:n,onClose:d},a.createElement(c.Z,null,"Ascending a Gang Member resets that member's progress and stats in exchange for a permanent boost to their stat multipliers.",a.createElement("br",null),a.createElement("br",null),"The stat boost a Gang Member gains upon ascension is based on the amount of exp they have, and will be shown before you choose to ascend them.",a.createElement("br",null),a.createElement("br",null),"Upon ascension, they will lose all of their non-Augmentation Equipment and your gang will lose respect equal to the total respect earned by that member."))),a.createElement(s.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr",width:"100%",gap:1}},a.createElement(r.f,{member:e.member}),a.createElement(o.o,{onTaskChange:t,member:e.member})))}},50230:(e,t,n)=>{"use strict";n.d(t,{q:()=>m});var a=n(67294),r=n(78802),o=n(70255),i=n(81284),s=n(66351),l=n(30120),c=n(42761),u=n(15460);function m(){const e=(0,i.z)(),t=(0,a.useState)(!1)[1],[n,m]=(0,a.useState)(""),[f,h]=(0,a.useState)(!1),d=e.members.filter((e=>e&&e.name.toLowerCase().includes(n))).filter((e=>!f||e.canAscend()));return a.createElement(a.Fragment,null,a.createElement(o.b,{onRecruit:()=>t((e=>!e))}),a.createElement(s.Z,{value:n,onChange:e=>{m(e.target.value.toLowerCase())},autoFocus:!0,InputProps:{startAdornment:a.createElement(c.Z,null),spellCheck:!1},placeholder:"Filter by member name",sx:{m:1,width:"15%"}}),a.createElement(u.V,{checked:f,onChange:e=>h(e),text:"Show only ascendable",tooltip:a.createElement(a.Fragment,null,"Filter the members list by whether or not the member can be ascended.")}),a.createElement(l.Z,{display:"grid",sx:{gridTemplateColumns:"repeat(2, 1fr)"}},d.map((e=>a.createElement(r.o,{key:e.name,member:e})))))}},3066:(e,t,n)=>{"use strict";n.d(t,{f:()=>g});var a=n(67294),r=n(81284),o=n(81138),i=n(17575),s=n(47542),l=n(46948),c=n(49557),u=n(7272),m=n(22115),f=n(51087),h=n(85882),d=n(21927),p=n(43480);function g(e){const t=(0,p.yK)(),n={hack:e.member.calculateAscensionMult(e.member.hack_asc_points),str:e.member.calculateAscensionMult(e.member.str_asc_points),def:e.member.calculateAscensionMult(e.member.def_asc_points),dex:e.member.calculateAscensionMult(e.member.dex_asc_points),agi:e.member.calculateAscensionMult(e.member.agi_asc_points),cha:e.member.calculateAscensionMult(e.member.cha_asc_points)},g=(0,r.z)(),y=[["Money:",a.createElement(h.G,{key:"money",money:5*e.member.calculateMoneyGain(g)})],["Respect:",`${(0,m.mP)(5*e.member.calculateRespectGain(g))} / sec`],["Wanted Level:",`${(0,m.ZN)(5*e.member.calculateWantedLevelGain(g))} / sec`],["Total Respect:",`${(0,m.mP)(e.member.earnedRespect)}`]];return a.createElement(a.Fragment,null,a.createElement(i.Z,{title:a.createElement(o.Z,null,"Hk: x",(0,m.WJ)(e.member.hack_mult*n.hack),"(x",(0,m.WJ)(e.member.hack_mult)," Eq, x",(0,m.WJ)(n.hack)," Asc)",a.createElement("br",null),"St: x",(0,m.WJ)(e.member.str_mult*n.str),"(x",(0,m.WJ)(e.member.str_mult)," Eq, x",(0,m.WJ)(n.str)," Asc)",a.createElement("br",null),"Df: x",(0,m.WJ)(e.member.def_mult*n.def),"(x",(0,m.WJ)(e.member.def_mult)," Eq, x",(0,m.WJ)(n.def)," Asc)",a.createElement("br",null),"Dx: x",(0,m.WJ)(e.member.dex_mult*n.dex),"(x",(0,m.WJ)(e.member.dex_mult)," Eq, x",(0,m.WJ)(n.dex)," Asc)",a.createElement("br",null),"Ag: x",(0,m.WJ)(e.member.agi_mult*n.agi),"(x",(0,m.WJ)(e.member.agi_mult)," Eq, x",(0,m.WJ)(n.agi)," Asc)",a.createElement("br",null),"Ch: x",(0,m.WJ)(e.member.cha_mult*n.cha),"(x",(0,m.WJ)(e.member.cha_mult)," Eq, x",(0,m.WJ)(n.cha)," Asc)")},a.createElement(s.Z,{sx:{display:"table",mb:1,width:"100%"}},a.createElement(l.Z,null,a.createElement(d.j,{name:"Hacking",color:f.Z.theme.hack,data:{level:e.member.hack,exp:e.member.hack_exp}}),a.createElement(d.j,{name:"Strength",color:f.Z.theme.combat,data:{level:e.member.str,exp:e.member.str_exp}}),a.createElement(d.j,{name:"Defense",color:f.Z.theme.combat,data:{level:e.member.def,exp:e.member.def_exp}}),a.createElement(d.j,{name:"Dexterity",color:f.Z.theme.combat,data:{level:e.member.dex,exp:e.member.dex_exp}}),a.createElement(d.j,{name:"Agility",color:f.Z.theme.combat,data:{level:e.member.agi,exp:e.member.agi_exp}}),a.createElement(d.j,{name:"Charisma",color:f.Z.theme.cha,data:{level:e.member.cha,exp:e.member.cha_exp}}),a.createElement(c.Z,null,a.createElement(u.Z,{classes:{root:t.cellNone}},a.createElement("br",null))),y.map((e=>{let[n,r]=e;return a.createElement(c.Z,{key:n.toString()+r.toString()},a.createElement(u.Z,{classes:{root:t.cellNone}},a.createElement(o.Z,null,n)),a.createElement(u.Z,{align:"right",classes:{root:t.cellNone}},a.createElement(o.Z,null,r)))}))))))}},22527:(e,t,n)=>{"use strict";n.d(t,{m:()=>f});var a=n(67294),r=n(89155),o=n(1374),i=n(65085),s=n(49173),l=n(81284),c=n(94004),u=n(30527),m=n(88775);function f(){const e=function(){if(null===s.J5.gang)throw new Error("Gang should not be null");return s.J5.gang}(),[t,n]=a.useState(0);return(0,m.S)(200),a.createElement(l._.Gang.Provider,{value:e},a.createElement(c.Z,{variant:"fullWidth",value:t,onChange:function(e,t){n(t)},sx:{minWidth:"fit-content",maxWidth:"45%"}},a.createElement(u.Z,{label:"Management"}),a.createElement(u.Z,{label:"Equipment"}),a.createElement(u.Z,{label:"Territory"})),0===t&&a.createElement(r.p,null),1===t&&a.createElement(i.M,null),2===t&&a.createElement(o.p,null))}},69801:(e,t,n)=>{"use strict";n.d(t,{S:()=>d});var a=n(67294),r=n(58427),o=n(22115),i=n(85882),s=n(17365),l=n(59471),c=n(86400),u=n(81284),m=n(81138),f=n(17575),h=n(30120);function d(){const e=(0,u.z)(),t=100*l.vS[e.facName].territory;let n;return n=t<=0?(0,o.$j)(0,2):t>=100?(0,o.$j)(100,2):(0,o.$j)(t,2),a.createElement(a.Fragment,null,a.createElement(h.Z,{display:"flex"},a.createElement(f.Z,{title:a.createElement(m.Z,null,"Represents the amount of respect your gang has from other gangs and criminal organizations. Your respect affects the amount of money your gang members will earn, and also determines how much reputation you are earning with your gang's corresponding Faction.")},a.createElement(m.Z,null,"Respect: ",(0,o.mP)(e.respect)," (",(0,o.mP)(5*e.respectGainRate)," / sec)"))),a.createElement(h.Z,{display:"flex"},a.createElement(f.Z,{title:a.createElement(m.Z,null,"Represents how much the gang is wanted by law enforcement. The higher your gang's wanted level, the harder it will be for your gang members to make money and earn respect. Note that the minimum wanted level is 1.")},a.createElement(m.Z,null,"Wanted Level: ",(0,o.ZN)(e.wanted)," (",(0,o.ZN)(5*e.wantedGainRate)," / sec)"))),a.createElement(h.Z,{display:"flex"},a.createElement(f.Z,{title:a.createElement(m.Z,null,"Penalty for respect and money gain rates due to Wanted Level")},a.createElement(m.Z,null,"Wanted Level Penalty: -",(0,o.$j)(100*(1-e.getWantedPenalty()),2),"%"))),a.createElement(m.Z,null,"Money gain rate: ",a.createElement(i.G,{money:5*e.moneyGainRate})),a.createElement(h.Z,{display:"flex"},a.createElement(f.Z,{title:a.createElement(m.Z,null,"The percentage of total territory your Gang controls")},a.createElement(m.Z,null,"Territory: ",n,"%"))),a.createElement(m.Z,null,"Faction reputation: ",a.createElement(s.Y,{reputation:r.i[e.facName].playerReputation})),a.createElement(c.k,{gang:e}))}},89155:(e,t,n)=>{"use strict";n.d(t,{p:()=>m});var a=n(67294),r=n(69801),o=n(50230),i=n(81284),s=n(81138),l=n(29919),c=n(16056),u=n(17575);function m(){const e=(0,i.z)();return a.createElement(a.Fragment,null,a.createElement(s.Z,{variant:"h4",color:"primary"},e.facName," (your Gang)"),a.createElement(s.Z,null,a.createElement("br",null),"If a gang member is not earning much money or respect, the task you assigned might be too difficult. Consider assigning an easier task, or training them. Tasks closer to the top of the dropdown list are generally easier. Alternatively, low production might be a sign that your wanted level is too high. Consider doing"," ",e.isHackingGang?"Ethical Hacking or ":"","Vigilante Justice to lower your wanted level.",a.createElement("br",null),a.createElement("br",null),"Installing Augmentations does NOT reset progress with your Gang. Furthermore, after installing Augmentations, you will automatically join whatever Faction you created your gang with.",a.createElement("br",null),a.createElement("br",null),"You can also manage your gang programmatically through Netscript using the Gang API."),a.createElement("br",null),a.createElement(r.S,null),a.createElement("br",null),a.createElement(l.Z,{control:a.createElement(c.Z,{checked:e.territoryWarfareEngaged,onChange:t=>e.territoryWarfareEngaged=t.target.checked}),label:a.createElement(u.Z,{title:a.createElement(s.Z,null,'Engaging in Territory Clashes sets your clash chance to 100%. Disengaging will cause your clash chance to gradually decrease until it reaches 0%. See the "Territory" subpage for more information.')},a.createElement(s.Z,null,"Engage in Territory Clashes"))}),a.createElement(o.q,null))}},70255:(e,t,n)=>{"use strict";n.d(t,{b:()=>u});var a=n(67294),r=n(57284),o=n(22115),i=n(81284),s=n(81138),l=n(56798),c=n(30120);function u(e){const t=(0,i.z)(),[n,u]=(0,a.useState)(!1),m=t.getRecruitsAvailable();if(!t.canRecruitMember()){const e=t.respectForNextRecruit();return a.createElement(c.Z,{display:"flex",alignItems:"center",sx:{mx:1}},a.createElement(l.Z,{disabled:!0},"Recruit Gang Member"),e===1/0?a.createElement(s.Z,{sx:{ml:1}},"Maximum gang members already recruited"):a.createElement(s.Z,{sx:{ml:1}},(0,o.mP)(e)," respect needed to recruit next member"))}return a.createElement(a.Fragment,null,a.createElement(c.Z,{display:"flex",alignItems:"center",sx:{mx:1}},a.createElement(l.Z,{onClick:()=>u(!0)},"Recruit Gang Member"),a.createElement(s.Z,{sx:{ml:1}},"Can recruit ",m," more gang member",1===m?"":"s")),a.createElement(r._,{open:n,onClose:()=>u(!1),onRecruit:e.onRecruit}))}},57284:(e,t,n)=>{"use strict";n.d(t,{_:()=>m});var a=n(67294),r=n(48672),o=n(39463),i=n(81284),s=n(81138),l=n(66351),c=n(56798),u=n(81055);function m(e){const t=(0,i.z)(),[n,m]=(0,a.useState)(""),f=""===n||!t.canRecruitMember();function h(){f||(t.recruitMember(n)||""===n?(e.onRecruit(),m(""),e.onClose()):(0,o.X)("You already have a gang member with this name!"))}return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(s.Z,null,"Enter a name for your new Gang Member:"),a.createElement("br",null),a.createElement(l.Z,{autoFocus:!0,onKeyUp:function(e){e.key===u.F.ENTER&&h()},onChange:function(e){m(e.target.value)},type:"text",placeholder:"unique name",spellCheck:"false",InputProps:{endAdornment:a.createElement(c.Z,{disabled:f,onClick:h},"Recruit")}}))}},64034:(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var a=n(67294),r=n(99225),o=n(81138);function i(e){const t=r.H[e.member.task],n=t?t.desc:r.H.Unassigned.desc;return a.createElement(o.Z,{dangerouslySetInnerHTML:{__html:n}})}},5546:(e,t,n)=>{"use strict";n.d(t,{o:()=>c});var a=n(67294),r=n(81284),o=n(64034),i=n(30120),s=n(98649),l=n(26023);function c(e){const t=(0,r.z)(),[n,c]=(0,a.useState)(e.member.task),u=t.members.find((t=>t.name==e.member.name));u&&u.task!=n&&c(u.task);const m=t.getAllTaskNames();return a.createElement(i.Z,null,a.createElement(l.Z,{onChange:function(t){const n=t.target.value;e.member.assignToTask(n),c(n),e.onTaskChange()},value:n,sx:{width:"100%"}},a.createElement(s.Z,{key:0,value:"Unassigned"},"Unassigned"),m.map(((e,t)=>a.createElement(s.Z,{key:t+1,value:e},e)))),a.createElement(o.s,{member:e.member}))}},90884:(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var a=n(67294),r=n(81138),o=n(48672);const i=e=>{let{open:t,onClose:n}=e;return a.createElement(o.u,{open:t,onClose:n},a.createElement(a.Fragment,null,a.createElement(r.Z,{variant:"h4"},"Clashing"),a.createElement(r.Z,null,"Every ~20 seconds, your gang has a chance to 'clash' with other gangs. Your chance to win a clash depends on your gang's power, found in the Territory display or with methods from the Gang API. Your gang's power slowly accumulates over time, determined by the stats of all Gang members you have assigned to the 'Territory Warfare' task. Gang members that are not assigned to this task do not contribute to your gang's power. Your gang also loses a small amount of power whenever you lose a clash.",a.createElement("br",null),a.createElement("br",null),"NOTE: Gang members assigned to 'Territory Warfare' can be killed during clashes. This can happen regardless of whether you win or lose the clash. A gang member being killed results in loss of both respect and power for your gang."),a.createElement("br",null),a.createElement(r.Z,{variant:"h4"},"Territory"),a.createElement(r.Z,null,"The amount of territory you have affects all aspects of your Gang members' production, including money, respect, and wanted level. It is very beneficial to have high territory control.",a.createElement("br",null),a.createElement("br",null),'To increase your chances of winning territory, assign gang members to "Territory Warfare". This will build your gang power. Then, enable "Engage in Territory Clashes" to start fighting over territory.'),a.createElement("br",null),a.createElement(r.Z,{variant:"h4"},"Territory Clash Chance"),a.createElement(r.Z,null,"This percentage represents the chance you have of 'clashing' with another gang. If you do not wish to gain/lose territory, then keep this percentage at 0% by not Engaging in Territory Clashes.")))}},1374:(e,t,n)=>{"use strict";n.d(t,{p:()=>y});var a=n(67294),r=n(78016),o=n(81138),i=n(56798),s=n(30120),l=n(28881),c=n(29919),u=n(16056),m=n(17575),f=n(65301),h=n(22115),d=n(59471),p=n(81284),g=n(90884);function y(){const e=(0,p.z)(),t=Object.keys(d.vS).filter((t=>t!=e.facName)),[n,y]=(0,a.useState)(!1);return a.createElement(r.Z,{disableGutters:!0,maxWidth:"md",sx:{mx:0}},a.createElement(o.Z,null,"This page shows how much territory your Gang controls. This statistic is listed as a percentage, which represents how much of the total territory you control."),a.createElement(i.Z,{onClick:()=>y(!0),sx:{my:1}},a.createElement(f.Z,{sx:{mr:1}}),"About Gang Territory"),a.createElement(s.Z,{component:l.Z,sx:{p:1,mb:1}},a.createElement(o.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},e.facName," (Your gang)"),a.createElement(c.Z,{control:a.createElement(u.Z,{checked:e.territoryWarfareEngaged,onChange:t=>e.territoryWarfareEngaged=t.target.checked}),label:a.createElement(m.Z,{title:a.createElement(o.Z,null,"Engaging in Territory Clashes sets your clash chance to 100%. Disengaging will cause your clash chance to gradually decrease until it reaches 0%.")},a.createElement(o.Z,null,"Engage in Territory Clashes"))}),a.createElement("br",null),a.createElement(c.Z,{control:a.createElement(u.Z,{checked:e.notifyMemberDeath,onChange:t=>e.notifyMemberDeath=t.target.checked}),label:a.createElement(m.Z,{title:a.createElement(o.Z,null,"If this is enabled, you will receive a pop-up notifying you whenever one of your Gang Members dies in a territory clash.")},a.createElement(o.Z,null,"Notify about Gang Member Deaths"))}),a.createElement(o.Z,null,a.createElement("b",null,"Territory Clash Chance:")," ",(0,h.T3)(e.territoryClashChance,3)," ",a.createElement("br",null),a.createElement("b",null,"Power:")," ",(0,h.$j)(d.vS[e.facName].power,3)," ",a.createElement("br",null),a.createElement("b",null,"Territory:")," ",b(d.vS[e.facName].territory),"% ",a.createElement("br",null))),a.createElement(s.Z,{sx:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)"}},t.sort(((e,t)=>d.vS[e].territory<=0&&d.vS[t].territory>0?1:d.vS[e].territory>0&&d.vS[t].territory<=0?-1:0)).map((e=>a.createElement(v,{key:e,name:e})))),a.createElement(g.s,{open:n,onClose:()=>y(!1)}))}function b(e){const t=100*e;return t<=0?(0,h.$j)(0,3):t>=100?(0,h.$j)(100,3):(0,h.$j)(t,3)}function v(e){const t=(0,p.z)(),n=d.vS[t.facName].power,r=d.vS[e.name].power,i=n/(r+n),c=d.vS[e.name].territory,u=c?1:.75;return a.createElement(s.Z,{component:l.Z,sx:{p:1,opacity:u}},a.createElement(o.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},e.name),a.createElement(o.Z,null,a.createElement("b",null,"Power:")," ",(0,h.$j)(r,3)," ",a.createElement("br",null),a.createElement("b",null,"Territory:")," ",b(c),"% ",a.createElement("br",null),a.createElement("b",null,"Clash Win Chance:")," ",(0,h.T3)(i,3)))}},49708:(e,t,n)=>{"use strict";n.d(t,{Md:()=>c,Vp:()=>u,gb:()=>o,iG:()=>i,sI:()=>l,zX:()=>s});var a=n(97740),r=n(46085);function o(e,t){const n=e.hackDifficulty??100,a=e.requiredHackingSkill??1e9;if(!e.hasAdminRights||n>=100)return 0;const o=(100-n)/100,i=1.75*t.skills.hacking,s=(i-a)/i*o*t.mults.hacking_chance*(0,r.f)(t.skills.intelligence,1);return Math.min(1,Math.max(s,0))}function i(e,t){const n=e.baseDifficulty;if(!n)return 0;let r=3;return r+=.3*n,r*t.mults.hacking_exp*a.dQ.HackExpGain}function s(e,t){const n=e.hackDifficulty??100;if(n>=100)return 0;const r=e.requiredHackingSkill??1e9,o=(100-n)/100*((t.skills.hacking-(r-1))/t.skills.hacking)*t.mults.hacking_money*a.dQ.ScriptHackMoney/240;return Math.min(1,Math.max(o,0))}function l(e,t){const{hackDifficulty:n,requiredHackingSkill:a}=e;if("number"!=typeof n||"number"!=typeof a)return 1/0;let o=a*n*2.5+500;return o/=t.skills.hacking+50,5*o/(t.mults.hacking_speed*(0,r.f)(t.skills.intelligence,1))}function c(e,t){return 3.2*l(e,t)}function u(e,t){return 4*l(e,t)}},42805:(e,t,n)=>{"use strict";n.d(t,{Eb:()=>s,Mr:()=>i,uN:()=>o});var a=n(49173);function r(e,t){const n=e.hostname;return"requiredHackingSkill"in e?e.hasAdminRights?{res:!0}:{res:!1,msg:`Cannot ${t} ${n} server because you do not have root access`}:{res:!1,msg:`Cannot ${t} ${n} server because it is a Hacknet Node`}}function o(e){const t=r(e,"hack");return t.res?e.requiredHackingSkill>a.J5.skills.hacking?{res:!1,msg:`Cannot hack ${e.hostname} server because your hacking skill is not high enough`}:{res:!0}:t}function i(e){return r(e,"grow")}function s(e){return r(e,"weaken")}},29538:(e,t,n)=>{"use strict";n.d(t,{BF:()=>w,Dw:()=>v,En:()=>E,Fy:()=>M,N0:()=>b,Px:()=>T,SL:()=>C,TN:()=>F,Tw:()=>N,UL:()=>A,V2:()=>S,ZQ:()=>L,b_:()=>k,fE:()=>I,kw:()=>y,sq:()=>x});var a=n(55782),r=n(73280),o=n(1290),i=n(93430),s=n(3853),l=n(16466),c=n(94043),u=n(58297),m=n(40780),f=n(49173),h=n(97467),d=n(89916),p=n(62586),g=n(50862);function y(){return 9===f.J5.bitNodeN||f.J5.sourceFileLvl(9)>0}function b(){if(m.wP.isRunning){if(m.wP.currStep!==m.$o.HacknetNodesIntroduction)return-1;(0,m.ZF)()}const e=f.J5.hacknetNodes.length;if(y()){const t=w();if(isNaN(t))throw new Error("Calculated cost of purchasing HacknetServer is NaN");return!f.J5.canAfford(t)||e>=i.B5.MaxServers?-1:(f.J5.loseMoney(t,"hacknet_expenses"),f.J5.createHacknetServer(),F(),e)}{const t=k();if(isNaN(t))throw new Error("Calculated cost of purchasing HacknetNode is NaN");if(!f.J5.canAfford(t))return-1;const n=y()?`hacknet-server-${e}`:`hacknet-node-${e}`,r=new a.Q(n,f.J5.mults.hacknet_node_money);return f.J5.loseMoney(t,"hacknet_expenses"),f.J5.hacknetNodes.push(r),e}}function v(){return y()&&f.J5.hacknetNodes.length>=i.B5.MaxServers}function k(){return(0,r.Vi)(f.J5.hacknetNodes.length+1,f.J5.mults.hacknet_node_purchase_cost)}function w(){return(0,o.oP)(f.J5.hacknetNodes.length+1,f.J5.mults.hacknet_node_purchase_cost)}function E(e,t){if(null==t)throw new Error("getMaxNumberLevelUpgrades() called without maxLevel arg");if(f.J5.moneye.calculateLevelUpgradeCost(r,f.J5.mults.hacknet_node_level_cost))return r;for(;n<=a;){const o=(n+a)/2|0;if(o!==t&&f.J5.money>e.calculateLevelUpgradeCost(o,f.J5.mults.hacknet_node_level_cost)&&f.J5.moneye.calculateLevelUpgradeCost(o,f.J5.mults.hacknet_node_level_cost)))return Math.min(r,o);n=o+1}}return 0}function S(e,t){if(null==t)throw new Error("getMaxNumberRamUpgrades() called without maxLevel arg");if(f.J5.moneye.calculateRamUpgradeCost(n,f.J5.mults.hacknet_node_ram_cost))return n;for(let t=n-1;t>=0;--t)if(f.J5.money>e.calculateRamUpgradeCost(t,f.J5.mults.hacknet_node_ram_cost))return t;return 0}function C(e,t){if(null==t)throw new Error("getMaxNumberCoreUpgrades() called without maxLevel arg");if(f.J5.moneye.calculateCoreUpgradeCost(r,f.J5.mults.hacknet_node_core_cost))return r;for(;n<=a;){const o=(n+a)/2|0;if(o!=t&&f.J5.money>e.calculateCoreUpgradeCost(o,f.J5.mults.hacknet_node_core_cost)&&f.J5.moneye.calculateCoreUpgradeCost(o,f.J5.mults.hacknet_node_core_cost)))return Math.min(r,o);n=o+1}}return 0}function x(e,t){if(null==t)throw new Error("getMaxNumberCacheUpgrades() called without maxLevel arg");if(!f.J5.canAfford(e.calculateCacheUpgradeCost(1)))return 0;let n=1,a=t-1;const r=t-e.cache;if(f.J5.canAfford(e.calculateCacheUpgradeCost(r)))return r;for(;n<=a;){const o=(n+a)/2|0;if(o!=t&&f.J5.canAfford(e.calculateCacheUpgradeCost(o))&&!f.J5.canAfford(e.calculateCacheUpgradeCost(o+1)))return Math.min(r,o);if(f.J5.canAfford(e.calculateCacheUpgradeCost(o))){if(!f.J5.canAfford(e.calculateCacheUpgradeCost(o)))return Math.min(r,o);n=o+1}else a=o-1}return 0}function N(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t),a=e.calculateLevelUpgradeCost(n,f.J5.mults.hacknet_node_level_cost);if(isNaN(a)||a<=0||n<0)return!1;const r=e instanceof s.u;return!(e.level>=(r?i.B5.MaxLevel:i.dN.MaxLevel))&&(e.level+n>(r?i.B5.MaxLevel:i.dN.MaxLevel)?N(e,Math.max(0,(r?i.B5.MaxLevel:i.dN.MaxLevel)-e.level)):!!f.J5.canAfford(a)&&(f.J5.loseMoney(a,"hacknet_expenses"),e.upgradeLevel(n,f.J5.mults.hacknet_node_money),!0))}function M(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t),r=e.calculateRamUpgradeCost(n,f.J5.mults.hacknet_node_ram_cost);if(isNaN(r)||r<=0||n<0)return!1;if(e instanceof s.u&&e.maxRam>=i.B5.MaxRam)return!1;if(e instanceof a.Q&&e.ram>=i.dN.MaxRam)return!1;if(e instanceof s.u){if(e.maxRam*Math.pow(2,n)>i.B5.MaxRam)return M(e,Math.max(0,Math.log2(Math.round(i.B5.MaxRam/e.maxRam))))}else if(e instanceof a.Q&&e.ram*Math.pow(2,n)>i.dN.MaxRam)return M(e,Math.max(0,Math.log2(Math.round(i.dN.MaxRam/e.ram))));return!!f.J5.canAfford(r)&&(f.J5.loseMoney(r,"hacknet_expenses"),e.upgradeRam(n,f.J5.mults.hacknet_node_money),!0)}function A(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t),a=e.calculateCoreUpgradeCost(n,f.J5.mults.hacknet_node_core_cost);if(isNaN(a)||a<=0||n<0)return!1;const r=e instanceof s.u;return!(e.cores>=(r?i.B5.MaxCores:i.dN.MaxCores))&&(e.cores+n>(r?i.B5.MaxCores:i.dN.MaxCores)?A(e,Math.max(0,(r?i.B5.MaxCores:i.dN.MaxCores)-e.cores)):!!f.J5.canAfford(a)&&(f.J5.loseMoney(a,"hacknet_expenses"),e.upgradeCore(n,f.J5.mults.hacknet_node_money),!0))}function T(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t),a=e.calculateCacheUpgradeCost(n);return!(isNaN(a)||a<=0||n<0)&&(e instanceof s.u?e.cache+n>i.B5.MaxCache?T(e,Math.max(0,i.B5.MaxCache-e.cache)):!!f.J5.canAfford(a)&&(f.J5.loseMoney(a,"hacknet_expenses"),e.upgradeCache(n),!0):(console.warn("purchaseCacheUpgrade() called for a non-HacknetNode"),!1))}function L(e){return 0===f.J5.hacknetNodes.length?0:y()?function(e){if(!(f.J5.hashManager instanceof l.F))throw new Error("Player does not have a HashManager (should be in 'hashManager' prop)");let t=0;for(let n=0;n0){const e=c.L["Sell for Money"];if(null===e)throw new Error("Could not get the hash upgrade");if(!e.cost)throw new Error("Upgrade is not properly configured");const t=n/e.cost;t>0&&f.J5.gainMoney(e.value*t,"hacknet")}return t}(e):f.J5.hacknetNodes[0]instanceof a.Q?function(e){let t=0;for(let n=0;n2&&void 0!==arguments[2]?arguments[2]:1;if(!(f.J5.hashManager instanceof l.F))return console.error("Player does not have a HashManager"),!1;if(f.J5.hashManager.upgrade(e,n)){const a=c.L[e];switch(e){case"Sell for Money":f.J5.gainMoney(a.value*n,"hacknet");break;case"Sell for Corporation Funds":{const t=f.J5.corporation;if(null===t)return f.J5.hashManager.refundUpgrade(e,n),!1;t.addNonIncomeFunds(a.value*n);break}case"Reduce Minimum Security":try{const e=(0,h.WT)(t);if(null==e)throw console.error(`Invalid target specified in purchaseHashUpgrade(): ${t}`),new Error(`'${t}' is not a server.`);if(!(e instanceof d.x))throw new Error(`'${t}' is not a normal server.`);e.changeMinimumSecurity(a.value**n,!0)}catch(t){return f.J5.hashManager.refundUpgrade(e,n),!1}break;case"Increase Maximum Money":try{const e=(0,h.WT)(t);if(null==e)throw console.error(`Invalid target specified in purchaseHashUpgrade(): ${t}`),new Error(`'${t}' is not a server.`);if(!(e instanceof d.x))throw new Error(`'${t}' is not a normal server.`);for(let t=0;t{"use strict";n.d(t,{Q:()=>c});var a=n(72938),r=n(73280),o=n(93430),i=n(39463),s=n(94515),l=n(47674);class c{static validationData={cores:(0,l._z)(1,1,o.dN.MaxCores),level:(0,l._z)(1,1,o.dN.MaxLevel),ram:(0,l._z)(1,1,o.dN.MaxRam),onlineTimeSeconds:(0,l._z)(0,0,1/0),totalMoneyGenerated:(0,l._z)(0,0,1/0)};cores=1;level=1;moneyGainRatePerSecond=0;onlineTimeSeconds=0;ram=1;totalMoneyGenerated=0;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.name=e,this.updateMoneyGainRate(t)}calculateCoreUpgradeCost(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;return(0,r.pq)(this.cores,e,t)}calculateLevelUpgradeCost(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;return(0,r.TJ)(this.level,e,t)}calculateRamUpgradeCost(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;return(0,r.u7)(this.ram,e,t)}process(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:1)*a.t.MilliPerCycle/1e3;let t=this.moneyGainRatePerSecond*e;return isNaN(t)&&(console.error(`Hacknet Node ${this.name} calculated earnings of NaN`),t=0),this.totalMoneyGenerated+=t,this.onlineTimeSeconds+=e,t}upgradeCore(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;this.cores=Math.min(o.dN.MaxCores,Math.round(this.cores+e)),this.updateMoneyGainRate(t)}upgradeLevel(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;this.level=Math.min(o.dN.MaxLevel,Math.round(this.level+e)),this.updateMoneyGainRate(t)}upgradeRam(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0;for(let t=0;t{"use strict";n.d(t,{u:()=>u});var a=n(72938),r=n(14750),o=n(93430),i=n(1290),s=n(37931),l=n(94515),c=n(49173);class u extends r.W{cache=1;cores=1;hashCapacity=0;hashRate=0;level=1;onlineTimeSeconds=0;totalHashesGenerated=0;purchasedByPlayer=!0;constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{hostname:"",ip:(0,s.r)()}),this.maxRam=1,this.updateHashCapacity()}calculateCacheUpgradeCost(e){return(0,i._1)(this.cache,e)}calculateCoreUpgradeCost(e,t){return(0,i.pq)(this.cores,e,t)}calculateLevelUpgradeCost(e,t){return(0,i.TJ)(this.level,e,t)}calculateRamUpgradeCost(e,t){return(0,i.u7)(this.maxRam,e,t)}process(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:1)*a.t.MilliPerCycle/1e3;this.onlineTimeSeconds+=e;const t=this.hashRate*e;return this.totalHashesGenerated+=t,t}upgradeCache(e){this.cache=Math.min(o.B5.MaxCache,Math.round(this.cache+e)),this.updateHashCapacity()}upgradeCore(e,t){this.cores=Math.min(o.B5.MaxCores,Math.round(this.cores+e)),this.updateHashRate(t),this.cpuCores=this.cores}upgradeLevel(e,t){this.level=Math.min(o.B5.MaxLevel,Math.round(this.level+e)),this.updateHashRate(t)}upgradeRam(e,t){return this.maxRam*=Math.pow(2,e),this.maxRam=Math.min(o.B5.MaxRam,Math.round(this.maxRam)),this.updateHashRate(t),!0}updateRamUsed(e){super.updateRamUsed(e),this.updateHashRate(c.J5.mults.hacknet_node_money)}updateHashCapacity(){this.hashCapacity=32*Math.pow(2,this.cache)}updateHashRate(e){this.hashRate=(0,i.WA)(this.level,this.ramUsed,this.maxRam,this.cores,e),isNaN(this.hashRate)&&(this.hashRate=0,console.error("Error calculating Hacknet Server hash production. This is a bug. Please report to game dev",!1))}toJSON(){return this.toJSONBase("HacknetServer",m)}static fromJSON(e){return r.W.fromJSONBase(e,u,m)}}const m=r.W.getIncludedKeys(u);l.gY.HacknetServer=u},16466:(e,t,n)=>{"use strict";n.d(t,{F:()=>o});var a=n(94043),r=n(94515);class o{capacity=0;hashes=0;upgrades={};constructor(){for(const e of Object.keys(a.L))this.upgrades[e]=0}getMult(e){const t=a.L[e],n=this.upgrades[e];return null==t||null==n?(console.error("Could not find Hash Study upgrade"),1):1+t.value*n/100}getStudyMult(){return this.getMult("Improve Studying")}getTrainingMult(){return this.getMult("Improve Gym Training")}getUpgrade(e){return a.L[e]||(console.error(`Invalid Upgrade Name given to HashManager.getUpgrade(): ${e}`),null)}getUpgradeCost(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=this.getUpgrade(e),a=this.upgrades[e];return null==n||null==a?(console.error(`Invalid Upgrade Name given to HashManager.getUpgradeCost(): ${e}`),1/0):n.getCost(a,t)}prestige(){for(const e of Object.keys(a.L))this.upgrades[e]=0;this.hashes=0,this.updateCapacity(0)}refundUpgrade(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=a.L[e];this.upgrades[e]-=t;const r=this.upgrades[e];if(null==n||null==r||r<0)return void console.error(`Invalid Upgrade Name given to HashManager.upgrade(): ${e}`);const o=n.getCost(r,t);this.hashes+=o}storeHashes(e){this.hashes+=e;let t=this.hashes;return this.hashes=Math.min(this.hashes,this.capacity),t-=this.hashes,t}updateCapacity(e){e<0&&(this.capacity=0),this.capacity=Math.max(e,0)}upgrade(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(null==a.L[e])return console.error(`Invalid Upgrade Name given to HashManager.upgrade(): ${e}`),!1;const n=this.getUpgradeCost(e,t);return!(this.hashes{"use strict";n.d(t,{$:()=>a});class a{costPerLevel=0;desc="";hasTargetServer=!1;hasTargetCompany=!1;name="";value=0;constructor(e){null!=e.cost&&(this.cost=e.cost),null!=e.effectText&&(this.effectText=e.effectText),this.costPerLevel=e.costPerLevel,this.desc=e.desc,this.hasTargetServer=!!e.hasTargetServer&&e.hasTargetServer,this.hasTargetCompany=!!e.hasTargetCompany&&e.hasTargetCompany,this.name=e.name,this.value=e.value}effectText=()=>null;getCost(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if("number"==typeof this.cost)return this.cost*t;const n=.5*t*(t+2*e+1);return this.costPerLevel*n}}},94043:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var a=n(61438),r=n(54387);const o={};for(const e of r.g)o[(i=e).name]=new a.$(i);var i},93430:(e,t,n)=>{"use strict";n.d(t,{B5:()=>o,dN:()=>a,wP:()=>r});const a={MoneyGainPerLevel:1.5,BaseCost:1e3,LevelBaseCost:500,RamBaseCost:3e4,CoreBaseCost:5e5,PurchaseNextMult:1.85,UpgradeLevelMult:1.04,UpgradeRamMult:1.28,UpgradeCoreMult:1.48,MaxLevel:200,MaxRam:64,MaxCores:16},r={x1:1,x5:5,x10:10,MAX:"MAX"},o={HashesPerLevel:.001,BaseCost:5e4,RamBaseCost:2e5,CoreBaseCost:1e6,CacheBaseCost:1e7,PurchaseMult:3.2,UpgradeLevelMult:1.1,UpgradeRamMult:1.4,UpgradeCoreMult:1.55,UpgradeCacheMult:1.85,MaxServers:20,MaxLevel:300,MaxRam:8192,MaxCores:128,MaxCache:15}},54387:(e,t,n)=>{"use strict";n.d(t,{g:()=>i});var a=n(67294),r=n(22115),o=n(72360);const i=[{cost:4,costPerLevel:4,desc:"Sell hashes for $1m",name:"Sell for Money",effectText:e=>a.createElement(a.Fragment,null,"Sold for ",a.createElement(o.W,{money:1e6*e})),value:1e6},{costPerLevel:100,desc:"Sell hashes for $1b in Corporation funds",name:"Sell for Corporation Funds",effectText:e=>a.createElement(a.Fragment,null,"Sold for ",a.createElement(o.W,{money:1e9*e})," Corporation funds."),value:1e9},{costPerLevel:50,desc:"Use hashes to decrease the minimum security of a single server by 2%. Note that a server's minimum security cannot go below 1. This effect persists until you install Augmentations (since servers are reset at that time).",hasTargetServer:!0,name:"Reduce Minimum Security",value:.98},{costPerLevel:50,desc:"Use hashes to increase the maximum amount of money on a single server by 2%. Note that a server's maximum money is soft capped above $10t. This effect persists until you install Augmentations (since servers are reset at that time).",hasTargetServer:!0,name:"Increase Maximum Money",value:1.02},{costPerLevel:50,desc:"Use hashes to improve the experience earned when studying at a university by 20%. This effect persists until you install Augmentations",name:"Improve Studying",effectText:e=>a.createElement(a.Fragment,null,"Improves studying by ",20*e,"%"),value:20},{costPerLevel:50,desc:"Use hashes to improve the experience earned when training at the gym by 20%. This effect persists until you install Augmentations",name:"Improve Gym Training",effectText:e=>a.createElement(a.Fragment,null,"Improves training by ",20*e,"%"),value:20},{costPerLevel:200,desc:"Exchange hashes for 1k Scientific Research in all of your Corporation's Industries",name:"Exchange for Corporation Research",effectText:e=>a.createElement(a.Fragment,null,"Acquired a total of ",(0,r.yI)(1e3*e)," Scientific Research in your industries."),value:1e3},{costPerLevel:250,desc:"Exchange hashes for 100 Bladeburner Rank",name:"Exchange for Bladeburner Rank",effectText:e=>a.createElement(a.Fragment,null,"Acquired a total of ",(0,r.yI)(100*e)," Bladeburner rank"),value:100},{costPerLevel:250,desc:"Exchanges hashes for 10 Bladeburner Skill Points",name:"Exchange for Bladeburner SP",effectText:e=>a.createElement(a.Fragment,null,"Acquired a total of ",(0,r.yI)(10*e)," Bladeburner Skill Points"),value:10},{costPerLevel:200,desc:"Generate a random Coding Contract somewhere on the network",name:"Generate Coding Contract",effectText:e=>a.createElement(a.Fragment,null,"Generated ",e," contracts."),value:1},{costPerLevel:200,desc:"Use hashes to increase the favor with a company by 5. This effect is permanent.",hasTargetCompany:!0,name:"Company Favor",value:5}]},73280:(e,t,n)=>{"use strict";n.d(t,{TJ:()=>i,Vi:()=>c,pq:()=>l,u7:()=>s,yf:()=>o});var a=n(97740),r=n(93430);function o(e,t,n,o){return e*r.dN.MoneyGainPerLevel*Math.pow(1.035,t-1)*((n+5)/6)*o*a.dQ.HacknetNodeMoney}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=Math.round(t);if(isNaN(a)||a<1)return 0;if(e>=r.dN.MaxLevel)return 1/0;const o=r.dN.UpgradeLevelMult;let i=0,s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=Math.round(t);if(isNaN(a)||a<1)return 0;if(e>=r.dN.MaxRam)return 1/0;let o=0,i=Math.round(Math.log2(e)),s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=Math.round(t);if(isNaN(a)||a<1)return 0;if(e>=r.dN.MaxCores)return 1/0;const o=r.dN.CoreBaseCost,i=r.dN.UpgradeCoreMult;let s=0,l=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1;return e<=0?0:r.dN.BaseCost*Math.pow(r.dN.PurchaseNextMult,e-1)*t}},1290:(e,t,n)=>{"use strict";n.d(t,{TJ:()=>i,WA:()=>o,_1:()=>c,oP:()=>u,pq:()=>l,u7:()=>s});var a=n(97740),r=n(93430);function o(e,t,n,o,i){return r.B5.HashesPerLevel*e*Math.pow(1.07,Math.log2(n))*(1+(o-1)/5)*(1-t/n)*i*a.dQ.HacknetNodeMoney}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=Math.round(t);if(isNaN(a)||a<1)return 0;if(e>=r.B5.MaxLevel)return 1/0;const o=r.B5.UpgradeLevelMult;let i=0,s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=Math.round(t);if(isNaN(a)||a<1)return 0;if(e>=r.B5.MaxRam)return 1/0;let o=0,i=Math.round(Math.log2(e)),s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=Math.round(t);if(isNaN(a)||a<1)return 0;if(e>=r.B5.MaxCores)return 1/0;const o=r.B5.UpgradeCoreMult;let i=0,s=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1;const n=Math.round(t);if(isNaN(n)||n<1)return 0;if(e>=r.B5.MaxCache)return 1/0;const a=r.B5.UpgradeCacheMult;let o=0,i=e;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1;return e-1>=r.B5.MaxServers?1/0:r.B5.BaseCost*Math.pow(r.B5.PurchaseMult,e-1)*t}},73782:(e,t,n)=>{"use strict";n.d(t,{W:()=>o});var a=n(67294),r=n(81138);function o(e){return a.createElement(a.Fragment,null,a.createElement(r.Z,null,"The Hacknet is a global, decentralized network of machines. It is used by hackers all around the world to anonymously share computing power and perform distributed cyberattacks without the fear of being traced."),e.hasHacknetServers?a.createElement(a.Fragment,null,a.createElement(r.Z,null,"Here, you can purchase a Hacknet Server, an upgraded version of the Hacknet Node. Hacknet Servers will perform computations and operations on the network, earning you hashes. Hashes can be spent on a variety of different upgrades."),a.createElement(r.Z,null,"Hacknet Servers can also be used as servers to run scripts. However, running scripts on a server will reduce its hash rate (hashes generated per second). A Hacknet Server's hash rate will be reduced by the percentage of RAM that is being used by that Server to run scripts.")):a.createElement(a.Fragment,null,a.createElement(r.Z,null,"Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its resources to the Hacknet network. This allows you to take a small percentage of profits from hacks performed on the network. Essentially, you are renting out your Node's computing power."),a.createElement(r.Z,null,"Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded in order to increase its computing power and thereby increase the profit you earn from it.")))}},68193:(e,t,n)=>{"use strict";n.d(t,{Y:()=>k});var a=n(67294),r=n(93430),o=n(29538),i=n(49173),s=n(72360),l=n(85882),c=n(81138),u=n(31990),m=n(28881),f=n(56798),h=n(61011),d=n(46948),p=n(47542),g=n(49557),y=n(17575),b=n(22115),v=n(73280);function k(e){const t=e.node,n=e.purchaseMultiplier,k=e.rerender;let w,E,S;if(t.level>=r.dN.MaxLevel)w=a.createElement(f.Z,{disabled:!0},"MAX LEVEL");else{let e=0;if("MAX"===n)e=(0,o.En)(t,r.dN.MaxLevel);else{const a=r.dN.MaxLevel-t.level;e=Math.min(a,n)}const u=(0,v.yf)(t.level+e,t.ram,t.cores,i.J5.mults.hacknet_node_money)-t.moneyGainRatePerSecond,m=t.calculateLevelUpgradeCost(e,i.J5.mults.hacknet_node_level_cost);w=a.createElement(y.Z,{title:a.createElement(c.Z,null,"+",a.createElement(l.G,{money:u}))},a.createElement(f.Z,{onClick:function(){const e="MAX"===n?(0,o.En)(t,r.dN.MaxLevel):n;(0,o.Tw)(t,e),k()}},"+",e," - ",a.createElement(s.W,{money:m,forPurchase:!0})))}if(t.ram>=r.dN.MaxRam)E=a.createElement(f.Z,{disabled:!0},"MAX RAM");else{let e=0;if("MAX"===n)e=(0,o.V2)(t,r.dN.MaxRam);else{const a=Math.round(Math.log2(r.dN.MaxRam/t.ram));e=Math.min(a,n)}const u=(0,v.yf)(t.level,t.ram*Math.pow(2,e),t.cores,i.J5.mults.hacknet_node_money)-t.moneyGainRatePerSecond,m=t.calculateRamUpgradeCost(e,i.J5.mults.hacknet_node_ram_cost);E=a.createElement(y.Z,{title:a.createElement(c.Z,null,"+",a.createElement(l.G,{money:u}))},a.createElement(f.Z,{onClick:function(){const e="MAX"===n?(0,o.V2)(t,r.dN.MaxRam):n;(0,o.Fy)(t,e),k()}},"+",e," - ",a.createElement(s.W,{money:m,forPurchase:!0})))}if(t.cores>=r.dN.MaxCores)S=a.createElement(f.Z,{disabled:!0},"MAX CORES");else{let e=0;if("MAX"===n)e=(0,o.SL)(t,r.dN.MaxCores);else{const a=r.dN.MaxCores-t.cores;e=Math.min(a,n)}const u=(0,v.yf)(t.level,t.ram,t.cores+e,i.J5.mults.hacknet_node_money)-t.moneyGainRatePerSecond,m=t.calculateCoreUpgradeCost(e,i.J5.mults.hacknet_node_core_cost);S=a.createElement(y.Z,{title:a.createElement(c.Z,null,"+",a.createElement(l.G,{money:u}))},a.createElement(f.Z,{onClick:function(){const e="MAX"===n?(0,o.SL)(t,r.dN.MaxCores):n;(0,o.UL)(t,e),k()}},"+",e," - ",a.createElement(s.W,{money:m,forPurchase:!0})))}return a.createElement(u.ZP,{item:!0,component:m.Z,p:1},a.createElement(p.Z,{size:"small"},a.createElement(d.Z,null,a.createElement(g.Z,null,a.createElement(h.p,{colSpan:3},a.createElement(c.Z,null,t.name))),a.createElement(g.Z,null,a.createElement(h.p,null,a.createElement(c.Z,null,"Production:")),a.createElement(h.p,{colSpan:2},a.createElement(c.Z,null,a.createElement(s.W,{money:t.totalMoneyGenerated})," (",a.createElement(l.G,{money:t.moneyGainRatePerSecond}),")"))),a.createElement(g.Z,null,a.createElement(h.p,null,a.createElement(c.Z,null,"Level:")),a.createElement(h.p,null,a.createElement(c.Z,null,t.level)),a.createElement(h.p,null,w)),a.createElement(g.Z,null,a.createElement(h.p,null,a.createElement(c.Z,null,"RAM:")),a.createElement(h.p,null,a.createElement(c.Z,null,(0,b.$1)(t.ram))),a.createElement(h.p,null,E)),a.createElement(g.Z,null,a.createElement(h.p,null,a.createElement(c.Z,null,"Cores:")),a.createElement(h.p,null,a.createElement(c.Z,null,t.cores)),a.createElement(h.p,null,S)))))}},23187:(e,t,n)=>{"use strict";n.d(t,{W:()=>E});var a=n(67294),r=n(73782),o=n(68193),i=n(82075),s=n(55782),l=n(3853),c=n(41965),u=n(49025),m=n(85715),f=n(84758),h=n(93430),d=n(29538),p=n(49173),g=n(97467),y=n(81138),b=n(31990),v=n(56798),k=n(30120),w=n(88775);function E(){const[e,t]=(0,a.useState)(!1),n=(0,w.S)(200),[E,S]=(0,a.useState)(h.wP.x1);let C,x=0;for(let e=0;eS(h.wP.x1),()=>S(h.wP.x5),()=>S(h.wP.x10),()=>S(h.wP.MAX)],M=p.J5.hacknetNodes.map((e=>{if((0,d.kw)()){if(e instanceof s.Q)throw new Error("node was hacknet node");const t=(0,g.WT)(e);if(null==t)throw new Error(`Could not find Hacknet Server object in AllServers map for IP: ${e}`);if(!(t instanceof l.u))throw new Error("node was not hacknet server");return a.createElement(i.H,{key:t.hostname,node:t,purchaseMultiplier:E,rerender:n})}if("string"==typeof e)throw new Error("node was ip string");return a.createElement(o.Y,{key:e.name,node:e,purchaseMultiplier:E,rerender:n})}));return a.createElement(a.Fragment,null,a.createElement(y.Z,{variant:"h4"},"Hacknet ",(0,d.kw)()?"Servers":"Nodes"),a.createElement(r.W,{hasHacknetServers:(0,d.kw)()}),a.createElement(f.i,{cost:C,multiplier:E,onClick:function(){(0,d.N0)(),n()}}),a.createElement("br",null),a.createElement(b.ZP,{container:!0,spacing:2},a.createElement(b.ZP,{item:!0,xs:6},a.createElement(m.r,{totalProduction:x})),a.createElement(b.ZP,{item:!0,xs:6},a.createElement(u.C,{onClicks:N,purchaseMultiplier:E}))),(0,d.kw)()&&a.createElement(v.Z,{onClick:()=>t(!0)},"Spend Hashes on Upgrades"),a.createElement(k.Z,{sx:{display:"grid",width:"fit-content",gridTemplateColumns:"repeat(3, 1fr)"}},M),a.createElement(c._,{open:e,onClose:()=>t(!1)}))}},82075:(e,t,n)=>{"use strict";n.d(t,{H:()=>w});var a=n(67294),r=n(93430),o=n(29538),i=n(49173),s=n(72360),l=n(50411),c=n(79198),u=n(81138),m=n(31990),f=n(28881),h=n(56798),d=n(61011),p=n(46948),g=n(47542),y=n(49557),b=n(22115),v=n(1290),k=n(17575);function w(e){const t=e.node,n=e.purchaseMultiplier,w=e.rerender;let E,S,C,x;if(t.level>=r.B5.MaxLevel)E=a.createElement(h.Z,{disabled:!0},"MAX LEVEL");else{let e=0;if("MAX"===n)e=(0,o.En)(t,r.B5.MaxLevel);else{const a=r.B5.MaxLevel-t.level;e=Math.min(a,n)}const l=(0,v.WA)(t.level+e,0,t.maxRam,t.cores,i.J5.mults.hacknet_node_money)-(0,v.WA)(t.level,0,t.maxRam,t.cores,i.J5.mults.hacknet_node_money),m=l*(t.maxRam-t.ramUsed)/t.maxRam,f=t.calculateLevelUpgradeCost(e,i.J5.mults.hacknet_node_level_cost);E=a.createElement(k.Z,{title:a.createElement(u.Z,null,"+",a.createElement(c.a,{hashes:m})," (effective increase, taking current RAM usage into account)",a.createElement("br",null),a.createElement("span",{style:{opacity:.5}},"+",a.createElement(c.a,{hashes:l}))," ","(base increase, attained when no script is running)")},a.createElement(h.Z,{onClick:function(){let e=n;"MAX"===n&&(e=(0,o.En)(t,r.B5.MaxLevel)),(0,o.Tw)(t,e),w()}},"+",e," - ",a.createElement(s.W,{money:f,forPurchase:!0})))}if(t.maxRam>=r.B5.MaxRam)S=a.createElement(h.Z,{disabled:!0},"MAX RAM");else{let e=0;if("MAX"===n)e=(0,o.V2)(t,r.B5.MaxRam);else{const a=Math.round(Math.log2(r.B5.MaxRam/t.maxRam));e=Math.min(a,n)}const l=(0,v.WA)(t.level,0,t.maxRam*Math.pow(2,e),t.cores,i.J5.mults.hacknet_node_money)-(0,v.WA)(t.level,0,t.maxRam,t.cores,i.J5.mults.hacknet_node_money),m=(0,v.WA)(t.level,t.ramUsed,t.maxRam*Math.pow(2,e),t.cores,i.J5.mults.hacknet_node_money)-(0,v.WA)(t.level,t.ramUsed,t.maxRam,t.cores,i.J5.mults.hacknet_node_money),f=t.calculateRamUpgradeCost(e,i.J5.mults.hacknet_node_ram_cost);S=a.createElement(k.Z,{title:a.createElement(u.Z,null,"+",a.createElement(c.a,{hashes:m})," (effective increase, taking current RAM usage into account)",a.createElement("br",null),a.createElement("span",{style:{opacity:.5}},"+",a.createElement(c.a,{hashes:l}))," ","(base increase, attained when no script is running)")},a.createElement(h.Z,{onClick:function(){let e=n;"MAX"===n&&(e=(0,o.V2)(t,r.B5.MaxRam)),(0,o.Fy)(t,e),w()}},"+",e," - ",a.createElement(s.W,{money:f,forPurchase:!0})))}if(t.cores>=r.B5.MaxCores)C=a.createElement(h.Z,{disabled:!0},"MAX CORES");else{let e=0;if("MAX"===n)e=(0,o.SL)(t,r.B5.MaxCores);else{const a=r.B5.MaxCores-t.cores;e=Math.min(a,n)}const l=(0,v.WA)(t.level,0,t.maxRam,t.cores+e,i.J5.mults.hacknet_node_money)-(0,v.WA)(t.level,0,t.maxRam,t.cores,i.J5.mults.hacknet_node_money),m=l*(t.maxRam-t.ramUsed)/t.maxRam,f=t.calculateCoreUpgradeCost(e,i.J5.mults.hacknet_node_core_cost);C=a.createElement(k.Z,{title:a.createElement(u.Z,null,"+",a.createElement(c.a,{hashes:m})," (effective increase, taking current RAM usage into account)",a.createElement("br",null),a.createElement("span",{style:{opacity:.5}},"+",a.createElement(c.a,{hashes:l}))," ","(base increase, attained when no script is running)")},a.createElement(h.Z,{onClick:function(){let e=n;"MAX"===n&&(e=(0,o.SL)(t,r.B5.MaxCores)),(0,o.UL)(t,e),w()}},"+",e," - ",a.createElement(s.W,{money:f,forPurchase:!0})))}if(t.cache>=r.B5.MaxCache)x=a.createElement(h.Z,{disabled:!0},"MAX CACHE");else{let e=0;if("MAX"===n)e=(0,o.sq)(t,r.B5.MaxCache);else{const a=r.B5.MaxCache-t.cache;e=Math.min(a,n)}const i=32*Math.pow(2,t.cache+e)-t.hashCapacity,c=t.calculateCacheUpgradeCost(e);x=a.createElement(k.Z,{title:a.createElement(u.Z,null,"+",a.createElement(l.S,{hashes:i})," hashes")},a.createElement(h.Z,{onClick:function(){let e=n;"MAX"===n&&(e=(0,o.sq)(t,r.B5.MaxCache)),(0,o.Px)(t,e),w(),(0,o.TN)()}},"+",e," - ",a.createElement(s.W,{money:c,forPurchase:!0})))}return a.createElement(m.ZP,{item:!0,component:f.Z,p:1},a.createElement(g.Z,{size:"small"},a.createElement(p.Z,null,a.createElement(y.Z,null,a.createElement(d.p,null,a.createElement(u.Z,null,t.hostname))),a.createElement(y.Z,null,a.createElement(d.p,null,a.createElement(u.Z,null,"Production:")),a.createElement(d.p,{colSpan:2},a.createElement(k.Z,{title:a.createElement(u.Z,null,a.createElement(l.S,{hashes:t.totalHashesGenerated})," hashes produced by this server since last augment installation.",a.createElement("br",null),a.createElement(c.a,{hashes:t.hashRate})," current production rate.",a.createElement("br",null),a.createElement("span",{style:{opacity:.5}},a.createElement(c.a,{hashes:t.hashRate*t.maxRam/(t.maxRam-t.ramUsed)}))," ","max production rate. (achieved when 100% RAM is allocated to it)",a.createElement("br",null),(0,b.$1)(t.ramUsed)," / ",(0,b.$1)(t.maxRam)," (",Math.round(100*t.ramUsed/t.maxRam),"%) RAM allocated to script.",a.createElement("br",null),(0,b.$1)(t.maxRam-t.ramUsed)," / ",(0,b.$1)(t.maxRam)," (",Math.round(100*(t.maxRam-t.ramUsed)/t.maxRam),"%) RAM allocated to hash production.")},a.createElement(u.Z,null,a.createElement(l.S,{hashes:t.totalHashesGenerated})," (",a.createElement(c.a,{hashes:t.hashRate}),")")))),a.createElement(y.Z,null,a.createElement(d.p,null,a.createElement(u.Z,null,"Hash Capacity:")),a.createElement(d.p,{colSpan:2},a.createElement(u.Z,null,a.createElement(l.S,{hashes:t.hashCapacity})))),a.createElement(y.Z,null,a.createElement(d.p,null,a.createElement(u.Z,null,"Level:")),a.createElement(d.p,null,a.createElement(u.Z,null,t.level)),a.createElement(d.p,null,E)),a.createElement(y.Z,null,a.createElement(d.p,null,a.createElement(u.Z,null,"RAM:")),a.createElement(d.p,null,a.createElement(u.Z,null,(0,b.$1)(t.maxRam))),a.createElement(d.p,null,S)),a.createElement(y.Z,null,a.createElement(d.p,null,a.createElement(u.Z,null,"Cores:")),a.createElement(d.p,null,a.createElement(u.Z,null,t.cores)),a.createElement(d.p,null,C)),a.createElement(y.Z,null,a.createElement(d.p,null,a.createElement(u.Z,null,"Cache Level:")),a.createElement(d.p,null,a.createElement(u.Z,null,t.cache)),a.createElement(d.p,null,x)))))}},45259:(e,t,n)=>{"use strict";n.d(t,{q:()=>y});var a=n(67294),r=n(29538),o=n(60724),i=n(38217),s=n(39463),l=n(45529),c=n(50411),u=n(81138),m=n(28881),f=n(56798),h=n(33244),d=n(50862);const p={},g={};function y(e){const[t,n]=(0,a.useState)(p[e.upg.name]?p[e.upg.name]:h.FactionName.ECorp.toLowerCase()),[y,b]=(0,a.useState)(g[e.upg.name]??h.CompanyName.NoodleBar);function v(){e.hashManager.hashes>=e.hashManager.getUpgradeCost(e.upg.name)&&((0,r.fE)(e.upg.name,"Company Favor"===e.upg.name?y:t)||(0,s.X)("Failed to purchase upgrade. This may be because you do not have enough hashes, or because you do not have access to the feature upgrade affects."),e.rerender())}const k=e.hashManager,w=e.upg,E=k.getUpgradeCost(w.name),S=k.upgrades[w.name],C=w.effectText(S),x=k.hashes>=E;return a.createElement(m.Z,{sx:{p:1}},a.createElement(u.Z,null,a.createElement(l.v,{value:w.name})),a.createElement(u.Z,null,"Cost: ",a.createElement(c.S,{hashes:E}),", Bought: ",S," times"),a.createElement(u.Z,null,w.desc),!w.hasTargetServer&&!w.hasTargetCompany&&a.createElement(f.Z,{onClick:v,disabled:!x},"Buy"),w.hasTargetServer&&a.createElement(o.k,{purchase:v,canPurchase:x,value:t,serverType:o.D.Foreign,onChange:function(t){n(t.target.value),p[e.upg.name]=t.target.value}}),w.hasTargetCompany&&a.createElement(i.e,{purchase:v,canPurchase:x,value:y,onChange:function(t){(0,d.R)("CompanyName",t.target.value)&&(b(t.target.value),g[e.upg.name]=t.target.value)}}),S>0&&C&&a.createElement(u.Z,null,C))}},41965:(e,t,n)=>{"use strict";n.d(t,{_:()=>m});var a=n(67294),r=n(94043),o=n(50411),i=n(45259),s=n(48672),l=n(49173),c=n(81138),u=n(88775);function m(e){const t=(0,u.S)(200),n=l.J5.hashManager;if(!n)throw new Error("Player does not have a HashManager)");return a.createElement(s.u,{open:e.open,onClose:e.onClose},a.createElement(a.Fragment,null,a.createElement(c.Z,null,"Spend your hashes on a variety of different upgrades"),a.createElement(c.Z,null,"Hashes: ",a.createElement(o.S,{hashes:l.J5.hashManager.hashes})),Object.keys(r.L).map((e=>{const o=r.L[e];return a.createElement(i.q,{upg:o,hashManager:n,key:o.name,rerender:t})}))))}},49025:(e,t,n)=>{"use strict";n.d(t,{C:()=>l});var a=n(67294),r=n(93430),o=n(56798);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{"use strict";n.d(t,{r:()=>m});var a=n(67294),r=n(29538),o=n(49173),i=n(72360),s=n(85882),l=n(79198),c=n(50411),u=n(81138);function m(e){const t=(0,r.kw)();let n;return n=t?a.createElement(l.a,{hashes:e.totalProduction}):a.createElement(s.G,{money:e.totalProduction}),a.createElement(a.Fragment,null,a.createElement(u.Z,null,"Money:",a.createElement(i.W,{money:o.J5.money})),t&&a.createElement(a.Fragment,null,a.createElement(u.Z,null,"Hashes: ",a.createElement(c.S,{hashes:o.J5.hashManager.hashes})," / ",a.createElement(c.S,{hashes:o.J5.hashManager.capacity}))),a.createElement(u.Z,null,"Total Hacknet ",t?"Server":"Node"," Production: ",n))}},84758:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var a=n(67294),r=n(29538),o=n(49173),i=n(72360),s=n(56798);function l(e){const t=e.cost;let n;return n=(0,r.kw)()?(0,r.Dw)()?a.createElement(a.Fragment,null,"Hacknet Server limit reached"):a.createElement(a.Fragment,null,"Purchase Hacknet Server - ",a.createElement(i.W,{money:t,forPurchase:!0})):a.createElement(a.Fragment,null,"Purchase Hacknet Node - ",a.createElement(i.W,{money:t,forPurchase:!0})),a.createElement(s.Z,{disabled:!o.J5.canAfford(t),onClick:e.onClick},n)}},2228:(e,t,n)=>{"use strict";n.d(t,{B:()=>o,U:()=>i});var a=n(49173),r=n(72938);function o(){return a.J5.money<0?0:Math.min(.1*a.J5.money,(a.J5.hp.max-a.J5.hp.current)*r.t.HospitalCostPerHp)}function i(e){const t=a.J5.hp.current;a.J5.hp.current-=e;const n=o();return a.J5.hp.current=t,n}},80366:(e,t,n)=>{"use strict";n.d(t,{o:()=>i,y:()=>s});var a=n(49173),r=n(22738);function o(e,t){const n=t-Math.pow(e,.9)/250-a.J5.skills.intelligence/1600;return n<0?0:n>3?3:n}function i(e){return o(a.J5.skills.strength+a.J5.skills.defense+a.J5.skills.dexterity+a.J5.skills.agility+a.J5.skills.charisma,e)}function s(e){const t=9e3;return o((0,r.gX)(a.J5.mults.strength_exp*t,a.J5.mults.strength)+(0,r.gX)(a.J5.mults.defense_exp*t,a.J5.mults.defense)+(0,r.gX)(a.J5.mults.agility_exp*t,a.J5.mults.agility)+(0,r.gX)(a.J5.mults.dexterity_exp*t,a.J5.mults.dexterity)+(0,r.gX)(a.J5.mults.charisma_exp*t,a.J5.mults.charisma),e)}},20567:(e,t,n)=>{"use strict";n.d(t,{Ek:()=>l,kS:()=>s,tB:()=>c});var a=n(49173),r=n(97740),o=n(90356),i=n(33244);function s(e,t,n){const o=t*Math.pow(1.01,t);return Math.pow(e+1,2)*Math.pow(n,3)*3e3*o*(a.J5.hasAugmentation(i.AugmentationName.WKSharmonizer,!0)?1.5:1)*r.dQ.InfiltrationMoney}function l(e,t,n){const o=t*Math.pow(1.01,t);return Math.pow(e+1,1.1)*Math.pow(n,1.2)*30*o*(a.J5.hasAugmentation(i.AugmentationName.WKSharmonizer,!0)?1.5:1)*r.dQ.InfiltrationRep}function c(e,t){return t/o.b.reduce(((e,t)=>{var n;const a=(null===(n=t.infiltrationData)||void 0===n?void 0:n.startingSecurityLevel)||0;return e>a?e:a}),0)*5e3*(a.J5.hasAugmentation(i.AugmentationName.WKSharmonizer,!0)?2:1)*(1+e.favor/100)}},76915:(e,t,n)=>{"use strict";n.d(t,{q:()=>p});var a=n(28881),r=n(81138),o=n(67294),i=n(33244),s=n(49173),l=n(81055),c=n(44830),u=n(49179),m=n(78947),f=n(46083),h=n(68236);const d={Trivial:{timer:16e3,min:3,max:4},Normal:{timer:12500,min:2,max:3},Hard:{timer:15e3,min:3,max:4},Impossible:{timer:8e3,min:4,max:4}};function p(e){const t={timer:0,min:0,max:0};(0,m.s)(d,e.difficulty,t);const n=t.timer,[p]=(0,o.useState)(function(e){const t=(0,c.MX)(e.min,e.max);let n="";for(let e=0;e0&&(n+=" "),n+=g[Math.floor(Math.random()*g.length)];return n}(t)),[y,b]=(0,o.useState)(""),v=s.J5.hasAugmentation(i.AugmentationName.ChaosOfDionysus,!0);return o.createElement(o.Fragment,null,o.createElement(f.r,{millis:n,onExpire:e.onFailure}),o.createElement(a.Z,{sx:{display:"grid",justifyItems:"center",pb:1}},o.createElement(r.Z,{variant:"h4"},"Type it",v?"":" backward"),o.createElement(h.U,{onKeyDown:function(t){if(t.preventDefault(),function(e){return e.key===l.F.BACKSPACE||e.shiftKey&&"Shift"===e.key||e.ctrlKey||e.altKey}(t))return;const n=y+t.key.toUpperCase();p.startsWith(n)?p===n?e.onSuccess():b(n):e.onFailure()},onFailure:e.onFailure}),o.createElement(r.Z,{style:{transform:v?"none":"scaleX(-1)"}},p),o.createElement(r.Z,null,y,o.createElement(u._,null))))}const g=["ALGORITHM","ANALOG","APP","APPLICATION","ARRAY","BACKUP","BANDWIDTH","BINARY","BIT","BITE","BITMAP","BLOG","BLOGGER","BOOKMARK","BOOT","BROADBAND","BROWSER","BUFFER","BUG","BUS","BYTE","CACHE","CAPS LOCK","CAPTCHA","CD","CD-ROM","CLIENT","CLIPBOARD","CLOUD","COMPUTING","COMMAND","COMPILE","COMPRESS","COMPUTER","CONFIGURE","COOKIE","COPY","CPU","CYBERCRIME","CYBERSPACE","DASHBOARD","DATA","MINING","DATABASE","DEBUG","DECOMPRESS","DELETE","DESKTOP","DEVELOPMENT","DIGITAL","DISK","DNS","DOCUMENT","DOMAIN","DOMAIN NAME","DOT","DOT MATRIX","DOWNLOAD","DRAG","DVD","DYNAMIC","EMAIL","EMOTICON","ENCRYPT","ENCRYPTION","ENTER","EXABYTE","FAQ","FILE","FINDER","FIREWALL","FIRMWARE","FLAMING","FLASH","FLASH DRIVE","FLOPPY DISK","FLOWCHART","FOLDER","FONT","FORMAT","FRAME","FREEWARE","GIGABYTE","GRAPHICS","HACK","HACKER","HARDWARE","HOME PAGE","HOST","HTML","HYPERLINK","HYPERTEXT","ICON","INBOX","INTEGER","INTERFACE","INTERNET","IP ADDRESS","ITERATION","JAVA","JOYSTICK","JUNKMAIL","KERNEL","KEY","KEYBOARD","KEYWORD","LAPTOP","LASER PRINTER","LINK","LINUX","LOG OUT","LOGIC","LOGIN","LURKING","MACINTOSH","MACRO","MAINFRAME","MALWARE","MEDIA","MEMORY","MIRROR","MODEM","MONITOR","MOTHERBOARD","MOUSE","MULTIMEDIA","NET","NETWORK","NODE","NOTEBOOK","COMPUTER","OFFLINE","ONLINE","OPENSOURCE","OPERATING","SYSTEM","OPTION","OUTPUT","PAGE","PASSWORD","PASTE","PATH","PHISHING","PIRACY","PIRATE","PLATFORM","PLUGIN","PODCAST","POPUP","PORTAL","PRINT","PRINTER","PRIVACY","PROCESS","PROGRAM","PROGRAMMER","PROTOCOL","QUEUE","QWERTY","RAM","REALTIME","REBOOT","RESOLUTION","RESTORE","ROM","ROOT","ROUTER","RUNTIME","SAVE","SCAN","SCANNER","SCREEN","SCREENSHOT","SCRIPT","SCROLL","SCROLL","SEARCH","ENGINE","SECURITY","SERVER","SHAREWARE","SHELL","SHIFT","SHIFT KEY","SNAPSHOT","SOCIAL NETWORKING","SOFTWARE","SPAM","SPAMMER","SPREADSHEET","SPYWARE","STATUS","STORAGE","SUPERCOMPUTER","SURF","SYNTAX","TABLE","TAG","TERMINAL","TEMPLATE","TERABYTE","TEXT EDITOR","THREAD","TOOLBAR","TRASH","TROJAN HORSE","TYPEFACE","UNDO","UNIX","UPLOAD","URL","USER","USER INTERFACE","USERNAME","UTILITY","VERSION","VIRTUAL","VIRTUAL MEMORY","VIRUS","WEB","WEBMASTER","WEBSITE","WIDGET","WIKI","WINDOW","WINDOWS","WIRELESS","PROCESSOR","WORKSTATION","WEB","WORM","WWW","XML","ZIP"]},49179:(e,t,n)=>{"use strict";n.d(t,{_:()=>r});var a=n(67294);function r(){const[e,t]=(0,a.useState)(!0);return(0,a.useEffect)((()=>{const e=setInterval((()=>t((e=>!e))),1e3);return()=>clearInterval(e)})),a.createElement(a.Fragment,null,e?"|":a.createElement(a.Fragment,null," "))}},58622:(e,t,n)=>{"use strict";n.d(t,{C:()=>p});var a=n(28881),r=n(81138),o=n(67294),i=n(33244),s=n(49173),l=n(81055),c=n(44830),u=n(49179),m=n(78947),f=n(46083),h=n(68236);const d={Trivial:{timer:8e3,min:2,max:3},Normal:{timer:6e3,min:4,max:5},Hard:{timer:4e3,min:4,max:6},Impossible:{timer:2500,min:7,max:7}};function p(e){const t={timer:0,min:0,max:0};(0,m.s)(d,e.difficulty,t);const n=t.timer,[p,g]=(0,o.useState)(""),[y]=(0,o.useState)(function(e){let t="";const n=[l.F.OPEN_BRACKET,l.F.LESS_THAN,l.F.OPEN_PARENTHESIS,l.F.OPEN_BRACE];s.J5.hasAugmentation(i.AugmentationName.WisdomOfAthena,!0)&&n.splice(0,1);const a=(0,c.MX)(e.min,e.max);for(let e=0;e{"use strict";n.d(t,{u:()=>p});var a=n(28881),r=n(81138),o=n(67294),i=n(33244),s=n(49173),l=n(51087),c=n(81055),u=n(44830),m=n(78947),f=n(46083),h=n(68236);const d={Trivial:{timer:12e3,size:6},Normal:{timer:9e3,size:8},Hard:{timer:5e3,size:9},Impossible:{timer:2500,size:12}};function p(e){const t={timer:0,size:0};(0,m.s)(d,e.difficulty,t);const n=t.timer,[p]=(0,o.useState)(function(e){const t=[];t.push(g[Math.floor(Math.random()*g.length)]);for(let n=0;n0;t--){const n=Math.floor(Math.random()*(t+1)),a=e[t];e[t]=e[n],e[n]=a}}(t),t}(t)),[b,v]=(0,o.useState)(0),[k,w]=(0,o.useState)(0),E=p[k];(0,o.useEffect)((()=>{v(p.findIndex((e=>g.includes(e))))}),[p]);const S=l.Z.theme.primary,C=l.Z.theme.disabled;let x=S,N=S,M=S;if(s.J5.hasAugmentation(i.AugmentationName.BeautyOfAphrodite,!0)){const e=k+1>=p.length?0:k+1;let t=b-e;e>b&&(t=p.length-1-e+b);const n=k-1<0?p.length-1:k-1;let a=n-b;n=a&&!r?N:C,M=r?S:C}return o.createElement(o.Fragment,null,o.createElement(f.r,{millis:n,onExpire:e.onFailure}),o.createElement(a.Z,{sx:{display:"grid",justifyItems:"center"}},o.createElement(r.Z,{variant:"h4"},"Say something nice about the guard"),o.createElement(h.U,{onKeyDown:function(t){t.preventDefault();const n=t.key;if(n===c.F.SPACE)return void(g.includes(E)?e.onSuccess():e.onFailure());let a=k;for([c.F.UP_ARROW,c.F.W,c.F.RIGHT_ARROW,c.F.D].map((e=>e)).includes(n)&&a++,[c.F.DOWN_ARROW,c.F.S,c.F.LEFT_ARROW,c.F.A].map((e=>e)).includes(n)&&a--;a<0;)a+=p.length;for(;a>p.length-1;)a-=p.length;w(a)},onFailure:e.onFailure}),o.createElement(r.Z,{variant:"h5",color:x},u.uy),o.createElement(r.Z,{variant:"h5",color:M},E),o.createElement(r.Z,{variant:"h5",color:N},u.FH)))}const g=["affectionate","agreeable","bright","charming","creative","determined","energetic","friendly","funny","generous","polite","likable","diplomatic","helpful","giving","kind","hardworking","patient","dynamic","loyal","straightforward"],y=["aggressive","aloof","arrogant","big-headed","boastful","boring","bossy","careless","clingy","couch potato","cruel","cynical","grumpy","hot air","know it all","obnoxious","pain in the neck","picky","tactless","thoughtless","cringe"]},96200:(e,t,n)=>{"use strict";n.d(t,{y:()=>h});var a=n(28881),r=n(81138),o=n(67294),i=n(33244),s=n(49173),l=n(44830),c=n(78947),u=n(46083),m=n(68236);const f={Trivial:{timer:13e3,min:6,max:8},Normal:{timer:7e3,min:7,max:8},Hard:{timer:5e3,min:8,max:9},Impossible:{timer:3e3,min:9,max:10}};function h(e){const t={timer:0,min:0,max:0};(0,c.s)(f,e.difficulty,t);const n=t.timer,[h]=(0,o.useState)(function(e){const t=[l.xW,l.g3,l.uy,l.FH];let n="";for(let a=0;a<(0,l.MX)(e.min,e.max);a++){let e=t[Math.floor(4*Math.random())];for(;e===n[n.length-1];)e=t[Math.floor(4*Math.random())];n+=e}return n}(t)),[d,p]=(0,o.useState)(0),g=s.J5.hasAugmentation(i.AugmentationName.TrickeryOfHermes,!0);return o.createElement(o.Fragment,null,o.createElement(u.r,{millis:n,onExpire:e.onFailure}),o.createElement(a.Z,{sx:{display:"grid",justifyItems:"center"}},o.createElement(r.Z,{variant:"h4"},"Enter the Code!"),o.createElement(r.Z,{variant:"h4"},h[d]),o.createElement(m.U,{onKeyDown:function(t){t.preventDefault(),h[d]===(0,l._R)(t)||g&&h[d]===(0,l.h9)(t)?(p(d+1),d+1>=h.length&&e.onSuccess()):e.onFailure()},onFailure:e.onFailure})))}},50087:(e,t,n)=>{"use strict";n.d(t,{I:()=>i});var a=n(28881),r=n(81138),o=n(67294);function i(e){const[t,n]=(0,o.useState)(3);return(0,o.useEffect)((()=>{0!==t?setTimeout((()=>n(t-1)),300):e.onFinish()})),o.createElement(a.Z,{sx:{p:1,textAlign:"center"}},o.createElement(r.Z,{variant:"h4"},"Get Ready!"),o.createElement(r.Z,{variant:"h4"},t))}},35332:(e,t,n)=>{"use strict";n.d(t,{Y:()=>g});var a=n(28881),r=n(81138),o=n(30120),i=n(67294),s=n(33244),l=n(49173),c=n(51087),u=n(81055),m=n(44830),f=n(78947),h=n(46083),d=n(68236);const p={Trivial:{timer:12500,width:3,height:3,symbols:6},Normal:{timer:15e3,width:4,height:4,symbols:7},Hard:{timer:12500,width:5,height:5,symbols:8},Impossible:{timer:1e4,width:6,height:6,symbols:9}};function g(e){const t={timer:0,width:0,height:0,symbols:0};(0,f.s)(p,e.difficulty,t);const n=t.timer,[g]=(0,i.useState)(function(e){const t=[];for(let n=0;ne.map(((e,n)=>{const a=e===b[v],r=S&&!a?c.Z.theme.disabled:c.Z.theme.primary;n!==w[0]||t!==w[1]?C.push({color:r,content:e}):C.push({color:r,content:e,selected:!0})})))),i.createElement(i.Fragment,null,i.createElement(h.r,{millis:n,onExpire:e.onFailure}),i.createElement(a.Z,{sx:{display:"grid",justifyItems:"center",pb:1}},i.createElement(r.Z,{variant:"h4"},"Match the symbols!"),i.createElement(r.Z,{variant:"h5",color:c.Z.theme.primary},"Targets:"," ",b.map(((e,t)=>t==v?i.createElement("span",{key:`${t}`,style:{fontSize:"1em",color:c.Z.theme.infolight}},e," "):i.createElement("span",{key:`${t}`,style:{fontSize:"1em",color:c.Z.theme.primary}},e," ")))),i.createElement("br",null),i.createElement(o.Z,{sx:{display:"grid",gridTemplateColumns:`repeat(${Math.round(t.width)}, 1fr)`,gap:1}},C.map(((e,t)=>i.createElement(r.Z,{key:t,sx:{fontSize:"2em",color:e.color,border:e.selected?`2px solid ${c.Z.theme.infolight}`:"unset",lineHeight:"unset",p:e.selected?"2px":"4px"}},e.content)))),i.createElement(d.U,{onKeyDown:function(t){t.preventDefault();const n=[0,0];switch((0,m._R)(t)){case m.uy:n[1]--;break;case m.xW:n[0]--;break;case m.FH:n[1]++;break;case m.g3:n[0]++}const a=[w[0]+n[0],w[1]+n[1]];if(a[0]=(a[0]+g[0].length)%g[0].length,a[1]=(a[1]+g.length)%g.length,E(a),t.key===u.F.SPACE){if(g[w[1]][w[0]]!==b[v])return void e.onFailure();k(v+1),b.length===v+1&&e.onSuccess()}},onFailure:e.onFailure})))}function y(){return"ABCDEF0123456789"[Math.floor(16*Math.random())]}},78947:(e,t,n)=>{"use strict";function a(e,t,n){function a(e,t,a){function r(e,t,n){return(1-n)*e+n*t}for(const o of Object.keys(e))n[o]=r(e[o],t[o],a);return e}return t<0?a(e.Trivial,e.Trivial,0):t>=0&&t<1?a(e.Trivial,e.Normal,t):t>=1&&t<2?a(e.Normal,e.Hard,t-1):t>=2&&t<3?a(e.Hard,e.Impossible,t-2):a(e.Impossible,e.Impossible,0)}n.d(t,{s:()=>a})},66630:(e,t,n)=>{"use strict";n.d(t,{l:()=>C});var a,r=n(81138),o=n(78016),i=n(28881),s=n(56798),l=n(67294),c=n(33244),u=n(52947),m=n(24815),f=n(49173),h=n(76915),d=n(58622),p=n(64627),g=n(96200),y=n(50087),b=n(35332),v=n(87564),k=n(92504),w=n(30762),E=n(244);!function(e){e[e.Countdown=0]="Countdown",e[e.Minigame=1]="Minigame",e[e.Result=2]="Result",e[e.Sell=3]="Sell"}(a||(a={}));const S=[k.A,d.C,h.q,p.u,g.y,b.Y,v.A,E.y];function C(e){const[t,n]=(0,l.useState)(1),[h,d]=(0,l.useState)(a.Countdown),[p,g]=(0,l.useState)(""),[b,v]=(0,l.useState)({lastGames:[-1,-1],id:Math.floor(Math.random()*S.length)}),k=(0,l.useCallback)((()=>{v({lastGames:[b.lastGames[1],b.id],id:(()=>{let e=b.lastGames[0];const t=[b.lastGames[0],b.lastGames[1],b.id];for(;t.includes(e);)e=Math.floor(Math.random()*S.length);return e})()})}),[b]);function E(e){g((t=>{let n=t;return n+=e?"✓":"✗",n.length>15&&(n=n.slice(1)),n}))}const C=(0,l.useCallback)((()=>{E(!0),t===e.MaxLevel?d(a.Sell):(d(a.Countdown),n(t+1)),k()}),[t,e.MaxLevel,k]),x=(0,l.useCallback)((t=>{d(a.Countdown),E(!1);const n=null!=t&&t.automated?f.J5.hp.current:3*e.StartingDifficulty*(f.J5.hasAugmentation(c.AugmentationName.WKSharmonizer,!0)?.5:1);f.J5.takeDamage(n)?u.F.toPage(m.T3.City):k()}),[e.StartingDifficulty,k]);let N;switch(h){case a.Countdown:N=l.createElement(y.I,{onFinish:()=>d(a.Minigame)});break;case a.Minigame:{const n=S[b.id];N=l.createElement(n,{onSuccess:C,onFailure:x,difficulty:e.Difficulty+t/50});break}case a.Sell:N=l.createElement(w.f,{StartingDifficulty:e.StartingDifficulty,Difficulty:e.Difficulty,Reward:e.Reward,MaxLevel:e.MaxLevel})}function M(){return l.createElement(r.Z,{variant:"h4"},l.createElement("span",{style:{color:"gray"}},p.slice(0,p.length-1)),p[p.length-1])}return l.createElement(o.Z,null,l.createElement(i.Z,{sx:{p:1,mb:1,display:"grid",justifyItems:"center",gap:1}},h!==a.Sell&&l.createElement(s.Z,{sx:{width:"100%"},onClick:function(){u.F.toPage(m.T3.City)}},"Cancel Infiltration"),l.createElement(r.Z,{variant:"h5"},"Level ",t," / ",e.MaxLevel),l.createElement(M,null)),N)}},46083:(e,t,n)=>{"use strict";n.d(t,{r:()=>l});var a=n(28881),r=n(67294),o=n(33244),i=n(49173),s=n(3197);function l(e){let{millis:t,onExpire:n,noPaper:l,ignoreAugment_WKSharmonizer:c}=e;const[u,m]=(0,r.useState)(100),f=(!c&&i.J5.hasAugmentation(o.AugmentationName.WKSharmonizer,!0)?1.3:1)*t;return(0,r.useEffect)((()=>{const e=setInterval((()=>{m((e=>(e<=0&&n(),e-200/f*100)))}),200);return()=>{clearInterval(e)}}),[n,f]),l?r.createElement(s.k,{variant:"determinate",value:u,color:"primary"}):r.createElement(a.Z,{sx:{p:1,mb:1}},r.createElement(s.k,{variant:"determinate",value:u,color:"primary"}))}},30213:(e,t,n)=>{"use strict";n.d(t,{m:()=>c});var a=n(67294),r=n(52947),o=n(24815),i=n(80366),s=n(66630),l=n(73823);function c(e){const[t,n]=(0,a.useState)(!1);if(void 0===e.location.infiltrationData)throw new Error("Trying to do infiltration on invalid location.");const c=e.location.infiltrationData.startingSecurityLevel,u=(0,i.o)(c),m=(0,i.y)(c);return a.createElement("div",{style:{display:"flex",alignItems:"center",height:"calc(100vh - 16px)"}},t?a.createElement(s.l,{StartingDifficulty:c,Difficulty:u,Reward:m,MaxLevel:e.location.infiltrationData.maxClearanceLevel}):a.createElement(l.p,{Location:e.location,Difficulty:u,MaxLevel:e.location.infiltrationData.maxClearanceLevel,start:()=>n(!0),cancel:function(){r.F.toPage(o.T3.City)}}))}},73823:(e,t,n)=>{"use strict";n.d(t,{p:()=>d});var a=n(7542),r=n(78016),o=n(28881),i=n(81138),s=n(17575),l=n(30120),c=n(56798),u=n(67294),m=n(51087),f=n(22115);function h(e,t){let n="";return t<=0?t=0:t>13?t=13:(t--,n=">"),u.createElement("span",{style:{color:e}},"=".repeat(t),n," ".repeat(13-n.length-t))}function d(e){return u.createElement(r.Z,{sx:{alignItems:"center"}},u.createElement(o.Z,{sx:{p:1,mb:1,display:"grid",justifyItems:"center"}},u.createElement(i.Z,{variant:"h4"},"Infiltrating ",u.createElement("b",null,e.Location.name)),u.createElement(i.Z,{variant:"h6"},u.createElement("b",null,"Maximum Level: "),e.MaxLevel),u.createElement(i.Z,{variant:"h6",sx:{color:e.Difficulty>2?m.Z.theme.error:e.Difficulty>1?m.Z.theme.warning:m.Z.theme.primary,display:"flex",alignItems:"center"}},u.createElement("b",null,"Difficulty: "),(0,f.$j)(33.3333*e.Difficulty)," / 100",e.Difficulty>1.5&&u.createElement(s.Z,{title:u.createElement(i.Z,{color:"error"},"This location is too heavily guarded for your current stats. It is recommended that you try training, or finding an easier location.")},u.createElement(a.Z,{sx:{ml:1}}))),u.createElement(i.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"[",0===(t=e.Difficulty)?u.createElement("span",{style:{color:"white"}},">"," ".repeat(38)):u.createElement(u.Fragment,null,h(m.Z.theme.primary,13*t),h(m.Z.theme.warning,13*(t-1)),h(m.Z.theme.error,13*(t-2))),"]"),u.createElement(i.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"▲ ▲ ▲ ▲"),u.createElement(i.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," Trivial Normal Hard Impossible")),u.createElement(o.Z,{sx:{p:1,display:"grid",justifyItems:"center"}},u.createElement(i.Z,{sx:{width:"75%",textAlign:"center"}},u.createElement("b",null,"Infiltration")," is a series of short minigames that get progressively harder. You take damage for failing them. Reaching the maximum level rewards you with intel that you can trade for money or reputation.",u.createElement("br",null),u.createElement("br",null),u.createElement("b",null,"Gameplay:")),u.createElement("ul",null,u.createElement(i.Z,null,u.createElement("li",null,"The minigames you play are randomly selected.",u.createElement("br",null),"It might take you a few tries to get used to them."),u.createElement("li",null,"No game requires use of the mouse."),u.createElement("li",null,u.createElement("b",null,"Spacebar")," is the default action/confirm button."),u.createElement("li",null,"The ",u.createElement("b",null,"arrow keys")," and ",u.createElement("b",null,"WASD")," can be used interchangeably."),u.createElement("li",null,"Sometimes the rest of the keyboard is used."))),u.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr",width:"100%"}},u.createElement(c.Z,{onClick:e.start},"Start"),u.createElement(c.Z,{onClick:e.cancel},"Cancel"))));var t}},68236:(e,t,n)=>{"use strict";n.d(t,{U:()=>r});var a=n(67294);function r(e){return(0,a.useEffect)((()=>{function t(t){t.isTrusted&&e.onKeyDown.bind(this)(t)}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)})),a.createElement(a.Fragment,null)}},87564:(e,t,n)=>{"use strict";n.d(t,{A:()=>k});var a=n(13761),r=n(95537),o=n(7542),i=n(28881),s=n(81138),l=n(30120),c=n(96486),u=n(67294),m=n(33244),f=n(49173),h=n(51087),d=n(81055),p=n(44830),g=n(78947),y=n(46083),b=n(68236);const v={Trivial:{timer:15e3,width:3,height:3,mines:4},Normal:{timer:15e3,width:4,height:4,mines:7},Hard:{timer:15e3,width:5,height:5,mines:11},Impossible:{timer:15e3,width:6,height:6,mines:15}};function k(e){const t={timer:0,width:0,height:0,mines:0};(0,g.s)(v,e.difficulty,t);const n=t.timer,[k]=(0,u.useState)(function(e){const t=w(e);for(let n=0;n{const e=setTimeout((()=>M(!1)),2e3);return()=>clearInterval(e)}),[]);const T=[];return k.map(((e,t)=>e.map(((e,n)=>{N?T.push({flagged:Boolean(k[t][n])}):n===C[0]&&t===C[1]?T.push({current:!0}):E[t][n]?T.push({marked:!0}):A&&k[t][n]?T.push({flagged:!0}):T.push({})})))),u.createElement(u.Fragment,null,u.createElement(y.r,{millis:n,onExpire:e.onFailure}),u.createElement(i.Z,{sx:{display:"grid",justifyItems:"center",pb:1}},u.createElement(s.Z,{variant:"h4"},N?"Remember all the mines!":"Mark all the mines!"),u.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:`repeat(${Math.round(t.width)}, 1fr)`,gridTemplateRows:`repeat(${Math.round(t.height)}, 1fr)`,gap:1}},T.map((e=>{let t,n;return e.marked?(t=h.Z.theme.warning,n=u.createElement(a.Z,null)):e.current?(t=h.Z.theme.infolight,n=u.createElement(r.Z,null)):e.flagged?(t=h.Z.theme.error,n=u.createElement(o.Z,null)):(t=h.Z.theme.primary,n=u.createElement(u.Fragment,null)),u.createElement(s.Z,{key:`${e}${(0,c.uniqueId)()}`,sx:{color:t,border:`2px solid ${e.current?h.Z.theme.infolight:h.Z.theme.primary}`,height:"32px",width:"32px",display:"flex",alignItems:"center",justifyContent:"center"}},n)}))),u.createElement(b.U,{onKeyDown:function(t){if(t.preventDefault(),N)return;const n=[0,0];switch((0,p._R)(t)){case p.uy:n[1]--;break;case p.xW:n[0]--;break;case p.FH:n[1]++;break;case p.g3:n[0]++}const a=[C[0]+n[0],C[1]+n[1]];if(a[0]=(a[0]+k[0].length)%k[0].length,a[1]=(a[1]+k.length)%k.length,x(a),t.key==d.F.SPACE){if(!k[C[1]][C[0]])return void e.onFailure();S((t=>(t[C[1]][C[0]]=!0,function(e,t){function n(e){return e.flat().reduce(((e,t)=>e+(t?1:0)),0)}return n(e)===n(t)}(k,t)&&e.onSuccess(),t)))}},onFailure:e.onFailure})))}function w(e){const t=[];for(let n=0;n{"use strict";n.d(t,{A:()=>d});var a=n(28881),r=n(81138),o=n(30120),i=n(67294),s=n(33244),l=n(49173),c=n(81055),u=n(78947),m=n(46083),f=n(68236);const h={Trivial:{window:600},Normal:{window:325},Hard:{window:250},Impossible:{window:150}};function d(e){let{difficulty:t,onSuccess:n,onFailure:d}=e;const[p,g]=(0,i.useState)(0),[y,b]=(0,i.useState)(!1),[v,k]=(0,i.useState)(0);return(0,i.useEffect)((()=>{const e={window:0};(0,u.s)(h,t,e);const n=e.window,a=3250*Math.random()+1500-(250+n);g(0),k(a),b(l.J5.hasAugmentation(s.AugmentationName.MightOfAres,!0));let r=setTimeout((()=>{g(1),r=setTimeout((()=>{g(2),r=setTimeout((()=>d()),250)}),n)}),a);return()=>clearTimeout(r)}),[t,n,d]),i.createElement(i.Fragment,null,i.createElement(m.r,{millis:5e3,onExpire:d}),i.createElement(a.Z,{sx:{display:"grid",justifyItems:"center"}},i.createElement(r.Z,{variant:"h4"},"Attack when his guard is down!"),y&&i.createElement(o.Z,{sx:{my:1}},i.createElement(r.Z,{variant:"h5"},"Guard will drop in..."),i.createElement(m.r,{millis:v,onExpire:()=>null,ignoreAugment_WKSharmonizer:!0,noPaper:!0})),0===p&&i.createElement(r.Z,{variant:"h4"},"Guarding ..."),1===p&&i.createElement(r.Z,{variant:"h4"},"Preparing?"),2===p&&i.createElement(r.Z,{variant:"h4"},"ATTACKING!"),i.createElement(f.U,{onKeyDown:function(e){e.preventDefault(),e.key===c.F.SPACE&&(1!==p?d():n())},onFailure:d})))}},30762:(e,t,n)=>{"use strict";n.d(t,{f:()=>w});var a=n(67294),r=n(28881),o=n(81138),i=n(30120),s=n(26023),l=n(98649),c=n(56798),u=n(49173),m=n(33244),f=n(94542),h=n(58427),d=n(52947),p=n(24815),g=n(72360),y=n(17365),b=n(22115),v=n(20567),k=n(50862);function w(e){const[t,n]=(0,a.useState)("none");function w(){(0,f.kl)(h.i[m.FactionName.ShadowsOfAnarchy]),N&&(E.playerReputation+=x),d.F.toPage(p.T3.City)}const E=h.i[m.FactionName.ShadowsOfAnarchy],S=(0,v.Ek)(e.Reward,e.MaxLevel,e.StartingDifficulty),C=(0,v.kS)(e.Reward,e.MaxLevel,e.StartingDifficulty),x=(0,v.tB)(E,e.StartingDifficulty),N=u.J5.factions.includes(m.FactionName.ShadowsOfAnarchy);return a.createElement(r.Z,{sx:{p:1,textAlign:"center",display:"flex",alignItems:"center",flexDirection:"column"}},a.createElement(o.Z,{variant:"h4"},"Infiltration successful!"),a.createElement(o.Z,{variant:"h5",color:"primary",width:"75%"},"You"," ",N?a.createElement(a.Fragment,null,"have gained ",(0,b.$j)(x,2)," rep for ",m.FactionName.ShadowsOfAnarchy," and"," "):a.createElement(a.Fragment,null),"can trade the confidential information you found for money or reputation."),a.createElement(i.Z,{sx:{width:"fit-content"}},a.createElement(i.Z,{sx:{width:"100%"}},a.createElement(s.Z,{value:t,onChange:function(e){n(e.target.value)},sx:{mr:1}},a.createElement(l.Z,{key:"none",value:"none"},"none"),u.J5.factions.filter((e=>h.i[e].getInfo().offersWork())).map((e=>a.createElement(l.Z,{key:e,value:e},e)))),a.createElement(c.Z,{onClick:function(){(0,k.m)("FactionName").isMember(t)&&(h.i[t].playerReputation+=S,w())}},"Trade for ",a.createElement(y.Y,{reputation:S})," reputation")),a.createElement(c.Z,{onClick:function(){u.J5.gainMoney(C,"infiltration"),w()},sx:{width:"100%"}},"Sell for ",a.createElement(g.W,{money:C}))),a.createElement(c.Z,{onClick:w,sx:{width:"100%",mt:1}},"Quit"))}},244:(e,t,n)=>{"use strict";n.d(t,{y:()=>k});var a=n(67294),r=n(28881),o=n(81138),i=n(30120),s=n(33244),l=n(49173),c=n(51087),u=n(81055),m=n(44830),f=n(78947),h=n(46083),d=n(68236),p=n(20145);const g={Trivial:{timer:9e3,wiresmin:4,wiresmax:4,rules:2},Normal:{timer:7e3,wiresmin:6,wiresmax:6,rules:2},Hard:{timer:5e3,wiresmin:8,wiresmax:8,rules:3},Impossible:{timer:4e3,wiresmin:9,wiresmax:9,rules:4}},y=[u.F.PIPE,u.F.DOT,u.F.FORWARD_SLASH,u.F.HYPHEN,"█",u.F.HASH],b=["red","#FFC107","blue","white"],v={red:"red","#FFC107":"yellow",blue:"blue",white:"white"};function k(e){let{onSuccess:t,onFailure:n,difficulty:u}=e;const[v,k]=(0,a.useState)([]),[S,C]=(0,a.useState)([]),[x,N]=(0,a.useState)(0),[M,A]=(0,a.useState)([]),[T,L]=(0,a.useState)(new Set),[R,F]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{const e={timer:0,wiresmin:0,wiresmax:0,rules:0};(0,f.s)(g,u,e);const t=function(e){const t=[],n=(0,m.MX)(e.wiresmin,e.wiresmax);for(let e=0;e{for(const r of n)if(r.shouldCut(e,t))return void a.add(t)})),N(e.timer),C(t),A(t.map((e=>!1))),k(n),L(a),F(l.J5.hasAugmentation(s.AugmentationName.KnowledgeOfApollo,!0))}),[u]),a.createElement(a.Fragment,null,a.createElement(h.r,{millis:x,onExpire:n}),a.createElement(r.Z,{sx:{display:"grid",justifyItems:"center",pb:1}},a.createElement(o.Z,{variant:"h4",sx:{width:"75%",textAlign:"center"}},"Cut the wires with the following properties! (keyboard 1 to 9)"),v.map(((e,t)=>a.createElement(o.Z,{key:t},e.toString()))),a.createElement(i.Z,{sx:{display:"grid",gridTemplateColumns:`repeat(${S.length}, 1fr)`,columnGap:3,justifyItems:"center"}},Array.from({length:S.length}).map(((e,t)=>{const n=M[t]||T.has(t),r=R&&!n?c.Z.theme.disabled:c.Z.theme.primary;return a.createElement(o.Z,{key:t,style:{color:r}},t+1)})),new Array(8).fill(0).map(((e,t)=>a.createElement(a.Fragment,{key:t},S.map(((e,n)=>{if((3===t||4===t)&&M[n])return a.createElement(o.Z,{key:n});const r=M[n]||T.has(n),i=R&&!r?c.Z.theme.disabled:e.colors[t%e.colors.length];return a.createElement(o.Z,{key:n,style:{color:i}},"|",e.wireType,"|")})))))),a.createElement(d.U,{onKeyDown:function(e){e.preventDefault();const a=parseInt(e.key);if(!(0,p.a)(a)||a>S.length)return;const r=a-1;if(M[r])return;if(!T.has(r))return n();const o=new Set(T);if(o.delete(r),0===o.size)return t();const i=M.map(((e,t)=>t===r||e));L(o),A(i)},onFailure:n})))}function w(e){const t=Math.floor(Math.random()*e.length);return{toString:()=>`Cut wires number ${t+1}.`,shouldCut:(e,n)=>t===n}}function E(e){const t=e[Math.floor(Math.random()*e.length)].colors[0];return{toString:()=>`Cut all wires colored ${v[t]}.`,shouldCut:e=>e.colors.includes(t)}}},44830:(e,t,n)=>{"use strict";n.d(t,{FH:()=>i,MX:()=>r,_R:()=>c,g3:()=>l,h9:()=>u,uy:()=>o,xW:()=>s});var a=n(81055);function r(e,t){return Math.random()*(t-e)+e}const o="↑",i="↓",s="←",l="→";function c(e){switch(e.key){case a.F.UP_ARROW:case a.F.W:return o;case a.F.LEFT_ARROW:case a.F.A:return s;case a.F.DOWN_ARROW:case a.F.S:return i;case a.F.RIGHT_ARROW:case a.F.D:return l}return""}function u(e){switch(e.key){case a.F.DOWN_ARROW:case a.F.S:return o;case a.F.RIGHT_ARROW:case a.F.D:return s;case a.F.UP_ARROW:case a.F.W:return i;case a.F.LEFT_ARROW:case a.F.A:return l}return""}},40780:(e,t,n)=>{"use strict";n.d(t,{$o:()=>a,ZF:()=>c,mp:()=>l,nu:()=>m,oo:()=>u,wP:()=>s});var a,r=n(49173),o=n(33244),i=n(45756);!function(e){e[e.Start=0]="Start",e[e.GoToCharacterPage=1]="GoToCharacterPage",e[e.CharacterPage=2]="CharacterPage",e[e.CharacterGoToTerminalPage=3]="CharacterGoToTerminalPage",e[e.TerminalIntro=4]="TerminalIntro",e[e.TerminalHelp=5]="TerminalHelp",e[e.TerminalLs=6]="TerminalLs",e[e.TerminalScan=7]="TerminalScan",e[e.TerminalScanAnalyze1=8]="TerminalScanAnalyze1",e[e.TerminalScanAnalyze2=9]="TerminalScanAnalyze2",e[e.TerminalConnect=10]="TerminalConnect",e[e.TerminalAnalyze=11]="TerminalAnalyze",e[e.TerminalNuke=12]="TerminalNuke",e[e.TerminalManualHack=13]="TerminalManualHack",e[e.TerminalHackingMechanics=14]="TerminalHackingMechanics",e[e.TerminalGoHome=15]="TerminalGoHome",e[e.TerminalCreateScript=16]="TerminalCreateScript",e[e.TerminalTypeScript=17]="TerminalTypeScript",e[e.TerminalFree=18]="TerminalFree",e[e.TerminalRunScript=19]="TerminalRunScript",e[e.TerminalGoToActiveScriptsPage=20]="TerminalGoToActiveScriptsPage",e[e.ActiveScriptsPage=21]="ActiveScriptsPage",e[e.ActiveScriptsToTerminal=22]="ActiveScriptsToTerminal",e[e.TerminalTailScript=23]="TerminalTailScript",e[e.GoToHacknetNodesPage=24]="GoToHacknetNodesPage",e[e.HacknetNodesIntroduction=25]="HacknetNodesIntroduction",e[e.HacknetNodesGoToWorldPage=26]="HacknetNodesGoToWorldPage",e[e.WorldDescription=27]="WorldDescription",e[e.DocumentationPageInfo=28]="DocumentationPageInfo",e[e.End=29]="End"}(a||(a={}));const s={currStep:a.Start,isRunning:!1,stepIsDone:{[a.Start]:!1,[a.GoToCharacterPage]:!1,[a.CharacterPage]:!1,[a.CharacterGoToTerminalPage]:!1,[a.TerminalIntro]:!1,[a.TerminalHelp]:!1,[a.TerminalLs]:!1,[a.TerminalScan]:!1,[a.TerminalScanAnalyze1]:!1,[a.TerminalScanAnalyze2]:!1,[a.TerminalConnect]:!1,[a.TerminalAnalyze]:!1,[a.TerminalNuke]:!1,[a.TerminalManualHack]:!1,[a.TerminalHackingMechanics]:!1,[a.TerminalGoHome]:!1,[a.TerminalCreateScript]:!1,[a.TerminalTypeScript]:!1,[a.TerminalFree]:!1,[a.TerminalRunScript]:!1,[a.TerminalGoToActiveScriptsPage]:!1,[a.ActiveScriptsPage]:!1,[a.ActiveScriptsToTerminal]:!1,[a.TerminalTailScript]:!1,[a.GoToHacknetNodesPage]:!1,[a.HacknetNodesIntroduction]:!1,[a.HacknetNodesGoToWorldPage]:!1,[a.WorldDescription]:!1,[a.DocumentationPageInfo]:!1,[a.End]:!1}};function l(){s.isRunning=!0,s.currStep=a.Start}function c(){s.stepIsDone[s.currStep]=!0,s.currStepa.Start&&(s.currStep-=1),i.p.emit()}function m(){s.isRunning=!1,s.currStep=a.Start;const e=r.J5.getHomeComputer().messages,t=o.LiteratureName.HackersStartingHandbook;e.includes(t)||e.push(t),i.p.emit()}},33986:(e,t,n)=>{"use strict";let a;n.d(t,{z:()=>a}),function(e){e.HackersStartingHandbook="hackers-starting-handbook.lit",e.CorporationManagementHandbook="corporation-management-handbook.lit",e.HistoryOfSynthoids="history-of-synthoids.lit",e.AGreenTomorrow="A-Green-Tomorrow.lit",e.AlphaOmega="alpha-omega.lit",e.SimulatedReality="simulated-reality.lit",e.BeyondMan="beyond-man.lit",e.BrighterThanTheSun="brighter-than-the-sun.lit",e.DemocracyIsDead="democracy-is-dead.lit",e.Sector12Crime="sector-12-crime.lit",e.ManAndMachine="man-and-machine.lit",e.SecretSocieties="secret-societies.lit",e.TheFailedFrontier="the-failed-frontier.lit",e.CodedIntelligence="coded-intelligence.lit",e.SyntheticMuscles="synthetic-muscles.lit",e.TensionsInTechRace="tensions-in-tech-race.lit",e.CostOfImmortality="cost-of-immortality.lit",e.TheHiddenWorld="the-hidden-world.lit",e.TheNewGod="the-new-god.lit",e.NewTriads="new-triads.lit",e.TheSecretWar="the-secret-war.lit"}(a||(a={}))},6624:(e,t,n)=>{"use strict";n.d(t,{x:()=>r});var a=n(64962);class r{constructor(e){let{title:t,filename:n,text:r}=e;this.title=t,this.filename=(0,a.Tp)(n),this.text=r}}},20404:(e,t,n)=>{"use strict";n.d(t,{O:()=>o});var a=n(85321),r=n(39463);function o(e){const t=a.n[e];if(null==t)return;const n=`${t.title}

${t.text}`;(0,r.X)(n,!0)}},85321:(e,t,n)=>{"use strict";n.d(t,{n:()=>o});var a=n(33244),r=n(6624);const o={[a.LiteratureName.HackersStartingHandbook]:new r.x({title:"The Beginner's Guide to Hacking",filename:a.LiteratureName.HackersStartingHandbook,text:"When starting out, hacking is the most profitable way to earn money and progress. This is a brief collection of tips/pointers on how to make the most out of your hacking scripts.

-hack() and grow() both work by percentages. hack() steals a certain percentage of the money on a server, and grow() increases the amount of money on a server by some percentage (multiplicatively)

-Because hack() and grow() work by percentages, they are more effective if the target server has a high amount of money. Therefore, you should try to increase the amount of money on a server (using grow()) to a certain amount before hacking it. Two important Netscript functions for this are getServerMoneyAvailable() and getServerMaxMoney()

-Keep security level low. Security level affects everything when hacking. Two important Netscript functions for this are getServerSecurityLevel() and getServerMinSecurityLevel()

-Purchase additional servers by visiting 'Alpha Enterprises' in the city. They are relatively cheap and give you valuable RAM to run more scripts early in the game

-Prioritize upgrading the RAM on your home computer. This can also be done at 'Alpha Enterprises'

-Many low level servers have free RAM. You can use this RAM to run your scripts. Use the scp Terminal or Netscript command to copy your scripts onto these servers and then run them."}),[a.LiteratureName.CorporationManagementHandbook]:new r.x({title:"The Complete Handbook for Creating a Successful Corporation",filename:a.LiteratureName.CorporationManagementHandbook,text:"Getting Started with Corporations
To get started, visit the City Hall in Sector-12 in order to create a Corporation. This requires $150b of your own money, but this $150b will get put into your Corporation's funds. If you're in BitNode 3 you also have option to get seed money from the government in exchange for 500m shares. Your Corporation can have many different divisions, each in a different Industry. There are many different types of Industries, each with different properties. To create your first division, click the 'Expand' (into new Industry) button at the top of the management UI. The Agriculture industry is recommended for your first division.

The first thing you'll need to do is hire some employees. Employees can be assigned to five different positions. Each position has a different effect on various aspects of your Corporation. It is recommended to have at least one employee at each position.

Each industry uses some combination of Materials in order to produce other Materials and/or create Products. Specific information about this is displayed in each of your divisions' UI.

Products are special, industry-specific objects. They are different than Materials because you must manually choose to develop them, and you can choose to develop any number of Products. Developing a Product takes time, but a Product typically generates significantly more revenue than any Material. Not all industries allow you to create Products. To create a Product, look for a button in the top-left panel of the division UI (e.g. For the Software Industry, the button says 'Develop Software').

To get your supply chain system started, purchase the Materials that your industry needs to produce other Materials/Products. This can be done by clicking the 'Buy' button next to the corresponding Material(s). After you have the required Materials, you will immediately start production. The amount and quality/effective rating of Materials/Products you produce is based on a variety of factors, such as your employees and their productivity and the quality of materials used for production.

Once you start producing Materials/Products, you can sell them in order to start earning revenue. This can be done by clicking the 'Sell' button next to the corresponding Material or Product. The amount of Material/Product you sell is dependent on a wide variety of different factors. In order to produce and sell a Product you'll have to fully develop it first.

These are the basics of getting your Corporation up and running! Now, you can start purchasing upgrades to improve your bottom line. If you need money, consider looking for seed investors, who will give you money in exchange for stock shares. Otherwise, once you feel you are ready, take your Corporation public! Once your Corporation goes public, you can no longer find investors. Instead, your Corporation will be publicly traded and its stock price will change based on how well it's performing financially. In order to make money for yourself you can set dividends for a solid reliable income or you can sell your stock shares in order to make quick money.

Tips/Pointers
-Start with one division, such as Agriculture. Get it profitable on it's own, then expand to a division that consumes/produces a material that the division you selected produces/consumes.

-Materials are profitable, but Products are where the real money is, although if the product had a low development budget or is produced with low quality materials it won't sell well.

-The 'Smart Supply' upgrade is extremely useful. Consider purchasing it as soon as possible.

-Purchasing Hardware, Robots, AI Cores, and Real Estate can potentially increase your production. The effects of these depend on what industry you are in.

-In order to optimize your production, you will need a good balance of all employee positions, about 1/9 should be interning

-Quality of materials used for production affects the quality/effective rating of materials/products produced, so vertical integration is important for high profits.

-Materials purchased from the open market are always of quality 1.

-The price at which you can sell your Materials/Products is highly affected by the quality/effective rating

-When developing a product, different employee positions affect the development process differently, some improve the development speed, some improve the rating of the finished product.

-If your employees have low morale or energy, their production will greatly suffer. Having enough interns will make sure those stats get high and stay high.

-Don't forget to advertise your company. You won't have any business if nobody knows you.

-Having company awareness is great, but what's really important is your company's popularity. Try to keep your popularity as high as possible to see the biggest benefit for your sales

-Remember, you need to spend money to make money!

-Corporations do not reset when installing Augmentations, but they do reset when destroying a BitNode"}),[a.LiteratureName.HistoryOfSynthoids]:new r.x({title:"A Brief History of Synthoids",filename:a.LiteratureName.HistoryOfSynthoids,text:`Synthetic androids, or Synthoids for short, are genetically engineered robots and, short of Augmentations, are composed entirely of organic substances. For this reason, Synthoids are virtually identical to humans in form, composition, and appearance.

Synthoids were first designed and manufactured by ${a.FactionName.OmniTekIncorporated} sometime around the middle of the century. Their original purpose was to be used for manual labor and as emergency responders for disasters. As such, they were initially programmed only for their specific tasks. Each iteration that followed improved upon the intelligence and capabilities of the Synthoids. By the 6th iteration, called MK-VI, the Synthoids were so smart and capable enough of making their own decisions that many argued ${a.FactionName.OmniTekIncorporated} had created the first sentient AI. These MK-VI Synthoids were produced in mass quantities (estimates up to 50 billion) with the hopes of increasing society's productivity and bolstering the global economy. Stemming from humanity's desire for technological advancement, optimism and excitement about the future had never been higher.

All of that excitement and optimism quickly turned to fear, panic, and dread in 2070, when a terrorist group called Ascendis Totalis hacked into ${a.FactionName.OmniTekIncorporated} and uploaded a rogue AI into several of their Synthoid manufacturing facilities. This hack went undetected and for months ${a.FactionName.OmniTekIncorporated} unknowingly churned out legions of Synthoids embedded with this rogue AI. Then, on December 24th, 2070, Omnica activated dormant protocols in the rogue AI, causing all of the infected Synthoids to immediately launch a military campaign to seek and destroy all of humanity.

What ensued was the deadliest conflict in human history. This crisis, now commonly known as the Synthoid Uprising, resulted in almost ten billion deaths over the course of a year. Despite the nations of the world banding together to combat the threat, the MK-VI Synthoids were simply stronger, faster, more intelligent, and more adaptable than humans, outsmarting them at every turn.

It wasn't until the sacrifice of an elite international military taskforce, called the ${a.FactionName.Bladeburners}, that humanity was finally able to defeat the Synthoids. The ${a.FactionName.Bladeburners}' final act was a suicide bombing mission that destroyed a large portion of the MK-VI Synthoids, including many of its leaders. In the following weeks militaries from around the world were able to round up and shut down the remaining rogue MK-VI Synthoids, ending the Synthoid Uprising.

In the aftermath of the bloodshed, the Synthoid Accords were drawn up. These Accords banned ${a.FactionName.OmniTekIncorporated} from manufacturing any Synthoids beyond the MK-III series. They also banned any other corporation from constructing androids with advanced, near-sentient AI. MK-VI Synthoids that did not have the rogue Ascendis Totalis AI were allowed to continue their existence, but they were stripped of all rights and protections as they were not considered humans. They were also banned from doing anything that may pose a global security threat, such as working for any military/defense organization or conducting any bioengineering, computing, or robotics related research.

Unfortunately, many believe that not all of the rogue MK-VI Synthoids from the Uprising were found and destroyed, and that many of them are blending in as normal humans in society today. In response, many nations have created ${a.FactionName.Bladeburners} divisions, special military branches that are tasked with investigating and dealing with any Synthoid threats.

To this day, tensions still exist between the remaining Synthoids and humans as a result of the Uprising.

Nobody knows what happened to the terrorist group Ascendis Totalis.`}),[a.LiteratureName.AGreenTomorrow]:new r.x({title:"A Green Tomorrow",filename:a.LiteratureName.AGreenTomorrow,text:"Starting a few decades ago, there was a massive global movement towards the generation of renewable energy in an effort to combat global warming and climate change. The shift towards renewable energy was a big success, or so it seemed. In 2045 a staggering 80% of the world's energy came from non-renewable fossil fuels. Now, about three decades later, that number is down to only 15%. Most of the world's energy now comes from nuclear power and renewable sources such as solar and geothermal energy. Unfortunately, these efforts were not the huge success that they seem to be.

Since 2045 primary energy use has soared almost tenfold. This was mainly due to growing urban populations and the rise of increasingly advanced (and power-hungry) technology that has become ubiquitous in our lives. So, despite the fact that the percentage of our energy that comes from fossil fuels has drastically decreased, the total amount of energy we are producing from fossil fuels has actually increased.

The grim effects of our species' irresponsible use of energy and neglect of our mother world have become increasingly apparent. Last year a temperature of 190F was recorded in the Death Valley desert, which is over 50% higher than the highest recorded temperature at the beginning of the century. In the last two decades numerous major cities such as Manhattan, Boston, and Los Angeles have been partially or fully submerged by rising sea levels. In the present day, over 75% of the world's agriculture is done in climate-controlled vertical farms, as most traditional farmland has become unusable due to severe climate conditions.

Despite all of this, the greedy and corrupt corporations that rule the world have done nothing to address these problems that threaten our species. And so it's up to us, the common people. Each and every one of us can make a difference by doing what these corporations won't: taking responsibility. If we don't, pretty soon there won't be an Earth left to save. We are the last hope for a green tomorrow."}),[a.LiteratureName.AlphaOmega]:new r.x({title:"Alpha and Omega",filename:a.LiteratureName.AlphaOmega,text:"Then we saw a new Heaven and a new Earth, for our first Heaven and Earth had gone away, and our sea was no more. And we saw a new holy city, new Aeria, coming down out of this new Heaven, prepared as a bride adorned for her husband. And we heard a loud voice saying, 'Behold, the new dwelling place of the Gods. We will dwell with them, and they will be our people, and we will be with them as their Gods. We will wipe away every tear from their eyes, and death shall be no more, neither shall there be mourning, nor crying, nor pain anymore, for the former things have passed away.'

And once we were seated on the throne we said 'Behold, I am making all things new.' Also we said, 'Write this down, for these words are trustworthy and true.' And we said to you, 'It is done! I am the Alpha and the Omega, the beginning and the end. To the thirsty I will give from the spring of the water of life without payment. The one who conquers will have this heritage, and we will be his God and he will be our son. But as for the cowardly, the faithless, the detestable, as for murderers, the sexually immoral, sorcerers, idolaters, and all liars, their portion will be in the lake that burns with fire and sulfur, for it is the second true death.'"}),[a.LiteratureName.SimulatedReality]:new r.x({title:"Are We Living in a Computer Simulation?",filename:a.LiteratureName.SimulatedReality,text:"The idea that we are living in a virtual world is not new. It's a trope that has been explored constantly in literature and pop culture. However, it is also a legitimate scientific hypothesis that many notable physicists and philosophers have debated for years.

Proponents for this simulated reality theory often point to how advanced our technology has become, as well as the incredibly fast pace at which it has advanced over the past decades. The amount of computing power available to us has increased over 100-fold since 2060 due to the development of nanoprocessors and quantum computers. Artificial Intelligence has advanced to the point where our entire lives are controlled by robots and machines that handle our day-to-day activities such as autonomous transportation and scheduling. If we consider the pace at which this technology has advanced and assume that these developments continue, it's reasonable to assume that at some point in the future our technology would be advanced enough that we could create simulations that are indistinguishable from reality. However, if continued technological advancement is a reasonable outcome, then it is very likely that such a scenario has already happened.

Statistically speaking, somewhere out there in the infinite universe there is an advanced, intelligent species that already has such technology. Who's to say that they haven't already created such a virtual reality: our own?"}),[a.LiteratureName.BeyondMan]:new r.x({title:"Beyond Man",filename:a.LiteratureName.BeyondMan,text:"Humanity entered a 'transhuman' era a long time ago. And despite the protests and criticisms of many who cried out against human augmentation at the time, the transhuman movement continued and prospered. Proponents of the movement ignored the critics, arguing that it was in our inherent nature to better ourselves. To improve. To be more than we were. They claimed that not doing so would be to go against every living organism's biological purpose: evolution and survival of the fittest.

And here we are today, with technology that is advanced enough to augment humans to a state that can only be described as posthuman. But what do we have to show for it when this augmentation technology is only available to the so-called 'elite'? Are we really better off than before when only 5% of the world's population has access to this technology? When the powerful corporations and organizations of the world keep it all to themselves, have we really evolved?

Augmentation technology has only further increased the divide between the rich and the poor, between the powerful and the oppressed. We have not become 'more than human'. We have not evolved from nature's original design. We are still the greedy, corrupted, and evil men that we always were."}),[a.LiteratureName.BrighterThanTheSun]:new r.x({title:"Brighter than the Sun",filename:a.LiteratureName.BrighterThanTheSun,text:`When people think about the corporations that dominate the East, they typically think of ${a.FactionName.KuaiGongInternational}, which holds a complete monopoly for manufacturing and commerce in Asia, or Global Pharmaceuticals, the world's largest drug company, or ${a.FactionName.OmniTekIncorporated}, the global leader in intelligent and autonomous robots. But there's one company that has seen a rapid rise in the last year and is poised to dominate not only the East, but the entire world: TaiYang Digital.

TaiYang Digital is a Chinese internet-technology corporation that provides services such as online advertising, search engines, gaming, media, entertainment, and cloud computing/storage. Its name TaiYang comes from the Chinese word for 'sun'. In Chinese culture, the sun is a 'yang' symbol associated with life, heat, masculinity, and heaven.

The company was founded less than 5 years ago and is already the third highest valued company in all of Asia. In 2076 it generated a total revenue of over 10 trillion yuan. Its services are used daily by over a billion people worldwide.

TaiYang Digital's meteoric rise is extremely surprising in modern society. This sort of growth is something you'd commonly see in the first half of the century, especially for tech companies. However in the last two decades the number of corporations has significantly declined as the largest entities quickly took over the economy. Corporations such as ${a.FactionName.ECorp}, ${a.FactionName.MegaCorp}, and ${a.FactionName.KuaiGongInternational} have established such strong monopolies in their market sectors that they have effectively killed off all of the smaller and new corporations that have tried to start up over the years. This is what makes the rise of TaiYang Digital so impressive. And if TaiYang continues down this path, then they have a bright future ahead of them.`}),[a.LiteratureName.DemocracyIsDead]:new r.x({title:"Democracy is Dead: The Fall of an Empire",filename:a.LiteratureName.DemocracyIsDead,text:"They rose from the shadows in the street.
From the places where the oppressed meet.
Their cries echoed loudly through the air.
As they once did in Tiananmen Square.
Loudness in the silence, Darkness in the light.
They came forth with power and might.
Once the beacon of democracy, America was first.
Its pillars of society destroyed and dispersed.
Soon the cries rose everywhere, with revolt and riot.
Until one day, finally, all was quiet.
From the ashes rose a new order, corporatocracy was its name.
Rome, Mongol, Byzantine, all of history is just the same.
For man will never change in a fundamental way.
And now democracy is dead, in the USA."}),[a.LiteratureName.Sector12Crime]:new r.x({title:`Figures Show Rising Crime Rates in ${a.CityName.Sector12}`,filename:a.LiteratureName.Sector12Crime,text:`A recent study by analytics company Wilson Inc. shows a significant rise in criminal activity in ${a.CityName.Sector12}. Perhaps the most alarming part of the statistic is that most of the rise is in violent crime such as homicide and assault. According to the study, the city saw a total of 21,406 reported homicides in 2076, which is over a 20% increase compared to 2075.

CIA director David Glarow says it's too early to know whether these figures indicate the beginning of a sustained increase in crime rates, or whether the year was just an unfortunate outlier. He states that many intelligence and law enforcement agents have noticed an increase in organized crime activities, and believes that these figures may be the result of an uprising from criminal organizations such as ${a.FactionName.TheSyndicate} or the ${a.FactionName.SlumSnakes}.`}),[a.LiteratureName.ManAndMachine]:new r.x({title:"Man and the Machine",filename:a.LiteratureName.ManAndMachine,text:"In 2005 Ray Kurzweil popularized his theory of the Singularity. He predicted that the rate of technological advancement would continue to accelerate faster and faster until one day machines would be become infinitely more intelligent than humans. This point, called the Singularity, would result in a drastic transformation of the world as we know it. He predicted that the Singularity would arrive by 2045. And yet here we are, more than three decades later, where most would agree that we have not yet reached a point where computers and machines are vastly more intelligent than we are. So what gives?

The answer is that we have reached the Singularity, just not in the way we expected. The artificial superintelligence that was predicted by Kurzweil and others exists in the world today - in the form of Augmentations. Yes, those Augmentations that the rich and powerful keep to themselves enable humans to become superintelligent beings. The Singularity did not lead to a world where our machines are infinitely more intelligent than us, it led to a world where man and machine can merge to become something greater. Most of the world just doesn't know it yet."}),[a.LiteratureName.SecretSocieties]:new r.x({title:"Secret Societies",filename:a.LiteratureName.SecretSocieties,text:`The idea of secret societies has long intrigued the general public by inspiring curiosity, fascination, and distrust. People have long wondered about who these secret society members are and what they do, with the most radical of conspiracy theorists claiming that they control everything in the entire world. And while the world may never know for sure, it is likely that many secret societies do actually exist, even today.

However, the secret societies of the modern world are nothing like those that (supposedly) existed decades and centuries ago. The Freemasons, Knights Templar, and ${a.FactionName.Illuminati}, while they may have been around at the turn of the 21st century, almost assuredly do not exist today. The dominance of the Web in our everyday lives and the fact that so much of the world is now digital has given rise to a new breed of secret societies: Internet-based ones.

Commonly called 'hacker groups', Internet-based secret societies have become well-known in today's world. Some of these, such as ${a.FactionName.TheBlackHand}, are black hat groups that claim they are trying to help the oppressed by attacking the elite and powerful. Others, such as ${a.FactionName.NiteSec}, are hacktivist groups that try to push political and social agendas. Perhaps the most intriguing hacker group is the mysterious ${a.FactionName.BitRunners}, whose purpose still remains unknown.`}),[a.LiteratureName.TheFailedFrontier]:new r.x({title:"Space: The Failed Frontier",filename:a.LiteratureName.TheFailedFrontier,text:"Humans have long dreamed about spaceflight. With enduring interest, we were driven to explore the unknown and discover new worlds. We dreamed about conquering the stars. And in our quest, we pushed the boundaries of our scientific limits, and then pushed further. Space exploration lead to the development of many important technologies and new industries.

But sometime in the middle of the 21st century, all of that changed. Humanity lost its ambitions and aspirations of exploring the cosmos. The once-large funding for agencies like NASA and the European Space Agency gradually whittled away until their eventual disbanding in the 2060's. Not even militaries are fielding flights into space nowadays. The only remnants of the once great mission for cosmic conquest are the countless satellites in near-earth orbit, used for communications, espionage, and other corporate interests.

And as we continue to look at the state of space technology, it becomes more and more apparent that we will never return to that golden age of space exploration, that age where everyone dreamed of going beyond earth for the sake of discovery."}),[a.LiteratureName.CodedIntelligence]:new r.x({title:"Coded Intelligence: Myth or Reality?",filename:a.LiteratureName.CodedIntelligence,text:`Tremendous progress has been made in the field of Artificial Intelligence over the past few decades. Our autonomous vehicles and transportation systems. The electronic personal assistants that control our everyday lives. Medical, service, and manufacturing robots. All of these are examples of how far AI has come and how much it has improved our daily lives. However, the question still remains of whether AI will ever be advanced enough to re-create human intelligence.

We've certainly come close to artificial intelligence that is similar to humans. For example ${a.FactionName.OmniTekIncorporated}'s CompanionBot, a robot meant to act as a comforting friend for lonely and grieving people, is eerily human-like in its appearance, speech, mannerisms, and even movement. However its artificial intelligence isn't the same as that of humans. Not yet. It doesn't have sentience or self-awareness or consciousness.

Many neuroscientists believe that we won't ever reach the point of creating artificial human intelligence. 'At the end of the day, AI comes down to 1's and 0's, while the human brain does not. We'll never see AI that is identical to that of humans.'`}),[a.LiteratureName.SyntheticMuscles]:new r.x({title:"Synthetic Muscles",filename:a.LiteratureName.SyntheticMuscles,text:"Initial versions of synthetic muscles weren't made of anything organic but were actually crude devices made to mimic human muscle function. Some of the early iterations were actually made of common materials such as fishing lines and sewing threads due to their high strength for a cheap cost.

As technology progressed, however, advances in biomedical engineering paved the way for a new method of creating synthetic muscles. Instead of creating something that closely imitated the functionality of human muscle, scientists discovered a way of forcing the human body itself to augment its own muscle tissue using both synthetic and organic materials. This is typically done using gene therapy or chemical injections."}),[a.LiteratureName.TensionsInTechRace]:new r.x({title:"Tensions rise in global tech race",filename:a.LiteratureName.TensionsInTechRace,text:`Have we entered a new Cold War? Is WWIII just beyond the horizon?

After rumors came out that ${a.FactionName.OmniTekIncorporated} had begun developing advanced robotic supersoldiers, geopolitical tensions quickly flared between the USA, Russia, and several Asian superpowers. In a rare show of cooperation between corporations, ${a.FactionName.MegaCorp} and ${a.FactionName.ECorp} have reportedly launched hundreds of new surveillance and espionage satellites. Defense contractors such as DeltaOne and AeroCorp have been working with the CIA and NSA to prepare for conflict. Meanwhile, the rest of the world sits in earnest hoping that it never reaches full-scale war. With today's technology and firepower, a World War would assuredly mean the end of human civilization.`}),[a.LiteratureName.CostOfImmortality]:new r.x({title:"The Cost of Immortality",filename:a.LiteratureName.CostOfImmortality,text:"Evolution and advances in medical and augmentation technology has lead to drastic improvements in human mortality rates. Recent figures show that the life expectancy for humans that live in a first-world country is about 130 years of age, almost double of what it was at the turn of the century. However, this increase in average lifespan has had some significant effects on society and culture.

Due to longer lifespans and a better quality of life, many adults are holding off on having kids until much later. As a result, the percentage of youth in first-world countries has been decreasing, while the number of senior citizens is significantly increasing.

Perhaps the most alarming result of all of this is the rapidly shrinking workforce. Despite the increase in life expectancy, the typical retirement age for workers in America has remained about the same, meaning a larger and larger percentage of people in America are retirees. Furthermore, many young adults are holding off on joining the workforce because they feel that they have plenty of time left in their lives for employment, and want to 'enjoy life while they're young.' For most industries, this shrinking workforce is not a major issue as most things are handled by robots anyways. However, there are still several key industries such as engineering and education that have not been automated, and these remain in danger to this cultural phenomenon."}),[a.LiteratureName.TheHiddenWorld]:new r.x({title:"The Hidden World",filename:a.LiteratureName.TheHiddenWorld,text:`WAKE UP SHEEPLE

THE GOVERNMENT DOES NOT EXIST. CORPORATIONS DO NOT RUN SOCIETY

THE ${a.FactionName.Illuminati.toUpperCase()} ARE THE SECRET RULERS OF THE WORLD!

Yes, the ${a.FactionName.Illuminati} of legends. The ancient secret society that controls the entire world from the shadows with their invisible hand. The group of the rich and wealthy that have penetrated every major government, financial agency, and corporation in the last three hundred years.

OPEN YOUR EYES

It was the ${a.FactionName.Illuminati} that brought an end to democracy in the world. They are the driving force behind everything that happens.

THEY ARE ALL AROUND YOU

After destabilizing the world's governments, they are now entering the final stage of their master plan. They will secretly initiate global crises. Terrorism. Pandemics. World War. And out of the chaos that ensues they will build their New World Order.`}),[a.LiteratureName.TheNewGod]:new r.x({title:"The New God",filename:a.LiteratureName.TheNewGod,text:"Everyone has a moment in their life when they wonder about the bigger questions.

What's the point of all this? What is my purpose?

Some people dare to think even bigger.

What will the fate of the human race be?

We live in an era vastly different from that of 15 or even 20 years ago. We have gone beyond the limits of humanity. We have stripped ourselves of the tyranny of flesh.

The Singularity is here. The merging of man and machine. This is where humanity evolves into something greater. This is our future.

Embrace it, and you will obey a new god. The God in the Machine."}),[a.LiteratureName.NewTriads]:new r.x({title:"The New Triads",filename:a.LiteratureName.NewTriads,text:`The Triads were an ancient transnational crime syndicate based in China, Hong Kong, and other Asian territories. They were often considered one of the first and biggest criminal secret societies. While most of the branches of the Triads have been destroyed over the past few decades, the crime faction has spawned and inspired a number of other Asian crime organizations over the past few years. The most notable of these is the ${a.FactionName.Tetrads}.

It is widely believed that the ${a.FactionName.Tetrads} are a rogue group that splintered off from the Triads sometime in the mid 21st century. The founders of the ${a.FactionName.Tetrads}, all of whom were ex-Triad members, believed that the Triads were losing their purpose and direction. The ${a.FactionName.Tetrads} started off as a small group that mainly engaged in fraud and extortion. They were largely unknown until just a few years ago when they took over the illegal drug trade in all of the major Asian cities. They quickly became the most powerful crime syndicate in the continent.

Not much else is known about the ${a.FactionName.Tetrads}, or about the efforts the Asian governments and corporations are making to take down this large new crime organization. Many believe that the ${a.FactionName.Tetrads} have infiltrated the governments and powerful corporations in Asia, which has helped facilitate their recent rapid rise.`}),[a.LiteratureName.TheSecretWar]:new r.x({title:"The Secret War",filename:a.LiteratureName.TheSecretWar,text:""})}},75669:(e,t,n)=>{"use strict";n.d(t,{S:()=>o});var a=n(47323),r=n(33244);const o=(0,n(21623).KW)(r.CityName,(e=>new a.j(e)))},47323:(e,t,n)=>{"use strict";n.d(t,{j:()=>a});class a{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";this.name=e,this.locations=t,this.asciiArt=n}addLocation(e){this.locations.push(e)}}},89298:(e,t,n)=>{"use strict";let a,r,o;n.d(t,{Ms:()=>r,_i:()=>o,qr:()=>a}),function(e){e.AevumAeroCorp="AeroCorp",e.AevumBachmanAndAssociates="Bachman & Associates",e.AevumClarkeIncorporated="Clarke Incorporated",e.AevumCrushFitnessGym="Crush Fitness Gym",e.AevumECorp="ECorp",e.AevumFulcrumTechnologies="Fulcrum Technologies",e.AevumGalacticCybersystems="Galactic Cybersystems",e.AevumNetLinkTechnologies="NetLink Technologies",e.AevumPolice="Aevum Police Headquarters",e.AevumRhoConstruction="Rho Construction",e.AevumSnapFitnessGym="Snap Fitness Gym",e.AevumSummitUniversity="Summit University",e.AevumWatchdogSecurity="Watchdog Security",e.AevumCasino="Iker Molina Casino",e.ChongqingKuaiGongInternational="KuaiGong International",e.ChongqingSolarisSpaceSystems="Solaris Space Systems",e.ChongqingChurchOfTheMachineGod="Church of the Machine God",e.Sector12AlphaEnterprises="Alpha Enterprises",e.Sector12BladeIndustries="Blade Industries",e.Sector12CIA="Central Intelligence Agency",e.Sector12CarmichaelSecurity="Carmichael Security",e.Sector12CityHall="Sector-12 City Hall",e.Sector12DeltaOne="DeltaOne",e.Sector12FoodNStuff="FoodNStuff",e.Sector12FourSigma="Four Sigma",e.Sector12IcarusMicrosystems="Icarus Microsystems",e.Sector12IronGym="Iron Gym",e.Sector12JoesGuns="Joe's Guns",e.Sector12MegaCorp="MegaCorp",e.Sector12NSA="National Security Agency",e.Sector12PowerhouseGym="Powerhouse Gym",e.Sector12RothmanUniversity="Rothman University",e.Sector12UniversalEnergy="Universal Energy",e.NewTokyoDefComm="DefComm",e.NewTokyoGlobalPharmaceuticals="Global Pharmaceuticals",e.NewTokyoNoodleBar="Noodle Bar",e.NewTokyoVitaLife="VitaLife",e.NewTokyoArcade="Arcade",e.IshimaNovaMedical="Nova Medical",e.IshimaOmegaSoftware="Omega Software",e.IshimaStormTechnologies="Storm Technologies",e.IshimaGlitch="0x6C1",e.VolhavenCompuTek="CompuTek",e.VolhavenHeliosLabs="Helios Labs",e.VolhavenLexoCorp="LexoCorp",e.VolhavenMilleniumFitnessGym="Millenium Fitness Gym",e.VolhavenNWO="NWO",e.VolhavenOmniTekIncorporated="OmniTek Incorporated",e.VolhavenOmniaCybersystems="Omnia Cybersystems",e.VolhavenSysCoreSecurities="SysCore Securities",e.VolhavenZBInstituteOfTechnology="ZB Institute of Technology",e.Hospital="Hospital",e.Slums="The Slums",e.TravelAgency="Travel Agency",e.WorldStockExchange="World Stock Exchange",e.Void="The Void"}(a||(a={})),function(e){e.Aevum="Aevum",e.Chongqing="Chongqing",e.Sector12="Sector-12",e.NewTokyo="New Tokyo",e.Ishima="Ishima",e.Volhaven="Volhaven"}(r||(r={})),function(e){e.Company="Company",e.Gym="Gym",e.Hospital="Hospital",e.Slums="Slums",e.Special="Special",e.StockMarket="Stock Market",e.TechVendor="Tech Vendor",e.TravelAgency="Travel Agency",e.University="University",e.Casino="Casino"}(o||(o={}))},77263:(e,t,n)=>{"use strict";n.d(t,{Y:()=>r});var a=n(33244);class r{city=null;costMult=0;expMult=0;name=a.LocationName.Void;types=[];techVendorMaxRam=0;techVendorMinRam=0;constructor(e){e.city&&(this.city=e.city),e.costMult&&(this.costMult=e.costMult),e.expMult&&(this.expMult=e.expMult),e.infiltrationData&&(this.infiltrationData=e.infiltrationData),e.name&&(this.name=e.name),e.types&&(this.types=e.types),e.techVendorMaxRam&&(this.techVendorMaxRam=e.techVendorMaxRam),e.techVendorMinRam&&(this.techVendorMinRam=e.techVendorMinRam)}}},81881:(e,t,n)=>{"use strict";n.d(t,{t:()=>s});var a=n(75669),r=n(77263),o=n(33244),i=n(90356);const s={};function l(e){if(!e.name)throw new Error("Invalid constructor parameters for Location. No 'name' property");return s[e.name]&&console.warn(`Property with name ${e.name} already exists and is being overwritten`),s[e.name]=new r.Y(e),s[e.name]}a.S[o.CityName.Aevum].asciiArt="\n [aevum police headquarters] 26 \n o \n I \\ [bachman & associates] \n \\ 56 B \n x \\ [summit university] \n \\ \\ 28 \n \\ [snap fitness gym] x o--L-----------N \n K \\ / \n \\ \\ Q [casino] \n x 58 \\ / [travel agency] \n \\ 94 95 o \n 90 x 59 o------o | \n \\ / \\ | 98 102 103 \n o--------O------x----o 93 96 o-----+------------o o----o \n \\ | \\ / \n [hospital] \\ 61 [ecorp] x 31 99 o-F-o 101 \n o | \n | o---E-- | [fulcrum tech.] \n x 62 / A [aerocorp] \n [crush fitness gym] | / | \n | / | \n o--------D------+--o o \n | |\\ [rho construction] \n H [netlink tech.] | J \n | | \\ \n | 34 x \\ \n [clarke inc.] C | \\ [world stock exchange] \n | | \\ \n | | o-M-------R--------o \n[galactic cybersystems] G 35 x \n | [watchdog security] \n | \n 67 o \n \n [the slums] P ",a.S[o.CityName.Chongqing].asciiArt="\n | \n 75 o \n \\ \n o 76 \n 7 | | \n | + 77 \n [world stock exchange] F | \n \\ o 78 [kuaigong international] \n \\ / \n 38 o----x--x------x------A------G-- \n / 39 | 41 [church] \n 37 o + 79 o--x--x-C-0 \n / | / \n / x-----+-----x-----0 [hospital] \n[solaris space system] B | \n | + 80 \n | | \n 34 o E [travel agency] \n | \n | \n x 82 \n [the slums] D ",a.S[o.CityName.Ishima].asciiArt="\n o 59 \n o o | \n [storm tech.] | | G [world stock exchange] \n | | 28 | \n 23 o--C------o--------+----x----o | \n / / 25 | 27 \\ x 57 \n / / | \\ | \n / / | \\ | \n o 22 o | \\| 29/56 \n | | o \n | [hospital] D / \\ 3 2 1 \n o | / \\ o-------x------o \n / o / \\ / \n 48 o / 55 x \\ / \n \\ / / x [glitch] \n \\ / [nova medical] / 4/30 \\ \n 49 x A \\ H \n / \\ / \\ \n / \\ [travel agency] F o 31 \n / \\ 51 / \n / o----B------x-----o \n o 50 52 \n [omega soft.] \n [the slums] E ",a.S[o.CityName.NewTokyo].asciiArt="\n \n \n o \n \\ \n [arcade] E [defcomm] \n \\ \n o--x---A--x--o [travel agency] \n 7 8 10 H \n [vitalife] o 12 [global pharmaceuticals] \n | \n o--D-x----x-------x-C-+--------x--x-B-x---x-o \n 21 22 23 \\ 24 25 26 27 \n \\ \n [noodle bar] x 14 \n \\ \n \\ \n [hospital] o 15 [world stock exchange] \n | \n o--x--F--x-----x-----x---+---x----x--I--x-o \n | \n | \n o 17 \n \n \n \n G [the slums] \n ",a.S[o.CityName.Sector12].asciiArt="\n 78 o 97 \n o [icarus microsystems] / \n N [powerhouse gym] o I \n 1 | | / \n o-----+---x----o 4 A [alpha ent.] o-------o / \n | 3 \\ | \\ / \n | \\ | [iron gym] x 95 \n (79) x \\ | / \\ \n | o-E----+----x----J--o 10 / o----T--o \n | | 8 \\ 94 x \n 80 x [city hall] | x 11 / [world stock exchange]\n | | \\ / \n | C [cia] \\ / \n Q [hospital] | F P [universal energy] \n | o [deltaone] \\ / \n | 35 o---------x 13/92/36 \n L [megacorp] 33 / / \\ \n | o------------o 34 / \\ \n (29) | / [carmichael sec.] D \\ \n o-----+-----x------o / O [rothman university] \n | 31 32 [nsa] M \n | / \n B [blade industries] H \n | / [four sigma] \n | [joe's guns] / \n | / \n 85 o--G--------K--------S-------o 88 [the slums] R \n \n [foodnstuff] [travel agency] ",a.S[o.CityName.Volhaven].asciiArt="\n [omnia cybersystems] \n 17 66 68 \n o o------G-------o \n \\ / \\ \n \\ o 65 o 69 \n [syscore sec.] H | | \n \\ | | [millenium fitness gym] \n \\ | 21 22 23 24 | 26 \n o----+--x--x----x---x---+-----x-------D-----o \n 19 | | 28 \n | F [omnitek inc.] \n [hospital] J 63 o \n | / 72 \n 3 | 5 6 / 9 \n o--------+----x-----x----+----------M-------o \n / | | \n / 61 x [helios labs] B [world stock exchange] \n [travel agency] L | | \n / | o \n / E [nwo] / 75 \n / [computek] | / \n / A-------o------I-----o \n 1 o | | \n | [zb] o 77 \n [lexocorp] C \n | \n o \n 57 \n \n \n [the slums] K ";for(const e of i.b){const t=l(e),n=t.city;if(null===n)for(const e of Object.values(o.CityName))a.S[e].addLocation(t.name);else a.S[n].addLocation(t.name)}},90356:(e,t,n)=>{"use strict";n.d(t,{b:()=>r});var a=n(33244);const r=[{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:8.18},name:a.LocationName.AevumAeroCorp,types:[a.LocationType.Company]},{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:8.19},name:a.LocationName.AevumBachmanAndAssociates,types:[a.LocationType.Company]},{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:9.55},name:a.LocationName.AevumClarkeIncorporated,types:[a.LocationType.Company]},{city:a.CityName.Aevum,costMult:3,expMult:2,name:a.LocationName.AevumCrushFitnessGym,types:[a.LocationType.Gym]},{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:37,startingSecurityLevel:17.02},name:a.LocationName.AevumECorp,types:[a.LocationType.Company,a.LocationType.TechVendor],techVendorMaxRam:512,techVendorMinRam:128},{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:15.54},name:a.LocationName.AevumFulcrumTechnologies,types:[a.LocationType.Company,a.LocationType.TechVendor],techVendorMaxRam:1024,techVendorMinRam:256},{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:7.89},name:a.LocationName.AevumGalacticCybersystems,types:[a.LocationType.Company]},{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:6,startingSecurityLevel:3.29},name:a.LocationName.AevumNetLinkTechnologies,types:[a.LocationType.Company,a.LocationType.TechVendor],techVendorMaxRam:64,techVendorMinRam:8},{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:6,startingSecurityLevel:5.35},name:a.LocationName.AevumPolice,types:[a.LocationType.Company]},{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:5,startingSecurityLevel:5.02},name:a.LocationName.AevumRhoConstruction,types:[a.LocationType.Company]},{city:a.CityName.Aevum,costMult:10,expMult:5,name:a.LocationName.AevumSnapFitnessGym,types:[a.LocationType.Gym]},{city:a.CityName.Aevum,costMult:4,expMult:3,name:a.LocationName.AevumSummitUniversity,types:[a.LocationType.University]},{city:a.CityName.Aevum,infiltrationData:{maxClearanceLevel:7,startingSecurityLevel:5.85},name:a.LocationName.AevumWatchdogSecurity,types:[a.LocationType.Company]},{city:a.CityName.Aevum,name:a.LocationName.AevumCasino,types:[a.LocationType.Casino]},{city:a.CityName.Chongqing,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:16.25},name:a.LocationName.ChongqingKuaiGongInternational,types:[a.LocationType.Company]},{city:a.CityName.Chongqing,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:12.59},name:a.LocationName.ChongqingSolarisSpaceSystems,types:[a.LocationType.Company]},{city:a.CityName.Ishima,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:5.02},name:a.LocationName.IshimaNovaMedical,types:[a.LocationType.Company]},{city:a.CityName.Ishima,infiltrationData:{maxClearanceLevel:10,startingSecurityLevel:3.2},name:a.LocationName.IshimaOmegaSoftware,types:[a.LocationType.Company,a.LocationType.TechVendor],techVendorMaxRam:128,techVendorMinRam:4},{city:a.CityName.Ishima,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:5.38},name:a.LocationName.IshimaStormTechnologies,types:[a.LocationType.Company,a.LocationType.TechVendor],techVendorMaxRam:512,techVendorMinRam:32},{city:a.CityName.NewTokyo,infiltrationData:{maxClearanceLevel:17,startingSecurityLevel:7.18},name:a.LocationName.NewTokyoDefComm,types:[a.LocationType.Company]},{city:a.CityName.NewTokyo,infiltrationData:{maxClearanceLevel:20,startingSecurityLevel:5.9},name:a.LocationName.NewTokyoGlobalPharmaceuticals,types:[a.LocationType.Company]},{city:a.CityName.NewTokyo,infiltrationData:{maxClearanceLevel:5,startingSecurityLevel:2.5},name:a.LocationName.NewTokyoNoodleBar,types:[a.LocationType.Company,a.LocationType.Special]},{city:a.CityName.NewTokyo,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:5.52},name:a.LocationName.NewTokyoVitaLife,types:[a.LocationType.Company,a.LocationType.Special]},{city:a.CityName.NewTokyo,name:a.LocationName.NewTokyoArcade,types:[a.LocationType.Special]},{city:a.CityName.Sector12,infiltrationData:{maxClearanceLevel:10,startingSecurityLevel:3.62},name:a.LocationName.Sector12AlphaEnterprises,types:[a.LocationType.Company,a.LocationType.TechVendor],techVendorMaxRam:8,techVendorMinRam:2},{city:a.CityName.Sector12,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:10.59},name:a.LocationName.Sector12BladeIndustries,types:[a.LocationType.Company]},{city:a.CityName.Sector12,name:a.LocationName.Sector12CIA,types:[a.LocationType.Company]},{city:a.CityName.Sector12,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:4.66},name:a.LocationName.Sector12CarmichaelSecurity,types:[a.LocationType.Company]},{city:a.CityName.Sector12,name:a.LocationName.Sector12CityHall,types:[a.LocationType.Special]},{city:a.CityName.Sector12,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:5.9},name:a.LocationName.Sector12DeltaOne,types:[a.LocationType.Company]},{city:a.CityName.Sector12,name:a.LocationName.Sector12FoodNStuff,types:[a.LocationType.Company]},{city:a.CityName.Sector12,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:8.18},name:a.LocationName.Sector12FourSigma,types:[a.LocationType.Company]},{city:a.CityName.Sector12,infiltrationData:{maxClearanceLevel:17,startingSecurityLevel:6.02},name:a.LocationName.Sector12IcarusMicrosystems,types:[a.LocationType.Company]},{city:a.CityName.Sector12,expMult:1,costMult:1,name:a.LocationName.Sector12IronGym,types:[a.LocationType.Gym]},{city:a.CityName.Sector12,infiltrationData:{maxClearanceLevel:5,startingSecurityLevel:3.13},name:a.LocationName.Sector12JoesGuns,types:[a.LocationType.Company]},{city:a.CityName.Sector12,infiltrationData:{maxClearanceLevel:31,startingSecurityLevel:16.36},name:a.LocationName.Sector12MegaCorp,types:[a.LocationType.Company]},{city:a.CityName.Sector12,name:a.LocationName.Sector12NSA,types:[a.LocationType.Company,a.LocationType.Special]},{city:a.CityName.Sector12,costMult:20,expMult:10,name:a.LocationName.Sector12PowerhouseGym,types:[a.LocationType.Gym]},{city:a.CityName.Sector12,costMult:3,expMult:2,name:a.LocationName.Sector12RothmanUniversity,types:[a.LocationType.University]},{city:a.CityName.Sector12,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:5.9},name:a.LocationName.Sector12UniversalEnergy,types:[a.LocationType.Company]},{city:a.CityName.Volhaven,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:3.59},name:a.LocationName.VolhavenCompuTek,types:[a.LocationType.Company,a.LocationType.TechVendor],techVendorMaxRam:256,techVendorMinRam:8},{city:a.CityName.Volhaven,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:7.28},name:a.LocationName.VolhavenHeliosLabs,types:[a.LocationType.Company]},{city:a.CityName.Volhaven,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:4.35},name:a.LocationName.VolhavenLexoCorp,types:[a.LocationType.Company]},{city:a.CityName.Volhaven,costMult:7,expMult:4,name:a.LocationName.VolhavenMilleniumFitnessGym,types:[a.LocationType.Gym]},{city:a.CityName.Volhaven,infiltrationData:{maxClearanceLevel:50,startingSecurityLevel:8.53},name:a.LocationName.VolhavenNWO,types:[a.LocationType.Company]},{city:a.CityName.Volhaven,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:7.74},name:a.LocationName.VolhavenOmniTekIncorporated,types:[a.LocationType.Company,a.LocationType.TechVendor],techVendorMaxRam:1024,techVendorMinRam:128},{city:a.CityName.Volhaven,infiltrationData:{maxClearanceLevel:22,startingSecurityLevel:6},name:a.LocationName.VolhavenOmniaCybersystems,types:[a.LocationType.Company]},{city:a.CityName.Volhaven,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:4.77},name:a.LocationName.VolhavenSysCoreSecurities,types:[a.LocationType.Company]},{city:a.CityName.Volhaven,costMult:5,expMult:4,name:a.LocationName.VolhavenZBInstituteOfTechnology,types:[a.LocationType.University]},{city:null,name:a.LocationName.Hospital,types:[a.LocationType.Hospital]},{city:null,name:a.LocationName.Slums,types:[a.LocationType.Slums]},{city:null,name:a.LocationName.TravelAgency,types:[a.LocationType.TravelAgency]},{city:null,name:a.LocationName.WorldStockExchange,types:[a.LocationType.StockMarket]},{city:a.CityName.Chongqing,name:a.LocationName.ChongqingChurchOfTheMachineGod,types:[a.LocationType.Special]},{city:a.CityName.Ishima,name:a.LocationName.IshimaGlitch,types:[a.LocationType.Special]}]},37629:(e,t,n)=>{"use strict";n.d(t,{f:()=>l});var a=n(67294),r=n(6332),o=n(49173),i=n(56798),s=n(17575);function l(e){return a.createElement(a.Fragment,null,a.createElement(s.Z,{title:a.createElement("span",{dangerouslySetInnerHTML:{__html:function(){const t=o.J5.getNextCompanyPosition(e.company,e.entryPosType);return null==t?"":e.company.hasPosition(t)?(0,r.c)(e.company,t,!0):""}()}})},a.createElement(i.Z,{onClick:e.onClick},e.text)))}},33189:(e,t,n)=>{"use strict";n.d(t,{K:()=>m});var a,r=n(67294),o=n(56798),i=n(78758),s=n(58636),l=n(18037),c=n(67324),u=n(30120);function m(){const[e,t]=(0,r.useState)(a.None);function n(e){t(e)}return r.createElement(r.Fragment,null,e===a.None&&r.createElement(u.Z,{sx:{display:"grid",width:"fit-content"}},r.createElement(o.Z,{onClick:()=>n(a.Coin)},"Play coin flip"),r.createElement(o.Z,{onClick:()=>n(a.Slots)},"Play slots"),r.createElement(o.Z,{onClick:()=>n(a.Roulette)},"Play roulette"),r.createElement(o.Z,{onClick:()=>n(a.Blackjack)},"Play blackjack (",i.Z," decks)")),e!==a.None&&r.createElement(r.Fragment,null,r.createElement(o.Z,{onClick:()=>n(a.None)},"Stop playing"),e===a.Coin&&r.createElement(s.P,null),e===a.Slots&&r.createElement(c.F,null),e===a.Roulette&&r.createElement(l.c,null),e===a.Blackjack&&r.createElement(i.y,null)))}!function(e){e.None="none",e.Coin="coin",e.Slots="slots",e.Roulette="roulette",e.Blackjack="blackjack"}(a||(a={}))},14533:(e,t,n)=>{"use strict";n.d(t,{L:()=>k});var a=n(67294),r=n(75669),o=n(33244),i=n(81881),s=n(51087),l=n(49173),c=n(52947),u=n(24815),m=n(81138),f=n(56798),h=n(77541),d=n(73327);const p=(0,h.Z)((e=>(0,d.Z)({location:{color:e.colors.white,whiteSpace:"nowrap",margin:"0px",padding:"0px",cursor:"pointer"}})));function g(e){e.name===o.LocationName.TravelAgency?c.F.toPage(u.T3.Travel):e.name===o.LocationName.WorldStockExchange?c.F.toPage(u.T3.StockMarket):c.F.toPage(u.T3.Location,{location:e})}function y(e,t){let n="X";return e.types.includes(o.LocationType.Company)&&(n="C"),e.types.includes(o.LocationType.Gym)&&(n="G"),e.types.includes(o.LocationType.Hospital)&&(n="H"),e.types.includes(o.LocationType.Slums)&&(n="S"),e.types.includes(o.LocationType.StockMarket)&&(n="$"),e.types.includes(o.LocationType.TechVendor)&&(n="T"),e.types.includes(o.LocationType.TravelAgency)&&(n="T"),e.types.includes(o.LocationType.University)&&(n="U"),e.types.includes(o.LocationType.Casino)&&(n="¢"),e.types.includes(o.LocationType.Special)&&(n="?"),e?a.createElement("span",{"aria-label":e.name,key:e.name,className:t,onClick:()=>g(e)},a.createElement("b",null,n)):a.createElement("span",null,"*")}function b(e){const t=/[A-Z]/g,n={A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25},r=p(),o=a=>{const o=[],s=[];let l=null;for(;null!==(l=t.exec(a));)s.push(l);if(0===s.length)return o.push(a),o;for(let t=0;ta.createElement(a.Fragment,{key:e},a.createElement(f.Z,{onClick:()=>g(i.t[e])},e),a.createElement("br",null))));return a.createElement(a.Fragment,null,t)}function k(){const e=r.S[l.J5.city];return a.createElement(a.Fragment,null,a.createElement(m.Z,null,e.name),s.Z.DisableASCIIArt?a.createElement(v,{city:e}):a.createElement(b,{city:e}))}},37908:(e,t,n)=>{"use strict";n.d(t,{k:()=>E});var a=n(67294),r=n(81138),o=n(56798),i=n(17575),s=n(30120),l=n(37629),c=n(81881),u=n(33244),m=n(62586),f=n(11124),h=n(17365),d=n(41519),p=n(52947),g=n(24815),y=n(49173),b=n(30195),v=n(75522),k=n(88775),w=n(68507);function E(e){const[t,n]=(0,a.useState)(!1),E=(0,k.S)(200),S=m.O[e.companyName];if(null==S)throw new Error(`CompanyLocation component constructed with invalid company: ${e.companyName}`);const C=c.t[e.companyName];if(null==C)throw new Error(`CompanyLocation component constructed with invalid location: ${e.companyName}`);const x=y.J5.jobs[e.companyName]?y.J5.jobs[e.companyName]:null,N=x?f.A[x]:null;y.J5.location=(0,w.$)(e.companyName);const M=null!=x,A=S.getFavorGain();return a.createElement(a.Fragment,null,M&&a.createElement(a.Fragment,null,a.createElement(r.Z,null,"Job Title: ",x),a.createElement(r.Z,null,"-------------------------"),a.createElement(s.Z,{display:"flex"},a.createElement(i.Z,{title:a.createElement(a.Fragment,null,"You will have ",a.createElement(d.T,{favor:S.favor+A})," company favor upon resetting after installing Augmentations")},a.createElement(r.Z,null,"Company reputation: ",a.createElement(h.Y,{reputation:S.playerReputation})))),a.createElement(r.Z,null,"-------------------------"),a.createElement(s.Z,{display:"flex"},a.createElement(i.Z,{title:a.createElement(a.Fragment,null,"Company favor increases the rate at which you earn reputation for this company by 1% per favor. Company favor is gained whenever you reset after installing Augmentations. The amount of favor you gain depends on how much reputation you have with the company.")},a.createElement(r.Z,null,"Company Favor: ",a.createElement(d.T,{favor:S.favor})))),a.createElement(r.Z,null,"-------------------------"),a.createElement("br",null)),a.createElement(s.Z,{sx:{display:"grid",width:"fit-content"}},M&&a.createElement(s.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},a.createElement(o.Z,{onClick:function(t){t.isTrusted&&N&&(y.J5.startWork(new v.t({singularity:!1,companyName:e.companyName})),y.J5.startFocusing(),p.F.toPage(g.T3.Work))}},"Work"),a.createElement(o.Z,{onClick:()=>n(!0)},"Quit"),a.createElement(b.j,{companyName:e.companyName,company:S,onQuit:E,open:t,onClose:()=>n(!1)})),S.hasAgentPositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.agent0],onClick:function(e){e.isTrusted&&(y.J5.applyForAgentJob(),E())},text:"Apply for Agent Job"}),S.hasBusinessConsultantPositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.businessConsult0],onClick:function(e){e.isTrusted&&(y.J5.applyForBusinessConsultantJob(),E())},text:"Apply for Business Consultant Job"}),S.hasBusinessPositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.business0],onClick:function(e){e.isTrusted&&(y.J5.applyForBusinessJob(),E())},text:"Apply for Business Job"}),S.hasEmployeePositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.employee],onClick:function(e){e.isTrusted&&(y.J5.applyForEmployeeJob(),E())},text:"Apply to be an Employee"}),S.hasEmployeePositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.employeePT],onClick:function(e){e.isTrusted&&(y.J5.applyForPartTimeEmployeeJob(),E())},text:"Apply to be a part-time Employee"}),S.hasITPositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.IT0],onClick:function(e){e.isTrusted&&(y.J5.applyForItJob(),E())},text:"Apply for IT Job"}),S.hasSecurityPositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.security0],onClick:function(e){e.isTrusted&&(y.J5.applyForSecurityJob(),E())},text:"Apply for Security Job"}),S.hasSoftwareConsultantPositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.softwareConsult0],onClick:function(e){e.isTrusted&&(y.J5.applyForSoftwareConsultantJob(),E())},text:"Apply for Software Consultant Job"}),S.hasSoftwarePositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.software0],onClick:function(e){e.isTrusted&&(y.J5.applyForSoftwareJob(),E())},text:"Apply for Software Job"}),S.hasWaiterPositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.waiter],onClick:function(e){e.isTrusted&&(y.J5.applyForWaiterJob(),E())},text:"Apply to be a Waiter"}),S.hasWaiterPositions()&&a.createElement(l.f,{company:S,entryPosType:f.A[u.JobName.waiterPT],onClick:function(e){e.isTrusted&&(y.J5.applyForPartTimeWaiterJob(),E())},text:"Apply to be a part-time Waiter"}),null!=C.infiltrationData&&a.createElement(o.Z,{onClick:function(t){if(t.isTrusted){if(!C.infiltrationData)throw new Error(`trying to start infiltration at ${e.companyName} but the infiltrationData is null`);p.F.toPage(g.T3.Infiltration,{location:C})}}},"Infiltrate Company")))}},29931:(e,t,n)=>{"use strict";n.d(t,{v:()=>u});var a=n(67294),r=n(56798),o=n(17575),i=n(81138),s=n(49173),l=n(72360),c=n(70109);function u(e){const t=s.J5.getHomeComputer(),n=t.cpuCores>=8;if(n)return a.createElement(r.Z,null,"Upgrade 'home' cores - MAX");const u=s.J5.getUpgradeHomeCoresCost();return a.createElement(o.Z,{title:a.createElement(c.Z,null,"\\(\\large{cost = 10^9 \\cdot 7.5 ^{\\text{cores}}}\\)")},a.createElement("span",null,a.createElement("br",null),a.createElement(i.Z,null,a.createElement("i",null,"\"Cores increase the effectiveness of grow() and weaken() on 'home'\"")),a.createElement("br",null),a.createElement(r.Z,{disabled:!s.J5.canAfford(u),onClick:function(){n||s.J5.canAfford(u)&&(s.J5.loseMoney(u,"servers"),t.cpuCores++,e.rerender())}},"Upgrade 'home' cores (",t.cpuCores," -> ",t.cpuCores+1,") - ",a.createElement(l.W,{money:u,forPurchase:!0}))))}},24025:(e,t,n)=>{"use strict";n.d(t,{d:()=>x});var a=n(67294),r=n(81138),o=n(56798),i=n(37908),s=n(83712),l=n(33741),c=n(66137),u=n(27806),m=n(80584),f=n(66927),h=n(88412),d=n(33189),p=n(33244),g=n(51087),y=n(2517),b=n(97467),v=n(93989),k=n(52947),w=n(24815),E=n(16014),S=n(17575),C=n(50862);function x(e){let{loc:t}=e;const n=function(){const e=[];if(t.types.includes(p.LocationType.Company)){if(!(0,C.m)("CompanyName").isMember(t.name))throw new Error(`Location name ${t.name} is for a company but is not a company name.`);e.push(a.createElement(i.k,{key:"CompanyLocation",companyName:t.name}))}return t.types.includes(p.LocationType.Gym)&&e.push(a.createElement(s._,{key:"GymLocation",loc:t})),t.types.includes(p.LocationType.Hospital)&&e.push(a.createElement(l.r,{key:"HospitalLocation"})),t.types.includes(p.LocationType.Slums)&&e.push(a.createElement(c.w,{key:"SlumsLocation"})),t.types.includes(p.LocationType.Special)&&e.push(a.createElement(u.M,{key:"SpecialLocation",loc:t})),t.types.includes(p.LocationType.TechVendor)&&e.push(a.createElement(m.m,{key:"TechVendorLocation",loc:t})),t.types.includes(p.LocationType.TravelAgency)&&e.push(a.createElement(f.Z,{key:"TravelAgencyRoot"})),t.types.includes(p.LocationType.University)&&e.push(a.createElement(h.L,{key:"UniversityLocation",loc:t})),t.types.includes(p.LocationType.Casino)&&e.push(a.createElement(d.K,{key:"CasinoLocation"})),e}(),x=E.q.find((e=>e.specialName===t.name)),N=(0,b.WT)(x?x.hostname:""),M=null!==N&&(0,y.T_)(N);return a.createElement(a.Fragment,null,a.createElement(o.Z,{onClick:()=>k.F.toPage(w.T3.City)},"Return to World"),a.createElement(r.Z,{variant:"h4",sx:{mt:1}},M&&!g.Z.DisableTextEffects?a.createElement(S.Z,{title:`Backdoor installed on ${t.name}.`},a.createElement("span",null,a.createElement(v.q,{content:t.name}))):t.name),n)}},83712:(e,t,n)=>{"use strict";n.d(t,{_:()=>h});var a=n(67294),r=n(56798),o=n(49173),i=n(72360),s=n(52947),l=n(24815),c=n(30120),u=n(94337),m=n(97093),f=n(33244);function h(e){function t(t){o.J5.startWork(new u.LA({classType:t,location:e.loc.name,singularity:!1})),o.J5.startFocusing(),s.F.toPage(l.T3.Work)}const n=(0,m.sk)(u.PZ[f.GymType.strength],e.loc);return a.createElement(c.Z,{sx:{display:"grid",width:"fit-content"}},a.createElement(r.Z,{onClick:()=>t(f.GymType.strength)},"Train Strength (",a.createElement(i.W,{money:n,forPurchase:!0})," / sec)"),a.createElement(r.Z,{onClick:()=>t(f.GymType.defense)},"Train Defense (",a.createElement(i.W,{money:n,forPurchase:!0})," / sec)"),a.createElement(r.Z,{onClick:()=>t(f.GymType.dexterity)},"Train Dexterity (",a.createElement(i.W,{money:n,forPurchase:!0})," / sec)"),a.createElement(r.Z,{onClick:()=>t(f.GymType.agility)},"Train Agility (",a.createElement(i.W,{money:n,forPurchase:!0})," / sec)"))}},33741:(e,t,n)=>{"use strict";n.d(t,{r:()=>u});var a=n(67294),r=n(56798),o=n(49173),i=n(2228),s=n(72360),l=n(39463),c=n(88775);function u(){const e=(0,c.S)(200);return a.createElement(r.Z,{onClick:function(t){if(!t.isTrusted)return;if(o.J5.hp.current<0&&(o.J5.hp.current=0),o.J5.hp.current>=o.J5.hp.max)return;const n=(0,i.B)();o.J5.loseMoney(n,"hospitalization"),o.J5.hp.current=o.J5.hp.max,e(),(0,l.X)(a.createElement(a.Fragment,null,"You were healed to full health! The hospital billed you for ",a.createElement(s.W,{money:n})))},style:{display:"block"}},"Get treatment for wounds - ",a.createElement(s.W,{money:(0,i.B)(),forPurchase:!0}))}},96363:(e,t,n)=>{"use strict";n.d(t,{a:()=>h});var a=n(67294),r=n(89673),o=n(22115),i=n(72360),s=n(48672),l=n(49173),c=n(81138),u=n(66351),m=n(56798),f=n(81055);function h(e){const[t,n]=(0,a.useState)("");function h(){(0,r.y7)(t,e.ram,e.cost),e.onClose()}return a.createElement(s.u,{open:e.open,onClose:e.onClose},a.createElement(c.Z,null,"Would you like to purchase a new server with ",(0,o.$1)(e.ram)," of RAM for"," ",a.createElement(i.W,{money:e.cost,forPurchase:!0}),"?"),a.createElement("br",null),a.createElement("br",null),a.createElement(c.Z,null," Please enter the server hostname below:"),a.createElement("br",null),a.createElement(u.Z,{autoFocus:!0,onKeyUp:function(e){e.key===f.F.ENTER&&h()},onChange:function(e){n(e.target.value)},type:"text",placeholder:"Unique Hostname",InputProps:{endAdornment:a.createElement(m.Z,{onClick:h,disabled:!l.J5.canAfford(e.cost)||""===t},"Buy")}}))}},33285:(e,t,n)=>{"use strict";n.d(t,{C:()=>d});var a=n(67294),r=n(56798),o=n(17575),i=n(81138),s=n(72938),l=n(49173),c=n(89673),u=n(72360),m=n(22115),f=n(70109),h=n(97740);function d(e){const t=l.J5.getHomeComputer();if(t.maxRam>=s.t.HomeComputerMaxRam)return a.createElement(r.Z,null,"Upgrade 'home' RAM - MAX");const n=l.J5.getUpgradeHomeRamCost(),d=1===h.dQ.HomeComputerRamCost?"":`\\cdot ${h.dQ.HomeComputerRamCost}`;return a.createElement(o.Z,{title:a.createElement(f.Z,null,`\\(\\large{cost = ram \\cdot 3.2 \\cdot 10^4 \\cdot 1.58^{log_2{(ram)}}} ${d}\\)`)},a.createElement("span",null,a.createElement("br",null),a.createElement(i.Z,null,a.createElement("i",null,"\"More RAM means more scripts on 'home'\"")),a.createElement("br",null),a.createElement(r.Z,{disabled:!l.J5.canAfford(n),onClick:function(){(0,c.ax)(),e.rerender()}},"Upgrade 'home' RAM (",(0,m.$1)(t.maxRam)," -> ",(0,m.$1)(2*t.maxRam),") - ",a.createElement(u.W,{money:n,forPurchase:!0}))))}},66137:(e,t,n)=>{"use strict";n.d(t,{w:()=>h});var a=n(67294),r=n(56798),o=n(17575),i=n(35333),s=n(22115),l=n(52947),c=n(24815),u=n(49173),m=n(30120),f=n(88775);function h(){(0,f.S)(1e3);const e=Object.values(i.W);return a.createElement(m.Z,{sx:{display:"grid",width:"fit-content"}},e.map((e=>a.createElement(o.Z,{key:e.workName,title:e.tooltipText},a.createElement(r.Z,{onClick:t=>function(e,t){e.isTrusted&&(t.commit(),l.F.toPage(c.T3.Work),u.J5.focus=!0)}(t,e)},e.type," (",(0,s.T3)(e.successRate(u.J5))," chance of success)")))))}},27806:(e,t,n)=>{"use strict";n.d(t,{M:()=>C});var a=n(67294),r=n(81138),o=n(56798),i=n(10458),s=n(33244),l=n(58427),c=n(94542),u=n(52947),m=n(24815),f=n(49173),h=n(39463),d=n(32369),p=n(77732),g=n(52107),y=n(27889),b=n(93989),v=n(55782),k=n(3853),w=n(97467),E=n(96168),S=n(97740);function C(e){const t=(0,a.useState)(!1)[1];function n(){if(f.J5.bladeburner)u.F.toPage(m.T3.Bladeburner);else if(f.J5.skills.strength>=100&&f.J5.skills.defense>=100&&f.J5.skills.dexterity>=100&&f.J5.skills.agility>=100){f.J5.startBladeburner(),(0,h.X)("You have been accepted into the Bladeburner division!"),t((e=>!e));const e=document.getElementById("world-menu-header");e instanceof HTMLElement&&(e.click(),e.click())}else(0,h.X)("Rejected! Please apply again when you have 100 of each combat stat (str, def, dex, agi)")}function C(){const[e,t]=(0,a.useState)(!1);return f.J5.canAccessCorporation()?a.createElement(a.Fragment,null,a.createElement(o.Z,{disabled:!f.J5.canAccessCorporation()||!!f.J5.corporation,onClick:()=>t(!0)},"Create a Corporation"),a.createElement(i.w,{open:e,onClose:()=>t(!1)})):a.createElement(a.Fragment,null,a.createElement(r.Z,null,a.createElement("i",null,"A businessman is yelling at a clerk. You should come back later.")))}function x(){const e=l.i[s.FactionName.ChurchOfTheMachineGod];f.J5.factions.includes(s.FactionName.ChurchOfTheMachineGod)||(0,c.Bj)(e),f.J5.augmentations.some((e=>e.name===s.AugmentationName.StaneksGift1))||f.J5.queuedAugmentations.some((e=>e.name===s.AugmentationName.StaneksGift1))||(0,y.kk)({name:s.AugmentationName.StaneksGift1,level:1}),u.F.toPage(m.T3.StaneksGift)}switch(e.loc.name){case s.LocationName.NewTokyoVitaLife:return f.J5.canAccessGrafting()?a.createElement(o.Z,{onClick:function(){u.F.toPage(m.T3.Grafting)},sx:{my:5}},"Enter the secret lab"):a.createElement(a.Fragment,null);case s.LocationName.Sector12CityHall:return S.dQ.CorporationSoftcap<.15&&a.createElement(a.Fragment,null)||a.createElement(C,null);case s.LocationName.Sector12NSA:return function(){if(!f.J5.canAccessBladeburner()||0===S.dQ.BladeburnerRank)return a.createElement(a.Fragment,null);const e=f.J5.bladeburner?"Enter Bladeburner Headquarters":"Apply to Bladeburner Division";return a.createElement(a.Fragment,null,a.createElement("br",null),a.createElement(o.Z,{onClick:n},e))}();case s.LocationName.NewTokyoNoodleBar:return a.createElement(a.Fragment,null,a.createElement("br",null),a.createElement(o.Z,{onClick:function(){d.sC.emit("You ate some delicious noodles and feel refreshed",s.ToastVariant.SUCCESS,2e3),(0,p.P)(),f.J5.sourceFiles.size>0&&f.J5.giveExploit(g.VX.N00dles),(f.J5.sourceFileLvl(5)>0||5===f.J5.bitNodeN)&&(f.J5.exp.intelligence*=1.0000000000000002),f.J5.exp.hacking*=1.0000000000000002,f.J5.exp.strength*=1.0000000000000002,f.J5.exp.defense*=1.0000000000000002,f.J5.exp.agility*=1.0000000000000002,f.J5.exp.dexterity*=1.0000000000000002,f.J5.exp.charisma*=1.0000000000000002;for(const e of f.J5.hacknetNodes)if(e instanceof v.Q)f.J5.gainMoney(.001*e.moneyGainRatePerSecond,"other");else{const t=(0,w.WT)(e);if(!(t instanceof k.u))throw new Error(`Server ${e} is not a hacknet server.`);f.J5.hashManager.storeHashes(.001*t.hashRate)}f.J5.bladeburner&&(f.J5.bladeburner.rank+=1e-5),f.J5.corporation&&(f.J5.corporation.funds+=.01*f.J5.corporation.revenue)}},"Eat noodles"));case s.LocationName.ChongqingChurchOfTheMachineGod:return function(){const e=a.createElement(o.Z,{onClick:()=>u.F.toPage(m.T3.StaneksGift)},"Open Stanek's Gift"),t=a.createElement(r.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," `` ",a.createElement("br",null)," -odmmNmds: ",a.createElement("br",null)," `hNmo:..-omNh. ",a.createElement("br",null)," yMd` `hNh ",a.createElement("br",null)," mMd oNm ",a.createElement("br",null)," oMNo .mM/ ",a.createElement("br",null)," `dMN+ -mM+ ",a.createElement("br",null)," -mMNo -mN+ ",a.createElement("br",null)," .+- :mMNo/mN/ ",a.createElement("br",null),":yNMd. :NMNNN/ ",a.createElement("br",null),"-mMMMh. /NMMh` ",a.createElement("br",null)," .dMMMd. /NMMMy` ",a.createElement("br",null)," `yMMMd. /NNyNMMh` ",a.createElement("br",null)," `sMMMd. +Nm: +NMMh. ",a.createElement("br",null)," oMMMm- oNm: /NMMd. ",a.createElement("br",null)," +NMMmsMm- :mMMd. ",a.createElement("br",null)," /NMMMm- -mMMd. ",a.createElement("br",null)," /MMMm- -mMMd. ",a.createElement("br",null)," `sMNMMm- .mMmo ",a.createElement("br",null)," `sMd:hMMm. ./. ",a.createElement("br",null)," `yMy` `yNMd` ",a.createElement("br",null)," `hMs` oMMy ",a.createElement("br",null)," `hMh sMN- ",a.createElement("br",null)," /MM- .NMo ",a.createElement("br",null)," +MM: :MM+ ",a.createElement("br",null)," sNNo-.`.-omNy` ",a.createElement("br",null)," -smNNNNmdo- ",a.createElement("br",null)," `..` ");return f.J5.hasAugmentation(s.AugmentationName.StaneksGift3,!0)?a.createElement(a.Fragment,null,a.createElement(r.Z,null,a.createElement("i",null,"Allison \"Mother\" Stanek: ..can ...you hear them too ...? Come now, don't be shy and let me get a closer look at you. Yes wonderful, I see my creation has taken root without consequence or much ill effect it seems. Curious, Just how much of a machine's soul do you house in that body?")),a.createElement("br",null),e,a.createElement("br",null),t):f.J5.hasAugmentation(s.AugmentationName.StaneksGift2,!0)?a.createElement(a.Fragment,null,a.createElement(r.Z,null,a.createElement("i",null,'Allison "Mother" Stanek: I see you\'ve taken to my creation. So much that it could hardly be recognized as one of my own after your tinkering with it. I see you follow the ways of the Machine God as I do, and your mastery of the gift clearly demonstrates that. My hopes are climbing by the day for you.')),a.createElement("br",null),e,a.createElement("br",null),t):f.J5.factions.includes(s.FactionName.ChurchOfTheMachineGod)?a.createElement(a.Fragment,null,a.createElement(r.Z,null,a.createElement("i",null,'Allison "Mother" Stanek: Welcome back my child!')),a.createElement("br",null),e,a.createElement("br",null),t):f.J5.canAccessCotMG()?f.J5.augmentations.filter((e=>e.name!==s.AugmentationName.NeuroFluxGovernor)).length>0||f.J5.queuedAugmentations.filter((e=>e.name!==s.AugmentationName.NeuroFluxGovernor)).length>0?a.createElement(a.Fragment,null,a.createElement(r.Z,null,a.createElement("i",null,'Allison "Mother" Stanek: Begone you filth! My gift must be the first modification that your body should have!'))):a.createElement(a.Fragment,null,a.createElement(r.Z,null,a.createElement("i",null,'Allison "Mother" Stanek: Welcome child, I see your body is pure. Are you ready to ascend beyond our human form? If you are, accept my gift.')),a.createElement(o.Z,{onClick:x},"Accept Stanek's Gift"),t):a.createElement(a.Fragment,null,a.createElement(r.Z,null,"A decrepit altar stands in the middle of a dilapidated church.",a.createElement("br",null),a.createElement("br",null),"A symbol is carved in the altar."),a.createElement("br",null),t)}();case s.LocationName.IshimaGlitch:return a.createElement(a.Fragment,null,a.createElement(r.Z,null,a.createElement(b.q,{content:"An eerie aura surrounds this area. You feel you should leave."})));case s.LocationName.NewTokyoArcade:return a.createElement(E.u,null);default:return console.error(`Location ${e.loc.name} doesn't have any special properties`),a.createElement(a.Fragment,null)}}},80584:(e,t,n)=>{"use strict";n.d(t,{m:()=>y});var a=n(67294),r=n(81138),o=n(56798),i=n(33285),s=n(19181),l=n(29931),c=n(89673),u=n(72360),m=n(49173),f=n(96363),h=n(22115),d=n(30120),p=n(88775);function g(e){const[t,n]=(0,a.useState)(!1),r=(0,c.aZ)(e.ram);return a.createElement(a.Fragment,null,a.createElement(o.Z,{onClick:()=>n(!0),disabled:!m.J5.canAfford(r)},"Purchase ",(0,h.$1)(e.ram)," Server - ",a.createElement(u.W,{money:r,forPurchase:!0})),a.createElement(f.a,{open:t,onClose:()=>n(!1),ram:e.ram,cost:r}))}function y(e){const t=(0,p.S)(1e3),n=[];for(let t=e.loc.techVendorMinRam;t<=e.loc.techVendorMaxRam;t*=2)n.push(a.createElement(g,{key:t,ram:t}));return a.createElement(a.Fragment,null,a.createElement("br",null),a.createElement(d.Z,{sx:{display:"grid",width:"fit-content"}},n),a.createElement("br",null),a.createElement(r.Z,null,a.createElement("i",null,'"You can order bigger servers via scripts. We don\'t take custom orders in person."')),a.createElement("br",null),a.createElement(s.$,{rerender:t}),a.createElement("br",null),a.createElement(i.C,{rerender:t}),a.createElement("br",null),a.createElement(l.v,{rerender:t}))}},19181:(e,t,n)=>{"use strict";n.d(t,{$:()=>m});var a=n(67294),r=n(56798),o=n(39463),i=n(97467),s=n(40425),l=n(72938),c=n(49173),u=n(72360);function m(e){return c.J5.hasTorRouter()?a.createElement(r.Z,null,"TOR Router - Purchased"):a.createElement(r.Z,{disabled:!c.J5.canAfford(l.t.TorRouterCost),onClick:function(){!function(){if(c.J5.hasTorRouter())return void(0,o.X)("You already have a TOR Router!");if(!c.J5.canAfford(l.t.TorRouterCost))return void(0,o.X)("You cannot afford to purchase the TOR router!");c.J5.loseMoney(l.t.TorRouterCost,"other");const e=(0,i.WT)(s.r.DarkWeb);if(!e)throw new Error("Dark web is not a server.");c.J5.getHomeComputer().serversOnNetwork.push(e.hostname),e.serversOnNetwork.push(c.J5.getHomeComputer().hostname),(0,o.X)("You have purchased a TOR router!\nYou now have access to the dark web from your home computer.\nUse the scan/scan-analyze commands to search for the dark web connection.")}(),e.rerender()}},"Purchase TOR router - ",a.createElement(u.W,{money:l.t.TorRouterCost,forPurchase:!0}))}},66927:(e,t,n)=>{"use strict";n.d(t,{Z:()=>v});var a=n(67294),r=n(33244),o=n(81968),i=n(72938),s=n(49173),l=n(52947),c=n(24815),u=n(51087),m=n(72360),f=n(86091),h=n(39463),d=n(81138),p=n(30120),g=n(56798),y=n(88775);function b(e){const t=i.t.TravelCost;s.J5.canAfford(t)&&(s.J5.loseMoney(t,"other"),s.J5.travel(e),u.Z.SuppressTravelConfirmation||(0,h.X)(`You are now in ${e}!`),l.F.toPage(c.T3.City))}function v(){const[e,t]=(0,a.useState)(!1),[n,l]=(0,a.useState)(r.CityName.Sector12);function c(e){const n=i.t.TravelCost;s.J5.canAfford(n)&&(u.Z.SuppressTravelConfirmation?b(e):(t(!0),l(e)))}return(0,y.S)(1e3),a.createElement(a.Fragment,null,a.createElement(d.Z,{variant:"h4"},"Travel Agency"),a.createElement(p.Z,{mx:2},a.createElement(d.Z,null,"From here, you can travel to any other city! A ticket costs"," ",a.createElement(m.W,{money:i.t.TravelCost,forPurchase:!0}),"."),u.Z.DisableASCIIArt?a.createElement(a.Fragment,null,Object.values(r.CityName).filter((e=>e!=s.J5.city)).map((e=>{if(void 0===Object.entries(r.CityName).find((t=>t[1]===e)))throw new Error(`could not find key for city '${e}'`);return a.createElement(a.Fragment,{key:e},a.createElement(g.Z,{onClick:()=>c(e),sx:{m:2}},a.createElement(d.Z,null,"Travel to ",e)),a.createElement("br",null))}))):a.createElement(f.b,{currentCity:s.J5.city,onTravel:e=>c(e)})),a.createElement(o.n,{city:n,travel:()=>b(n),open:e,onClose:()=>t(!1)}))}},81968:(e,t,n)=>{"use strict";n.d(t,{n:()=>c});var a=n(67294),r=n(72938),o=n(72360),i=n(48672),s=n(81138),l=n(56798);function c(e){const t=r.t.TravelCost;return a.createElement(i.u,{open:e.open,onClose:e.onClose},a.createElement(s.Z,null,"Would you like to travel to ",e.city,"? The trip will cost ",a.createElement(o.W,{money:t,forPurchase:!0}),"."),a.createElement("br",null),a.createElement("br",null),a.createElement(l.Z,{onClick:function(){e.travel()}},a.createElement(s.Z,null,"Travel")),a.createElement(l.Z,{onClick:()=>e.onClose()},"Cancel"))}},88412:(e,t,n)=>{"use strict";n.d(t,{L:()=>d});var a=n(67294),r=n(17575),o=n(56798),i=n(72360),s=n(52947),l=n(24815),c=n(49173),u=n(30120),m=n(94337),f=n(97093),h=n(33244);function d(e){function t(t){c.J5.startWork(new m.LA({classType:t,location:e.loc.name,singularity:!1})),c.J5.startFocusing(),s.F.toPage(l.T3.Work)}const n=(0,f.sk)(m.PZ[h.UniversityClassType.dataStructures],e.loc),d=(0,f.sk)(m.PZ[h.UniversityClassType.networks],e.loc),p=(0,f.sk)(m.PZ[h.UniversityClassType.algorithms],e.loc),g=(0,f.sk)(m.PZ[h.UniversityClassType.management],e.loc),y=(0,f.sk)(m.PZ[h.UniversityClassType.leadership],e.loc),b="Gain hacking experience!",v="Gain charisma experience!";return a.createElement(u.Z,{sx:{display:"grid",width:"fit-content"}},a.createElement(r.Z,{title:b},a.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.computerScience)},"Study Computer Science (free)")),a.createElement(r.Z,{title:b},a.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.dataStructures)},"Take Data Structures course (",a.createElement(i.W,{money:n,forPurchase:!0})," / sec)")),a.createElement(r.Z,{title:b},a.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.networks)},"Take Networks course (",a.createElement(i.W,{money:d,forPurchase:!0})," / sec)")),a.createElement(r.Z,{title:b},a.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.algorithms)},"Take Algorithms course (",a.createElement(i.W,{money:p,forPurchase:!0})," / sec)")),a.createElement(r.Z,{title:v},a.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.management)},"Take Management course (",a.createElement(i.W,{money:g,forPurchase:!0})," / sec)")),a.createElement(r.Z,{title:v},a.createElement(o.Z,{onClick:()=>t(h.UniversityClassType.leadership)},"Take Leadership course (",a.createElement(i.W,{money:y,forPurchase:!0})," / sec)")))}},35242:(e,t,n)=>{"use strict";let a;n.d(t,{S:()=>a}),function(e){e.Jumper0="j0.msg",e.Jumper1="j1.msg",e.Jumper2="j2.msg",e.Jumper3="j3.msg",e.Jumper4="j4.msg",e.CyberSecTest="csec-test.msg",e.NiteSecTest="nitesec-test.msg",e.BitRunnersTest="19dfj3l1nd.msg",e.TruthGazer="truthgazer.msg",e.RedPill="icarus.msg"}(a||(a={}))},73792:(e,t,n)=>{"use strict";n.d(t,{v:()=>r});var a=n(64962);class r{constructor(e,t){this.filename=(0,a.Tp)(e),this.msg=t}}},72198:(e,t,n)=>{"use strict";n.d(t,{PV:()=>p,Uc:()=>b});var a=n(67294),r=n(73792),o=n(33244),i=n(52947),s=n(49173),l=n(24815),c=n(97467),u=n(40425),m=n(51087),f=n(39463),h=n(89916);function d(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];!t&&m.Z.SuppressMessages||p(e),g(e)}function p(e){const t=v[e];(0,f.X)(a.createElement(a.Fragment,null,"Message received from unknown sender:",a.createElement("br",null),a.createElement("br",null),a.createElement("i",null,t.msg),a.createElement("br",null),a.createElement("br",null),"This message was saved as ",t.filename," onto your home computer."))}function g(e){y(e)||s.J5.getHomeComputer().messages.push(e)}function y(e){return s.J5.getHomeComputer().messages.includes(e)}function b(){if(i.F.page()!==l.T3.BitVerse)if(s.J5.hasAugmentation(o.AugmentationName.TheRedPill,!0)){const e=(0,c.WT)(u.r.WorldDaemon);if(!(e instanceof h.x))throw new Error("The world daemon is not a server???? Please un-break reality");s.J5.skills.hacking>=e.requiredHackingSkill&&(0===s.J5.sourceFiles.size||!y(o.MessageFilename.RedPill))?d(o.MessageFilename.RedPill,0===s.J5.sourceFiles.size):y(o.MessageFilename.TruthGazer)||d(o.MessageFilename.TruthGazer)}else if(!y(o.MessageFilename.Jumper0)&&s.J5.skills.hacking>=25){d(o.MessageFilename.Jumper0);const e=s.J5.getHomeComputer();e.programs.includes(o.CompletedProgramName.flight)||e.programs.push(o.CompletedProgramName.flight)}else!y(o.MessageFilename.Jumper1)&&s.J5.skills.hacking>=40?d(o.MessageFilename.Jumper1):!y(o.MessageFilename.CyberSecTest)&&s.J5.skills.hacking>=50?d(o.MessageFilename.CyberSecTest):!y(o.MessageFilename.Jumper2)&&s.J5.skills.hacking>=175?d(o.MessageFilename.Jumper2):!y(o.MessageFilename.NiteSecTest)&&s.J5.skills.hacking>=200?d(o.MessageFilename.NiteSecTest):!y(o.MessageFilename.Jumper3)&&s.J5.skills.hacking>=325?d(o.MessageFilename.Jumper3):!y(o.MessageFilename.Jumper4)&&s.J5.skills.hacking>=490?d(o.MessageFilename.Jumper4):!y(o.MessageFilename.BitRunnersTest)&&s.J5.skills.hacking>=500&&d(o.MessageFilename.BitRunnersTest)}const v={[o.MessageFilename.Jumper0]:new r.v(o.MessageFilename.Jumper0,"I know you can sense it. I know you're searching for it. It's why you spend night after night at your computer. \n\nIt's real, I've seen it. And I can help you find it. But not right now. You're not ready yet.\n\nUse this program to track your progress\n\nThe fl1ght.exe program was added to your home computer\n\n-jump3R"),[o.MessageFilename.Jumper1]:new r.v(o.MessageFilename.Jumper1,`Soon you will be contacted by a hacking group known as ${o.FactionName.CyberSec}. They can help you with your search. \n\nYou should join them, garner their favor, and exploit them for their Augmentations. But do not trust them. They are not what they seem. No one is.\n\n-jump3R`),[o.MessageFilename.Jumper2]:new r.v(o.MessageFilename.Jumper2,`Do not try to save the world. There is no world to save. If you want to find the truth, worry only about yourself. Ethics and morals will get you killed. \n\nWatch out for a hacking group known as ${o.FactionName.NiteSec}.\n\n-jump3R`),[o.MessageFilename.Jumper3]:new r.v(o.MessageFilename.Jumper3,`You must learn to walk before you can run. And you must run before you can fly. Look for ${o.FactionName.TheBlackHand}. \n\nI.I.I.I \n\n-jump3R`),[o.MessageFilename.Jumper4]:new r.v(o.MessageFilename.Jumper4,"To find what you are searching for, you must understand the bits. The bits are all around us. The runners will help you.\n\n-jump3R"),[o.MessageFilename.CyberSecTest]:new r.v(o.MessageFilename.CyberSecTest,`We've been watching you. Your skills are very impressive. But you're wasting your talents. If you join us, you can put your skills to good use and change the world for the better. If you join us, we can unlock your full potential. \n\nBut first, you must pass our test. Find and install the backdoor on our server. \n\n-${o.FactionName.CyberSec}`),[o.MessageFilename.NiteSecTest]:new r.v(o.MessageFilename.NiteSecTest,`People say that the corrupted governments and corporations rule the world. Yes, maybe they do. But do you know who everyone really fears? People like us. Because they can't hide from us. Because they can't fight shadows and ideas with bullets. \n\nJoin us, and people will fear you, too. \n\nFind and install the backdoor on our server, avmnite-02h. Then, we will contact you again.\n\n-${o.FactionName.NiteSec}`),[o.MessageFilename.BitRunnersTest]:new r.v(o.MessageFilename.BitRunnersTest,"We know what you are doing. We know what drives you. We know what you are looking for. \n\n We can help you find the answers.\n\nrun4theh111z"),[o.MessageFilename.TruthGazer]:new r.v(o.MessageFilename.TruthGazer,"@&*($#@&__TH3__#@A&#@*)__TRU1H__(*)&*)($#@&()E&R)W&\n%@*$^$()@&$)$*@__CAN__()(@^#)@&@)#__N0__(#@&#)@&@&(\n*(__LON6ER__^#)@)(()*#@)@__ESCAP3__)#(@(#@*@()@(#*$\n()@)#$*%)$#()$#__Y0UR__(*)$#()%(&(%)*!)($__GAZ3__#("),[o.MessageFilename.RedPill]:new r.v(o.MessageFilename.RedPill,"@)(#V%*N)@(#*)*C)@#%*)*V)@#(*%V@)(#VN%*)@#(*%\n)@B(*#%)@)M#B*%V)____FIND___#$@)#%(B*)@#(*%B)\n@_#(%_@#M(BDSPOMB__THE-CAVE_#)$(*@#$)@#BNBEGB\nDFLSMFVMV)#@($*)@#*$MV)@#(*$V)M#(*$)M@(#*VM$)")}},57685:(e,t,n)=>{"use strict";n.d(t,{V:()=>c});var a=n(49173),r=n(58427),o=n(97467),i=n(33244),s=n(89916);function l(e){for(const t of e.augmentations)if(t!==i.AugmentationName.NeuroFluxGovernor&&!a.J5.augmentations.some((e=>e.name==t)))return!1;return!0}const c=[{title:"Gain root access on CSEC",fulfilled:()=>{const e=(0,o.WT)("CSEC");return!(!e||!Object.hasOwn(e,"hasAdminRights"))&&e instanceof s.x&&e.hasAdminRights}},{title:"Install the backdoor on CSEC",fulfilled:()=>{const e=(0,o.WT)("CSEC");return!(!e||!Object.hasOwn(e,"backdoorInstalled"))&&e instanceof s.x&&e.backdoorInstalled}},{title:"Join the faction hinted at in csec-test.msg",fulfilled:()=>a.J5.factions.includes(i.FactionName.CyberSec)},{title:`Install all the Augmentations from ${i.FactionName.CyberSec}`,fulfilled:()=>l(r.i[i.FactionName.CyberSec])},{title:"Join the faction hinted at in nitesec-test.msg",fulfilled:()=>a.J5.factions.includes(i.FactionName.NiteSec)},{title:`Install all the Augmentations from ${i.FactionName.NiteSec}`,fulfilled:()=>l(r.i[i.FactionName.NiteSec])},{title:"Join the faction hinted at in j3.msg",fulfilled:()=>a.J5.factions.includes(i.FactionName.TheBlackHand)},{title:`Install all the Augmentations from ${i.FactionName.TheBlackHand}`,fulfilled:()=>l(r.i[i.FactionName.TheBlackHand])},{title:"Join the faction hinted at in 19dfj3l1nd.msg",fulfilled:()=>a.J5.factions.includes(i.FactionName.BitRunners)},{title:`Install all the Augmentations from ${i.FactionName.BitRunners}`,fulfilled:()=>l(r.i[i.FactionName.BitRunners])},{title:"Complete fl1ght.exe",fulfilled:()=>a.J5.factions.includes(i.FactionName.Daedalus)},{title:`Install the special Augmentation from ${i.FactionName.Daedalus}`,fulfilled:()=>a.J5.augmentations.some((e=>"The Red Pill"==e.name))},{title:"Install the final backdoor and free yourself.",fulfilled:()=>!1}]},19491:(e,t,n)=>{"use strict";n.d(t,{q:()=>s});var a=n(57685),r=n(67294),o=n(81138),i=n(30120);function s(){const e=function(e){let t=-1;for(let n=0;n{if(n<=e+1)return r.createElement(o.Z,{key:n},"[",t.fulfilled()?"x":" ","] ",t.title)}));return r.createElement(r.Fragment,null,r.createElement(o.Z,{variant:"h4"},"Milestones"),r.createElement(i.Z,{mx:2},r.createElement(o.Z,null,"Milestones don't reward you for completing them. They are here to guide you if you're lost. They will reset when you install Augmentations."),r.createElement("br",null),r.createElement(o.Z,null,"Completing fl1ght.exe"),t))}},40811:(e,t,n)=>{"use strict";n.d(t,{G:()=>s,I:()=>i});var a=n(32310),r=n(23122);class o{memoed={};constructor(e,t,n,a){this.ns=t,this.ws=e,this.tree=n,this.additionalData=a,Object.assign(this.memoed,a)}has(e,t){return Reflect.has(this.ns,t)||Reflect.has(this.additionalData,t)}ownKeys(e){return[...Reflect.ownKeys(this.ns),...Reflect.ownKeys(this.additionalData)]}getOwnPropertyDescriptor(e,t){if(this.has(e,t))return Object.hasOwn(this.memoed,t)||this.get(e,t,this),Object.getOwnPropertyDescriptor(this.memoed,t)}defineProperty(e,t,n){throw new TypeError("ns instances are not modifiable!")}set(e,t,n){throw new TypeError("ns instances are not modifiable!")}get(e,t,n){const o=this.memoed[t];if(o)return o;const s=Object.getOwnPropertyDescriptor(this.ns,t);if(!s)return s;const l=s.value;if("function"==typeof l){const e=[...this.tree,t],n=e.join("."),o={workerScript:this.ws,function:t,functionPath:n},i=l(o),c=function(){return r.BM.checkEnvFlags(o),r.BM.updateDynamicRam(o,(0,a.By)(e)),i(...arguments)};return Object.defineProperty(this.memoed,t,{...s,value:c}),c}if("object"==typeof l)return this.memoed[t]=i(this.ws,l,[...this.tree,t]);throw console.warn("Unexpected data while wrapping API.","tree:",this.tree,"key:",t,"field:",l),new Error("Error while wrapping netscript API. See console.")}}function i(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const r=new o(e,t,n,a);return new Proxy({},r)}function s(e,t){for(const[n,{version:a,replacement:o,replaceMsg:i}]of Object.entries(t))Object.defineProperty(e,n,{value:e=>()=>{throw r.BM.makeRuntimeErrorMsg(e,`Function removed in ${a}. ${i?o:`Please use ${o} instead.`}`,"REMOVED FUNCTION")},configurable:!0,enumerable:!1})}},6336:(e,t,n)=>{"use strict";n.d(t,{q:()=>a});class a{stopFlag=!1;runningFn="";vars=null}},23122:(e,t,n)=>{"use strict";n.d(t,{BM:()=>L,Ee:()=>R,Wt:()=>V,Z6:()=>F,ac:()=>q,bZ:()=>$});var a=n(67294),r=n(40185),o=n(21951),i=n(97467),s=n(49173),l=n(60520),c=n(22115),u=n(89916),m=n(49708),f=n(42805),h=n(49802),d=n(97740),p=n(72938),g=n(62734),y=n(18162),b=n(45089),v=n(32938),k=n(10364),w=n(72326),E=n(3853),S=n(39463),C=n(32310),x=n(20145),N=n(2827),M=n(64962),A=n(69917),T=n(99611);const L={string:_,number:P,positiveInteger:B,scriptArgs:O,runOptions:D,spawnOptions:function(e,t){const n={spawnDelay:1e4,...D(e,t)};if("object"!=typeof t||!t)return n;const{spawnDelay:a}=t;return void 0!==a&&(n.spawnDelay=B(e,"spawnDelayMsec",a)),n},argsToString:function(e){return e.reduce(((e,t)=>{if(null===t)return e+"null";if(void 0===t)return e+"undefined";const n=(0,v.l)(t);return n instanceof Map&&[...n].length?e+`< Map: ${[...n].map((e=>`${e[0]} => ${e[1]}`)).join("; ")} >`:n instanceof Set?e+`< Set: ${[...n].join("; ")} >`:"object"==typeof n?e+JSON.stringify(n):e+`${n}`}),"")},makeBasicErrorMsg:Z,makeRuntimeErrorMsg:G,resolveNetscriptRequestedThreads:function(e,t){const n=e.workerScript.scriptRef.threads;if(!t)return isNaN(n)||n<1?1:n;const a=0|t;if(isNaN(t)||a<1)throw G(e,`Invalid thread count: ${t}. Threads must be a positive number.`);if(a>n)throw G(e,`Too many threads requested by ${e.function}. Requested: ${t}. Has: ${n}.`);return a},checkEnvFlags:function(e){const t=e.workerScript;if(t.env.stopFlag)throw H(e,(()=>"Failed to run due to script being killed.")),new l.w(t);if(t.env.runningFn&&"asleep"!==e.function){H(e,(()=>"Failed to run due to failed concurrency check."));const n=G(e,`Concurrent calls to Netscript functions are not allowed!\n Did you forget to await hack(), grow(), or some other\n promise-returning function?\n Currently running: ${t.env.runningFn} tried to run: ${e.function}`,"CONCURRENCY");throw(0,o.i)(t),n}},checkSingularityAccess:function(e){if(4!==s.J5.bitNodeN&&0===s.J5.sourceFileLvl(4))throw G(e,"This singularity function requires Source-File 4 to run. A power up you obtain later in the game.\n It will be very obvious when and how you can obtain it.","API ACCESS")},netscriptDelay:function(e,t){const n=e.workerScript;return new Promise((function(a,r){n.delay=window.setTimeout((()=>{n.delay=null,n.delayReject=void 0,n.env.runningFn="",n.env.stopFlag?r(new l.w(n)):a()}),t),n.delayReject=r,n.env.runningFn=e.function}))},updateDynamicRam:function(e,t){const n=e.workerScript,a=e.function;if(!n.dynamicLoadedFns[a]&&(n.dynamicLoadedFns[a]=!0,n.dynamicRamUsage=Math.min(n.dynamicRamUsage+t,C.qS.Max),n.dynamicRamUsage>1.00000000000001*n.scriptRef.ramUsage)){H(e,(()=>"Insufficient static ram available."));const t=G(e,`Dynamic RAM usage calculated to be greater than RAM allocation.\n This is probably because you somehow circumvented the static RAM calculation.\n\n Threads: ${n.scriptRef.threads}\n Dynamic RAM Usage: ${(0,c.$1)(n.dynamicRamUsage)} per thread\n RAM Allocation: ${(0,c.$1)(n.scriptRef.ramUsage)} per thread\n\n One of these could be the reason:\n * Using eval() to get a reference to a ns function\n   const myScan = eval('ns.scan');\n\n * Using map access to do the same\n   const myScan = ns['scan'];\n\n * Using RunOptions.ramOverride to set a smaller allocation than needed\n\n Sorry :(`,"RAM USAGE");throw(0,o.i)(n),t}},getServer:J,scriptIdentifier:function(e,t,n,a){const r=e.workerScript;if(void 0===t)return r.pid;if("number"==typeof t)return t;if("string"==typeof t)return{scriptname:t,hostname:void 0===n?e.workerScript.hostname:_(e,"hostname",n),args:void 0===a?[]:O(e,a)};throw G(e,"An unknown type of input was provided as a script identifier.","TYPE")},hack:function(e,t,n){let{threads:a,stock:r,additionalMsec:o}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const i=e.workerScript,l=L.resolveNetscriptRequestedThreads(e,a),y=P(e,"opts.additionalMsec",o??0);if(y<0)throw G(e,`additionalMsec must be non-negative, got ${y}`);const b=J(e,t);if(!(b instanceof u.x))throw G(e,"Cannot be executed on this server.");const v=(0,m.sI)(b,s.J5)+y/1e3,k=(0,f.uN)(b);if(!k.res)throw G(e,k.msg||"");return H(e,(()=>`Executing on '${b.hostname}' in ${(0,h.UF)(1e3*v,!0)} (t=${(0,c.jL)(l)})`)),L.netscriptDelay(e,1e3*v).then((function(){const t=(0,m.gb)(b,s.J5),a=Math.random();let o=(0,m.iG)(b,s.J5)*l;const u=o/4;if(ab.moneyAvailable&&(f=b.moneyAvailable),b.moneyAvailable-=f,b.moneyAvailable<0&&(b.moneyAvailable=0);let h=f*d.dQ.ScriptHackMoneyGain;return n&&(h=f*d.dQ.ManualHackMoney),s.J5.gainMoney(h,"hacking"),i.scriptRef.onlineMoneyMade+=h,s.J5.scriptProdSinceLastAug+=h,i.scriptRef.recordHack(b.hostname,h,l),s.J5.gainHackingExp(o),n&&s.J5.gainIntelligenceExp(.005),i.scriptRef.onlineExpGained+=o,H(e,(()=>`Successfully hacked '${b.hostname}' for ${(0,c.lb)(h)} and ${(0,c.Mf)(o)} exp (t=${(0,c.jL)(l)})`)),b.fortify(p.t.ServerFortifyAmount*Math.min(l,a)),r&&(0,g.Bu)(b,f),n&&(b.backdoorInstalled=!0,N.D.Counters.checkFactionInvitations=0,N.D.checkCounters()),h}return s.J5.gainHackingExp(u),i.scriptRef.onlineExpGained+=u,H(e,(()=>`Failed to hack '${b.hostname}'. Gained ${(0,c.Mf)(u)} exp (t=${(0,c.jL)(l)})`)),0}))},portNumber:function(e,t){const n=B(e,"portNumber",t);if(n>p.t.NumNetscriptPorts)throw G(e,`Trying to use an invalid port: ${n}. Must be less or equal to ${p.t.NumNetscriptPorts}.`);return n},person:function(e,t){const n=W({hp:void 0,exp:void 0,mults:void 0,city:void 0},t);if(n)throw G(e,`person should be a Person.\n${n}`,"TYPE");return t},server:function(e,t){const n=W({hostname:void 0,ip:void 0,sshPortOpen:void 0,ftpPortOpen:void 0,smtpPortOpen:void 0,httpPortOpen:void 0,sqlPortOpen:void 0,hasAdminRights:void 0,cpuCores:void 0,isConnectedTo:void 0,ramUsed:void 0,maxRam:void 0,organizationName:void 0,purchasedByPlayer:void 0},t);if(n)throw G(e,`server should be a Server.\n${n}`,"TYPE");return t},gang:function(e,t){const n=W({respect:0,territory:0,wantedLevel:0},t);if(n)throw G(e,`gang should be a Gang.\n${n}`,"TYPE");return t},gangMember:function(e,t){const n=W(new y.q,t);if(n)throw G(e,`member should be a GangMember.\n${n}`,"TYPE");return t},gangTask:function(e,t){const n=W(new b.u("","",!1,!1,{hackWeight:100}),t);if(n)throw G(e,`task should be a GangMemberTask.\n${n}`,"TYPE");return t},log:H,filePath:U,scriptPath:j,getRunningScript:function(e,t){if("number"==typeof t)return function(e){for(const t of(0,i.XX)()){const n=(0,k.$o)(e,t);if(n)return n}return null}(t);{const n=$(e,t.scriptname,t.hostname,t.args);return null===n?null:n.values().next().value}},getRunningScriptsByArgs:$,getCannotFindRunningScriptErrorMessage:function(e){return"number"==typeof e?`Cannot find running script with pid: ${e}`:`Cannot find running script ${e.scriptname} on server ${e.hostname} with args: ${(0,w.N)(e.args)}`},createPublicRunningScript:function(e){const t=e.tailProps;return{args:e.args.slice(),filename:e.filename,logs:e.logs.map((e=>""+e)),offlineExpGained:e.offlineExpGained,offlineMoneyMade:e.offlineMoneyMade,offlineRunningTime:e.offlineRunningTime,onlineExpGained:e.onlineExpGained,onlineMoneyMade:e.onlineMoneyMade,onlineRunningTime:e.onlineRunningTime,pid:e.pid,ramUsage:e.ramUsage,server:e.server,tailProperties:t&&t.isVisible()?{x:t.x,y:t.y,width:t.width,height:t.height}:null,title:e.title,threads:e.threads,temporary:e.temporary}},failOnHacknetServer:function(e,t){return t instanceof E.u&&(H(e,(()=>"Does not work on Hacknet Servers")),!0)}};function R(e,t,n){if("string"!=typeof n)throw G(e,`${t} expected to be a string. ${I(n)}`,"TYPE")}function F(e,t,n,a){if("object"!=typeof n||null===n)throw G(e,`Type ${null===n?"null":typeof n} provided for ${t}. Must be an object.`,"TYPE");for(const[r,o]of Object.entries(a)){if(!Object.hasOwn(n,r))throw G(e,`Object provided for argument ${t} is missing required property ${r}.`,"TYPE");const a=n[r];if(typeof o!=typeof a)throw G(e,`Incorrect type ${typeof a} provided for property ${r} on ${t} argument. Should be type ${typeof o}.`,"TYPE")}}const I=e=>null===e?"Is null.":void 0===e?"Is undefined.":"function"==typeof e?"Is a function.":`Is of type '${typeof e}', value: ${(e=>{const t=e=>e.length>15?e.slice(0,12)+"...":e;if("number"==typeof e)return String(e);if("string"==typeof e)return""===e?"empty string":`'${t(e)}'`;const n=JSON.stringify(e);return n?`'${t(n)}'`:"???"})(e)}`;function _(e,t,n){return"number"==typeof n&&(n+=""),R(e,t,n),n}function P(e,t,n){if("string"==typeof n){const e=parseFloat(n);if(!isNaN(e))return e}else if("number"==typeof n){if(isNaN(n))throw G(e,`'${t}' is NaN.`);return n}throw G(e,`'${t}' should be a number. ${I(n)}`,"TYPE")}function B(e,t,n){const a=P(e,t,n);if(!(0,x.a)(a))throw G(e,`${t} should be a positive integer, was ${a}`,"TYPE");return a}function O(e,t){if(!function(e){return Array.isArray(e)&&e.every((e=>"string"==typeof e||"number"==typeof e||"boolean"==typeof e))}(t))throw G(e,"'args' is not an array of script args","TYPE");return t}function D(e,t){const n={threads:1,temporary:!1,preventDuplicates:!1};function a(t,a){null!=t&&(n.threads=B(e,a,t))}if("object"!=typeof t||null===t)return a(t,"threads"),n;const r=t;if(a(r.threads,"RunOptions.threads"),n.temporary=!!r.temporary,n.preventDuplicates=!!r.preventDuplicates,void 0!==r.ramOverride&&null!==r.ramOverride&&(n.ramOverride=P(e,"RunOptions.ramOverride",r.ramOverride),n.ramOverride= baseCost (${C.qS.Base}), was ${n.ramOverride}`);return n}function Z(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"RUNTIME";if(e instanceof r.h)for(const[n,a]of e.scriptRef.dependencies)t=t.replace(new RegExp(n,"g"),a.filename);return`${n} ERROR\n${e.name}@${e.hostname} (PID - ${e.pid})\n\n${t}`}function G(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"RUNTIME";const a=(new Error).stack;if(void 0===a)throw new Error("how did we not throw an error?");const r=a.split("\n").slice(1),o=e.workerScript,i=e.functionPath,s=[];for(const e of r){const t=(()=>{for(const[t,n]of o.scriptRef.dependencies)if(e.includes(t))return n.filename;if(e.includes(o.scriptRef.filename))return o.scriptRef.filename;for(const t of o.scriptRef.dependencies.values())if(e.includes(t.filename))return t.filename})();if(!t)continue;let n={line:"-1",func:"unknown"};const a=c(e);a&&(n=a);const r=u(e);r&&(n=r),s.push(`${t}:L${n.line}@${n.func}`)}H(e,(()=>t));let l=`${i}: ${t}`;return 0!==s.length&&(l+=`\n\nStack:\n${s.join("\n")}`),Z(o,l,n);function c(e){const t=e.match(/.*:(\d+):\d+.*/),n=e.match(/.*at (.+) \(.*/);return t&&n?{line:t[1],func:n[1]}:null}function u(e){const t=e.match(/.*:(\d+):\d+$/),n=e.lastIndexOf("@");return t&&-1!==n?{line:t[1],func:e.slice(0,n)}:null}}function J(e,t){const n=(0,i.WT)(t);if(null==n)throw G(e,"Invalid hostname: "+(""===t?"'' (empty string)":"'"+t+"'"));return n}function W(e,t){if("object"!=typeof t||null===t)return`Expected to be an object, was ${null===t?"null":typeof t}.`;for(const n in e)if(!(n in t))return`Property ${n} was expected but not present.`;return!1}function H(e,t){e.workerScript.log(e.functionPath,t)}function U(e,t,n){R(e,t,n);const a=(0,M.Iw)(n,e.workerScript.name);if(a)return a;throw G(e,`Invalid ${t}, was not a valid path: ${n}`)}function j(e,t,n){const a=U(e,t,n);if((0,A.UH)(a))return a;throw G(e,`Invalid ${t}, must be a script: ${n}`)}function $(e,t,n,a){if(!Array.isArray(a))throw L.makeRuntimeErrorMsg(e,"Invalid scriptArgs argument passed into getRunningScriptByArgs().\nThis is probably a bug. Please report to game developer");const r=j(e,"filename",t);null==n&&(n=e.workerScript.hostname);const o=L.getServer(e,n);return(0,k.Es)(r,a,o)}function q(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(e instanceof l.w){if(""===e.errorMessage)return;t||(t=e,e=t.errorMessage)}if(t&&"string"==typeof e){const n=Z(t,"","");e.includes(n)||(e=Z(t,e))}else if(e instanceof SyntaxError){const n=`${e.message} (sorry we can't be more helpful)`;e=t?Z(t,n,"SYNTAX"):`SYNTAX ERROR:\n\n${n}`}else if(e instanceof Error){if("Canceled"===e.name&&"Canceled"===e.message)return;const n=`${e.message}${e.stack?`\nstack:\n${e.stack.toString()}`:""}`;e=t?Z(t,n):`RUNTIME ERROR:\n\n${n}`}if("string"!=typeof e){console.error("Unexpected error:",e);const n=`Unexpected type of error thrown. This error was likely thrown manually within a script.\n Error has been logged to the console.\n\nType of error: ${typeof e}\nValue of error: ${e}`;e=t?Z(t,n,"UNKNOWN"):n}(0,S.X)(n+e)}let z=0;function V(e){return a.createElement(T.o,{key:"PlayerContent"+z++},e)}},46570:(e,t,n)=>{"use strict";n.d(t,{L:()=>o,i:()=>i});var a=n(75350);let r=1;function o(){let e=r,t=!1;for(let n=0;n<1e6;){if(!a.R.has(e+n)){t=!0,e+=n;break}n===Number.MAX_SAFE_INTEGER-1?n=1:++n}return t?(r=e+1,r>=Number.MAX_SAFE_INTEGER&&(r=1),e):-1}function i(){r=1}},32310:(e,t,n)=>{"use strict";n.d(t,{By:()=>p,IK:()=>d,qS:()=>r});var a=n(49173);const r={Base:1.6,Dom:25,CorporationInfo:10,CorporationAction:20,Max:1024,Hack:.1,HackAnalyze:1,Grow:.15,GrowthAnalyze:1,Weaken:.15,WeakenAnalyze:1,Scan:.2,RecentScripts:.2,PortProgram:.05,Run:1,Exec:1.3,Spawn:2,Scp:.6,Kill:.5,HasRootAccess:.05,GetHostname:.05,GetHackingLevel:.05,GetServer:.1,GetServerMaxRam:.05,GetServerUsedRam:.05,FileExists:.1,IsRunning:.1,HacknetNodes:4,HNUpgLevel:.4,HNUpgRam:.6,HNUpgCore:.8,GetStock:2,BuySellStock:2.5,GetPurchaseServer:.25,PurchaseServer:2.25,GetPurchasedServerLimit:.05,GetPurchasedServerMaxRam:.05,Round:.05,ReadWrite:1,ArbScript:1,GetScript:.1,GetRunningScript:.3,GetHackTime:.05,GetFavorToDonate:.1,CodingContractBase:10,SleeveBase:4,ClearTerminalCost:.2,GetMoneySourcesCost:1,SingularityFn1:2,SingularityFn2:3,SingularityFn3:5,GangApiBase:4,BladeburnerApiBase:4,StanekWidth:.4,StanekHeight:.4,StanekCharge:.4,StanekFragmentDefinitions:0,StanekPlacedFragments:5,StanekClear:0,StanekCanPlace:.5,StanekPlace:5,StanekFragmentAt:2,StanekDeleteAt:.15,InfiltrationCalculateDifficulty:2.5,InfiltrationCalculateRewards:2.5,InfiltrationGetLocations:5,InfiltrationGetInfiltrations:15,StanekAcceptGift:2};function o(e){return()=>{if(4===a.J5.bitNodeN)return e;const t=a.J5.sourceFileLvl(4);return t<=1?16*e:2===t?4*e:e}}const i={getConstants:0,hasWSEAccount:.05,hasTIXAPIAccess:.05,has4SData:.05,has4SDataTIXAPI:.05,getSymbols:r.GetStock,getPrice:r.GetStock,getOrganization:r.GetStock,getAskPrice:r.GetStock,getBidPrice:r.GetStock,getPosition:r.GetStock,getMaxShares:r.GetStock,getPurchaseCost:r.GetStock,getSaleGain:r.GetStock,buyStock:r.BuySellStock,sellStock:r.BuySellStock,buyShort:r.BuySellStock,sellShort:r.BuySellStock,placeOrder:r.BuySellStock,cancelOrder:r.BuySellStock,getOrders:r.BuySellStock,getVolatility:r.BuySellStock,getForecast:r.BuySellStock,purchase4SMarketData:r.BuySellStock,purchase4SMarketDataTixApi:r.BuySellStock,purchaseWseAccount:r.BuySellStock,purchaseTixApi:r.BuySellStock},s={universityCourse:o(r.SingularityFn1),gymWorkout:o(r.SingularityFn1),travelToCity:o(r.SingularityFn1),goToLocation:o(r.SingularityFn3),purchaseTor:o(r.SingularityFn1),purchaseProgram:o(r.SingularityFn1),getCurrentServer:o(r.SingularityFn1),getCompanyPositionInfo:o(r.SingularityFn1),getCompanyPositions:o(r.SingularityFn1),connect:o(r.SingularityFn1),manualHack:o(r.SingularityFn1),installBackdoor:o(r.SingularityFn1),getDarkwebProgramCost:o(r.SingularityFn1/4),getDarkwebPrograms:o(r.SingularityFn1/4),hospitalize:o(r.SingularityFn1/4),isBusy:o(r.SingularityFn1/4),stopAction:o(r.SingularityFn1/2),upgradeHomeRam:o(r.SingularityFn2),upgradeHomeCores:o(r.SingularityFn2),getUpgradeHomeRamCost:o(r.SingularityFn2/2),getUpgradeHomeCoresCost:o(r.SingularityFn2/2),workForCompany:o(r.SingularityFn2),applyToCompany:o(r.SingularityFn2),quitJob:o(r.SingularityFn2),getCompanyRep:o(r.SingularityFn2/3),getCompanyFavor:o(r.SingularityFn2/3),getCompanyFavorGain:o(r.SingularityFn2/4),checkFactionInvitations:o(r.SingularityFn2),joinFaction:o(r.SingularityFn2),workForFaction:o(r.SingularityFn2),getFactionRep:o(r.SingularityFn2/3),getFactionFavor:o(r.SingularityFn2/3),getFactionFavorGain:o(r.SingularityFn2/4),donateToFaction:o(r.SingularityFn3),createProgram:o(r.SingularityFn3),commitCrime:o(r.SingularityFn3),getCrimeChance:o(r.SingularityFn3),getCrimeStats:o(r.SingularityFn3),getOwnedAugmentations:o(r.SingularityFn3),getOwnedSourceFiles:o(r.SingularityFn3),getAugmentationFactions:o(r.SingularityFn3),getAugmentationsFromFaction:o(r.SingularityFn3),getAugmentationPrereq:o(r.SingularityFn3),getAugmentationPrice:o(r.SingularityFn3/2),getAugmentationBasePrice:o(r.SingularityFn3/2),getAugmentationRepReq:o(r.SingularityFn3/2),getAugmentationStats:o(r.SingularityFn3),purchaseAugmentation:o(r.SingularityFn3),softReset:o(r.SingularityFn3),installAugmentations:o(r.SingularityFn3),isFocused:o(.1),setFocus:o(.1),exportGame:o(r.SingularityFn1/2),exportGameBonus:o(r.SingularityFn1/4),b1tflum3:o(16),destroyW0r1dD43m0n:o(32),getCurrentWork:o(.5)},l={createGang:r.GangApiBase/4,inGang:r.GangApiBase/4,getMemberNames:r.GangApiBase/4,renameMember:0,getGangInformation:r.GangApiBase/2,getOtherGangInformation:r.GangApiBase/2,getMemberInformation:r.GangApiBase/2,canRecruitMember:r.GangApiBase/4,getRecruitsAvailable:r.GangApiBase/4,respectForNextRecruit:r.GangApiBase/4,recruitMember:r.GangApiBase/2,getTaskNames:r.GangApiBase/4,getTaskStats:r.GangApiBase/4,setMemberTask:r.GangApiBase/2,getEquipmentNames:r.GangApiBase/4,getEquipmentCost:r.GangApiBase/2,getEquipmentType:r.GangApiBase/2,getEquipmentStats:r.GangApiBase/2,purchaseEquipment:r.GangApiBase,ascendMember:r.GangApiBase,getAscensionResult:r.GangApiBase/2,setTerritoryWarfare:r.GangApiBase/2,getChanceToWinClash:r.GangApiBase,getBonusTime:0},c={inBladeburner:r.BladeburnerApiBase/4,getContractNames:r.BladeburnerApiBase/10,getOperationNames:r.BladeburnerApiBase/10,getBlackOpNames:r.BladeburnerApiBase/10,getBlackOpRank:r.BladeburnerApiBase/2,getGeneralActionNames:r.BladeburnerApiBase/10,getSkillNames:r.BladeburnerApiBase/10,startAction:r.BladeburnerApiBase,stopBladeburnerAction:r.BladeburnerApiBase/2,getCurrentAction:r.BladeburnerApiBase/4,getActionTime:r.BladeburnerApiBase,getActionCurrentTime:r.BladeburnerApiBase,getActionEstimatedSuccessChance:r.BladeburnerApiBase,getActionRepGain:r.BladeburnerApiBase,getActionCountRemaining:r.BladeburnerApiBase,getActionMaxLevel:r.BladeburnerApiBase,getActionCurrentLevel:r.BladeburnerApiBase,getActionAutolevel:r.BladeburnerApiBase,getActionSuccesses:r.BladeburnerApiBase,setActionAutolevel:r.BladeburnerApiBase,setActionLevel:r.BladeburnerApiBase,getRank:r.BladeburnerApiBase,getSkillPoints:r.BladeburnerApiBase,getSkillLevel:r.BladeburnerApiBase,getSkillUpgradeCost:r.BladeburnerApiBase,upgradeSkill:r.BladeburnerApiBase,getTeamSize:r.BladeburnerApiBase,setTeamSize:r.BladeburnerApiBase,getCityEstimatedPopulation:r.BladeburnerApiBase,getCityCommunities:r.BladeburnerApiBase,getCityChaos:r.BladeburnerApiBase,getCity:r.BladeburnerApiBase,switchCity:r.BladeburnerApiBase,getStamina:r.BladeburnerApiBase,joinBladeburnerFaction:r.BladeburnerApiBase,joinBladeburnerDivision:r.BladeburnerApiBase,getBonusTime:0},u={getPossibleLocations:r.InfiltrationGetLocations,getInfiltration:r.InfiltrationGetInfiltrations},m={attempt:r.CodingContractBase,getContractType:r.CodingContractBase/2,getData:r.CodingContractBase/2,getDescription:r.CodingContractBase/2,getNumTriesRemaining:r.CodingContractBase/5,createDummyContract:r.CodingContractBase/5,getContractTypes:r.CodingContractBase/5},f={getNumSleeves:r.SleeveBase,setToIdle:r.SleeveBase,setToShockRecovery:r.SleeveBase,setToSynchronize:r.SleeveBase,setToCommitCrime:r.SleeveBase,setToUniversityCourse:r.SleeveBase,travel:r.SleeveBase,setToCompanyWork:r.SleeveBase,setToFactionWork:r.SleeveBase,setToGymWorkout:r.SleeveBase,getTask:r.SleeveBase,getSleeve:r.SleeveBase,getSleeveAugmentations:r.SleeveBase,getSleevePurchasableAugs:r.SleeveBase,purchaseSleeveAug:r.SleeveBase,setToBladeburnerAction:r.SleeveBase,getSleeveAugmentationPrice:r.SleeveBase,getSleeveAugmentationRepReq:r.SleeveBase},h={giftWidth:r.StanekWidth,giftHeight:r.StanekHeight,chargeFragment:r.StanekCharge,fragmentDefinitions:r.StanekFragmentDefinitions,activeFragments:r.StanekPlacedFragments,clearGift:r.StanekClear,canPlaceFragment:r.StanekCanPlace,placeFragment:r.StanekPlace,getFragment:r.StanekFragmentAt,removeFragment:r.StanekDeleteAt,acceptGift:r.StanekAcceptGift},d={corporation:{hasCorporation:0,getConstants:0,getIndustryData:r.CorporationInfo,getMaterialData:r.CorporationInfo,issueNewShares:r.CorporationAction,createCorporation:r.CorporationAction,hasUnlock:r.CorporationInfo,getUnlockCost:r.CorporationInfo,getUpgradeLevel:r.CorporationInfo,getUpgradeLevelCost:r.CorporationInfo,getInvestmentOffer:r.CorporationInfo,acceptInvestmentOffer:r.CorporationAction,goPublic:r.CorporationAction,bribe:r.CorporationAction,getCorporation:r.CorporationInfo,getDivision:r.CorporationInfo,expandIndustry:r.CorporationAction,expandCity:r.CorporationAction,purchaseUnlock:r.CorporationAction,levelUpgrade:r.CorporationAction,issueDividends:r.CorporationAction,buyBackShares:r.CorporationAction,sellShares:r.CorporationAction,getBonusTime:0,sellMaterial:r.CorporationAction,sellProduct:r.CorporationAction,discontinueProduct:r.CorporationAction,setSmartSupply:r.CorporationAction,setSmartSupplyOption:r.CorporationAction,buyMaterial:r.CorporationAction,bulkPurchase:r.CorporationAction,getWarehouse:r.CorporationInfo,getProduct:r.CorporationInfo,getMaterial:r.CorporationInfo,setMaterialMarketTA1:r.CorporationAction,setMaterialMarketTA2:r.CorporationAction,setProductMarketTA1:r.CorporationAction,setProductMarketTA2:r.CorporationAction,exportMaterial:r.CorporationAction,cancelExportMaterial:r.CorporationAction,purchaseWarehouse:r.CorporationAction,upgradeWarehouse:r.CorporationAction,makeProduct:r.CorporationAction,limitMaterialProduction:r.CorporationAction,limitProductProduction:r.CorporationAction,getUpgradeWarehouseCost:r.CorporationInfo,hasWarehouse:r.CorporationInfo,hireEmployee:r.CorporationAction,upgradeOfficeSize:r.CorporationAction,throwParty:r.CorporationAction,buyTea:r.CorporationAction,hireAdVert:r.CorporationAction,research:r.CorporationAction,getOffice:r.CorporationInfo,getHireAdVertCost:r.CorporationInfo,getHireAdVertCount:r.CorporationInfo,getResearchCost:r.CorporationInfo,hasResearched:r.CorporationInfo,setAutoJobAssignment:r.CorporationAction,getOfficeSizeUpgradeCost:r.CorporationInfo},hacknet:{numNodes:0,purchaseNode:0,getPurchaseNodeCost:0,getNodeStats:0,upgradeLevel:0,upgradeRam:0,upgradeCore:0,upgradeCache:0,getLevelUpgradeCost:0,getRamUpgradeCost:0,getCoreUpgradeCost:0,getCacheUpgradeCost:0,numHashes:0,hashCost:0,spendHashes:0,maxNumNodes:0,hashCapacity:0,getHashUpgrades:0,getHashUpgradeLevel:0,getStudyMult:0,getTrainingMult:0},stock:i,singularity:s,gang:l,bladeburner:c,infiltration:u,codingcontract:m,sleeve:f,stanek:h,ui:{getTheme:0,setTheme:0,resetTheme:0,getStyles:0,setStyles:0,resetStyles:0,getGameInfo:0,clearTerminal:0,windowSize:0},grafting:{getAugmentationGraftPrice:3.75,getAugmentationGraftTime:3.75,getGraftableAugmentations:5,graftAugmentation:7.5},sprintf:0,vsprintf:0,scan:r.Scan,hack:r.Hack,hackAnalyzeThreads:r.HackAnalyze,hackAnalyze:r.HackAnalyze,hackAnalyzeSecurity:r.HackAnalyze,hackAnalyzeChance:r.HackAnalyze,sleep:0,asleep:0,share:2.4,getSharePower:.2,grow:r.Grow,growthAnalyze:r.GrowthAnalyze,growthAnalyzeSecurity:r.GrowthAnalyze,weaken:r.Weaken,weakenAnalyze:r.WeakenAnalyze,print:0,printf:0,tprint:0,tprintf:0,clearLog:0,disableLog:0,enableLog:0,isLogEnabled:0,getScriptLogs:0,hasTorRouter:.05,nuke:r.PortProgram,brutessh:r.PortProgram,ftpcrack:r.PortProgram,relaysmtp:r.PortProgram,httpworm:r.PortProgram,sqlinject:r.PortProgram,run:r.Run,exec:r.Exec,spawn:r.Spawn,kill:r.Kill,killall:r.Kill,exit:0,atExit:0,scp:r.Scp,ls:r.Scan,ps:r.Scan,getRecentScripts:r.RecentScripts,hasRootAccess:r.HasRootAccess,getHostname:r.GetHostname,getHackingLevel:r.GetHackingLevel,getHackingMultipliers:.25,getHacknetMultipliers:.25,getBitNodeMultipliers:4,getServer:2,getServerMoneyAvailable:r.GetServer,getServerSecurityLevel:r.GetServer,getServerBaseSecurityLevel:r.GetServer,getServerMinSecurityLevel:r.GetServer,getServerRequiredHackingLevel:r.GetServer,getServerMaxMoney:r.GetServer,getServerGrowth:r.GetServer,getServerNumPortsRequired:r.GetServer,getServerMaxRam:r.GetServerMaxRam,getServerUsedRam:r.GetServerUsedRam,serverExists:r.GetServer,fileExists:r.FileExists,isRunning:r.IsRunning,getPurchasedServerLimit:r.GetPurchasedServerLimit,getPurchasedServerMaxRam:r.GetPurchasedServerMaxRam,getPurchasedServerCost:r.GetPurchaseServer,getPurchasedServerUpgradeCost:.1,upgradePurchasedServer:.25,renamePurchasedServer:0,purchaseServer:r.PurchaseServer,deleteServer:r.PurchaseServer,getPurchasedServers:r.PurchaseServer,write:0,tryWritePort:0,read:0,peek:0,clear:0,writePort:0,readPort:0,getPortHandle:0,rm:r.ReadWrite,scriptRunning:r.ArbScript,scriptKill:r.ArbScript,getScriptName:0,getScriptRam:r.GetScript,getHackTime:r.GetHackTime,getGrowTime:r.GetHackTime,getWeakenTime:r.GetHackTime,getTotalScriptIncome:r.GetScript,getScriptIncome:r.GetScript,getTotalScriptExpGain:r.GetScript,getScriptExpGain:r.GetScript,getRunningScript:r.GetRunningScript,formatNumber:0,formatRam:0,formatPercent:0,nFormat:0,tFormat:0,getTimeSinceLastAug:r.GetHackTime,prompt:0,wget:0,getFavorToDonate:r.GetFavorToDonate,getPlayer:r.SingularityFn1/4,getMoneySources:r.GetMoneySourcesCost,mv:0,getResetInfo:1,getFunctionRamCost:0,tail:0,toast:0,moveTail:0,resizeTail:0,closeTail:0,setTitle:0,clearPort:0,openDevMenu:0,alert:0,flags:0,exploit:0,bypass:0,alterReality:0,rainbow:0,heart:{break:0},tprintRaw:0,printRaw:0,formulas:{mockServer:0,mockPlayer:0,mockPerson:0,reputation:{calculateFavorToRep:0,calculateRepToFavor:0,repFromDonation:0},skills:{calculateSkill:0,calculateExp:0},hacking:{hackChance:0,hackExp:0,hackPercent:0,growPercent:0,growThreads:0,hackTime:0,growTime:0,weakenTime:0},hacknetNodes:{moneyGainRate:0,levelUpgradeCost:0,ramUpgradeCost:0,coreUpgradeCost:0,hacknetNodeCost:0,constants:0},hacknetServers:{hashGainRate:0,levelUpgradeCost:0,ramUpgradeCost:0,coreUpgradeCost:0,cacheUpgradeCost:0,hashUpgradeCost:0,hacknetServerCost:0,constants:0},gang:{wantedPenalty:0,respectGain:0,wantedLevelGain:0,moneyGain:0,ascensionPointsGain:0,ascensionMultiplier:0},work:{crimeSuccessChance:0,crimeGains:0,gymGains:0,universityGains:0,factionGains:0,companyGains:0}}};function p(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(0===e.length)throw new Error("No arguments passed to getRamCost()");let n=d;for(const a of e){const r=n[a];if(void 0===r){const n=`No ram cost is defined for (ns.${e.join(".")})`;if(t)throw n;return 0}if(!r||"object"!=typeof r)return"function"==typeof r?r():r;n=r}throw new Error(`Tried to get ram cost for ns.${e.join(".")} but the value was an invalid type`)}},71828:(e,t,n)=>{"use strict";n.d(t,{$:()=>r,h:()=>o});var a=n(51087);const r=[];function o(e){if(r.find((t=>t.runningScript.pid===e.pid)))return;const t=new Date;for(r.unshift({timeOfDeath:t,runningScript:e.scriptRef});r.length>a.Z.MaxRecentScriptsCapacity;)r.pop()}},60520:(e,t,n)=>{"use strict";n.d(t,{w:()=>a});class a{errorMessage="";constructor(e){this.pid=e.pid,this.name=e.name,this.hostname=e.hostname,this.errorMessage=e.errorMessage,Object.freeze(this)}}Object.freeze(a),Object.freeze(a.prototype)},40185:(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var a=n(6336),r=n(32310),o=n(97467);class i{code="";delay=null;delayReject=void 0;disableLogs={};dynamicLoadedFns={};dynamicRamUsage=r.qS.Base;errorMessage="";loadedFns={};output="";atExit=void 0;constructor(e,t,n){this.name=e.filename,this.hostname=e.server;const r=Math.round(t);if("number"!=typeof r||isNaN(r))throw new Error(`Invalid PID when constructing WorkerScript: ${t}`);this.pid=r,e.pid=r;const i=(0,o.WT)(this.hostname);if(null==i)throw new Error(`WorkerScript constructed with invalid server ip: ${this.hostname}`);const s=i.scripts.get(this.name);if(!s)throw new Error(`WorkerScript constructed with invalid script filename: ${this.name}`);this.code=s.code,this.scriptRef=e,this.args=e.args.slice(),this.env=new a.q,"function"==typeof n&&(this.env.vars=n(this))}getServer(){const e=(0,o.WT)(this.hostname);if(null==e)throw new Error(`Script ${this.name} pid ${this.pid} is running on non-existent server?`);return e}getScript(){return this.getServer().scripts.get(this.name)||(console.error("Failed to find underlying Script object in WorkerScript.getScript(). This probably means somethings wrong"),null)}shouldLog(e){return null==this.disableLogs[e]}log(e,t){this.shouldLog(e)&&(e&&t?this.scriptRef.log(`${e}: ${t()}`):e?this.scriptRef.log(e):this.scriptRef.log(t()))}print(e){this.scriptRef.log(e)}}},75350:(e,t,n)=>{"use strict";n.d(t,{R:()=>a});const a=new Map},21951:(e,t,n)=>{"use strict";n.d(t,{_:()=>h,i:()=>f});var a=n(60520),r=n(40185),o=n(75350),i=n(97467),s=n(71828),l=n(40780),c=n(95173),u=n(23122),m=n(99953);function f(e){return l.wP.isRunning?(c.e.emit("Processes cannot be killed during the tutorial."),!1):(d(e),!0)}function h(e){const t=o.R.get(e);return t instanceof r.h&&(d(t),!0)}function d(e){var t;if(!e.env.stopFlag){if(e.delay&&clearTimeout(e.delay),null===(t=e.delayReject)||void 0===t||t.call(e,new a.w(e)),e.env.runningFn="","function"==typeof e.atExit){try{const t=e.atExit;e.atExit=void 0,t()}catch(t){(0,u.ac)(t,e,"Error running atExit function.\n\n")}if(e.env.stopFlag)return}e.env.stopFlag=!0,function(e){const t=e.hostname,n=(0,i.WT)(t);if(null==n)return void console.error(`Could not find server on which this script is running: ${t}`);const a=e.scriptRef,r=n.runningScriptMap.get(a.scriptKey);r?(r.delete(e.pid),0===r.size&&n.runningScriptMap.delete(a.scriptKey)):console.error(`Couldn't find runningScriptMap for key ${a.scriptKey}`),n.updateRamUsed((0,m.S)(n.ramUsed-a.ramUsage*a.threads)),o.R.delete(e.pid),(0,s.h)(e)}(e)}}},96393:(e,t,n)=>{"use strict";n.d(t,{k:()=>le,ns:()=>ce,q:()=>ue});var a=n(19755),r=n.n(a),o=n(8975),i=n(97740),s=n(72938),l=n(49708),c=n(42805),u=n(65065),m=n(49173),f=n(33244),h=n(23001),d=n(97467),p=n(2517),g=n(89673),y=n(89916),b=n(62734),v=n(7872),k=n(21951),w=n(75350),E=n(23122),S=n(22115),C=n(49802),x=n(85167),N=n(72326),M=n(82120),A=n(12093),T=n(30180),L=n(47837),R=n(53235),F=n(53331),I=n(32730),_=n(47051),P=n(40082),B=n(83075),O=n(62450),D=n(67828),Z=n(82439),G=n(56704),J=n(39463),W=n(32369),H=n(70769),U=n(21278),j=n(46085),$=n(27178),q=n(71828),z=n(40811),V=n(60520),Y=n(99745),K=n(78719),X=n(96486),Q=n(92077),ee=n.n(Q),te=n(24302),ne=n(64962),ae=n(69917),re=n(48897),oe=n(61835),ie=n(32310),se=n(50862);const le={CityName:f.CityName,CrimeType:f.CrimeType,FactionWorkType:f.FactionWorkType,GymType:f.GymType,JobName:f.JobName,LocationName:f.LocationName,ToastVariant:f.ToastVariant,UniversityClassType:f.UniversityClassType,CompanyName:f.CompanyName};for(const e of Object.values(le))Object.freeze(e);Object.freeze(le);const ce={singularity:(0,G.h)(),gang:(0,M.j)(),bladeburner:(0,_.M)(),codingcontract:(0,P.f)(),sleeve:(0,A.T)(),corporation:(0,B.x)(),stanek:(0,R.T)(),infiltration:(0,F.d)(),ui:(0,I.z)(),formulas:(0,O.V)(),stock:(0,D.V)(),grafting:(0,Z.u)(),hacknet:(0,L.p)(),sprintf:()=>o.sprintf,vsprintf:()=>o.vsprintf,scan:e=>t=>{const n=t?E.BM.string(e,"hostname",t):e.workerScript.hostname,a=E.BM.getServer(e,n),r=[];for(let e=0;e`returned ${a.serversOnNetwork.length} connections for ${a.hostname}`)),r},hasTorRouter:()=>()=>m.J5.hasTorRouter(),hack:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=E.BM.string(e,"hostname",t),r={};return(0,E.Z6)(e,"opts",n,r),E.BM.hack(e,a,!1,n)},hackAnalyzeThreads:e=>(t,n)=>{const a=E.BM.string(e,"hostname",t),r=E.BM.number(e,"hackAmount",n),o=E.BM.getServer(e,a);if(!(o instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),-1;if(isNaN(r))throw E.BM.makeRuntimeErrorMsg(e,`Invalid hackAmount argument passed into hackAnalyzeThreads: ${r}. Must be numeric.`);if(r<0||r>o.moneyAvailable)return-1;if(0===r)return 0;const i=(0,l.zX)(o,m.J5);return 0===i||0===o.moneyAvailable?-1:r/(o.moneyAvailable*i)},hackAnalyze:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?(0,l.zX)(a,m.J5):(E.BM.log(e,(()=>"Cannot be executed on this server.")),0)},hackAnalyzeSecurity:e=>(t,n)=>{let a=E.BM.number(e,"threads",t);if(n){const t=E.BM.string(e,"hostname",n),r=E.BM.getServer(e,t);if(!(r instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),0;const o=(0,l.zX)(r,m.J5);o>0&&(a=Math.min(a,Math.ceil(1/o)))}return s.t.ServerFortifyAmount*a},hackAnalyzeChance:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?(0,l.gb)(a,m.J5):(E.BM.log(e,(()=>"Cannot be executed on this server.")),0)},sleep:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const n=E.BM.number(e,"time",t);return E.BM.log(e,(()=>`Sleeping for ${(0,C.UF)(n,!0)}.`)),E.BM.netscriptDelay(e,n).then((function(){return Promise.resolve(!0)}))},asleep:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const n=E.BM.number(e,"time",t);return E.BM.log(e,(()=>`Sleeping for ${(0,C.UF)(n,!0)}.`)),new Promise((e=>setTimeout((()=>e(!0)),n)))},grow:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=E.BM.string(e,"hostname",t),r={};(0,E.Z6)(e,"opts",n,r);const o=E.BM.resolveNetscriptRequestedThreads(e,n.threads),i=E.BM.number(e,"opts.additionalMsec",n.additionalMsec??0);if(i<0)throw E.BM.makeRuntimeErrorMsg(e,`additionalMsec must be non-negative, got ${i}`);const s=E.BM.getServer(e,a);if(!(s instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),Promise.resolve(0);const u=(0,d.WT)(e.workerScript.hostname);if(null===u)throw new Error("Workerscript host is null");const f=(0,c.Mr)(s);if(!f.res)throw E.BM.makeRuntimeErrorMsg(e,f.msg||"");const h=(0,l.Md)(s,m.J5)+i/1e3;return E.BM.log(e,(()=>`Executing on '${s.hostname}' in ${(0,C.UF)(1e3*h,!0)} (t=${(0,S.jL)(o)}).`)),E.BM.netscriptDelay(e,1e3*h).then((function(){const t=s.moneyAvailable<=0?1:s.moneyAvailable;(0,p.pw)(s,o,u.cpuCores);const a=s.moneyAvailable;e.workerScript.scriptRef.recordGrow(s.hostname,o);const r=(0,l.iG)(s,m.J5)*o,i=a/t-1;return E.BM.log(e,(()=>`Available money on '${s.hostname}' grown by ${(0,S.T3)(i,6)}. Gained ${(0,S.Mf)(r)} hacking exp (t=${(0,S.jL)(o)}).`)),e.workerScript.scriptRef.onlineExpGained+=r,m.J5.gainHackingExp(r),n.stock&&(0,b.Bh)(s,a-t),Promise.resolve(a/t)}))},growthAnalyze:e=>function(t,n){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=E.BM.string(e,"hostname",t),o=E.BM.number(e,"multiplier",n),i=E.BM.number(e,"cores",a),s=E.BM.getServer(e,r);if(!(s instanceof y.x))return E.BM.log(e,(()=>`${r} is not a hackable server. Returning 0.`)),0;if(o<1||!isFinite(o))throw E.BM.makeRuntimeErrorMsg(e,`Invalid argument: multiplier must be finite and >= 1, is ${o}.`);if(!Number.isInteger(i)||i<1)throw E.BM.makeRuntimeErrorMsg(e,`Cores should be a positive integer. Cores provided: ${i}`);return(0,p.a_)(s,o,i)},growthAnalyzeSecurity:e=>function(t,n){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=E.BM.number(e,"threads",t);if(n){const t=E.BM.number(e,"cores",a),o=E.BM.string(e,"hostname",n),i=E.BM.getServer(e,o);if(!(i instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),0;const s=Math.ceil((0,p.yk)(i,i.moneyMax,i.moneyAvailable,t));r=Math.min(r,s)}return 2*s.t.ServerFortifyAmount*r},weaken:e=>async function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=E.BM.string(e,"hostname",t),r={};(0,E.Z6)(e,"opts",n,r);const o=E.BM.resolveNetscriptRequestedThreads(e,n.threads),u=E.BM.number(e,"opts.additionalMsec",n.additionalMsec??0);if(u<0)throw E.BM.makeRuntimeErrorMsg(e,`additionalMsec must be non-negative, got ${u}`);const f=E.BM.getServer(e,a);if(!(f instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),Promise.resolve(0);const h=(0,c.Eb)(f);if(!h.res)throw E.BM.makeRuntimeErrorMsg(e,h.msg||"");const p=(0,l.Vp)(f,m.J5)+u/1e3;return E.BM.log(e,(()=>`Executing on '${f.hostname}' in ${(0,C.UF)(1e3*p,!0)} (t=${(0,S.jL)(o)})`)),E.BM.netscriptDelay(e,1e3*p).then((function(){const t=(0,d.WT)(e.workerScript.hostname);if(null===t)return E.BM.log(e,(()=>"Server is null, did it die?")),Promise.resolve(0);const n=1+(t.cpuCores-1)/16,a=s.t.ServerWeakenAmount*o*n;f.weaken(a),e.workerScript.scriptRef.recordWeaken(f.hostname,o);const r=(0,l.iG)(f,m.J5)*o;return E.BM.log(e,(()=>`'${f.hostname}' security level weakened to ${f.hackDifficulty}. Gained ${(0,S.Mf)(r)} hacking exp (t=${(0,S.jL)(o)})`)),e.workerScript.scriptRef.onlineExpGained+=r,m.J5.gainHackingExp(r),Promise.resolve(a*i.dQ.ServerWeakenRate)}))},weakenAnalyze:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=E.BM.number(e,"threads",t),r=E.BM.number(e,"cores",n),o=1+(r-1)/16;return s.t.ServerWeakenAmount*a*o*i.dQ.ServerWeakenRate},share:e=>()=>{E.BM.log(e,(()=>"Sharing this computer."));const t=(0,$.HX)(e.workerScript.scriptRef.threads*(0,j.f)(m.J5.skills.intelligence,2));return E.BM.netscriptDelay(e,1e4).finally((function(){E.BM.log(e,(()=>"Finished sharing this computer.")),t()}))},getSharePower:()=>()=>(0,$.J6)(),print:e=>function(){for(var t=arguments.length,n=new Array(t),a=0;afunction(t){const n=E.BM.string(e,"format",t);if("string"!=typeof n)throw E.BM.makeRuntimeErrorMsg(e,"First argument must be string for the format.");for(var a=arguments.length,r=new Array(a>1?a-1:0),i=1;ifunction(){for(var t=arguments.length,n=new Array(t),a=0;afunction(t){const n=E.BM.string(e,"format",t);for(var a=arguments.length,r=new Array(a>1?a-1:0),i=1;i()=>{e.workerScript.scriptRef.clearLog()},disableLog:e=>t=>{const n=E.BM.string(e,"fn",t);if("ALL"===n){for(const t of Object.keys(me))e.workerScript.disableLogs[t]=!0;E.BM.log(e,(()=>"Disabled logging for all functions"))}else{if(void 0===me[n])throw E.BM.makeRuntimeErrorMsg(e,`Invalid argument: ${n}.`);e.workerScript.disableLogs[n]=!0,E.BM.log(e,(()=>`Disabled logging for ${n}`))}},enableLog:e=>t=>{const n=E.BM.string(e,"fn",t);if("ALL"===n){for(const t of Object.keys(me))delete e.workerScript.disableLogs[t];E.BM.log(e,(()=>"Enabled logging for all functions"))}else if(void 0===me[n])throw E.BM.makeRuntimeErrorMsg(e,`Invalid argument: ${n}.`);delete e.workerScript.disableLogs[n],E.BM.log(e,(()=>`Enabled logging for ${n}`))},isLogEnabled:e=>t=>{const n=E.BM.string(e,"fn",t);if(void 0===me[n])throw E.BM.makeRuntimeErrorMsg(e,`Invalid argument: ${n}.`);return!e.workerScript.disableLogs[n]},getScriptLogs:e=>function(t,n){for(var a=arguments.length,r=new Array(a>2?a-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i))),[]):s.logs.map((e=>""+e))},tail:e=>function(t,n){for(var a=arguments.length,r=new Array(a>2?a-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i)))},moveTail:e=>function(t,n){var a;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.workerScript.scriptRef.pid;const o=E.BM.number(e,"x",t),i=E.BM.number(e,"y",n),s=E.BM.number(e,"pid",r),l=E.BM.getRunningScript(e,s);null!=l?null===(a=l.tailProps)||void 0===a||a.setPosition(o,i):E.BM.log(e,(()=>E.BM.getCannotFindRunningScriptErrorMessage(s)))},resizeTail:e=>function(t,n){var a;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.workerScript.scriptRef.pid;const o=E.BM.number(e,"w",t),i=E.BM.number(e,"h",n),s=E.BM.number(e,"pid",r),l=E.BM.getRunningScript(e,s);null!=l?null===(a=l.tailProps)||void 0===a||a.setSize(o,i):E.BM.log(e,(()=>E.BM.getCannotFindRunningScriptErrorMessage(s)))},closeTail:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.scriptRef.pid;const n=E.BM.number(e,"pid",t);x.A9.emit(n)},setTitle:e=>function(t){var n;let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.workerScript.scriptRef.pid;const r=E.BM.number(e,"pid",a),o=E.BM.getRunningScript(e,r);null!=o?(o.title="string"==typeof t?t:(0,E.Wt)(t),null===(n=o.tailProps)||void 0===n||n.rerender()):E.BM.log(e,(()=>E.BM.getCannotFindRunningScriptErrorMessage(r)))},nuke:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);if(!(a instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(a.hasAdminRights)return E.BM.log(e,(()=>`Already have root access to '${a.hostname}'.`)),!0;if(!m.J5.hasProgram(f.CompletedProgramName.nuke))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the NUKE.exe virus!");if(a.openPortCount`Executed NUKE.exe virus on '${a.hostname}' to gain root access.`)),!0},brutessh:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);if(!(a instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.bruteSsh))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the BruteSSH.exe program!");return a.sshPortOpen?E.BM.log(e,(()=>`SSH Port (22) already opened on '${a.hostname}'.`)):(E.BM.log(e,(()=>`Executed BruteSSH.exe on '${a.hostname}' to open SSH port (22).`)),a.sshPortOpen=!0,++a.openPortCount),!0},ftpcrack:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);if(!(a instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.ftpCrack))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the FTPCrack.exe program!");return a.ftpPortOpen?E.BM.log(e,(()=>`FTP Port (21) already opened on '${a.hostname}'.`)):(E.BM.log(e,(()=>`Executed FTPCrack.exe on '${a.hostname}' to open FTP port (21).`)),a.ftpPortOpen=!0,++a.openPortCount),!0},relaysmtp:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);if(!(a instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.relaySmtp))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the relaySMTP.exe program!");return a.smtpPortOpen?E.BM.log(e,(()=>`SMTP Port (25) already opened on '${a.hostname}'.`)):(E.BM.log(e,(()=>`Executed relaySMTP.exe on '${a.hostname}' to open SMTP port (25).`)),a.smtpPortOpen=!0,++a.openPortCount),!0},httpworm:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);if(!(a instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.httpWorm))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the HTTPWorm.exe program!");return a.httpPortOpen?E.BM.log(e,(()=>`HTTP Port (80) already opened on '${a.hostname}'.`)):(E.BM.log(e,(()=>`Executed HTTPWorm.exe on '${a.hostname}' to open HTTP port (80).`)),a.httpPortOpen=!0,++a.openPortCount),!0},sqlinject:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);if(!(a instanceof y.x))return E.BM.log(e,(()=>"Cannot be executed on this server.")),!1;if(!m.J5.hasProgram(f.CompletedProgramName.sqlInject))throw E.BM.makeRuntimeErrorMsg(e,"You do not have the SQLInject.exe program!");return a.sqlPortOpen?E.BM.log(e,(()=>`SQL Port (1433) already opened on '${a.hostname}'.`)):(E.BM.log(e,(()=>`Executed SQLInject.exe on '${a.hostname}' to open SQL port (1433).`)),a.sqlPortOpen=!0,++a.openPortCount),!0},run:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=E.BM.scriptPath(e,"scriptname",t),r=E.BM.runOptions(e,n);for(var o=arguments.length,i=new Array(o>2?o-2:0),s=2;sfunction(t,n){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=E.BM.scriptPath(e,"scriptname",t),o=E.BM.string(e,"hostname",n),i=E.BM.runOptions(e,a);for(var s=arguments.length,l=new Array(s>3?s-3:0),c=3;cfunction(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const a=E.BM.scriptPath(e,"scriptname",t),r=E.BM.spawnOptions(e,n);for(var o=arguments.length,i=new Array(o>2?o-2:0),s=2;s{const t=(0,d.WT)(e.workerScript.hostname);if(null==t)throw E.BM.makeRuntimeErrorMsg(e,"Could not find server. This is a bug. Report to dev");return(0,v.JP)("spawn",t,a,l,e.workerScript,r)}),r.spawnDelay),E.BM.log(e,(()=>`Will execute '${a}' in ${r.spawnDelay} seconds`)),(0,k.i)(e.workerScript)&&E.BM.log(e,(()=>"Exiting..."))},kill:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.workerScript.hostname;for(var a=arguments.length,r=new Array(a>2?a-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i))),!1;s=!0;for(const e of n.keys())s&&=(0,k._)(e)}return s?(l?E.BM.log(e,(()=>`Killing script with PID ${i}`)):E.BM.log(e,(()=>`Killing '${t}' on '${n}' with args: ${(0,N.N)(r)}.`)),!0):(l?E.BM.log(e,(()=>`No script with PID ${i}`)):E.BM.log(e,(()=>`Internal error killing '${t}' on '${n}' with args: ${(0,N.N)(r)}`)),!1)},killall:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const a=E.BM.string(e,"hostname",t),r=!!n,o=E.BM.getServer(e,a);let i=0;for(const t of o.runningScriptMap.values())for(const n of t.keys())r&&n==e.workerScript.pid||((0,k._)(n),++i);return E.BM.log(e,(()=>`Killing all scripts on '${o.hostname}'.`)),i>0},exit:e=>()=>{throw E.BM.log(e,(()=>"Exiting...")),(0,k.i)(e.workerScript),new V.w(e.workerScript)},scp:e=>(t,n,a)=>{const r=E.BM.string(e,"destination",n),o=E.BM.string(e,"source",a??e.workerScript.hostname),i=E.BM.getServer(e,r),s=E.BM.getServer(e,o),l=Array.isArray(t)?t:[t],c=[],u=[];for(const t of l){const n=E.BM.filePath(e,"files",t);if((0,ae.UH)(n)||(0,re.e)(n))u.push(n);else{if(!n.endsWith(".lit"))throw E.BM.makeRuntimeErrorMsg(e,"Only works for scripts, .lit and .txt files.");c.push(n)}}let m=!0;for(const t of u){const n=s.getContentFile(t);if(!n){E.BM.log(e,(()=>`File '${t}' does not exist.`)),m=!1;continue}const a=i.writeToContentFile(t,n.content);E.BM.log(e,(()=>`Copied file ${t} from ${s.hostname} to ${i.hostname}`)),a.overwritten&&E.BM.log(e,(()=>`Warning: ${t} was overwritten on ${i.hostname}`))}for(const t of c)s.messages.find((e=>e===t))?i.messages.find((e=>e===t))?E.BM.log(e,(()=>`File '${t}' was already on '${i.hostname}'.`)):(i.messages.push(t),E.BM.log(e,(()=>`File '${t}' copied over to '${i.hostname}'.`))):(E.BM.log(e,(()=>`File '${t}' does not exist.`)),m=!1);return m},ls:e=>(t,n)=>{const a=E.BM.string(e,"hostname",t),r=E.BM.string(e,"substring",n??""),o=E.BM.getServer(e,a),i=[...o.contracts.map((e=>e.fn)),...o.messages,...o.programs,...o.scripts.keys(),...o.textFiles.keys()];return r?i.filter((e=>("/"+e).includes(r))).sort():i.sort()},getRecentScripts:()=>()=>q.$.map((e=>({timeOfDeath:e.timeOfDeath,...E.BM.createPublicRunningScript(e.runningScript)}))),ps:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname;const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n),r=[];for(const e of a.runningScriptMap.values())for(const t of e.values())r.push({filename:t.filename,threads:t.threads,args:t.args.slice(),pid:t.pid,temporary:t.temporary});return r},hasRootAccess:e=>t=>{const n=E.BM.string(e,"hostname",t);return E.BM.getServer(e,n).hasAdminRights},getHostname:e=>()=>e.workerScript.hostname,getHackingLevel:e=>()=>(m.J5.updateSkillLevels(),E.BM.log(e,(()=>`returned ${m.J5.skills.hacking}`)),m.J5.skills.hacking),getHackingMultipliers:()=>()=>({chance:m.J5.mults.hacking_chance,speed:m.J5.mults.hacking_speed,money:m.J5.mults.hacking_money,growth:m.J5.mults.hacking_grow}),getHacknetMultipliers:()=>()=>({production:m.J5.mults.hacknet_node_money,purchaseCost:m.J5.mults.hacknet_node_purchase_cost,ramCost:m.J5.mults.hacknet_node_ram_cost,coreCost:m.J5.mults.hacknet_node_core_cost,levelCost:m.J5.mults.hacknet_node_level_cost}),getBitNodeMultipliers:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m.J5.bitNodeN,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:m.J5.sourceFileLvl(m.J5.bitNodeN)+1;if(m.J5.sourceFileLvl(5)<=0&&5!==m.J5.bitNodeN)throw E.BM.makeRuntimeErrorMsg(e,"Requires Source-File 5 to run.");const a=Math.round(E.BM.number(e,"n",t)),r=Math.round(E.BM.number(e,"lvl",n));if(a<1||a>13)throw new Error("n must be between 1 and 13");if(r<1)throw new Error("lvl must be >= 1");return Object.assign({},(0,Y.cm)(a,r))},getServer:e=>t=>{const n=E.BM.string(e,"hostname",t??e.workerScript.hostname),a=E.BM.getServer(e,n);return{hostname:a.hostname,ip:a.ip,sshPortOpen:a.sshPortOpen,ftpPortOpen:a.ftpPortOpen,smtpPortOpen:a.smtpPortOpen,httpPortOpen:a.httpPortOpen,sqlPortOpen:a.sqlPortOpen,hasAdminRights:a.hasAdminRights,cpuCores:a.cpuCores,isConnectedTo:a.isConnectedTo,ramUsed:a.ramUsed,maxRam:a.maxRam,organizationName:a.organizationName,purchasedByPlayer:a.purchasedByPlayer,backdoorInstalled:a.backdoorInstalled,baseDifficulty:a.baseDifficulty,hackDifficulty:a.hackDifficulty,minDifficulty:a.minDifficulty,moneyAvailable:a.moneyAvailable,moneyMax:a.moneyMax,numOpenPortsRequired:a.numOpenPortsRequired,openPortCount:a.openPortCount,requiredHackingSkill:a.requiredHackingSkill,serverGrowth:a.serverGrowth}},getServerMoneyAvailable:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?0:"home"==a.hostname?(E.BM.log(e,(()=>`returned player's money: ${(0,S.lb)(m.J5.money)}`)),m.J5.money):(E.BM.log(e,(()=>`returned ${(0,S.lb)(a.moneyAvailable)} for '${a.hostname}'`)),a.moneyAvailable):(E.BM.log(e,(()=>"Cannot be executed on this server.")),0)},getServerSecurityLevel:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?1:(E.BM.log(e,(()=>`returned ${(0,S.L7)(a.hackDifficulty)} for '${a.hostname}'`)),a.hackDifficulty):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerBaseSecurityLevel:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?1:(E.BM.log(e,(()=>`returned ${(0,S.L7)(a.baseDifficulty)} for '${a.hostname}'`)),a.baseDifficulty):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerMinSecurityLevel:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?1:(E.BM.log(e,(()=>`returned ${(0,S.L7)(a.minDifficulty)} for ${a.hostname}`)),a.minDifficulty):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerRequiredHackingLevel:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?1:(E.BM.log(e,(()=>`returned ${(0,S.$j)(a.requiredHackingSkill,0)} for '${a.hostname}'`)),a.requiredHackingSkill):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerMaxMoney:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?0:(E.BM.log(e,(()=>`returned ${(0,S.lb)(a.moneyMax)} for '${a.hostname}'`)),a.moneyMax):(E.BM.log(e,(()=>"Cannot be executed on this server.")),0)},getServerGrowth:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?1:(E.BM.log(e,(()=>`returned ${a.serverGrowth} for '${a.hostname}'`)),a.serverGrowth):(E.BM.log(e,(()=>"Cannot be executed on this server.")),1)},getServerNumPortsRequired:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?5:(E.BM.log(e,(()=>`returned ${a.numOpenPortsRequired} for '${a.hostname}'`)),a.numOpenPortsRequired):(E.BM.log(e,(()=>"Cannot be executed on this server.")),5)},getServerMaxRam:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return E.BM.log(e,(()=>`returned ${(0,S.$1)(a.maxRam)}`)),a.maxRam},getServerUsedRam:e=>t=>{const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return E.BM.log(e,(()=>`returned ${(0,S.$1)(a.ramUsed)}`)),a.ramUsed},serverExists:e=>t=>{const n=E.BM.string(e,"hostname",t);return null!==(0,d.WT)(n)},fileExists:e=>(t,n)=>{const a=E.BM.string(e,"filename",t),r=E.BM.string(e,"hostname",n??e.workerScript.hostname),o=E.BM.getServer(e,r),i=(0,ne.Iw)(a,e.workerScript.name);if(!i)return!1;if((0,ae.UH)(i))return o.scripts.has(i);if((0,re.e)(i))return o.textFiles.has(i);if(i.endsWith(".lit")||i.endsWith(".msg"))return o.messages.includes(i);if((0,oe.G)(i))return!!o.contracts.find((e=>{let{fn:t}=e;return t===i}));const s=i.toLowerCase();return o.programs.map((e=>e.toLowerCase())).includes(s)},isRunning:e=>function(t,n){for(var a=arguments.length,r=new Array(a>2?a-2:0),o=2;o()=>(0,g.kq)(),getPurchasedServerMaxRam:()=>()=>(0,g.RI)(),getPurchasedServerCost:e=>t=>{const n=E.BM.number(e,"ram",t),a=(0,g.aZ)(n);return a===1/0?(n>(0,g.RI)()?E.BM.log(e,(()=>`Invalid argument: ram='${n}' must not be greater than getPurchaseServerMaxRam`)):E.BM.log(e,(()=>`Invalid argument: ram='${n}' must be a positive power of 2`)),1/0):a},purchaseServer:e=>(t,n)=>{const a=E.BM.string(e,"name",t),r=E.BM.number(e,"ram",n);let o=String(a);if(o=o.replace(/\s+/g,""),""==o)return E.BM.log(e,(()=>`Invalid argument: hostname='${o}'`)),"";if(m.J5.purchasedServers.length>=(0,g.kq)())return E.BM.log(e,(()=>`You have reached the maximum limit of ${(0,g.kq)()} servers. You cannot purchase any more.`)),"";const i=(0,g.aZ)(r);if(i===1/0)return r>(0,g.RI)()?E.BM.log(e,(()=>`Invalid argument: ram='${r}' must not be greater than getPurchaseServerMaxRam`)):E.BM.log(e,(()=>`Invalid argument: ram='${r}' must be a positive power of 2`)),"";if(m.J5.money`Not enough money to purchase server. Need ${(0,S.lb)(i)}`)),"";const s=(0,p.iw)({ip:(0,d.hG)(),hostname:o,organizationName:"",isConnectedTo:!1,adminRights:!0,purchasedByPlayer:!0,maxRam:r});(0,d.jG)(s),m.J5.purchasedServers.push(s.hostname);const l=m.J5.getHomeComputer();return l.serversOnNetwork.push(s.hostname),s.serversOnNetwork.push(l.hostname),m.J5.loseMoney(i,"servers"),E.BM.log(e,(()=>`Purchased new server with hostname '${s.hostname}' for ${(0,S.lb)(i)}`)),s.hostname},getPurchasedServerUpgradeCost:e=>(t,n)=>{const a=E.BM.string(e,"hostname",t),r=E.BM.number(e,"ram",n);try{return(0,g.eV)(a,r)}catch(t){return E.BM.log(e,(()=>String(t))),-1}},upgradePurchasedServer:e=>(t,n)=>{const a=E.BM.string(e,"hostname",t),r=E.BM.number(e,"ram",n);try{return(0,g.VZ)(a,r),!0}catch(t){return E.BM.log(e,(()=>String(t))),!1}},renamePurchasedServer:e=>(t,n)=>{const a=E.BM.string(e,"hostname",t),r=E.BM.string(e,"newName",n);try{return(0,g.Or)(a,r),!0}catch(t){return E.BM.log(e,(()=>String(t))),!1}},deleteServer:e=>t=>{const n=E.BM.string(e,"name",t);let a=String(n);a=a.replace(/\s\s+/g,"");const r=(0,d.WT)(a);if(!(r instanceof y.x))return E.BM.log(e,(()=>`Invalid argument: hostname='${a}'`)),!1;if(!r.purchasedByPlayer||"home"===r.hostname)return E.BM.log(e,(()=>"Cannot delete non-purchased server.")),!1;const o=r.hostname;if(r.isConnectedTo)return E.BM.log(e,(()=>"You are currently connected to the server you are trying to delete.")),!1;if(o===e.workerScript.hostname)return E.BM.log(e,(()=>"Cannot delete the server this script is running on.")),!1;if(r.runningScriptMap.size>0)return E.BM.log(e,(()=>`Cannot delete server '${o}' because it still has scripts running.`)),!1;let i=!1;for(let e=0;e`Could not identify server ${o} as a purchased server. This is a bug. Report to dev.`)),!1;(0,d.T$)(o),i=!1;const s=m.J5.getHomeComputer();for(let t=0;t`Deleted server '${a}`)),!0;return E.BM.log(e,(()=>`Could not find server ${o} as a purchased server. This is a bug. Report to dev.`)),!1},getPurchasedServers:()=>()=>{const e=[];return m.J5.purchasedServers.forEach((function(t){e.push(t)})),e},writePort:e=>(t,n)=>{const a=E.BM.portNumber(e,t);if("string"!=typeof n&&"number"!=typeof n)throw E.BM.makeRuntimeErrorMsg(e,"Trying to write invalid data to a port: only strings and numbers are valid.");return(0,te.TR)(a,n)},write:e=>(t,n,a)=>{const r=E.BM.filePath(e,"filename",t),o=E.BM.string(e,"data",n??""),i=E.BM.string(e,"mode",a??"a"),s=E.BM.getServer(e,e.workerScript.hostname);if((0,ae.UH)(r)){if("w"===i)return void s.writeToScriptFile(r,o);const e=s.scripts.get(r),t=e?e.code:"";return void s.writeToScriptFile(r,t+o)}if(!(0,re.e)(r))throw E.BM.makeRuntimeErrorMsg(e,`File path should be a text file or script. ${r} is invalid.`);if("w"===i)return void s.writeToTextFile(r,o);const l=s.textFiles.get(r),c=(null==l?void 0:l.text)??"";s.writeToTextFile(r,"w"===i?o:c+o)},tryWritePort:e=>(t,n)=>{const a=E.BM.portNumber(e,t);if("string"!=typeof n&&"number"!=typeof n)throw E.BM.makeRuntimeErrorMsg(e,"Trying to write invalid data to a port: only strings and numbers are valid.");return(0,te.vN)(a,n)},readPort:e=>t=>{const n=E.BM.portNumber(e,t);return(0,te.h)(n)},read:e=>t=>{var n;const a=E.BM.filePath(e,"filename",t);return(0,ae.UH)(a)||(0,re.e)(a)?(null===(n=e.workerScript.getServer().getContentFile(a))||void 0===n?void 0:n.content)??"":""},peek:e=>t=>{const n=E.BM.portNumber(e,t);return(0,te.i5)(n)},clear:e=>t=>{const n=E.BM.filePath(e,"file",t);if(!(0,ae.UH)(n)&&!(0,re.e)(n))throw E.BM.makeRuntimeErrorMsg(e,`Invalid file path or extension: ${t}`);const a=e.workerScript.getServer(),r=a.getContentFile(n);if(!r)throw E.BM.makeRuntimeErrorMsg(e,`${n} does not exist on ${a.hostname}`);r.content=""},clearPort:e=>t=>{const n=E.BM.portNumber(e,t);return(0,te.KV)(n)},getPortHandle:e=>t=>{const n=E.BM.portNumber(e,t);return(0,te.y6)(n)},rm:e=>(t,n)=>{const a=E.BM.filePath(e,"fn",t),r=E.BM.string(e,"hostname",n??e.workerScript.hostname),o=E.BM.getServer(e,r);if(!a)return E.BM.log(e,(()=>`Error while parsing filepath ${a}`)),!1;const i=o.removeFile(a);return i.res||E.BM.log(e,(()=>i.msg+"")),i.res},scriptRunning:e=>(t,n)=>{const a=E.BM.scriptPath(e,"scriptname",t),r=E.BM.string(e,"hostname",n);return E.BM.getServer(e,r).isRunning(a)},scriptKill:e=>(t,n)=>{const a=E.BM.scriptPath(e,"scriptname",t),r=E.BM.string(e,"hostname",n),o=E.BM.getServer(e,r);let i=!1;const s=(0,H.jz)((0,X.escapeRegExp)(a));for(const[e,t]of o.runningScriptMap)if(s.test(e)){i=!0;for(const e of t.keys())(0,k._)(e)}return i},getScriptName:e=>()=>e.workerScript.name,getScriptRam:e=>(t,n)=>{const a=E.BM.scriptPath(e,"scriptname",t),r=E.BM.string(e,"hostname",n??e.workerScript.hostname),o=E.BM.getServer(e,r),i=o.scripts.get(a);if(!i)return 0;return i.getRamUsage(o.scripts)||(E.BM.log(e,(()=>`Could not calculate ram usage for ${a} on ${r}.`)),0)},getRunningScript:e=>function(t,n){for(var a=arguments.length,r=new Array(a>2?a-2:0),o=2;ofunction(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname;const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?1/0:1e3*(0,l.sI)(a,m.J5):(E.BM.log(e,(()=>"invalid for this kind of server")),1/0)},getGrowTime:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname;const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?1/0:1e3*(0,l.Md)(a,m.J5):(E.BM.log(e,(()=>"invalid for this kind of server")),1/0)},getWeakenTime:e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.workerScript.hostname;const n=E.BM.string(e,"hostname",t),a=E.BM.getServer(e,n);return a instanceof y.x?E.BM.failOnHacknetServer(e,a)?1/0:1e3*(0,l.Vp)(a,m.J5):(E.BM.log(e,(()=>"invalid for this kind of server")),1/0)},getTotalScriptIncome:()=>()=>{let e=0;for(const t of w.R.values())e+=t.scriptRef.onlineMoneyMade/t.scriptRef.onlineRunningTime;return[e,m.J5.scriptProdSinceLastAug/(m.J5.playtimeSinceLastAug/1e3)]},getScriptIncome:e=>function(t,n){for(var a=arguments.length,r=new Array(a>2?a-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i))),-1):s.onlineMoneyMade/s.onlineRunningTime},getTotalScriptExpGain:()=>()=>{let e=0;for(const t of w.R.values())e+=t.scriptRef.onlineExpGained/t.scriptRef.onlineRunningTime;return e},getScriptExpGain:e=>function(t,n){for(var a=arguments.length,r=new Array(a>2?a-2:0),o=2;oE.BM.getCannotFindRunningScriptErrorMessage(i))),-1):s.onlineExpGained/s.onlineRunningTime},formatNumber:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3,r=arguments.length>3?arguments[3]:void 0;const o=E.BM.number(e,"n",t),i=E.BM.number(e,"fractionalDigits",n),s=E.BM.number(e,"suffixStart",a);return(0,S.uf)(o,i,s,!!r)},formatRam:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;const a=E.BM.number(e,"n",t),r=E.BM.number(e,"fractionalDigits",n);return(0,S.$1)(a,r)},formatPercent:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e6;const r=E.BM.number(e,"n",t),o=E.BM.number(e,"fractionalDigits",n),i=E.BM.number(e,"multStart",a);return(0,S.T3)(r,o,i)},nFormat:e=>(t,n)=>{he("ns.nFormat","Use ns.formatNumber, formatRam, formatPercent, or js builtins like Intl.NumberFormat instead.");const a=E.BM.number(e,"n",t),r=E.BM.string(e,"format",n);return ee()(a).format(r)},tFormat:e=>(t,n)=>{const a=E.BM.number(e,"milliseconds",t),r=!!n;return(0,C.UF)(a,r)},getTimeSinceLastAug:()=>()=>(he("ns.getTimeSinceLastAug()","Use ns.getResetInfo().lastAugReset instead."),m.J5.playtimeSinceLastAug),alert:e=>t=>{const n=E.BM.string(e,"message",t);(0,J.X)(n,!0)},toast:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.ToastVariant.SUCCESS,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2e3;const r=E.BM.string(e,"message",t),o=(0,se.m)("ToastVariant").nsGetMember(e,n),i=null===a?null:E.BM.number(e,"duration",a);W.sC.emit(r,o,i)},prompt:e=>(t,n)=>{const a={};n??=a;const r=E.BM.string(e,"txt",t);if((0,K.hu)(n,K.b$,(t=>E.BM.makeRuntimeErrorMsg(e,`Invalid type for options: ${t}. Should be object.`,"TYPE"))),void 0!==n.type){(0,K.hu)(n.type,K.QS,(t=>E.BM.makeRuntimeErrorMsg(e,`Invalid type for options.type: ${t}. Should be string.`,"TYPE"))),a.type=n.type;const t=["boolean","text","select"];if(!["boolean","text","select"].includes(a.type))throw E.BM.makeRuntimeErrorMsg(e,`Invalid value for options.type: ${a.type}. Must be one of ${t.join(", ")}.`);"select"===a.type&&((0,K.hu)(n.choices,K.uF,(t=>E.BM.makeRuntimeErrorMsg(e,`Invalid type for options.choices: ${t}. If options.type is "select", options.choices must be an array.`,"TYPE"))),a.choices=n.choices.map(((t,n)=>E.BM.string(e,`options.choices[${n}]`,t))))}return new Promise((function(e){h.H.emit({txt:r,options:a,resolve:e})}))},wget:e=>(t,n,a)=>{const o=E.BM.string(e,"url",t),i=E.BM.filePath(e,"target",n),s=a?E.BM.string(e,"hostname",a):e.workerScript.hostname,l=E.BM.getServer(e,s);return i&&((0,re.e)(i)||(0,ae.UH)(i))?new Promise((function(t){r().get(o,(function(n){return l.writeToContentFile(i,n).overwritten?(E.BM.log(e,(()=>`Successfully retrieved content and overwrote '${i}' on '${s}'`)),t(!0)):(E.BM.log(e,(()=>`Successfully retrieved content to new file '${i}' on '${s}'`)),t(!0))}),"text").fail((function(n){return E.BM.log(e,(()=>JSON.stringify(n))),t(!1)}))})):(E.BM.log(e,(()=>`Invalid target file: '${i}'. Must be a script or text file.`)),Promise.resolve(!1))},getFavorToDonate:()=>()=>Math.floor(s.t.BaseFavorToDonate*i.dQ.RepToDonateToFaction),getPlayer:()=>()=>{const e={hp:(0,X.cloneDeep)(m.J5.hp),skills:(0,X.cloneDeep)(m.J5.skills),exp:(0,X.cloneDeep)(m.J5.exp),mults:(0,X.cloneDeep)(m.J5.mults),city:m.J5.city,numPeopleKilled:m.J5.numPeopleKilled,money:m.J5.money,location:m.J5.location,totalPlaytime:m.J5.totalPlaytime,jobs:(0,X.cloneDeep)(m.J5.jobs),factions:m.J5.factions.slice(),entropy:m.J5.entropy};return function(e,t){for(const[n,a]of Object.entries(t))Object.defineProperty(e,n,{get:()=>(he(a.identifier,a.message),a.value),set:e=>a.value=e,enumerable:!0})}(e,{playtimeSinceLastAug:{identifier:"ns.getPlayer().playtimeSinceLastAug",message:"Use ns.getResetInfo().lastAugReset instead. This is a static timestamp instead of an elapsed time.",value:m.J5.playtimeSinceLastAug},playtimeSinceLastBitnode:{identifier:"ns.getPlayer().playtimeSinceLastBitnode",message:"Use ns.getResetInfo().lastNodeReset instead. This is a static timestamp instead of an elapsed time.",value:m.J5.playtimeSinceLastBitnode},bitNodeN:{identifier:"ns.getPlayer().bitNodeN",message:"Use ns.getResetInfo().currentNode instead",value:m.J5.bitNodeN}}),e},getMoneySources:()=>()=>({sinceInstall:Object.assign({},m.J5.moneySourceA),sinceStart:Object.assign({},m.J5.moneySourceB)}),atExit:e=>t=>{if("function"!=typeof t)throw E.BM.makeRuntimeErrorMsg(e,"argument should be function");e.workerScript.atExit=()=>{t()}},mv:e=>(t,n,a)=>{const r=E.BM.string(e,"host",t),o=E.BM.getServer(e,r),i=E.BM.filePath(e,"source",n),s=E.BM.filePath(e,"destination",a);if(!(0,re.e)(i)&&!(0,ae.UH)(i)||!(0,re.e)(s)&&!(0,ae.UH)(s))throw E.BM.makeRuntimeErrorMsg(e,"'mv' can only be used on scripts and text files (.txt)");if(i===s)return void E.BM.log(e,(()=>"WARNING: Did nothing, source and destination paths were the same."));const l=o.getContentFile(i);if(!l)throw E.BM.makeRuntimeErrorMsg(e,`Source text file ${i} does not exist on ${r}`);if(l.deleteFromServer(o)){const{overwritten:t}=o.writeToContentFile(s,l.content);return t&&E.BM.log(e,(()=>`WARNING: Overwriting file ${s} on ${r}`)),void E.BM.log(e,(()=>`Moved ${i} to ${s} on ${r}`))}E.BM.log(e,(()=>`ERROR: Failed. Was unable to remove file ${i} from its original location.`))},getResetInfo:()=>()=>({lastAugReset:m.J5.lastAugReset,lastNodeReset:m.J5.lastNodeReset,currentNode:m.J5.bitNodeN,ownedAugs:new Map(m.J5.augmentations.map((e=>[e.name,e.level]))),ownedSF:new Map(m.J5.sourceFiles)}),getFunctionRamCost:e=>t=>{const n=E.BM.string(e,"name",t);return(0,ie.By)(n.split("."),!0)},tprintRaw:()=>e=>{u.o.printRaw((0,E.Wt)(e))},printRaw:e=>t=>{e.workerScript.print((0,E.Wt)(t))},flags:U.v,...(0,T.C)()};function ue(e){return(0,z.I)(e,ce,[],{args:e.args.slice(),pid:e.pid,enums:le})}(0,z.G)(ce,{getServerRam:{version:"2.2.0",replacement:"getServerMaxRam and getServerUsedRam"}});const me=Object.fromEntries([...function e(t,n){const a=[];for(const[r,o]of Object.entries(t))"args"!==r&&("function"==typeof o?a.push(n+r):"object"==typeof o&&a.push(...e(o,r+".")));return a}(ce,"")].map((e=>[e,!0]))),fe=new Set;function he(e,t){fe.has(e)||(fe.add(e),u.o.warn(`Accessed deprecated function or property: ${e}`),u.o.warn("This is no longer supported usage and will be removed in a later version."),u.o.warn(t),u.o.info("This message can also appear for object properties when the object's values are iterated."),u.o.info("This message will only be shown once per game session for each deprecated item accessed."))}},47051:(e,t,n)=>{"use strict";n.d(t,{M:()=>c});var a=n(49173),r=n(79267),o=n(97740),i=n(62783),s=n(23122),l=n(50862);function c(){const e=function(e){t(e)},t=function(e){if(!(7===a.J5.bitNodeN||a.J5.sourceFileLvl(7)>0))throw s.BM.makeRuntimeErrorMsg(e,"You have not unlocked the bladeburner API.","API ACCESS");const t=a.J5.bladeburner;if(!t)throw s.BM.makeRuntimeErrorMsg(e,"You must be a member of the Bladeburner division to use this API.");return t},n=function(e,t,n){const r=a.J5.bladeburner;if(null===r)throw new Error("Must have joined bladeburner");const o=r.getActionIdFromTypeAndName(t,n);if(!o)throw s.BM.makeRuntimeErrorMsg(e,`Invalid action type='${t}', name='${n}'`);const i=r.getActionObject(o);if(!i)throw s.BM.makeRuntimeErrorMsg(e,`Invalid action type='${t}', name='${n}'`);return i};return{inBladeburner:()=>()=>!!a.J5.bladeburner,getContractNames:e=>()=>t(e).getContractNamesNetscriptFn(),getOperationNames:e=>()=>t(e).getOperationNamesNetscriptFn(),getBlackOpNames:e=>()=>t(e).getBlackOpNamesNetscriptFn(),getBlackOpRank:t=>a=>{const r=s.BM.string(t,"blackOpName",a);e(t);const o=n(t,"blackops",r);if(!(o instanceof i.u))throw new Error("action was not a black operation");return o.reqdRank},getGeneralActionNames:e=>()=>t(e).getGeneralActionNamesNetscriptFn(),getSkillNames:e=>()=>t(e).getSkillNamesNetscriptFn(),startAction:e=>(n,a)=>{const r=s.BM.string(e,"type",n),o=s.BM.string(e,"name",a),i=t(e);try{return i.startActionNetscriptFn(r,o,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},stopBladeburnerAction:e=>()=>t(e).resetAction(),getCurrentAction:e=>()=>{const n=t(e);return n.getTypeAndNameFromActionId(n.action)},getActionTime:e=>(n,r)=>{const o=s.BM.string(e,"type",n),i=s.BM.string(e,"name",r),l=t(e);try{const t=l.getActionTimeNetscriptFn(a.J5,o,i);if("string"==typeof t){const t=`Invalid action: type='${o}' name='${i}'`;return s.BM.log(e,(()=>t)),-1}return t}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getActionCurrentTime:e=>()=>{const n=t(e);try{return 1e3*Math.min(n.actionTimeCurrent+n.actionTimeOverflow,n.actionTimeToComplete)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getActionEstimatedSuccessChance:e=>(n,r)=>{const o=t(e),i=s.BM.string(e,"type",n),l=s.BM.string(e,"name",r);try{const t=o.getActionEstimatedSuccessChanceNetscriptFn(a.J5,i,l);if("string"==typeof t){const t=`Invalid action: type='${i}' name='${l}'`;return s.BM.log(e,(()=>t)),[-1,-1]}return t}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getActionRepGain:t=>(a,r,i)=>{e(t);const l=s.BM.string(t,"type",a),c=s.BM.string(t,"name",r),u=n(t,l,c),m=void 0===i?u.level:s.BM.number(t,"level",i),f=Math.pow(u.rewardFac,m-1);return u.rankGain*f*o.dQ.BladeburnerRank},getActionCountRemaining:e=>(n,a)=>{const r=t(e),o=s.BM.string(e,"type",n),i=s.BM.string(e,"name",a);try{return r.getActionCountRemainingNetscriptFn(o,i,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getActionMaxLevel:t=>(a,r)=>{const o=s.BM.string(t,"type",a),i=s.BM.string(t,"name",r);return e(t),n(t,o,i).maxLevel},getActionCurrentLevel:t=>(a,r)=>{const o=s.BM.string(t,"type",a),i=s.BM.string(t,"name",r);return e(t),n(t,o,i).level},getActionAutolevel:t=>(a,r)=>{const o=s.BM.string(t,"type",a),i=s.BM.string(t,"name",r);return e(t),n(t,o,i).autoLevel},getActionSuccesses:t=>(a,r)=>{const o=s.BM.string(t,"type",a),i=s.BM.string(t,"name",r);return e(t),n(t,o,i).successes},setActionAutolevel:t=>function(a,r){let o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const i=s.BM.string(t,"type",a),l=s.BM.string(t,"name",r),c=!!o;e(t);const u=n(t,i,l);u.autoLevel=c},setActionLevel:t=>function(a,r){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const i=s.BM.string(t,"type",a),l=s.BM.string(t,"name",r),c=s.BM.number(t,"level",o);e(t);const u=n(t,i,l);if(c<1||c>u.maxLevel)throw s.BM.makeRuntimeErrorMsg(t,`Level must be between 1 and ${u.maxLevel}, is ${c}`);u.level=c},getRank:e=>()=>t(e).rank,getSkillPoints:e=>()=>t(e).skillPoints,getSkillLevel:e=>n=>{const a=s.BM.string(e,"skillName",n),r=t(e);try{return r.getSkillLevelNetscriptFn(a,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getSkillUpgradeCost:e=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=t(e),o=s.BM.string(e,"skillName",n),i=s.BM.number(e,"count",a);try{return r.getSkillUpgradeCostNetscriptFn(o,i,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},upgradeSkill:e=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=t(e),o=s.BM.string(e,"skillName",n),i=s.BM.number(e,"count",a);try{return r.upgradeSkillNetscriptFn(o,i,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getTeamSize:e=>(n,a)=>{const r=t(e),o=s.BM.string(e,"type",n),i=s.BM.string(e,"name",a);try{return r.getTeamSizeNetscriptFn(o,i,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},setTeamSize:e=>(n,a,r)=>{const o=t(e),i=s.BM.string(e,"type",n),l=s.BM.string(e,"name",a),c=s.BM.number(e,"size",r);try{return o.setTeamSizeNetscriptFn(i,l,c,e.workerScript)}catch(t){throw s.BM.makeRuntimeErrorMsg(e,String(t))}},getCityEstimatedPopulation:e=>n=>{const a=t(e),r=(0,l.m)("CityName").nsGetMember(e,n);return a.cities[r].popEst},getCityCommunities:e=>n=>{const a=t(e),r=(0,l.m)("CityName").nsGetMember(e,n);return a.cities[r].comms},getCityChaos:e=>n=>{const a=t(e),r=(0,l.m)("CityName").nsGetMember(e,n);return a.cities[r].chaos},getCity:e=>()=>t(e).city,switchCity:e=>n=>{const a=t(e),r=(0,l.m)("CityName").nsGetMember(e,n);return a.city=r,!0},getStamina:e=>()=>{const n=t(e);return[n.stamina,n.maxStamina]},joinBladeburnerFaction:e=>()=>t(e).joinBladeburnerFactionNetscriptFn(e.workerScript),joinBladeburnerDivision:e=>()=>!(!(7===a.J5.bitNodeN||a.J5.sourceFileLvl(7)>0)||0===o.dQ.BladeburnerRank||!a.J5.bladeburner&&(a.J5.skills.strength>=100&&a.J5.skills.defense>=100&&a.J5.skills.dexterity>=100&&a.J5.skills.agility>=100?(a.J5.bladeburner=new r.T,s.BM.log(e,(()=>"You have been accepted into the Bladeburner division")),0):(s.BM.log(e,(()=>"You do not meet the requirements for joining the Bladeburner division")),1))),getBonusTime:e=>()=>{const n=t(e);return 1e3*Math.round(n.storedCycles/5)}}}},40082:(e,t,n)=>{"use strict";n.d(t,{f:()=>s});var a=n(49173),r=n(23122),o=n(45628),i=n(58297);function s(){const e=function(e,t,n){const a=r.BM.getServer(e,t).getContract(n);if(null==a)throw r.BM.makeRuntimeErrorMsg(e,`Cannot find contract '${n}' on server '${t}'`);return a};return{attempt:t=>(n,o,i)=>{const s=r.BM.string(t,"filename",o),l=i?r.BM.string(t,"hostname",i):t.workerScript.hostname,c=e(t,l,s);if("number"!=typeof n&&"string"!=typeof n&&!Array.isArray(n))throw new Error("The answer provided was not a number, string, or array");const u="string"==typeof n?n:JSON.stringify(n),m=c.reward,f=r.BM.getServer(t,l);if(c.isSolution(u)){const e=a.J5.gainCodingContractReward(m,c.getDifficulty());return r.BM.log(t,(()=>`Successfully completed Coding Contract '${s}'. Reward: ${e}`)),f.removeContract(s),e}return++c.tries,c.tries>=c.getMaxNumTries()?(r.BM.log(t,(()=>`Coding Contract attempt '${s}' failed. Contract is now self-destructing`)),f.removeContract(s)):r.BM.log(t,(()=>`Coding Contract attempt '${s}' failed. ${c.getMaxNumTries()-c.tries} attempts remaining.`)),""},getContractType:t=>(n,a)=>{const o=r.BM.string(t,"filename",n),i=a?r.BM.string(t,"hostname",a):t.workerScript.hostname;return e(t,i,o).getType()},getData:t=>(n,a)=>{const o=r.BM.string(t,"filename",n),i=a?r.BM.string(t,"hostname",a):t.workerScript.hostname,s=e(t,i,o).getData();if(Array.isArray(s)){const e=s.slice();for(let t=0;t(n,a)=>{const o=r.BM.string(t,"filename",n),i=a?r.BM.string(t,"hostname",a):t.workerScript.hostname;return e(t,i,o).getDescription()},getNumTriesRemaining:t=>(n,a)=>{const o=r.BM.string(t,"filename",n),i=a?r.BM.string(t,"hostname",a):t.workerScript.hostname,s=e(t,i,o);return s.getMaxNumTries()-s.tries},createDummyContract:e=>t=>{const n=r.BM.string(e,"type",t);(0,i.a9)(n)},getContractTypes:()=>()=>o.X.map((e=>e.name))}}},83075:(e,t,n)=>{"use strict";n.d(t,{x:()=>k});var a=n(49173),r=n(96486),o=n(33563),i=n(61226),s=n(51326),l=n(33244),c=n(32927),u=n(80692),m=n(78845),f=n(58427),h=n(97740),d=n(40811),p=n(23122),g=n(50862),y=n(51004),b=n(41139),v=n(21623);function k(){function e(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!a.J5.canAccessCorporation()||a.J5.corporation)return!1;if(!e)return!1;if(3!==a.J5.bitNodeN&&!t)throw new Error("cannot use seed funds outside of BitNode 3");if(h.dQ.CorporationSoftcap<.15)throw new Error(`You cannot create a corporation in Bitnode ${a.J5.bitNodeN}`);if(t){if(!a.J5.canAfford(15e10))return!1;a.J5.startCorporation(e,!1),a.J5.loseMoney(15e10,"corporation")}else a.J5.startCorporation(e,!0);return!0}function t(e){return n().unlocks.has(e)}function n(){const e=a.J5.corporation;if(null===e)throw new Error("cannot be called without a corporation");return e}function k(e){const t=n().divisions.get(e);if(void 0===t)throw new Error(`No division named '${e}'`);return t}function w(e,t){const n=k(e),a=n.offices[t];if(!a)throw new Error(`${n.name} has not expanded to '${t}'`);return a}function E(e,t){const n=k(e),a=n.warehouses[t];if(!a)throw new Error(`${n.name} does not have a warehouse in '${t}'`);return a}function S(e,t,n){return E(e,t).materials[n]}function C(e,t){const n=k(e).products.get(t);if(void 0===n)throw new Error(`Invalid product name: '${t}'`);return n}function x(e,t){if(!a.J5.corporation)throw p.BM.makeRuntimeErrorMsg(e,"Must own a corporation.");if(t&&!a.J5.corporation.unlocks.has(t))throw p.BM.makeRuntimeErrorMsg(e,"You do not have access to this API.")}const N={getUpgradeWarehouseCost:e=>function(t,n){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;x(e,l.CorpUnlockName.WarehouseAPI);const r=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,n),s=p.BM.number(e,"amount",a);if(s<1)throw p.BM.makeRuntimeErrorMsg(e,"You must provide a positive number");const c=E(r,i);return(0,o.qr)(c,s)},hasWarehouse:e=>(t,n)=>{x(e,l.CorpUnlockName.WarehouseAPI);const a=p.BM.string(e,"divisionName",t);return(0,g.m)("CityName").nsGetMember(e,n)in k(a).warehouses},getWarehouse:e=>(t,n)=>{x(e,l.CorpUnlockName.WarehouseAPI);const a=E(p.BM.string(e,"divisionName",t),(0,g.m)("CityName").nsGetMember(e,n));return{level:a.level,city:a.city,size:a.size,sizeUsed:a.sizeUsed,smartSupplyEnabled:a.smartSupplyEnabled}},getMaterial:e=>(t,a,o)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=S(p.BM.string(e,"divisionName",t),(0,g.m)("CityName").nsGetMember(e,a),(0,g.m)("CorpMaterialName").nsGetMember(e,o,"materialName")),s=n(),c=(0,r.cloneDeep)(i.exports);return{marketPrice:i.marketPrice,desiredSellPrice:i.desiredSellPrice,desiredSellAmount:i.desiredSellAmount,name:i.name,stored:i.stored,quality:i.quality,demand:s.unlocks.has(l.CorpUnlockName.MarketResearchDemand)?i.demand:void 0,competition:s.unlocks.has(l.CorpUnlockName.MarketDataCompetition)?i.competition:void 0,productionAmount:i.productionAmount,actualSellAmount:i.actualSellAmount,exports:c}},getProduct:e=>(t,a,o)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=p.BM.string(e,"productName",o),c=(0,g.m)("CityName").nsGetMember(e,a),u=C(i,s),m=n(),f=u.cityData[c];return{name:u.name,demand:m.unlocks.has(l.CorpUnlockName.MarketResearchDemand)?u.demand:void 0,competition:m.unlocks.has(l.CorpUnlockName.MarketDataCompetition)?u.competition:void 0,rating:u.rating,effectiveRating:f.effectiveRating,stats:(0,r.cloneDeep)(u.stats),productionCost:u.productionCost,desiredSellPrice:f.desiredSellPrice,desiredSellAmount:f.desiredSellAmount,stored:f.stored,productionAmount:f.productionAmount,actualSellAmount:f.actualSellAmount,developmentProgress:u.developmentProgress,advertisingInvestment:u.advertisingInvestment,designInvestment:u.designInvestment}},purchaseWarehouse:e=>(t,a)=>{x(e,l.CorpUnlockName.WarehouseAPI);const r=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,a),s=n();(0,o.J_)(s,k(r),i)},upgradeWarehouse:e=>function(t,a){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,a),c=p.BM.number(e,"amount",r),u=n();if(c<1)throw p.BM.makeRuntimeErrorMsg(e,"You must provide a positive number");(0,o.m_)(u,k(i),E(i,s),c)},sellMaterial:e=>(t,n,a,r,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"divisionName",t),c=(0,g.m)("CityName").nsGetMember(e,n),u=(0,g.m)("CorpMaterialName").nsGetMember(e,a,"materialName"),m=p.BM.string(e,"amt",r),f=p.BM.string(e,"price",i),h=S(s,c,u);(0,o.Sz)(h,m,f)},sellProduct:e=>(t,n,a,r,i,s)=>{x(e,l.CorpUnlockName.WarehouseAPI);const c=p.BM.string(e,"divisionName",t),u=(0,g.m)("CityName").nsGetMember(e,n),m=p.BM.string(e,"productName",a),f=p.BM.string(e,"amt",r),h=p.BM.string(e,"price",i),d=!!s,y=C(c,m);(0,o.qv)(y,u,f,h,d)},discontinueProduct:e=>(t,n)=>{x(e,l.CorpUnlockName.WarehouseAPI);const a=p.BM.string(e,"divisionName",t),r=p.BM.string(e,"productName",n);k(a).discontinueProduct(r)},setSmartSupply:e=>(n,a,r)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=!!r,s=E(p.BM.string(e,"divisionName",n),(0,g.m)("CityName").nsGetMember(e,a));if(!t(l.CorpUnlockName.SmartSupply))throw p.BM.makeRuntimeErrorMsg(e,"You have not purchased the Smart Supply upgrade!");(0,o.mg)(s,i)},setSmartSupplyOption:e=>(n,a,r,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"divisionName",n),c=(0,g.m)("CityName").nsGetMember(e,a),u=(0,g.m)("CorpMaterialName").nsGetMember(e,r,"materialName"),m=E(s,c),f=S(s,c,u),h=(0,g.m)("SmartSupplyOption").nsGetMember(e,i);if(!t(l.CorpUnlockName.SmartSupply))throw p.BM.makeRuntimeErrorMsg(e,"You have not purchased the Smart Supply upgrade!");(0,o.VG)(m,f,h)},buyMaterial:e=>(t,a,r,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"divisionName",t),c=n().divisions.get(s);if(!c)throw p.BM.makeRuntimeErrorMsg(e,`No division with provided name ${s}`);const u=(0,g.m)("CityName").nsGetMember(e,a),m=(0,g.m)("CorpMaterialName").nsGetMember(e,r,"materialName"),f=p.BM.number(e,"amt",i);if(f<0||!Number.isFinite(f))throw new Error("Invalid value for amount field! Must be numeric and greater than 0");const h=S(s,u,m);(0,o.MO)(c,h,f)},bulkPurchase:e=>(t,a,r,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"divisionName",t),c=n().divisions.get(s);if(!c)throw p.BM.makeRuntimeErrorMsg(e,`No division with provided name ${s}`);const u=n(),m=(0,g.m)("CityName").nsGetMember(e,a),f=(0,g.m)("CorpMaterialName").nsGetMember(e,r,"materialName"),h=p.BM.number(e,"amt",i),d=E(s,m),y=S(s,m,f);(0,o._A)(u,c,d,y,h)},makeProduct:e=>(t,a,r,i,s)=>{x(e,l.CorpUnlockName.WarehouseAPI);const c=p.BM.string(e,"divisionName",t),u=(0,g.m)("CityName").nsGetMember(e,a),m=p.BM.string(e,"productName",r),f=p.BM.number(e,"designInvest",i),h=p.BM.number(e,"marketingInvest",s),d=n();(0,o.oL)(d,k(c),u,m,f,h)},limitProductProduction:e=>(t,n,a,r)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,n),c=p.BM.string(e,"productName",a),u=p.BM.number(e,"qty",r);(0,o.Dn)(C(i,c),s,u)},exportMaterial:e=>(t,n,a,r,i,s)=>{x(e,l.CorpUnlockName.WarehouseAPI);const c=p.BM.string(e,"sourceDivision",t),u=(0,g.m)("CityName").nsGetMember(e,n,"sourceCity"),m=k(p.BM.string(e,"targetDivision",a)),f=(0,g.m)("CityName").nsGetMember(e,r,"targetCity"),h=(0,g.m)("CorpMaterialName").nsGetMember(e,i,"materialName"),d=p.BM.string(e,"amt",s);(0,o.DY)(m,f,S(c,u,h),d)},cancelExportMaterial:e=>(t,n,a,r,i)=>{x(e,l.CorpUnlockName.WarehouseAPI);const s=p.BM.string(e,"sourceDivision",t),c=(0,g.m)("CityName").nsGetMember(e,n,"sourceCity"),u=p.BM.string(e,"targetDivision",a),m=(0,g.m)("CityName").nsGetMember(e,r,"targetCity"),f=(0,g.m)("CorpMaterialName").nsGetMember(e,i,"materialName");(0,o.vg)(u,m,S(s,c,f))},limitMaterialProduction:e=>(t,n,a,r)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,n),c=(0,g.m)("CorpMaterialName").nsGetMember(e,a,"materialName"),u=p.BM.number(e,"qty",r);(0,o.Pe)(S(i,s,c),u)},setMaterialMarketTA1:e=>(t,n,a,r)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,n),c=(0,g.m)("CorpMaterialName").nsGetMember(e,a,"materialName"),u=!!r;if(!k(i).hasResearch("Market-TA.I"))throw p.BM.makeRuntimeErrorMsg(e,`You have not researched MarketTA.I for division: ${i}`);(0,o.Nz)(S(i,s,c),u)},setMaterialMarketTA2:e=>(t,n,a,r)=>{x(e,l.CorpUnlockName.WarehouseAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,n),c=(0,g.m)("CorpMaterialName").nsGetMember(e,a,"materialName"),u=!!r;if(!k(i).hasResearch("Market-TA.II"))throw p.BM.makeRuntimeErrorMsg(e,`You have not researched MarketTA.II for division: ${i}`);(0,o.Zn)(S(i,s,c),u)},setProductMarketTA1:e=>(t,n,a)=>{x(e,l.CorpUnlockName.WarehouseAPI);const r=p.BM.string(e,"divisionName",t),i=p.BM.string(e,"productName",n),s=!!a;if(!k(r).hasResearch("Market-TA.I"))throw p.BM.makeRuntimeErrorMsg(e,`You have not researched MarketTA.I for division: ${r}`);(0,o.Ix)(C(r,i),s)},setProductMarketTA2:e=>(t,n,a)=>{x(e,l.CorpUnlockName.WarehouseAPI);const r=p.BM.string(e,"divisionName",t),i=p.BM.string(e,"productName",n),s=!!a;if(!k(r).hasResearch("Market-TA.II"))throw p.BM.makeRuntimeErrorMsg(e,`You have not researched MarketTA.II for division: ${r}`);(0,o.M9)(C(r,i),s)}},M={...N,getHireAdVertCost:e=>t=>(x(e,l.CorpUnlockName.OfficeAPI),k(p.BM.string(e,"divisionName",t)).getAdVertCost()),getHireAdVertCount:e=>t=>(x(e,l.CorpUnlockName.OfficeAPI),k(p.BM.string(e,"divisionName",t)).numAdVerts),getResearchCost:e=>(t,n)=>{x(e,l.CorpUnlockName.OfficeAPI);const a=p.BM.string(e,"divisionName",t),r=(0,g.m)("CorpResearchName").nsGetMember(e,n,"researchName");return function(e,t){const n=c.E5[e.type];if(void 0===n)throw new Error(`No research tree for industry '${e.type}'`);if(!n.getAllNodes().includes(t))throw new Error(`No research named '${t}'`);return m.k[t].cost}(k(a),r)},hasResearched:e=>(t,n)=>{x(e,l.CorpUnlockName.OfficeAPI);const a=p.BM.string(e,"divisionName",t),r=(0,g.m)("CorpResearchName").nsGetMember(e,n,"researchName");return function(e,t){return e.researched.has(t)}(k(a),r)},getOfficeSizeUpgradeCost:e=>(t,n,a)=>{x(e,l.CorpUnlockName.OfficeAPI);const r=p.BM.string(e,"divisionName",t),o=(0,g.m)("CityName").nsGetMember(e,n),i=p.BM.number(e,"size",a);if(i<0)throw new Error("Invalid value for size field! Must be numeric and greater than 0");const s=w(r,o),c=Math.round(s.size/u.officeInitialSize);let m=0;for(let e=0;e(t,n,a,r)=>{x(e,l.CorpUnlockName.OfficeAPI);const o=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,n),s=p.BM.number(e,"amount",r),c=(0,g.m)("CorpEmployeeJob").nsGetMember(e,a,"job");if(c===l.CorpEmployeeJob.Unassigned)return!1;if(s<0||!Number.isInteger(s))throw p.BM.makeRuntimeErrorMsg(e,`Invalid value for amount! Must be an integer and greater than or be 0". Amount:'${s}'`);const u=w(o,i),m=s-u.employeeNextJobs[c];if(u.employeeNextJobs[l.CorpEmployeeJob.Unassigned](t,n,a)=>{x(e,l.CorpUnlockName.OfficeAPI),a??=l.CorpEmployeeJob.Unassigned;const r=p.BM.string(e,"divisionName",t),o=(0,g.m)("CityName").nsGetMember(e,n),i=(0,g.m)("CorpEmployeeJob").nsGetMember(e,a,"position");return w(r,o).hireRandomEmployee(i)},upgradeOfficeSize:e=>(t,a,r)=>{x(e,l.CorpUnlockName.OfficeAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,a),c=p.BM.number(e,"size",r);if(c<0)throw new Error("Invalid value for size field! Must be numeric and greater than 0");const u=w(i,s),m=n();(0,o.D)(m,u,c)},throwParty:e=>(t,a,r)=>{x(e,l.CorpUnlockName.OfficeAPI);const i=p.BM.string(e,"divisionName",t),s=(0,g.m)("CityName").nsGetMember(e,a),c=p.BM.number(e,"costPerEmployee",r);if(c<0)throw new Error("Invalid value for Cost Per Employee field! Must be numeric and greater than 0");const u=n(),m=w(i,s);return(0,o.YH)(u,m,c)},buyTea:e=>(t,a)=>{x(e,l.CorpUnlockName.OfficeAPI);const r=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,a),s=n(),c=w(r,i);return(0,o.bY)(s,c)},hireAdVert:e=>t=>{x(e,l.CorpUnlockName.OfficeAPI);const a=p.BM.string(e,"divisionName",t),r=n();(0,o.Jm)(r,k(a))},research:e=>(t,n)=>{x(e,l.CorpUnlockName.OfficeAPI);const a=p.BM.string(e,"divisionName",t),r=(0,g.m)("CorpResearchName").nsGetMember(e,n,"researchName");(0,o.A9)(k(a),r)},getOffice:e=>(t,n)=>{x(e,l.CorpUnlockName.OfficeAPI);const a=w(p.BM.string(e,"divisionName",t),(0,g.m)("CityName").nsGetMember(e,n));return{city:a.city,size:a.size,maxEnergy:a.maxEnergy,maxMorale:a.maxMorale,numEmployees:a.numEmployees,avgEnergy:a.avgEnergy,avgMorale:a.avgMorale,totalExperience:a.totalExperience,employeeProductionByJob:Object.assign({},a.employeeProductionByJob),employeeJobs:Object.assign({},a.employeeJobs)}},hasCorporation:()=>()=>!!a.J5.corporation,getConstants:e=>()=>(x(e),(0,r.cloneDeep)((0,r.omit)(u,"fundingRoundShares","fundingRoundMultiplier","valuationLength"))),getIndustryData:e=>t=>{x(e);const n=(0,g.m)("IndustryType").nsGetMember(e,t,"industryName");return(0,r.cloneDeep)(c.vm[n])},getMaterialData:e=>t=>{x(e);const n=(0,g.m)("CorpMaterialName").nsGetMember(e,t,"materialName");return(0,r.cloneDeep)(y.d[n])},expandIndustry:e=>(t,a)=>{x(e);const r=(0,g.m)("IndustryType").nsGetMember(e,t,"industryName"),i=p.BM.string(e,"divisionName",a),s=n();(0,o.M4)(s,r,i)},expandCity:e=>(t,a)=>{x(e);const r=p.BM.string(e,"divisionName",t),i=(0,g.m)("CityName").nsGetMember(e,a),s=n(),l=k(r);(0,o.oO)(s,l,i)},purchaseUnlock:e=>t=>{x(e);const a=(0,g.m)("CorpUnlockName").nsGetMember(e,t,"unlockName"),r=n().purchaseUnlock(a);if(r)throw new Error(`Could not unlock ${a}: ${r}`)},levelUpgrade:e=>t=>{x(e);const a=(0,g.m)("CorpUpgradeName").nsGetMember(e,t,"upgradeName"),r=n().purchaseUpgrade(a,1);if(r)throw new Error(`Could not upgrade ${a}: ${r}`)},issueDividends:e=>t=>{x(e);const a=p.BM.number(e,"rate",t),r=u.dividendMaxRate;if(a<0||a>r)throw new Error(`Invalid value for rate field! Must be numeric, greater than 0, and less than ${r}`);const i=n();if(!i.public)throw p.BM.makeRuntimeErrorMsg(e,"Your company has not gone public!");(0,o.wZ)(i,a)},issueNewShares:e=>t=>{x(e);const a=n(),r=a.calculateMaxNewShares();null==t&&(t=r);const i=p.BM.number(e,"amount",t),[s]=(0,o.yp)(a,i);return s},getDivision:e=>t=>(x(e),function(e){const t=(0,v.nd)(e.offices);return{name:e.name,type:e.type,awareness:e.awareness,popularity:e.popularity,productionMult:e.productionMult,researchPoints:e.researchPoints,lastCycleRevenue:e.lastCycleRevenue,lastCycleExpenses:e.lastCycleExpenses,thisCycleRevenue:e.thisCycleRevenue,thisCycleExpenses:e.thisCycleExpenses,numAdVerts:e.numAdVerts,cities:t,products:[...e.products.keys()],makesProducts:e.makesProducts,maxProducts:e.maxProducts}}(k(p.BM.string(e,"divisionName",t)))),getCorporation:e=>()=>{x(e);const t=n();return{name:t.name,funds:t.funds,revenue:t.revenue,expenses:t.expenses,public:t.public,totalShares:t.totalShares,numShares:t.numShares,shareSaleCooldown:t.shareSaleCooldown,investorShares:t.investorShares,issuedShares:t.issuedShares,issueNewSharesCooldown:t.issueNewSharesCooldown,sharePrice:t.sharePrice,dividendRate:t.dividendRate,dividendTax:t.dividendTax,dividendEarnings:t.getCycleDividends()/u.secondsPerMarketCycle,state:t.state.getState(),divisions:[...t.divisions.keys()]}},createCorporation:t=>function(n){let a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const r=p.BM.string(t,"corporationName",n),o=!!a;return e(r,o)},hasUnlock:e=>n=>(x(e),t((0,g.m)("CorpUnlockName").nsGetMember(e,n,"unlockName"))),getUnlockCost:e=>t=>{return x(e),n=(0,g.m)("CorpUnlockName").nsGetMember(e,t,"unlockName"),i.D[n].price;var n},getUpgradeLevel:e=>t=>{return x(e),a=(0,g.m)("CorpUpgradeName").nsGetMember(e,t,"upgradeName"),n().upgrades[a].level;var a},getUpgradeLevelCost:e=>t=>(x(e),function(e){const t=n();return(0,b.gE)(t,s.x[e],1)}((0,g.m)("CorpUpgradeName").nsGetMember(e,t,"upgradeName"))),getInvestmentOffer:e=>()=>(x(e),n().getInvestmentOffer()),acceptInvestmentOffer:e=>()=>{x(e);const t=n();try{return(0,o.Zd)(t),!0}catch(e){return!1}},goPublic:e=>t=>{x(e);const a=n();if(a.public)throw p.BM.makeRuntimeErrorMsg(e,"corporation is already public");const r=p.BM.number(e,"numShares",t);return(0,o.KB)(a,r),!0},sellShares:e=>t=>{x(e);const a=p.BM.number(e,"numShares",t);return(0,o.aT)(n(),a)},buyBackShares:e=>t=>{x(e);const a=p.BM.number(e,"numShares",t);return(0,o.Fm)(n(),a)},bribe:e=>(t,r)=>(x(e),function(e,t){if(isNaN(t)||t<0)throw new Error("Invalid value for amount field! Must be numeric, greater than 0.");const r=n();if(r.funds()=>(x(e),1e3*Math.round(n().storedCycles/5))};return(0,d.G)(M,{assignJob:{version:"2.2.0",replacement:"Removed due to employees no longer being objects. Use ns.corporation.setAutoJobAssignment instead.",replaceMsg:!0},getEmployee:{version:"2.2.0",replacement:"Removed due to employees no longer being individual objects.",replaceMsg:!0},getExpandCityCost:{version:"2.2.0",replacement:"corporation.getConstants().officeInitialCost"},getExpandIndustryCost:{version:"2.2.0",replacement:"corporation.getIndustryData"},getIndustryTypes:{version:"2.2.0",replacement:"corporation.getConstants().industryNames"},getMaterialNames:{version:"2.2.0",replacement:"corporation.getConstants().materialNames"},getPurchaseWarehouseCost:{version:"2.2.0",replacement:"corporation.getConstants().warehouseInitialCost"},getResearchNames:{version:"2.2.0",replacement:"corporation.getConstants().researchNames"},getUnlockables:{version:"2.2.0",replacement:"corporation.getConstants().unlockNames"},getUpgradeNames:{version:"2.2.0",replacement:"corporation.getConstants().upgradeNames"}}),M}},30180:(e,t,n)=>{"use strict";n.d(t,{C:()=>c});var a=n(49173),r=n(52107),o=n(2418),i=n(51674),s=n(23122),l=n(32310);function c(){return{heart:{break:()=>()=>a.J5.karma},openDevMenu:()=>()=>i.Z.emit(),exploit:()=>()=>a.J5.giveExploit(r.VX.UndocumentedFunctionCall),bypass:e=>t=>{const n=t;n.completely_unused_field=void 0;const o=document;o.completely_unused_field=void 0,o.completely_unused_field=!0,n.completely_unused_field&&e.workerScript.scriptRef.ramUsage===l.qS.Base&&a.J5.giveExploit(r.VX.Bypass),n.completely_unused_field=void 0,o.completely_unused_field=void 0},alterReality:()=>()=>{let e=!1;const t=function(n){0!==n&&(e=!e,t(n-1))};t(2),console.warn("I am sure that this variable is false."),e&&(console.warn("Reality has been altered!"),a.J5.giveExploit(r.VX.RealityAlteration))},rainbow:e=>t=>{const n=s.BM.string(e,"guess",t);return!!o.compareSync(n,"$2a$10$aertxDEkgor8baVtQDZsLuMwwGYmkRM/ohcA6FjmmzIHQeTCsrCcO")&&(a.J5.giveExploit(r.VX.INeedARainbow),!0)}}}},21278:(e,t,n)=>{"use strict";n.d(t,{v:()=>i});var a=n(32938),r=n(86021),o=n.n(r);function i(e){const t=Array.isArray(e)?e:e.workerScript.args;return e=>{if(e=(0,a.l)(e),!Array.isArray(e))throw new Error("flags schema passed in is invalid.");const n={};for(const t of e){let e=String;"number"==typeof t[1]?e=Number:"boolean"==typeof t[1]?e=Boolean:Array.isArray(t[1])&&(e=[String]);const a=t[0].length>1?2:1;n["-".repeat(a)+t[0]]=e}const r=o()(n,{argv:t});for(const t of e)Object.hasOwn(r,"--"+t[0])&&Object.hasOwn(r,"-"+t[0])||(r[t[0]]=t[1]);for(const e of Object.keys(r)){if(!e.startsWith("-"))continue;const t=r[e];delete r[e];const n=2===e.length?1:2;r[e.slice(n)]=t}return r}}},62450:(e,t,n)=>{"use strict";n.d(t,{V:()=>C});var a=n(49173),r=n(7987),o=n(2517),i=n(73280),s=n(1290),l=n(93430),c=n(22738),u=n(49708),m=n(33244),f=n(21320),h=n(48132),d=n(23248),p=n(40811),g=n(23122),y=n(97093),b=n(62586),v=n(62850),k=n(51544),w=n(50862),E=n(11124),S=n(35100);function C(){const e=function(e){if(!a.J5.hasProgram(m.CompletedProgramName.formulas))throw g.BM.makeRuntimeErrorMsg(e,"Requires Formulas.exe to run.")},t={mockServer:()=>()=>({cpuCores:0,ftpPortOpen:!1,hasAdminRights:!1,hostname:"",httpPortOpen:!1,ip:"",isConnectedTo:!1,maxRam:0,organizationName:"",ramUsed:0,smtpPortOpen:!1,sqlPortOpen:!1,sshPortOpen:!1,purchasedByPlayer:!1,backdoorInstalled:!1,baseDifficulty:0,hackDifficulty:0,minDifficulty:0,moneyAvailable:0,moneyMax:0,numOpenPortsRequired:0,openPortCount:0,requiredHackingSkill:0,serverGrowth:0}),mockPlayer:()=>()=>({hp:{current:0,max:0},skills:{hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0},exp:{hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0},mults:(0,v.A7)(),city:m.CityName.Sector12,numPeopleKilled:0,money:0,location:m.LocationName.TravelAgency,totalPlaytime:0,jobs:{},factions:[],entropy:0}),mockPerson:()=>()=>({hp:{current:0,max:0},skills:{hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0},exp:{hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0},mults:(0,v.A7)(),city:m.CityName.Sector12}),reputation:{calculateFavorToRep:t=>n=>{const a=g.BM.number(t,"favor",n);return e(t),(0,h.X)(a)},calculateRepToFavor:t=>n=>{const a=g.BM.number(t,"rep",n);return e(t),(0,h.y)(a)},repFromDonation:t=>(n,a)=>{const r=g.BM.number(t,"amount",n),o=g.BM.person(t,a);return e(t),(0,d.o9)(r,o)}},skills:{calculateSkill:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=g.BM.number(t,"exp",n),o=g.BM.number(t,"mult",a);return e(t),(0,c.gX)(r,o)},calculateExp:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=g.BM.number(t,"skill",n),o=g.BM.number(t,"mult",a);return e(t),(0,c.DA)(r,o)}},hacking:{hackChance:t=>(n,a)=>{const r=g.BM.server(t,n),o=g.BM.person(t,a);return e(t),(0,u.gb)(r,o)},hackExp:t=>(n,a)=>{const r=g.BM.server(t,n),o=g.BM.person(t,a);return e(t),(0,u.iG)(r,o)},hackPercent:t=>(n,a)=>{const r=g.BM.server(t,n),o=g.BM.person(t,a);return e(t),(0,u.zX)(r,o)},growPercent:t=>function(n,a,o){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const s=g.BM.server(t,n),l=g.BM.person(t,o),c=g.BM.number(t,"threads",a),u=g.BM.number(t,"cores",i);return e(t),(0,r.C)(s,c,l,u)},growThreads:t=>function(n,a,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const s=g.BM.server(t,n),l=g.BM.person(t,a),c=g.BM.number(t,"targetMoney",r),u=g.BM.number(t,"server.moneyAvailable",s.moneyAvailable),m=g.BM.number(t,"cores",i);return e(t),(0,o.yk)(s,c,u,m,l)},hackTime:t=>(n,a)=>{const r=g.BM.server(t,n),o=g.BM.person(t,a);return e(t),1e3*(0,u.sI)(r,o)},growTime:t=>(n,a)=>{const r=g.BM.server(t,n),o=g.BM.person(t,a);return e(t),1e3*(0,u.Md)(r,o)},weakenTime:t=>(n,a)=>{const r=g.BM.server(t,n),o=g.BM.person(t,a);return e(t),1e3*(0,u.Vp)(r,o)}},hacknetNodes:{moneyGainRate:t=>function(n,a,r){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const s=g.BM.number(t,"level",n),l=g.BM.number(t,"ram",a),c=g.BM.number(t,"cores",r),u=g.BM.number(t,"mult",o);return e(t),(0,i.yf)(s,l,c,u)},levelUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingLevel",n),s=g.BM.number(t,"extraLevels",a),l=g.BM.number(t,"costMult",r);return e(t),(0,i.TJ)(o,s,l)},ramUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingRam",n),s=g.BM.number(t,"extraLevels",a),l=g.BM.number(t,"costMult",r);return e(t),(0,i.u7)(o,s,l)},coreUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingCore",n),s=g.BM.number(t,"extraCores",a),l=g.BM.number(t,"costMult",r);return e(t),(0,i.pq)(o,s,l)},hacknetNodeCost:t=>(n,a)=>{const r=g.BM.number(t,"n",n),o=g.BM.number(t,"mult",a);return e(t),(0,i.Vi)(r,o)},constants:t=>()=>(e(t),Object.assign({},l.dN))},hacknetServers:{hashGainRate:t=>function(n,a,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1;const l=g.BM.number(t,"level",n),c=g.BM.number(t,"ramUsed",a),u=g.BM.number(t,"maxRam",r),m=g.BM.number(t,"cores",o),f=g.BM.number(t,"mult",i);return e(t),(0,s.WA)(l,c,u,m,f)},levelUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingLevel",n),i=g.BM.number(t,"extraLevels",a),l=g.BM.number(t,"costMult",r);return e(t),(0,s.TJ)(o,i,l)},ramUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingRam",n),i=g.BM.number(t,"extraLevels",a),l=g.BM.number(t,"costMult",r);return e(t),(0,s.u7)(o,i,l)},coreUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const o=g.BM.number(t,"startingCore",n),i=g.BM.number(t,"extraCores",a),l=g.BM.number(t,"costMult",r);return e(t),(0,s.pq)(o,i,l)},cacheUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=g.BM.number(t,"startingCache",n),o=g.BM.number(t,"extraCache",a);return e(t),(0,s._1)(r,o)},hashUpgradeCost:t=>(n,r)=>{const o=g.BM.string(t,"upgName",n),i=g.BM.number(t,"level",r);e(t);const s=a.J5.hashManager.getUpgrade(o);if(!s)throw g.BM.makeRuntimeErrorMsg(t,`Invalid Hash Upgrade: ${o}`);return s.getCost(i)},hacknetServerCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=g.BM.number(t,"n",n),o=g.BM.number(t,"mult",a);return e(t),(0,s.oP)(r,o)},constants:t=>()=>(e(t),Object.assign({},l.B5))},gang:{wantedPenalty:t=>n=>{const a=g.BM.gang(t,n);return e(t),(0,f.mT)(a)},respectGain:t=>(n,a,r)=>{const o=g.BM.gang(t,n),i=g.BM.gangMember(t,a),s=g.BM.gangTask(t,r);return e(t),(0,f.qo)(o,i,s)},wantedLevelGain:t=>(n,a,r)=>{const o=g.BM.gang(t,n),i=g.BM.gangMember(t,a),s=g.BM.gangTask(t,r);return e(t),(0,f.QS)(o,i,s)},moneyGain:t=>(n,a,r)=>{const o=g.BM.gang(t,n),i=g.BM.gangMember(t,a),s=g.BM.gangTask(t,r);return e(t),(0,f.Ym)(o,i,s)},ascensionPointsGain:t=>n=>{const a=g.BM.number(t,"exp",n);return e(t),(0,f.NB)(a)},ascensionMultiplier:t=>n=>{const a=g.BM.number(t,"points",n);return e(t),(0,f._r)(a)}},work:{crimeSuccessChance:t=>(n,a)=>{e(t);const r=g.BM.person(t,n),o=(0,S.K)(g.BM.string(t,"crimeType",a));if(!o)throw new Error(`Invalid crime type: ${a}`);return o.successRate(r)},crimeGains:t=>(n,a)=>{e(t);const r=g.BM.person(t,n),o=(0,S.K)(g.BM.string(t,"crimeType",a));if(!o)throw new Error(`Invalid crime type: ${a}`);return(0,y.jI)(r,o)},gymGains:t=>(n,a,r)=>{e(t);const o=g.BM.person(t,n),i=(0,k.x)(m.GymType,g.BM.string(t,"classType",a));if(!i)throw new Error(`Invalid gym training type: ${a}`);const s=(0,w.m)("LocationName").nsGetMember(t,r);return(0,y.w4)(o,i,s)},universityGains:t=>(n,a,r)=>{e(t);const o=g.BM.person(t,n),i=(0,k.x)(m.UniversityClassType,g.BM.string(t,"classType",a));if(!i)throw new Error(`Invalid university class type: ${a}`);const s=(0,w.m)("LocationName").nsGetMember(t,r);return(0,y.w4)(o,i,s)},factionGains:t=>(n,a,r)=>{e(t);const o=g.BM.person(t,n),i=(0,k.x)(m.FactionWorkType,g.BM.string(t,"_workType",a));if(!i)throw new Error(`Invalid faction work type: ${a}`);const s=g.BM.number(t,"favor",r),l=(0,y.r0)(o,i),c=(0,y.EV)(o,i,s);return l.reputation=c,l},companyGains:t=>(n,a,r,o)=>{e(t);const i=g.BM.person(t,n),s=(0,k.x)(m.JobName,g.BM.string(t,"_positionName",r));if(!s)throw new Error(`Invalid company position: ${r}`);const l=E.A[s],c=g.BM.string(t,"_companyName",a),u=Object.values(b.O).find((e=>e.name===c));if(!u)throw new Error(`Invalid company name: ${c}`);const f=g.BM.number(t,"favor",o);return(0,y.zP)(i,u,l,f)}}};return(0,p.G)(t.work,{classGains:{version:"2.2.0",replacement:"formulas.work.universityGains or formulas.work.gymGains"}}),t}},82120:(e,t,n)=>{"use strict";n.d(t,{j:()=>m});var a=n(49173),r=n(33244),o=n(87811),i=n(59471),s=n(99225),l=n(59018),c=n(23122),u=n(50862);function m(){const e=function(e){if(!a.J5.gang)throw c.BM.makeRuntimeErrorMsg(e,"Must have joined gang","API ACCESS");return a.J5.gang},t=function(t,n){const a=e(t);for(const e of a.members)if(e.name===n)return e;throw c.BM.makeRuntimeErrorMsg(t,`Invalid gang member: '${n}'`)};return{createGang:e=>t=>{const n=(0,u.m)("FactionName").nsGetMember(e,t);if(!a.J5.canAccessGang()||!o.m.Names.includes(n))return!1;if(a.J5.gang)return!1;if(!a.J5.factions.includes(n))return!1;const i=n===r.FactionName.NiteSec||n===r.FactionName.TheBlackHand;return a.J5.startGang(n,i),!0},inGang:()=>()=>!!a.J5.gang,getMemberNames:t=>()=>e(t).members.map((e=>e.name)),renameMember:t=>(n,a)=>{const r=e(t),o=c.BM.string(t,"memberName",n),i=c.BM.string(t,"newName",a),s=r.members.find((e=>e.name===o));if(!o)throw c.BM.makeRuntimeErrorMsg(t,'Invalid memberName: "" (empty string)');if(!i)throw c.BM.makeRuntimeErrorMsg(t,'Invalid newName: "" (empty string)');if(i===o)throw c.BM.makeRuntimeErrorMsg(t,`newName and memberName must be different, but both were: ${i}`);return s?r.members.map((e=>e.name)).includes(i)?(c.BM.log(t,(()=>`Failed to rename member: A different member already has the newName: ${i}`)),!1):(s.name=i,c.BM.log(t,(()=>`Renamed member from memberName: ${o} to newName: ${i}`)),!0):(c.BM.log(t,(()=>`Failed to rename member: No member exists with memberName: ${o}`)),!1)},getGangInformation:t=>()=>{const n=e(t);return{faction:n.facName,isHacking:n.isHackingGang,moneyGainRate:n.moneyGainRate,power:n.getPower(),respect:n.respect,respectGainRate:n.respectGainRate,respectForNextRecruit:n.respectForNextRecruit(),territory:n.getTerritory(),territoryClashChance:n.territoryClashChance,territoryWarfareEngaged:n.territoryWarfareEngaged,wantedLevel:n.wanted,wantedLevelGainRate:n.wantedGainRate,wantedPenalty:n.getWantedPenalty()}},getOtherGangInformation:t=>()=>{e(t);const n={};for(const e of Object.keys(i.vS))n[e]=Object.assign({},i.vS[e]);return n},getMemberInformation:n=>a=>{const r=c.BM.string(n,"memberName",a),o=e(n),i=t(n,r);return{name:i.name,task:i.task,earnedRespect:i.earnedRespect,hack:i.hack,str:i.str,def:i.def,dex:i.dex,agi:i.agi,cha:i.cha,hack_exp:i.hack_exp,str_exp:i.str_exp,def_exp:i.def_exp,dex_exp:i.dex_exp,agi_exp:i.agi_exp,cha_exp:i.cha_exp,hack_mult:i.hack_mult,str_mult:i.str_mult,def_mult:i.def_mult,dex_mult:i.dex_mult,agi_mult:i.agi_mult,cha_mult:i.cha_mult,hack_asc_mult:i.calculateAscensionMult(i.hack_asc_points),str_asc_mult:i.calculateAscensionMult(i.str_asc_points),def_asc_mult:i.calculateAscensionMult(i.def_asc_points),dex_asc_mult:i.calculateAscensionMult(i.dex_asc_points),agi_asc_mult:i.calculateAscensionMult(i.agi_asc_points),cha_asc_mult:i.calculateAscensionMult(i.cha_asc_points),hack_asc_points:i.hack_asc_points,str_asc_points:i.str_asc_points,def_asc_points:i.def_asc_points,dex_asc_points:i.dex_asc_points,agi_asc_points:i.agi_asc_points,cha_asc_points:i.cha_asc_points,upgrades:i.upgrades.slice(),augmentations:i.augmentations.slice(),respectGain:i.calculateRespectGain(o),wantedLevelGain:i.calculateWantedLevelGain(o),moneyGain:i.calculateMoneyGain(o)}},canRecruitMember:t=>()=>e(t).canRecruitMember(),getRecruitsAvailable:t=>()=>e(t).getRecruitsAvailable(),respectForNextRecruit:t=>()=>e(t).respectForNextRecruit(),recruitMember:t=>n=>{const a=c.BM.string(t,"memberName",n),r=e(t).recruitMember(a);return""===a?(t.workerScript.log("gang.recruitMember",(()=>"Failed to recruit Gang Member. Name must be provided.")),!1):r?(t.workerScript.log("gang.recruitMember",(()=>`Successfully recruited Gang Member '${a}'`)),r):(t.workerScript.log("gang.recruitMember",(()=>`Failed to recruit Gang Member '${a}'. Name already used.`)),r)},getTaskNames:t=>()=>{const n=e(t).getAllTaskNames();return n.unshift("Unassigned"),n},setMemberTask:n=>(a,r)=>{const o=c.BM.string(n,"memberName",a),i=c.BM.string(n,"taskName",r),s=e(n),l=t(n,o);if(!s.getAllTaskNames().includes(i))return n.workerScript.log("gang.setMemberTask",(()=>`Failed to assign Gang Member '${o}' to Invalid task '${i}'. '${o}' is now Unassigned`)),l.assignToTask("Unassigned");const u=l.assignToTask(i);return u?n.workerScript.log("gang.setMemberTask",(()=>`Successfully assigned Gang Member '${o}' to '${i}' task`)):n.workerScript.log("gang.setMemberTask",(()=>`Failed to assign Gang Member '${o}' to '${i}' task. '${o}' is now Unassigned`)),u},getTaskStats:t=>n=>{const a=c.BM.string(t,"taskName",n);e(t);const r=function(e,t){const n=s.H[t];if(!n)throw c.BM.makeRuntimeErrorMsg(e,`Invalid task: '${t}'`);return n}(t,a),o=Object.assign({},r);return o.territory=Object.assign({},r.territory),o},getEquipmentNames:t=>()=>(e(t),Object.keys(l.o)),getEquipmentCost:t=>n=>{const a=c.BM.string(t,"equipName",n),r=e(t),o=l.o[a];return null===o?1/0:r.getUpgradeCost(o)},getEquipmentType:t=>n=>{const a=c.BM.string(t,"equipName",n);e(t);const r=l.o[a];return null==r?"":r.getType()},getEquipmentStats:t=>n=>{const a=c.BM.string(t,"equipName",n);e(t);const r=l.o[a];if(!r)throw c.BM.makeRuntimeErrorMsg(t,`Invalid equipment: ${a}`);const o=r.mults;return Object.assign({},o)},purchaseEquipment:n=>(a,r)=>{const o=c.BM.string(n,"memberName",a),i=c.BM.string(n,"equipName",r);e(n);const s=t(n,o),u=l.o[i];if(!u)return!1;const m=s.buyUpgrade(u);return m?n.workerScript.log("gang.purchaseEquipment",(()=>`Purchased '${i}' for Gang member '${o}'`)):n.workerScript.log("gang.purchaseEquipment",(()=>`Failed to purchase '${i}' for Gang member '${o}'`)),m},ascendMember:n=>a=>{const r=c.BM.string(n,"memberName",a),o=e(n),i=t(n,r);if(i.canAscend())return o.ascendMember(i,n.workerScript)},getAscensionResult:n=>a=>{const r=c.BM.string(n,"memberName",a);e(n);const o=t(n,r);if(o.canAscend())return{respect:o.earnedRespect,...o.getAscensionResults()}},setTerritoryWarfare:t=>n=>{const a=!!n,r=e(t);a?(r.territoryWarfareEngaged=!0,t.workerScript.log("gang.setTerritoryWarfare",(()=>"Engaging in Gang Territory Warfare"))):(r.territoryWarfareEngaged=!1,t.workerScript.log("gang.setTerritoryWarfare",(()=>"Disengaging in Gang Territory Warfare")))},getChanceToWinClash:t=>n=>{const a=c.BM.string(t,"otherGang",n),r=e(t);if(null==i.vS[a])throw c.BM.makeRuntimeErrorMsg(t,`Invalid gang: ${a}`);const o=i.vS[r.facName].power;return o/(i.vS[a].power+o)},getBonusTime:t=>()=>{const n=e(t);return 1e3*Math.round(n.storedCycles/5)}}}},82439:(e,t,n)=>{"use strict";n.d(t,{u:()=>d});var a=n(49173),r=n(33244),o=n(73440),i=n(94542),s=n(51278),l=n(16771),c=n(52947),u=n(24815),m=n(64315),f=n(23122),h=n(50862);function d(){const e=e=>{if(!a.J5.canAccessGrafting())throw f.BM.makeRuntimeErrorMsg(e,"You do not currently have access to the Grafting API. This is either because you are not in BitNode 10 or because you do not have Source-File 10")},t=e=>(0,l.Kg)().includes(e);return{getAugmentationGraftPrice:n=>a=>{const r=(0,h.m)("AugmentationName").nsGetMember(n,a);if(e(n),!t(r))throw f.BM.makeRuntimeErrorMsg(n,`Invalid aug: ${r}`);return new s.W(o.x[r]).cost},getAugmentationGraftTime:n=>a=>{const r=(0,h.m)("AugmentationName").nsGetMember(n,a);if(e(n),!t(r))throw f.BM.makeRuntimeErrorMsg(n,`Invalid aug: ${r}`);const i=new s.W(o.x[r]);return(0,l.i1)(i)},getGraftableAugmentations:t=>()=>(e(t),(0,l.Kg)()),graftAugmentation:n=>function(l){let d=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const p=(0,h.m)("AugmentationName").nsGetMember(n,l),g=!!d;if(e(n),a.J5.city!==r.CityName.NewTokyo)throw f.BM.makeRuntimeErrorMsg(n,"You must be in New Tokyo to begin grafting an Augmentation.");if(!t(p))return f.BM.log(n,(()=>`Invalid aug: ${p}`)),!1;const y=a.J5.focus,b=new s.W(o.x[p]);return a.J5.money`You don't have enough money to craft ${p}`)),!1):(0,i.id)(b.augmentation)?(a.J5.startWork(new m.Y({singularity:!0,augmentation:p})),g?(a.J5.startFocusing(),c.F.toPage(u.T3.Work)):y&&(a.J5.stopFocusing(),c.F.toPage(u.T3.Terminal)),f.BM.log(n,(()=>`Began grafting Augmentation ${p}.`)),!0):(f.BM.log(n,(()=>`You don't have the pre-requisites for ${p}`)),!1)}}}},47837:(e,t,n)=>{"use strict";n.d(t,{p:()=>m});var a=n(49173),r=n(93430),o=n(29538),i=n(3853),s=n(55782),l=n(94043),c=n(97467),u=n(23122);function m(){const e=function(e,t){if(t<0||t>=a.J5.hacknetNodes.length)throw u.BM.makeRuntimeErrorMsg(e,"Index specified for Hacknet Node is out-of-bounds: "+t);if((0,o.kw)()){const n=a.J5.hacknetNodes[t];if("string"!=typeof n)throw new Error("hacknet node was not a string");const r=(0,c.WT)(n);if(!(r instanceof i.u))throw new Error("hacknet server was not actually hacknet server");if(null==r)throw u.BM.makeRuntimeErrorMsg(e,`Could not get Hacknet Server for index ${t}. This is probably a bug, please report to game dev`);return r}{const e=a.J5.hacknetNodes[t];if(!(e instanceof s.Q))throw new Error("hacknet node was not node.");return e}};return{numNodes:()=>()=>a.J5.hacknetNodes.length,maxNumNodes:()=>()=>(0,o.kw)()?r.B5.MaxServers:1/0,purchaseNode:()=>()=>(0,o.N0)(),getPurchaseNodeCost:()=>()=>(0,o.kw)()?(0,o.BF)():(0,o.b_)(),getNodeStats:t=>n=>{const a=u.BM.number(t,"i",n),r=e(t,a),s=(0,o.kw)(),l={name:r instanceof i.u?r.hostname:r.name,level:r.level,ram:r instanceof i.u?r.maxRam:r.ram,cores:r.cores,production:r instanceof i.u?r.hashRate:r.moneyGainRatePerSecond,timeOnline:r.onlineTimeSeconds,totalProduction:r instanceof i.u?r.totalHashesGenerated:r.totalMoneyGenerated};return s&&r instanceof i.u&&(l.cache=r.cache,l.hashCapacity=r.hashCapacity,l.ramUsed=r.ramUsed),l},upgradeLevel:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=u.BM.number(t,"i",n),i=u.BM.number(t,"n",a),s=e(t,r);return(0,o.Tw)(s,i)},upgradeRam:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=u.BM.number(t,"i",n),i=u.BM.number(t,"n",a),s=e(t,r);return(0,o.Fy)(s,i)},upgradeCore:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=u.BM.number(t,"i",n),i=u.BM.number(t,"n",a),s=e(t,r);return(0,o.UL)(s,i)},upgradeCache:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=u.BM.number(t,"i",n),s=u.BM.number(t,"n",a);if(!(0,o.kw)())return!1;const l=e(t,r);if(!(l instanceof i.u))return u.BM.log(t,(()=>"Can only be called on hacknet servers")),!1;const c=(0,o.Px)(l,s);return c&&(0,o.TN)(),c},getLevelUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const o=u.BM.number(t,"i",n),i=u.BM.number(t,"n",r),s=e(t,o);return s.calculateLevelUpgradeCost(i,a.J5.mults.hacknet_node_level_cost)},getRamUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const o=u.BM.number(t,"i",n),i=u.BM.number(t,"n",r),s=e(t,o);return s.calculateRamUpgradeCost(i,a.J5.mults.hacknet_node_ram_cost)},getCoreUpgradeCost:t=>function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const o=u.BM.number(t,"i",n),i=u.BM.number(t,"n",r),s=e(t,o);return s.calculateCoreUpgradeCost(i,a.J5.mults.hacknet_node_core_cost)},getCacheUpgradeCost:t=>function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=u.BM.number(t,"i",n),s=u.BM.number(t,"n",a);if(!(0,o.kw)())return 1/0;const l=e(t,r);return l instanceof i.u?l.calculateCacheUpgradeCost(s):(u.BM.log(t,(()=>"Can only be called on hacknet servers")),-1)},numHashes:()=>()=>(0,o.kw)()?a.J5.hashManager.hashes:0,hashCapacity:()=>()=>(0,o.kw)()?a.J5.hashManager.capacity:0,hashCost:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=u.BM.string(e,"upgName",t),i=u.BM.number(e,"count",n);return(0,o.kw)()?a.J5.hashManager.getUpgradeCost(r,i):1/0},spendHashes:e=>function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=u.BM.string(e,"upgName",t),i=u.BM.string(e,"upgTarget",n),s=u.BM.number(e,"count",a);return!!(0,o.kw)()&&(0,o.fE)(r,i,s)},getHashUpgrades:()=>()=>(0,o.kw)()?Object.values(l.L).map((e=>e.name)):[],getHashUpgradeLevel:e=>t=>{const n=u.BM.string(e,"upgName",t),r=a.J5.hashManager.upgrades[n];if(void 0===r)throw u.BM.makeRuntimeErrorMsg(e,`Invalid Hash Upgrade: ${n}`);return r},getStudyMult:()=>()=>(0,o.kw)()?a.J5.hashManager.getStudyMult():1,getTrainingMult:()=>()=>(0,o.kw)()?a.J5.hashManager.getTrainingMult():1}}},53331:(e,t,n)=>{"use strict";n.d(t,{d:()=>m});var a=n(33244),r=n(81881),o=n(80366),i=n(20567),s=n(58427),l=n(50862),c=n(23122),u=n(72326);function m(){const e=Object.values(r.t).filter((e=>e.infiltrationData));return{getPossibleLocations:()=>()=>(0,u.m)(e.map((e=>!!e.city&&{city:e.city,name:e.name}))),getInfiltration:e=>t=>{const n=(0,l.m)("LocationName").nsGetMember(e,t);return((e,t)=>{const n=r.t[t];if(void 0===n)throw c.BM.makeRuntimeErrorMsg(e,`Location '${n}' does not exists.`);if(void 0===n.infiltrationData)throw c.BM.makeRuntimeErrorMsg(e,`Location '${n}' does not provide infiltrations.`);const l=n.infiltrationData.startingSecurityLevel,u=(0,o.o)(l),m=(0,o.y)(l),f=n.infiltrationData.maxClearanceLevel;return{location:JSON.parse(JSON.stringify(n)),reward:{tradeRep:(0,i.Ek)(m,f,l),sellCash:(0,i.kS)(m,f,l),SoARep:(0,i.tB)(s.i[a.FactionName.ShadowsOfAnarchy],l)},difficulty:u}})(e,n)}}}},56704:(e,t,n)=>{"use strict";n.d(t,{h:()=>Y});var a=n(49173),r=n(33244),o=n(94542),i=n(7872),s=n(73440),l=n(27889),c=n(72938),u=n(19918),m=n(30518),f=n(35100),h=n(11124),d=n(4852),p=n(52947),g=n(24815),y=n(40425),b=n(81881),v=n(97467),k=n(58073),w=n(22115),E=n(97740),S=n(62586),C=n(58427),x=n(23122),N=n(49802),M=n(2517),A=n(65065),T=n(49708),L=n(89916),R=n(42805),F=n(98865),I=n(23248),_=n(40811),P=n(98235),B=n(94337),O=n(95814),D=n(16632),Z=n(75522),G=n(93936),J=n(34716),W=n(97093),H=n(51544),U=n(2827),j=n(50862),$=n(69917),q=n(27757),z=n(68507),V=n(21623);function Y(){const e=function(e){if(!e)return;const t=a.J5.getHomeComputer(),n=t.scripts.get(e);if(!n)return;const r=n.getRamUsage(t.scripts);if(!r)return A.o.error(`Attempted to launch ${e} after reset but could not calculate ram usage.`);if(r>t.maxRam-t.ramUsed+.001)return A.o.error(`Attempted to launch ${e} after reset but there was not enough ram.`);const o=new u.X(n,r,[]);(0,i.dU)(o,t)},t={getOwnedAugmentations:e=>t=>{x.BM.checkSingularityAccess(e);const n=!!t,r=[];for(let e=0;e()=>[...a.J5.sourceFiles].map((e=>{let[t,n]=e;return{n:t,lvl:n}})),getAugmentationFactions:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t);return s.x[n].factions.slice()},getAugmentationsFromFaction:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t),a=C.i[n];return(0,o.qW)(a)},getAugmentationPrereq:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t);return s.x[n].prereqs.slice()},getAugmentationBasePrice:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t);return s.x[n].baseCost*E.dQ.AugmentationMoneyCost},getAugmentationPrice:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t),a=s.x[n];return(0,l.hV)(a).moneyCost},getAugmentationRepReq:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t),a=s.x[n];return(0,l.hV)(a).repCost},getAugmentationStats:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("AugmentationName").nsGetMember(e,t),a=s.x[n];return Object.assign({},a.mults)},purchaseAugmentation:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const i=(0,j.m)("FactionName").nsGetMember(e,t),u=(0,j.m)("AugmentationName").nsGetMember(e,n),m=C.i[i],f=s.x[u],h=(0,o.qW)(m);if(!a.J5.factions.includes(i))return x.BM.log(e,(()=>`You can't purchase augmentations from '${i}' because you aren't a member`)),!1;if(!h.includes(u))return x.BM.log(e,(()=>`Faction '${i}' does not have the '${u}' augmentation.`)),!1;if(f.name!==r.AugmentationName.NeuroFluxGovernor){for(let t=0;t`You already have the '${u}' augmentation.`)),!1;for(let t=0;t`You already have the '${u}' augmentation.`)),!1}if(m.playerReputation<(0,l.hV)(f).repCost)return x.BM.log(e,(()=>`You do not have enough reputation with '${m.name}'.`)),!1;const d=(0,o.Gl)(f,m,!0);return x.BM.log(e,(()=>d)),!!d.startsWith("You purchased")&&(a.J5.gainIntelligenceExp(10*c.t.IntelligenceSingFnBaseExpGain),!0)},softReset:t=>n=>{x.BM.checkSingularityAccess(t);const a=!!n&&(0,$.L6)(x.BM.string(t,"cbScript",n),t.workerScript.name);if(null===a)throw x.BM.makeRuntimeErrorMsg(t,`Could not resolve file path: ${n}`);x.BM.log(t,(()=>"Soft resetting. This will cause this script to be killed")),(0,l.Kq)(!0),a&&setTimeout((()=>e(a)),500)},installAugmentations:t=>n=>{x.BM.checkSingularityAccess(t);const r=!!n&&(0,$.L6)(x.BM.string(t,"cbScript",n),t.workerScript.name);if(null===r)throw x.BM.makeRuntimeErrorMsg(t,`Could not resolve file path: ${n}`);if(0===a.J5.queuedAugmentations.length)return x.BM.log(t,(()=>"You do not have any Augmentations to be installed.")),!1;a.J5.gainIntelligenceExp(10*c.t.IntelligenceSingFnBaseExpGain),x.BM.log(t,(()=>"Installing Augmentations. This will cause this script to be killed")),(0,l.Kq)(),r&&setTimeout((()=>e(r)),500)},goToLocation:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"locationName",t),o=Object.values(b.t).find((e=>e.name===n));return o?o.city&&a.J5.city!==o.city?(x.BM.log(e,(()=>`No location named ${n} in ${a.J5.city}`)),!1):(o.name===r.LocationName.TravelAgency?p.F.toPage(g.T3.Travel):o.name===r.LocationName.WorldStockExchange?p.F.toPage(g.T3.StockMarket):p.F.toPage(g.T3.Location,{location:o}),a.J5.gainIntelligenceExp(c.t.IntelligenceSingFnBaseExpGain/5e4),!0):(x.BM.log(e,(()=>`No location named ${n}`)),!1)},universityCourse:e=>function(t,n){let o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];x.BM.checkSingularityAccess(e);const i=x.BM.string(e,"universityName",t),s=(0,H.x)(r.UniversityClassType,x.BM.string(e,"className",n));if(!s)return x.BM.log(e,(()=>`Invalid class name: ${n}.`)),!1;const l=!!o,c=a.J5.focus;switch(i.toLowerCase()){case r.LocationName.AevumSummitUniversity.toLowerCase():if(a.J5.city!=r.CityName.Aevum)return x.BM.log(e,(()=>`You cannot study at 'Summit University' because you are not in '${r.CityName.Aevum}'.`)),!1;a.J5.gotoLocation(r.LocationName.AevumSummitUniversity);break;case r.LocationName.Sector12RothmanUniversity.toLowerCase():if(a.J5.city!=r.CityName.Sector12)return x.BM.log(e,(()=>`You cannot study at 'Rothman University' because you are not in '${r.CityName.Sector12}'.`)),!1;a.J5.location=r.LocationName.Sector12RothmanUniversity;break;case r.LocationName.VolhavenZBInstituteOfTechnology.toLowerCase():if(a.J5.city!=r.CityName.Volhaven)return x.BM.log(e,(()=>`You cannot study at 'ZB Institute of Technology' because you are not in '${r.CityName.Volhaven}'.`)),!1;a.J5.location=r.LocationName.VolhavenZBInstituteOfTechnology;break;default:return x.BM.log(e,(()=>`Invalid university name: '${i}'.`)),!1}return a.J5.startWork(new B.LA({classType:s,location:a.J5.location,singularity:!0})),l?(a.J5.startFocusing(),p.F.toPage(g.T3.Work)):c&&(a.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started ${s} at ${i}`)),!0},gymWorkout:e=>function(t,n){let o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];x.BM.checkSingularityAccess(e);const i=x.BM.string(e,"gymName",t),s=(0,H.x)(r.GymType,x.BM.string(e,"stat",n));if(!s)return x.BM.log(e,(()=>`Invalid stat: ${n}.`)),!1;const l=!!o,c=a.J5.focus;switch(i.toLowerCase()){case r.LocationName.AevumCrushFitnessGym.toLowerCase():if(a.J5.city!=r.CityName.Aevum)return x.BM.log(e,(()=>`You cannot workout at '${r.LocationName.AevumCrushFitnessGym}' because you are not in '${r.CityName.Aevum}'.`)),!1;a.J5.location=r.LocationName.AevumCrushFitnessGym;break;case r.LocationName.AevumSnapFitnessGym.toLowerCase():if(a.J5.city!=r.CityName.Aevum)return x.BM.log(e,(()=>`You cannot workout at '${r.LocationName.AevumSnapFitnessGym}' because you are not in '${r.CityName.Aevum}'.`)),!1;a.J5.location=r.LocationName.AevumSnapFitnessGym;break;case r.LocationName.Sector12IronGym.toLowerCase():if(a.J5.city!=r.CityName.Sector12)return x.BM.log(e,(()=>`You cannot workout at '${r.LocationName.Sector12IronGym}' because you are not in '${r.CityName.Sector12}'.`)),!1;a.J5.location=r.LocationName.Sector12IronGym;break;case r.LocationName.Sector12PowerhouseGym.toLowerCase():if(a.J5.city!=r.CityName.Sector12)return x.BM.log(e,(()=>`You cannot workout at '${r.LocationName.Sector12PowerhouseGym}' because you are not in '${r.CityName.Sector12}'.`)),!1;a.J5.location=r.LocationName.Sector12PowerhouseGym;break;case r.LocationName.VolhavenMilleniumFitnessGym.toLowerCase():if(a.J5.city!=r.CityName.Volhaven)return x.BM.log(e,(()=>`You cannot workout at '${r.LocationName.VolhavenMilleniumFitnessGym}' because you are not in '${r.CityName.Volhaven}'.`)),!1;a.J5.location=r.LocationName.VolhavenMilleniumFitnessGym;break;default:return x.BM.log(e,(()=>`Invalid gym name: ${i}. gymWorkout() failed`)),!1}return a.J5.startWork(new B.LA({classType:s,location:a.J5.location,singularity:!0})),l?(a.J5.startFocusing(),p.F.toPage(g.T3.Work)):c&&(a.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started training ${s} at ${i}`)),!0},travelToCity:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CityName").nsGetMember(e,t);switch(n){case r.CityName.Aevum:case r.CityName.Chongqing:case r.CityName.Sector12:case r.CityName.NewTokyo:case r.CityName.Ishima:case r.CityName.Volhaven:return a.J5.money"Not enough money to travel.")),!1):(a.J5.loseMoney(c.t.TravelCost,"other"),a.J5.city=n,x.BM.log(e,(()=>`Traveled to ${n}`)),a.J5.gainIntelligenceExp(c.t.IntelligenceSingFnBaseExpGain/5e4),!0);default:throw x.BM.makeRuntimeErrorMsg(e,`Invalid city name: '${n}'.`)}},purchaseTor:e=>()=>{if(x.BM.checkSingularityAccess(e),a.J5.hasTorRouter())return x.BM.log(e,(()=>"You already have a TOR router!")),!0;if(a.J5.money"You cannot afford to purchase a Tor router.")),!1;a.J5.loseMoney(c.t.TorRouterCost,"other");const t=(0,v.WT)(y.r.DarkWeb);if(!t)throw x.BM.makeRuntimeErrorMsg(e,"DarkWeb was not a server but should have been");return a.J5.getHomeComputer().serversOnNetwork.push(t.hostname),t.serversOnNetwork.push(a.J5.getHomeComputer().hostname),a.J5.gainIntelligenceExp(c.t.IntelligenceSingFnBaseExpGain/500),x.BM.log(e,(()=>"You have purchased a Tor router!")),!0},purchaseProgram:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"programName",t).toLowerCase();if(!a.J5.hasTorRouter())return x.BM.log(e,(()=>"You do not have the TOR router.")),!1;const r=Object.values(d.L).find((e=>e.program.toLowerCase()===n));return null==r?(x.BM.log(e,(()=>`Invalid program name: '${n}.`)),!1):a.J5.money`Not enough money to purchase '${r.program}'. Need ${(0,w.lb)(r.price)}`)),!1):a.J5.hasProgram(r.program)?(x.BM.log(e,(()=>`You already have the '${r.program}' program`)),!0):(a.J5.getHomeComputer().pushProgram(r.program),(0,O.o)(a.J5.currentWork)&&a.J5.currentWork.programName===r.program&&a.J5.finishWork(!0),a.J5.loseMoney(r.price,"other"),x.BM.log(e,(()=>`You have purchased the '${r.program}' program. The new program can be found on your home computer.`)),a.J5.gainIntelligenceExp(c.t.IntelligenceSingFnBaseExpGain/5e3),!0)},getCurrentServer:e=>()=>(x.BM.checkSingularityAccess(e),a.J5.getCurrentServer().hostname),connect:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"hostname",t);if(!n)throw x.BM.makeRuntimeErrorMsg(e,`Invalid hostname: '${n}'`);const r=(0,v.WT)(n);if(null==r)throw x.BM.makeRuntimeErrorMsg(e,`Invalid hostname: '${n}'`);if("home"===n)return a.J5.getCurrentServer().isConnectedTo=!1,a.J5.currentServer=a.J5.getHomeComputer().hostname,a.J5.getCurrentServer().isConnectedTo=!0,A.o.setcwd(q.Jz),!0;const o=a.J5.getCurrentServer();for(let e=0;e()=>{x.BM.checkSingularityAccess(e);const t=a.J5.getCurrentServer();return x.BM.hack(e,t.hostname,!0)},installBackdoor:e=>async()=>{x.BM.checkSingularityAccess(e);const t=a.J5.getCurrentServer();if(!(t instanceof L.x))return x.BM.log(e,(()=>"cannot backdoor this kind of server")),Promise.resolve();const n=t,r=(0,T.sI)(n,a.J5)/4*1e3,o=(0,R.uN)(n);if(!o.res)throw x.BM.makeRuntimeErrorMsg(e,o.msg||"");return x.BM.log(e,(()=>`Installing backdoor on '${n.hostname}' in ${(0,N.UF)(r,!0)}`)),x.BM.netscriptDelay(e,r).then((function(){if(x.BM.log(e,(()=>`Successfully installed backdoor on '${n.hostname}'`)),n.backdoorInstalled=!0,y.r.WorldDaemon===n.hostname)return p.F.toPage(g.T3.BitVerse,{flume:!1,quick:!1});U.D.Counters.checkFactionInvitations=0,U.D.checkCounters()}))},isFocused:e=>()=>(x.BM.checkSingularityAccess(e),a.J5.focus),setFocus:e=>t=>{x.BM.checkSingularityAccess(e);const n=!!t;if(null===a.J5.currentWork)throw x.BM.makeRuntimeErrorMsg(e,"Not currently working");return!a.J5.focus&&n?(a.J5.startFocusing(),p.F.toPage(g.T3.Work),!0):!(!a.J5.focus||n||(a.J5.stopFocusing(),p.F.toPage(g.T3.Terminal),0))},hospitalize:e=>()=>{x.BM.checkSingularityAccess(e),a.J5.currentWork||p.F.page()===g.T3.Infiltration||p.F.page()===g.T3.BitVerse?x.BM.log(e,(()=>"Cannot go to the hospital because the player is busy.")):a.J5.hospitalize()},isBusy:e=>()=>(x.BM.checkSingularityAccess(e),null!==a.J5.currentWork||p.F.page()===g.T3.Infiltration||p.F.page()===g.T3.BitVerse),stopAction:e=>()=>{x.BM.checkSingularityAccess(e);const t=null!==a.J5.currentWork;return a.J5.finishWork(!0),t},upgradeHomeCores:e=>()=>{x.BM.checkSingularityAccess(e);const t=a.J5.getHomeComputer();if(t.cpuCores>=8)return x.BM.log(e,(()=>"Your home computer is at max cores.")),!1;const n=a.J5.getUpgradeHomeCoresCost();return a.J5.money`You don't have enough money. Need ${(0,w.lb)(n)}`)),!1):(t.cpuCores+=1,a.J5.loseMoney(n,"servers"),a.J5.gainIntelligenceExp(2*c.t.IntelligenceSingFnBaseExpGain),x.BM.log(e,(()=>`Purchased an additional core for home computer! It now has ${t.cpuCores} cores.`)),!0)},getUpgradeHomeCoresCost:e=>()=>(x.BM.checkSingularityAccess(e),a.J5.getUpgradeHomeCoresCost()),upgradeHomeRam:e=>()=>{x.BM.checkSingularityAccess(e);const t=a.J5.getHomeComputer();if(t.maxRam>=c.t.HomeComputerMaxRam)return x.BM.log(e,(()=>"Your home computer is at max RAM.")),!1;const n=a.J5.getUpgradeHomeRamCost();return a.J5.money`You don't have enough money. Need ${(0,w.lb)(n)}`)),!1):(t.maxRam*=2,a.J5.loseMoney(n,"servers"),a.J5.gainIntelligenceExp(2*c.t.IntelligenceSingFnBaseExpGain),x.BM.log(e,(()=>`Purchased additional RAM for home computer! It now has ${(0,w.$1)(t.maxRam)} of RAM.`)),!0)},getUpgradeHomeRamCost:e=>()=>(x.BM.checkSingularityAccess(e),a.J5.getUpgradeHomeRamCost()),getCompanyPositions:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);return(0,V.m0)(h.A).filter((e=>S.O[n].hasPosition(e[0]))).map((e=>e[1].name))},getCompanyPositionInfo:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const a=(0,j.m)("CompanyName").nsGetMember(e,t),r=(0,j.m)("JobName").nsGetMember(e,n,"positionName"),o=S.O[a];if(!o.hasPosition(r))throw x.BM.makeRuntimeErrorMsg(e,`Company '${a}' does not have position '${r}'`);const i=h.A[r];return{name:h.A[r].name,nextPosition:h.A[r].nextPosition,salary:h.A[r].baseSalary*o.salaryMultiplier,requiredReputation:h.A[r].requiredReputation,requiredSkills:{hacking:i.requiredHacking>0?i.requiredHacking+o.jobStatReqOffset:0,strength:i.requiredStrength>0?i.requiredStrength+o.jobStatReqOffset:0,defense:i.requiredDefense>0?i.requiredDefense+o.jobStatReqOffset:0,dexterity:i.requiredDexterity>0?i.requiredDexterity+o.jobStatReqOffset:0,agility:i.requiredAgility>0?i.requiredAgility+o.jobStatReqOffset:0,charisma:i.requiredCharisma>0?i.requiredCharisma+o.jobStatReqOffset:0,intelligence:0}}},workForCompany:e=>function(t){let n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];x.BM.checkSingularityAccess(e);const r=(0,j.m)("CompanyName").nsGetMember(e,t),o=!!n,i=a.J5.jobs[r];if(!i)throw x.BM.makeRuntimeErrorMsg(e,`You do not have a job at: '${r}'`);const s=a.J5.focus;return a.J5.startWork(new Z.t({singularity:!0,companyName:r})),o?(a.J5.startFocusing(),p.F.toPage(g.T3.Work)):s&&(a.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Began working at '${r}' with position '${i}'`)),!0},applyToCompany:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const r=(0,j.m)("CompanyName").nsGetMember(e,t),o=x.BM.string(e,"field",n);let i;switch(a.J5.location=(0,z.$)(r),o.toLowerCase()){case"software":i=a.J5.applyForSoftwareJob(!0);break;case"software consultant":i=a.J5.applyForSoftwareConsultantJob(!0);break;case"it":i=a.J5.applyForItJob(!0);break;case"security engineer":i=a.J5.applyForSecurityEngineerJob(!0);break;case"network engineer":i=a.J5.applyForNetworkEngineerJob(!0);break;case"business":i=a.J5.applyForBusinessJob(!0);break;case"business consultant":i=a.J5.applyForBusinessConsultantJob(!0);break;case"security":i=a.J5.applyForSecurityJob(!0);break;case"agent":i=a.J5.applyForAgentJob(!0);break;case"employee":i=a.J5.applyForEmployeeJob(!0);break;case"part-time employee":i=a.J5.applyForPartTimeEmployeeJob(!0);break;case"waiter":i=a.J5.applyForWaiterJob(!0);break;case"part-time waiter":i=a.J5.applyForPartTimeWaiterJob(!0);break;default:return x.BM.log(e,(()=>`Invalid job: '${o}'.`)),!1}return i?x.BM.log(e,(()=>`You were offered a new job at '${r}' with position '${a.J5.jobs[r]}'`)):x.BM.log(e,(()=>`You failed to get a new job/promotion at '${r}' in the '${o}' field.`)),i},quitJob:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);a.J5.quitJob(n)},getCompanyRep:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);return S.O[n].playerReputation},getCompanyFavor:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);return S.O[n].favor},getCompanyFavorGain:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("CompanyName").nsGetMember(e,t);return S.O[n].getFavorGain()},checkFactionInvitations:e=>()=>(x.BM.checkSingularityAccess(e),U.D.Counters.checkFactionInvitations=0,U.D.checkCounters(),a.J5.factionInvitations.slice()),joinFaction:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t);if(!a.J5.factionInvitations.includes(n))return x.BM.log(e,(()=>`You have not been invited by faction '${n}'`)),!1;const r=C.i[n];(0,o.Bj)(r);for(let e=0;e`Joined the '${n}' faction.`)),!0},workForFaction:e=>function(t,n){let o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];x.BM.checkSingularityAccess(e);const i=(0,j.m)("FactionName").nsGetMember(e,t),s=x.BM.string(e,"type",n),l=!!o,c=C.i[i];if(a.J5.gang&&c.name===a.J5.getGangFaction().name)return x.BM.log(e,(()=>`You can't work for '${i}' because youre managing a gang for it`)),!1;if(!a.J5.factions.includes(i))return x.BM.log(e,(()=>`You are not a member of '${i}'`)),!1;const u=a.J5.focus;switch(s.toLowerCase()){case"hacking":case"hacking contracts":case"hackingcontracts":return F.G[c.name].offerHackingWork?(a.J5.startWork(new D.s({singularity:!0,factionWorkType:r.FactionWorkType.hacking,faction:c.name})),l?(a.J5.startFocusing(),p.F.toPage(g.T3.Work)):u&&(a.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started carrying out hacking contracts for '${c.name}'`)),!0):(x.BM.log(e,(()=>`Faction '${c.name}' do not need help with hacking contracts.`)),!1);case"field":case"fieldwork":case"field work":return F.G[c.name].offerFieldWork?(a.J5.startWork(new D.s({singularity:!0,factionWorkType:r.FactionWorkType.field,faction:c.name})),l?(a.J5.startFocusing(),p.F.toPage(g.T3.Work)):u&&(a.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started carrying out field missions for '${c.name}'`)),!0):(x.BM.log(e,(()=>`Faction '${c.name}' do not need help with field missions.`)),!1);case"security":case"securitywork":case"security work":return F.G[c.name].offerSecurityWork?(a.J5.startWork(new D.s({singularity:!0,factionWorkType:r.FactionWorkType.security,faction:c.name})),l?(a.J5.startFocusing(),p.F.toPage(g.T3.Work)):u&&(a.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Started carrying out security work for '${c.name}'`)),!0):(x.BM.log(e,(()=>`Faction '${c.name}' do not need help with security work.`)),!1);default:return x.BM.log(e,(()=>`Invalid work type: '${s}`)),!1}},getFactionRep:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t);return C.i[n].playerReputation},getFactionFavor:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t);return C.i[n].favor},getFactionFavorGain:e=>t=>{x.BM.checkSingularityAccess(e);const n=(0,j.m)("FactionName").nsGetMember(e,t);return C.i[n].getFavorGain()},donateToFaction:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const o=(0,j.m)("FactionName").nsGetMember(e,t),i=x.BM.number(e,"amt",n),s=C.i[o];if(!a.J5.factions.includes(s.name))return x.BM.log(e,(()=>`You can't donate to '${o}' because you aren't a member`)),!1;if(a.J5.gang&&s.name===a.J5.getGangFaction().name)return x.BM.log(e,(()=>`You can't donate to '${o}' because youre managing a gang for it`)),!1;if(s.name===r.FactionName.ChurchOfTheMachineGod||s.name===r.FactionName.Bladeburners)return x.BM.log(e,(()=>`You can't donate to '${o}' because they do not accept donations`)),!1;if("number"!=typeof i||i<=0||isNaN(i))return x.BM.log(e,(()=>`Invalid donation amount: '${i}'.`)),!1;if(a.J5.money`You do not have enough money to donate ${(0,w.lb)(i)} to '${o}'`)),!1;if(s.favor<(0,I.Tv)())return x.BM.log(e,(()=>`You do not have enough favor to donate to this faction. Have ${s.favor}, need ${(0,I.Tv)()}`)),!1;const l=(0,I.HC)(i,s);return x.BM.log(e,(()=>`${(0,w.lb)(i)} donated to '${o}' for ${(0,w.$n)(l)} reputation`)),!0},createProgram:e=>function(t){let n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];x.BM.checkSingularityAccess(e);const r=x.BM.string(e,"programName",t).toLowerCase(),o=!!n,i=a.J5.focus,s=Object.values(k.B).find((e=>e.name.toLowerCase()===r));if(null==s)return x.BM.log(e,(()=>`The specified program does not exist: '${r}`)),!1;if(a.J5.hasProgram(s.name))return x.BM.log(e,(()=>`You already have the '${s.name}' program`)),!1;const l=s.create;return null===l?(x.BM.log(e,(()=>`You cannot create the '${s.name}' program`)),!1):l.req()?(a.J5.startWork(new O.m({programName:s.name,singularity:!0})),o?(a.J5.startFocusing(),p.F.toPage(g.T3.Work)):i&&(a.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),x.BM.log(e,(()=>`Began creating program: '${r}'`)),!0):(x.BM.log(e,(()=>`Hacking level is too low to create '${s.name}' (level ${l.level} req)`)),!1)},commitCrime:e=>(t,n)=>{x.BM.checkSingularityAccess(e);const o=x.BM.string(e,"crimeType",t),i=void 0===n||!!n,s=a.J5.focus;null!==a.J5.currentWork&&a.J5.finishWork(!0),a.J5.gotoLocation(r.LocationName.Slums);const l=(0,f.K)(o);if(null==l)throw x.BM.makeRuntimeErrorMsg(e,`Invalid crime: '${o}'`);x.BM.log(e,(()=>`Attempting to commit ${l.type}...`));const c=l.commit(1,e.workerScript);return i?(a.J5.startFocusing(),p.F.toPage(g.T3.Work)):s&&(a.J5.stopFocusing(),p.F.toPage(g.T3.Terminal)),c},getCrimeChance:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"crimeType",t),r=(0,f.K)(n);if(null==r)throw x.BM.makeRuntimeErrorMsg(e,`Invalid crime: '${n}'`);return r.successRate(a.J5)},getCrimeStats:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"crimeType",t),r=(0,f.K)(n);if(null==r)throw x.BM.makeRuntimeErrorMsg(e,`Invalid crime: '${n}'`);const o=(0,W.jI)(a.J5,r);return Object.assign({},r,{money:o.money,reputation:o.reputation,hacking_exp:o.hackExp,strength_exp:o.strExp,defense_exp:o.defExp,dexterity_exp:o.dexExp,agility_exp:o.agiExp,charisma_exp:o.chaExp,intelligence_exp:o.intExp})},getDarkwebPrograms:e=>()=>(x.BM.checkSingularityAccess(e),a.J5.hasTorRouter()?Object.values(d.L).map((e=>e.program)):(x.BM.log(e,(()=>"You do not have the TOR router.")),[])),getDarkwebProgramCost:e=>t=>{x.BM.checkSingularityAccess(e);const n=x.BM.string(e,"programName",t).toLowerCase();if(!a.J5.hasTorRouter())return x.BM.log(e,(()=>"You do not have the TOR router.")),-1;const r=Object.values(d.L).find((e=>e.program.toLowerCase()===n));if(null==r)throw x.BM.makeRuntimeErrorMsg(e,`No such exploit ('${n}') found on the darkweb! \nThis function is not case-sensitive. Did you perhaps forget .exe at the end?`);return a.J5.hasProgram(r.program)?(x.BM.log(e,(()=>`You already have the '${r.program}' program`)),0):r.price},b1tflum3:t=>(n,r)=>{x.BM.checkSingularityAccess(t);const o=x.BM.number(t,"nextBN",n),i=!!r&&(0,$.L6)(x.BM.string(t,"cbScript",r),t.workerScript.name);if(null===i)throw x.BM.makeRuntimeErrorMsg(t,`Could not resolve file path: ${r}`);(0,P.i)(!0,a.J5.bitNodeN,o),i&&setTimeout((()=>e(i)),500)},destroyW0r1dD43m0n:t=>(n,o)=>{x.BM.checkSingularityAccess(t);const i=x.BM.number(t,"nextBN",n);if(i>13||i<1||!Number.isInteger(i))throw new Error(`Invalid bitnode specified: ${n}`);const s=!!o&&(0,$.L6)(x.BM.string(t,"cbScript",o),t.workerScript.name);if(null===s)throw x.BM.makeRuntimeErrorMsg(t,`Could not resolve file path: ${o}`);const l=(0,v.WT)(y.r.WorldDaemon);if(!(l instanceof L.x))throw new Error("WorldDaemon was not a normal server. This is a bug contact dev.");!(a.J5.skills.hackinge(s)),500)):x.BM.log(t,(()=>"Requirements not met to destroy the world daemon"))},getCurrentWork:()=>()=>a.J5.currentWork?a.J5.currentWork.APICopy():null,exportGame:e=>()=>(x.BM.checkSingularityAccess(e),(0,G.uL)(),J.Ex.exportGame()),exportGameBonus:e=>()=>(x.BM.checkSingularityAccess(e),(0,G.B0)())};return(0,_.G)(t,{getAugmentationCost:{version:"2.2.0",replacement:"singularity.getAugmentationPrice and singularity.getAugmentationRepReq"}}),t}},12093:(e,t,n)=>{"use strict";n.d(t,{T:()=>p});var a=n(49173),r=n(73440),o=n(35100),i=n(50862),s=n(40811),l=n(57566),c=n(73328),u=n(9666),m=n(23122),f=n(96486),h=n(27889),d=n(58427);function p(){const e=function(e){if(10!==a.J5.bitNodeN&&!a.J5.sourceFileLvl(10))throw m.BM.makeRuntimeErrorMsg(e,"You do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10")},t=function(e,t){if(t>=a.J5.sleeves.length||t<0){const n=`Invalid sleeve number: ${t}`;throw m.BM.log(e,(()=>n)),m.BM.makeRuntimeErrorMsg(e,n)}},n={getNumSleeves:t=>()=>(e(t),a.J5.sleeves.length),setToIdle:n=>r=>{const o=m.BM.number(n,"sleeveNumber",r);e(n),t(n,o),a.J5.sleeves[o].stopWork()},setToShockRecovery:n=>r=>{const o=m.BM.number(n,"sleeveNumber",r);return e(n),t(n,o),a.J5.sleeves[o].shockRecovery()},setToSynchronize:n=>r=>{const o=m.BM.number(n,"sleeveNumber",r);return e(n),t(n,o),a.J5.sleeves[o].synchronize()},setToCommitCrime:n=>(r,i)=>{const s=m.BM.number(n,"sleeveNumber",r),l=m.BM.string(n,"crimeType",i);e(n),t(n,s);const c=(0,o.K)(l);return null!=c&&a.J5.sleeves[s].commitCrime(c.type)},setToUniversityCourse:n=>(r,o,i)=>{const s=m.BM.number(n,"sleeveNumber",r),l=m.BM.string(n,"universityName",o),c=m.BM.string(n,"className",i);return e(n),t(n,s),a.J5.sleeves[s].takeUniversityCourse(l,c)},travel:n=>(r,o)=>{const s=m.BM.number(n,"sleeveNumber",r),l=(0,i.m)("CityName").nsGetMember(n,o);return e(n),t(n,s),a.J5.sleeves[s].travel(l)},setToCompanyWork:n=>(r,o)=>{const s=m.BM.number(n,"sleeveNumber",r),l=(0,i.m)("CompanyName").nsGetMember(n,o);e(n),t(n,s);for(let e=0;e(r,o,s)=>{const l=m.BM.number(n,"sleeveNumber",r),u=(0,i.m)("FactionName").nsGetMember(n,o),f=m.BM.string(n,"workType",s);if(e(n),t(n,l),!d.i[u].isMember)throw m.BM.makeRuntimeErrorMsg(n,`Cannot work for faction ${u} without being a member.`);for(let e=0;e(r,o,i)=>{const s=m.BM.number(n,"sleeveNumber",r),l=m.BM.string(n,"gymName",o),c=m.BM.string(n,"stat",i);return e(n),t(n,s),a.J5.sleeves[s].workoutAtGym(l,c)},getTask:n=>r=>{const o=m.BM.number(n,"sleeveNumber",r);e(n),t(n,o);const i=a.J5.sleeves[o];return null===i.currentWork?null:i.currentWork.APICopy(i)},getSleeve:n=>r=>{const o=m.BM.number(n,"sleeveNumber",r);e(n),t(n,o);const i=a.J5.sleeves[o];return{hp:(0,f.cloneDeep)(i.hp),skills:(0,f.cloneDeep)(i.skills),exp:(0,f.cloneDeep)(i.exp),mults:(0,f.cloneDeep)(i.mults),city:i.city,shock:i.shock,sync:i.sync,memory:i.memory,storedCycles:i.storedCycles}},getSleeveAugmentations:n=>r=>{const o=m.BM.number(n,"sleeveNumber",r);e(n),t(n,o);const i=[];for(let e=0;er=>{const o=m.BM.number(n,"sleeveNumber",r);e(n),t(n,o);const i=a.J5.sleeves[o].findPurchasableAugs(),s=[];for(let e=0;e(o,s)=>{const l=m.BM.number(n,"sleeveNumber",o),c=(0,i.m)("AugmentationName").nsGetMember(n,s);if(e(n),t(n,l),a.J5.sleeves[l].shock>0)throw m.BM.makeRuntimeErrorMsg(n,`Sleeve shock too high: Sleeve ${l}`);const u=r.x[c];if(!u)throw m.BM.makeRuntimeErrorMsg(n,`Invalid aug: ${c}`);return a.J5.sleeves[l].tryBuyAugmentation(u)},getSleeveAugmentationPrice:t=>n=>{e(t);const a=(0,i.m)("AugmentationName").nsGetMember(t,n);return r.x[a].baseCost},getSleeveAugmentationRepReq:t=>n=>{e(t);const a=(0,i.m)("AugmentationName").nsGetMember(t,n),o=r.x[a];return(0,h.hV)(o).repCost},setToBladeburnerAction:n=>(r,o,i)=>{const s=m.BM.number(n,"sleeveNumber",r),c=m.BM.string(n,"action",o);let u;if(u=void 0===i?"------":m.BM.string(n,"contract",i),e(n),t(n,s),"Take on contracts"===c)for(let e=0;e{"use strict";n.d(t,{T:()=>f});var a=n(49173),r=n(33244),o=n(78573),i=n(93772),s=n(32864),l=n(27889),c=n(94542),u=n(58427),m=n(23122);function f(){function e(e){if(!a.J5.hasAugmentation(r.AugmentationName.StaneksGift1,!0))throw m.BM.makeRuntimeErrorMsg(e,"Stanek's Gift is not installed")}return{giftWidth:t=>()=>(e(t),o.y$.width()),giftHeight:t=>()=>(e(t),o.y$.height()),chargeFragment:t=>(n,a)=>{const r=m.BM.number(t,"rootX",n),i=m.BM.number(t,"rootY",a);e(t);const l=o.y$.findFragment(r,i);if(!l)throw m.BM.makeRuntimeErrorMsg(t,`No fragment with root (${r}, ${i}).`);if(l.fragment().type==s.E.Booster)throw m.BM.makeRuntimeErrorMsg(t,`The fragment with root (${r}, ${i}) is a Booster Fragment and thus cannot be charged.`);const c=o.y$.inBonus(),u=c?200:1e3;return c&&(o.y$.isBonusCharging=!0),m.BM.netscriptDelay(t,u).then((function(){return o.y$.charge(l,t.workerScript.scriptRef.threads),m.BM.log(t,(()=>`Charged fragment with ${t.workerScript.scriptRef.threads} threads.`)),Promise.resolve()}))},fragmentDefinitions:t=>()=>(e(t),m.BM.log(t,(()=>`Returned ${i.nB.length} fragments`)),i.nB.map((e=>e.copy()))),activeFragments:t=>()=>(e(t),m.BM.log(t,(()=>`Returned ${o.y$.fragments.length} fragments`)),o.y$.fragments.map((e=>({...e.copy(),...e.fragment().copy()})))),clearGift:t=>()=>{e(t),m.BM.log(t,(()=>"Cleared Stanek's Gift.")),o.y$.clear()},canPlaceFragment:t=>(n,a,r,s)=>{const l=m.BM.number(t,"rootX",n),c=m.BM.number(t,"rootY",a),u=m.BM.number(t,"rotation",r),f=m.BM.number(t,"fragmentId",s);e(t);const h=(0,i.pM)(f);if(!h)throw m.BM.makeRuntimeErrorMsg(t,`Invalid fragment id: ${f}`);return o.y$.canPlace(l,c,u,h)},placeFragment:t=>(n,a,r,s)=>{const l=m.BM.number(t,"rootX",n),c=m.BM.number(t,"rootY",a),u=m.BM.number(t,"rotation",r),f=m.BM.number(t,"fragmentId",s);e(t);const h=(0,i.pM)(f);if(!h)throw m.BM.makeRuntimeErrorMsg(t,`Invalid fragment id: ${f}`);return o.y$.place(l,c,u,h)},getFragment:t=>(n,a)=>{const r=m.BM.number(t,"rootX",n),i=m.BM.number(t,"rootY",a);e(t);const s=o.y$.findFragment(r,i);if(void 0!==s)return s.copy()},removeFragment:t=>(n,a)=>{const r=m.BM.number(t,"rootX",n),i=m.BM.number(t,"rootY",a);return e(t),o.y$.delete(r,i)},acceptGift:e=>()=>(a.J5.canAccessCotMG()&&0==a.J5.augmentations.filter((e=>e.name!==r.AugmentationName.NeuroFluxGovernor)).length&&0==a.J5.queuedAugmentations.filter((e=>e.name!==r.AugmentationName.NeuroFluxGovernor)).length&&((0,c.Bj)(u.i[r.FactionName.ChurchOfTheMachineGod]),a.J5.hasAugmentation(r.AugmentationName.StaneksGift1)||a.J5.queuedAugmentations.some((e=>e.name===r.AugmentationName.StaneksGift1))||((0,l.kk)({name:r.AugmentationName.StaneksGift1,level:1}),m.BM.log(e,(()=>`'${r.FactionName.ChurchOfTheMachineGod}' joined and '${r.AugmentationName.StaneksGift1}' installed.`)))),u.i[r.FactionName.ChurchOfTheMachineGod].isMember&&a.J5.hasAugmentation(r.AugmentationName.StaneksGift1,!0))}}},67828:(e,t,n)=>{"use strict";n.d(t,{V:()=>f});var a=n(49173),r=n(82427),o=n(35102),i=n(38456),s=n(33244),l=n(4605),c=n(23122),u=n(96486),m=n(83190);function f(){const e=function(e){if(!a.J5.hasWseAccount)throw c.BM.makeRuntimeErrorMsg(e,`You don't have WSE Access! Cannot use ${e.function}()`);if(!a.J5.hasTixApiAccess)throw c.BM.makeRuntimeErrorMsg(e,`You don't have TIX API Access! Cannot use ${e.function}()`)},t=function(e,t){const n=o.tD[t];if(null==n)throw c.BM.makeRuntimeErrorMsg(e,`Invalid stock symbol: '${t}'`);return n};return{getConstants:()=>()=>(0,u.cloneDeep)(m.M),hasWSEAccount:()=>()=>a.J5.hasWseAccount,hasTIXAPIAccess:()=>()=>a.J5.hasTixApiAccess,has4SData:()=>()=>a.J5.has4SData,has4SDataTIXAPI:()=>()=>a.J5.has4SDataTixApi,getSymbols:t=>()=>(e(t),Object.values(s.StockSymbol)),getPrice:n=>a=>{const r=c.BM.string(n,"symbol",a);return e(n),t(n,r).price},getOrganization:n=>a=>{const r=c.BM.string(n,"symbol",a);return e(n),t(n,r).name},getAskPrice:n=>a=>{const r=c.BM.string(n,"symbol",a);return e(n),t(n,r).getAskPrice()},getBidPrice:n=>a=>{const r=c.BM.string(n,"symbol",a);return e(n),t(n,r).getBidPrice()},getPosition:t=>n=>{const a=c.BM.string(t,"symbol",n);e(t);const r=o.tD[a];if(null==r)throw c.BM.makeRuntimeErrorMsg(t,`Invalid stock symbol: ${a}`);return[r.playerShares,r.playerAvgPx,r.playerShortShares,r.playerAvgShortPx]},getMaxShares:n=>a=>{const r=c.BM.string(n,"symbol",a);return e(n),t(n,r).maxShares},getPurchaseCost:n=>(a,r,o)=>{const l=c.BM.string(n,"symbol",a);let u=c.BM.number(n,"shares",r);const m=c.BM.string(n,"posType",o);e(n);const f=t(n,l);let h;u=Math.round(u);const d=m.toLowerCase();if(d.includes("l"))h=s.PositionType.Long;else{if(!d.includes("s"))return 1/0;h=s.PositionType.Short}const p=(0,i.Cb)(f,u,h);return null==p?1/0:p},getSaleGain:n=>(a,r,o)=>{const l=c.BM.string(n,"symbol",a);let u=c.BM.number(n,"shares",r);const m=c.BM.string(n,"posType",o);e(n);const f=t(n,l);let h;u=Math.round(u);const d=m.toLowerCase();if(d.includes("l"))h=s.PositionType.Long;else{if(!d.includes("s"))return 0;h=s.PositionType.Short}const p=(0,i.WZ)(f,u,h);return null==p?0:p},buyStock:n=>(a,o)=>{const i=c.BM.string(n,"symbol",a),s=c.BM.number(n,"shares",o);e(n);const l=t(n,i);return(0,r.TR)(l,s,n,{})?l.getAskPrice():0},sellStock:n=>(a,o)=>{const i=c.BM.string(n,"symbol",a),s=c.BM.number(n,"shares",o);e(n);const l=t(n,i);return(0,r.Ne)(l,s,n,{})?l.getBidPrice():0},buyShort:n=>(o,i)=>{const s=c.BM.string(n,"symbol",o),l=c.BM.number(n,"shares",i);if(e(n),8!==a.J5.bitNodeN&&a.J5.sourceFileLvl(8)<=1)throw c.BM.makeRuntimeErrorMsg(n,"You must either be in BitNode-8 or you must have Source-File 8 Level 2.");const u=t(n,s);return(0,r.BN)(u,l,n,{})?u.getBidPrice():0},sellShort:n=>(o,i)=>{const s=c.BM.string(n,"symbol",o),l=c.BM.number(n,"shares",i);if(e(n),8!==a.J5.bitNodeN&&a.J5.sourceFileLvl(8)<=1)throw c.BM.makeRuntimeErrorMsg(n,"You must either be in BitNode-8 or you must have Source-File 8 Level 2.");const u=t(n,s);return(0,r.no)(u,l,n,{})?u.getAskPrice():0},placeOrder:n=>(r,i,l,u,m)=>{const f=c.BM.string(n,"symbol",r),h=c.BM.number(n,"shares",i),d=c.BM.number(n,"price",l),p=c.BM.string(n,"type",u),g=c.BM.string(n,"pos",m);if(e(n),8!==a.J5.bitNodeN&&a.J5.sourceFileLvl(8)<=2)throw c.BM.makeRuntimeErrorMsg(n,"You must either be in BitNode-8 or you must have Source-File 8 Level 3.");const y=t(n,f);let b,v;const k=p.toLowerCase();if(k.includes("limit")&&k.includes("buy"))b=s.OrderType.LimitBuy;else if(k.includes("limit")&&k.includes("sell"))b=s.OrderType.LimitSell;else if(k.includes("stop")&&k.includes("buy"))b=s.OrderType.StopBuy;else{if(!k.includes("stop")||!k.includes("sell"))throw c.BM.makeRuntimeErrorMsg(n,`Invalid order type: ${p}`);b=s.OrderType.StopSell}const w=g.toLowerCase();if(w.includes("l"))v=s.PositionType.Long;else{if(!w.includes("s"))throw c.BM.makeRuntimeErrorMsg(n,`Invalid position type: ${g}`);v=s.PositionType.Short}return(0,o.s1)(y,h,d,b,v,n)},cancelOrder:n=>(r,i,l,u,m)=>{const f=c.BM.string(n,"symbol",r),h=c.BM.number(n,"shares",i),d=c.BM.number(n,"price",l),p=c.BM.string(n,"type",u),g=c.BM.string(n,"pos",m);if(e(n),8!==a.J5.bitNodeN&&a.J5.sourceFileLvl(8)<=2)throw c.BM.makeRuntimeErrorMsg(n,"You must either be in BitNode-8 or you must have Source-File 8 Level 3.");const y=t(n,f);if(isNaN(h)||isNaN(d))throw c.BM.makeRuntimeErrorMsg(n,`Invalid shares or price. Must be numeric. shares=${h}, price=${d}`);let b,v;const k=p.toLowerCase();if(k.includes("limit")&&k.includes("buy"))b=s.OrderType.LimitBuy;else if(k.includes("limit")&&k.includes("sell"))b=s.OrderType.LimitSell;else if(k.includes("stop")&&k.includes("buy"))b=s.OrderType.StopBuy;else{if(!k.includes("stop")||!k.includes("sell"))throw c.BM.makeRuntimeErrorMsg(n,`Invalid order type: ${p}`);b=s.OrderType.StopSell}const w=g.toLowerCase();if(w.includes("l"))v=s.PositionType.Long;else{if(!w.includes("s"))throw c.BM.makeRuntimeErrorMsg(n,`Invalid position type: ${g}`);v=s.PositionType.Short}const E={stock:y,shares:h,price:d,type:b,pos:v};return(0,o.sl)(E,n)},getOrders:t=>()=>{if(e(t),8!==a.J5.bitNodeN&&a.J5.sourceFileLvl(8)<=2)throw c.BM.makeRuntimeErrorMsg(t,"You must either be in BitNode-8 or have Source-File 8 Level 3.");const n={},r=o.xO.Orders;for(const e of Object.keys(r)){const t=r[e];if(t.constructor===Array&&t.length>0){n[e]=[];for(let a=0;an=>{const r=c.BM.string(e,"symbol",n);if(!a.J5.has4SDataTixApi)throw c.BM.makeRuntimeErrorMsg(e,"You don't have 4S Market Data TIX API Access!");return t(e,r).mv/100},getForecast:e=>n=>{const r=c.BM.string(e,"symbol",n);if(!a.J5.has4SDataTixApi)throw c.BM.makeRuntimeErrorMsg(e,"You don't have 4S Market Data TIX API Access!");const o=t(e,r);let i=50;return o.b?i+=o.otlkMag:i-=o.otlkMag,i/100},purchase4SMarketData:e=>()=>a.J5.has4SData?(c.BM.log(e,(()=>"Already purchased 4S Market Data.")),!0):a.J5.money<(0,l.yG)()?(c.BM.log(e,(()=>"Not enough money to purchase 4S Market Data.")),!1):(a.J5.has4SData=!0,a.J5.loseMoney((0,l.yG)(),"stock"),c.BM.log(e,(()=>"Purchased 4S Market Data")),!0),purchase4SMarketDataTixApi:t=>()=>(e(t),a.J5.has4SDataTixApi?(c.BM.log(t,(()=>"Already purchased 4S Market Data TIX API")),!0):a.J5.money<(0,l.ND)()?(c.BM.log(t,(()=>"Not enough money to purchase 4S Market Data TIX API")),!1):(a.J5.has4SDataTixApi=!0,a.J5.loseMoney((0,l.ND)(),"stock"),c.BM.log(t,(()=>"Purchased 4S Market Data TIX API")),!0)),purchaseWseAccount:e=>()=>a.J5.hasWseAccount?(c.BM.log(e,(()=>"Already purchased WSE Account")),!0):a.J5.money<(0,l.FL)()?(c.BM.log(e,(()=>"Not enough money to purchase WSE Account Access")),!1):(a.J5.hasWseAccount=!0,(0,o.T_)(),a.J5.loseMoney((0,l.FL)(),"stock"),c.BM.log(e,(()=>"Purchased WSE Account Access")),!0),purchaseTixApi:e=>()=>a.J5.hasTixApiAccess?(c.BM.log(e,(()=>"Already purchased TIX API")),!0):a.J5.money<(0,l.Zh)()?(c.BM.log(e,(()=>"Not enough money to purchase TIX API Access")),!1):(a.J5.hasTixApiAccess=!0,a.J5.loseMoney((0,l.Zh)(),"stock"),c.BM.log(e,(()=>"Purchased TIX API")),!0)}}},32730:(e,t,n)=>{"use strict";n.d(t,{z:()=>m});var a=n(51087),r=n(10425),o=n(18746),i=n(15975),s=n(72938),l=n(90936),c=n(65065),u=n(23122);function m(){return{windowSize:()=>()=>[window.innerWidth,window.innerHeight],getTheme:()=>()=>({...a.Z.theme}),getStyles:()=>()=>({...a.Z.styles}),setTheme:e=>t=>{(0,u.Z6)(e,"newTheme",t,{});const n=/^(#)((?:[A-Fa-f0-9]{2}){3,4}|(?:[A-Fa-f0-9]{3}))$/,o={...a.Z.theme},i=[];for(const e of Object.keys(t))o[e]?n.test(t[e]??"")?o[e]=t[e]:i.push(`Invalid color "${e}": ${t[e]}`):i.push(`Invalid key "${e}"`);0===i.length?(Object.assign(a.Z.theme,o),r.bS.emit(),u.BM.log(e,(()=>"Successfully set theme"))):u.BM.log(e,(()=>`Failed to set theme. Errors: ${i.join(", ")}`))},setStyles:e=>t=>{(0,u.Z6)(e,"newStyles",t,{});const n={...a.Z.styles},o=[];for(const e of Object.keys(t))n[e]?n[e]=t[e]:o.push(`Invalid key "${e}"`);0===o.length?(Object.assign(a.Z.styles,n),r.bS.emit(),u.BM.log(e,(()=>"Successfully set styles"))):u.BM.log(e,(()=>`Failed to set styles. Errors: ${o.join(", ")}`))},resetTheme:e=>()=>{a.Z.theme={...o.u},r.bS.emit(),u.BM.log(e,(()=>"Reinitialized theme to default"))},resetStyles:e=>()=>{a.Z.styles={...i.j},r.bS.emit(),u.BM.log(e,(()=>"Reinitialized styles to default"))},getGameInfo:()=>()=>({version:s.t.VersionString,commit:(0,l.v)(),platform:navigator.userAgent.toLowerCase().includes(" electron/")?"Steam":"Browser"}),clearTerminal:e=>()=>{u.BM.log(e,(()=>"Clearing terminal")),c.o.clear()}}}},32938:(e,t,n)=>{"use strict";n.d(t,{l:()=>r});const a=new(n(46277).N)("",(()=>{}));function r(e){if(null==e)return null;if(!((t=e)&&"object"==typeof t&&Object.hasOwn(t,"properties")&&Object.hasOwn(t,"getter")&&Object.hasOwn(t,"setter")&&Object.hasOwn(t,"proto")))return e;var t;if(Object.hasOwn(e,"class")&&"Array"===e.class){const t=[],n=a.getProperty(e,"length");if("number"==typeof n)for(let o=0;o{"use strict";n.d(t,{M:()=>m});var a=n(49667),r=n(63230),o=n(28274),i=n(69917),s=n(27757);const l=e=>import(e),c=new Map,u=new FinalizationRegistry((e=>{var t;void 0===(null===(t=c.get(e))||void 0===t?void 0:t.deref())&&c.delete(e)}));function m(e,t){return e.mod||(e.mod=h(e,t,[])),e.mod.module}function f(e,t){if(!e.mod)throw new Error(`addDependencyInfo called without a LoadedModule (${e.filename})`);if(t.length){e.dependents.add(t[t.length-1]);for(const n of t)n.dependencies.set(e.mod.url,e)}e.dependencies.set(e.mod.url,e)}function h(e,t,n){var m;if(e.mod)return f(e,n),e.mod;const d=(0,r.Qc)(e.code,{sourceType:"module",ecmaVersion:"latest",ranges:!0}),p=[];a.lC(d,{ImportDeclaration(e){e.source&&p.push({filename:e.source.value,start:e.source.range[0]+1,end:e.source.range[1]-1})},ExportNamedDeclaration(e){e.source&&p.push({filename:e.source.value,start:e.source.range[0]+1,end:e.source.range[1]-1})},ExportAllDeclaration(e){e.source&&p.push({filename:e.source.value,start:e.source.range[0]+1,end:e.source.range[1]-1})}}),p.sort(((e,t)=>t.start-e.start));let g=e.code;for(const a of p){const r=(0,i.L6)(a.filename,s.Jz,".js");if(!r)throw new Error(`Failed to parse import: ${a.filename}`);const o=t.get(r);o&&(n.push(e),o.mod=h(o,t,n),n.pop(),g=g.substring(0,a.start)+o.mod.url+g.substring(a.end))}const y=null===(m=c.get(g))||void 0===m?void 0:m.deref();if(y)e.mod=y;else{const t=g+`\n//# sourceURL=${e.server}/${e.filename}`,n=URL.createObjectURL(new Blob([t],{type:"text/javascript"})),a=l(n).catch((t=>{throw e.invalidateModule(),console.error(`Error occurred while attempting to compile ${e.filename} on ${e.server}:`),console.error(t),t}));URL.revokeObjectURL(n),e.mod=new o.w(n,a),c.set(g,new WeakRef(e.mod)),u.register(e.mod,g)}return f(e,n),e.mod}},24302:(e,t,n)=>{"use strict";n.d(t,{KV:()=>h,TR:()=>c,h:()=>m,i5:()=>f,vN:()=>u,y6:()=>l});var a=n(51087),r=n(7872);const o="NULL PORT DATA";function i(e){let t=r.s9.get(e);return t||(t=new s,r.s9.set(e,t),t)}class s{data=[];resolvers=[]}function l(e){return{write:t=>c(e,t),tryWrite:t=>u(e,t),read:()=>m(e),peek:()=>f(e),nextWrite:()=>function(e){const{resolvers:t}=i(e);return new Promise((e=>t.push(e)))}(e),full:()=>function(e){const t=r.s9.get(e);return!!t&&t.data.length>=a.Z.MaxPortCapacity}(e),empty:()=>function(e){const t=r.s9.get(e);return!t||0===t.data.length}(e),clear:()=>h(e)}}function c(e,t){if("number"!=typeof t&&"string"!=typeof t)throw new Error(`port.write: Tried to write type ${typeof t}. Only string and number types may be written to ports.`);const{data:n,resolvers:r}=i(e);for(n.push(t);r.length>0;){var o;null===(o=r.pop())||void 0===o||o()}return n.length>a.Z.MaxPortCapacity?n.shift():null}function u(e,t){if("number"!=typeof t&&"string"!=typeof t)throw new Error(`port.write: Tried to write type ${typeof t}. Only string and number types may be written to ports.`);const{data:n,resolvers:r}=i(e);if(n.length>=a.Z.MaxPortCapacity)return!1;for(n.push(t);r.length>0;){var o;null===(o=r.pop())||void 0===o||o()}return!0}function m(e){const t=r.s9.get(e);if(!t||!t.data.length)return o;const n=t.data.shift();return t.data.length||t.resolvers.length||r.s9.delete(e),n}function f(e){const t=r.s9.get(e);return t&&t.data.length?t.data[0]:o}function h(e){const t=r.s9.get(e);t&&(t.resolvers.length||r.s9.delete(e),t.data.length=0)}},7872:(e,t,n)=>{"use strict";n.d(t,{JP:()=>O,K7:()=>I,Yf:()=>B,Zh:()=>T,dU:()=>F,s9:()=>A});var a=n(21951),r=n(60520),o=n(40185),i=n(75350),s=n(46570),l=n(72938),c=n(46277),u=n(96393),m=n(50663),f=n(19918),h=n(10364),d=n(97467),p=n(51087),g=n(90312),y=n(39463),b=n(22115),v=n(72326),k=n(99953),w=n(63230),E=n(49667),S=n(91371),C=n(65065),x=n(23122),N=n(69917),M=n(27757);const A=new Map;function T(){for(const e of i.R.values())(0,a.i)(e);A.clear()}async function L(e){const t=e.getServer().scripts,n=e.getScript();if(!n)throw"workerScript had no associated script. This is a bug.";const a=e.env.vars;if(!a)throw`${n.filename} cannot be run because the NS object hasn't been constructed properly.`;const r=await(0,m.M)(n,t);if(!r)throw`${n.filename} cannot be run because the script module won't load`;if("function"!=typeof r.main)throw`${n.filename} cannot be run because it does not have a main function.`;await r.main(a)}async function R(e){const t=e.code;let n,a,r;try{const n=function(e,t){const n=(0,w.Qc)(e,{ecmaVersion:9,allowReserved:!0,sourceType:"module"}),a=t.getServer();if(null==a)throw new Error("Failed to find underlying Server object for script");let r="",o=!1;if((0,E.lC)(n,{ImportDeclaration:e=>{o=!0;const t=(0,N.L6)(e.source.value,M.Jz,".script");if(!t)throw new Error("'Import' failed due to invalid path: "+t);const n=function(e){return a.scripts.get(e)??null}(t);if(!n)throw new Error("'Import' failed due to script not found: "+t);const i=(0,w.Qc)(n.code,{ecmaVersion:9,allowReserved:!0,sourceType:"module"});if(1===e.specifiers.length&&"ImportNamespaceSpecifier"===e.specifiers[0].type){const t=e.specifiers[0].local.name,n=[],a=[];(0,E.lC)(i,{FunctionDeclaration:e=>{n.push(e.id.name),a.push(e)}}),r+=`var ${t};\n(function (namespace) {\n`,a.forEach((e=>{r+=(0,g.R_)(e),r+="\n"})),n.forEach((e=>{r+="namespace."+e+" = "+e,r+="\n"})),r+=`})(${t} || (" + namespace + " = {}));\n`}else{const t=[];e.specifiers.forEach((e=>{t.push(e.local.name)}));const n=[];(0,E.lC)(i,{FunctionDeclaration:e=>{t.includes(e.id.name)&&n.push(e)}}),n.forEach((e=>{r+=(0,g.R_)(e),r+="\n"}))}}}),!o)return{code:e,lineOffset:0};let i=0;if("Program"!==n.type||null==n.body)throw new Error("Code could not be properly parsed");for(let e=n.body.length-1;e>=0;--e)"ImportDeclaration"===n.body[e].type&&(n.body.splice(e,1),++i);const s=(r.match(/\n/g)||[]).length-i;e=(0,g.R_)(n);return{code:e=r+e,lineOffset:s}}(t,e);a=n.code,r=n.lineOffset}catch(t){throw`Error processing Imports in ${e.name}@${e.hostname}:\n\n${t}`}const o=(0,u.q)(e);let i;try{i=new c.N(a,(function e(t,a){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o;for(const[o,i]of Object.entries(r))if("function"==typeof i){const e=async function(){try{for(var e=arguments.length,a=new Array(e),r=0;rt.pseudoToNative(e))));return n(t.nativeToPseudo(o))}catch(e){n=e}};t.setProperty(a,o,t.createAsyncFunction(e))}else Array.isArray(i)||"object"!=typeof i?t.setProperty(a,o,t.nativeToPseudo(i)):(t.setProperty(a,o,t.nativeToPseudo({})),e(t,a.properties[o],r[o]))}),r)}catch(t){throw`Syntax ERROR in ${e.name}@${e.hostname}:\n\n${String(t)}`}let s=!0;for(;s;){if(n)throw n;if(e.env.stopFlag)return;for(let e=0;s&&e<3;e++)s=i.step();s&&await new Promise((e=>setTimeout(e,p.Z.CodeInstructionRunTime)))}}function F(e,t,n){return t.hostname!==e.server?(console.error(`Tried to launch a worker script on a different server ${t.hostname} than the runningScript's server ${e.server}`),0):function(e,t,n){const l=(0,k.S)(e.ramUsage*e.threads),c=t.maxRam-t.ramUsed;if(l>c+.001)return _(`Not enough RAM to run script ${e.filename} with args ${(0,v.N)(e.args)}, needed ${(0,b.$1)(l)} but only have ${(0,b.$1)(c)} free\nIf you are seeing this on startup, likely causes are that the autoexec script is too big to fit in RAM, or it took up too much space and other previously running scripts couldn't fit on home.\nOtherwise, this can also occur if you have attempted to launch a script from a tail window with insufficient RAM.`),!1;const m=(0,s.L)();if(-1===m)return _("Failed to start script because could not find available PID. This is most because you have too many scripts running."),!1;t.updateRamUsed((0,k.S)(t.ramUsed+l));const f=new o.h(e,m,u.q);return i.R.set(m,f),(f.name.endsWith(".js")?L:R)(f).then((function(){n&&!n.env.stopFlag&&(n.scriptRef.onlineExpGained+=e.onlineExpGained,n.scriptRef.onlineMoneyMade+=e.onlineMoneyMade),(0,a.i)(f),f.log("",(()=>"Script finished running"))})).catch((function(e){(0,x.ac)(e,f),f.log("",(()=>e instanceof r.w?"Script killed.":"Script crashed due to an error.")),(0,a.i)(f)})),!0}(e,t,n)?(t.runScript(e),e.pid):0}function I(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const t=e*l.t.MilliPerCycle/1e3;for(const e of i.R.values())e.scriptRef.onlineRunningTime+=t}function _(e){setTimeout((()=>(0,y.X)(e)),0)}function P(e){const t=(0,S.$4)(p.Z.AutoexecScript);if(0===t.length)return null;const n=String(t[0]),a=(0,N.L6)(n);if(!a)return _(`While running autoexec script:\n"${n}" is invalid for a script name (maybe missing suffix?)`),null;const r=e.scripts.get(a);if(!r)return _(`While running autoexec script:\n"${n}" does not exist!`),null;const o=r.getRamUsage(e.scripts);if(null===o)return _(`While running autoexec script:\n"${n}" has errors!`),null;t.shift();const i=new f.X(r,o,t);return i.temporary=!0,i}function B(){const e=window.location.href.toLowerCase().includes("?noscripts");e&&(C.o.warn("Skipped loading player scripts during startup"),console.info("Skipping the load of any scripts during startup"));for(const t of(0,d.XX)()){t.ramUsed=0;const n=t.savedScripts;if(t.savedScripts=void 0,!e&&n){if("home"===t.hostname){const e=P(t);e&&n.unshift(e)}for(const e of n)F(e,t),(0,h.F9)(e)}}}function O(e,t,n,a,r,o){const i=t.scripts.get(n);if(!i)return r.log(e,(()=>`Could not find script '${n}' on '${t.hostname}'`)),0;if(o.preventDuplicates&&null!==(0,x.bZ)({workerScript:r,function:"runScriptFromScript",functionPath:"internal.runScriptFromScript"},n,t.hostname,a))return r.log(e,(()=>`'${n}' is already running on '${t.hostname}'`)),0;const s=o.ramOverride??i.getRamUsage(t.scripts);if(!s)return r.log(e,(()=>`Ram usage could not be calculated for ${n}`)),0;if(!t.hasAdminRights)return r.log(e,(()=>`You do not have root access on '${t.hostname}'`)),0;if(s*o.threads>t.maxRam-t.ramUsed+.001)return r.log(e,(()=>`Cannot run script '${n}' (t=${o.threads}) on '${t.hostname}' because there is not enough available RAM!`)),0;r.log(e,(()=>`'${n}' on '${t.hostname}' with ${o.threads} threads and args: ${(0,v.N)(a)}.`));const l=new f.X(i,s,a);return l.threads=o.threads,l.temporary=o.temporary,F(l,t,r)}},27178:(e,t,n)=>{"use strict";n.d(t,{HX:()=>o,J6:()=>i});var a=n(21211);let r=1;function o(e){return r+=e,()=>r-=e}function i(){return(0,a.J)(r)}},21211:(e,t,n)=>{"use strict";function a(e){const t=1+Math.log(e)/25;return isNaN(t)||!isFinite(t)?1:t}n.d(t,{J:()=>a})},37042:(e,t,n)=>{"use strict";function*a(e){yield*e.scripts,yield*e.textFiles}n.d(t,{F:()=>a})},61835:(e,t,n)=>{"use strict";n.d(t,{G:()=>r,h:()=>o});var a=n(64962);function r(e){return e.endsWith(".cct")}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const n=(0,a.Iw)(e,t);return n&&r(n)?n:null}},27757:(e,t,n)=>{"use strict";n.d(t,{H0:()=>h,II:()=>i,Jz:()=>o,O5:()=>m,RL:()=>f,Z1:()=>p,cx:()=>g,iL:()=>d,nD:()=>s});var a=n(37042),r=n(96486);const o="",i=`[^${(0,r.escapeRegExp)(["/","*","?","[","]","!","\\","~","|","#",'"',"'"," "].join(""))}]`,s=`^(?(?:${i}+\\/)*)`,l=new RegExp(s+"$");function c(e){return l.test(e)}const u=/(?:^|\/)\.{1,2}\//;function m(e){return!u.test(e)}function f(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o;return e.startsWith("/")&&(t=o,e=e.substring(1)),e&&!e.endsWith("/")&&(e+="/"),c(e)?h(e,t):null}function h(e,t){if(!e)return t;const n=e.split(/(?<=\/)/),a=t.split(/(?<=\/)/).filter(Boolean);for(;n.length;){const e=n.shift();switch(e){case"./":break;case"../":if(!a.length)return null;a.pop();break;default:a.push(e)}}return a.join("")}function d(e,t){for(const n of t.scripts.keys())if(n.startsWith(e))return!0;for(const n of t.textFiles.keys())if(n.startsWith(e))return!0;return!1}function p(e){const t=e.indexOf("/");return-1===t?null:e.substring(0,t+1)}function g(e){const t=new Set([o]);function n(e){const a=e.lastIndexOf("/",e.length-2);if(-1===a)return;const r=e.substring(0,a+1);t.has(r)||(t.add(r),n(r))}for(const[t]of(0,a.F)(e))n(t);return t}if(!c(o)||!m(o))throw new Error("Root failed to validate")},64962:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>u,Tp:()=>s,Vf:()=>i,bW:()=>f,uP:()=>l,ws:()=>h});var a=n(27757);const r=`(?${a.II}+\\.${a.II}+)$`,o=new RegExp(a.nD+r);function i(e){return o.test(e)}function s(e){if(i(e)&&(0,a.O5)(e))return e;throw new Error(`${e} failed to validate as a FilePath.`)}function l(e){const t=e.lastIndexOf("/")+1;return e.substring(t)}function c(e){const t=o.exec(e);return t?t.groups:null}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if((0,a.O5)(e))return e.startsWith("/")&&(e=e.substring(1)),i(e)?e:null;t=m(t);const n=c(e);if(!n)return null;const r=(0,a.H0)(n.directory,t);return null===r?null:f(r,n.file)}function m(e){return e.replace(/[^/]+\.[^/]+$/,"")}function f(e,t){return e+t}function h(e,t){return t.startsWith(e)?t.substring(e.length):null}},20706:(e,t,n)=>{"use strict";n.d(t,{m:()=>o});var a=n(27757),r=n(37042);function o(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.Jz;const o=new Map;e.startsWith("/")&&(n=a.Jz,e=e.substring(1)),e=n+e;const i=new Set(["/","\\","^","$",".","|","+","(",")","[","{"]);e=e.split("").map((e=>"*"===e?".*":"?"===e?".":i.has(e)?"\\"+e:e)).join("");const s=new RegExp(`^${e}$`);for(const[e,n]of(0,r.F)(t))s.test(e)&&o.set(e,n);return o}},84555:(e,t,n)=>{"use strict";n.d(t,{LL:()=>o,P1:()=>i});var a=n(27757),r=n(64962);function o(e){if(e.endsWith(".exe"))return!0;const t=e.substring(e.indexOf("."));return/^\.exe-[0-9]{1,2}\.[0-9]{2}%-INC$/.test(t)}function i(e){if((0,r.Vf)(e)&&o(e)&&(0,a.O5)(e))return e;throw new Error(`${e} failed to validate as a ProgramFilePath.`)}},69917:(e,t,n)=>{"use strict";n.d(t,{L6:()=>o,UH:()=>i,a0:()=>r});var a=n(64962);const r=[".js",".script"];function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0;n&&!e.endsWith(n)&&(e+=n);const r=(0,a.Iw)(e,t);return r&&i(r)?r:null}function i(e){return r.some((t=>e.endsWith(t)))}},48897:(e,t,n)=>{"use strict";n.d(t,{T:()=>o,e:()=>r});var a=n(64962);function r(e){return e.endsWith(".txt")}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const n=(0,a.Iw)(e,t);return n&&r(n)?n:null}},28562:(e,t,n)=>{"use strict";n.d(t,{k:()=>o});var a=n(72938),r=n(49173);const o=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const t=a.t.EntropyEffect**e;return{hacking_chance:r.J5.mults.hacking_chance*t,hacking_speed:r.J5.mults.hacking_speed*t,hacking_money:r.J5.mults.hacking_money*t,hacking_grow:r.J5.mults.hacking_grow*t,hacking:r.J5.mults.hacking*t,strength:r.J5.mults.strength*t,defense:r.J5.mults.defense*t,dexterity:r.J5.mults.dexterity*t,agility:r.J5.mults.agility*t,charisma:r.J5.mults.charisma*t,hacking_exp:r.J5.mults.hacking_exp*t,strength_exp:r.J5.mults.strength_exp*t,defense_exp:r.J5.mults.defense_exp*t,dexterity_exp:r.J5.mults.dexterity_exp*t,agility_exp:r.J5.mults.agility_exp*t,charisma_exp:r.J5.mults.charisma_exp*t,company_rep:r.J5.mults.company_rep*t,faction_rep:r.J5.mults.faction_rep*t,crime_money:r.J5.mults.crime_money*t,crime_success:r.J5.mults.crime_success*t,hacknet_node_money:r.J5.mults.hacknet_node_money*t,hacknet_node_purchase_cost:r.J5.mults.hacknet_node_purchase_cost*t,hacknet_node_ram_cost:r.J5.mults.hacknet_node_ram_cost*t,hacknet_node_core_cost:r.J5.mults.hacknet_node_core_cost*t,hacknet_node_level_cost:r.J5.mults.hacknet_node_level_cost*t,work_money:r.J5.mults.work_money*t,bladeburner_max_stamina:r.J5.mults.bladeburner_max_stamina*t,bladeburner_stamina_gain:r.J5.mults.bladeburner_stamina_gain*t,bladeburner_analysis:r.J5.mults.bladeburner_analysis*t,bladeburner_success_chance:r.J5.mults.bladeburner_success_chance*t}}},51278:(e,t,n)=>{"use strict";n.d(t,{W:()=>o});var a=n(96486),r=n(72938);class o{constructor(e){this.augmentation=e}get cost(){return this.augmentation.baseCost*r.t.AugmentationGraftingCostMult}get time(){const e=Math.max((0,a.sum)(Object.values(this.augmentation.mults).filter((e=>1!==e))),1),t=Math.log2(e);return(r.t.AugmentationGraftingTimeBase*t+r.t.MillisecondsPerHalfHour)/2}}},16771:(e,t,n)=>{"use strict";n.d(t,{Kg:()=>l,hI:()=>c,i1:()=>u});var a=n(49173),r=n(33244),o=n(73440),i=n(46085),s=n(21623);const l=()=>{const e=[];for(const[t,n]of(0,s.m0)(o.x)){if(a.J5.factions.includes(r.FactionName.Bladeburners)){if(n.isSpecial&&!n.factions.includes(r.FactionName.Bladeburners))continue}else if(n.isSpecial)continue;e.push(t)}return e.filter((e=>!a.J5.hasAugmentation(e)))},c=()=>1+((0,i.f)(a.J5.skills.intelligence,3)-1)/3,u=e=>e.time/c()},72390:(e,t,n)=>{"use strict";n.d(t,{M:()=>R,q:()=>_});var a=n(49173),r=n(33244),o=n(67294),i=n(90912),s=n(68426),l=n(98168),c=n(81138),u=n(78016),m=n(56798),f=n(30120),h=n(28881),d=n(97212),p=n(95309),g=n(64315),y=n(73440),b=n(72938),v=n(94542),k=n(56412),w=n(51087),E=n(52947),S=n(24815),C=n(54538),x=n(72360),N=n(22115),M=n(49802),A=n(51278),T=n(16771),L=n(88775);const R=()=>{const e={};for(const t of Object.values(y.x)){const n=t.name,a=new A.W(t);e[n]=a}return e},F=e=>!(a.J5.money{const t=e.aug;return o.createElement(c.Z,{color:w.Z.theme.money},o.createElement("b",null,"Pre-Requisites:"),o.createElement("br",null),t.prereqs.map((e=>o.createElement("span",{key:e,style:{display:"flex",alignItems:"center"}},a.J5.hasAugmentation(e)?o.createElement(i.Z,{sx:{mr:1}}):o.createElement(s.Z,{sx:{mr:1}}),e))))},_=()=>{const e=(0,o.useState)(R())[0],[t,n]=(0,o.useState)((0,T.Kg)()[0]),[i,s]=(0,o.useState)(!1),v=y.x[t],A=(0,L.S)(200),_=e=>{w.Z.PurchaseAugmentationsOrder=e,A()};return o.createElement(u.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0}},o.createElement(m.Z,{onClick:()=>E.F.back()},"Back"),o.createElement(c.Z,{variant:"h4"},"Grafting Laboratory"),o.createElement(c.Z,null,"You find yourself in a secret laboratory, owned by a mysterious researcher.",o.createElement("br",null),"The scientist explains that they've been studying Augmentation grafting, the process of applying Augmentations without requiring a body reset.",o.createElement("br",null),o.createElement("br",null),"Through legally questionable connections, the scientist has access to a vast array of Augmentation blueprints, even private designs. They offer to build and graft the Augmentations to you, in exchange for both a hefty sum of money, and being a lab rat."),o.createElement(f.Z,{sx:{my:3}},o.createElement(h.Z,{sx:{p:1}},o.createElement(c.Z,{variant:"h5"},"Graft Augmentations"),o.createElement(f.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},o.createElement(m.Z,{sx:{width:"100%"},onClick:()=>_(k.L.Cost)},"Sort by Cost"),o.createElement(m.Z,{sx:{width:"100%"},onClick:()=>_(k.L.Default)},"Sort by Default Order"))),(0,T.Kg)().length>0?o.createElement(h.Z,{sx:{mb:1,width:"fit-content",display:"grid",gridTemplateColumns:"1fr 3fr"}},o.createElement(d.Z,{sx:{height:400,overflowY:"scroll",borderRight:`1px solid ${w.Z.theme.welllight}`}},(()=>{const t=(0,T.Kg)();return w.Z.PurchaseAugmentationsOrder===k.L.Cost?t.sort(((t,n)=>e[t].cost-e[n].cost)):t})().map(((a,r)=>o.createElement(p.Z,{key:r+1,onClick:()=>n(a),selected:t===a},o.createElement(c.Z,{sx:{color:F(e[a])?w.Z.theme.primary:w.Z.theme.disabled}},a))))),o.createElement(f.Z,{sx:{m:1}},o.createElement(c.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},o.createElement(l.Z,{sx:{mr:1}})," ",t),o.createElement(m.Z,{onClick:()=>s(!0),sx:{width:"100%"},disabled:!F(e[t])},"Graft Augmentation (",o.createElement(c.Z,null,o.createElement(x.W,{money:e[t].cost,forPurchase:!0})),")"),o.createElement(C.c,{open:i,onClose:()=>s(!1),onConfirm:()=>{a.J5.startWork(new g.Y({augmentation:t,singularity:!1})),a.J5.startFocusing(),E.F.toPage(S.T3.Work)},confirmationText:o.createElement(o.Fragment,null,"Cancelling grafting will ",o.createElement("b",null,"not")," save grafting progress, and the money you spend will ",o.createElement("b",null,"not")," ","be returned.",!a.J5.hasAugmentation(r.AugmentationName.CongruityImplant)&&o.createElement(o.Fragment,null,o.createElement("br",null),o.createElement("br",null),"Additionally, grafting an Augmentation will increase the potency of the Entropy virus."))}),o.createElement(f.Z,{sx:{maxHeight:330,overflowY:"scroll"}},o.createElement(c.Z,{color:w.Z.theme.info},o.createElement("b",null,"Time to Graft:")," ",(0,M.UF)((0,T.i1)(e[t]))),v.prereqs.length>0&&o.createElement(I,{aug:v}),o.createElement("br",null),o.createElement(c.Z,{whiteSpace:"pre-wrap"},(()=>{const e="string"==typeof v.info?o.createElement("span",null,v.info):v.info;return o.createElement(o.Fragment,null,e,o.createElement("br",null),o.createElement("br",null),v.stats)})())))):o.createElement(c.Z,null,"All Augmentations owned")),o.createElement(f.Z,{sx:{my:3}},o.createElement(c.Z,{variant:"h5"},"Entropy Virus"),o.createElement(h.Z,{sx:{my:1,p:1,width:"fit-content"}},o.createElement(c.Z,null,o.createElement("b",null,"Entropy strength:")," ",a.J5.entropy,o.createElement("br",null),o.createElement("b",null,"All multipliers decreased by:")," ",(0,N.$j)(100*(1-b.t.EntropyEffect**a.J5.entropy),3),"% (multiplicative)")),o.createElement(c.Z,null,"When installed on an unconscious individual, Augmentations are scanned by the body on awakening, eliminating hidden malware. However, grafted Augmentations do not provide this security measure.",o.createElement("br",null),o.createElement("br",null),'Individuals who tested Augmentation grafting have reported symptoms of an unknown virus, which they\'ve dubbed "Entropy". This virus seems to grow more potent with each grafted Augmentation...')))}},62850:(e,t,n)=>{"use strict";n.d(t,{A7:()=>a,Rc:()=>o,VA:()=>r});const a=()=>({hacking_chance:1,hacking_speed:1,hacking_money:1,hacking_grow:1,hacking:1,hacking_exp:1,strength:1,strength_exp:1,defense:1,defense_exp:1,dexterity:1,dexterity_exp:1,agility:1,agility_exp:1,charisma:1,charisma_exp:1,hacknet_node_money:1,hacknet_node_purchase_cost:1,hacknet_node_ram_cost:1,hacknet_node_core_cost:1,hacknet_node_level_cost:1,company_rep:1,faction_rep:1,work_money:1,crime_success:1,crime_money:1,bladeburner_max_stamina:1,bladeburner_stamina_gain:1,bladeburner_analysis:1,bladeburner_success_chance:1}),r=(e,t)=>({hacking_chance:e.hacking_chance*t.hacking_chance,hacking_speed:e.hacking_speed*t.hacking_speed,hacking_money:e.hacking_money*t.hacking_money,hacking_grow:e.hacking_grow*t.hacking_grow,hacking:e.hacking*t.hacking,hacking_exp:e.hacking_exp*t.hacking_exp,strength:e.strength*t.strength,strength_exp:e.strength_exp*t.strength_exp,defense:e.defense*t.defense,defense_exp:e.defense_exp*t.defense_exp,dexterity:e.dexterity*t.dexterity,dexterity_exp:e.dexterity_exp*t.dexterity_exp,agility:e.agility*t.agility,agility_exp:e.agility_exp*t.agility_exp,charisma:e.charisma*t.charisma,charisma_exp:e.charisma_exp*t.charisma_exp,hacknet_node_money:e.hacknet_node_money*t.hacknet_node_money,hacknet_node_purchase_cost:e.hacknet_node_purchase_cost*t.hacknet_node_purchase_cost,hacknet_node_ram_cost:e.hacknet_node_ram_cost*t.hacknet_node_ram_cost,hacknet_node_core_cost:e.hacknet_node_core_cost*t.hacknet_node_core_cost,hacknet_node_level_cost:e.hacknet_node_level_cost*t.hacknet_node_level_cost,company_rep:e.company_rep*t.company_rep,faction_rep:e.faction_rep*t.faction_rep,work_money:e.work_money*t.work_money,crime_success:e.crime_success*t.crime_success,crime_money:e.crime_money*t.crime_money,bladeburner_max_stamina:e.bladeburner_max_stamina*t.bladeburner_max_stamina,bladeburner_stamina_gain:e.bladeburner_stamina_gain*t.bladeburner_stamina_gain,bladeburner_analysis:e.bladeburner_analysis*t.bladeburner_analysis,bladeburner_success_chance:e.bladeburner_success_chance*t.bladeburner_success_chance}),o=(e,t)=>({hacking_chance:(e.hacking_chance-1)*t+1,hacking_speed:(e.hacking_speed-1)*t+1,hacking_money:(e.hacking_money-1)*t+1,hacking_grow:(e.hacking_grow-1)*t+1,hacking:(e.hacking-1)*t+1,hacking_exp:(e.hacking_exp-1)*t+1,strength:(e.strength-1)*t+1,strength_exp:(e.strength_exp-1)*t+1,defense:(e.defense-1)*t+1,defense_exp:(e.defense_exp-1)*t+1,dexterity:(e.dexterity-1)*t+1,dexterity_exp:(e.dexterity_exp-1)*t+1,agility:(e.agility-1)*t+1,agility_exp:(e.agility_exp-1)*t+1,charisma:(e.charisma-1)*t+1,charisma_exp:(e.charisma_exp-1)*t+1,hacknet_node_money:(e.hacknet_node_money-1)*t+1,hacknet_node_purchase_cost:(e.hacknet_node_purchase_cost-1)*t+1,hacknet_node_ram_cost:(e.hacknet_node_ram_cost-1)*t+1,hacknet_node_core_cost:(e.hacknet_node_core_cost-1)*t+1,hacknet_node_level_cost:(e.hacknet_node_level_cost-1)*t+1,company_rep:(e.company_rep-1)*t+1,faction_rep:(e.faction_rep-1)*t+1,work_money:(e.work_money-1)*t+1,crime_success:(e.crime_success-1)*t+1,crime_money:(e.crime_money-1)*t+1,bladeburner_max_stamina:(e.bladeburner_max_stamina-1)*t+1,bladeburner_stamina_gain:(e.bladeburner_stamina_gain-1)*t+1,bladeburner_analysis:(e.bladeburner_analysis-1)*t+1,bladeburner_success_chance:(e.bladeburner_success_chance-1)*t+1})},27435:(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var a=n(19043),r=n(33244),o=n(22738),i=n(62850);class s{hp={current:10,max:10};skills={hacking:1,strength:1,defense:1,dexterity:1,agility:1,charisma:1,intelligence:0};exp={hacking:0,strength:0,defense:0,dexterity:0,agility:0,charisma:0,intelligence:0};mults=(0,i.A7)();augmentations=[];queuedAugmentations=[];city=r.CityName.Sector12;gainHackingExp=a.XD;gainStrengthExp=a.jD;gainDefenseExp=a.g1;gainDexterityExp=a.KZ;gainAgilityExp=a.QB;gainCharismaExp=a.Xl;gainIntelligenceExp=a._G;gainStats=a.d4;regenerateHp=a.bw;queryStatFromString=a.qu;updateSkillLevels=a.n4;hasAugmentation=a.IO;calculateSkill=o.gX;resetMultipliers(){this.mults=(0,i.A7)()}}},19043:(e,t,n)=>{"use strict";n.d(t,{IO:()=>y,KZ:()=>c,QB:()=>u,XD:()=>i,Xl:()=>m,_G:()=>f,bw:()=>p,d4:()=>h,g1:()=>l,jD:()=>s,n4:()=>g,qu:()=>d});var a=n(22738),r=n(97740),o=n(49173);function i(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainHackingExp()"):(this.exp.hacking+=e,this.exp.hacking<0&&(this.exp.hacking=0),this.skills.hacking=(0,a.gX)(this.exp.hacking,this.mults.hacking*r.dQ.HackingLevelMultiplier))}function s(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainStrengthExp()"):(this.exp.strength+=e,this.exp.strength<0&&(this.exp.strength=0),this.skills.strength=(0,a.gX)(this.exp.strength,this.mults.strength*r.dQ.StrengthLevelMultiplier))}function l(e){if(isNaN(e))return void console.error("ERR: NaN passed into player.gainDefenseExp()");this.exp.defense+=e,this.exp.defense<0&&(this.exp.defense=0),this.skills.defense=(0,a.gX)(this.exp.defense,this.mults.defense*r.dQ.DefenseLevelMultiplier);const t=this.hp.current/this.hp.max;this.hp.max=Math.floor(10+this.skills.defense/10),this.hp.current=Math.round(this.hp.max*t)}function c(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainDexterityExp()"):(this.exp.dexterity+=e,this.exp.dexterity<0&&(this.exp.dexterity=0),this.skills.dexterity=(0,a.gX)(this.exp.dexterity,this.mults.dexterity*r.dQ.DexterityLevelMultiplier))}function u(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainAgilityExp()"):(this.exp.agility+=e,this.exp.agility<0&&(this.exp.agility=0),this.skills.agility=(0,a.gX)(this.exp.agility,this.mults.agility*r.dQ.AgilityLevelMultiplier))}function m(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainCharismaExp()"):(this.exp.charisma+=e,this.exp.charisma<0&&(this.exp.charisma=0),this.skills.charisma=(0,a.gX)(this.exp.charisma,this.mults.charisma*r.dQ.CharismaLevelMultiplier))}function f(e){isNaN(e)?console.error("ERROR: NaN passed into Player.gainIntelligenceExp()"):(o.J5.sourceFileLvl(5)>0||this.skills.intelligence>0||5===o.J5.bitNodeN)&&(this.exp.intelligence+=e,this.skills.intelligence=Math.floor(this.calculateSkill(this.exp.intelligence,1)))}function h(e){this.gainHackingExp(e.hackExp*this.mults.hacking_exp),this.gainStrengthExp(e.strExp*this.mults.strength_exp),this.gainDefenseExp(e.defExp*this.mults.defense_exp),this.gainDexterityExp(e.dexExp*this.mults.dexterity_exp),this.gainAgilityExp(e.agiExp*this.mults.agility_exp),this.gainCharismaExp(e.chaExp*this.mults.charisma_exp),this.gainIntelligenceExp(e.intExp)}function d(e){const t=e.toLowerCase();return t.includes("hack")?this.skills.hacking:t.includes("str")?this.skills.strength:t.includes("def")?this.skills.defense:t.includes("dex")?this.skills.dexterity:t.includes("agi")?this.skills.agility:t.includes("cha")?this.skills.charisma:t.includes("int")?this.skills.intelligence:0}function p(e){"number"==typeof e?(this.hp.current+=e,this.hp.current>this.hp.max&&(this.hp.current=this.hp.max)):console.warn(`Player.regenerateHp() called without a numeric argument: ${e}`)}function g(){this.skills.hacking=Math.max(1,Math.floor(this.calculateSkill(this.exp.hacking,this.mults.hacking*r.dQ.HackingLevelMultiplier))),this.skills.strength=Math.max(1,Math.floor(this.calculateSkill(this.exp.strength,this.mults.strength*r.dQ.StrengthLevelMultiplier))),this.skills.defense=Math.max(1,Math.floor(this.calculateSkill(this.exp.defense,this.mults.defense*r.dQ.DefenseLevelMultiplier))),this.skills.dexterity=Math.max(1,Math.floor(this.calculateSkill(this.exp.dexterity,this.mults.dexterity*r.dQ.DexterityLevelMultiplier))),this.skills.agility=Math.max(1,Math.floor(this.calculateSkill(this.exp.agility,this.mults.agility*r.dQ.AgilityLevelMultiplier))),this.skills.charisma=Math.max(1,Math.floor(this.calculateSkill(this.exp.charisma,this.mults.charisma*r.dQ.CharismaLevelMultiplier)));const e=Math.min(this.hp.current/this.hp.max,1);this.hp.max=Math.floor(10+this.skills.defense/10),this.hp.current=Math.round(this.hp.max*e)}function y(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!!this.augmentations.some((t=>t.name===e))||!(t||!this.queuedAugmentations.some((t=>t.name===e)))}},43196:(e,t,n)=>{"use strict";var a=n(23466),r=n(61952),o=n(2391),i=n(21774),s=n(24528),l=n(6089),c=n(4601),u=n(49173),m=n(33244),f=n(16466),h=n(57499),d=n(94515),p=n(7165),g=n(49802),y=n(92666),b=n(72938),v=n(27435),k=n(50862);class w extends v.F{bitNodeN=1;corporation=null;gang=null;bladeburner=null;currentServer="";factions=[];factionInvitations=[];hacknetNodes=[];has4SData=!1;has4SDataTixApi=!1;hashManager=new f.F;hasTixApiAccess=!1;hasWseAccount=!1;jobs={};karma=0;numPeopleKilled=0;location=m.LocationName.TravelAgency;money=1e3+b.t.Donations;moneySourceA=new h.S;moneySourceB=new h.S;playtimeSinceLastAug=0;playtimeSinceLastBitnode=0;lastAugReset=-1;lastNodeReset=-1;purchasedServers=[];scriptProdSinceLastAug=0;sleeves=[];sleevesFromCovenant=0;sourceFiles=new p.X;exploits=[];achievements=[];terminalCommandHistory=[];lastUpdate=0;lastSave=0;totalPlaytime=0;currentWork=null;focus=!1;entropy=0;init=s.S1;startWork=c.VM;processWork=c.A7;finishWork=c.th;applyForSoftwareJob=s.nl;applyForSoftwareConsultantJob=s.jQ;applyForItJob=s.IM;applyForSecurityEngineerJob=s.fM;applyForNetworkEngineerJob=s.GP;applyForBusinessJob=s.$7;applyForBusinessConsultantJob=s.D_;applyForSecurityJob=s.uL;applyForAgentJob=s.vJ;applyForEmployeeJob=s.f0;applyForPartTimeEmployeeJob=s.Zg;applyForWaiterJob=s.xS;applyForPartTimeWaiterJob=s.Oo;applyForJob=s.HT;canAccessBladeburner=r.x;canAccessCorporation=o.Y;canAccessGang=i.tv;canAccessGrafting=s.$d;canAfford=s.kb;gainMoney=s.Zr;getCurrentServer=l.uW;getGangFaction=i.Oh;getGangName=i.zI;getHomeComputer=l.bm;getNextCompanyPosition=s.ER;getUpgradeHomeRamCost=l.Pv;getUpgradeHomeCoresCost=l.nd;gotoLocation=s.D;hasGangWith=i.Gq;hasTorRouter=l.ZS;hasProgram=s.e$;inGang=i.Mr;isAwareOfGang=i.xf;isQualified=s.a_;loseMoney=s.cG;reapplyAllAugmentations=s.j2;reapplyAllSourceFiles=s.Iu;recordMoneySource=s.AW;setMoney=s.FI;startBladeburner=r.W;startCorporation=o.O;startFocusing=s.OG;startGang=i.v4;takeDamage=s.FE;travel=s.Hm;giveExploit=s._h;giveAchievement=s.Ru;getCasinoWinnings=s.$0;quitJob=s.ln;hasJob=s.Um;createHacknetServer=l.Ml;queueAugmentation=s.Yn;receiveInvite=s.OM;gainCodingContractReward=s.b2;stopFocusing=s.K2;prestigeAugmentation=s.Ye;prestigeSourceFile=s.Wg;calculateSkillProgress=s.VI;hospitalize=s.VU;checkForFactionInvitations=s.Rp;setBitNodeNumber=s.CZ;canAccessCotMG=s.vW;sourceFileLvl=s.$G;applyEntropy=a.x;focusPenalty=s.te;constructor(){super(),this.identifier=(0,g.d4)("I-"+(new Date).getTime()+navigator.userAgent+window.innerWidth+window.innerHeight+(0,y.X)(100,999))}whoAmI(){return"Player"}toJSON(){return(0,d.L3)("PlayerObject",this)}static fromJSON(e){var t,n;const a=(0,d.Id)(w,e.data);a.hp={current:(null===(t=a.hp)||void 0===t?void 0:t.current)??10,max:(null===(n=a.hp)||void 0===n?void 0:n.max)??10},a.money??=0,a.augmentations=a.augmentations.filter((e=>(0,k.R)("AugmentationName",e.name))),a.queuedAugmentations=a.queuedAugmentations.filter((e=>(0,k.R)("AugmentationName",e.name))),a.updateSkillLevels(),Array.isArray(a.sourceFiles)&&(a.sourceFiles=new p.X(a.sourceFiles.map((e=>{let{n:t,lvl:n}=e;return[t,n]}))));for(const[e,t]of Object.entries(a.jobs))(0,k.R)("CompanyName",e)&&(0,k.R)("JobName",t)||delete a.jobs[e];return a}}(0,u.Sl)(new w),d.gY.PlayerObject=w},23466:(e,t,n)=>{"use strict";n.d(t,{x:()=>r});var a=n(28562);function r(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.reapplyAllAugmentations(),this.reapplyAllSourceFiles(),this.mults=(0,a.k)(e)}},61952:(e,t,n)=>{"use strict";n.d(t,{W:()=>o,x:()=>r});var a=n(79267);function r(){return 6===this.bitNodeN||7===this.bitNodeN||this.sourceFileLvl(6)>0||this.sourceFileLvl(7)>0}function o(){this.bladeburner=new a.T}},2391:(e,t,n)=>{"use strict";n.d(t,{O:()=>s,Y:()=>i});var a=n(33244),r=n(32927),o=n(63303);function i(){return 3===this.bitNodeN||this.sourceFileLvl(3)>0}function s(e,t){this.corporation=new o.D({name:e,seedFunded:t}),(0,r.s8)(),3!==this.bitNodeN&&3!==this.sourceFileLvl(3)||(this.corporation.unlocks.add(a.CorpUnlockName.WarehouseAPI),this.corporation.unlocks.add(a.CorpUnlockName.OfficeAPI)),t&&(this.corporation.investorShares+=5e8,this.corporation.totalShares+=5e8)}},21774:(e,t,n)=>{"use strict";n.d(t,{Gq:()=>m,Mr:()=>h,Oh:()=>c,tv:()=>s,v4:()=>f,xf:()=>l,zI:()=>u});var a=n(58427),r=n(61512),o=n(87811),i=n(16632);function s(){return 2===this.bitNodeN||!(this.sourceFileLvl(2)<=0)&&this.karma<=o.m.GangKarmaRequirement}function l(){return 2===this.bitNodeN||this.sourceFileLvl(2)>=1}function c(){const e=this.gang;if(null===e)throw new Error("Cannot get gang faction because player is not in a gang.");const t=a.i[e.facName];if(null==t)throw new Error(`Gang has invalid faction name: ${e.facName}`);return t}function u(){const e=this.gang;return e?e.facName:""}function m(e){const t=this.gang;return!!t&&t.facName===e}function f(e,t){(0,i.D)(this.currentWork)&&this.currentWork.factionName===e&&this.finishWork(!1),this.gang=new r.v(e,t);const n=a.i[e];if(null==n)throw new Error(`Invalid faction name when creating gang: ${e}`);n.playerReputation=0}function h(){return Boolean(this.gang)}},24528:(e,t,n)=>{"use strict";n.d(t,{$0:()=>Me,$7:()=>se,$G:()=>Te,$d:()=>Ce,AW:()=>q,CZ:()=>ve,D:()=>Se,D_:()=>le,ER:()=>Q,FE:()=>Y,FI:()=>H,GP:()=>ie,HT:()=>X,Hm:()=>Ee,IM:()=>re,Iu:()=>ye,K2:()=>V,OG:()=>z,OM:()=>G,Oo:()=>de,Rp:()=>be,Ru:()=>Ne,S1:()=>O,Um:()=>te,VI:()=>J,VU:()=>K,Wg:()=>Z,Ye:()=>D,Yn:()=>ke,Zg:()=>fe,Zr:()=>U,_h:()=>xe,a_:()=>pe,b2:()=>we,cG:()=>j,e$:()=>W,f0:()=>me,fM:()=>oe,j2:()=>ge,jQ:()=>ae,kb:()=>$,ln:()=>ee,nl:()=>ne,te:()=>Le,uL:()=>ce,vJ:()=>ue,vW:()=>Ae,xS:()=>he});var a=n(33244),r=n(27889),o=n(15571),i=n(97740),s=n(62725),l=n(62586),c=n(40465),u=n(6332),m=n(11124),f=n(72938),h=n(58427),d=n(59471),p=n(75669),g=n(81881),y=n(80307),b=n(9666),v=n(22738),k=n(97467),w=n(89916),E=n(2517),S=n(40425),C=n(29618),x=n(69704),N=n(16264),M=n(2228),A=n(3853),T=n(22115),L=n(57499),R=n(39463),F=n(32369),I=n(30518),_=n(75522),P=n(16014),B=n(50862);function O(){const e=(0,E.iw)({adminRights:!0,hostname:"home",ip:(0,k.hG)(),isConnectedTo:!0,maxRam:8,organizationName:"Home PC",purchasedByPlayer:!0});this.currentServer=S.r.Home,(0,k.jG)(e),this.getHomeComputer().programs.push(a.CompletedProgramName.nuke)}function D(){this.currentServer=S.r.Home,this.numPeopleKilled=0,this.skills.hacking=1,this.skills.strength=1,this.skills.defense=1,this.skills.dexterity=1,this.skills.agility=1,this.skills.charisma=1,this.exp.hacking=0,this.exp.strength=0,this.exp.defense=0,this.exp.dexterity=0,this.exp.agility=0,this.exp.charisma=0,this.money=1e3+f.t.Donations,this.city=a.CityName.Sector12,this.location=a.LocationName.TravelAgency,this.jobs={},this.purchasedServers=[],this.factions=[],this.factionInvitations=[],this.queuedAugmentations=[];const e=Math.min(3,this.sourceFileLvl(10)+(10===this.bitNodeN?1:0))+this.sleevesFromCovenant;this.sleeves.length>e&&(this.sleeves.length=e);for(let t=this.sleeves.length;te.shock<=0?e.synchronize():e.shockRecovery())),this.lastUpdate=(new Date).getTime(),this.playtimeSinceLastAug=0,this.lastAugReset=this.lastUpdate,this.scriptProdSinceLastAug=0,this.moneySourceA.reset(),this.hacknetNodes.length=0,this.hashManager.prestige(),this.reapplyAllAugmentations(!0),this.hp.current=this.hp.max,this.finishWork(!0,!0)}function Z(){if(this.entropy=0,this.prestigeAugmentation(),this.karma=0,this.sleeves.forEach((e=>e.prestige())),10===this.bitNodeN)for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:1;return(0,v.VI)(e,t)}function W(e){return this.getHomeComputer().programs.includes(e)}function H(e){isNaN(e)?console.error("NaN passed into Player.setMoney()"):this.money=e}function U(e,t){isNaN(e)?console.error("NaN passed into Player.gainMoney()"):(this.money=this.money+e,this.recordMoneySource(e,t))}function j(e,t){isNaN(e)?console.error("NaN passed into Player.loseMoney()"):this.money===1/0&&e===1/0||(this.money=this.money-e,this.recordMoneySource(-1*e,t))}function $(e){return isNaN(e)?(console.error("NaN passed into Player.canAfford()"),!1):this.money>=e}function q(e,t){this.moneySourceA instanceof L.S||(console.warn("Player.moneySourceA was not properly initialized. Resetting"),this.moneySourceA=new L.S),this.moneySourceB instanceof L.S||(console.warn("Player.moneySourceB was not properly initialized. Resetting"),this.moneySourceB=new L.S),this.moneySourceA.record(e,t),this.moneySourceB.record(e,t)}function z(){this.focus=!0}function V(){this.focus=!1}function Y(e){return"number"!=typeof e?(console.warn(`Player.takeDamage() called without a numeric argument: ${e}`),!1):(this.hp.current-=e,this.hp.current<=0&&(this.hospitalize(),!0))}function K(){const e=(0,M.B)();return F.sC.emit(`You've been Hospitalized for ${(0,T.lb)(e)}`,a.ToastVariant.SUCCESS,2e3),this.loseMoney(e,"hospitalization"),this.hp.current=this.hp.max,e}function X(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=(0,B.m)("CompanyName").getMember(this.location);if(!n)return!1;const a=l.O[n];let r=e;if(!this.isQualified(a,r))return t||(0,R.X)("Unfortunately, you do not qualify for this position\n"+(0,u.c)(a,r)),!1;if(!a.hasPosition(r))return console.error(`Company ${a.name} does not have position ${r}. Player.applyToCompany() failed`),!1;let o=(0,c.v)(r);for(;o&&a.hasPosition(o)&&this.isQualified(a,o);)r=o,o=(0,c.v)(r);if(this.jobs[a.name]===r.name){if(!t){const e=(0,c.v)(r);if(null!=e&&a.hasPosition(e)){const t=(0,u.c)(a,e);(0,R.X)("Unfortunately, you do not qualify for a promotion\n"+t)}else(0,R.X)("You are already at the highest position for your field! No promotion available")}return!1}return this.jobs[a.name]=r.name,t||(0,R.X)(`Congratulations! You were offered a new job at ${a.name} for position ${r.name}!`),!0}function Q(e,t){const n=l.O[e.name];if(null==n||n.name!=e.name)return t;const a=this.jobs[e.name];if(!a)return t;const r=m.A[a];return r.isSoftwareJob()&&t.isSoftwareJob()||r.isITJob()&&t.isITJob()||r.isBusinessJob()&&t.isBusinessJob()||r.isSecurityEngineerJob()&&t.isSecurityEngineerJob()||r.isNetworkEngineerJob()&&t.isNetworkEngineerJob()||r.isSecurityJob()&&t.isSecurityJob()||r.isAgentJob()&&t.isAgentJob()||r.isSoftwareConsultantJob()&&t.isSoftwareConsultantJob()||r.isBusinessConsultantJob()&&t.isBusinessConsultantJob()||r.isPartTimeJob()&&t.isPartTimeJob()?(0,c.v)(r):t}function ee(e){(0,_.d)(this.currentWork)&&this.currentWork.companyName===e&&this.finishWork(!0);for(const t of this.sleeves)(0,b.i)(t.currentWork)&&t.currentWork.companyName===e&&(t.stopWork(),(0,R.X)(`You quit ${e} while one of your sleeves was working there. The sleeve is now idle.`));delete this.jobs[e]}function te(){return Boolean(Object.keys(this.jobs).length)}function ne(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[a.JobName.software0],e)}function ae(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[a.JobName.softwareConsult0],e)}function re(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[a.JobName.IT0],e)}function oe(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t];return this.isQualified(n,m.A[a.JobName.securityEng])?this.applyForJob(m.A[a.JobName.securityEng],e):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1)}function ie(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t];if(this.isQualified(n,m.A[a.JobName.networkEng0])){const t=m.A[a.JobName.networkEng0];return this.applyForJob(t,e)}return e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1}function se(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[a.JobName.business0],e)}function le(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[a.JobName.businessConsult0],e)}function ce(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.applyForJob(m.A[a.JobName.security0],e)}function ue(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t];if(this.isQualified(n,m.A[a.JobName.agent0])){const t=m.A[a.JobName.agent0];return this.applyForJob(t,e)}return e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1}function me(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t],r=a.JobName.employee;return!!n.hasPosition(r)&&(this.isQualified(n,m.A[r])?(this.jobs[n.name]=r,e||(0,R.X)("Congratulations, you are now employed at "+this.location),!0):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1))}function fe(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t],r=a.JobName.employeePT;return!!n.hasPosition(r)&&(this.isQualified(n,m.A[r])?(this.jobs[n.name]=r,e||(0,R.X)("Congratulations, you are now employed part-time at "+this.location),!0):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1))}function he(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t],r=a.JobName.waiter;return!!n.hasPosition(r)&&(this.isQualified(n,m.A[r])?(this.jobs[n.name]=r,e||(0,R.X)("Congratulations, you are now employed as a waiter at "+this.location),!0):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1))}function de(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,B.m)("CompanyName").getMember(this.location);if(!t)return!1;const n=l.O[t],r=a.JobName.waiterPT;return!!n.hasPosition(r)&&(this.isQualified(n,m.A[r])?(this.jobs[n.name]=r,e||(0,R.X)("Congratulations, you are now employed as a part-time waiter at "+this.location),!0):(e||(0,R.X)("Unfortunately, you do not qualify for this position"),!1))}function pe(e,t){const n=e.jobStatReqOffset,a=t.requiredHacking>0?t.requiredHacking+n:0,r=t.requiredStrength>0?t.requiredStrength+n:0,o=t.requiredDefense>0?t.requiredDefense+n:0,i=t.requiredDexterity>0?t.requiredDexterity+n:0,s=t.requiredDexterity>0?t.requiredDexterity+n:0,l=t.requiredCharisma>0?t.requiredCharisma+n:0;return this.skills.hacking>=a&&this.skills.strength>=r&&this.skills.defense>=o&&this.skills.dexterity>=i&&this.skills.agility>=s&&this.skills.charisma>=l&&e.playerReputation>=t.requiredReputation}function ge(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e&&this.resetMultipliers();for(const e of this.augmentations)if(e.name!=a.AugmentationName.NeuroFluxGovernor)(0,r.kk)(e,!0);else for(let t=0;tt.specialName===e)),a=(0,k.WT)(t?t.hostname:"").backdoorInstalled?-1e5:0;return n.includes(e)&&function(e){return l.O[e].playerReputation}(e)>f.t.CorpFactionRepRequirement+a}const s=h.i[a.FactionName.Illuminati];!s.isBanned&&!s.isMember&&!s.alreadyInvited&&t>=30&&this.money>=15e10&&this.skills.hacking>=1500&&this.skills.strength>=1200&&this.skills.defense>=1200&&this.skills.dexterity>=1200&&this.skills.agility>=1200&&e.push(s);const c=h.i[a.FactionName.Daedalus];!c.isBanned&&!c.isMember&&!c.alreadyInvited&&t>=i.dQ.DaedalusAugsRequirement&&this.money>=1e11&&(this.skills.hacking>=2500||this.skills.strength>=1500&&this.skills.defense>=1500&&this.skills.dexterity>=1500&&this.skills.agility>=1500)&&e.push(c);const u=h.i[a.FactionName.TheCovenant];!u.isBanned&&!u.isMember&&!u.alreadyInvited&&t>=20&&this.money>=75e9&&this.skills.hacking>=850&&this.skills.strength>=850&&this.skills.defense>=850&&this.skills.dexterity>=850&&this.skills.agility>=850&&e.push(u);const m=h.i[a.FactionName.ECorp];m.isBanned||m.isMember||m.alreadyInvited||!o(a.CompanyName.ECorp)||e.push(m);const d=h.i[a.FactionName.MegaCorp];d.isBanned||d.isMember||d.alreadyInvited||!o(a.CompanyName.MegaCorp)||e.push(d);const p=h.i[a.FactionName.BachmanAssociates];p.isBanned||p.isMember||p.alreadyInvited||!o(a.CompanyName.BachmanAndAssociates)||e.push(p);const g=h.i[a.FactionName.BladeIndustries];g.isBanned||g.isMember||g.alreadyInvited||!o(a.CompanyName.BladeIndustries)||e.push(g);const y=h.i[a.FactionName.NWO];y.isBanned||y.isMember||y.alreadyInvited||!o(a.CompanyName.NWO)||e.push(y);const b=h.i[a.FactionName.ClarkeIncorporated];b.isBanned||b.isMember||b.alreadyInvited||!o(a.CompanyName.ClarkeIncorporated)||e.push(b);const v=h.i[a.FactionName.OmniTekIncorporated];v.isBanned||v.isMember||v.alreadyInvited||!o(a.CompanyName.OmniTekIncorporated)||e.push(v);const E=h.i[a.FactionName.FourSigma];E.isBanned||E.isMember||E.alreadyInvited||!o(a.CompanyName.FourSigma)||e.push(E);const C=h.i[a.FactionName.KuaiGongInternational];C.isBanned||C.isMember||C.alreadyInvited||!o(a.CompanyName.KuaiGongInternational)||e.push(C);const x=h.i[a.FactionName.FulcrumSecretTechnologies],N=(0,k.WT)(S.r.FulcrumSecretTechnologies);if(!(N instanceof w.x))throw new Error(`${a.FactionName.FulcrumSecretTechnologies} should be normal server`);null==N?console.error(`Could not find ${a.FactionName.FulcrumSecretTechnologies} Server`):x.isBanned||x.isMember||x.alreadyInvited||!N.backdoorInstalled||!o(a.CompanyName.FulcrumTechnologies)||e.push(x);const M=h.i[a.FactionName.BitRunners],T=(0,k.WT)(S.r.BitRunnersServer);if(!(T instanceof w.x))throw new Error(`${a.FactionName.BitRunners} should be normal server`);null==T?console.error(`Could not find ${a.FactionName.BitRunners} Server`):M.isBanned||M.isMember||!T.backdoorInstalled||M.alreadyInvited||e.push(M);const L=h.i[a.FactionName.TheBlackHand],R=(0,k.WT)(S.r.TheBlackHandServer);if(!(R instanceof w.x))throw new Error(`${a.FactionName.TheBlackHand} should be normal server`);null==R?console.error(`Could not find ${a.FactionName.TheBlackHand} Server`):L.isBanned||L.isMember||!R.backdoorInstalled||L.alreadyInvited||e.push(L);const F=h.i[a.FactionName.NiteSec],I=(0,k.WT)(S.r.NiteSecServer);if(!(I instanceof w.x))throw new Error(`${a.FactionName.NiteSec} should be normal server`);null==I?console.error(`Could not find ${a.FactionName.NiteSec} Server`):F.isBanned||F.isMember||!I.backdoorInstalled||F.alreadyInvited||e.push(F);const _=h.i[a.FactionName.Chongqing];!_.isBanned&&!_.isMember&&!_.alreadyInvited&&this.money>=2e7&&this.city==a.CityName.Chongqing&&e.push(_);const B=h.i[a.FactionName.Sector12];!B.isBanned&&!B.isMember&&!B.alreadyInvited&&this.money>=15e6&&this.city==a.CityName.Sector12&&e.push(B);const O=h.i[a.FactionName.NewTokyo];!O.isBanned&&!O.isMember&&!O.alreadyInvited&&this.money>=2e7&&this.city==a.CityName.NewTokyo&&e.push(O);const D=h.i[a.FactionName.Aevum];!D.isBanned&&!D.isMember&&!D.alreadyInvited&&this.money>=4e7&&this.city==a.CityName.Aevum&&e.push(D);const Z=h.i[a.FactionName.Ishima];!Z.isBanned&&!Z.isMember&&!Z.alreadyInvited&&this.money>=3e7&&this.city==a.CityName.Ishima&&e.push(Z);const G=h.i[a.FactionName.Volhaven];!G.isBanned&&!G.isMember&&!G.alreadyInvited&&this.money>=5e7&&this.city==a.CityName.Volhaven&&e.push(G);const J=h.i[a.FactionName.SpeakersForTheDead];!J.isBanned&&!J.isMember&&!J.alreadyInvited&&this.skills.hacking>=100&&this.skills.strength>=300&&this.skills.defense>=300&&this.skills.dexterity>=300&&this.skills.agility>=300&&this.numPeopleKilled>=30&&this.karma<=-45&&!n.includes(a.LocationName.Sector12CIA)&&!n.includes(a.LocationName.Sector12NSA)&&e.push(J);const W=h.i[a.FactionName.TheDarkArmy];!W.isBanned&&!W.isMember&&!W.alreadyInvited&&this.skills.hacking>=300&&this.skills.strength>=300&&this.skills.defense>=300&&this.skills.dexterity>=300&&this.skills.agility>=300&&this.city==a.CityName.Chongqing&&this.numPeopleKilled>=5&&this.karma<=-45&&!n.includes(a.LocationName.Sector12CIA)&&!n.includes(a.LocationName.Sector12NSA)&&e.push(W);const H=h.i[a.FactionName.TheSyndicate];!H.isBanned&&!H.isMember&&!H.alreadyInvited&&this.skills.hacking>=200&&this.skills.strength>=200&&this.skills.defense>=200&&this.skills.dexterity>=200&&this.skills.agility>=200&&(this.city==a.CityName.Aevum||this.city==a.CityName.Sector12)&&this.money>=1e7&&this.karma<=-90&&!n.includes(a.LocationName.Sector12CIA)&&!n.includes(a.LocationName.Sector12NSA)&&e.push(H);const U=h.i[a.FactionName.Silhouette];!U.isBanned&&!U.isMember&&!U.alreadyInvited&&(r.includes(a.JobName.software7)||r.includes(a.JobName.business4)||r.includes(a.JobName.business5))&&this.money>=15e6&&this.karma<=-22&&e.push(U);const j=h.i[a.FactionName.Tetrads];!j.isBanned&&!j.isMember&&!j.alreadyInvited&&(this.city==a.CityName.Chongqing||this.city==a.CityName.NewTokyo||this.city==a.CityName.Ishima)&&this.skills.strength>=75&&this.skills.defense>=75&&this.skills.dexterity>=75&&this.skills.agility>=75&&this.karma<=-18&&e.push(j);const $=h.i[a.FactionName.SlumSnakes];!$.isBanned&&!$.isMember&&!$.alreadyInvited&&this.skills.strength>=30&&this.skills.defense>=30&&this.skills.dexterity>=30&&this.skills.agility>=30&&this.karma<=-9&&this.money>=1e6&&e.push($);const q=h.i[a.FactionName.Netburners];let z=0,V=0,Y=0;for(let e=0;e=80&&z>=8&&V>=4&&Y>=100&&e.push(q);const K=h.i[a.FactionName.TianDiHui];!K.isBanned&&!K.isMember&&!K.alreadyInvited&&this.money>=1e6&&this.skills.hacking>=50&&(this.city==a.CityName.Chongqing||this.city==a.CityName.NewTokyo||this.city==a.CityName.Ishima)&&e.push(K);const X=h.i[a.FactionName.CyberSec],Q=(0,k.WT)(S.r.CyberSecServer);if(!(Q instanceof w.x))throw new Error(`${a.FactionName.CyberSec} should be normal server`);return null==Q?console.error(`Could not find ${a.FactionName.CyberSec} Server`):X.isBanned||X.isMember||!Q.backdoorInstalled||X.alreadyInvited||e.push(X),e}function ve(e){this.bitNodeN=e}function ke(e){for(const t of this.queuedAugmentations)if(t.name==e)return void console.warn(`tried to queue ${e} twice, this may be a bug`);for(const t of this.augmentations)if(t.name==e)return void console.warn(`tried to queue ${e} twice, this may be a bug`);this.queuedAugmentations.push(new o.e(e))}function we(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!e)return"No reward for this contract";switch(e.type){case s.$O.FactionReputation:{if(!h.i[e.name])return this.gainCodingContractReward({type:s.$O.FactionReputationAll});const n=f.t.CodingContractBaseFactionRepGain*t;return h.i[e.name].playerReputation+=n,`Gained ${n} faction reputation for ${e.name}`}case s.$O.FactionReputationAll:{const e=f.t.CodingContractBaseFactionRepGain*t,n=[a.FactionName.Bladeburners,a.FactionName.ShadowsOfAnarchy,a.FactionName.ChurchOfTheMachineGod],r=this.factions.slice().filter((e=>!n.includes(e)));if(0==r.length)return this.gainCodingContractReward({type:s.$O.Money},t);const o=Math.floor(e/r.length);for(const e of r)h.i[e]&&(h.i[e].playerReputation+=o);return`Gained ${o} reputation for each of the following factions: ${r.join(", ")}`}case s.$O.CompanyReputation:{if(!(0,B.R)("CompanyName",e.name))return this.gainCodingContractReward({type:s.$O.FactionReputationAll});const n=f.t.CodingContractBaseCompanyRepGain*t;return l.O[e.name].playerReputation+=n,`Gained ${n} company reputation for ${e.name}`}case s.$O.Money:default:{const e=f.t.CodingContractBaseMoneyGain*t*i.dQ.CodingContractMoney;return this.gainMoney(e,"codingcontract"),`Gained ${(0,T.lb)(e)}`}}}function Ee(e){return null==p.S[e]?(console.warn(`Player.travel() called with invalid city: ${e}`),!1):(this.city=e,!0)}function Se(e){return null==g.t[e]?(console.warn(`Player.gotoLocation() called with invalid location: ${e}`),!1):(this.location=e,!0)}function Ce(){return 10===this.bitNodeN||this.sourceFileLvl(10)>0}function xe(e){this.exploits.includes(e)||(this.exploits.push(e),F.sC.emit("SF -1 acquired!",a.ToastVariant.SUCCESS,2e3))}function Ne(e){const t=I.E[e];t&&(this.achievements.map((e=>e.ID)).includes(e)||(this.achievements.push({ID:e,unlockedOn:(new Date).getTime()}),F.sC.emit(`Unlocked Achievement: "${t.Name}"`,a.ToastVariant.SUCCESS,2e3)))}function Me(){return this.moneySourceA.casino}function Ae(){return 13===this.bitNodeN||this.sourceFileLvl(13)>0}function Te(e){return this.sourceFiles.get(e)??0}function Le(){let e=1;return this.hasAugmentation(a.AugmentationName.NeuroreceptorManager,!0)||(e=this.focus?1:f.t.BaseFocusBonus),e}},6089:(e,t,n)=>{"use strict";n.d(t,{Ml:()=>p,Pv:()=>h,ZS:()=>u,bm:()=>f,nd:()=>d,uW:()=>m});var a=n(72938),r=n(97740),o=n(89916),i=n(3853),s=n(97467),l=n(40425),c=n(29538);function u(){return this.getHomeComputer().serversOnNetwork.includes(l.r.DarkWeb)}function m(){const e=(0,s.WT)(this.currentServer);if(null===e)throw new Error(`somehow connected to a server that does not exist. ${this.currentServer}`);return e}function f(){const e=(0,s.WT)("home");if(e instanceof o.x)return e;throw new Error("home computer was not a normal server")}function h(){const e=this.getHomeComputer().maxRam,t=Math.log2(e),n=Math.pow(1.58,t);return e*a.t.BaseCostFor1GBOfRamHome*n*r.dQ.HomeComputerRamCost}function d(){return 1e9*Math.pow(7.5,this.getHomeComputer().cpuCores)}function p(){const e=this.hacknetNodes.length,t=(0,c.kw)()?`hacknet-server-${e}`:`hacknet-node-${e}`,n=new i.u({adminRights:!0,hostname:t,ip:(0,s.hG)()});return this.hacknetNodes.push(n.hostname),(0,s.jG)(n),this.getHomeComputer().serversOnNetwork.push(n.hostname),n.serversOnNetwork.push(l.r.Home),n}},4601:(e,t,n)=>{"use strict";function a(e){null!==this.currentWork&&this.currentWork.finish(!0),this.currentWork=e}function r(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;if(null===this.currentWork)return;const t=this.currentWork.process(e);t&&this.finishWork(!1)}function o(e,t){null!==this.currentWork&&(this.currentWork.finish(e,!!t),this.currentWork=null,this.focus=!1)}n.d(t,{A7:()=>r,VM:()=>a,th:()=>o})},80307:(e,t,n)=>{"use strict";n.d(t,{J:()=>S});var a=n(49173),r=n(27435),o=n(18992),i=n(72938),s=n(33244),l=n(58427),c=n(94515),u=n(22115),m=n(58014),f=n(64392),h=n(1560),d=n(73328),p=n(9666),g=n(72885),y=n(69293),b=n(57566),v=n(45892),k=n(77440),w=n(46085),E=n(50862);class S extends r.F{currentWork=null;memory=1;shock=100;storedCycles=0;sync=1;constructor(){super(),this.shockRecovery()}applyAugmentation=k.k;findPurchasableAugs=k.p;shockBonus(){return(100-this.shock)/100}syncBonus(){return this.sync/100}startWork(e){this.currentWork&&this.currentWork.finish(),this.currentWork=e}stopWork(){this.currentWork&&this.currentWork.finish(),this.currentWork=null}commitCrime(e){return this.startWork(new v.w(e)),!0}getMemoryUpgradeCost(e){const t=Math.round(e);if(t<0)return 0;if(this.memory+t>100)return this.getMemoryUpgradeCost(100-this.memory);let n=0,a=this.memory-1;for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:1;const t=1e3/i.t.MilliPerCycle;if(this.storedCycles+=e,this.storedCycles=1?"100%":`${(0,u.T3)(r[0])} - ${(0,u.T3)(r[1])}`}takeDamage(e){return"number"!=typeof e?(console.warn(`Player.takeDamage() called without a numeric argument: ${e}`),!1):(this.hp.current-=e,this.hp.current<=0&&(this.shock=Math.min(100,this.shock+.5),this.hp.current=this.hp.max,!0))}whoAmI(){return"Sleeve"}toJSON(){return(0,c.L3)("Sleeve",this)}static fromJSON(e){var t,n;const a=(0,c.Id)(S,e.data);return null!==(t=a.hp)&&void 0!==t&&t.current&&null!==(n=a.hp)&&void 0!==n&&n.max||(a.hp={current:10,max:10}),a.augmentations=a.augmentations.filter((e=>(0,E.m)("AugmentationName").isMember(e.name))),a.queuedAugmentations=a.queuedAugmentations.filter((e=>(0,E.m)("AugmentationName").isMember(e.name))),a}}c.gY.Sleeve=S},65396:(e,t,n)=>{"use strict";n.d(t,{A:()=>r,J:()=>a});const a=5,r=1e13},77440:(e,t,n)=>{"use strict";n.d(t,{k:()=>u,p:()=>m});var a=n(49173),r=n(33244),o=n(73440),i=n(58427),s=n(62850),l=n(94542),c=n(27889);function u(e){this.mults=(0,s.VA)(this.mults,e.mults)}function m(){const e=this.augmentations.map((e=>e.name)),t=[];function n(n){if(e.includes(n.name))return!1;if(t.includes(n))return!1;if(n.isSpecial)return!1;const a=["hacking","strength","defense","dexterity","agility","charisma","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","company_rep","faction_rep","crime_money","crime_success","work_money"];for(const e of a)if(1!==n.mults[e])return!0;return!1}if(a.J5.gang){const e=a.J5.getGangFaction(),r=(0,l.qW)(e);for(const a of r){const r=o.x[a];n(r)&&e.playerReputation>(0,c.hV)(r).repCost&&t.push(r)}}for(const e of a.J5.factions){if(e===r.FactionName.Bladeburners)continue;if(e===r.FactionName.Netburners)continue;const a=i.i[e];if(a)for(const e of a.augmentations){const r=o.x[e];n(r)&&a.playerReputation>(0,c.hV)(r).repCost&&t.push(r)}}if(!e.includes(r.AugmentationName.ZOE)&&a.J5.factions.includes(r.FactionName.ChurchOfTheMachineGod)){const e=o.x[r.AugmentationName.ZOE];t.push(e)}return t}},57566:(e,t,n)=>{"use strict";n.d(t,{N:()=>c,l:()=>u});var a=n(49173),r=n(94515),o=n(94402),i=n(72938),s=n(53977),l=n(15485);const c=e=>null!==e&&e.type===o.qG.BLADEBURNER;class u extends o.z${type=o.qG.BLADEBURNER;cyclesWorked=0;constructor(e){super(),this.actionType=(null==e?void 0:e.type)??"General",this.actionName=(null==e?void 0:e.name)??"Field Analysis"}cyclesNeeded(e){var t;const n=null===(t=a.J5.bladeburner)||void 0===t?void 0:t.getActionTimeNetscriptFn(e,this.actionType,this.actionName);if(!n||"string"==typeof n)throw new Error(`Error querying ${this.actionName} time`);return n/i.t.MilliPerCycle}process(e,t){if(!a.J5.bladeburner)return e.stopWork();this.cyclesWorked+=t;const n=a.J5.bladeburner.getActionIdFromTypeAndName(this.actionType,this.actionName);if(!n)throw new Error(`Error getting ${this.actionName} action`);if("Contracts"===this.actionType){const t=a.J5.bladeburner.getActionObject(n);if(!t)throw new Error(`Error getting ${this.actionName} action object`);if(t.count<=0)return e.stopWork()}for(;this.cyclesWorked>this.cyclesNeeded(e);){if("Contracts"===this.actionType){const t=a.J5.bladeburner.getActionObject(n);if(!t)throw new Error(`Error getting ${this.actionName} action object`);if(t.count<=0)return e.stopWork()}const t=a.J5.bladeburner.completeAction(e,n,!1);if("General"===this.actionType){var r;const t=null===(r=s.H[this.actionName])||void 0===r?void 0:r.exp;if(!t)throw new Error(`Somehow there was no exp for action ${this.actionType} ${this.actionName}`);(0,o.sd)(e,(0,l.U9)(t,e.shockBonus(),!1))}"Contracts"===this.actionType&&(0,o.sd)(e,(0,l.U9)(t,e.shockBonus(),!1)),this.cyclesWorked-=this.cyclesNeeded(e)}}APICopy(e){return{type:o.qG.BLADEBURNER,actionType:this.actionType,actionName:this.actionName,cyclesWorked:this.cyclesWorked,cyclesNeeded:this.cyclesNeeded(e)}}toJSON(){return(0,r.L3)("SleeveBladeburnerWork",this)}static fromJSON(e){return(0,r.Id)(u,e.data)}}r.gY.SleeveBladeburnerWork=u},58014:(e,t,n)=>{"use strict";n.d(t,{C:()=>f,E:()=>m});var a=n(33244),r=n(94515),o=n(94402),i=n(94337),s=n(97093),l=n(15485),c=n(81881),u=n(50862);const m=e=>null!==e&&e.type===o.qG.CLASS;class f extends o.z${type=o.qG.CLASS;constructor(e){super(),this.classType=(null==e?void 0:e.classType)??a.UniversityClassType.computerScience,this.location=(null==e?void 0:e.location)??a.LocationName.Sector12RothmanUniversity}calculateRates(e){return(0,l.U9)((0,s.w4)(e,this.classType,this.location),e.shockBonus(),!1)}isGym(){return(0,u.R)("GymType",this.classType)}process(e,t){const n=this.calculateRates(e);(0,o.sd)(e,n,t)}APICopy(){return{type:o.qG.CLASS,classType:this.classType,location:this.location}}toJSON(){return(0,r.L3)("SleeveClassWork",this)}static fromJSON(e){return e.data.classType in i.PZ||(e.data.classType="Computer Science"),e.data.location in c.t||(e.data.location=a.LocationName.Sector12RothmanUniversity),(0,r.Id)(f,e.data)}}r.gY.SleeveClassWork=f},9666:(e,t,n)=>{"use strict";n.d(t,{K:()=>p,i:()=>d});var a=n(49173),r=n(33244),o=n(94515),i=n(94402),s=n(62586),l=n(97093),c=n(15485),u=n(62734),m=n(11124),f=n(50862),h=n(82141);const d=e=>null!==e&&e.type===i.qG.COMPANY;class p extends i.z${type=i.qG.COMPANY;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r.CompanyName.NoodleBar;super(),this.companyName=e}getCompany(){return s.O[this.companyName]}getGainRates(e,t){const n=this.getCompany();return(0,c.U9)((0,l.zP)(e,n,m.A[t],n.favor),e.shockBonus(),!1)}process(e,t){const n=this.getCompany(),r=a.J5.jobs[this.companyName];if(!r)return e.stopWork();const o=this.getGainRates(e,r);(0,i.sd)(e,o,t),n.playerReputation+=o.reputation*t,(0,u.gz)(n,o.reputation,t)}APICopy(){return{type:i.qG.COMPANY,companyName:this.companyName}}toJSON(){return(0,o.L3)("SleeveCompanyWork",this)}static fromJSON(e){const t=(0,o.Id)(p,e.data);return(0,f.R)("CompanyName",t.companyName)?t:(0,h.v)()}}o.gY.SleeveCompanyWork=p},45892:(e,t,n)=>{"use strict";n.d(t,{h:()=>f,w:()=>h});var a=n(49173),r=n(94515),o=n(94402),i=n(33244),s=n(35333),l=n(15485),c=n(72938),u=n(97093),m=n(35100);const f=e=>null!==e&&e.type===o.qG.CRIME;class h extends o.z${type=o.qG.CRIME;cyclesWorked=0;constructor(e){super(),this.crimeType=e??i.CrimeType.shoplift}getCrime(){return s.W[this.crimeType]}getExp(e){return(0,l.U9)((0,u.jI)(e,this.getCrime()),e.shockBonus(),!1)}cyclesNeeded(){return this.getCrime().time/c.t.MilliPerCycle}process(e,t){if(this.cyclesWorked+=t,this.cyclesWorked{"use strict";n.d(t,{_:()=>f,n:()=>m});var a=n(49173),r=n(94515),o=n(94402),i=n(33244),s=n(58427),l=n(97093),c=n(15485),u=n(50862);const m=e=>null!==e&&e.type===o.qG.FACTION;class f extends o.z${type=o.qG.FACTION;constructor(e){super(),this.factionWorkType=(null==e?void 0:e.factionWorkType)??i.FactionWorkType.hacking,this.factionName=(null==e?void 0:e.factionName)??i.FactionName.Sector12}getExpRates(e){return(0,c.U9)((0,l.r0)(e,this.factionWorkType),e.shockBonus(),!1)}getReputationRate(e){return(0,l.EV)(e,this.factionWorkType,this.getFaction().favor)*e.shockBonus()}getFaction(){const e=s.i[this.factionName];if(!e)throw new Error(`Faction work started with invalid / unknown faction: '${this.factionName}'`);return e}process(e,t){var n;if(this.factionName===(null===(n=a.J5.gang)||void 0===n?void 0:n.facName))return e.stopWork();const r=this.getExpRates(e);(0,o.sd)(e,r,t);const i=this.getReputationRate(e);this.getFaction().playerReputation+=i*t}APICopy(){return{type:o.qG.FACTION,factionWorkType:this.factionWorkType,factionName:this.factionName}}toJSON(){return(0,r.L3)("SleeveFactionWork",this)}static fromJSON(e){const t=(0,r.Id)(f,e.data);return t.factionWorkType=(0,u.m)("FactionWorkType").fuzzyGetMember(t.factionWorkType,!0),t.factionName=(0,u.m)("FactionName").fuzzyGetMember(t.factionName,!0),t}}r.gY.SleeveFactionWork=f},72885:(e,t,n)=>{"use strict";n.d(t,{$:()=>s,T:()=>l});var a=n(49173),r=n(94515),o=n(94402);const i=6e4/n(72938).t.MilliPerCycle,s=e=>null!==e&&e.type===o.qG.INFILTRATE;class l extends o.z${type=o.qG.INFILTRATE;cyclesWorked=0;cyclesNeeded(){return i}process(e,t){if(!a.J5.bladeburner)return e.stopWork();this.cyclesWorked+=t,this.cyclesWorked>this.cyclesNeeded()&&(this.cyclesWorked-=this.cyclesNeeded(),a.J5.bladeburner.infiltrateSynthoidCommunities())}APICopy(){return{type:o.qG.INFILTRATE,cyclesWorked:this.cyclesWorked,cyclesNeeded:this.cyclesNeeded()}}toJSON(){return(0,r.L3)("SleeveInfiltrateWork",this)}static fromJSON(e){return(0,r.Id)(l,e.data)}}r.gY.SleeveInfiltrateWork=l},1560:(e,t,n)=>{"use strict";n.d(t,{F:()=>i});var a=n(94515),r=n(94402),o=n(46085);class i extends r.z${type=r.qG.RECOVERY;process(e,t){e.shock=Math.max(0,e.shock-2e-4*(0,o.f)(e.skills.intelligence,.75)*t),e.shock<=0&&e.stopWork()}APICopy(){return{type:r.qG.RECOVERY}}toJSON(){return(0,a.L3)("SleeveRecoveryWork",this)}static fromJSON(e){return(0,a.Id)(i,e.data)}}a.gY.SleeveRecoveryWork=i},69293:(e,t,n)=>{"use strict";n.d(t,{D:()=>s,O:()=>i});var a=n(49173),r=n(94515),o=n(94402);const i=e=>null!==e&&e.type===o.qG.SUPPORT;class s extends o.z${type=o.qG.SUPPORT;constructor(){var e;super(),null===(e=a.J5.bladeburner)||void 0===e||e.sleeveSupport(!0)}process(){}finish(){var e;null===(e=a.J5.bladeburner)||void 0===e||e.sleeveSupport(!1)}APICopy(){return{type:o.qG.SUPPORT}}toJSON(){return(0,r.L3)("SleeveSupportWork",this)}static fromJSON(e){return(0,r.Id)(s,e.data)}}r.gY.SleeveSupportWork=s},64392:(e,t,n)=>{"use strict";n.d(t,{j:()=>s});var a=n(49173),r=n(94515),o=n(94402),i=n(46085);class s extends o.z${type=o.qG.SYNCHRO;process(e,t){e.sync=Math.min(100,e.sync+2e-4*(0,i.f)(a.J5.skills.intelligence,.5)*t),e.sync>=100&&e.stopWork()}APICopy(){return{type:o.qG.SYNCHRO}}toJSON(){return(0,r.L3)("SleeveSynchroWork",this)}static fromJSON(e){return(0,r.Id)(s,e.data)}}r.gY.SleeveSynchroWork=s},94402:(e,t,n)=>{"use strict";n.d(t,{qG:()=>s,sd:()=>o,z$:()=>i});var a=n(49173),r=n(15485);const o=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;(0,r.ki)(e,t,n),a.J5.gainMoney(t.money*n,"sleeves");const o=e.syncBonus();(0,r.ki)(a.J5,t,n*o),a.J5.sleeves.forEach((a=>a!==e&&(0,r.ki)(a,t,n*o*a.shockBonus())))};class i{finish(){}}let s;!function(e){e.COMPANY="COMPANY",e.FACTION="FACTION",e.CRIME="CRIME",e.CLASS="CLASS",e.RECOVERY="RECOVERY",e.SYNCHRO="SYNCHRO",e.BLADEBURNER="BLADEBURNER",e.INFILTRATE="INFILTRATE",e.SUPPORT="SUPPORT"}(s||(s={}))},40810:(e,t,n)=>{"use strict";n.d(t,{r:()=>p});var a=n(67294),r=n(84777),o=n(80307),i=n(65396),s=n(72360),l=n(48672),c=n(49173),u=n(39463),m=n(81138),f=n(56798),h=n(33244),d=n(88775);function p(e){const t=(0,d.S)();function n(){return Math.pow(10,c.J5.sleevesFromCovenant)*i.A}let p=!1;c.J5.canAfford(n())||(p=!0),c.J5.sleevesFromCovenant>=i.J&&(p=!0);const g=[];for(let e=0;e=i.J||(c.J5.canAfford(n())?(c.J5.loseMoney(n(),"sleeves"),c.J5.sleevesFromCovenant+=1,c.J5.sleeves.push(new o.J),t()):(0,u.X)("You cannot afford to purchase a Duplicate Sleeve"))}},"Purchase - ",a.createElement(s.W,{money:n(),forPurchase:!0}))),a.createElement("br",null),a.createElement("br",null),a.createElement(m.Z,null,"You can also purchase upgrades for your Sleeves. These upgrades are also permanent."),g))}},84777:(e,t,n)=>{"use strict";n.d(t,{Y:()=>f});var a=n(67294),r=n(49173),o=n(22115),i=n(72360),s=n(81138),l=n(66351),c=n(56798),u=n(30120),m=n(28881);function f(e){const[t,n]=(0,a.useState)(1);function f(){if(isNaN(t))return 1/0;const n=100-e.sleeve.memory;return t>n?1/0:e.sleeve.getMemoryUpgradeCost(t)}const h=f(),d=!r.J5.canAfford(h);let p=a.createElement(a.Fragment,null);return p=isNaN(t)?a.createElement(a.Fragment,null,"Invalid value"):a.createElement(a.Fragment,null,"Purchase ",t," memory - ",a.createElement(i.W,{money:h,forPurchase:!0})),a.createElement(m.Z,{sx:{my:1,p:1}},a.createElement(s.Z,{variant:"h6",color:"primary"},"Upgrade Memory of Sleeve ",e.index),a.createElement(s.Z,null,"Purchase a memory upgrade for your sleeve. Note that a sleeve's max memory is 100 (current:"," ",(0,o.Kq)(e.sleeve.memory),")"),a.createElement(u.Z,{display:"flex",flexDirection:"row",alignItems:"center"},a.createElement(s.Z,null,"Amount of memory to purchase (must be an integer): "),a.createElement(l.Z,{onChange:function(t){let a=parseInt(t.target.value);isNaN(a)&&(a=1),a<1&&(a=1);const r=100-e.sleeve.memory;a>r&&(a=r),n(a)},type:"number",value:t})),a.createElement("br",null),a.createElement(c.Z,{disabled:d,onClick:function(){const n=f();r.J5.canAfford(n)&&(e.sleeve.upgradeMemory(t),r.J5.loseMoney(n,"sleeves"),e.rerender())}},p))}},56010:(e,t,n)=>{"use strict";n.d(t,{J:()=>s});var a=n(67294),r=n(48672),o=n(81138),i=n(33244);function s(e){let{open:t,onClose:n}=e;return a.createElement(r.u,{open:t,onClose:n},a.createElement(a.Fragment,null,a.createElement(o.Z,{variant:"h4"},"How do Duplicate Sleeves work?"),a.createElement("br",null),a.createElement(o.Z,null,"Duplicate Sleeves are essentially clones. You can use them to perform any work type action, such as working for a company/faction or committing a crime. Having sleeves perform these tasks earns you money, experience, and reputation."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,null,"Sleeves are their own individuals, which means they each have their own experience and stats."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,null,"When a sleeve earns experience, it earns experience for itself, the player's original 'consciousness', as well as all of the player's other sleeves."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,{variant:"h4"},"What is Synchronization (Sync)?"),a.createElement("br",null),a.createElement(o.Z,null,"Synchronization is a measure of how aligned your consciousness is with that of your Duplicate Sleeves. It is a numerical value between 1 and 100, and it affects how much experience is earned when the sleeve is performing a task."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,null,"Let N be the sleeve's synchronization. When the sleeve earns experience by performing a task, both the sleeve and the player's original host consciousness earn N% of the amount of experience normally earned by the task. All of the player's other sleeves earn ((N/100)^2 * 100)% of the experience."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,null,"Synchronization can be increased by assigning sleeves to the 'Synchronize' task."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,{variant:"h4"},"What is Shock?"),a.createElement("br",null),a.createElement(o.Z,null,"Sleeve shock is a measure of how much trauma the sleeve has due to being placed in a new body. It is a numerical value between 0 and 99, where 99 indicates full shock and 0 indicates no shock. Shock affects the amount of experience earned by the sleeve."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,null,"Sleeve shock slowly decreases over time. You can further increase the rate at which it decreases by assigning sleeves to the 'Shock Recovery' task."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,{variant:"h4"},"Why can't I work for this company or faction?"),a.createElement("br",null),a.createElement(o.Z,null,"Only one of your sleeves can work for a given company/faction a time. To clarify further, if you have two sleeves they can work for two different companies/factions, but they cannot both work for the same company/faction."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,{variant:"h4"},"How do I buy Augmentations for my Sleeves?"),a.createElement("br",null),a.createElement(o.Z,null,"Your Sleeve needs to have a Shock of 0 in order for you to buy Augmentations for it."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,{variant:"h4"},"Why can't I buy the X Augmentation for my sleeve?"),a.createElement("br",null),a.createElement(o.Z,null,"Certain Augmentations, like ",i.FactionName.Bladeburners,"-specific ones and NeuroFlux Governor, are not available for sleeves. You also need enough current reputation on some faction that offers that Augmentation."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,{variant:"h4"},"Do sleeves get reset when installing Augmentations or switching BitNodes?"),a.createElement("br",null),a.createElement(o.Z,null,"Sleeves are reset when switching BitNodes, but not when installing Augmentations. However installing Augmentations on a sleeve does reset their stats."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,{variant:"h4"},"What is Memory?"),a.createElement("br",null),a.createElement(o.Z,null,"Sleeve memory dictates what a sleeve's synchronization will be when it's reset by switching BitNodes. For example, if a sleeve has a memory of 25, then when you switch BitNodes its synchronization will initially be set to 25, rather than 1."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,null,"Memory can only be increased by purchasing upgrades from ",i.FactionName.TheCovenant,". It is a persistent stat, meaning it never gets resets back to 1. The maximum possible value for a sleeve's memory is 100.")))}},91467:(e,t,n)=>{"use strict";n.d(t,{h:()=>u});var a=n(22115),r=n(49802),o=n(72938),i=n(81138),s=n(97534),l=n(48672),c=n(67294);function u(e){return c.createElement(l.u,{open:e.open,onClose:e.onClose},c.createElement(s.C,{rows:[[c.createElement(c.Fragment,null,"Hacking: "),e.sleeve.skills.hacking,c.createElement(c.Fragment,null," (",(0,a.Mf)(e.sleeve.exp.hacking)," exp)")],[c.createElement(c.Fragment,null,"Strength: "),e.sleeve.skills.strength,c.createElement(c.Fragment,null," (",(0,a.Mf)(e.sleeve.exp.strength)," exp)")],[c.createElement(c.Fragment,null,"Defense: "),e.sleeve.skills.defense,c.createElement(c.Fragment,null," (",(0,a.Mf)(e.sleeve.exp.defense)," exp)")],[c.createElement(c.Fragment,null,"Dexterity: "),e.sleeve.skills.dexterity,c.createElement(c.Fragment,null," (",(0,a.Mf)(e.sleeve.exp.dexterity)," exp)")],[c.createElement(c.Fragment,null,"Agility: "),e.sleeve.skills.agility,c.createElement(c.Fragment,null," (",(0,a.Mf)(e.sleeve.exp.agility)," exp)")],[c.createElement(c.Fragment,null,"Charisma: "),e.sleeve.skills.charisma,c.createElement(c.Fragment,null," (",(0,a.Mf)(e.sleeve.exp.charisma)," exp)")]],title:"Stats:"}),c.createElement("br",null),c.createElement(s.C,{rows:[[c.createElement(c.Fragment,null,"Hacking Level multiplier: "),(0,a.T3)(e.sleeve.mults.hacking)],[c.createElement(c.Fragment,null,"Hacking Experience multiplier: "),(0,a.T3)(e.sleeve.mults.hacking_exp)],[c.createElement(c.Fragment,null,"Strength Level multiplier: "),(0,a.T3)(e.sleeve.mults.strength)],[c.createElement(c.Fragment,null,"Strength Experience multiplier: "),(0,a.T3)(e.sleeve.mults.strength_exp)],[c.createElement(c.Fragment,null,"Defense Level multiplier: "),(0,a.T3)(e.sleeve.mults.defense)],[c.createElement(c.Fragment,null,"Defense Experience multiplier: "),(0,a.T3)(e.sleeve.mults.defense_exp)],[c.createElement(c.Fragment,null,"Dexterity Level multiplier: "),(0,a.T3)(e.sleeve.mults.dexterity)],[c.createElement(c.Fragment,null,"Dexterity Experience multiplier: "),(0,a.T3)(e.sleeve.mults.dexterity_exp)],[c.createElement(c.Fragment,null,"Agility Level multiplier: "),(0,a.T3)(e.sleeve.mults.agility)],[c.createElement(c.Fragment,null,"Agility Experience multiplier: "),(0,a.T3)(e.sleeve.mults.agility_exp)],[c.createElement(c.Fragment,null,"Charisma Level multiplier: "),(0,a.T3)(e.sleeve.mults.charisma)],[c.createElement(c.Fragment,null,"Charisma Experience multiplier: "),(0,a.T3)(e.sleeve.mults.charisma_exp)],[c.createElement(c.Fragment,null,"Faction Reputation Gain multiplier: "),(0,a.T3)(e.sleeve.mults.faction_rep)],[c.createElement(c.Fragment,null,"Company Reputation Gain multiplier: "),(0,a.T3)(e.sleeve.mults.company_rep)],[c.createElement(c.Fragment,null,"Salary multiplier: "),(0,a.T3)(e.sleeve.mults.work_money)],[c.createElement(c.Fragment,null,"Crime Money multiplier: "),(0,a.T3)(e.sleeve.mults.crime_money)],[c.createElement(c.Fragment,null,"Crime Success multiplier: "),(0,a.T3)(e.sleeve.mults.crime_success)]],title:"Multipliers:"}),e.sleeve.storedCycles>10&&c.createElement(i.Z,{sx:{py:2}},"Bonus Time: ",(0,r.UF)(e.sleeve.storedCycles*o.t.MilliPerCycle)))}},74210:(e,t,n)=>{"use strict";n.d(t,{m:()=>m});var a=n(78016),r=n(28881),o=n(81138),i=n(67294),s=n(75012),l=n(49173),c=n(48672),u=n(88775);function m(e){const t=(0,u.S)(150),n=e.sleeve.augmentations.map((e=>e.name)),m=e.sleeve.findPurchasableAugs();return i.createElement(c.u,{open:e.open,onClose:e.onClose},i.createElement(a.Z,{component:r.Z,disableGutters:!0,maxWidth:"lg",sx:{mx:0,mb:1,p:1}},i.createElement(o.Z,null,"You can purchase Augmentations for your Duplicate Sleeves. These Augmentations have the same effect as they would for you. You can only purchase Augmentations that you have unlocked through Factions.",i.createElement("br",null),i.createElement("br",null),"When purchasing an Augmentation for a Duplicate Sleeve, they are immediately installed. This means that the Duplicate Sleeve will immediately lose all of its stat experience.",i.createElement("br",null),i.createElement("br",null),"Augmentations will appear below as they become available.")),i.createElement(s.b,{augNames:m.map((e=>e.name)),ownedAugNames:n,canPurchase:e=>l.J5.money>e.baseCost,purchaseAugmentation:n=>{e.sleeve.tryBuyAugmentation(n),t()},rerender:t,sleeveAugs:!0}))}},39246:(e,t,n)=>{"use strict";n.d(t,{Q:()=>E});var a=n(28881),r=n(30120),o=n(56798),i=n(17575),s=n(81138),l=n(67294),c=n(33244),u=n(72938),m=n(49173),f=n(22115),h=n(3197),d=n(91467),p=n(74210),g=n(35283),y=n(97441),b=n(97714),v=n(35100),k=n(94402),w=n(50862);function E(e){const[t,n]=(0,l.useState)(!1),[E,S]=(0,l.useState)(!1),[C,x]=(0,l.useState)(!1),[N,M]=(0,l.useState)(["------","------","------"]);let A=0,T=l.createElement(l.Fragment,null);const L=e.sleeve.currentWork;if(L)switch(L.type){case k.qG.BLADEBURNER:case k.qG.CRIME:case k.qG.INFILTRATE:A=L.cyclesWorked/L.cyclesNeeded(e.sleeve),T=l.createElement(h.k,{variant:"determinate",value:100*A,color:"primary"})}const R=function(e,t){const n=e.currentWork;if(!n)return"This sleeve is currently idle.";switch(n.type){case k.qG.COMPANY:return`This sleeve is currently working your job at ${n.companyName}`;case k.qG.SUPPORT:return"This sleeve is currently supporting you in your bladeburner activities.";case k.qG.CLASS:return`This sleeve is currently ${n.isGym()?"working out":"studying"} at ${n.location}`;case k.qG.RECOVERY:return"This sleeve is currently set to focus on shock recovery. This causes the Sleeve's shock to decrease at a faster rate.";case k.qG.SYNCHRO:return"This sleeve is currently set to synchronize with the original consciousness. This causes the Sleeve's synchronization to increase.";case k.qG.BLADEBURNER:return`This sleeve is currently attempting to perform ${n.actionName}.\n\nProgress: ${(0,f.T3)(t)}`;case k.qG.CRIME:{const a=n.getCrime();return`This sleeve is currently attempting ${a.workName} (Success Rate: ${(0,f.T3)(a.successRate(e))}).\n\nProgress: ${(0,f.T3)(t)}`}case k.qG.FACTION:return`This sleeve is currently doing ${{[c.FactionWorkType.field]:"Field Work",[c.FactionWorkType.hacking]:"Hacking Contracts",[c.FactionWorkType.security]:"Security Work"}[n.factionWorkType]??"nothing"} for ${n.factionName}.`;case k.qG.INFILTRATE:return`This sleeve is currently attempting to infiltrate synthoid communities to generate additional contracts and operations.\nThis activity is less efficient the more sleeves are assigned to it.\n\nProgress: ${(0,f.T3)(t)}`}}(e.sleeve,A);return l.createElement(l.Fragment,null,l.createElement(a.Z,{sx:{p:1,display:"grid",gridTemplateColumns:"1fr 1fr",width:"auto",gap:1}},l.createElement("span",null,l.createElement(g.V,{sleeve:e.sleeve}),l.createElement(r.Z,{display:"grid",sx:{gridTemplateColumns:"1fr 1fr",width:"100%"}},l.createElement(o.Z,{onClick:()=>n(!0)},"More Stats"),l.createElement(i.Z,{title:m.J5.moneyS(!0),disabled:m.J5.money0?l.createElement(s.Z,null,"Unlocked when sleeve has fully recovered"):""},l.createElement("span",null,l.createElement(o.Z,{onClick:()=>x(!0),disabled:e.sleeve.shock>0,sx:{width:"100%",height:"100%"}},"Manage Augmentations"))))),l.createElement("span",null,l.createElement(g.Y,{sleeve:e.sleeve}),l.createElement(y.o,{sleeve:e.sleeve,setABC:M}),l.createElement(o.Z,{onClick:function(){var t;switch(N[0]){case"------":break;case"Work for Company":(0,w.m)("CompanyName").isMember(N[1])?e.sleeve.workForCompany(N[1]):console.error(`Invalid company name in setSleeveTask: ${N[1]}`);break;case"Work for Faction":(0,w.m)("FactionName").isMember(N[1])?e.sleeve.workForFaction(N[1],N[2]):console.error(`Invalid faction name in setSleeveTask: ${N[1]}`);break;case"Commit Crime":e.sleeve.commitCrime((null===(t=(0,v.K)(N[1]))||void 0===t?void 0:t.type)??c.CrimeType.shoplift);break;case"Take University Course":e.sleeve.takeUniversityCourse(N[2],N[1]);break;case"Workout at Gym":e.sleeve.workoutAtGym(N[2],N[1]);break;case"Perform Bladeburner Actions":e.sleeve.bladeburner(N[1],N[2]);break;case"Shock Recovery":e.sleeve.shockRecovery();break;case"Synchronize":e.sleeve.synchronize();break;default:console.error(`Invalid/Unrecognized taskValue in setSleeveTask(): ${N[0]}`)}e.rerender()},sx:{width:"100%"}},"Set Task"),l.createElement(s.Z,{whiteSpace:"pre-wrap"},R),T)),l.createElement(d.h,{open:t,onClose:()=>n(!1),sleeve:e.sleeve}),l.createElement(b.i,{open:E,onClose:()=>S(!1),sleeve:e.sleeve,rerender:e.rerender}),l.createElement(p.m,{open:C,onClose:()=>x(!1),sleeve:e.sleeve}))}},45693:(e,t,n)=>{"use strict";n.d(t,{X:()=>f});var a=n(67294),r=n(78016),o=n(81138),i=n(56798),s=n(30120),l=n(49173),c=n(39246),u=n(56010),m=n(88775);function f(){const[e,t]=(0,a.useState)(!1),n=(0,m.S)(200);return a.createElement(a.Fragment,null,a.createElement(r.Z,{disableGutters:!0,maxWidth:"md",sx:{mx:0}},a.createElement(o.Z,{variant:"h4"},"Sleeves"),a.createElement(o.Z,null,"Duplicate Sleeves are MK-V Synthoids (synthetic androids) into which your consciousness has been copied. In other words, these Synthoids contain a perfect duplicate of your mind.",a.createElement("br",null),a.createElement("br",null),"Sleeves can be used to perform different tasks simultaneously.",a.createElement("br",null),a.createElement("br",null))),a.createElement(i.Z,{onClick:()=>t(!0)},"FAQ"),a.createElement(s.Z,{display:"grid",sx:{gridTemplateColumns:"repeat(2, 1fr)",mt:1}},l.J5.sleeves.map(((e,t)=>a.createElement(c.Q,{key:t,rerender:n,sleeve:e})))),a.createElement(u.J,{open:e,onClose:()=>t(!1)}))}},35283:(e,t,n)=>{"use strict";n.d(t,{V:()=>S,Y:()=>C});var a=n(67294),r=n(47542),o=n(46948),i=n(49557),s=n(7272),l=n(81138),c=n(49173),u=n(72938),m=n(22115),f=n(51087),h=n(21927),d=n(43480),p=n(72360),g=n(85882),y=n(74192),b=n(58014),v=n(73328),k=n(9666),w=n(45892);const E=1e3/u.t.MilliPerCycle;function S(e){const t=(0,d.yK)();return a.createElement(r.Z,{sx:{display:"table",mb:1,width:"100%"}},a.createElement(o.Z,null,a.createElement(h.j,{name:"City",color:f.Z.theme.primary,data:{content:e.sleeve.city}}),a.createElement(h.j,{name:"HP",color:f.Z.theme.hp,data:{content:`${(0,m.nC)(e.sleeve.hp.current)} / ${(0,m.nC)(e.sleeve.hp.max)}`}}),a.createElement(h.j,{name:"Hacking",color:f.Z.theme.hack,data:{level:e.sleeve.skills.hacking,exp:e.sleeve.exp.hacking}}),a.createElement(h.j,{name:"Strength",color:f.Z.theme.combat,data:{level:e.sleeve.skills.strength,exp:e.sleeve.exp.strength}}),a.createElement(h.j,{name:"Defense",color:f.Z.theme.combat,data:{level:e.sleeve.skills.defense,exp:e.sleeve.exp.defense}}),a.createElement(h.j,{name:"Dexterity",color:f.Z.theme.combat,data:{level:e.sleeve.skills.dexterity,exp:e.sleeve.exp.dexterity}}),a.createElement(h.j,{name:"Agility",color:f.Z.theme.combat,data:{level:e.sleeve.skills.agility,exp:e.sleeve.exp.agility}}),a.createElement(h.j,{name:"Charisma",color:f.Z.theme.cha,data:{level:e.sleeve.skills.charisma,exp:e.sleeve.exp.charisma}}),a.createElement(i.Z,null,a.createElement(s.Z,{classes:{root:t.cellNone}},a.createElement("br",null))),a.createElement(h.j,{name:"Shock",color:f.Z.theme.primary,data:{content:(0,m.wu)(e.sleeve.shock)}}),a.createElement(h.j,{name:"Sync",color:f.Z.theme.primary,data:{content:(0,m.w5)(e.sleeve.sync)}}),a.createElement(h.j,{name:"Memory",color:f.Z.theme.primary,data:{content:(0,m.Kq)(e.sleeve.memory)}})))}function C(e){const t=(0,d.yK)();let n=[];if((0,w.h)(e.sleeve.currentWork)){const t=e.sleeve.currentWork.getExp(e.sleeve);n=[["Money:",a.createElement(p.W,{key:"money",money:t.money})],["Hacking Exp:",`${(0,m.Mf)(t.hackExp)}`],["Strength Exp:",`${(0,m.Mf)(t.strExp)}`],["Defense Exp:",`${(0,m.Mf)(t.defExp)}`],["Dexterity Exp:",`${(0,m.Mf)(t.dexExp)}`],["Agility Exp:",`${(0,m.Mf)(t.agiExp)}`],["Charisma Exp:",`${(0,m.Mf)(t.chaExp)}`]]}if((0,b.E)(e.sleeve.currentWork)){const t=e.sleeve.currentWork.calculateRates(e.sleeve);n=[["Money:",a.createElement(g.G,{key:"money-rate",money:E*t.money})],["Hacking Exp:",`${(0,m.Mf)(E*t.hackExp)} / sec`],["Strength Exp:",`${(0,m.Mf)(E*t.strExp)} / sec`],["Defense Exp:",`${(0,m.Mf)(E*t.defExp)} / sec`],["Dexterity Exp:",`${(0,m.Mf)(E*t.dexExp)} / sec`],["Agility Exp:",`${(0,m.Mf)(E*t.agiExp)} / sec`],["Charisma Exp:",`${(0,m.Mf)(E*t.chaExp)} / sec`]]}if((0,v.n)(e.sleeve.currentWork)){const t=e.sleeve.currentWork.getExpRates(e.sleeve),r=e.sleeve.currentWork.getReputationRate(e.sleeve);n=[["Hacking Exp:",`${(0,m.Mf)(E*t.hackExp)} / sec`],["Strength Exp:",`${(0,m.Mf)(E*t.strExp)} / sec`],["Defense Exp:",`${(0,m.Mf)(E*t.defExp)} / sec`],["Dexterity Exp:",`${(0,m.Mf)(E*t.dexExp)} / sec`],["Agility Exp:",`${(0,m.Mf)(E*t.agiExp)} / sec`],["Charisma Exp:",`${(0,m.Mf)(E*t.chaExp)} / sec`],["Reputation:",a.createElement(y.y,{key:"reputation-rate",reputation:E*r})]]}e:if((0,k.i)(e.sleeve.currentWork)){const t=c.J5.jobs[e.sleeve.currentWork.companyName];if(!t)break e;const r=e.sleeve.currentWork.getGainRates(e.sleeve,t);n=[["Money:",a.createElement(g.G,{key:"money-rate",money:E*r.money})],["Hacking Exp:",`${(0,m.Mf)(E*r.hackExp)} / sec`],["Strength Exp:",`${(0,m.Mf)(E*r.strExp)} / sec`],["Defense Exp:",`${(0,m.Mf)(E*r.defExp)} / sec`],["Dexterity Exp:",`${(0,m.Mf)(E*r.dexExp)} / sec`],["Agility Exp:",`${(0,m.Mf)(E*r.agiExp)} / sec`],["Charisma Exp:",`${(0,m.Mf)(E*r.chaExp)} / sec`],["Reputation:",a.createElement(y.y,{key:"reputation-rate",reputation:E*r.reputation})]]}return a.createElement(r.Z,{sx:{display:"table",mb:1,width:"100%",lineHeight:0}},a.createElement(o.Z,null,a.createElement(i.Z,null,a.createElement(s.Z,{classes:{root:t.cellNone}},a.createElement(l.Z,{variant:"h6"},"Earnings ",e.sleeve.storedCycles>50?"(overclock)":""))),n.map((e=>{let[n,r]=e;return a.createElement(i.Z,{key:n.toString()+r.toString()},a.createElement(s.Z,{classes:{root:t.cellNone}},a.createElement(l.Z,null,n)),a.createElement(s.Z,{align:"right",classes:{root:t.cellNone}},a.createElement(l.Z,null,r)))}))))}},97441:(e,t,n)=>{"use strict";n.d(t,{o:()=>E});var a=n(67294),r=n(49173),o=n(35333),i=n(33244),s=n(58427),l=n(26023),c=n(98649),u=n(73328),m=n(9666),f=n(57566),h=n(50862),d=n(94402);const p=["Computer Science","Data Structures","Networks","Algorithms","Management","Leadership"],g=["Train Strength","Train Defense","Train Dexterity","Train Agility"],y=["Training","Field Analysis","Recruitment","Diplomacy","Hyperbolic Regeneration Chamber","Infiltrate Synthoids","Support main sleeve","Take on contracts"];function b(e){const t=[];for(const n of r.J5.sleeves)e!==n&&(0,m.i)(n.currentWork)&&t.push(n.currentWork.companyName);return Object.keys(r.J5.jobs).filter((e=>!t.includes(e)))}function v(e){const t=[i.FactionName.Bladeburners,i.FactionName.ShadowsOfAnarchy];r.J5.gang&&t.push(r.J5.gang.facName);for(const n of r.J5.sleeves)e!==n&&(0,u.n)(n.currentWork)&&t.push(n.currentWork.factionName);const n=[];for(const e of r.J5.factions)t.includes(e)||n.push(e);return n.filter((e=>{const t=s.i[e];if(!t)return!1;const n=t.getInfo();return n.offerHackingWork||n.offerFieldWork||n.offerSecurityWork}))}const k={"------":()=>({first:["------"],second:()=>["------"]}),"Work for Company":e=>{let t=b(e);return 0===t.length&&(t=["------"]),{first:t,second:()=>["------"]}},"Work for Faction":e=>{let t=v(e);return 0===t.length&&(t=["------"]),{first:t,second:e=>{if(!(0,h.m)("FactionName").isMember(e))return["------"];const t=s.i[e].getInfo(),n=[];return t.offerHackingWork&&n.push("Hacking Contracts"),t.offerFieldWork&&n.push("Field Work"),t.offerSecurityWork&&n.push("Security Work"),n}}},"Commit Crime":()=>({first:Object.keys(o.W),second:()=>["------"]}),"Take University Course":e=>{let t=[];switch(e.city){case i.CityName.Aevum:t=[i.LocationName.AevumSummitUniversity];break;case i.CityName.Sector12:t=[i.LocationName.Sector12RothmanUniversity];break;case i.CityName.Volhaven:t=[i.LocationName.VolhavenZBInstituteOfTechnology];break;default:t=["No university available in city!"]}return{first:p,second:()=>t}},"Workout at Gym":e=>{let t=[];switch(e.city){case i.CityName.Aevum:t=[i.LocationName.AevumCrushFitnessGym,i.LocationName.AevumSnapFitnessGym];break;case i.CityName.Sector12:t=[i.LocationName.Sector12IronGym,i.LocationName.Sector12PowerhouseGym];break;case i.CityName.Volhaven:t=[i.LocationName.VolhavenMilleniumFitnessGym];break;default:t=["No gym available in city!"]}return{first:g,second:()=>t}},"Perform Bladeburner Actions":e=>({first:y,second:t=>"Take on contracts"===t?function(e){const t=r.J5.bladeburner;if(null===t)return["------"];let n=t.getContractNamesNetscriptFn();for(const t of r.J5.sleeves)if(e!==t&&(0,f.N)(t.currentWork)&&"Contracts"===t.currentWork.actionType){const e=t.currentWork;n=n.filter((t=>t!=e.actionName))}return 0===n.length?["------"]:n}(e):["------"]}),"Shock Recovery":()=>({first:["------"],second:()=>["------"]}),Synchronize:()=>({first:["------"],second:()=>["------"]})},w={"------":()=>!0,"Work for Company":e=>b(e).length>0,"Work for Faction":e=>v(e).length>0,"Commit Crime":()=>!0,"Take University Course":e=>[i.CityName.Aevum,i.CityName.Sector12,i.CityName.Volhaven].includes(e.city),"Workout at Gym":e=>[i.CityName.Aevum,i.CityName.Sector12,i.CityName.Volhaven].includes(e.city),"Perform Bladeburner Actions":()=>!!r.J5.bladeburner,"Shock Recovery":e=>e.shock>0,Synchronize:e=>e.sync<100};function E(e){const t=function(e){const t=e.currentWork;if(null===t)return["------","------","------"];switch(t.type){case d.qG.COMPANY:return["Work for Company",t.companyName,"------"];case d.qG.FACTION:{const e={[i.FactionWorkType.field]:"Field Work",[i.FactionWorkType.hacking]:"Hacking Contracts",[i.FactionWorkType.security]:"Security Work"};return["Work for Faction",t.factionName,e[t.factionWorkType]??""]}case d.qG.BLADEBURNER:return"Contracts"===t.actionType?["Perform Bladeburner Actions","Take on contracts",t.actionName]:["Perform Bladeburner Actions",t.actionName,"------"];case d.qG.CLASS:return t.isGym()?["Workout at Gym",{[i.GymType.strength]:"Train Strength",[i.GymType.defense]:"Train Defense",[i.GymType.dexterity]:"Train Dexterity",[i.GymType.agility]:"Train Agility"}[t.classType],t.location]:["Take University Course",t.classType,t.location];case d.qG.CRIME:return["Commit Crime",(0,h.m)("CrimeType").fuzzyGetMember(t.crimeType,!0),"------"];case d.qG.SUPPORT:return["Perform Bladeburner Actions","Support main sleeve","------"];case d.qG.INFILTRATE:return["Perform Bladeburner Actions","Infiltrate Synthoids","------"];case d.qG.RECOVERY:return["Shock Recovery","------","------"];case d.qG.SYNCHRO:return["Synchronize","------","------"]}}(e.sleeve),[n,r]=(0,a.useState)(t[0]),[o,s]=(0,a.useState)(t[1]),[u,m]=(0,a.useState)(t[2]),f=Object.keys(w).filter((t=>w[t](e.sleeve))),p=k[n];if(void 0===p)throw new Error(`No function for task '${n}'`);const g=p(e.sleeve),y=g.second(o);return g.first.length>0&&!g.first.includes(o)&&(s(g.first[0]),e.setABC([n,g.first[0],u])),y.length>0&&!y.includes(u)&&(m(y[0]),e.setABC([n,o,y[0]])),a.createElement(a.Fragment,null,a.createElement(l.Z,{onChange:function(t){const a=t.target.value,o=k[a];if(void 0===o)throw new Error(`No function for task '${n}'`);const i=o(e.sleeve),l=i.second(i.first[0])??["------"];m(l[0]),s(i.first[0]),r(a),e.setABC([a,i.first[0],l[0]])},value:n,sx:{width:"100%"}},f.map((e=>a.createElement(c.Z,{key:e,value:e},e)))),!(1===g.first.length&&"------"===g.first[0])&&a.createElement(a.Fragment,null,a.createElement(l.Z,{onChange:function(t){s(t.target.value),e.setABC([n,t.target.value,u])},value:o,sx:{width:"100%"}},g.first.map((e=>a.createElement(c.Z,{key:e,value:e},e))))),!(1===y.length&&"------"===y[0])&&a.createElement(a.Fragment,null,a.createElement(l.Z,{onChange:function(t){m(t.target.value),e.setABC([n,o,t.target.value])},value:u,sx:{width:"100%"}},y.map((e=>a.createElement(c.Z,{key:e,value:e},e))))))}},97714:(e,t,n)=>{"use strict";n.d(t,{i:()=>d});var a=n(67294),r=n(81138),o=n(56798),i=n(49173),s=n(33244),l=n(72938),c=n(72360),u=n(86091),m=n(51087),f=n(39463),h=n(48672);function d(e){function t(t){i.J5.canAfford(l.t.TravelCost)||(0,f.X)("You cannot afford to have this sleeve travel to another city"),e.sleeve.city=t,i.J5.loseMoney(l.t.TravelCost,"sleeves"),e.sleeve.stopWork(),e.rerender(),e.onClose()}return a.createElement(h.u,{open:e.open,onClose:e.onClose},a.createElement(a.Fragment,null,a.createElement(r.Z,null,"Have this sleeve travel to a different city. This affects the gyms and universities at which this sleeve can study. Traveling to a different city costs ",a.createElement(c.W,{money:l.t.TravelCost,forPurchase:!0}),". It will also set your current sleeve task to idle."),m.Z.DisableASCIIArt?Object.values(s.CityName).map((e=>a.createElement(o.Z,{key:e,onClick:()=>t(e)},e))):a.createElement(u.b,{currentCity:e.sleeve.city,onTravel:e=>t(e)})))}},46085:(e,t,n)=>{"use strict";function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return 1+t*Math.pow(e,.8)/600}n.d(t,{f:()=>a})},509:(e,t,n)=>{"use strict";n.d(t,{He:()=>l,Zz:()=>c,_h:()=>u});var a=n(72938),r=n(97740),o=n(27178),i=n(46085);function s(e){let t=1+e/100;return isNaN(t)&&(t=1),t*r.dQ.FactionWorkRepGain}function l(e,t){return(e.skills.hacking+e.skills.intelligence/3)/a.t.MaxSkillLevel*e.mults.faction_rep*(0,i.f)(e.skills.intelligence,1)*s(t)*(0,o.J6)()}function c(e,t){return.9*(e.skills.strength+e.skills.defense+e.skills.dexterity+e.skills.agility+(e.skills.hacking+e.skills.intelligence)*(0,o.J6)())/a.t.MaxSkillLevel/4.5*e.mults.faction_rep*s(t)*(0,i.f)(e.skills.intelligence,1)}function u(e,t){return.9*(e.skills.strength+e.skills.defense+e.skills.dexterity+e.skills.agility+e.skills.charisma+(e.skills.hacking+e.skills.intelligence)*(0,o.J6)())/a.t.MaxSkillLevel/5.5*e.mults.faction_rep*s(t)*(0,i.f)(e.skills.intelligence,1)}},22738:(e,t,n)=>{"use strict";function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.max(Math.floor(t*(32*Math.log(e+534.6)-200)),1)}function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.exp((e/t+200)/32)-534.6}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=a(e,t),o=n+1;let i=r(n,t);i<0&&(i=0);let s=r(o,t);s<0&&(s=0);const l=e=>100*(e-i)/(s-i);let c=s-i!=0?l(e):99.99;c<0&&(c=0),c>100&&(c=100);let u=e-i,m=s-e;return u<0&&(u=0),m<0&&(m=0),{currentSkill:n,nextSkill:o,baseExperience:i,experience:e,nextExperience:s,currentExperience:u,remainingExperience:m,progress:c}}n.d(t,{DA:()=>r,VI:()=>o,gX:()=>a})},49173:(e,t,n)=>{"use strict";n.d(t,{J5:()=>o,Sl:()=>i,bX:()=>s});var a=n(52107),r=n(94515);let o;function i(e){o=e}function s(e){const t=JSON.parse(e,r.Ro);return t.money=parseFloat(t.money+""),t.exploits=(0,a.bx)(t.exploits),t}},72805:(e,t,n)=>{"use strict";n.d(t,{W:()=>T,Y:()=>A});var a=n(33244),r=n(99745),o=n(62586),i=n(32927),s=n(58427),l=n(94542),c=n(29538),u=n(7872),m=n(49173),f=n(71828),h=n(46570),d=n(97467),p=n(2517),g=n(40425),y=n(35102),b=n(65065),v=n(39463),k=n(78573),w=n(30286),E=n(1041),S=n(72938),C=n(85167),x=n(73440);const N=25e7;function M(e){setTimeout((()=>(0,v.X)(e)),200)}function A(){(0,r.j2)();const e=m.J5.factions.concat(m.J5.factionInvitations).filter((function(e){return s.i[e].getInfo().keep}));m.J5.prestigeAugmentation(),(0,u.Zh)();const t=m.J5.getHomeComputer();(0,d.a9)(),(0,d.jG)(t),(0,p.VQ)(t),m.J5.hasAugmentation(a.AugmentationName.Neurolink,!0)&&(t.programs.push(a.CompletedProgramName.ftpCrack),t.programs.push(a.CompletedProgramName.relaySmtp)),m.J5.hasAugmentation(a.AugmentationName.CashRoot,!0)&&(m.J5.setMoney(1e6),t.programs.push(a.CompletedProgramName.bruteSsh)),m.J5.hasAugmentation(a.AugmentationName.PCMatrix,!0)&&(t.programs.push(a.CompletedProgramName.deepScan1),t.programs.push(a.CompletedProgramName.autoLink)),(m.J5.sourceFileLvl(5)>0||5===m.J5.bitNodeN)&&t.programs.push(a.CompletedProgramName.formulas),(0,d.Bj)(m.J5.getHomeComputer());for(const e of Object.values(o.O))e.prestigeAugmentation();for(const e of Object.values(s.i))e.prestigeAugmentation();null!==b.o.action&&b.o.finishAction(!0),b.o.clear(),C.sx.emit(),(0,x.p)(),m.J5.factionInvitations=m.J5.factionInvitations.concat(e);for(const t of e)s.i[t].alreadyInvited=!0;m.J5.reapplyAllAugmentations(),m.J5.reapplyAllSourceFiles(),m.J5.hp.current=m.J5.hp.max,m.J5.applyEntropy(m.J5.entropy);const n=m.J5.gang;if(n){const e=s.i[n.facName];e&&(0,l.Bj)(e);const t=.95;for(const e of n.members)e.hack_asc_points*=t,e.str_asc_points*=t,e.def_asc_points*=t,e.dex_asc_points*=t,e.agi_asc_points*=t,e.cha_asc_points*=t}if(3===m.J5.bitNodeN&&t.messages.push(a.LiteratureName.CorporationManagementHandbook),m.J5.bladeburner&&m.J5.bladeburner.prestige(),8===m.J5.bitNodeN&&(m.J5.money=N),(8===m.J5.bitNodeN||m.J5.sourceFileLvl(8)>0)&&(m.J5.hasWseAccount=!0,m.J5.hasTixApiAccess=!0),m.J5.hasWseAccount&&(0,y.T_)(),m.J5.hasAugmentation(a.AugmentationName.TheRedPill,!0)){const e=(0,d.WT)(g.r.WorldDaemon),t=(0,d.WT)(g.r.DaedalusServer);e&&t&&(e.serversOnNetwork.push(t.hostname),t.serversOnNetwork.push(e.hostname))}m.J5.hasAugmentation(a.AugmentationName.StaneksGift1,!0)&&(0,l.Bj)(s.i[a.FactionName.ChurchOfTheMachineGod]),k.y$.prestigeAugmentation(),(0,h.i)(),w.Q.clear(),E.Y.clear()}function T(e){(0,r.j2)(),m.J5.prestigeSourceFile(),(0,u.Zh)();const t=m.J5.getHomeComputer();null!==b.o.action&&b.o.finishAction(!0),b.o.clear(),C.sx.emit(),(0,d.a9)(),(0,d.jG)(t),(0,p.VQ)(t);for(const e of t.scripts.values())e.ramUsage=null;(0,d.Bj)(m.J5.getHomeComputer()),m.J5.sourceFileLvl(9)>=2?t.setMaxRam(128):m.J5.sourceFileLvl(1)>0?t.setMaxRam(32):t.setMaxRam(8),t.cpuCores=1;for(const e of Object.values(o.O))e.prestigeSourceFile();for(const e of Object.values(s.i))e.prestigeSourceFile();if(null!==b.o.action&&b.o.finishAction(!0),m.J5.sourceFileLvl(12)>0&&m.J5.augmentations.push({name:a.AugmentationName.NeuroFluxGovernor,level:m.J5.sourceFileLvl(12)}),(0,x.p)(),m.J5.reapplyAllAugmentations(),m.J5.reapplyAllSourceFiles(),(m.J5.sourceFileLvl(5)>0||5===m.J5.bitNodeN)&&t.programs.push(a.CompletedProgramName.formulas),3===m.J5.bitNodeN&&(t.messages.push(a.LiteratureName.CorporationManagementHandbook),M("You received a copy of the Corporation Management Handbook on your home computer. Read it if you need help getting started with Corporations!")),6!==m.J5.bitNodeN&&7!==m.J5.bitNodeN||M("NSA would like to have a word with you once you're ready."),8===m.J5.bitNodeN&&(m.J5.money=N),(8===m.J5.bitNodeN||m.J5.sourceFileLvl(8)>0)&&(m.J5.hasWseAccount=!0,m.J5.hasTixApiAccess=!0),10===m.J5.bitNodeN&&M("Seek out The Covenant if you'd like to purchase a new sleeve or two! And see what VitaLife in New Tokyo has to offer for you"),12===m.J5.bitNodeN&&m.J5.sourceFileLvl(10)>100&&M("Saynt_Garmo is watching you"),13===m.J5.bitNodeN&&M(`Trouble is brewing in ${a.CityName.Chongqing}`),m.J5.hasWseAccount?(0,y.T_)():(0,y.wW)(),(0,i.s8)(),m.J5.sourceFileLvl(9)>=3||9===m.J5.bitNodeN){const e=m.J5.createHacknetServer();e.level=100,e.cores=10,e.cache=5,e.updateHashRate(m.J5.mults.hacknet_node_money),e.updateHashCapacity(),(0,c.TN)()}13===m.J5.bitNodeN&&(m.J5.money=S.t.TravelCost),k.y$.prestigeSourceFile(),0===m.J5.sourceFileLvl(5)||e||m.J5.gainIntelligenceExp(300),f.$.splice(0,f.$.length),(0,h.i)()}},45813:(e,t,n)=>{"use strict";let a;n.d(t,{V:()=>a}),function(e){e.nuke="NUKE.exe",e.bruteSsh="BruteSSH.exe",e.ftpCrack="FTPCrack.exe",e.relaySmtp="relaySMTP.exe",e.httpWorm="HTTPWorm.exe",e.sqlInject="SQLInject.exe",e.deepScan1="DeepscanV1.exe",e.deepScan2="DeepscanV2.exe",e.serverProfiler="ServerProfiler.exe",e.autoLink="AutoLink.exe",e.formulas="Formulas.exe",e.bitFlume="b1t_flum3.exe",e.flight="fl1ght.exe"}(a||(a={}))},67207:(e,t,n)=>{"use strict";n.d(t,{$:()=>r});var a=n(84555);class r{constructor(e){let{name:t,create:n,run:r}=e;this.name=(0,a.P1)(t),this.create=n,this.run=r}}},11397:(e,t,n)=>{"use strict";n.d(t,{c:()=>i});var a=n(49173),r=n(58073),o=n(21623);function i(){const e=[];for(const[t,n]of(0,o.m0)(r.B)){const r=n.create;null!=r&&(a.J5.hasProgram(t)||r.req()&&e.push(n))}return e}},58073:(e,t,n)=>{"use strict";n.d(t,{B:()=>g});var a=n(67207),r=n(72938),o=n(89916),i=n(65065),s=n(49173),l=n(49802),c=n(97467),u=n(22115),m=n(97740),f=n(37334),h=n(49708),d=n(33244);function p(e){return function(){return s.J5.skills.hacking+s.J5.skills.intelligence/2>=e}}const g={[d.CompletedProgramName.nuke]:new a.$({name:d.CompletedProgramName.nuke,create:{level:1,tooltip:"This virus is used to gain root access to a machine if enough ports are opened.",req:p(1),time:r.t.MillisecondsPerFiveMinutes},run:(e,t)=>{if(t instanceof o.x)return t.hasAdminRights?(i.o.print("You already have root access to this computer. There is no reason to run NUKE.exe"),void i.o.print("You can now run scripts on this server.")):t.openPortCount>=t.numOpenPortsRequired?(t.hasAdminRights=!0,i.o.print("NUKE successful! Gained root access to "+t.hostname),void i.o.print("You can now run scripts on this server.")):void i.o.print("NUKE unsuccessful. Not enough ports have been opened");i.o.error("Cannot nuke this kind of server.")}}),[d.CompletedProgramName.bruteSsh]:new a.$({name:d.CompletedProgramName.bruteSsh,create:{level:50,tooltip:"This program executes a brute force attack that opens SSH ports",req:p(50),time:2*r.t.MillisecondsPerFiveMinutes},run:(e,t)=>{t instanceof o.x?t.sshPortOpen?i.o.print("SSH Port (22) is already open!"):(t.sshPortOpen=!0,i.o.print("Opened SSH Port(22)!"),t.openPortCount++):i.o.error("Cannot run BruteSSH.exe on this kind of server.")}}),[d.CompletedProgramName.ftpCrack]:new a.$({name:d.CompletedProgramName.ftpCrack,create:{level:100,tooltip:"This program cracks open FTP ports",req:p(100),time:r.t.MillisecondsPerHalfHour},run:(e,t)=>{t instanceof o.x?t.ftpPortOpen?i.o.print("FTP Port (21) is already open!"):(t.ftpPortOpen=!0,i.o.print("Opened FTP Port (21)!"),t.openPortCount++):i.o.error("Cannot run FTPCrack.exe on this kind of server.")}}),[d.CompletedProgramName.relaySmtp]:new a.$({name:d.CompletedProgramName.relaySmtp,create:{level:250,tooltip:"This program opens SMTP ports by redirecting data",req:p(250),time:r.t.MillisecondsPer2Hours},run:(e,t)=>{t instanceof o.x?t.smtpPortOpen?i.o.print("SMTP Port (25) is already open!"):(t.smtpPortOpen=!0,i.o.print("Opened SMTP Port (25)!"),t.openPortCount++):i.o.error("Cannot run relaySMTP.exe on this kind of server.")}}),[d.CompletedProgramName.httpWorm]:new a.$({name:d.CompletedProgramName.httpWorm,create:{level:500,tooltip:"This virus opens up HTTP ports",req:p(500),time:r.t.MillisecondsPer4Hours},run:(e,t)=>{t instanceof o.x?t.httpPortOpen?i.o.print("HTTP Port (80) is already open!"):(t.httpPortOpen=!0,i.o.print("Opened HTTP Port (80)!"),t.openPortCount++):i.o.error("Cannot run HTTPWorm.exe on this kind of server.")}}),[d.CompletedProgramName.sqlInject]:new a.$({name:d.CompletedProgramName.sqlInject,create:{level:750,tooltip:"This virus opens SQL ports",req:p(750),time:r.t.MillisecondsPer8Hours},run:(e,t)=>{t instanceof o.x?t.sqlPortOpen?i.o.print("SQL Port (1433) is already open!"):(t.sqlPortOpen=!0,i.o.print("Opened SQL Port (1433)!"),t.openPortCount++):i.o.error("Cannot run SQLInject.exe on this kind of server.")}}),[d.CompletedProgramName.deepScan1]:new a.$({name:d.CompletedProgramName.deepScan1,create:{level:75,tooltip:"This program allows you to use the scan-analyze command with a depth up to 5",req:p(75),time:r.t.MillisecondsPerQuarterHour},run:()=>{i.o.print("This executable cannot be run."),i.o.print("DeepscanV1.exe lets you run 'scan-analyze' with a depth up to 5.")}}),[d.CompletedProgramName.deepScan2]:new a.$({name:d.CompletedProgramName.deepScan2,create:{level:400,tooltip:"This program allows you to use the scan-analyze command with a depth up to 10",req:p(400),time:r.t.MillisecondsPer2Hours},run:()=>{i.o.print("This executable cannot be run."),i.o.print("DeepscanV2.exe lets you run 'scan-analyze' with a depth up to 10.")}}),[d.CompletedProgramName.serverProfiler]:new a.$({name:d.CompletedProgramName.serverProfiler,create:{level:75,tooltip:"This program is used to display hacking and Netscript-related information about servers",req:p(75),time:r.t.MillisecondsPerHalfHour},run:e=>{if(1!==e.length)return void i.o.error("Must pass a server hostname or IP as an argument for ServerProfiler.exe");const t=(0,c.WT)(e[0]);null!=t?t instanceof o.x?(i.o.print(t.hostname+":"),i.o.print("Server base security level: "+t.baseDifficulty),i.o.print("Server current security level: "+t.hackDifficulty),i.o.print("Server growth rate: "+t.serverGrowth),i.o.print(`Netscript hack() execution time: ${(0,l.UF)(1e3*(0,h.sI)(t,s.J5),!0)}`),i.o.print(`Netscript grow() execution time: ${(0,l.UF)(1e3*(0,h.Md)(t,s.J5),!0)}`),i.o.print(`Netscript weaken() execution time: ${(0,l.UF)(1e3*(0,h.Vp)(t,s.J5),!0)}`)):i.o.error("ServerProfiler.exe can only be run on normal servers."):i.o.error("Invalid server IP/hostname")}}),[d.CompletedProgramName.autoLink]:new a.$({name:d.CompletedProgramName.autoLink,create:{level:25,tooltip:"This program allows you to directly connect to other servers through the 'scan-analyze' command",req:p(25),time:r.t.MillisecondsPerQuarterHour},run:()=>{i.o.print("This executable cannot be run."),i.o.print("AutoLink.exe lets you automatically connect to other servers when using 'scan-analyze'."),i.o.print("When using scan-analyze, click on a server's hostname to connect to it.")}}),[d.CompletedProgramName.formulas]:new a.$({name:d.CompletedProgramName.formulas,create:{level:1e3,tooltip:"This program allows you to use the formulas API",req:p(1e3),time:r.t.MillisecondsPer4Hours},run:()=>{i.o.print("This executable cannot be run."),i.o.print("Formulas.exe lets you use the formulas API.")}}),[d.CompletedProgramName.bitFlume]:new a.$({name:d.CompletedProgramName.bitFlume,create:{level:1,tooltip:"This program creates a portal to the BitNode Nexus (allows you to restart and switch BitNodes)",req:function(){return s.J5.sourceFiles.size>0&&s.J5.skills.hacking>=1},time:r.t.MillisecondsPerFiveMinutes/20},run:()=>{f.n.emit()}}),[d.CompletedProgramName.flight]:new a.$({name:d.CompletedProgramName.flight,create:null,run:()=>{const e=m.dQ.DaedalusAugsRequirement;if(!(s.J5.augmentations.length>=e&&s.J5.money>1e11&&s.J5.skills.hacking>=2500))return i.o.print(`Augmentations: ${s.J5.augmentations.length} / ${e}`),i.o.print(`Money: ${(0,u.lb)(s.J5.money)} / $100b`),void i.o.print(`Hacking skill: ${s.J5.skills.hacking} / 2500`);i.o.print("We will contact you."),i.o.print(`-- ${d.FactionName.Daedalus} --`)}})}},30286:(e,t,n)=>{"use strict";n.d(t,{Q:()=>w,d:()=>E});var a=n(67294),r=n(96486),o=n(78016),i=n(81138),s=n(30120),l=n(28881),c=n(56798),u=n(62026),m=n(21366),f=n(19620),h=n(49173),d=n(33244),p=n(52947),g=n(24815),y=n(51087),b=n(58073),v=n(95814),k=n(88775);const w=new Set;function E(){(0,k.S)(200);const e=[...Object.values(b.B)].filter((e=>{const t=e.create;return null!==t&&(e.name!==d.CompletedProgramName.bitFlume||t.req())})).sort(((e,t)=>{var n,a;return h.J5.hasProgram(e.name)?1:h.J5.hasProgram(t.name)?-1:((null===(n=e.create)||void 0===n?void 0:n.level)??0)-((null===(a=t.create)||void 0===a?void 0:a.level)??0)}));(0,a.useEffect)((()=>{e.forEach((e=>{w.add(e.name)}))}));const t=e=>Math.ceil(Math.max(e-(h.J5.skills.hacking+h.J5.skills.intelligence/2),0));return a.createElement(o.Z,{disableGutters:!0,maxWidth:"lg",sx:{mx:0,mb:10}},a.createElement(i.Z,{variant:"h4"},"Create program"),a.createElement(i.Z,null,"This page displays any programs that you are able to create. Writing the code for a program takes time, which can vary based on how complex the program is. If you are working on creating a program you can cancel at any time. Your progress will be saved and you can continue later."),a.createElement(s.Z,{sx:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",my:1}},e.map((e=>{const n=e.create;if(null===n)return a.createElement(a.Fragment,null);const o=(e=>{const t=(0,r.find)(h.J5.getHomeComputer().programs,(t=>t.startsWith(e)&&t.endsWith("%-INC")));if(!t)return-1;const n=t.split("-");if(3!=n.length)return-1;const a=Number(n[1].slice(0,-1));return isNaN(a)||a<0||a>=100?-1:a})(e.name);return a.createElement(s.Z,{component:l.Z,sx:{p:1,opacity:h.J5.hasProgram(e.name)?.75:1},key:e.name},a.createElement(a.Fragment,null,a.createElement(i.Z,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},h.J5.hasProgram(e.name)&&a.createElement(u.Z,{sx:{mr:1}})||n.req()&&a.createElement(m.Z,{sx:{mr:1}})||a.createElement(f.Z,{sx:{mr:1}}),e.name),!h.J5.hasProgram(e.name)&&n.req()&&((0,v.o)(h.J5.currentWork)&&h.J5.currentWork.programName===e.name?a.createElement(c.Z,{sx:{my:1,width:"100%"},onClick:e=>{e.isTrusted&&(h.J5.startFocusing(),p.F.toPage(g.T3.Work))}},"Resume focus"):a.createElement(c.Z,{sx:{my:1,width:"100%"},onClick:t=>{t.isTrusted&&((0,v.o)(h.J5.currentWork)&&h.J5.finishWork(!0),h.J5.startWork(new v.m({singularity:!1,programName:e.name})),h.J5.startFocusing(),p.F.toPage(g.T3.Work))}},"Create program")),h.J5.hasProgram(e.name)||0===t(n.level)||a.createElement(i.Z,{color:y.Z.theme.hack},a.createElement("b",null,"Unlocks in:")," ",t(n.level)," hacking levels"),-1!==o&&a.createElement(i.Z,{color:y.Z.theme.infolight},a.createElement("b",null,"Current completion:")," ",o,"%"),(0,v.o)(h.J5.currentWork)&&h.J5.currentWork.programName===e.name&&a.createElement(i.Z,{color:y.Z.theme.infolight},a.createElement("b",null,"Current completion:")," ",(100*h.J5.currentWork.unitCompleted/h.J5.currentWork.unitNeeded()).toFixed(2),"%"),a.createElement(i.Z,null,n.tooltip)))}))))}},98235:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var a=n(67294),r=n(49173),o=n(16264),i=n(39463),s=n(52947),l=n(24815),c=n(72805);function u(e,t,n){e?0===r.J5.sourceFileLvl(5)&&5!==n&&(r.J5.skills.intelligence=0,r.J5.exp.intelligence=0):function(e){const t="SourceFile"+e.toString(),n=o.J[t];if(!n)return void console.error(`Could not find source file for Bit node: ${e}`);let s=r.J5.sourceFileLvl(e);s>0?s>=3&&12!==e?(0,i.X)(`The Source-File for the BitNode you just destroyed, ${n.name}, is already at max level!`):(s++,r.J5.sourceFiles.set(e,s),(0,i.X)(`${n.name} was upgraded to level ${s} for destroying its corresponding BitNode!`)):(r.J5.sourceFiles.set(e,1),5===e&&0===r.J5.skills.intelligence&&(r.J5.skills.intelligence=1),(0,i.X)(a.createElement(a.Fragment,null,"You received a Source-File for destroying a BitNode!",a.createElement("br",null),a.createElement("br",null),n.name,a.createElement("br",null),a.createElement("br",null),n.info)))}(t),5===n&&0===r.J5.skills.intelligence&&(r.J5.skills.intelligence=1),r.J5.bitNodeN=n,6===n?s.F.toPage(l.T3.BladeburnerCinematic):s.F.toPage(l.T3.Terminal),(0,c.W)(e)}},72612:(e,t,n)=>{"use strict";n.d(t,{N1:()=>o,Ow:()=>i,ZE:()=>a,g$:()=>r});class a{jsonrpc="2.0";constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.method=e.method,this.result=e.result,this.params=e.params,this.error=e.error,this.id=e.id}}function r(e){const t=e;return"string"==typeof t.server&&"string"==typeof t.filename&&"string"==typeof t.content}function o(e){const t=e;return"string"==typeof t.server&&"string"==typeof t.filename}function i(e){return"string"==typeof e.server}},41375:(e,t,n)=>{"use strict";n.d(t,{b:()=>u});var a=n(64962),r=n(48897),o=n(69917),i=n(97467),s=n(72612),l=n(42923);function c(e,t){let{id:n}=t;return new s.ZE({error:e,id:n})}const u={pushFile:function(e){if(!(0,s.g$)(e.params))return c("Misses parameters",e);const t=e.params,n=(0,a.Iw)(t.filename);if(!n)return c("Invalid file path",e);const l=(0,i.WT)(t.server);return l?(0,r.e)(n)||(0,o.UH)(n)?(l.writeToContentFile(n,t.content),new s.ZE({result:"OK",id:e.id})):c("Invalid file extension",e):c("Server hostname invalid",e)},getFile:function(e){if(!(0,s.N1)(e.params))return c("Message misses parameters",e);const t=e.params,n=(0,a.Iw)(t.filename);if(!n)return c("Invalid file path",e);const l=(0,i.WT)(t.server);if(!l)return c("Server hostname invalid",e);if(!(0,r.e)(n)&&!(0,o.UH)(n))return c("Invalid file extension",e);const u=l.getContentFile(n);return u?new s.ZE({result:u.content,id:e.id}):c("File doesn't exist",e)},deleteFile:function(e){if(!(0,s.N1)(e.params))return c("Message misses parameters",e);const t=e.params,n=(0,a.Iw)(t.filename);if(!n)return c("Invalid filename",e);const r=(0,i.WT)(t.server);if(!r)return c("Server hostname invalid",e);const o=r.removeFile(n);return o.res?new s.ZE({result:"OK",id:e.id}):c(o.msg??"Failed",e)},getFileNames:function(e){if(!(0,s.Ow)(e.params))return c("Message misses parameters",e);const t=(0,i.WT)(e.params.server);if(!t)return c("Server hostname invalid",e);const n=[...t.textFiles.keys(),...t.scripts.keys()];return new s.ZE({result:n,id:e.id})},getAllFiles:function(e){if(!(0,s.Ow)(e.params))return c("Message misses parameters",e);const t=(0,i.WT)(e.params.server);if(!t)return c("Server hostname invalid",e);const n=[...t.scripts,...t.textFiles].map((e=>{let[t,n]=e;return{filename:t,content:n.content}}));return new s.ZE({result:n,id:e.id})},calculateRam:function(e){if(!(0,s.N1)(e.params))return c("Message misses parameters",e);const t=e.params,n=(0,a.Iw)(t.filename);if(!n)return c("Invalid filename",e);const r=(0,i.WT)(t.server);if(!r)return c("Server hostname invalid",e);if(!(0,o.UH)(n))return c("Filename isn't a script filename",e);const l=r.scripts.get(n);if(!l)return c("File doesn't exist",e);const u=l.getRamUsage(r.scripts);return u?new s.ZE({result:u,id:e.id}):c("Ram cost could not be calculated",e)},getDefinitionFile:function(e){return new s.ZE({result:l.Z+"",id:e.id})}}},10278:(e,t,n)=>{"use strict";n.d(t,{N:()=>s});var a=n(72612),r=n(41375),o=n(32369),i=n(33244);class s{static protocol="ws";constructor(e,t){this.ipaddr=e,this.port=t}stopConnection(){var e;null===(e=this.connection)||void 0===e||e.close()}startConnection(){const e=s.protocol+"://"+this.ipaddr+":"+this.port;this.connection=new WebSocket(e),this.connection.addEventListener("error",(t=>o.sC.emit(`Error with websocket ${e}, details: ${JSON.stringify(t)}`,i.ToastVariant.ERROR,5e3))),this.connection.addEventListener("message",l),this.connection.addEventListener("open",(()=>o.sC.emit(`Remote API connection established on ${this.ipaddr}:${this.port}`,i.ToastVariant.SUCCESS,2e3))),this.connection.addEventListener("close",(()=>o.sC.emit("Remote API connection closed",i.ToastVariant.WARNING,2e3)))}}function l(e){const t=JSON.parse(e.data);if(!t.method||!r.b[t.method]){const e=new a.ZE({error:"Unknown message received",id:t.id});return void this.send(JSON.stringify(e))}const n=r.b[t.method](t);n&&this.send(JSON.stringify(n))}},60468:(e,t,n)=>{"use strict";n.d(t,{j:()=>i,v:()=>s});var a=n(51087),r=n(10278);let o;function i(){o&&o.stopConnection(),0!==a.Z.RemoteFileApiPort&&(o=new r.N("localhost",a.Z.RemoteFileApiPort),o.startConnection())}function s(){return o&&null!=o.connection&&1==o.connection.readyState}},34716:(e,t,n)=>{"use strict";n.d(t,{Ex:()=>P,LR:()=>_,wc:()=>F});var a=n(69895),r=n(62586),o=n(72938),i=n(58427),s=n(59471),l=n(49173),c=n(97467),u=n(51087),m=n(35102),f=n(78573),h=n(32369),d=n(93936),p=n(39463),g=n(94515),y=n(22573),b=n(18476),v=n(33244),k=n(15571),w=n(10333),E=n(19652),S=n(4478),C=n(2517),x=n(40425),N=n(72739),M=n(65065),A=n(21623),T=n(33563);class L{PlayerSave="";AllServersSave="";CompaniesSave="";FactionsSave="";AliasesSave="";GlobalAliasesSave="";StockMarketSave="";SettingsSave="";VersionSave="";AllGangsSave="";LastExportBonus="0";StaneksGiftSave="";getSaveString(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.PlayerSave=JSON.stringify(l.J5);const t=u.Z.ExcludeRunningScriptsFromSave;return e&&(u.Z.ExcludeRunningScriptsFromSave=!0),this.AllServersSave=(0,c.oU)(),u.Z.ExcludeRunningScriptsFromSave=t,this.CompaniesSave=JSON.stringify(r.O),this.FactionsSave=JSON.stringify(i.i),this.AliasesSave=JSON.stringify(Object.fromEntries(a.$z.entries())),this.GlobalAliasesSave=JSON.stringify(Object.fromEntries(a.Ui.entries())),this.StockMarketSave=JSON.stringify(m.xO),this.SettingsSave=JSON.stringify(u.Z),this.VersionSave=JSON.stringify(o.t.VersionNumber),this.LastExportBonus=JSON.stringify(d.GO),this.StaneksGiftSave=JSON.stringify(f.y$),l.J5.gang&&(this.AllGangsSave=JSON.stringify(s.vS)),btoa(unescape(encodeURIComponent(JSON.stringify(this))))}saveGame(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const t=(new Date).getTime();l.J5.lastSave=t;const n=this.getSaveString();return new Promise(((a,r)=>{(0,y.a1)(n).then((()=>{const r={playerIdentifier:l.J5.identifier,fileName:this.getSaveFileName(),save:n,savedOn:t};return(0,w.cq)(r),e&&h.sC.emit("Game Saved!",v.ToastVariant.INFO,2e3),a()})).catch((e=>(console.error(e),r())))}))}getSaveFileName(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=Math.round(Date.now()/1e3),n=l.J5.bitNodeN;let a=`bitburnerSave_${t}_BN${n}x${l.J5.sourceFileLvl(n)+1}.json`;return e&&(a="RECOVERY"+a),a}exportGame(){const e=this.getSaveString();_(this.getSaveFileName(),e)}importGame(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!e||""===e)throw new Error("Invalid import string");return(0,y.a1)(e).then((()=>(t&&setTimeout((()=>location.reload()),1e3),Promise.resolve())))}getImportStringFromFile(e){if(null===e)return Promise.reject(new Error("No file selected"));const t=e[0];if(!t)return Promise.reject(new Error("Invalid file selected"));const n=new FileReader,a=new Promise(((e,t)=>{n.onload=function(n){const a=n.target;if(null===a)return t(new Error("Error importing file"));const r=a.result;if("string"!=typeof r)return t(new Error("FileReader event was not type string"));e(r)}}));return n.readAsText(t),a}async getImportDataFromString(e){var t,n,a;if(!e||""===e)throw new Error("Invalid import string");let r,o;try{r=window.atob(e),r=r.trim()}catch(e){console.error(e)}if(!r||""===r)return Promise.reject(new Error("Save game had not content or was not base64 encoded"));try{o=JSON.parse(r)}catch(e){console.error(e)}if(!o||"BitburnerSaveObject"!==o.ctor||!o.data)return Promise.reject(new Error("Save game did not seem valid"));const i={base64:e},s=(0,l.bX)(o.data.PlayerSave),c={identifier:s.identifier,lastSave:s.lastSave,totalPlaytime:s.totalPlaytime,money:s.money,skills:s.skills,augmentations:(null===(t=s.augmentations)||void 0===t?void 0:t.reduce(((e,t)=>e+t.level),0))??0,factions:(null===(n=s.factions)||void 0===n?void 0:n.length)??0,achievements:(null===(a=s.achievements)||void 0===a?void 0:a.length)??0,bitNode:s.bitNodeN,bitNodeLevel:s.sourceFileLvl(l.J5.bitNodeN)+1,sourceFiles:[...s.sourceFiles].reduce(((e,t)=>{let[n,a]=t;return e+a}),0)};return i.playerData=c,Promise.resolve(i)}toJSON(){return(0,g.L3)("BitburnerSaveObject",this)}static fromJSON(e){return(0,g.Id)(L,e.data)}}function R(e,t){for(const n of t)e=e.replace(n[0],n[1]);return e}function F(e){if(navigator.userAgent.includes("wv")&&navigator.userAgent.includes("Chrome/")&&setInterval((()=>{(0,p.X)("SCAM ALERT. This app is not official and you should uninstall it.")}),1e3),!e)return!1;e=decodeURIComponent(escape(atob(e)));const t=JSON.parse(e,g.Ro);if((0,l.Sl)((0,l.bX)(t.PlayerSave)),(0,c.mh)(t.AllServersSave),(0,r.U)(t.CompaniesSave),(0,i.m)(t.FactionsSave),Object.hasOwn(t,"StaneksGiftSave")?(0,f.n1)(t.StaneksGiftSave):(console.warn("Could not load Staneks Gift from save"),(0,f.n1)("")),Object.hasOwn(t,"AliasesSave"))try{(0,a.fW)(t.AliasesSave)}catch(e){console.warn("Could not load Aliases from save"),(0,a.fW)("")}else console.warn("Save file did not contain an Aliases property"),(0,a.fW)("");if(Object.hasOwn(t,"GlobalAliasesSave"))try{(0,a.Jm)(t.GlobalAliasesSave)}catch(e){console.warn("Could not load GlobalAliases from save"),(0,a.Jm)("")}else console.warn("Save file did not contain a GlobalAliases property"),(0,a.Jm)("");if(Object.hasOwn(t,"StockMarketSave"))try{(0,m.J9)(t.StockMarketSave)}catch(e){console.error("Couldn't load stock market:",e),(0,m.J9)("")}else(0,m.J9)("");if(Object.hasOwn(t,"SettingsSave"))try{u.Z.load(t.SettingsSave)}catch(e){console.error("SettingsSave was present but an error occurred while loading:"),console.error(e)}if(Object.hasOwn(t,"LastExportBonus"))try{d.ju(JSON.parse(t.LastExportBonus))}catch(e){d.ju((new Date).getTime()),console.error("ERROR: Failed to parse last export bonus Settings "+e)}if(l.J5.gang&&Object.hasOwn(t,"AllGangsSave"))try{(0,s.s9)(t.AllGangsSave)}catch(e){console.error("ERROR: Failed to parse AllGangsSave: "+e)}if(Object.hasOwn(t,"VersionSave"))try{const e=JSON.parse(t.VersionSave,g.Ro);!function(e){const t=l.J5;if("string"==typeof e){if(e<="0.41.2"&&null!=t.companyPosition&&"string"!=typeof t.companyPosition&&(t.companyPosition=t.companyPosition.data.positionName,null==t.companyPosition&&(t.companyPosition="")),e<"0.43.0"&&(""!==t.companyName&&null!=t.companyPosition&&""!==t.companyPosition&&(t.jobs[t.companyName]=t.companyPosition),delete t.companyPosition),e<"0.56.0"){for(const e of t.queuedAugmentations)"Graphene BranchiBlades Upgrade"===e.name&&(e.name="Graphene BrachiBlades Upgrade");for(const e of t.augmentations)"Graphene BranchiBlades Upgrade"===e.name&&(e.name="Graphene BrachiBlades Upgrade")}if(e<"0.56.1"){0===t.bladeburner&&(t.bladeburner=null),0===t.gang&&(t.gang=null);const e=t.getHomeComputer();for(let t=0;t0)for(const e of t.sleeves)if(e.augmentations&&0!==e.augmentations.length)for(const t of e.augmentations)"Graphene BranchiBlades Upgrade"===t.name&&(t.name="Graphene BrachiBlades Upgrade");if(e<12&&void 0!==t.resleeves&&delete t.resleeves,e<15&&(u.Z.EditorTheme={...E.Co}),e<16){i.i[v.FactionName.ShadowsOfAnarchy]=new S.a(v.FactionName.ShadowsOfAnarchy);for(const e of(0,c.XX)())for(const t of e.contracts)"HammingCodes: Integer to encoded Binary"==t.type&&(t.type="HammingCodes: Integer to Encoded Binary")}const n=()=>{t.hp={current:1,max:1};for(const e of t.sleeves)e.hp={current:1,max:1};t.exp.hacking=t.hacking_exp,t.exp.strength=t.strength_exp,t.exp.defense=t.defense_exp,t.exp.dexterity=t.dexterity_exp,t.exp.agility=t.agility_exp,t.exp.charisma=t.charisma_exp,t.exp.intelligence=t.intelligence_exp};if(e<17){let e=[...l.J5.augmentations];e=e.filter((e=>e.name===v.AugmentationName.NeuroFluxGovernor));const t=new k.e(v.AugmentationName.NeuroFluxGovernor);t.level=0;for(const n of e)t.level+=n.level;l.J5.augmentations=[...l.J5.augmentations.filter((e=>e.name!==v.AugmentationName.NeuroFluxGovernor)),t],n(),l.J5.reapplyAllAugmentations(),l.J5.reapplyAllSourceFiles()}if(e<20&&!(0,c.WT)(x.r.DarkWeb)){const e=(0,C.iw)({ip:(0,c.hG)(),hostname:x.r.DarkWeb,organizationName:"",isConnectedTo:!1,adminRights:!1,purchasedByPlayer:!1,maxRam:1});(0,c.jG)(e)}if(e<21){(0,b.y)(10);const e=t.createProgramName;e&&l.J5.getHomeComputer().pushProgram(e);const n=t.graftAugmentationName;n&&l.J5.augmentations.push({name:n,level:1})}if(e<22&&(n(),(0,N.b)()),e<23&&(t.currentWork=null),e<25){const e=["hacking_chance_mult","hacking_speed_mult","hacking_money_mult","hacking_grow_mult","hacking_mult","strength_mult","defense_mult","dexterity_mult","agility_mult","charisma_mult","hacking_exp_mult","strength_exp_mult","defense_exp_mult","dexterity_exp_mult","agility_exp_mult","charisma_exp_mult","company_rep_mult","faction_rep_mult","crime_money_mult","crime_success_mult","work_money_mult","hacknet_node_money_mult","hacknet_node_purchase_cost_mult","hacknet_node_ram_cost_mult","hacknet_node_core_cost_mult","hacknet_node_level_cost_mult","bladeburner_max_stamina_mult","bladeburner_stamina_gain_mult","bladeburner_analysis_mult","bladeburner_success_chance_mult","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","intelligence_exp","companyName","isWorking","workType","workCostMult","workExpMult","currentWorkFactionName","currentWorkFactionDescription","workHackExpGainRate","workStrExpGainRate","workDefExpGainRate","workDexExpGainRate","workAgiExpGainRate","workChaExpGainRate","workRepGainRate","workMoneyGainRate","workMoneyLossRate","workHackExpGained","workStrExpGained","workDefExpGained","workDexExpGained","workAgiExpGained","workChaExpGained","workRepGained","workMoneyGained","createProgramName","createProgramReqLvl","graftAugmentationName","timeWorkedGraftAugmentation","className","crimeType","timeWorked","timeWorkedCreateProgram","timeNeededToCompleteWork","factionWorkType","committingCrimeThruSingFn","singFnCrimeWorkerScript","hacking","max_hp","strength","defense","dexterity","agility","charisma","intelligence"],n=["gymStatType","bbAction","bbContract","hacking","strength","defense","dexterity","agility","charisma","intelligence","max_hp","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","intelligence_exp","hacking_mult","strength_mult","defense_mult","dexterity_mult","agility_mult","charisma_mult","hacking_exp_mult","strength_exp_mult","defense_exp_mult","dexterity_exp_mult","agility_exp_mult","charisma_exp_mult","hacking_chance_mult","hacking_speed_mult","hacking_money_mult","hacking_grow_mult","company_rep_mult","faction_rep_mult","crime_money_mult","crime_success_mult","work_money_mult","hacknet_node_money_mult","hacknet_node_purchase_cost_mult","hacknet_node_ram_cost_mult","hacknet_node_core_cost_mult","hacknet_node_level_cost_mult","bladeburner_max_stamina_mult","bladeburner_stamina_gain_mult","bladeburner_analysis_mult","bladeburner_success_chance_mult","className","crimeType","currentTask","currentTaskLocation","currentTaskMaxTime","currentTaskTime","earningsForSleeves","earningsForPlayer","earningsForTask","factionWorkType","gainRatesForTask","logs"];let a=Number(t.intelligence_exp);isNaN(a)&&(a=0),t.exp.intelligence+=a;for(const n of e)delete t[n];for(const e of t.sleeves){const t=e;let a=Number(t.intelligence_exp);isNaN(a)&&(a=0),t.exp.intelligence+=a;for(const t of n)delete e[t]}}if(e<27)for(const e of l.J5.sleeves)e.shock=100-e.shock;if(e<31){var a;M.o.warn("Migrating to 2.3.0, loading with no scripts.");for(const e of(0,c.XX)())e.savedScripts=[];null!==(a=t.hashManager)&&void 0!==a&&a.upgrades&&(t.hashManager.upgrades["Company Favor"]??=0),t.lastAugReset&&-1!==t.lastAugReset||(t.lastAugReset=t.lastUpdate-t.playtimeSinceLastAug),t.lastNodeRest&&-1!==t.lastNodeReset||(t.lastNodeReset=t.lastUpdate-t.playtimeSinceLastBitnode);const e=t.corporation;if(e&&Array.isArray(e.divisions)){var r;let t=2*e.valuation+100*e.revenue;isNaN(t)&&(t=3e11),l.J5.startCorporation(String(e.name),!!e.seedFunded),null===(r=l.J5.corporation)||void 0===r||r.addFunds(t),M.o.warn("Loading corporation from version prior to 2.3. Corporation has been reset.")}}if(e<32){let e=!1;if(l.J5.corporation)for(const t of l.J5.corporation.divisions.values())for(const n of(0,A.R3)(t.warehouses))for(const a of(0,A.R3)(n.materials)){const r=a.exports;a.exports=[];for(const o of r)try{const e=l.J5.corporation.divisions.get(o.division);if(!e)throw new Error(`Target division ${o.division} did not exist`);(0,T.DY)(e,o.city,a,o.amount)}catch(r){e=!0,console.error(`Failed to load export of material ${a.name} (${t.name} ${n.city})\nOriginal export details: ${JSON.stringify(o)}\nError: ${r}`)}}e&&M.o.error("Some material exports failed to validate while loading and have been removed. See console for more info.")}if(e<33)for(const e of(0,c.XX)())for(const t of e.scripts.values())t.server!==e.hostname&&(console.warn(`Detected script ${t.filename} on ${e.hostname} with incorrect server property: ${t.server}. Repairing.`),t.server=e.hostname)}(e),o.t.isDevBranch?setTimeout((()=>(0,p.X)("You are playing on the beta environment! This branch of the game features the latest developments in the game. This version may be unstable.\nPlease report any bugs/issues through the github repository (https://github.com/bitburner-official/bitburner-src/issues) or the Bitburner subreddit (reddit.com/r/bitburner).\n\n"+o.t.LatestUpdate)),1e3):e!==o.t.VersionNumber&&I()}catch(e){console.error("Error upgrading versions:",e),I()}else I();return!0}function I(){setTimeout((()=>(0,p.X)("New update!\nPlease report any bugs/issues through the GitHub repository or the Bitburner subreddit (reddit.com/r/bitburner).\n\n"+o.t.LatestUpdate)),1e3)}function _(e,t){const n=new Blob([t],{type:"text/plain"}),a=document.createElement("a"),r=URL.createObjectURL(n);a.href=r,a.download=e,document.body.appendChild(a),a.click(),setTimeout((function(){document.body.removeChild(a),window.URL.revokeObjectURL(r)}),0)}g.gY.BitburnerSaveObject=L;const P=new L},28274:(e,t,n)=>{"use strict";n.d(t,{w:()=>a});class a{constructor(e,t){this.url=e,this.module=t}}},1986:(e,t,n)=>{"use strict";let a;n.d(t,{m:()=>a}),function(e){e[e.SyntaxError=-1]="SyntaxError",e[e.ImportError=-2]="ImportError"}(a||(a={}))},6221:(e,t,n)=>{"use strict";n.d(t,{J:()=>f,w:()=>m});var a=n(49667),r=n(63230),o=n(1986),i=n(32310),s=n(69917),l=n(27757);const c="__SPECIAL_referenceWhile",u=".__GLOBAL__";function m(e){let t;try{t=(0,r.Qc)(e,{sourceType:"module",ecmaVersion:"latest"})}catch(e){return-1}let n=-1;return a.BE(t,{},{WhileStatement:(t,r,o)=>{!function(e){return"Literal"===e.type&&"raw"in e&&"true"===e.raw}(t.test)||function(e){let t=!1;return a.BE(e,{},{AwaitExpression:()=>{t=!0}}),t}(t)?t.body&&o(t.body,r):n=(e.slice(0,t.start).match(/\n/g)||[]).length+1}}),n}function f(e,t,n){try{return function(e,t,n){let m={};const f=new Set,h=[];function d(e,t){const n=function(e,t){const n=(0,r.Qc)(e,{sourceType:"module",ecmaVersion:"latest"}),o=t+u,i={};i[o]=new Set;const s={},l=[];function m(e,n){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;const r=i[e]||(i[e]=new Set),o=s[n];void 0!==o&&r.add(o),r.add(a+"."+n),r.add(n)}const f=Object.getOwnPropertyNames(Object.prototype);function h(){return{Identifier:(e,t)=>{f.includes(e.name)||m(t.key,e.name)},WhileStatement:(e,t,n)=>{m(t.key,c),e.test&&n(e.test,t),e.body&&n(e.body,t)},DoWhileStatement:(e,t,n)=>{m(t.key,c),e.test&&n(e.test,t),e.body&&n(e.body,t)},ForStatement:(e,t,n)=>{m(t.key,"__SPECIAL_referenceFor"),e.init&&n(e.init,t),e.test&&n(e.test,t),e.update&&n(e.update,t),e.body&&n(e.body,t)},IfStatement:(e,t,n)=>{m(t.key,"__SPECIAL_referenceIf"),e.test&&n(e.test,t),e.consequent&&n(e.consequent,t),e.alternate&&n(e.alternate,t)},MemberExpression:(e,t,n)=>{e.object&&n(e.object,t),e.property&&n(e.property,t)}}}return a.BE(n,{key:o},Object.assign({ImportDeclaration:(e,t)=>{const n=e.source.value;l.push(n);const a=i[t.key];if(void 0===a)throw new Error("set should not be undefined");a.add(n+u);for(let a=0;a{const n=t+"."+(null===e.id?"__SPECIAL_DEFAULT_EXPORT__":e.id.name);a.BE(e,{key:n},h())},ExportNamedDeclaration:(e,n,a)=>{if(null===e.declaration)for(const n of e.specifiers){const a=t+"."+n.exported.name;null!==e.source?(m(a,n.local.name,e.source.value),l.push(e.source.value)):n.exported.name!==n.local.name&&m(a,n.local.name)}else a(e.declaration,n)}},h())),{dependencyMap:i,additionalModules:l}}(e,t);f.add(t);for(let e=0;e0;){const t=h.shift();if(void 0===t)throw new Error("nextModule should not be undefined");if(t.startsWith("https://")||t.startsWith("http://"))continue;const a=(0,s.L6)(t,l.Jz,n?".script":".js");if(!a)return{errorCode:o.m.ImportError,errorMessage:`Invalid import path: "${t}"`};const r=e.get(a);if(!r)return{errorCode:o.m.ImportError,errorMessage:`No such file on server: "${a}"`};d(r.code,t)}let g=i.qS.Base;const y=[{type:"misc",name:"baseCost",cost:i.qS.Base}],b=Object.keys(m).filter((e=>e.startsWith(p))),v=new Set,k={};for(;b.length>0;){const e=b.shift();if(void 0===e)throw new Error("ref should not be undefined");if("hacknet"!==e||v.has("hacknet")||(g+=i.qS.HacknetNodes,y.push({type:"ns",name:"hacknet",cost:i.qS.HacknetNodes})),"document"!==e||v.has("document")||(g+=i.qS.Dom,y.push({type:"dom",name:"document",cost:i.qS.Dom})),"window"!==e||v.has("window")||(g+=i.qS.Dom,y.push({type:"dom",name:"window",cost:i.qS.Dom})),v.add(e),e.endsWith(".*")){const t=e.slice(0,e.length-2);for(const e of Object.keys(m).filter((e=>e.startsWith(t))))for(const t of m[e]||[])v.has(t)||b.push(t)}else for(const t of m[e]||[])v.has(t)||b.push(t);try{if(k[e])continue;k[e]=!0;const t=(e,n,a)=>{if(!n)return;const r=Object.entries(n).find((e=>{let[t]=e;return t===a}));if(void 0!==r&&("function"==typeof r[1]||"number"==typeof r[1]))return{func:r[1],refDetail:`${e}${a}`};for(const[e,r]of Object.entries(n)){const n=t(`${e}.`,r,a);if(n)return n}},n=t("",i.IK,e),a="function"==typeof(w=(null==n?void 0:n.func)??0)?w():w;g+=a,y.push({type:"fn",name:(null==n?void 0:n.refDetail)??"",cost:a})}catch(e){console.error(e);continue}}var w;return g>i.qS.Max&&(g=i.qS.Max,y.push({type:"misc",name:"Max Ram Cap",cost:i.qS.Max})),{cost:g,entries:y.filter((e=>e.cost>0))}}(t,e,n)}catch(e){return{errorCode:o.m.SyntaxError,errorMessage:e instanceof Error?e.message:void 0}}}},19918:(e,t,n)=>{"use strict";n.d(t,{X:()=>u});var a=n(51087),r=n(65065),o=n(94515),i=n(30282),s=n(32310),l=n(89194),c=n(70769);class u{args=[];dataMap={};filename="default.js";logs=[];logUpd=!1;offlineExpGained=0;offlineMoneyMade=0;offlineRunningTime=.01;onlineExpGained=0;onlineMoneyMade=0;onlineRunningTime=.01;pid=-1;ramUsage=s.qS.Base;server="";scriptKey="";tailProps=null;title="";threads=1;temporary=!1;dependencies=new Map;constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(e){if(!t)throw new Error("Must provide a ramUsage for RunningScript initialization.");this.filename=e.filename,this.args=n,this.scriptKey=(0,c.Wl)(this.filename,n),this.server=e.server,this.ramUsage=t,this.dependencies=e.dependencies,this.title=`${this.filename} ${n.join(" ")}`}}log(e){this.logs.length>a.Z.MaxLogCapacity&&this.logs.shift();let t=e;a.Z.TimestampsFormat&&"string"==typeof e&&(t="["+(0,i.m)(a.Z.TimestampsFormat)+"] "+t),this.logs.push(t),this.logUpd=!0}displayLog(){for(const e of this.logs)"string"==typeof e?r.o.print(e):r.o.printRaw(e)}clearLog(){this.logs.length=0}recordHack(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;null!=this.dataMap[e]&&this.dataMap[e].constructor===Array||(this.dataMap[e]=[0,0,0,0]),this.dataMap[e][0]+=t,this.dataMap[e][1]+=n}recordGrow(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;null!=this.dataMap[e]&&this.dataMap[e].constructor===Array||(this.dataMap[e]=[0,0,0,0]),this.dataMap[e][2]+=t}recordWeaken(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;null!=this.dataMap[e]&&this.dataMap[e].constructor===Array||(this.dataMap[e]=[0,0,0,0]),this.dataMap[e][3]+=t}toJSON(){return(0,o.L3)("RunningScript",this,"string"==typeof this.title?m:f)}static fromJSON(e){const t=(0,o.Id)(u,e.data,m);return t.scriptKey||(t.scriptKey=(0,c.Wl)(t.filename,t.args)),t.title||(t.title=`${t.filename} ${t.args.join(" ")}`),t}}const m=(0,l.i)(u,{removedKeys:["logs","dependencies","logUpd","pid","tailProps"]}),f=m.filter((e=>"title"!==e));o.gY.RunningScript=u},79173:(e,t,n)=>{"use strict";n.d(t,{X:()=>s});var a=n(6221),r=n(94515),o=n(99953),i=n(32310);class s{ramUsage=null;ramUsageEntries=[];ramCalculationError=null;mod=null;dependents=new Set;dependencies=new Map;get content(){return this.code}set content(e){this.code!==e&&(this.code=e,this.invalidateModule())}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default.js",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";this.filename=e,this.code=t,this.server=n}download(){const e=this.filename,t=new Blob([this.code],{type:"text/plain"}),n=document.createElement("a"),a=URL.createObjectURL(t);n.href=a,n.download=e,document.body.appendChild(n),n.click(),setTimeout((function(){document.body.removeChild(n),window.URL.revokeObjectURL(a)}),0)}invalidateModule(){if(this.ramUsage=null,this.ramUsageEntries.length=0,this.ramCalculationError=null,this.mod){this.mod=null;for(const e of this.dependents)e.invalidateModule();this.dependents.clear(),this.dependencies=new Map}}getRamUsage(e){return this.ramUsage||this.updateRamUsage(e),this.ramUsage}updateRamUsage(e){const t=(0,a.J)(this.code,e,this.filename.endsWith(".script"));if(t.cost&&t.cost>=i.qS.Base)return this.ramUsage=(0,o.S)(t.cost),this.ramUsageEntries=t.entries,void(this.ramCalculationError=null);this.ramUsage=null,this.ramCalculationError=t.errorMessage??null}deleteFromServer(e){return this.server===e.hostname&&!e.isRunning(this.filename)&&(this.invalidateModule(),e.scripts.delete(this.filename),!0)}static savedKeys=["code","filename","server"];toJSON(){return(0,r.L3)("Script",this,s.savedKeys)}static fromJSON(e){return(0,r.Id)(s,e.data,s.savedKeys)}}r.gY.Script=s},10364:(e,t,n)=>{"use strict";n.d(t,{$o:()=>h,Es:()=>f,F9:()=>m});var a=n(72938),r=n(49173),o=n(89916),i=n(2517),s=n(97467),l=n(22115),c=n(75350),u=n(70769);function m(e){const t=((new Date).getTime()-r.J5.lastUpdate)/1e3;let n=e.onlineRunningTime/14400;n>=1&&(n=1);for(const n of Object.keys(e.dataMap))if(Object.hasOwn(e.dataMap,n)){if(0==e.dataMap[n][2]||null==e.dataMap[n][2])continue;const a=(0,s.WT)(n);if(null==a)continue;const r=Math.round(.5*e.dataMap[n][2]/e.onlineRunningTime*t);e.log(`Called on ${a.hostname} ${r} times while offline`);const c=(0,s.WT)(e.server);if(null===c)throw new Error("getServer of null key?");if(!(a instanceof o.x))throw new Error("trying to grow a non-normal server");const u=(0,i.pw)(a,r,c.cpuCores);e.log(`'${a.hostname}' grown by ${(0,l.T3)(u-1,6)} while offline`)}const c=n*(e.onlineExpGained/e.onlineRunningTime)*t;r.J5.gainHackingExp(c),e.offlineRunningTime+=t,e.offlineExpGained+=c;for(const n of Object.keys(e.dataMap))if(Object.hasOwn(e.dataMap,n)){if(0==e.dataMap[n][3]||null==e.dataMap[n][3])continue;const r=(0,s.WT)(n);if(null==r)continue;if(!(r instanceof o.x))throw new Error("trying to weaken a non-normal server");const i=(0,s.WT)(e.server);if(null===i)throw new Error("getServer of null key?");const l=Math.round(.5*e.dataMap[n][3]/e.onlineRunningTime*t);e.log(`Called weaken() on ${r.hostname} ${l} times while offline`);const c=1+(i.cpuCores-1)/16;r.weaken(a.t.ServerWeakenAmount*l*c)}}function f(e,t,n){return n.runningScriptMap.get((0,u.Wl)(e,t))??null}function h(e,t){const n=c.R.get(e);return n?n.scriptRef.server!==t.hostname?null:n.scriptRef:null}},42281:(e,t,n)=>{"use strict";n.d(t,{M:()=>a});const a=new class{constructor(){this.positions=new Map}saveCursor(e,t){this.positions.set(e,t)}getCursor(e){return this.positions.get(e)||{row:-1,column:-1}}}},3152:(e,t,n)=>{"use strict";n.d(t,{M:()=>i});var a=n(67294),r=n(36640),o=n(57681);function i(e){let{beforeMount:t,onMount:n,onChange:i}=e;const s=(0,a.useRef)(null),l=(0,a.useRef)(null),c=(0,a.useRef)(null),{options:u}=(0,o.B)();return(0,a.useEffect)((()=>{if(s.current)return t(),l.current=r.editor.create(s.current,{value:"",automaticLayout:!0,language:"javascript",...u,glyphMargin:!0}),n(l.current),c.current=l.current.onDidChangeModelContent((()=>{var e;i(null===(e=l.current)||void 0===e?void 0:e.getValue())})),()=>{var e,t,n,a;null===(e=c.current)||void 0===e||e.dispose(),null===(t=l.current)||void 0===t||null===(n=t.getModel())||void 0===n||n.dispose(),null===(a=l.current)||void 0===a||a.dispose()}}),[]),a.createElement("div",{ref:s,style:{height:"1px",width:"100%",flexGrow:1}})}},41052:(e,t,n)=>{"use strict";n.d(t,{v:()=>i});var a=n(67294),r=n(81138),o=n(51087);function i(){return a.createElement("div",{style:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},a.createElement("span",{style:{color:o.Z.theme.primary,fontSize:"20px",textAlign:"center"}},a.createElement(r.Z,{variant:"h4"},"No open files"),a.createElement(r.Z,{variant:"h5"},"Use ",a.createElement("code",null,"nano FILENAME")," in",a.createElement("br",null),"the terminal to open files")))}},59110:(e,t,n)=>{"use strict";n.d(t,{K:()=>a});class a{constructor(e,t,n,a,r){this.path=e,this.code=t,this.hostname=n,this.lastPosition=a,this.model=r,this.isTxt=e.endsWith(".txt")}}},53817:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var a=n(67294),r=n(56798),o=n(81138),i=n(26023),s=n(16056),l=n(98649),c=n(66351),u=n(77957),m=n(88775),f=n(48672),h=n(27711);const d=["line","block","underline","line-thin","block-outline","underline-thin"],p=["blink","smooth","phase","expand","solid"];function g(e){const[t,{on:n,off:g}]=(0,m.k)(!1);return a.createElement(f.u,{open:e.open,onClose:e.onClose},a.createElement(h.y,{open:t,onChange:e.onThemeChange,onClose:g}),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,null,"Theme: "),a.createElement(i.Z,{onChange:t=>e.onOptionChange("theme",t.target.value),value:e.options.theme},a.createElement(l.Z,{value:"monokai"},"monokai"),a.createElement(l.Z,{value:"solarized-dark"},"solarized-dark"),a.createElement(l.Z,{value:"solarized-light"},"solarized-light"),a.createElement(l.Z,{value:"vs-dark"},"dark"),a.createElement(l.Z,{value:"light"},"light"),a.createElement(l.Z,{value:"dracula"},"dracula"),a.createElement(l.Z,{value:"one-dark"},"one-dark"),a.createElement(l.Z,{value:"customTheme"},"Custom theme")),a.createElement(r.Z,{onClick:n,sx:{ml:1},startIcon:a.createElement(u.Z,null)},"Edit custom theme")),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Indent using spaces: "),a.createElement(s.Z,{onChange:t=>e.onOptionChange("insertSpaces",t.target.checked),checked:e.options.insertSpaces})),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Tab size: "),a.createElement(c.Z,{type:"number",value:e.options.tabSize,onChange:t=>{const n=parseInt(t.target.value);!Number.isFinite(n)||n<1||e.onOptionChange("tabSize",n)}})),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Auto-detect indentation: "),a.createElement(s.Z,{onChange:t=>e.onOptionChange("detectIndentation",t.target.checked),checked:e.options.detectIndentation})),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Word wrap: "),a.createElement(i.Z,{onChange:t=>e.onOptionChange("wordWrap",t.target.value),value:e.options.wordWrap},a.createElement(l.Z,{value:"off"},"Off"),a.createElement(l.Z,{value:"on"},"On"),a.createElement(l.Z,{value:"bounded"},"Bounded"),a.createElement(l.Z,{value:"wordWrapColumn"},"Word Wrap Column"))),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Enable vim mode: "),a.createElement(s.Z,{onChange:t=>e.onOptionChange("vim",t.target.checked),checked:e.options.vim})),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Font family: "),a.createElement(c.Z,{type:"text",value:e.options.fontFamily,onChange:t=>e.onOptionChange("fontFamily",t.target.value)})),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Font size: "),a.createElement(c.Z,{type:"number",value:e.options.fontSize,onChange:t=>{const n=parseInt(t.target.value);!Number.isFinite(n)||n<1||e.onOptionChange("fontSize",n)}})),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Enable font ligatures: "),a.createElement(s.Z,{onChange:t=>e.onOptionChange("fontLigatures",t.target.checked),checked:e.options.fontLigatures})),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Cursor style: "),a.createElement(i.Z,{onChange:t=>e.onOptionChange("cursorStyle",t.target.value),value:e.options.cursorStyle},d.map((e=>a.createElement(l.Z,{key:e,value:e},e))))),a.createElement("div",{style:{display:"flex",alignItems:"center"}},a.createElement(o.Z,{marginRight:"auto"},"Cursor blinking: "),a.createElement(i.Z,{onChange:t=>e.onOptionChange("cursorBlinking",t.target.value),value:e.options.cursorBlinking},p.map((e=>a.createElement(l.Z,{key:e,value:e},e))))))}},57681:(e,t,n)=>{"use strict";n.d(t,{B:()=>m,j:()=>u});var a=n(67294),r=n(51087),o=n(6221),i=n(1986),s=n(22115),l=n(88775);const c=a.createContext({});function u(e){let{children:t,vim:n}=e;const[u,m]=(0,a.useState)("RAM: ???"),[f,h]=(0,a.useState)([["???",""]]),[d,{on:p,off:g}]=(0,l.k)(!1),[y,b]=(0,a.useState)({theme:r.Z.MonacoTheme,insertSpaces:r.Z.MonacoInsertSpaces,tabSize:r.Z.MonacoTabSize,detectIndentation:r.Z.MonacoDetectIndentation,fontFamily:r.Z.MonacoFontFamily,fontSize:r.Z.MonacoFontSize,fontLigatures:r.Z.MonacoFontLigatures,wordWrap:r.Z.MonacoWordWrap,vim:n||r.Z.MonacoVim,cursorStyle:r.Z.MonacoCursorStyle,cursorBlinking:r.Z.MonacoCursorBlinking});return a.createElement(c.Provider,{value:{ram:u,ramEntries:f,updateRAM:(e,t)=>{if(null===e||null===t)return m("N/A"),void h([["N/A",""]]);const n=(0,o.J)(e,t.scripts);if(n.cost&&n.cost>0){var a;const e=(null===(a=n.entries)||void 0===a?void 0:a.sort(((e,t)=>t.cost-e.cost)))??[],t=[];for(const n of e)t.push([`${n.name} (${n.type})`,(0,s.$1)(n.cost)]);return m("RAM: "+(0,s.$1)(n.cost)),void h(t)}if(void 0!==n.errorCode)switch(h([["Syntax Error",n.errorMessage??""]]),n.errorCode){case i.m.ImportError:m("RAM: Import Error");break;case i.m.SyntaxError:m("RAM: Syntax Error")}else m("RAM: Syntax Error"),h([["Syntax Error",""]])},isUpdatingRAM:d,startUpdatingRAM:p,finishUpdatingRAM:g,options:y,saveOptions:function(e){b(e),r.Z.MonacoTheme=e.theme,r.Z.MonacoInsertSpaces=e.insertSpaces,r.Z.MonacoTabSize=e.tabSize,r.Z.MonacoDetectIndentation=e.detectIndentation,r.Z.MonacoFontFamily=e.fontFamily,r.Z.MonacoFontSize=e.fontSize,r.Z.MonacoFontLigatures=e.fontLigatures,r.Z.MonacoCursorStyle=e.cursorStyle,r.Z.MonacoCursorBlinking=e.cursorBlinking,r.Z.MonacoWordWrap=e.wordWrap,r.Z.MonacoVim=e.vim}}},t)}const m=()=>(0,a.useContext)(c)},99363:(e,t,n)=>{"use strict";n.d(t,{h:()=>L,z:()=>_});var a=n(67294),r=n(36640),o=n(3152),i=n(52947),s=n(24815),l=n(39463),c=n(6221),u=n(96393),m=n(51087),f=n(40780),h=n(96486),d=n(34716),p=n(19652),g=n(97467),y=n(23001),b=n(42923),v=n(88775),k=n(30180),w=n(39602),E=n(59110),S=n(84108),C=n(47989),x=n(41052),N=n(57681),M=n(88305);let A=!1;const T=[];function L(){const e={args:[],pid:1,enums:u.k,...u.ns},t=(0,k.C)();!function n(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e;for(const[r,o]of Object.entries(a))a===e&&r in t||(T.push(r),"object"==typeof o&&n(o))}()}const R=[];let F=null;function I(e){const t=(0,v.S)(),n=(0,a.useRef)(null),{options:u,updateRAM:k,startUpdatingRAM:L,finishUpdatingRAM:I}=(0,N.B)();let _;for(let e=R.length-1;e>=0;e--)null===(0,g.WT)(R[e].hostname)&&R.splice(e,1);function P(e){e.model=r.editor.createModel(e.code,e.isTxt?"plaintext":"javascript")}F&&null===(0,g.WT)(F.hostname)&&(F=R[0]??null),(0,a.useEffect)((()=>{function e(e){m.Z.DisableHotkeys||("KeyB"==e.code&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),i.F.toPage(s.T3.Terminal)),"KeyS"==e.code&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),e.stopPropagation(),Z()))}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)}));const B=(0,h.debounce)((e=>{!function(e){if(null===n.current||null===F)return;if(_||(_=n.current.createDecorationsCollection()),!F.path.endsWith(".js"))return;const t=(0,c.w)(e);-1!==t?_.set([{range:{startLineNumber:t,startColumn:1,endLineNumber:t,endColumn:10},options:{isWholeLine:!0,glyphMarginClassName:"myGlyphMarginClass",glyphMarginHoverMessage:{value:"Possible infinite loop, await something."}}}]):_.clear()}(e),k(!F||F.isTxt?null:e,F&&(0,g.WT)(F.hostname)),I()}),300),O=e=>{L(),B(e)};function D(e){const t=(0,g.WT)(e.hostname);if(!t)throw new Error("Server should not be null but it is.");t.writeToContentFile(e.path,e.code),m.Z.SaveGameOnFileSave&&d.Ex.saveGame()}function Z(){if(null===F)return void console.error("currentScript is null when it shouldn't be. Unable to save script");if(f.wP.isRunning&&f.wP.currStep===f.$o.TerminalTypeScript){if("n00dles.script"!==F.path&&"n00dles.js"!==F.path)return void(0,l.X)("Don't change the script name for now.");const e=F.code.replace(/\s/g,""),t="while(true){hack('n00dles');}",n="exportasyncfunctionmain(ns){while(true){awaitns.hack('n00dles');}}";return e.includes(t)||e.includes(n)?(D(F),i.F.toPage(s.T3.Terminal),void(0,f.ZF)()):void(0,l.X)("Please copy and paste the code from the tutorial!")}const e=(0,g.WT)(F.hostname);if(null===e)throw new Error("Server should not be null but it is.");e.writeToContentFile(F.path,F.code),m.Z.SaveGameOnFileSave&&d.Ex.saveGame(),t()}function G(){if(F)return R.findIndex((e=>F===e))}function J(e){if(null!==F){const e=G();void 0!==e&&(R[e]=F)}F=R[e],null!==n.current&&null!==R[e]&&((void 0===F.model||F.model.isDisposed())&&P(F),n.current.setModel(F.model),n.current.setPosition(F.lastPosition),n.current.revealLineInCenter(F.lastPosition.lineNumber),O(F.code),n.current.focus())}const{VimStatus:W}=(0,M.S)({editor:n.current,vim:u.vim,onSave:Z,onOpenNextTab:function(e){const t=G();void 0!==t&&J((t+e)%R.length)},onOpenPreviousTab:function(e){const t=G();if(void 0!==t){let n=t-e;for(;n<0;)n+=R.length;J(n)}}});return(0,a.useEffect)((()=>{if(null!==F){const e=G();"number"==typeof e&&J(e),O(F.code)}}),[]),a.createElement(a.Fragment,null,a.createElement("div",{style:{display:null!==F?"flex":"none",height:"100%",width:"100%",flexDirection:"column"}},a.createElement(S.m,{scripts:R,currentScript:F,onTabClick:J,onTabClose:function(e){const a=R[e],r=a.code,o=R[e]===F;if((0,w.ii)(R,e)&&y.H.emit({txt:`Do you want to save changes to ${a.path} on ${a.hostname}?`,resolve:e=>{e&&(a.code=r,D(a),i.F.toPage(s.T3.Terminal))}}),R.splice(e,1),0===R.length)return F=null,void i.F.toPage(s.T3.Terminal);if(o){const t=R.length===e?-1:0;F=R[e+t],null!==n.current&&(!F.model.isDisposed()&&F.model||P(F),n.current.setModel(F.model),n.current.setPosition(F.lastPosition),n.current.revealLineInCenter(F.lastPosition.lineNumber),n.current.focus())}t()},onTabUpdate:function(e){const t=R[e],a=(0,w.nr)(R,e);null!==a&&t.code!==a&&y.H.emit({txt:"Do you want to overwrite the current editor content with the contents of "+t.path+" on the server? This cannot be undone.",resolve:r=>{r&&(t.code=a,J(e),null!==n.current&&null!==t&&((void 0===t.model||t.model.isDisposed())&&P(t),n.current.setModel(t.model),n.current.setValue(t.code),O(t.code),n.current.focus()))}})}}),a.createElement("div",{style:{flex:"0 0 5px"}}),a.createElement(o.M,{beforeMount:function(){if(A)return;A=!0,async function(){const e=r.languages.getLanguages().find((e=>"javascript"===e.id)),t=await e.loader();t.language.tokenizer.root.unshift([new RegExp("\\bns\\b"),{token:"ns"}]);for(const e of T)t.language.tokenizer.root.unshift([new RegExp(`\\b${e}\\b`),{token:"netscriptfunction"}]);["let","const","var","function"].forEach((e=>t.language.tokenizer.root.unshift([new RegExp(`\\b${e}\\b`),{token:"otherkeywords"}]))),["true","false","null","undefined"].forEach((e=>t.language.tokenizer.root.unshift([new RegExp(`\\b${e}\\b`),{token:"otherkeyvars"}]))),t.language.tokenizer.root.unshift([new RegExp("\\bthis\\b"),{token:"this"}])}();const e=(b.Z+"").replace(/export /g,"");r.languages.typescript.javascriptDefaults.addExtraLib(e,"netscript.d.ts"),r.languages.typescript.typescriptDefaults.addExtraLib(e,"netscript.d.ts"),(0,p.c4)(r.editor.defineTheme),(0,p.Gp)(m.Z.EditorTheme),r.editor.defineTheme("customTheme",(0,p.lB)(m.Z.EditorTheme))},onMount:function(t){if(n.current=t,!e.files&&null!==F)return P(F),n.current.setModel(F.model),n.current.setPosition(F.lastPosition),n.current.revealLineInCenter(F.lastPosition.lineNumber),O(F.code),void n.current.focus();if(e.files){const t=e.files;if(!t.size)return void n.current.focus();for(const[a,o]of t){const t=R.find((t=>t.path===a&&t.hostname===e.hostname));if(t)(void 0===t.model||null===t.model||t.model.isDisposed())&&P(t),F=t,n.current.setModel(t.model),n.current.setPosition(t.lastPosition),n.current.revealLineInCenter(t.lastPosition.lineNumber),O(t.code);else{const t=new E.K(a,o,e.hostname,new r.Position(0,0),r.editor.createModel(o,a.endsWith(".txt")?"plaintext":"javascript"));R.push(t),F=t,n.current.setModel(t.model),O(t.code)}}}n.current.focus()},onChange:function(e){if(void 0===e)return;if(O(e),null===n.current)return;const t=n.current.getPosition();null!==t&&null!==F&&(F.code=e,F.lastPosition=t)}}),W,a.createElement(C.o,{onSave:Z,editor:n.current})),!F&&a.createElement(x.v,null))}function _(e){return a.createElement(N.j,{vim:e.vim},a.createElement(I,e))}},25312:(e,t,n)=>{"use strict";n.d(t,{O:()=>m});var a=n(67294),r=n(56798),o=n(17575),i=n(51334),s=n(50594),l=n(51087);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var e;b.current&&m&&(null===(e=b.current)||void 0===e||e.scrollIntoView())}),[m]),a.createElement("div",c({ref:e=>{b.current=e,t.innerRef(e)}},t.draggableProps,t.dragHandleProps,{style:{...t.draggableProps.style,marginRight:5,flexShrink:0,border:"1px solid "+l.Z.theme.well}}),a.createElement(o.Z,{title:n},a.createElement(r.Z,{onClick:h,onMouseDown:e=>{e.preventDefault(),1===e.button&&d()},style:{minHeight:u,overflow:"hidden",...g}},a.createElement("span",{style:{overflow:"hidden",direction:"rtl",textOverflow:"ellipsis"}},n))),a.createElement(o.Z,{title:"Overwrite editor content with saved file content"},a.createElement(r.Z,{onClick:p,style:y},a.createElement(i.Z,{fontSize:"small"}))),a.createElement(r.Z,{onClick:d,style:y},a.createElement(s.Z,{fontSize:"small"})))}},84108:(e,t,n)=>{"use strict";n.d(t,{m:()=>y});var a=n(67294),r=n(15948),o=n(30120),i=n(56798),s=n(92557),l=n(66351),c=n(17575),u=n(50594),m=n(42761),f=n(88775),h=n(51087),d=n(39602),p=n(25312);function g(){return g=Object.assign?Object.assign.bind():function(e){for(var t=1;t({script:e,originalIndex:t}))).filter((e=>{let{script:t}=e;return t.hostname.includes(k)||t.path.includes(k)}));function T(){w(""),N(!x),C()}function L(e){e.currentTarget.scrollLeft+=e.deltaY}return a.createElement(o.Z,{display:"flex",flexGrow:"0",flexDirection:"row",alignItems:"center"},a.createElement(c.Z,{title:"Search Open Scripts",open:E,onOpen:S,onClose:C},a.createElement("span",{style:{marginRight:5}},x?a.createElement(l.Z,{value:k,onChange:function(e){w(e.target.value)},autoFocus:!0,sx:{minWidth:180,maxWidth:180},InputProps:{startAdornment:a.createElement(m.Z,null),spellCheck:!1,endAdornment:a.createElement(s.Z,{onClick:T},a.createElement(u.Z,null))}}):a.createElement(i.Z,{onClick:T},a.createElement(m.Z,null)))),a.createElement(r.Z5,{onDragEnd:function(e){e.destination&&((0,d.HP)(t,A[e.source.index].originalIndex,A[e.destination.index].originalIndex),M())}},a.createElement(r.bK,{droppableId:"tabs",direction:"horizontal"},((e,i)=>a.createElement(o.Z,g({maxWidth:"1640px",display:"flex",flexGrow:"1",flexDirection:"row",alignItems:"center",whiteSpace:"nowrap",ref:e.innerRef},e.droppableProps,{style:{backgroundColor:i.isDraggingOver?h.Z.theme.backgroundsecondary:h.Z.theme.backgroundprimary,overflowX:"scroll"},onWheel:L}),A.map(((e,o)=>{let{script:i,originalIndex:s}=e;const{path:l,hostname:c}=i,u=(null==n?void 0:n.path)===i.path&&n.hostname===i.hostname,m=`${c}:~${l.startsWith("/")?"":"/"}${l} ${(0,d.ii)(t,o)}`;return a.createElement(r._l,{key:l+c,draggableId:l+c,index:o,disableInteractiveElementBlocking:!0},(e=>a.createElement(p.O,{provided:e,title:m,isActive:u,isExternal:"home"!==c,onClick:()=>y(s),onClose:()=>b(s),onUpdate:()=>v(s)})))})),e.placeholder)))))}},27711:(e,t,n)=>{"use strict";n.d(t,{y:()=>S});var a=n(67294),r=n(96486),o=n.n(r),i=n(17575),s=n(66351),l=n(92557),c=n(81138),u=n(28881),m=n(31990),f=n(30120),h=n(56798),d=n(7244),p=n(26522),g=n(63638),y=n(51087),b=n(88775),v=n(48672),k=n(15460),w=n(19652);function E(e){let{label:t,themePath:n,onColorChange:r,color:o,defaultColor:c}=e;return void 0===o&&(console.error(`color ${n} was undefined, reverting to default`),o=c),a.createElement(i.Z,{title:t},a.createElement("span",null,a.createElement(s.Z,{label:n,value:"#"+o,sx:{display:"block",my:1},InputProps:{readOnly:!0,startAdornment:a.createElement(g.zH,{hideTextfield:!0,deferred:!0,value:"#"+o,onChange:e=>r(n,e.hex),disableAlpha:!0}),endAdornment:a.createElement(l.Z,{onClick:()=>r(n,c)},a.createElement(d.Z,{color:"primary"}))}})))}function S(e){const t=(0,b.S)();function n(n,a){o().set(y.Z.EditorTheme,n,a),e.onChange(),t()}return a.createElement(v.u,{open:e.open,onClose:e.onClose},a.createElement(c.Z,{variant:"h4"},"Customize Editor theme"),a.createElement(c.Z,null,"Hover over input boxes for more information"),a.createElement(u.Z,{sx:{p:1,my:1}},a.createElement(k.V,{checked:"vs"===y.Z.EditorTheme.base,onChange:e=>{n("base",e?"vs":"vs-dark")},text:"Use light theme as base",tooltip:a.createElement(a.Fragment,null,"If enabled, the ",a.createElement("code",null,"vs")," light theme will be used as the theme base, otherwise,"," ",a.createElement("code",null,"vs-dark")," will be used.")}),a.createElement(m.ZP,{container:!0,gap:1,columns:2},a.createElement(m.ZP,{item:!0},a.createElement(c.Z,{variant:"h6"},"UI"),a.createElement(E,{label:"Background color",themePath:"common.bg",onColorChange:n,color:y.Z.EditorTheme.common.bg,defaultColor:w.Co.common.bg}),a.createElement(E,{label:"Current line and minimap background color",themePath:"ui.line",onColorChange:n,color:y.Z.EditorTheme.ui.line,defaultColor:w.Co.ui.line}),a.createElement(E,{label:"Base text color",themePath:"common.fg",onColorChange:n,color:y.Z.EditorTheme.common.fg,defaultColor:w.Co.common.fg}),a.createElement(E,{label:"Popup background color",themePath:"ui.panel.bg",onColorChange:n,color:y.Z.EditorTheme.ui.panel.bg,defaultColor:w.Co.ui.panel.bg}),a.createElement(E,{label:"Background color for selected item in popup",themePath:"ui.panel.selected",onColorChange:n,color:y.Z.EditorTheme.ui.panel.selected,defaultColor:w.Co.ui.panel.selected}),a.createElement(E,{label:"Popup border color",themePath:"ui.panel.border",onColorChange:n,color:y.Z.EditorTheme.ui.panel.border,defaultColor:w.Co.ui.panel.border}),a.createElement(E,{label:"Background color of highlighted text",themePath:"ui.selection.bg",onColorChange:n,color:y.Z.EditorTheme.ui.selection.bg,defaultColor:w.Co.ui.selection.bg})),a.createElement(m.ZP,{item:!0},a.createElement(c.Z,{variant:"h6"},"Syntax"),a.createElement(E,{label:"Numbers, function names, and other key vars",themePath:"common.accent",onColorChange:n,color:y.Z.EditorTheme.common.accent,defaultColor:w.Co.common.accent}),a.createElement(E,{label:"Keywords",themePath:"syntax.keyword",onColorChange:n,color:y.Z.EditorTheme.syntax.keyword,defaultColor:w.Co.syntax.keyword}),a.createElement(E,{label:"Strings",themePath:"syntax.string",onColorChange:n,color:y.Z.EditorTheme.syntax.string,defaultColor:w.Co.syntax.string}),a.createElement(E,{label:"Regexp literals as well as escapes within strings",themePath:"syntax.regexp",onColorChange:n,color:y.Z.EditorTheme.syntax.regexp,defaultColor:w.Co.syntax.regexp}),a.createElement(E,{label:"Constants",themePath:"syntax.constant",onColorChange:n,color:y.Z.EditorTheme.syntax.constant,defaultColor:w.Co.syntax.constant}),a.createElement(E,{label:"Entities",themePath:"syntax.entity",onColorChange:n,color:y.Z.EditorTheme.syntax.entity,defaultColor:w.Co.syntax.entity}),a.createElement(E,{label:"'this', 'ns', types, and tags",themePath:"syntax.tag",onColorChange:n,color:y.Z.EditorTheme.syntax.tag,defaultColor:w.Co.syntax.tag}),a.createElement(E,{label:"Netscript functions and constructors",themePath:"syntax.markup",onColorChange:n,color:y.Z.EditorTheme.syntax.markup,defaultColor:w.Co.syntax.markup}),a.createElement(E,{label:"Errors",themePath:"syntax.error",onColorChange:n,color:y.Z.EditorTheme.syntax.error,defaultColor:w.Co.syntax.error}),a.createElement(E,{label:"Comments",themePath:"syntax.comment",onColorChange:n,color:y.Z.EditorTheme.syntax.comment,defaultColor:w.Co.syntax.comment})))),a.createElement(u.Z,{sx:{p:1}},a.createElement(s.Z,{multiline:!0,fullWidth:!0,maxRows:10,label:"import / export theme",value:JSON.stringify(y.Z.EditorTheme,void 0,2),onChange:function(t){try{const n=JSON.parse(t.target.value);if("object"!=typeof n)return;y.Z.EditorTheme=n,e.onChange()}catch(e){}}}),a.createElement(f.Z,{sx:{mt:1}},a.createElement(h.Z,{onClick:()=>{y.Z.EditorTheme=w.Co,e.onChange(),t()},startIcon:a.createElement(p.Z,null)},"Reset to default"))))}},47989:(e,t,n)=>{"use strict";n.d(t,{o:()=>E});var a=n(67294),r=n(36640),o=n(30120),i=n(56798),s=n(39401),l=n(47542),c=n(7272),u=n(49557),m=n(46948),f=n(81138),h=n(94229),d=n(19652),p=n(48672),g=n(24815),y=n(52947),b=n(88775),v=n(51087),k=n(53817),w=n(57681);function E(e){let{editor:t,onSave:n}=e;const[E,{on:S,off:C}]=(0,b.k)(!1),[x,{on:N,off:M}]=(0,b.k)(!1),{ram:A,ramEntries:T,isUpdatingRAM:L,options:R,saveOptions:F}=(0,w.B)();return a.createElement(a.Fragment,null,a.createElement(o.Z,{display:"flex",flexDirection:"row",sx:{m:1},alignItems:"center"},a.createElement(i.Z,{startIcon:a.createElement(h.Z,null),onClick:N,sx:{mr:1}},"Options"),a.createElement(i.Z,{onClick:function(){var e;null==t||null===(e=t.getAction("editor.action.formatDocument"))||void 0===e||e.run()}},"Beautify"),a.createElement(i.Z,{color:L?"secondary":"primary",sx:{mx:1},onClick:S},A),a.createElement(i.Z,{onClick:n},"Save (Ctrl/Cmd + s)"),a.createElement(i.Z,{sx:{mx:1},onClick:()=>y.F.toPage(g.T3.Terminal)},"Terminal (Ctrl/Cmd + b)"),a.createElement(f.Z,null,a.createElement(s.Z,{target:"_blank",href:"https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md"},"Documentation"))),a.createElement(k.A,{open:x,options:R,onClose:M,onOptionChange:(e,n)=>{const a={...R,[e]:n};F(a),setTimeout((()=>{null==t||t.updateOptions(a)}),100)},onThemeChange:()=>{(0,d.Gp)(v.Z.EditorTheme),r.editor.defineTheme("customTheme",(0,d.lB)(v.Z.EditorTheme))}}),a.createElement(p.u,{open:E,onClose:C},a.createElement(l.Z,null,a.createElement(m.Z,null,T.map((e=>{let[t,n]=e;return a.createElement(a.Fragment,{key:t+n},a.createElement(u.Z,null,a.createElement(c.Z,{sx:{color:v.Z.theme.primary}},t),a.createElement(c.Z,{align:"right",sx:{color:v.Z.theme.primary}},n)))}))))))}},19652:(e,t,n)=>{"use strict";n.d(t,{Co:()=>i,Gp:()=>l,c4:()=>u,lB:()=>c});var a=n(21623),r=n(51087),o=n(96486);const i={base:"vs-dark",inherit:!0,common:{accent:"B5CEA8",bg:"1E1E1E",fg:"D4D4D4"},syntax:{tag:"569CD6",entity:"569CD6",string:"CE9178",regexp:"646695",markup:"569CD6",keyword:"569CD6",comment:"6A9955",constant:"569CD6",error:"F44747"},ui:{line:"1E1E1E",panel:{bg:"252526",selected:"252526",border:"1E1E1E"},selection:{bg:"ADD6FF26"}}},s=/^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/,l=e=>{if("object"==typeof e)for(const t of(0,a.nd)(e)){switch("object"!=typeof e[t]&&delete e[t],t){case"base":["vs-dark","vs"].includes(e.base)||(e.base="vs-dark");continue;case"inherit":"boolean"!=typeof e.inherit&&(e.inherit=!0);continue}const n=e[t],a=e=>{for(const[t,n]of Object.entries(e))!n||"string"!=typeof n&&"object"!=typeof n?e[t]="FF0000":"object"==typeof n?a(n):n.match(s)||(e[t]="FF0000")};a(n)}else r.Z.EditorTheme=(0,o.cloneDeep)(i)};function c(e){const t=[{token:"",background:e.ui.line,foreground:e.common.fg},{token:"identifier",foreground:e.common.accent},{token:"keyword",foreground:e.syntax.keyword},{token:"string",foreground:e.syntax.string},{token:"string.escape",foreground:e.syntax.regexp},{token:"comment",foreground:e.syntax.comment},{token:"constant",foreground:e.syntax.constant},{token:"entity",foreground:e.syntax.entity},{token:"type",foreground:e.syntax.tag},{token:"tag",foreground:e.syntax.tag},{token:"regexp",foreground:e.syntax.regexp},{token:"attribute",foreground:e.syntax.tag},{token:"constructor",foreground:e.syntax.markup},{token:"invalid",foreground:e.syntax.error},{token:"number",foreground:e.common.accent},{token:"delimiter",foreground:e.common.fg},{token:"ns",foreground:e.syntax.tag},{token:"netscriptfunction",foreground:e.syntax.markup},{token:"otherkeywords",foreground:e.syntax.keyword},{token:"otherkeyvars",foreground:e.common.accent},{token:"this",foreground:e.syntax.tag}],n=Object.fromEntries([["editor.background",e.common.bg],["editor.foreground",e.common.fg],["editor.lineHighlightBackground",e.ui.line],["editor.selectionBackground",e.ui.selection.bg],["editorSuggestWidget.background",e.ui.panel.bg],["editorSuggestWidget.border",e.ui.panel.border],["editorSuggestWidget.selectedBackground",e.ui.panel.selected],["editorHoverWidget.background",e.ui.panel.bg],["editorHoverWidget.border",e.ui.panel.border],["editorWidget.background",e.ui.panel.bg],["editorWidget.border",e.ui.panel.border],["input.background",e.ui.panel.bg],["input.border",e.ui.panel.border]].map((e=>{let[t,n]=e;return[t,"#"+n]})));return{base:e.base,inherit:e.inherit,rules:t,colors:n}}async function u(e){e("monokai",{base:"vs-dark",inherit:!0,rules:[{background:"272822",token:""},{foreground:"75715e",token:"comment"},{foreground:"e6db74",token:"string"},{token:"number",foreground:"ae81ff"},{token:"otherkeyvars",foreground:"ae81ff"},{foreground:"ae81ff",token:"function"},{foreground:"f92672",token:"keyword"},{token:"storage.type.function.js",foreground:"ae81ff"},{token:"ns",foreground:"97d92b"},{token:"netscriptfunction",foreground:"53d3e4"},{token:"otherkeywords",foreground:"53d3e4"},{token:"this",foreground:"fd971f"}],colors:{"editor.foreground":"#F8F8F2","editor.background":"#272822","editor.selectionBackground":"#49483E","editor.lineHighlightBackground":"#3E3D32","editorCursor.foreground":"#F8F8F0","editorWhitespace.foreground":"#3B3A32","editorIndentGuide.activeBackground":"#9D550FB0","editor.selectionHighlightBorder":"#222218"}}),e("solarized-dark",{base:"vs-dark",inherit:!0,rules:[{background:"002b36",token:""},{foreground:"586e75",token:"comment"},{foreground:"00afaf",token:"string"},{token:"number",foreground:"00afaf"},{token:"otherkeyvars",foreground:"268bd2"},{foreground:"268bd2",token:"function"},{foreground:"859900",token:"keyword"},{token:"storage.type.function.js",foreground:"cb4b16"},{token:"ns",foreground:"cb4b16"},{token:"netscriptfunction",foreground:"268bd2"},{token:"otherkeywords",foreground:"268bd2"},{token:"type.identifier.js",foreground:"b58900"},{token:"delimiter.square.js",foreground:"0087ff"},{token:"delimiter.bracket.js",foreground:"0087ff"},{token:"this",foreground:"cb4b16"}],colors:{"editor.foreground":"#839496","editor.background":"#002b36","editor.selectionBackground":"#073642","editor.lineHighlightBackground":"#073642","editorCursor.foreground":"#819090","editorWhitespace.foreground":"#073642","editorIndentGuide.activeBackground":"#9D550FB0","editor.selectionHighlightBorder":"#222218"}}),e("solarized-light",{base:"vs",inherit:!0,rules:[{foreground:"657b83",background:"fdf6e3",token:""},{foreground:"586e75",token:"comment"},{foreground:"2aa198",token:"string"},{token:"number",foreground:"2aa198"},{token:"otherkeyvars",foreground:"268bd2"},{foreground:"268bd2",token:"function"},{foreground:"859900",token:"keyword"},{token:"storage.type.function.js",foreground:"bc4b16"},{token:"ns",foreground:"cb4b16"},{token:"netscriptfunction",foreground:"268bd2"},{token:"otherkeywords",foreground:"268bd2"},{token:"type.identifier.js",foreground:"b58900"},{token:"delimiter.square.js",foreground:"0087ff"},{token:"delimiter.bracket.js",foreground:"0087ff"},{token:"this",foreground:"cb4b16"}],colors:{"editor.foreground":"#657b83","editor.background":"#fdf6e3","editor.selectionBackground":"#eee8d5","editor.lineHighlightBackground":"#eee8d5","editorCursor.foreground":"#657b83","editorWhitespace.foreground":"#eee8d5","editorIndentGuide.activeBackground":"#eee8d5","editor.selectionHighlightBorder":"#073642"}}),e("dracula",{base:"vs-dark",inherit:!0,rules:[{background:"282A36",foreground:"F8F8F2",token:""},{foreground:"6272A4",token:"comment"},{foreground:"F1FA8C",token:"string"},{token:"number",foreground:"BD93F9"},{token:"otherkeyvars",foreground:"BD93F9"},{foreground:"FF79C6",token:"function"},{foreground:"FF79C6",token:"keyword"},{token:"storage.type.function.js",foreground:"FF79C6"},{token:"ns",foreground:"FFB86C",fontStyle:"italic"},{token:"netscriptfunction",foreground:"FF79C6"},{token:"otherkeywords",foreground:"FF68A7"},{token:"type.identifier.js",foreground:"7EE9FD",fontStyle:"italic"},{token:"delimiter.square.js",foreground:"FFD709"},{token:"delimiter.parenthesis.js",foreground:"FFD709"},{token:"delimiter.bracket.js",foreground:"FFD709"},{token:"this",foreground:"BD93F9",fontStyle:"italic"}],colors:{"editor.foreground":"#F8F8F2","editor.background":"#282A36","editorLineNumber.foreground":"#6272A4","editor.selectionBackground":"#44475A","editor.selectionHighlightBackground":"#424450","editor.foldBackground":"#21222C","editor.wordHighlightBackground":"#8BE9FD50","editor.wordHighlightStrongBackground":"#50FA7B50","editor.findMatchBackground":"#FFB86C80","editor.findMatchHighlightBackground":"#FFFFFF40","editor.findRangeHighlightBackground":"#44475A75","editor.hoverHighlightBackground":"#8BE9FD50","editor.lineHighlightBorder":"#44475A","editor.rangeHighlightBackground":"#BD93F915","editor.snippetTabstopHighlightBackground":"#282A36","editor.snippetTabstopHighlightBorder":"#6272A4","editor.snippetFinalTabstopHighlightBackground":"#282A36","editor.snippetFinalTabstopHighlightBorder":"#50FA7B"}}),e("one-dark",{base:"vs-dark",inherit:!0,rules:[{token:"",background:"333842",foreground:"ABB2BF"},{token:"comment",foreground:"5C6370"},{token:"string",foreground:"98C379"},{token:"number",foreground:"D19A66"},{token:"function",foreground:"C678DD"},{token:"keyword",foreground:"C678DD"},{token:"otherkeyvars",foreground:"D19A66"},{token:"otherkeywords",foreground:"C678DD"},{token:"ns",foreground:"E06C75"},{token:"netscriptfunction",foreground:"61AFEF"},{token:"type.identifier",foreground:"E5C07B"},{token:"delimiter",foreground:"ABB2BF"},{token:"this",foreground:"E06C75"}],colors:{"editor.background":"#282C34","editor.foreground":"#ABB2BF","editor.lineHighlightBackground":"#99BBFF0A","editor.selectionBackground":"#3E4451","editor.findMatchHighlightBackground":"#528BFF3D","editorCursor.foreground":"#528BFF","editorHoverWidget.background":"#21252B","editorHoverWidget.border":"#181A1F","editorIndentGuide.background":"#ABB2BF26","editorIndentGuide.activeBackground":"#626772","editorLineNumber.foreground":"#636D83","editorLineNumber.activeForeground":"#ABB2BF","editorSuggestWidget.background":"#21252B","editorSuggestWidget.border":"#181A1F","editorSuggestWidget.selectedBackground":"#2C313A","editorWhitespace.foreground":"#ABB2BF26","editorWidget.background":"#21252B","editorWidget.border":"#3A3F4B","input.background":"#1B1D23","input.border":"#181A1F","peekView.border":"#528BFF","peekViewResult.background":"#21252B","peekViewResult.selectionBackground":"#2C313A","peekViewTitle.background":"#1B1D23","peekViewEditor.background":"#1B1D23","scrollbarSlider.background":"#4E566680","scrollbarSlider.activeBackground":"#747D9180","scrollbarSlider.hoverBackground":"#5A637580"}})}},88305:(e,t,n)=>{"use strict";n.d(t,{S:()=>l});var a=n(67294),r=n(46447),o=n(30120),i=n(52947),s=n(24815);function l(e){let{editor:t,vim:n,onOpenNextTab:l,onOpenPreviousTab:c,onSave:u}=e;const[m,f]=(0,a.useState)(null),h=(0,a.useRef)(null),d=(0,a.useRef)({save:u,openNextTab:l,openPreviousTab:c});return d.current={save:u,openNextTab:l,openPreviousTab:c},(0,a.useEffect)((()=>{if(n&&t&&!m)try{f(r.vM(t,h.current)),r.hD.Vim.defineEx("write","w",(function(){d.current.save()})),r.hD.Vim.defineEx("quit","q",(function(){i.F.toPage(s.T3.Terminal)}));const e=()=>{d.current.save(),i.F.toPage(s.T3.Terminal)};r.hD.Vim.defineEx("wqriteandquit","wq",e),r.hD.Vim.defineEx("xriteandquit","x",e),r.hD.Vim.defineAction("nextTabs",(function(e,t){let{repeat:n=1}=t;d.current.openNextTab(n)})),r.hD.Vim.defineAction("prevTabs",(function(e,t){let{repeat:n=1}=t;d.current.openPreviousTab(n)})),r.hD.Vim.mapCommand("gt","action","nextTabs",{},{context:"normal"}),r.hD.Vim.mapCommand("gT","action","prevTabs",{},{context:"normal"}),t.focus()}catch(e){console.error("An error occurred while loading monaco-vim:"),console.error(e)}else n||(null==m||m.dispose(),f(null));return()=>{null==m||m.dispose()}}),[n,t,m]),{VimStatus:a.createElement(o.Z,{ref:h,className:"vim-display",display:"flex",flexGrow:"0",flexDirection:"row",sx:{p:1},alignItems:"center"})}}},39602:(e,t,n)=>{"use strict";n.d(t,{HP:()=>i,ii:()=>o,nr:()=>r});var a=n(97467);function r(e,t){var n;const r=e[t],o=(0,a.WT)(r.hostname);if(null===o)throw new Error(`Server '${r.hostname}' should not be null, but it is.`);return(null===(n=o.getContentFile(r.path))||void 0===n?void 0:n.content)??null}function o(e,t){const n=e[t],a=r(e,t);return null===a||a!==n.code?" *":""}function i(e,t,n){const[a]=e.splice(t,1);e.splice(n,0,a)}},97467:(e,t,n)=>{"use strict";n.d(t,{Bj:()=>v,T$:()=>d,TJ:()=>p,WT:()=>f,XX:()=>h,a9:()=>k,gd:()=>b,hG:()=>g,jG:()=>y,mh:()=>w,oU:()=>E});var a=n(89916),r=n(16014),o=n(37931),i=n(92666),s=n(94515),l=n(40425),c=n(97740),u=n(473);n(19918);let m={};function f(e){if(Object.hasOwn(m,e)){const t=m[e];if(t)return t}if(!(0,u.O)(e))return function(e){for(const t of Object.keys(m)){const n=m[t];if(n.hostname==e)return n}return null}(e);const t=function(e){for(const t of Object.keys(m)){const n=m[t];if(n.ip===e)return n}}(e);return void 0!==t?t:null}function h(){const e=[];for(const t of Object.keys(m))e.push(m[t]);return e}function d(e){for(const t of Object.keys(m)){const n=m[t];if(n.ip===e||n.hostname===e){delete m[t];break}}}function p(e){for(const t in m)if(m[t].ip===e)return!0;return!1}function g(){let e;do{e=(0,o.r)()}while(p(e));return e}function y(e){if(f(e.hostname))throw console.warn(`Hostname of the server thats being added: ${e.hostname}`),console.warn(`The server that already has this IP is: ${m[e.hostname].hostname}`),new Error("Error: Trying to add a server with an existing IP");m[e.hostname]=e}const b=(e,t)=>{m[t]=m[e],delete m[e]};function v(e){const t=[];for(let e=0;e<15;e++)t.push([]);const n=e=>"number"==typeof e?e:(0,i.X)(e.min,e.max);for(const e of r.q){const r={hostname:e.hostname,ip:g(),numOpenPortsRequired:e.numOpenPortsRequired,organizationName:e.organizationName};void 0!==e.maxRamExponent&&(r.maxRam=Math.pow(2,n(e.maxRamExponent))),e.hackDifficulty&&(r.hackDifficulty=n(e.hackDifficulty)),e.moneyAvailable&&(r.moneyAvailable=n(e.moneyAvailable)),e.requiredHackingSkill&&(r.requiredHackingSkill=n(e.requiredHackingSkill)),e.serverGrowth&&(r.serverGrowth=n(e.serverGrowth));const o=new a.x(r);for(const t of e.literature||[])o.messages.push(t);o.hostname===l.r.WorldDaemon&&(o.requiredHackingSkill*=c.dQ.WorldDaemonDifficulty),y(o),void 0!==e.networkLayer&&t[n(e.networkLayer)-1].push(o)}const o=(e,t)=>{for(const r of e)n=r,a=t(),n.serversOnNetwork.push(a.hostname),a.serversOnNetwork.push(n.hostname);var n,a};o(t[0],(()=>e));for(let e=1;e{return(n=t[e-1])[Math.floor(Math.random()*n.length)];var n}))}function k(){for(const e of Object.keys(m))delete m[e];m={}}function w(e){m=JSON.parse(e,s.Ro)}function E(){return JSON.stringify(m)}},14750:(e,t,n)=>{"use strict";n.d(t,{W:()=>y});var a=n(79173),r=n(73741),o=n(69917),i=n(27757),s=n(48897),l=n(94515),c=n(70769),u=n(37931),m=n(7165),f=n(84555),h=n(89194),d=n(96486),p=n.n(d),g=n(51087);class y{contracts=[];cpuCores=1;ftpPortOpen=!1;hasAdminRights=!1;hostname="home";httpPortOpen=!1;ip="1.1.1.1";isConnectedTo=!1;maxRam=0;messages=[];organizationName="";programs=[];ramUsed=0;runningScriptMap=new Map;savedScripts=void 0;scripts=new m.X;serversOnNetwork=[];smtpPortOpen=!1;sqlPortOpen=!1;sshPortOpen=!1;textFiles=new m.X;purchasedByPlayer=!1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{hostname:"",ip:(0,u.r)()};this.ip=e.ip?e.ip:(0,u.r)(),this.hostname=e.hostname,this.organizationName=null!=e.organizationName?e.organizationName:"",this.isConnectedTo=null!=e.isConnectedTo&&e.isConnectedTo,this.hasAdminRights=null!=e.adminRights&&e.adminRights}addContract(e){this.contracts.push(e)}getContract(e){for(const t of this.contracts)if(t.fn===e)return t;return null}getContentFile(e){return((0,s.e)(e)?this.textFiles.get(e):this.scripts.get(e))??null}isRunning(e){const t=(0,c.jz)(p().escapeRegExp(e));for(const e of this.runningScriptMap.keys())if(t.test(e))return!0;return!1}removeContract(e){const t=this.contracts.findIndex((t=>t.fn===("string"==typeof e?e:e.fn)));t>-1&&this.contracts.splice(t,1)}removeFile(e){if((0,s.e)(e))return this.textFiles.get(e)?(this.textFiles.delete(e),{res:!0}):{res:!1,msg:`Text file ${e} not found.`};if((0,o.UH)(e)){const t=this.scripts.get(e);return t?this.isRunning(e)?{res:!1,msg:"Cannot delete a script that is currently running!"}:(t.invalidateModule(),this.scripts.delete(e),{res:!0}):{res:!1,msg:`Script ${e} not found.`}}if((0,f.LL)(e)){const t=this.programs.findIndex((t=>t===e));return-1===t?{res:!1,msg:`Program ${e} does not exist`}:(this.programs.splice(t,1),{res:!0})}if(e.endsWith(".lit")){const t=this.messages.findIndex((t=>t===e));return-1===t?{res:!1,msg:`Literature file ${e} does not exist`}:(this.messages.splice(t,1),{res:!0})}if(e.endsWith(".cct")){const t=this.contracts.findIndex((e=>e));return-1===t?{res:!1,msg:`Contract file ${e} does not exist`}:(this.contracts.splice(t,1),{res:!0})}return{res:!1,msg:`Unhandled file extension on file path ${e}`}}runScript(e){let t=this.runningScriptMap.get(e.scriptKey);t||(t=new Map,this.runningScriptMap.set(e.scriptKey,t)),t.set(e.pid,e)}setMaxRam(e){this.maxRam=e}updateRamUsed(e){this.ramUsed=e}pushProgram(e){if(this.programs.includes(e))return;const t=this.programs.findIndex((t=>t.startsWith(e)));t>-1&&this.programs.splice(t,1),this.programs.push(e)}writeToScriptFile(e,t){const n=this.scripts.get(e);if(n)return n.content=t,{overwritten:!0};const r=new a.X(e,t,this.hostname);return this.scripts.set(e,r),{overwritten:!1}}writeToTextFile(e,t){const n=this.textFiles.get(e);if(n)return n.text=t,{overwritten:!0};const a=new r.w(e,t);return this.textFiles.set(e,a),{overwritten:!1}}writeToContentFile(e,t){return(0,s.e)(e)?this.writeToTextFile(e,t):this.writeToScriptFile(e,t)}toJSONBase(e,t){const n=(0,l.L3)(e,this,t);if(g.Z.ExcludeRunningScriptsFromSave)return n.data.runningScripts=[],n;const a=[];for(const e of this.runningScriptMap.values())for(const t of e.values())t.temporary||a.push(t);return n.data.runningScripts=a,n}static fromJSONBase(e,t,n){const a=(0,l.Id)(t,e.data,n);if(a.savedScripts=e.data.runningScripts,!Array.isArray(a.textFiles))return a;const r=(0,i.RL)("v2.3FileChanges/");let c=0;const u=Array.isArray(a.scripts)?a.scripts:[...a.scripts.values()];a.scripts=new m.X;for(const e of u){e.filename.endsWith(".ns")&&(e.filename=e.filename+".js");let t=(0,o.L6)(e.filename);t||(t=`${r}script${++c}.js`,e.content=`// Original path: ${e.filename}. Path was no longer valid\n`+e.content),e.filename=t,a.scripts.set(t,e)}let f=0;const h=a.textFiles;a.textFiles=new m.X;for(const e of h){const t=e.fn??e.filename;delete e.fn;let n=(0,s.T)(t);n||(n=`${r}text${++f}.txt`,e.content=`// Original path: ${e.filename}. Path was no longer valid\n`+e.content),e.filename=n,a.textFiles.set(n,e)}return(c||f)&&(a.savedScripts=[]),a}static getIncludedKeys(e){return(0,h.i)(e,{removedKeys:["runningScriptMap","savedScripts","ramUsed"]})}}},89916:(e,t,n)=>{"use strict";n.d(t,{x:()=>l});var a=n(14750),r=n(97740),o=n(23999),i=n(37931),s=n(94515);class l extends a.W{backdoorInstalled=!1;baseDifficulty=1;hackDifficulty=1;minDifficulty=1;moneyAvailable=0;moneyMax=0;numOpenPortsRequired=5;openPortCount=0;requiredHackingSkill=1;serverGrowth=1;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{hostname:"",ip:(0,i.r)()};super(e),(this.hostname.startsWith("hacknet-node-")||this.hostname.startsWith("hacknet-server-"))&&(this.hostname=(0,o.v)(10)),this.purchasedByPlayer=null!=e.purchasedByPlayer&&e.purchasedByPlayer,this.maxRam=null!=e.maxRam?e.maxRam:0,this.requiredHackingSkill=null!=e.requiredHackingSkill?e.requiredHackingSkill:1;const t=e.moneyAvailable??0;this.moneyAvailable=t*r.dQ.ServerStartingMoney,this.moneyMax=25*t*r.dQ.ServerMaxMoney;const n=null!=e.hackDifficulty?e.hackDifficulty*r.dQ.ServerStartingSecurity:1;this.hackDifficulty=Math.min(n,100),this.baseDifficulty=this.hackDifficulty,this.minDifficulty=Math.min(Math.max(1,Math.round(n/3)),100),this.serverGrowth=null!=e.serverGrowth?e.serverGrowth:1,this.numOpenPortsRequired=null!=e.numOpenPortsRequired?e.numOpenPortsRequired:5}capDifficulty(){this.hackDifficulty100&&(this.hackDifficulty=100)}changeMinimumSecurity(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?this.minDifficulty*=e:this.minDifficulty+=e,this.minDifficulty=Math.max(1,this.minDifficulty)}changeMaximumMoney(e){const t=1e13;if(this.moneyMax>t){const n=this.moneyMax-t;e=1+(e-1)/Math.log(n)/Math.log(8)}this.moneyMax*=e}fortify(e){this.hackDifficulty+=e,this.capDifficulty()}weaken(e){this.hackDifficulty-=e*r.dQ.ServerWeakenRate,this.capDifficulty()}toJSON(){return this.toJSONBase("Server",c)}static fromJSON(e){return a.W.fromJSONBase(e,l,c)}}const c=a.W.getIncludedKeys(l);s.gY.Server=l},2517:(e,t,n)=>{"use strict";n.d(t,{T_:()=>v,VQ:()=>y,a_:()=>d,iw:()=>h,pw:()=>g,xy:()=>b,yk:()=>p});var a=n(97467),r=n(89916),o=n(7987),i=n(97740),s=n(72938),l=n(49173),c=n(33244),u=n(21430),m=n(75350),f=n(21951);function h(e){let t=e.hostname.replace(/ /g,"-");if(null!=e.ip&&(0,a.TJ)(e.ip)&&(e.ip=(0,a.hG)()),null!=(0,a.WT)(t)){"-0"!=t.slice(-2)&&(t=`${t}-0`);for(let e=0;e<200&&(t=t.replace(/-[0-9]+$/,`-${e}`),null!=(0,a.WT)(t));++e);}return e.hostname=t,new r.x(e)}function d(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(!e.serverGrowth)return 1/0;const a=e.hackDifficulty??100;let r=1+(s.t.ServerBaseGrowthRate-1)/a;r>s.t.ServerMaxGrowthRate&&(r=s.t.ServerMaxGrowthRate);const o=e.serverGrowth/100,c=1+(n-1)/16,u=Math.log(t)/(Math.log(r)*l.J5.mults.hacking_grow*o*i.dQ.ServerGrowthRate*c);return u}function p(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:l.J5;if(!e.serverGrowth)return 1/0;const o=e.moneyMax??1,c=e.hackDifficulty??100;if(n<0&&(n=0),t>o&&(t=o),t<=n)return 0;const u=1+(s.t.ServerBaseGrowthRate-1)/c,m=Math.min(u,s.t.ServerMaxGrowthRate),f=e.serverGrowth/100,h=1+(a-1)/16,d=f*r.mults.hacking_grow*h*i.dQ.ServerGrowthRate,p=d*Math.log(m),g=n*p+Math.log(t*p);let y;if(g0&&(y-=Math.log(g));let b=y/p-n,v=m**d;v==1/0&&(v=1e300);let k=1/0;do{let e=v**b;e==1/0&&(e=1e300);const a=n+b;let r=a*e-t;r==1/0&&(r=1e300),k=r/(a*p+1)/e,b-=k}while(Math.abs(k)>=1);const w=Math.floor(b);if(t<=(n+w)*Math.pow(m,w*d))return w;const E=Math.ceil(b);return t<=(n+E)*Math.pow(m,E*d)?E:E+1}function g(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=(0,o.C)(e,t,l.J5,n);a<1&&(console.warn("serverGrowth calculated to be less than 1"),a=1);const r=e.moneyAvailable;if(e.moneyAvailable+=1*t,e.moneyAvailable*=a,(0,u.q)(e.moneyMax)&&isNaN(e.moneyAvailable)&&(e.moneyAvailable=e.moneyMax),(0,u.q)(e.moneyMax)&&e.moneyAvailable>e.moneyMax&&(e.moneyAvailable=e.moneyMax),r!==e.moneyAvailable){let a=p(e,e.moneyAvailable,r,n);a=Math.min(Math.max(0,Math.ceil(a)),t),e.fortify(2*s.t.ServerFortifyAmount*a)}return e.moneyAvailable/r}function y(e){const t=e.programs.includes(c.CompletedProgramName.bitFlume);if(e.programs.length=0,e.serversOnNetwork=[],e.isConnectedTo=!0,e.ramUsed=0,e.programs.push(c.CompletedProgramName.nuke),t&&e.programs.push(c.CompletedProgramName.bitFlume),e.messages.length=0,e.messages.push(c.LiteratureName.HackersStartingHandbook),0!==e.runningScriptMap.size){console.error("Some runningScripts were still present on home during prestige");for(const[t,n]of e.runningScriptMap){console.error(`script key: ${t}: ${n.size} scripts`);for(const e of n.keys())m.R.has(e)&&(0,f._)(e);n.clear()}e.runningScriptMap.clear()}}function b(e,t){return t>e.serversOnNetwork.length?(console.error("Tried to get server on network that was out of range"),null):(0,a.WT)(e.serversOnNetwork[t])}function v(e){return e instanceof r.x&&e.backdoorInstalled}},89673:(e,t,n)=>{"use strict";n.d(t,{Or:()=>d,RI:()=>g,VZ:()=>h,aZ:()=>m,ax:()=>b,eV:()=>f,kq:()=>p,y7:()=>y});var a=n(97467),r=n(2517),o=n(97740),i=n(72938),s=n(49173),l=n(39463),c=n(66579),u=n(75350);function m(e){const t=Math.round(e);if(isNaN(t)||!(0,c.w)(t)||1!==Math.sign(t))return 1/0;if(t>g())return 1/0;const n=Math.max(0,Math.log(t)/Math.log(2)-6);return t*i.t.BaseCostFor1GBOfRamServer*o.dQ.PurchasedServerCost*Math.pow(o.dQ.PurchasedServerSoftcap,n)}const f=(e,t)=>{const n=(0,a.WT)(e);if(!n)throw new Error(`Server '${e}' not found.`);if(!s.J5.purchasedServers.includes(e))throw new Error(`Server '${e}' not a purchased server.`);if(isNaN(t)||!(0,c.w)(t)||1!==Math.sign(t))throw new Error(`${t} is not a positive power of 2`);if(n.maxRam>=t)throw new Error(`'${e}' current ram (${n.maxRam}) is not bigger than new ram (${t})`);return m(t)-m(n.maxRam)},h=(e,t)=>{const n=(0,a.WT)(e);if(!n)throw new Error(`Server '${e}' not found.`);const r=f(e,t);if(!s.J5.canAfford(r))throw new Error(`You don't have enough money to upgrade '${e}'.`);s.J5.loseMoney(r,"servers"),n.maxRam=t},d=(e,t)=>{const n=(0,a.WT)(e);if(!n)throw new Error(`Server '${e}' doesn't exists.`);if((0,a.WT)(t))throw new Error(`Server '${t}' already exists.`);if(!s.J5.purchasedServers.includes(e))throw new Error(`Server '${e}' is not a player server.`);const r=(e,t,n)=>e.map((e=>e===t?n:e));s.J5.purchasedServers=r(s.J5.purchasedServers,e,t),s.J5.currentServer===e&&(s.J5.currentServer=t);const o=s.J5.getHomeComputer();o.serversOnNetwork=r(o.serversOnNetwork,e,t),n.serversOnNetwork=r(n.serversOnNetwork,e,t);for(const e of n.runningScriptMap.values())for(const n of e.values()){n.server=t;const e=u.R.get(n.pid);e&&(e.hostname=t)}n.scripts.forEach((e=>e.server=t)),n.hostname=t,(0,a.gd)(e,t)};function p(){return Math.round(i.t.PurchasedServerLimit*o.dQ.PurchasedServerLimit)}function g(){const e=Math.round(i.t.PurchasedServerMaxRam*o.dQ.PurchasedServerMaxRam);return 1<<31-Math.clz32(e)}function y(e,t,n){if(!s.J5.canAfford(n))return void(0,l.X)("You don't have enough money to purchase this server!");if(s.J5.purchasedServers.length>=p())return void(0,l.X)("You have reached the maximum limit of "+p()+" servers. You cannot purchase any more. You can delete some of your purchased servers using the deleteServer() Netscript function in a script");if(""==e)return void(0,l.X)("You must enter a hostname for your new server!");const o=(0,r.iw)({adminRights:!0,hostname:e,ip:(0,a.hG)(),isConnectedTo:!1,maxRam:t,organizationName:"",purchasedByPlayer:!0});(0,a.jG)(o),s.J5.purchasedServers.push(o.hostname);const i=s.J5.getHomeComputer();i.serversOnNetwork.push(o.hostname),o.serversOnNetwork.push(i.hostname),s.J5.loseMoney(n,"servers"),(0,l.X)("Server successfully purchased with hostname "+o.hostname)}function b(){const e=s.J5.getUpgradeHomeRamCost();if(!s.J5.canAfford(e))return void(0,l.X)("You do not have enough money to purchase additional RAM for your home computer");const t=s.J5.getHomeComputer();t.maxRam>=i.t.HomeComputerMaxRam?(0,l.X)("You cannot upgrade your home computer RAM because it is at its maximum possible value"):(t.maxRam*=2,s.J5.loseMoney(e,"servers"))}},40425:(e,t,n)=>{"use strict";n.d(t,{r:()=>a});const a={Home:"home",FulcrumSecretTechnologies:"fulcrumassets",CyberSecServer:"CSEC",NiteSecServer:"avmnite-02h",TheBlackHandServer:"I.I.I.I",BitRunnersServer:"run4theh111z",TheDarkArmyServer:".",DaedalusServer:"The-Cave",WorldDaemon:"w0r1d_d43m0n",DarkWeb:"darkweb"}},16014:(e,t,n)=>{"use strict";n.d(t,{q:()=>o});var a=n(33244),r=n(40425);const o=[{hackDifficulty:99,hostname:a.LocationName.AevumECorp.toLowerCase(),moneyAvailable:{max:7e10,min:3e10},networkLayer:15,numOpenPortsRequired:5,organizationName:a.LocationName.AevumECorp,requiredHackingSkill:{max:1400,min:1050},serverGrowth:99,specialName:a.LocationName.AevumECorp},{hackDifficulty:99,hostname:a.LocationName.Sector12MegaCorp.toLowerCase(),moneyAvailable:{max:6e10,min:4e10},networkLayer:15,numOpenPortsRequired:5,organizationName:a.LocationName.Sector12MegaCorp,requiredHackingSkill:{max:1350,min:1100},serverGrowth:99,specialName:a.LocationName.Sector12MegaCorp},{hackDifficulty:{max:88,min:72},hostname:"b-and-a",moneyAvailable:{max:3e10,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:a.LocationName.AevumBachmanAndAssociates,requiredHackingSkill:{max:1150,min:900},serverGrowth:{max:80,min:60},specialName:a.LocationName.AevumBachmanAndAssociates},{hackDifficulty:{max:97,min:88},hostname:"blade",literature:[a.LiteratureName.BeyondMan],maxRamExponent:{max:9,min:5},moneyAvailable:{max:4e10,min:1e10},networkLayer:14,numOpenPortsRequired:5,organizationName:a.LocationName.Sector12BladeIndustries,requiredHackingSkill:{max:1200,min:900},serverGrowth:{max:85,min:55},specialName:a.LocationName.Sector12BladeIndustries},{hackDifficulty:99,hostname:a.LocationName.VolhavenNWO.toLowerCase(),literature:[a.LiteratureName.TheHiddenWorld],moneyAvailable:{max:4e10,min:2e10},networkLayer:14,numOpenPortsRequired:5,organizationName:a.LocationName.VolhavenNWO,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:95,min:65},specialName:a.LocationName.VolhavenNWO},{hackDifficulty:{max:65,min:45},hostname:"clarkinc",literature:[a.LiteratureName.BeyondMan,a.LiteratureName.CostOfImmortality],moneyAvailable:{max:25e9,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:a.LocationName.AevumClarkeIncorporated,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:75,min:45},specialName:a.LocationName.AevumClarkeIncorporated},{hackDifficulty:{max:99,min:90},hostname:"omnitek",literature:[a.LiteratureName.CodedIntelligence,a.LiteratureName.HistoryOfSynthoids],maxRamExponent:{max:9,min:7},moneyAvailable:{max:22e9,min:13e9},networkLayer:13,numOpenPortsRequired:5,organizationName:a.LocationName.VolhavenOmniTekIncorporated,requiredHackingSkill:{max:1100,min:900},serverGrowth:{max:99,min:95},specialName:a.LocationName.VolhavenOmniTekIncorporated},{hackDifficulty:{max:75,min:55},hostname:"4sigma",moneyAvailable:{max:25e9,min:15e9},networkLayer:13,numOpenPortsRequired:5,organizationName:a.LocationName.Sector12FourSigma,requiredHackingSkill:{max:1250,min:900},serverGrowth:{max:99,min:75},specialName:a.LocationName.Sector12FourSigma},{hackDifficulty:{max:99,min:95},hostname:"kuai-gong",moneyAvailable:{max:3e10,min:2e10},networkLayer:13,numOpenPortsRequired:5,organizationName:a.LocationName.ChongqingKuaiGongInternational,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:99,min:90},specialName:a.LocationName.ChongqingKuaiGongInternational},{hackDifficulty:{max:97,min:83},hostname:"fulcrumtech",literature:[a.LiteratureName.SimulatedReality],maxRamExponent:{max:11,min:7},moneyAvailable:{max:18e8,min:14e8},networkLayer:12,numOpenPortsRequired:5,organizationName:a.LocationName.AevumFulcrumTechnologies,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:99,min:80},specialName:a.LocationName.AevumFulcrumTechnologies},{hackDifficulty:99,hostname:"fulcrumassets",moneyAvailable:1e6,networkLayer:15,numOpenPortsRequired:5,organizationName:a.LocationName.AevumFulcrumTechnologies,requiredHackingSkill:{max:1600,min:1100},serverGrowth:1,specialName:r.r.FulcrumSecretTechnologies},{hackDifficulty:{max:92,min:78},hostname:"stormtech",moneyAvailable:{max:12e8,min:1e9},networkLayer:12,numOpenPortsRequired:5,organizationName:a.LocationName.IshimaStormTechnologies,requiredHackingSkill:{max:1075,min:875},serverGrowth:{max:92,min:68},specialName:a.LocationName.IshimaStormTechnologies},{hackDifficulty:{max:96,min:84},hostname:"defcomm",moneyAvailable:{max:95e7,min:8e8},networkLayer:9,numOpenPortsRequired:5,organizationName:a.LocationName.NewTokyoDefComm,requiredHackingSkill:{max:1050,min:850},serverGrowth:{max:73,min:47},specialName:a.LocationName.NewTokyoDefComm},{hackDifficulty:{max:90,min:70},hostname:"infocomm",moneyAvailable:{max:9e8,min:6e8},networkLayer:10,numOpenPortsRequired:5,organizationName:"InfoComm",requiredHackingSkill:{max:950,min:875},serverGrowth:{max:75,min:35}},{hackDifficulty:{max:95,min:85},hostname:"helios",literature:[a.LiteratureName.BeyondMan],maxRamExponent:{max:8,min:5},moneyAvailable:{max:75e7,min:55e7},networkLayer:12,numOpenPortsRequired:5,organizationName:a.LocationName.VolhavenHeliosLabs,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:80,min:70},specialName:a.LocationName.VolhavenHeliosLabs},{hackDifficulty:{max:90,min:80},hostname:a.LocationName.NewTokyoVitaLife.toLowerCase(),literature:[a.LiteratureName.AGreenTomorrow],maxRamExponent:{max:7,min:4},moneyAvailable:{max:8e8,min:7e8},networkLayer:12,numOpenPortsRequired:5,organizationName:a.LocationName.NewTokyoVitaLife,requiredHackingSkill:{max:900,min:775},serverGrowth:{max:80,min:60},specialName:a.LocationName.NewTokyoVitaLife},{hackDifficulty:{max:95,min:85},hostname:"icarus",moneyAvailable:{max:1e9,min:9e8},networkLayer:9,numOpenPortsRequired:5,organizationName:a.LocationName.Sector12IcarusMicrosystems,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:95,min:85},specialName:a.LocationName.Sector12IcarusMicrosystems},{hackDifficulty:{max:90,min:80},hostname:"univ-energy",maxRamExponent:{max:7,min:4},moneyAvailable:{max:12e8,min:11e8},networkLayer:9,numOpenPortsRequired:4,organizationName:a.LocationName.Sector12UniversalEnergy,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:90,min:80},specialName:a.LocationName.Sector12UniversalEnergy},{hackDifficulty:{max:80,min:70},hostname:"titan-labs",literature:[a.LiteratureName.CodedIntelligence],maxRamExponent:{max:7,min:4},moneyAvailable:{max:9e8,min:75e7},networkLayer:11,numOpenPortsRequired:5,organizationName:"Titan Laboratories",requiredHackingSkill:{max:875,min:800},serverGrowth:{max:80,min:60}},{hackDifficulty:{max:75,min:65},hostname:"microdyne",literature:[a.LiteratureName.SyntheticMuscles],maxRamExponent:{max:6,min:4},moneyAvailable:{max:7e8,min:5e8},networkLayer:11,numOpenPortsRequired:5,organizationName:"Microdyne Technologies",requiredHackingSkill:{max:875,min:800},serverGrowth:{max:90,min:70}},{hackDifficulty:{max:80,min:70},hostname:"taiyang-digital",literature:[a.LiteratureName.AGreenTomorrow,a.LiteratureName.BrighterThanTheSun],moneyAvailable:{max:9e8,min:8e8},networkLayer:10,numOpenPortsRequired:5,organizationName:"Taiyang Digital",requiredHackingSkill:{max:950,min:850},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:65,min:55},hostname:"galactic-cyber",moneyAvailable:{max:85e7,min:75e7},networkLayer:7,numOpenPortsRequired:5,organizationName:a.LocationName.AevumGalacticCybersystems,requiredHackingSkill:{max:875,min:825},serverGrowth:{max:90,min:70},specialName:a.LocationName.AevumGalacticCybersystems},{hackDifficulty:{max:90,min:80},hostname:a.LocationName.AevumAeroCorp.toLowerCase(),literature:[a.LiteratureName.ManAndMachine],moneyAvailable:{max:12e8,min:1e9},networkLayer:7,numOpenPortsRequired:5,organizationName:a.LocationName.AevumAeroCorp,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:65,min:55},specialName:a.LocationName.AevumAeroCorp},{hackDifficulty:{max:95,min:85},hostname:"omnia",literature:[a.LiteratureName.HistoryOfSynthoids],maxRamExponent:{max:6,min:4},moneyAvailable:{max:1e9,min:9e8},networkLayer:8,numOpenPortsRequired:5,organizationName:a.LocationName.VolhavenOmniaCybersystems,requiredHackingSkill:{max:950,min:850},serverGrowth:{max:70,min:60},specialName:a.LocationName.VolhavenOmniaCybersystems},{hackDifficulty:{max:65,min:55},hostname:"zb-def",literature:[a.LiteratureName.SyntheticMuscles],moneyAvailable:{max:11e8,min:9e8},networkLayer:10,numOpenPortsRequired:4,organizationName:"ZB Defense Industries",requiredHackingSkill:{max:825,min:775},serverGrowth:{max:75,min:65}},{hackDifficulty:{max:80,min:60},hostname:"applied-energetics",moneyAvailable:{max:1e9,min:7e8},networkLayer:11,numOpenPortsRequired:4,organizationName:"Applied Energetics",requiredHackingSkill:{max:850,min:775},serverGrowth:{max:75,min:70}},{hackDifficulty:{max:80,min:70},hostname:"solaris",literature:[a.LiteratureName.AGreenTomorrow,a.LiteratureName.TheFailedFrontier],maxRamExponent:{max:7,min:4},moneyAvailable:{max:9e8,min:7e8},networkLayer:9,numOpenPortsRequired:5,organizationName:a.LocationName.ChongqingSolarisSpaceSystems,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:80,min:70},specialName:a.LocationName.ChongqingSolarisSpaceSystems},{hackDifficulty:{max:85,min:75},hostname:a.LocationName.Sector12DeltaOne.toLowerCase(),moneyAvailable:{max:17e8,min:13e8},networkLayer:8,numOpenPortsRequired:5,organizationName:a.LocationName.Sector12DeltaOne,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:70,min:50},specialName:a.LocationName.Sector12DeltaOne},{hackDifficulty:{max:85,min:75},hostname:"global-pharm",literature:[a.LiteratureName.AGreenTomorrow],maxRamExponent:{max:6,min:3},moneyAvailable:{max:175e7,min:15e8},networkLayer:7,numOpenPortsRequired:4,organizationName:a.LocationName.NewTokyoGlobalPharmaceuticals,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:90,min:80},specialName:a.LocationName.NewTokyoGlobalPharmaceuticals},{hackDifficulty:{max:80,min:60},hostname:"nova-med",moneyAvailable:{max:125e7,min:11e8},networkLayer:10,numOpenPortsRequired:4,organizationName:a.LocationName.IshimaNovaMedical,requiredHackingSkill:{max:850,min:775},serverGrowth:{max:85,min:65},specialName:a.LocationName.IshimaNovaMedical},{hackDifficulty:{max:90,min:70},hostname:"zeus-med",moneyAvailable:{max:15e8,min:13e8},networkLayer:9,numOpenPortsRequired:5,organizationName:"Zeus Medical",requiredHackingSkill:{max:850,min:800},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:80,min:70},hostname:"unitalife",maxRamExponent:{max:6,min:4},moneyAvailable:{max:11e8,min:1e9},networkLayer:8,numOpenPortsRequired:4,organizationName:"UnitaLife Group",requiredHackingSkill:{max:825,min:775},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:80,min:60},hostname:"lexo-corp",maxRamExponent:{max:7,min:4},moneyAvailable:{max:8e8,min:7e8},networkLayer:6,numOpenPortsRequired:4,organizationName:a.LocationName.VolhavenLexoCorp,requiredHackingSkill:{max:750,min:650},serverGrowth:{max:65,min:55},specialName:a.LocationName.VolhavenLexoCorp},{hackDifficulty:{max:60,min:40},hostname:"rho-construction",maxRamExponent:{max:6,min:4},moneyAvailable:{max:7e8,min:5e8},networkLayer:6,numOpenPortsRequired:3,organizationName:a.LocationName.AevumRhoConstruction,requiredHackingSkill:{max:525,min:475},serverGrowth:{max:60,min:40},specialName:a.LocationName.AevumRhoConstruction},{hackDifficulty:{max:70,min:50},hostname:"alpha-ent",literature:[a.LiteratureName.Sector12Crime],maxRamExponent:{max:7,min:4},moneyAvailable:{max:75e7,min:6e8},networkLayer:6,numOpenPortsRequired:4,organizationName:a.LocationName.Sector12AlphaEnterprises,requiredHackingSkill:{max:600,min:500},serverGrowth:{max:60,min:50},specialName:a.LocationName.Sector12AlphaEnterprises},{hackDifficulty:{max:80,min:70},hostname:"aevum-police",maxRamExponent:{max:6,min:4},moneyAvailable:{max:4e8,min:2e8},networkLayer:6,numOpenPortsRequired:4,organizationName:a.LocationName.AevumPolice,requiredHackingSkill:{max:450,min:400},serverGrowth:{max:50,min:30},specialName:a.LocationName.AevumPolice},{hackDifficulty:{max:55,min:45},hostname:"rothman-uni",literature:[a.LiteratureName.SecretSocieties,a.LiteratureName.TheFailedFrontier,a.LiteratureName.TensionsInTechRace],maxRamExponent:{max:7,min:4},moneyAvailable:{max:25e7,min:175e6},networkLayer:5,numOpenPortsRequired:3,organizationName:a.LocationName.Sector12RothmanUniversity,requiredHackingSkill:{max:430,min:370},serverGrowth:{max:45,min:35},specialName:a.LocationName.Sector12RothmanUniversity},{hackDifficulty:{max:85,min:65},hostname:"zb-institute",maxRamExponent:{max:7,min:4},moneyAvailable:{max:11e8,min:8e8},networkLayer:5,numOpenPortsRequired:5,organizationName:a.LocationName.VolhavenZBInstituteOfTechnology,requiredHackingSkill:{max:775,min:725},serverGrowth:{max:85,min:75},specialName:a.LocationName.VolhavenZBInstituteOfTechnology},{hackDifficulty:{max:65,min:45},hostname:"summit-uni",literature:[a.LiteratureName.SecretSocieties,a.LiteratureName.TheFailedFrontier,a.LiteratureName.SyntheticMuscles],maxRamExponent:{max:6,min:4},moneyAvailable:{max:35e7,min:2e8},networkLayer:5,numOpenPortsRequired:3,organizationName:a.LocationName.AevumSummitUniversity,requiredHackingSkill:{max:475,min:425},serverGrowth:{max:60,min:40},specialName:a.LocationName.AevumSummitUniversity},{hackDifficulty:{max:80,min:60},hostname:"syscore",moneyAvailable:{max:6e8,min:4e8},networkLayer:5,numOpenPortsRequired:4,organizationName:a.LocationName.VolhavenSysCoreSecurities,requiredHackingSkill:{max:650,min:550},serverGrowth:{max:70,min:60},specialName:a.LocationName.VolhavenSysCoreSecurities},{hackDifficulty:{max:70,min:60},hostname:"catalyst",literature:[a.LiteratureName.TensionsInTechRace],maxRamExponent:{max:7,min:4},moneyAvailable:{max:55e7,min:3e8},networkLayer:5,numOpenPortsRequired:3,organizationName:"Catalyst Ventures",requiredHackingSkill:{max:450,min:400},serverGrowth:{max:55,min:25}},{hackDifficulty:{max:45,min:35},hostname:"the-hub",maxRamExponent:{max:6,min:3},moneyAvailable:{max:2e8,min:15e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"The Hub",requiredHackingSkill:{max:325,min:275},serverGrowth:{max:55,min:45}},{hackDifficulty:{max:65,min:55},hostname:a.LocationName.VolhavenCompuTek.toLowerCase(),literature:[a.LiteratureName.ManAndMachine],moneyAvailable:{max:25e7,min:22e7},networkLayer:4,numOpenPortsRequired:3,organizationName:a.LocationName.VolhavenCompuTek,requiredHackingSkill:{max:400,min:300},serverGrowth:{max:65,min:45},specialName:a.LocationName.VolhavenCompuTek},{hackDifficulty:{max:80,min:60},hostname:"netlink",literature:[a.LiteratureName.SimulatedReality],maxRamExponent:{max:7,min:4},moneyAvailable:275e6,networkLayer:4,numOpenPortsRequired:3,organizationName:a.LocationName.AevumNetLinkTechnologies,requiredHackingSkill:{max:425,min:375},serverGrowth:{max:75,min:45},specialName:a.LocationName.AevumNetLinkTechnologies},{hackDifficulty:{max:65,min:35},hostname:"johnson-ortho",moneyAvailable:{max:85e6,min:7e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"Johnson Orthopedics",requiredHackingSkill:{max:300,min:250},serverGrowth:{max:65,min:35}},{hackDifficulty:1,hostname:"n00dles",literature:[],maxRamExponent:2,moneyAvailable:7e4,networkLayer:1,numOpenPortsRequired:0,organizationName:a.LocationName.NewTokyoNoodleBar,requiredHackingSkill:1,serverGrowth:3e3,specialName:a.LocationName.NewTokyoNoodleBar},{hackDifficulty:10,hostname:a.LocationName.Sector12FoodNStuff.toLowerCase(),literature:[a.LiteratureName.Sector12Crime],maxRamExponent:4,moneyAvailable:2e6,networkLayer:1,numOpenPortsRequired:0,organizationName:a.LocationName.Sector12FoodNStuff,requiredHackingSkill:1,serverGrowth:5,specialName:a.LocationName.Sector12FoodNStuff},{hackDifficulty:10,hostname:"sigma-cosmetics",maxRamExponent:4,moneyAvailable:23e5,networkLayer:1,numOpenPortsRequired:0,organizationName:"Sigma Cosmetics",requiredHackingSkill:5,serverGrowth:10},{hackDifficulty:15,hostname:"joesguns",maxRamExponent:4,moneyAvailable:25e5,networkLayer:1,numOpenPortsRequired:0,organizationName:a.LocationName.Sector12JoesGuns,requiredHackingSkill:10,serverGrowth:20,specialName:a.LocationName.Sector12JoesGuns},{hackDifficulty:25,hostname:"zer0",maxRamExponent:5,moneyAvailable:75e5,networkLayer:2,numOpenPortsRequired:1,organizationName:"ZER0 Nightclub",requiredHackingSkill:75,serverGrowth:40},{hackDifficulty:20,hostname:"nectar-net",maxRamExponent:4,moneyAvailable:275e4,networkLayer:2,numOpenPortsRequired:0,organizationName:"Nectar Nightclub Network",requiredHackingSkill:20,serverGrowth:25},{hackDifficulty:25,hostname:"neo-net",literature:[a.LiteratureName.TheHiddenWorld],maxRamExponent:5,moneyAvailable:5e6,networkLayer:3,numOpenPortsRequired:1,organizationName:"Neo Nightclub Network",requiredHackingSkill:50,serverGrowth:25},{hackDifficulty:30,hostname:"silver-helix",literature:[a.LiteratureName.NewTriads],maxRamExponent:6,moneyAvailable:45e6,networkLayer:3,numOpenPortsRequired:2,organizationName:"Silver Helix",requiredHackingSkill:150,serverGrowth:30},{hackDifficulty:15,hostname:"hong-fang-tea",literature:[a.LiteratureName.BrighterThanTheSun],maxRamExponent:4,moneyAvailable:3e6,networkLayer:1,numOpenPortsRequired:0,organizationName:"HongFang Teahouse",requiredHackingSkill:30,serverGrowth:20},{hackDifficulty:15,hostname:"harakiri-sushi",maxRamExponent:4,moneyAvailable:4e6,networkLayer:1,numOpenPortsRequired:0,organizationName:"HaraKiri Sushi Bar Network",requiredHackingSkill:40,serverGrowth:40},{hackDifficulty:20,hostname:"phantasy",maxRamExponent:5,moneyAvailable:24e6,networkLayer:3,numOpenPortsRequired:2,organizationName:"Phantasy Club",requiredHackingSkill:100,serverGrowth:35},{hackDifficulty:15,hostname:"max-hardware",maxRamExponent:5,moneyAvailable:1e7,networkLayer:2,numOpenPortsRequired:1,organizationName:"Max Hardware Store",requiredHackingSkill:80,serverGrowth:30},{hackDifficulty:{max:35,min:25},hostname:"omega-net",literature:[a.LiteratureName.TheNewGod],maxRamExponent:5,moneyAvailable:{max:7e7,min:6e7},networkLayer:3,numOpenPortsRequired:2,organizationName:a.LocationName.IshimaOmegaSoftware,requiredHackingSkill:{max:220,min:180},serverGrowth:{max:40,min:30},specialName:a.LocationName.IshimaOmegaSoftware},{hackDifficulty:{max:45,min:35},hostname:"crush-fitness",moneyAvailable:{max:6e7,min:4e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"Crush Fitness",requiredHackingSkill:{max:275,min:225},serverGrowth:{max:33,min:27},specialName:a.LocationName.AevumCrushFitnessGym},{hackDifficulty:30,hostname:"iron-gym",maxRamExponent:5,moneyAvailable:2e7,networkLayer:1,numOpenPortsRequired:1,organizationName:`${a.LocationName.Sector12IronGym} Network`,requiredHackingSkill:100,serverGrowth:20,specialName:a.LocationName.Sector12IronGym},{hackDifficulty:{max:55,min:45},hostname:"millenium-fitness",maxRamExponent:{max:8,min:4},moneyAvailable:25e7,networkLayer:6,numOpenPortsRequired:3,organizationName:"Millenium Fitness Network",requiredHackingSkill:{max:525,min:475},serverGrowth:{max:45,min:25},specialName:a.LocationName.VolhavenMilleniumFitnessGym},{hackDifficulty:{max:65,min:55},hostname:"powerhouse-fitness",maxRamExponent:{max:6,min:4},moneyAvailable:9e8,networkLayer:14,numOpenPortsRequired:5,organizationName:"Powerhouse Fitness",requiredHackingSkill:{max:1100,min:950},serverGrowth:{max:60,min:50},specialName:a.LocationName.Sector12PowerhouseGym},{hackDifficulty:{max:60,min:40},hostname:"snap-fitness",moneyAvailable:45e7,networkLayer:7,numOpenPortsRequired:4,organizationName:"Snap Fitness",requiredHackingSkill:{max:800,min:675},serverGrowth:{max:60,min:40},specialName:a.LocationName.AevumSnapFitnessGym},{hackDifficulty:0,hostname:"run4theh111z",literature:[a.LiteratureName.SimulatedReality,a.LiteratureName.TheNewGod],maxRamExponent:{max:9,min:5},moneyAvailable:0,networkLayer:11,numOpenPortsRequired:4,organizationName:"The Runners",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:r.r.BitRunnersServer},{hackDifficulty:0,hostname:"I.I.I.I",literature:[a.LiteratureName.DemocracyIsDead],maxRamExponent:{max:8,min:4},moneyAvailable:0,networkLayer:5,numOpenPortsRequired:3,organizationName:"I.I.I.I",requiredHackingSkill:{max:365,min:340},serverGrowth:0,specialName:r.r.TheBlackHandServer},{hackDifficulty:0,hostname:"avmnite-02h",literature:[a.LiteratureName.DemocracyIsDead],maxRamExponent:{max:7,min:4},moneyAvailable:0,networkLayer:4,numOpenPortsRequired:2,organizationName:a.FactionName.NiteSec,requiredHackingSkill:{max:220,min:202},serverGrowth:0,specialName:r.r.NiteSecServer},{hackDifficulty:0,hostname:".",maxRamExponent:4,moneyAvailable:0,networkLayer:13,numOpenPortsRequired:4,organizationName:".",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:r.r.TheDarkArmyServer},{hackDifficulty:0,hostname:"CSEC",literature:[a.LiteratureName.DemocracyIsDead],maxRamExponent:3,moneyAvailable:0,networkLayer:2,numOpenPortsRequired:1,organizationName:a.FactionName.CyberSec,requiredHackingSkill:{max:60,min:51},serverGrowth:0,specialName:r.r.CyberSecServer},{hackDifficulty:0,hostname:"The-Cave",literature:[a.LiteratureName.AlphaOmega],moneyAvailable:0,networkLayer:15,numOpenPortsRequired:5,organizationName:"Helios",requiredHackingSkill:925,serverGrowth:0,specialName:r.r.DaedalusServer},{hackDifficulty:0,hostname:"w0r1d_d43m0n",moneyAvailable:0,numOpenPortsRequired:5,organizationName:"w0r1d_d43m0n",requiredHackingSkill:3e3,serverGrowth:0,specialName:r.r.WorldDaemon},{hostname:r.r.DarkWeb,moneyAvailable:0,numOpenPortsRequired:5,organizationName:r.r.DarkWeb,requiredHackingSkill:1,specialName:r.r.DarkWeb}]},7987:(e,t,n)=>{"use strict";n.d(t,{C:()=>o});var a=n(72938),r=n(97740);function o(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(!e.serverGrowth)return 0;const i=e.hackDifficulty??100,s=Math.max(Math.floor(t),0),l=a.t.ServerBaseGrowthRate;let c=1+(l-1)/i;c>a.t.ServerMaxGrowthRate&&(c=a.t.ServerMaxGrowthRate);const u=e.serverGrowth/100,m=s*u*r.dQ.ServerGrowthRate,f=1+(o-1)/16;return Math.pow(c,m*n.mults.hacking_grow*f)}},56412:(e,t,n)=>{"use strict";let a,r;n.d(t,{E:()=>r,L:()=>a}),function(e){e[e.Cost=0]="Cost",e[e.Default=1]="Default",e[e.Reputation=2]="Reputation",e[e.Purchasable=3]="Purchasable"}(a||(a={})),function(e){e[e.Alphabetically=0]="Alphabetically",e[e.AcquirementTime=1]="AcquirementTime"}(r||(r={}))},51087:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(56412),r=n(18746),o=n(15975),i=n(19652);const s={ActiveScriptsServerPageSize:10,ActiveScriptsScriptPageSize:10,AutoexecScript:"",AutosaveInterval:60,CodeInstructionRunTime:25,DisableASCIIArt:!1,DisableHotkeys:!1,DisableTextEffects:!1,DisableOverviewProgressBars:!1,EnableBashHotkeys:!1,EnableHistorySearch:!1,TimestampsFormat:"",Locale:"en",MaxRecentScriptsCapacity:50,MaxLogCapacity:50,MaxPortCapacity:50,MaxTerminalCapacity:500,RemoteFileApiPort:0,SaveGameOnFileSave:!0,SuppressBuyAugmentationConfirmation:!1,SuppressFactionInvites:!1,SuppressMessages:!1,SuppressTravelConfirmation:!1,SuppressBladeburnerPopup:!1,SuppressTIXPopup:!1,SuppressSavedGameToast:!1,SuppressAutosaveDisabledWarnings:!1,UseIEC60027_2:!1,ShowMiddleNullTimeUnit:!1,ExcludeRunningScriptsFromSave:!1,IsSidebarOpened:!0,theme:{...r.u},styles:{...o.j},overview:{x:0,y:0,opened:!0},EditorTheme:{...i.Co},OwnedAugmentationsOrder:a.E.AcquirementTime,PurchaseAugmentationsOrder:a.L.Default,MonacoTheme:"monokai",MonacoInsertSpaces:!0,MonacoTabSize:2,MonacoDetectIndentation:!1,MonacoFontFamily:"Lucida Console",MonacoFontSize:20,MonacoFontLigatures:!1,MonacoVim:!1,MonacoWordWrap:"off",MonacoCursorStyle:"line",MonacoCursorBlinking:"blink",hideTrailingDecimalZeros:!1,hideThousandsSeparator:!1,useEngineeringNotation:!1,disableSuffixes:!1,load(e){const t=JSON.parse(e);t.theme&&Object.assign(s.theme,t.theme),t.styles&&Object.assign(s.styles,t.styles),t.overview&&Object.assign(s.overview,t.overview),t.EditorTheme&&Object.assign(s.EditorTheme,t.EditorTheme),delete t.theme,t.styles,t.overview,t.EditorTheme,Object.assign(s,t)}}},72611:(e,t,n)=>{"use strict";n.d(t,{x:()=>p});var a=n(67294),r=n(51627),o=n(10848),i=n(29894),s=n(61702),l=n(17575),c=n(81138),u=n(60181),m=n(23508),f=n(47206);const h=new WeakMap;function d(e,t){let n=h.get(e);return void 0===n&&(n={},h.set(e,n)),n[t]??=()=>e(t)}function p(e){let{classes:t,icon:n,sidebarOpen:h,key_:p,items:g,page:y,clickPage:b,flash:v}=e;const[k,w]=(0,a.useState)(!0),E=(0,a.useMemo)((()=>({root:t.listitem})),[t.listitem]);return a.createElement(a.Fragment,null,(0,a.useMemo)((()=>a.createElement(o.ZP,{classes:E,button:!0,onClick:()=>w((e=>!e))},a.createElement(i.Z,null,a.createElement(l.Z,{title:h?"":p},a.createElement(n,{color:"primary"}))),a.createElement(s.Z,{primary:a.createElement(c.Z,null,p)}),k?a.createElement(u.Z,{color:"primary"}):a.createElement(m.Z,{color:"primary"}))),[E,h,p,k,n]),a.createElement(r.Z,{in:k,timeout:"auto",unmountOnExit:!0},g.map((e=>{if("object"!=typeof e)return null;const{key_:n,icon:r,count:o,active:i}=e;return a.createElement(f.R,{key:n,key_:n,icon:r,count:o,active:i??y===n,clickFn:d(b,n),flash:v===n,classes:t,sidebarOpen:h})}))))}},47206:(e,t,n)=>{"use strict";n.d(t,{R:()=>u});var a=n(67294),r=n(55274),o=n(10848),i=n(29894),s=n(61702),l=n(17575),c=n(81138);const u=(0,a.memo)((function(e){const t=e.flash?"error":e.active?"primary":"secondary";return a.createElement(o.ZP,{classes:{root:e.classes.listitem},button:!0,key:e.key_,className:e.active?e.classes.active:"",onClick:e.clickFn},a.createElement(i.Z,null,a.createElement(r.Z,{badgeContent:(e.count??0)>0?e.count:void 0,color:"error"},a.createElement(l.Z,{title:e.sidebarOpen?"":e.key_},a.createElement(e.icon,{color:t})))),a.createElement(s.Z,null,a.createElement(c.Z,{color:t},e.key_)))}))},24326:(e,t,n)=>{"use strict";n.d(t,{F:()=>ce});var a=n(67294),r=n(81055),o=n(81719),i=n(73327),s=n(77541),l=n(73310),c=n(97212),u=n(44373),m=n(17575),f=n(19572),h=n(26215),d=n(10848),p=n(29894),g=n(61702),y=n(81138),b=n(65434),v=n(91290),k=n(75058),w=n(81261),E=n(14465),S=n(84855),C=n(58617),x=n(5499),N=n(30061),M=n(52428),A=n(3816),T=n(86235),L=n(28333),R=n(43117),F=n(87703),I=n(54788),_=n(31122),P=n(27036),B=n(9944),O=n(94229),D=n(45225),Z=n(25089),G=n(15573),J=n(89055),W=n(82461),H=n(52947),U=n(24815),j=n(72611),$=n(49173),q=n(72938),z=n(40780),V=n(11397),Y=n(51087),K=n(33244),X=n(30286),Q=n(1041),ee=n(90936),te=n(81881),ne=n(88775);function ae(){return ae=Object.assign?Object.assign.bind():function(e){for(var t=1;t({width:e.spacing(31),transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.enteringScreen}),overflowX:"hidden"}),ie=e=>({transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen}),overflowX:"hidden",width:`calc(${e.spacing(2)} + 1px)`,[e.breakpoints.up("sm")]:{width:`calc(${e.spacing(7)} + 1px)`}}),se=(0,o.ZP)(l.ZP,{shouldForwardProp:e=>"open"!==e})((e=>{let{theme:t,open:n}=e;return{width:t.spacing(31),whiteSpace:"nowrap",boxSizing:"border-box",...n&&{...oe(t),"& .MuiDrawer-paper":oe(t)},...!n&&{...ie(t),"& .MuiDrawer-paper":ie(t)}}})),le=(0,s.Z)((e=>(0,i.Z)({active:{borderLeft:"3px solid "+e.palette.primary.main},listitem:{}})));function ce(e){(0,ne.S)(200);let t=null;switch(z.wP.currStep){case z.$o.CharacterGoToTerminalPage:case z.$o.ActiveScriptsPage:t=U.T3.Terminal;break;case z.$o.GoToCharacterPage:t=U.T3.Stats;break;case z.$o.TerminalGoToActiveScriptsPage:t=U.T3.ActiveScripts;break;case z.$o.GoToHacknetNodesPage:t=U.T3.Hacknet;break;case z.$o.HacknetNodesGoToWorldPage:t=U.T3.City;break;case z.$o.WorldDescription:t=U.T3.Documentation}const n=$.J5.queuedAugmentations.length,o=$.J5.factionInvitations.filter((e=>!Q.Y.has(e))).length,i=(0,V.c)().length-X.Q.size,s=$.J5.factionInvitations.length>0||$.J5.factions.length>0||$.J5.augmentations.length>0||$.J5.queuedAugmentations.length>0||$.J5.sourceFiles.size>0,l=$.J5.augmentations.length>0||$.J5.queuedAugmentations.length>0||$.J5.sourceFiles.size>0||$.J5.exploits.length>0,x=$.J5.sleeves.length>0,ae=!!$.J5.corporation,oe=!!$.J5.gang,ie=Object.values($.J5.jobs).length>0,ce=$.J5.hasWseAccount,ue=!!$.J5.bladeburner,me=$.J5.augmentations.some((e=>e.name===K.AugmentationName.StaneksGift1)),fe=(0,a.useCallback)((e=>{if(e===U.T3.Job)H.F.toPage(e,{location:te.t[Object.keys($.J5.jobs)[0]]});else if(e==U.T3.ScriptEditor)H.F.toPage(e,{});else{if(!(0,U.Pg)(e))throw new Error("Can't handle click on Page "+e);H.F.toPage(e)}t===e&&(0,z.ZF)()}),[t]);(0,a.useEffect)((()=>{function t(t){if(!Y.Z.DisableHotkeys&&!($.J5.currentWork&&$.J5.focus||H.F.page()===U.T3.BitVerse))if(t.code===r.P.T&&t.altKey)t.preventDefault(),fe(U.T3.Terminal);else if(t.code===r.P.C&&t.altKey)t.preventDefault(),fe(U.T3.Stats);else if(t.code===r.P.E&&t.altKey)t.preventDefault(),fe(U.T3.ScriptEditor);else if(t.code===r.P.S&&t.altKey)t.preventDefault(),fe(U.T3.ActiveScripts);else if(t.code===r.P.H&&t.altKey)t.preventDefault(),fe(U.T3.Hacknet);else if(t.code===r.P.W&&t.altKey)t.preventDefault(),fe(U.T3.City);else if(t.code===r.P.J&&t.altKey&&!t.ctrlKey&&!t.metaKey&&ie)t.preventDefault(),fe(U.T3.Job);else if(t.code===r.P.R&&t.altKey)t.preventDefault(),fe(U.T3.Travel);else if(t.code===r.P.P&&t.altKey)t.preventDefault(),fe(U.T3.CreateProgram);else if(t.code===r.P.F&&t.altKey){if(e.page==U.T3.Terminal&&Y.Z.EnableBashHotkeys)return;t.preventDefault(),fe(U.T3.Factions)}else t.code===r.P.A&&t.altKey?(t.preventDefault(),fe(U.T3.Augmentations)):t.code===r.P.U&&t.altKey?(t.preventDefault(),fe(U.T3.Documentation)):t.code===r.P.O&&t.altKey?(t.preventDefault(),fe(U.T3.Options)):t.code===r.P.B&&t.altKey&&$.J5.bladeburner?(t.preventDefault(),fe(U.T3.Bladeburner)):t.code===r.P.G&&t.altKey&&$.J5.gang&&(t.preventDefault(),fe(U.T3.Gang))}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)}),[ie,fe,e.page]);const he=le(),[de,pe]=(0,a.useState)(Y.Z.IsSidebarOpened),ge=()=>pe((e=>(Y.Z.IsSidebarOpened=!e,!e))),ye=(0,a.useMemo)((()=>({root:he.listitem})),[he.listitem]),be=de?f.Z:h.Z;return a.createElement(se,{open:de,anchor:"left",variant:"permanent"},(0,a.useMemo)((()=>a.createElement(d.ZP,{classes:ye,button:!0,onClick:ge},a.createElement(p.Z,null,a.createElement(be,{color:"primary"})),a.createElement(g.Z,{primary:a.createElement(m.Z,{title:(0,ee.v)()},a.createElement(y.Z,null,"Bitburner v",q.t.VersionString))}))),[be,ye]),a.createElement(u.Z,null),a.createElement(c.Z,null,a.createElement(j.x,{key_:"Hacking",page:e.page,clickPage:fe,flash:t,icon:b.Z,sidebarOpen:de,classes:he,items:[{key_:U.T3.Terminal,icon:v.Z},{key_:U.T3.ScriptEditor,icon:k.Z},{key_:U.T3.ActiveScripts,icon:w.Z},{key_:U.T3.CreateProgram,icon:E.Z,count:i},me&&{key_:U.T3.StaneksGift,icon:D.Z}]}),a.createElement(u.Z,null),a.createElement(j.x,{key_:"Character",page:e.page,clickPage:fe,flash:t,icon:G.Z,sidebarOpen:de,classes:he,items:[{key_:U.T3.Stats,icon:S.Z},s&&{key_:U.T3.Factions,icon:C.Z,active:[U.T3.Factions,U.T3.Faction].includes(e.page),count:o},l&&{key_:U.T3.Augmentations,icon:re,count:n},{key_:U.T3.Hacknet,icon:N.Z},x&&{key_:U.T3.Sleeves,icon:M.Z}]}),a.createElement(u.Z,null),a.createElement(j.x,{key_:"World",page:e.page,clickPage:fe,flash:t,icon:J.Z,sidebarOpen:de,classes:he,items:[{key_:U.T3.City,icon:A.Z,active:[U.T3.City,U.T3.Grafting,U.T3.Location].includes(e.page)},{key_:U.T3.Travel,icon:T.Z},ie&&{key_:U.T3.Job,icon:L.Z},ce&&{key_:U.T3.StockMarket,icon:R.Z},ue&&{key_:U.T3.Bladeburner,icon:F.Z},ae&&{key_:U.T3.Corporation,icon:I.Z},oe&&{key_:U.T3.Gang,icon:_.Z}]}),a.createElement(u.Z,null),a.createElement(j.x,{key_:"Help",page:e.page,clickPage:fe,flash:t,icon:W.Z,sidebarOpen:de,classes:he,items:[{key_:U.T3.Milestones,icon:P.Z},{key_:U.T3.Documentation,icon:B.Z},{key_:U.T3.Achievements,icon:Z.Z},{key_:U.T3.Options,icon:O.Z},!1]})))}},14029:(e,t,n)=>{"use strict";n.d(t,{n:()=>r});var a=n(99745);class r{lvl=1;owned=!1;constructor(e,t){const n="BitNode"+e,r=a.tK[n];if(null==r)throw new Error("Invalid Bit Node for this Source File");this.n=e,this.name=`Source-File ${e}: ${r.name}`,this.info=t}}},16264:(e,t,n)=>{"use strict";n.d(t,{J:()=>i,c:()=>s});var a=n(67294),r=n(14029),o=n(99745);const i={};function s(){(0,o.JN)(),i.SourceFile1=new r.n(1,a.createElement(a.Fragment,null,"This Source-File lets the player start with 32GB of RAM on his/her home computer. It also increases all of the player's multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 16%",a.createElement("br",null),"Level 2: 24%",a.createElement("br",null),"Level 3: 28%")),i.SourceFile2=new r.n(2,a.createElement(a.Fragment,null,"This Source-File allows you to form gangs in other BitNodes once your karma decreases to a certain value. It also increases the player's crime success rate, crime money, and charisma multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 24%",a.createElement("br",null),"Level 2: 36%",a.createElement("br",null),"Level 3: 42%")),i.SourceFile3=new r.n(3,a.createElement(a.Fragment,null,"This Source-File lets you create corporations on other BitNodes (although some BitNodes will disable this mechanic) and level 3 permanently unlocks the full API. This Source-File also increases your charisma and company salary multipliers by:",a.createElement("br",null),"Level 1: 8%",a.createElement("br",null),"Level 2: 12%",a.createElement("br",null),"Level 3: 14%")),i.SourceFile4=new r.n(4,a.createElement(a.Fragment,null,"This Source-File lets you access and use the Singularity Functions in every BitNode. Every level of this Source-File reduces the RAM cost of Singularity functions:",a.createElement("br",null),"Level 1: 16x",a.createElement("br",null),"Level 2: 4x",a.createElement("br",null),"Level 3: 1x")),i.SourceFile5=new r.n(5,a.createElement(a.Fragment,null,"This Source-File grants a special new stat called Intelligence. Intelligence is unique because it is permanent and persistent (it never gets reset back to 1). However, gaining Intelligence experience is much slower than other stats. Higher Intelligence levels will boost your production for many actions in the game. In addition, this Source-File will unlock:",a.createElement("br",null),a.createElement("ul",null,a.createElement("li",null,"The ",a.createElement("code",null,"getBitNodeMultipliers()")," Netscript function"),a.createElement("li",null,"Permanent access to Formulas.exe"),a.createElement("li",null,"Access to BitNode multiplier information on the ",a.createElement("b",null,"Stats")," page")),"It will also raise all of your hacking-related multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 8%",a.createElement("br",null),"Level 2: 12%",a.createElement("br",null),"Level 3: 14%")),i.SourceFile6=new r.n(6,a.createElement(a.Fragment,null,"This Source-File allows you to access the NSA's Bladeburner Division in other BitNodes. In addition, this Source-File will raise both the level and experience gain rate of all your combat stats by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 8%",a.createElement("br",null),"Level 2: 12%",a.createElement("br",null),"Level 3: 14%")),i.SourceFile7=new r.n(7,a.createElement(a.Fragment,null,"This Source-File allows you to access the Bladeburner Netscript API in other BitNodes. In addition, this Source-File will increase all of your Bladeburner multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 8%",a.createElement("br",null),"Level 2: 12%",a.createElement("br",null),"Level 3: 14%")),i.SourceFile8=new r.n(8,a.createElement(a.Fragment,null,"This Source-File grants the following benefits:",a.createElement("br",null),a.createElement("br",null),"Level 1: Permanent access to WSE and TIX API",a.createElement("br",null),"Level 2: Ability to short stocks in other BitNodes",a.createElement("br",null),"Level 3: Ability to use limit/stop orders in other BitNodes",a.createElement("br",null),a.createElement("br",null),"This Source-File also increases your hacking growth multipliers by:",a.createElement("br",null),"Level 1: 12%",a.createElement("br",null),"Level 2: 18%",a.createElement("br",null),"Level 3: 21%")),i.SourceFile9=new r.n(9,a.createElement(a.Fragment,null,"This Source-File grants the following benefits:",a.createElement("br",null),a.createElement("br",null),"Level 1: Permanently unlocks the Hacknet Server in other BitNodes",a.createElement("br",null),"Level 2: You start with 128GB of RAM on your home computer when entering a new BitNode",a.createElement("br",null),"Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode",a.createElement("br",null),a.createElement("br",null),"(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT when installing Augmentations)",a.createElement("br",null),a.createElement("br",null),"This Source-File also increases hacknet production and reduces hacknet costs by:",a.createElement("br",null),"Level 1: 12%",a.createElement("br",null),"Level 2: 18%",a.createElement("br",null),"Level 3: 21%")),i.SourceFile10=new r.n(10,a.createElement(a.Fragment,null,"This Source-File unlocks Sleeve technology, and the Grafting API in other BitNodes. Each level of this Source-File also grants you a Duplicate Sleeve")),i.SourceFile11=new r.n(11,a.createElement(a.Fragment,null,"This Source-File makes it so that company favor increases BOTH the player's salary and reputation gain rate at that company by 1% per favor (rather than just the reputation gain). This Source-File also increases the player's company salary and reputation gain multipliers by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 32%",a.createElement("br",null),"Level 2: 48%",a.createElement("br",null),"Level 3: 56%",a.createElement("br",null),a.createElement("br",null),"It also reduces the price increase for every aug bought by:",a.createElement("br",null),a.createElement("br",null),"Level 1: 4%",a.createElement("br",null),"Level 2: 6%",a.createElement("br",null),"Level 3: 7%")),i.SourceFile12=new r.n(12,a.createElement(a.Fragment,null,"This Source-File lets the player start with Neuroflux Governor equal to the level of this Source-File.")),i.SourceFile13=new r.n(13,a.createElement(a.Fragment,null,"Each level of this Source-File increases the size of Stanek's Gift."))}},29618:(e,t,n)=>{"use strict";n.d(t,{P:()=>o});var a=n(16264),r=n(49173);function o(e,t){const n="SourceFile"+e,o=a.J[n];if(null!=o){switch(e){case 1:{let e=0;for(let n=0;n{"use strict";n.d(t,{BN:()=>d,Ne:()=>h,TR:()=>f,no:()=>p});var a=n(38456),r=n(33244),o=n(83190),i=n(49173),s=n(22115),l=n(72360),c=n(39463),u=n(67294),m=n(23122);function f(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if((t=Math.round(t))<=0)return!1;if(null==e||isNaN(t))return n?m.BM.log(n,(()=>`Invalid arguments: stock='${e}' shares='${t}'`)):!0!==f.suppressDialog&&(0,c.X)("Failed to buy stock. This may be a bug, contact developer"),!1;const h=(0,a.Cb)(e,t,r.PositionType.Long);if(null==h)return!1;if(i.J5.money`You do not have enough money to purchase this position. You need ${(0,s.lb)(h)}.`)):!0!==f.suppressDialog&&(0,c.X)(u.createElement(u.Fragment,null,"You do not have enough money to purchase this. You need ",u.createElement(l.W,{money:h}))),!1;if(t+e.playerShares+e.playerShortShares>e.maxShares)return n?m.BM.log(n,(()=>`Purchasing '${t+e.playerShares+e.playerShortShares}' shares would exceed ${e.symbol}'s maximum (${e.maxShares}) number of shares`)):!0!==f.suppressDialog&&(0,c.X)(`You cannot purchase this many shares. ${e.symbol} has a maximum of ${(0,s.O3)(e.maxShares)} shares.`),!1;const d=e.playerShares*e.playerAvgPx;i.J5.loseMoney(h,"stock");const p=d+h-o.M.StockMarketCommission;if(e.playerShares=Math.round(e.playerShares+t),e.playerAvgPx=p/e.playerShares,(0,a.L0)(e,t),null!=f.rerenderFn&&"function"==typeof f.rerenderFn&&f.rerenderFn(),n){const a=`Bought ${(0,s.O3)(t)} shares of ${e.symbol} for ${(0,s.lb)(h)}. Paid ${(0,s.lb)(o.M.StockMarketCommission)} in commission fees.`;m.BM.log(n,(()=>a))}else!0!==f.suppressDialog&&(0,c.X)(u.createElement(u.Fragment,null,"Bought ",(0,s.O3)(t)," shares of ",e.symbol," for ",u.createElement(l.W,{money:h}),". Paid"," ",u.createElement(l.W,{money:o.M.StockMarketCommission})," in commission fees."));return!0}function h(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(null==e||t<0||isNaN(t))return n?m.BM.log(n,(()=>`Invalid arguments: stock='${e}' shares='${t}'`)):!0!==o.suppressDialog&&(0,c.X)("Failed to sell stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, contact developer"),!1;if((t=Math.round(t))>e.playerShares&&(t=e.playerShares),0===t)return!1;const f=(0,a.WZ)(e,t,r.PositionType.Long);if(null==f)return!1;let h=f-e.playerAvgPx*t;if(isNaN(h)&&(h=0),i.J5.gainMoney(f,"stock"),n&&(n.workerScript.scriptRef.onlineMoneyMade+=h,i.J5.scriptProdSinceLastAug+=h),e.playerShares=Math.round(e.playerShares-t),0===e.playerShares&&(e.playerAvgPx=0),(0,a.L0)(e,t),null!=o.rerenderFn&&"function"==typeof o.rerenderFn&&o.rerenderFn(),n){const a=`Sold ${(0,s.O3)(t)} shares of ${e.symbol}. After commissions, you gained a total of ${(0,s.lb)(f)}.`;m.BM.log(n,(()=>a))}else!0!==o.suppressDialog&&(0,c.X)(u.createElement(u.Fragment,null,"Sold ",(0,s.O3)(t)," shares of ",e.symbol,". After commissions, you gained a total of"," ",u.createElement(l.W,{money:f}),"."));return!0}function d(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if((t=Math.round(t))<=0)return!1;if(null==e||isNaN(t))return n?m.BM.log(n,(()=>`Invalid arguments: stock='${e}' shares='${t}'`)):!0!==f.suppressDialog&&(0,c.X)("Failed to initiate a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;const h=(0,a.Cb)(e,t,r.PositionType.Short);if(null==h)return!1;if(i.J5.money"You do not have enough money to purchase this short position. You need "+(0,s.lb)(h))):!0!==f.suppressDialog&&(0,c.X)(u.createElement(u.Fragment,null,"You do not have enough money to purchase this short position. You need ",u.createElement(l.W,{money:h}))),!1;if(t+e.playerShares+e.playerShortShares>e.maxShares)return n?m.BM.log(n,(()=>`This '${t+e.playerShares+e.playerShortShares}' short shares would exceed ${e.symbol}'s maximum (${e.maxShares}) number of shares.`)):!0!==f.suppressDialog&&(0,c.X)(`You cannot purchase this many shares. ${e.symbol} has a maximum of ${e.maxShares} shares.`),!1;const d=e.playerShortShares*e.playerAvgShortPx;i.J5.loseMoney(h,"stock");const p=d+h-o.M.StockMarketCommission;if(e.playerShortShares=Math.round(e.playerShortShares+t),e.playerAvgShortPx=p/e.playerShortShares,(0,a.L0)(e,t),null!=f.rerenderFn&&"function"==typeof f.rerenderFn&&f.rerenderFn(),n){const a=`Bought a short position of ${(0,s.O3)(t)} shares of ${e.symbol} for ${(0,s.lb)(h)}. Paid ${(0,s.lb)(o.M.StockMarketCommission)} in commission fees.`;m.BM.log(n,(()=>a))}else f.suppressDialog||(0,c.X)(u.createElement(u.Fragment,null,"Bought a short position of ",(0,s.O3)(t)," shares of ",e.symbol," for ",u.createElement(l.W,{money:h}),". Paid ",u.createElement(l.W,{money:o.M.StockMarketCommission})," in commission fees."));return!0}function p(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(null==e||isNaN(t)||t<0)return n?m.BM.log(n,(()=>`Invalid arguments: stock='${e}' shares='${t}'`)):o.suppressDialog||(0,c.X)("Failed to sell a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;if((t=Math.round(t))>e.playerShortShares&&(t=e.playerShortShares),0===t)return!1;const f=t*e.playerAvgShortPx,h=(0,a.WZ)(e,t,r.PositionType.Short);if(null==h||isNaN(h)||null==f)return n?m.BM.log(n,(()=>"Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug")):o.suppressDialog||(0,c.X)("Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug"),!1;let d=h-f;if(isNaN(d)&&(d=0),i.J5.gainMoney(h,"stock"),n&&(n.workerScript.scriptRef.onlineMoneyMade+=d,i.J5.scriptProdSinceLastAug+=d),e.playerShortShares=Math.round(e.playerShortShares-t),0===e.playerShortShares&&(e.playerAvgShortPx=0),(0,a.L0)(e,t),null!=o.rerenderFn&&"function"==typeof o.rerenderFn&&o.rerenderFn(),n){const a=`Sold your short position of ${(0,s.O3)(t)} shares of ${e.symbol}. After commissions, you gained a total of ${(0,s.lb)(h)}`;m.BM.log(n,(()=>a))}else o.suppressDialog||(0,c.X)(u.createElement(u.Fragment,null,"Sold your short position of ",(0,s.O3)(t)," shares of ",e.symbol,". After commissions, you gained a total of ",u.createElement(l.W,{money:h})));return!0}},41485:(e,t,n)=>{"use strict";n.d(t,{QT:()=>i,d:()=>o,mr:()=>r});var a=n(33244);let r,o;!function(e){e.LimitBuy="Limit Buy Order",e.LimitSell="Limit Sell Order",e.StopBuy="Stop Buy Order",e.StopSell="Stop Sell Order"}(r||(r={})),function(e){e.Long="L",e.Short="S"}(o||(o={}));const i={[a.LocationName.AevumECorp]:"ECP",[a.LocationName.Sector12MegaCorp]:"MGCP",[a.LocationName.Sector12BladeIndustries]:"BLD",[a.LocationName.AevumClarkeIncorporated]:"CLRK",[a.LocationName.VolhavenOmniTekIncorporated]:"OMTK",[a.LocationName.Sector12FourSigma]:"FSIG",[a.LocationName.ChongqingKuaiGongInternational]:"KGI",[a.LocationName.AevumFulcrumTechnologies]:"FLCM",[a.LocationName.IshimaStormTechnologies]:"STM",[a.LocationName.NewTokyoDefComm]:"DCOMM",[a.LocationName.VolhavenHeliosLabs]:"HLS",[a.LocationName.NewTokyoVitaLife]:"VITA",[a.LocationName.Sector12IcarusMicrosystems]:"ICRS",[a.LocationName.Sector12UniversalEnergy]:"UNV",[a.LocationName.AevumAeroCorp]:"AERO",[a.LocationName.VolhavenOmniaCybersystems]:"OMN",[a.LocationName.ChongqingSolarisSpaceSystems]:"SLRS",[a.LocationName.NewTokyoGlobalPharmaceuticals]:"GPH",[a.LocationName.IshimaNovaMedical]:"NVMD",[a.LocationName.AevumWatchdogSecurity]:"WDS",[a.LocationName.VolhavenLexoCorp]:"LXO",[a.LocationName.AevumRhoConstruction]:"RHOC",[a.LocationName.Sector12AlphaEnterprises]:"APHE",[a.LocationName.VolhavenSysCoreSecurities]:"SYSC",[a.LocationName.VolhavenCompuTek]:"CTK",[a.LocationName.AevumNetLinkTechnologies]:"NTLK",[a.LocationName.IshimaOmegaSoftware]:"OMGA",[a.LocationName.Sector12FoodNStuff]:"FNS",[a.LocationName.Sector12JoesGuns]:"JGN","Sigma Cosmetics":"SGC","Catalyst Ventures":"CTYS","Microdyne Technologies":"MDYN","Titan Laboratories":"TITN"}},49170:(e,t,n)=>{"use strict";n.d(t,{K:()=>o});var a=n(33244),r=n(94515);class o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:a.OrderType.LimitBuy,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.PositionType.Long,i=!1;if("number"==typeof t&&"number"==typeof n||(i=!0),(isNaN(t)||isNaN(n))&&(i=!0),"string"!=typeof e&&(i=!0),i)throw new Error("Invalid constructor parameters for Order");this.stockSymbol=e,this.shares=t,this.price=n,this.type=r,this.pos=o}toJSON(){return(0,r.L3)("Order",this)}static fromJSON(e){return(0,r.Id)(o,e.data)}}r.gY.Order=o},85896:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var a=n(82427),r=n(22213),o=n(33244),i=n(22115),s=n(72360),l=n(39463),c=n(51087),u=n(67294);function m(e,t,n,a){const i=a.stockMarket.Orders;if(null==i){const e={};for(const t of Object.keys(a.stockMarket)){const n=a.stockMarket[t];n instanceof r.W&&(e[n.symbol]=[])}return void(a.stockMarket.Orders=e)}let s=i[e.symbol];if(null==s||s.constructor!==Array)return console.error(`Invalid Order book for ${e.symbol} in processOrders(): ${s}`),void(s=[]);for(const r of s)if(r.type===t&&r.pos===n)switch(r.type){case o.OrderType.LimitBuy:(r.pos===o.PositionType.Long&&e.price<=r.price||r.pos===o.PositionType.Short&&e.price>=r.price)&&f(r,a);break;case o.OrderType.LimitSell:case o.OrderType.StopBuy:(r.pos===o.PositionType.Long&&e.price>=r.price||r.pos===o.PositionType.Short&&e.price<=r.price)&&f(r,a);break;case o.OrderType.StopSell:(r.pos===o.PositionType.Long&&e.price<=r.price||r.pos===o.PositionType.Short&&e.price>=r.price)&&f(r,a);break;default:return void console.warn(`Invalid order type: ${r.type}`)}}function f(e,t){const n=t.symbolToStockMap[e.stockSymbol];if(!(n instanceof r.W))return void console.error(`Could not find stock for this order: ${e.stockSymbol}`);const m=t.stockMarket.Orders[n.symbol],f={suppressDialog:!0};let h=!0,d=!1;switch(e.type){case o.OrderType.LimitBuy:case o.OrderType.StopBuy:d=!0,e.pos===o.PositionType.Long?h=(0,a.TR)(n,e.shares,null,f)&&h:e.pos===o.PositionType.Short&&(h=(0,a.BN)(n,e.shares,null,f)&&h);break;case o.OrderType.LimitSell:case o.OrderType.StopSell:e.pos===o.PositionType.Long?h=(0,a.Ne)(n,e.shares,null,f)&&h:e.pos===o.PositionType.Short&&(h=(0,a.no)(n,e.shares,null,f)&&h);break;default:return void console.warn(`Invalid order type: ${e.type}`)}const p=e.pos===o.PositionType.Long?"Long":"Short";if(h){for(let t=0;t{"use strict";n.d(t,{Bh:()=>i,Bu:()=>o,gz:()=>s});var a=n(22213),r=n(35102);function o(e,t){const n=e.organizationName;let o=null;if("string"==typeof n&&""!==n&&(o=r.xO[n]),!(o instanceof a.W))return;const i=t/e.moneyMax;Math.random(){"use strict";n.d(t,{W:()=>s});var a=n(94515),r=n(92666);const o={b:!0,initPrice:1e4,marketCap:1e12,mv:1,name:"",otlkMag:0,spreadPerc:0,shareTxForMovement:1e6,symbol:""};function i(e){let t;switch(typeof e){case"number":return e;case"object":{const n=e;t=(0,r.X)(n.min,n.max);break}default:throw Error(`Do not know how to convert the type '${typeof e}' to a number`)}return"object"==typeof e&&"number"==typeof e.divisor?t/e.divisor:t}class s{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;this.name=e.name,this.symbol=e.symbol,this.price=i(e.initPrice),this.lastPrice=this.price,this.playerShares=0,this.playerAvgPx=0,this.playerShortShares=0,this.playerAvgShortPx=0,this.mv=i(e.mv),this.b=e.b,this.otlkMag=e.otlkMag,this.otlkMagForecast=this.getAbsoluteForecast(),this.cap=(0,r.X)(1e3*this.price,25e3*this.price),this.spreadPerc=i(e.spreadPerc),this.shareTxForMovement=i(e.shareTxForMovement),this.shareTxUntilMovement=this.shareTxForMovement;const t=e.marketCap/this.price;this.totalShares=1e5*Math.round(t/1e5),this.maxShares=1e5*Math.round(.2*this.totalShares/1e5)}changeForecastForecast(e){this.otlkMagForecast=e,this.otlkMagForecast>100?this.otlkMagForecast=100:this.otlkMagForecast<0&&(this.otlkMagForecast=0)}changePrice(e){this.lastPrice=this.price,this.price=e}cycleForecast(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.1;const t=this.getForecastIncreaseChance();Math.random()0&&void 0!==arguments[0]?arguments[0]:.1;Math.random()<.5?this.changeForecastForecast(this.otlkMagForecast+e):this.changeForecastForecast(this.otlkMagForecast-e)}flipForecastForecast(){this.otlkMagForecast=100-this.otlkMagForecast}getAbsoluteForecast(){return this.b?50+this.otlkMag:50-this.otlkMag}getAskPrice(){return this.price*(1+this.spreadPerc/100)}getBidPrice(){return this.price*(1-this.spreadPerc/100)}getForecastIncreaseChance(){const e=this.otlkMagForecast-this.getAbsoluteForecast();return(50+Math.min(Math.max(e,-45),45))/100}influenceForecast(e){this.otlkMag>5&&(this.otlkMag=Math.max(5,this.otlkMag-e))}influenceForecastForecast(e){this.otlkMagForecast>50?(this.otlkMagForecast-=e,this.otlkMagForecast=Math.max(50,this.otlkMagForecast)):this.otlkMagForecast<50&&(this.otlkMagForecast+=e,this.otlkMagForecast=Math.min(50,this.otlkMagForecast))}toJSON(){return(0,a.L3)("Stock",this)}static fromJSON(e){return(0,a.Id)(s,e.data)}}a.gY.Stock=s},35102:(e,t,n)=>{"use strict";n.d(t,{J9:()=>b,T_:()=>k,aW:()=>C,nD:()=>w,s1:()=>g,sl:()=>y,tD:()=>p,wW:()=>v,xO:()=>d});var a=n(49170),r=n(83190),o=n(85896),i=n(22213),s=n(47579),l=n(33244),c=n(72938),u=n(22115),m=n(39463),f=n(94515),h=n(23122);let d={lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0};const p={};function g(e,t,n,r,s,l){if(!(e instanceof i.W))return l?h.BM.log(l,(()=>`Invalid stock: '${e}'`)):(0,m.X)("ERROR: Invalid stock passed to placeOrder() function"),!1;if("number"!=typeof t||"number"!=typeof n)return l?h.BM.log(l,(()=>`Invalid arguments: shares='${t}' price='${n}'`)):(0,m.X)("ERROR: Invalid numeric value provided for either 'shares' or 'price' argument"),!1;const c=new a.K(e.symbol,t,n,r,s);if(null==d.Orders){const e={};for(const t of Object.keys(d)){const n=d[t];n instanceof i.W&&(e[n.symbol]=[])}d.Orders=e}d.Orders[e.symbol].push(c);const u={stockMarket:d,symbolToStockMap:p};return(0,o.A)(e,c.type,c.pos,u),!0}function y(e,t){if(null==d.Orders)return!1;if(e.order&&e.order instanceof a.K){const t=e.order,n=d.Orders[t.stockSymbol];for(let e=0;e"Successfully cancelled order: "+a)),!0}return t&&h.BM.log(t,(()=>"Failed to cancel order: "+a)),!1}return!1}function b(e){d=""===e?{lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0}:JSON.parse(e,f.Ro)}function v(){d={lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0}}function k(){for(const e of Object.getOwnPropertyNames(d))delete d[e];for(const e of s.s){const t=e.name;d[t]=new i.W(e)}const e={};for(const t of Object.keys(d)){const n=d[t];n instanceof i.W&&(e[n.symbol]=[])}d.Orders=e,d.storedCycles=0,d.lastUpdate=0,d.ticksUntilCycle=r.M.TicksPerCycle,w()}function w(){for(const[e,t]of Object.entries(l.StockSymbol)){const n=d[e];null!=n?p[t]=n:console.error(`Could not find Stock for ${e}`)}}function E(){for(const e of Object.keys(d)){const t=d[e];t instanceof i.W&&(Math.random()<.45&&(t.b=!t.b,t.flipForecastForecast()),d.ticksUntilCycle=r.M.TicksPerCycle)}}const S=r.M.msPerStockUpdate/c.t.MilliPerCycle;function C(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;if((null==d.storedCycles||isNaN(d.storedCycles))&&(d.storedCycles=0),d.storedCycles+=e,d.storedCycles=t.cap&&(r=.1,t.b=!1),isNaN(r)&&(r=.5);const s=Math.random(),c={stockMarket:d,symbolToStockMap:p};s{"use strict";n.d(t,{FL:()=>s,ND:()=>i,Zh:()=>l,yG:()=>o});var a=n(97740),r=n(83190);function o(){return r.M.MarketData4SCost*a.dQ.FourSigmaMarketDataCost}function i(){return r.M.MarketDataTixApi4SCost*a.dQ.FourSigmaMarketDataApiCost}function s(){return r.M.WSEAccountCost}function l(){return r.M.TIXAPICost}},38456:(e,t,n)=>{"use strict";n.d(t,{Cb:()=>s,L0:()=>c,Sq:()=>u,WZ:()=>l});var a=n(22213),r=n(33244),o=n(83190);const i=.006;function s(e,t,n){return isNaN(t)||t<=0||!(e instanceof a.W)?null:(t=Math.min(t,e.maxShares),n===r.PositionType.Long?t*e.getAskPrice()+o.M.StockMarketCommission:t*e.getBidPrice()+o.M.StockMarketCommission)}function l(e,t,n){return isNaN(t)||t<=0||!(e instanceof a.W)?null:(t=Math.min(t,e.maxShares),n===r.PositionType.Long?t*e.getBidPrice()-o.M.StockMarketCommission:t*e.playerAvgShortPx+((e.playerAvgShortPx-e.getAskPrice())*t-o.M.StockMarketCommission))}function c(e,t){if(isNaN(t)||t<=0||!(e instanceof a.W))return;t=Math.min(t,e.maxShares);const n=e.shareTxUntilMovement;if(t<=n)return e.shareTxUntilMovement-=t,void(e.shareTxUntilMovement<=0&&(e.shareTxUntilMovement=e.shareTxForMovement,e.influenceForecast(i),e.influenceForecastForecast(i*(e.mv/100))));const r=t-n;let o=1+Math.ceil(r/e.shareTxForMovement);e.shareTxUntilMovement=e.shareTxForMovement-(t-e.shareTxUntilMovement)%e.shareTxForMovement,(e.shareTxUntilMovement===e.shareTxForMovement||e.shareTxUntilMovement<=0)&&(++o,e.shareTxUntilMovement=e.shareTxForMovement);const s=i*(o-1),l=s*(e.mv/100);e.influenceForecast(s),e.influenceForecastForecast(l)}function u(e,t,n){if(!(e instanceof a.W))return 0;const i=t===r.PositionType.Long,s=n-o.M.StockMarketCommission,l=i?e.getAskPrice():e.getBidPrice();return Math.floor(s/l)}},83190:(e,t,n)=>{"use strict";n.d(t,{M:()=>a});const a={msPerStockUpdate:6e3,msPerStockUpdateMin:4e3,TicksPerCycle:75,WSEAccountCost:2e8,TIXAPICost:5e9,MarketData4SCost:1e9,MarketDataTixApi4SCost:25e9,StockMarketCommission:1e5}},47579:(e,t,n)=>{"use strict";n.d(t,{s:()=>r});var a=n(33244);const r=[{b:!0,initPrice:{max:28e3,min:17e3},marketCap:24e11,mv:{divisor:100,max:50,min:40},name:a.LocationName.AevumECorp,otlkMag:19,spreadPerc:{divisor:10,max:5,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.AevumECorp]},{b:!0,initPrice:{max:34e3,min:24e3},marketCap:24e11,mv:{divisor:100,max:50,min:40},name:a.LocationName.Sector12MegaCorp,otlkMag:19,spreadPerc:{divisor:10,max:5,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.Sector12MegaCorp]},{b:!0,initPrice:{max:25e3,min:12e3},marketCap:16e11,mv:{divisor:100,max:80,min:70},name:a.LocationName.Sector12BladeIndustries,otlkMag:13,spreadPerc:{divisor:10,max:6,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.Sector12BladeIndustries]},{b:!0,initPrice:{max:25e3,min:1e4},marketCap:15e11,mv:{divisor:100,max:75,min:65},name:a.LocationName.AevumClarkeIncorporated,otlkMag:12,spreadPerc:{divisor:10,max:5,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.AevumClarkeIncorporated]},{b:!0,initPrice:{max:43e3,min:32e3},marketCap:18e11,mv:{divisor:100,max:70,min:60},name:a.LocationName.VolhavenOmniTekIncorporated,otlkMag:12,spreadPerc:{divisor:10,max:6,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.VolhavenOmniTekIncorporated]},{b:!0,initPrice:{max:8e4,min:5e4},marketCap:2e12,mv:{divisor:100,max:110,min:100},name:a.LocationName.Sector12FourSigma,otlkMag:17,spreadPerc:{divisor:10,max:10,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.Sector12FourSigma]},{b:!0,initPrice:{max:28e3,min:16e3},marketCap:19e11,mv:{divisor:100,max:85,min:75},name:a.LocationName.ChongqingKuaiGongInternational,otlkMag:10,spreadPerc:{divisor:10,max:7,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.ChongqingKuaiGongInternational]},{b:!0,initPrice:{max:36e3,min:29e3},marketCap:2e12,mv:{divisor:100,max:130,min:120},name:a.LocationName.AevumFulcrumTechnologies,otlkMag:16,spreadPerc:{divisor:10,max:10,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.AevumFulcrumTechnologies]},{b:!0,initPrice:{max:25e3,min:2e4},marketCap:12e11,mv:{divisor:100,max:90,min:80},name:a.LocationName.IshimaStormTechnologies,otlkMag:7,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:a.StockSymbol[a.LocationName.IshimaStormTechnologies]},{b:!0,initPrice:{max:19e3,min:6e3},marketCap:9e11,mv:{divisor:100,max:70,min:60},name:a.LocationName.NewTokyoDefComm,otlkMag:10,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:a.StockSymbol[a.LocationName.NewTokyoDefComm]},{b:!0,initPrice:{max:18e3,min:1e4},marketCap:825e9,mv:{divisor:100,max:65,min:55},name:a.LocationName.VolhavenHeliosLabs,otlkMag:9,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:a.StockSymbol[a.LocationName.VolhavenHeliosLabs]},{b:!0,initPrice:{max:14e3,min:8e3},marketCap:1e12,mv:{divisor:100,max:80,min:70},name:a.LocationName.NewTokyoVitaLife,otlkMag:7,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:a.StockSymbol[a.LocationName.NewTokyoVitaLife]},{b:!0,initPrice:{max:24e3,min:12e3},marketCap:8e11,mv:{divisor:100,max:70,min:60},name:a.LocationName.Sector12IcarusMicrosystems,otlkMag:7.5,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:108e3,min:36e3},symbol:a.StockSymbol[a.LocationName.Sector12IcarusMicrosystems]},{b:!0,initPrice:{max:29e3,min:16e3},marketCap:9e11,mv:{divisor:100,max:60,min:50},name:a.LocationName.Sector12UniversalEnergy,otlkMag:10,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:a.StockSymbol[a.LocationName.Sector12UniversalEnergy]},{b:!0,initPrice:{max:17e3,min:8e3},marketCap:64e10,mv:{divisor:100,max:65,min:55},name:a.LocationName.AevumAeroCorp,otlkMag:6,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:126e3,min:42e3},symbol:a.StockSymbol[a.LocationName.AevumAeroCorp]},{b:!0,initPrice:{max:15e3,min:6e3},marketCap:6e11,mv:{divisor:100,max:75,min:65},name:a.LocationName.VolhavenOmniaCybersystems,otlkMag:4.5,spreadPerc:{divisor:10,max:11,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:a.StockSymbol[a.LocationName.VolhavenOmniaCybersystems]},{b:!0,initPrice:{max:28e3,min:14e3},marketCap:705e9,mv:{divisor:100,max:80,min:70},name:a.LocationName.ChongqingSolarisSpaceSystems,otlkMag:8.5,spreadPerc:{divisor:10,max:12,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:a.StockSymbol[a.LocationName.ChongqingSolarisSpaceSystems]},{b:!0,initPrice:{max:3e4,min:12e3},marketCap:695e9,mv:{divisor:100,max:65,min:55},name:a.LocationName.NewTokyoGlobalPharmaceuticals,otlkMag:10.5,spreadPerc:{divisor:10,max:10,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:a.StockSymbol[a.LocationName.NewTokyoGlobalPharmaceuticals]},{b:!0,initPrice:{max:27e3,min:15e3},marketCap:6e11,mv:{divisor:100,max:80,min:70},name:a.LocationName.IshimaNovaMedical,otlkMag:5,spreadPerc:{divisor:10,max:11,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:a.StockSymbol[a.LocationName.IshimaNovaMedical]},{b:!0,initPrice:{max:8500,min:4e3},marketCap:45e10,mv:{divisor:100,max:260,min:240},name:a.LocationName.AevumWatchdogSecurity,otlkMag:1.5,spreadPerc:{divisor:10,max:12,min:5},shareTxForMovement:{max:54e3,min:12e3},symbol:a.StockSymbol[a.LocationName.AevumWatchdogSecurity]},{b:!0,initPrice:{max:8e3,min:4500},marketCap:3e11,mv:{divisor:100,max:135,min:115},name:a.LocationName.VolhavenLexoCorp,otlkMag:6,spreadPerc:{divisor:10,max:12,min:5},shareTxForMovement:{max:108e3,min:36e3},symbol:a.StockSymbol[a.LocationName.VolhavenLexoCorp]},{b:!0,initPrice:{max:7e3,min:2e3},marketCap:18e10,mv:{divisor:100,max:70,min:50},name:a.LocationName.AevumRhoConstruction,otlkMag:1,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:126e3,min:6e4},symbol:a.StockSymbol[a.LocationName.AevumRhoConstruction]},{b:!0,initPrice:{max:8500,min:4e3},marketCap:24e10,mv:{divisor:100,max:205,min:175},name:a.LocationName.Sector12AlphaEnterprises,otlkMag:10,spreadPerc:{divisor:10,max:16,min:5},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.Sector12AlphaEnterprises]},{b:!0,initPrice:{max:8e3,min:3e3},marketCap:2e11,mv:{divisor:100,max:170,min:150},name:a.LocationName.VolhavenSysCoreSecurities,otlkMag:3,spreadPerc:{divisor:10,max:12,min:5},shareTxForMovement:{max:9e4,min:15e3},symbol:a.StockSymbol[a.LocationName.VolhavenSysCoreSecurities]},{b:!0,initPrice:{max:6e3,min:1e3},marketCap:185e9,mv:{divisor:100,max:100,min:80},name:a.LocationName.VolhavenCompuTek,otlkMag:4,spreadPerc:{divisor:10,max:12,min:4},shareTxForMovement:{max:126e3,min:6e4},symbol:a.StockSymbol[a.LocationName.VolhavenCompuTek]},{b:!0,initPrice:{max:5e3,min:1e3},marketCap:58e9,mv:{divisor:100,max:400,min:200},name:a.LocationName.AevumNetLinkTechnologies,otlkMag:1,spreadPerc:{divisor:10,max:20,min:5},shareTxForMovement:{max:54e3,min:18e3},symbol:a.StockSymbol[a.LocationName.AevumNetLinkTechnologies]},{b:!0,initPrice:{max:8e3,min:1e3},marketCap:6e10,mv:{divisor:100,max:110,min:90},name:a.LocationName.IshimaOmegaSoftware,otlkMag:.5,spreadPerc:{divisor:10,max:13,min:4},shareTxForMovement:{max:9e4,min:3e4},symbol:a.StockSymbol[a.LocationName.IshimaOmegaSoftware]},{b:!1,initPrice:{max:4500,min:500},marketCap:45e9,mv:{divisor:100,max:80,min:70},name:a.LocationName.Sector12FoodNStuff,otlkMag:1,spreadPerc:{divisor:10,max:10,min:6},shareTxForMovement:{max:18e4,min:6e4},symbol:a.StockSymbol[a.LocationName.Sector12FoodNStuff]},{b:!0,initPrice:{max:3500,min:1500},marketCap:3e10,mv:{divisor:100,max:275,min:100},name:"Sigma Cosmetics",otlkMag:0,spreadPerc:{divisor:10,max:14,min:6},shareTxForMovement:{max:7e4,min:2e4},symbol:a.StockSymbol["Sigma Cosmetics"]},{b:!0,initPrice:{max:1500,min:250},marketCap:42e9,mv:{divisor:100,max:350,min:200},name:a.LocationName.Sector12JoesGuns,otlkMag:1,spreadPerc:{divisor:10,max:14,min:6},shareTxForMovement:{max:52e3,min:15e3},symbol:a.StockSymbol[a.LocationName.Sector12JoesGuns]},{b:!0,initPrice:{max:1500,min:250},marketCap:1e11,mv:{divisor:100,max:175,min:120},name:"Catalyst Ventures",otlkMag:13.5,spreadPerc:{divisor:10,max:14,min:5},shareTxForMovement:{max:72e3,min:24e3},symbol:a.StockSymbol["Catalyst Ventures"]},{b:!0,initPrice:{max:3e4,min:15e3},marketCap:36e10,mv:{divisor:100,max:80,min:70},name:"Microdyne Technologies",otlkMag:8,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:216e3,min:9e4},symbol:a.StockSymbol["Microdyne Technologies"]},{b:!0,initPrice:{max:24e3,min:12e3},marketCap:42e10,mv:{divisor:100,max:70,min:50},name:"Titan Laboratories",otlkMag:11,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:216e3,min:9e4},symbol:a.StockSymbol["Titan Laboratories"]}]},32728:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var a=n(21623),r=n(33244);const o={longestName:0,longestSymbol:0};for(const[e,t]of(0,a.m0)(r.StockSymbol))o.longestName=Math.max(e.length,o.longestName),o.longestSymbol=Math.max(t.length,o.longestSymbol)},16396:(e,t,n)=>{"use strict";n.d(t,{X:()=>w});var a=n(67294),r=n(4605),o=n(83190),i=n(49173),s=n(72360),l=n(35102),c=n(81138),u=n(56798),m=n(17575),f=n(92557),h=n(9944),d=n(27036),p=n(6248),g=n(33244);function y(e){if(i.J5.has4SDataTixApi)return a.createElement(c.Z,null,"Market Data TIX API Access ",a.createElement(d.Z,null));{const t=(0,r.ND)();return a.createElement(m.Z,{title:i.J5.hasTixApiAccess?a.createElement(c.Z,null,"Let you access 4S Market Data through Netscript"):a.createElement(c.Z,null,"Requires TIX API Access")},a.createElement("span",null,a.createElement(u.Z,{disabled:!i.J5.hasTixApiAccess||!i.J5.canAfford(t),onClick:function(){i.J5.has4SDataTixApi||i.J5.canAfford((0,r.ND)())&&(i.J5.has4SDataTixApi=!0,i.J5.loseMoney((0,r.ND)(),"stock"),e.rerender())}},"Buy 4S Market Data TIX API Access - ",a.createElement(s.W,{money:t,forPurchase:!0}))))}}function b(e){if(i.J5.hasWseAccount)return a.createElement(c.Z,null,"WSE Account ",a.createElement(d.Z,null));const t=o.M.WSEAccountCost;return a.createElement(a.Fragment,null,a.createElement(c.Z,null,"To begin trading, you must first purchase an account:"),a.createElement(u.Z,{disabled:!i.J5.canAfford(t),onClick:function(){i.J5.hasWseAccount||i.J5.canAfford(o.M.WSEAccountCost)&&(i.J5.hasWseAccount=!0,(0,l.T_)(),i.J5.loseMoney(o.M.WSEAccountCost,"stock"),e.rerender())}},"Buy WSE Account - ",a.createElement(s.W,{money:t,forPurchase:!0})))}function v(e){if(i.J5.hasTixApiAccess)return a.createElement(c.Z,null,"TIX API Access ",a.createElement(d.Z,null));{const t=o.M.TIXAPICost;return a.createElement(u.Z,{disabled:!i.J5.canAfford(t)||!i.J5.hasWseAccount,onClick:function(){i.J5.hasTixApiAccess||i.J5.canAfford(o.M.TIXAPICost)&&(i.J5.hasTixApiAccess=!0,i.J5.loseMoney(o.M.TIXAPICost,"stock"),e.rerender())}},"Buy Trade Information eXchange (TIX) API Access - ",a.createElement(s.W,{money:t,forPurchase:!0}))}}function k(e){if(i.J5.has4SData)return a.createElement(c.Z,null,"4S Market Data Access ",a.createElement(d.Z,null));{const t=(0,r.yG)();return a.createElement(m.Z,{title:a.createElement(c.Z,null,"Lets you view additional pricing and volatility information about stocks")},a.createElement("span",null,a.createElement(u.Z,{disabled:!i.J5.canAfford(t)||!i.J5.hasWseAccount,onClick:function(){i.J5.has4SData||i.J5.canAfford((0,r.yG)())&&(i.J5.has4SData=!0,i.J5.loseMoney((0,r.yG)(),"stock"),e.rerender())}},"Buy 4S Market Data Access - ",a.createElement(s.W,{money:t,forPurchase:!0}))))}}function w(e){const[t,n]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,a.createElement(c.Z,{variant:"h4"},"Welcome to the World Stock Exchange (WSE)!"),a.createElement(b,e),a.createElement(c.Z,{variant:"h5",color:"primary"},"Trade Information eXchange (TIX) API"),a.createElement(c.Z,null,"TIX, short for Trade Information eXchange, is the communications protocol used by the WSE. Purchasing access to the TIX API lets you write code to create your own algorithmic/automated trading strategies."),a.createElement(v,e),a.createElement(c.Z,{variant:"h5",color:"primary"},g.FactionName.FourSigma," (4S) Market Data Feed"),a.createElement(c.Z,null,g.FactionName.FourSigma,"'s (4S) Market Data Feed provides information about stocks that will help your trading strategies.",a.createElement(f.Z,{onClick:()=>n(!0)},a.createElement(h.Z,null))),a.createElement(y,e),a.createElement(k,e),a.createElement(c.Z,null,"Commission Fees: Every transaction you make has a"," ",a.createElement(s.W,{money:o.M.StockMarketCommission,forPurchase:!0})," commission fee."),a.createElement("br",null),a.createElement(c.Z,null,"WARNING: When you reset after installing Augmentations, the Stock Market is reset. You will retain your WSE Account, access to the TIX API, and 4S Market Data access. However, all of your stock positions are lost, so make sure to sell your stocks before installing Augmentations!"),a.createElement(p.t,{open:t,onClose:()=>n(!1)},a.createElement(c.Z,null,"Access to the 4S Market Data feed will display two additional pieces of information about each stock: Price Forecast & Volatility",a.createElement("br",null),a.createElement("br",null),"Price Forecast indicates the probability the stock has of increasing or decreasing. A '+' forecast means the stock has a higher chance of increasing than decreasing, and a '-' means the opposite. The number of '+/-' symbols is used to illustrate the magnitude of these probabilities. For example, '+++' means that the stock has a significantly higher chance of increasing than decreasing, while '+' means that the stock only has a slightly higher chance of increasing than decreasing.",a.createElement("br",null),a.createElement("br",null),"Volatility represents the maximum percentage by which a stock's price can change every tick (a tick occurs every few seconds while the game is running).",a.createElement("br",null),a.createElement("br",null),"A stock's price forecast can change over time. This is also affected by volatility. The more volatile a stock is, the more its price forecast will change.")))}},4403:(e,t,n)=>{"use strict";n.d(t,{E:()=>l});var a=n(67294),r=n(48672),o=n(81138),i=n(66351),s=n(56798);function l(e){const[t,n]=(0,a.useState)(null);return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(o.Z,null,e.text),a.createElement(i.Z,{autoFocus:!0,type:"number",onChange:function(e){""===e.target.value?n(null):n(parseFloat(e.target.value))},placeholder:"price",InputProps:{endAdornment:a.createElement(s.Z,{onClick:function(){null!==t&&(isNaN(t)||(e.place(t),e.onClose()))}},e.placeText)}}))}},51801:(e,t,n)=>{"use strict";n.d(t,{j:()=>l});var a=n(67294),r=n(16396),o=n(13915),i=n(49173),s=n(88775);function l(e){const t=(0,s.S)(200);return a.createElement(a.Fragment,null,a.createElement(r.X,{rerender:t}),i.J5.hasWseAccount&&a.createElement(o.K,{stockMarket:e.stockMarket}))}},27900:(e,t,n)=>{"use strict";n.d(t,{x:()=>A});var a,r=n(67294),o=n(82352),i=n(9313),s=n(77942),l=n(36265),c=n(4403),u=n(38456),m=n(33244),f=n(35102),h=n(82427),d=n(49173),p=n(22115),g=n(72360),y=n(39463),b=n(30120),v=n(66351),k=n(98649),w=n(26023),E=n(95309),S=n(61702),C=n(28881),x=n(51627),N=n(23508),M=n(60181);function A(e){const[t,n]=(0,r.useState)(a.Market),[A,T]=(0,r.useState)(m.PositionType.Long),[L,R]=(0,r.useState)(""),[F,I]=(0,r.useState)(!1),[_,P]=(0,r.useState)(!1),[B,O]=(0,r.useState)({text:"",placeText:"",place:()=>!1});function D(){return Math.round(parseFloat(L))}function Z(){return 8===d.J5.bitNodeN||d.J5.sourceFileLvl(8)>=3}return r.createElement(b.Z,{component:C.Z},r.createElement(E.Z,{onClick:()=>P((e=>!e))},r.createElement(S.Z,{primary:r.createElement(o.t,{stock:e.stock})}),_?r.createElement(M.Z,{color:"primary"}):r.createElement(N.Z,{color:"primary"})),r.createElement(x.Z,{in:_,unmountOnExit:!0},r.createElement(b.Z,{sx:{mx:4}},r.createElement(b.Z,{display:"flex",alignItems:"center"},r.createElement(v.Z,{onChange:function(e){R(e.target.value)},placeholder:"Quantity (Shares)",value:L}),r.createElement(w.Z,{onChange:function(e){e.target.value===m.PositionType.Short?T(m.PositionType.Short):T(m.PositionType.Long)},value:A},r.createElement(k.Z,{value:m.PositionType.Long},"Long"),(8===d.J5.bitNodeN||d.J5.sourceFileLvl(8)>=2)&&r.createElement(k.Z,{value:m.PositionType.Short},"Short")),r.createElement(w.Z,{onChange:function(e){switch(e.target.value){case a.Limit:n(a.Limit);break;case a.Stop:n(a.Stop);break;case a.Market:default:n(a.Market)}},value:t},r.createElement(k.Z,{value:a.Market},a.Market),Z()&&r.createElement(k.Z,{value:a.Limit},a.Limit),Z()&&r.createElement(k.Z,{value:a.Stop},a.Stop)),r.createElement(l.m,{onClick:function(){const n=D();if(isNaN(n))(0,y.X)(`Invalid input for quantity (number of shares): ${L}`);else switch(t){case a.Market:A===m.PositionType.Short?(0,h.BN)(e.stock,n):(0,h.TR)(e.stock,n),e.rerenderAllTickers();break;case a.Limit:I(!0),O({text:"Enter the price for your Limit Order",placeText:"Place Buy Limit Order",place:t=>(0,f.s1)(e.stock,n,t,m.OrderType.LimitBuy,A)});break;case a.Stop:I(!0),O({text:"Enter the price for your Stop Order",placeText:"Place Buy Stop Order",place:t=>(0,f.s1)(e.stock,n,t,m.OrderType.StopBuy,A)})}},text:"Buy",tooltip:function(){const t=e.stock,n=D();if(isNaN(n))return null;const a=(0,u.Cb)(t,n,A);return null==a?null:r.createElement(r.Fragment,null,"Purchasing ",(0,p.O3)(n)," shares (",A===m.PositionType.Long?"Long":"Short",") will cost ",r.createElement(g.W,{money:a}),".")}()}),r.createElement(l.m,{onClick:function(){const n=D();if(isNaN(n))(0,y.X)(`Invalid input for quantity (number of shares): ${L}`);else switch(t){case a.Market:A===m.PositionType.Short?(0,h.no)(e.stock,n):(0,h.Ne)(e.stock,n),e.rerenderAllTickers();break;case a.Limit:I(!0),O({text:"Enter the price for your Limit Order",placeText:"Place Sell Limit Order",place:t=>(0,f.s1)(e.stock,n,t,m.OrderType.LimitSell,A)});break;case a.Stop:I(!0),O({text:"Enter the price for your Stop Order",placeText:"Place Sell Stop Order",place:t=>(0,f.s1)(e.stock,n,t,m.OrderType.StopSell,A)})}},text:"Sell",tooltip:function(){const t=e.stock,n=D();if(isNaN(n))return null;if(A===m.PositionType.Long){if(n>t.playerShares)return r.createElement(r.Fragment,null,"You do not have this many shares in the Long position")}else if(n>t.playerShortShares)return r.createElement(r.Fragment,null,"You do not have this many shares in the Short position");const a=(0,u.WZ)(t,n,A);return null==a?null:r.createElement(r.Fragment,null,"Selling ",(0,p.O3)(n)," shares (",A===m.PositionType.Long?"Long":"Short",") will result in a gain of ",r.createElement(g.W,{money:a}),".")}()}),r.createElement(l.m,{onClick:function(){const n=d.J5.money,r=e.stock;let o=(0,u.Sq)(r,A,n);o=Math.min(o,Math.round(r.maxShares-r.playerShares-r.playerShortShares)),t===a.Market?(A===m.PositionType.Short?(0,h.BN)(r,o):(0,h.TR)(r,o),e.rerenderAllTickers()):(0,y.X)("ERROR: 'Buy Max' only works for Market Orders")},text:"Buy MAX"}),r.createElement(l.m,{onClick:function(){const n=e.stock;t===a.Market?(A===m.PositionType.Short?(0,h.no)(n,n.playerShortShares):(0,h.Ne)(n,n.playerShares),e.rerenderAllTickers()):(0,y.X)("ERROR: 'Sell All' only works for Market Orders")},text:"Sell ALL"})),r.createElement(s.u,{stock:e.stock}),r.createElement(i.O,{orders:e.orders,stock:e.stock}),r.createElement(c.E,{text:B.text,placeText:B.placeText,place:B.place,open:F,onClose:()=>I(!1)}))))}!function(e){e.Market="Market Order",e.Limit="Limit Order",e.Stop="Stop Order"}(a||(a={}))},82352:(e,t,n)=>{"use strict";n.d(t,{t:()=>u});var a=n(67294),r=n(32728),o=n(49173),i=n(51087),s=n(22115),l=n(81138);const c=["cs","lv","pl","ru"];function u(e){const t=e.stock,n=(0,s.lb)(t.price),u=c.includes(i.Z.Locale)?15:12,m=" ".repeat(1+r.c.longestName-t.name.length+(r.c.longestSymbol-t.symbol.length)),f=" ".repeat(u-n.length);let h=`${t.name}${m}${t.symbol} -${f}${n}`;if(o.J5.has4SData){h+=` - Volatility: ${(0,s.T3)(t.mv/100)} - Price Forecast: `;let e=t.b;t.otlkMag<0&&(e=!e),h+=(e?"+":"-").repeat(Math.floor(Math.abs(t.otlkMag)/10)+1)}let d="primary";return t.lastPrice===t.price?d="secondary":t.lastPrice>t.price&&(d="error"),a.createElement(l.Z,{style:{whiteSpace:"pre"},color:d},h)}},73267:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m});var a=n(67294),r=n(33244),o=n(22115),i=n(72360),s=n(81138),l=n(56798),c=n(30120),u=n(35102);function m(e){const t=e.order,n=t.pos===r.PositionType.Long?"Long Position":"Short Position",m=a.createElement(a.Fragment,null,t.type," - ",n," - ",(0,o.O3)(t.shares)," @ ",a.createElement(i.W,{money:t.price}));return a.createElement(c.Z,{display:"flex",alignItems:"center"},a.createElement(s.Z,null,m),a.createElement(l.Z,{onClick:function(){(0,u.sl)({order:e.order})}},"Cancel Order"))}},9313:(e,t,n)=>{"use strict";n.d(t,{O:()=>o});var a=n(67294),r=n(73267);function o(e){const t=[];for(let n=0;n{"use strict";n.d(t,{u:()=>f});var a=n(67294),r=n(49173),o=n(22115),i=n(72360),s=n(81138),l=n(17575),c=n(30120);function u(e){const t=e.stock,n=t.playerShares*t.playerAvgPx,r=(t.getBidPrice()-t.playerAvgPx)*t.playerShares;let u=r/n;return isNaN(u)&&(u=0),a.createElement(a.Fragment,null,a.createElement(c.Z,{display:"flex"},a.createElement(l.Z,{title:a.createElement(s.Z,null,"Shares in the long position will increase in value if the price of the corresponding stock increases")},a.createElement(s.Z,{variant:"h5",color:"primary"},"Long Position:"))),a.createElement(s.Z,null,"Shares: ",(0,o.O3)(t.playerShares)),a.createElement(s.Z,null,"Average Price: ",a.createElement(i.W,{money:t.playerAvgPx})," (Total Cost: ",a.createElement(i.W,{money:n}),")"),a.createElement(s.Z,null,"Profit: ",a.createElement(i.W,{money:r})," (",(0,o.T3)(u),")"))}function m(e){const t=e.stock,n=t.playerShortShares*t.playerAvgShortPx,u=(t.playerAvgShortPx-t.getAskPrice())*t.playerShortShares;let m=u/n;return isNaN(m)&&(m=0),8===r.J5.bitNodeN||r.J5.sourceFileLvl(8)>=2?a.createElement(a.Fragment,null,a.createElement(c.Z,{display:"flex"},a.createElement(l.Z,{title:a.createElement(s.Z,null,"Shares in the short position will increase in value if the price of the corresponding stock decreases")},a.createElement(s.Z,{variant:"h5",color:"primary"},"Short Position:"))),a.createElement(s.Z,null,"Shares: ",(0,o.O3)(t.playerShortShares)),a.createElement(s.Z,null,"Average Price: ",a.createElement(i.W,{money:t.playerAvgShortPx})," (Total Cost: ",a.createElement(i.W,{money:n}),")"),a.createElement(s.Z,null,"Profit: ",a.createElement(i.W,{money:u})," (",(0,o.T3)(m),")")):a.createElement(a.Fragment,null)}function f(e){const t=e.stock;return a.createElement(a.Fragment,null,a.createElement(s.Z,null,"Max Shares: ",(0,o.O3)(t.maxShares)),a.createElement(s.Z,null,"Ask Price: ",a.createElement(i.W,{money:t.getAskPrice()})),a.createElement("br",null),a.createElement(s.Z,null,"Bid Price: ",a.createElement(i.W,{money:t.getBidPrice()})),a.createElement(u,e),a.createElement(m,e))}},36265:(e,t,n)=>{"use strict";n.d(t,{m:()=>s});var a=n(67294),r=n(81138),o=n(17575),i=n(56798);function s(e){return a.createElement(o.Z,{title:null!=e.tooltip?a.createElement(r.Z,null,e.tooltip):""},a.createElement(i.Z,{onClick:e.onClick},e.text))}},13915:(e,t,n)=>{"use strict";n.d(t,{K:()=>l});var a=n(67294),r=n(27900),o=n(56006),i=n(22213),s=n(88775);function l(e){const t=(0,s.S)(),[n,l]=(0,a.useState)(o.v.AllStocks),[c,u]=(0,a.useState)([]),m=[];for(const s of Object.keys(e.stockMarket)){const l=e.stockMarket[s];if(l instanceof i.W){if(c.length>0&&!c.includes(l.symbol))continue;let i=e.stockMarket.Orders[l.symbol];if(null==i&&(i=[]),n===o.v.Portfolio&&0===l.playerShares&&0===l.playerShortShares&&0===i.length)continue;m.push(a.createElement(r.x,{key:l.symbol,orders:i,rerenderAllTickers:t,stock:l}))}}return a.createElement(a.Fragment,null,a.createElement(o.T,{changeDisplayMode:function(){n===o.v.AllStocks?l(o.v.Portfolio):l(o.v.AllStocks)},changeWatchlistFilter:function(e){const t=e.target.value.replace(/\s/g,"");u(""!==t?t.split(","):[])},tickerDisplayMode:n}),m)}},56006:(e,t,n)=>{"use strict";n.d(t,{T:()=>u,v:()=>l});var a=n(67294),r=n(81138),o=n(17575),i=n(56798),s=n(66351);let l;function c(e){let t="",n="";return e.tickerDisplayMode===l.Portfolio?(t="Switch to 'All Stocks' Mode",n="Displays all stocks on the WSE"):(t="Switch to 'Portfolio' Mode",n="Displays only the stocks for which you have shares or orders"),a.createElement(o.Z,{title:a.createElement(r.Z,null,n)},a.createElement(i.Z,{onClick:e.changeDisplayMode},t))}function u(e){return a.createElement(a.Fragment,null,a.createElement(c,e),a.createElement("br",null),a.createElement(s.Z,{sx:{width:"100%"},onChange:e.changeWatchlistFilter,placeholder:"Filter Stocks by symbol (comma-separated list)",type:"text"}))}!function(e){e[e.AllStocks=0]="AllStocks",e[e.Portfolio=1]="Portfolio"}(l||(l={}))},65065:(e,t,n)=>{"use strict";n.d(t,{o:()=>a});const a=new(n(31492).o)},57082:(e,t,n)=>{"use strict";n.d(t,{N:()=>a,s:()=>o});const a=["Type 'help name' to learn more about the command "," ",' alias [-g] [name="value"] Create or display Terminal aliases'," analyze Get information about the current machine "," backdoor Install a backdoor on the current machine "," buy [-l/-a/program] Purchase a program through the Dark Web"," cat [file] Display a .msg, .lit, or .txt file"," cd [dir] Change to a new directory"," check [script] [args...] Print a script's logs to Terminal"," clear Clear all text on the terminal "," cls See 'clear' command "," connect [hostname] Connects to a remote server"," cp [src] [dst] Copy a file"," download [script/text file] Downloads scripts or text files to your computer"," expr [math expression] Evaluate a mathematical expression"," free Check the machine's memory (RAM) usage"," grow Spoof money in a servers bank account, increasing the amount available."," hack Hack the current machine"," help [command] Display this help text, or the help text for a command"," history [-c] Display the terminal history"," home Connect to home computer"," hostname Displays the hostname of the machine"," kill [script/pid] [args...] Stops the specified script on the current server "," killall Stops all running scripts on the current machine"," ls [dir] [--grep pattern] Displays all files on the machine"," lscpu Displays the number of CPU cores on the machine"," mem [script] [-t n] Displays the amount of RAM required to run the script"," mv [src] [dest] Move/rename a text or script file"," nano [file ...] Text editor - Open up and edit one or more scripts or text files"," ps Display all scripts that are currently running"," rm [file] Delete a file from the server"," run [name] [-t n] [--tail] [args...] Execute a program or script"," scan Prints all immediately-available network connections"," scan-analyze [d] [-a] Prints info for all servers up to d nodes away"," scp [file ...] [server] Copies a file to a destination server"," sudov Shows whether you have root access on this computer"," tail [script] [args...] Displays dynamic logs for the specified script"," top Displays all running scripts and their RAM usage"," unalias [alias name] Deletes the specified alias"," vim [file ...] Text editor - Open up and edit one or more scripts or text files in vim mode"," weaken Reduce the security of the current machine"," wget [url] [target file] Retrieves code/text from a web server"," "],r=e=>[`Usage: ${e} [file ...] | [glob]`," ","Opens up the specified file(s) in the Script Editor. Only scripts (.js, or .script) or text files (.txt) ","can be edited using the Script Editor. If a file does not exist a new one will be created"," ",`If provided a glob as the only argument, ${e} can spider directories and open all matching `,`files at once. ${e} cannot create files using globs, so your scripts must already exist.`," ","Examples:"," ",` ${e} test.js`,` ${e} test.js test2.js`," ",` ${e} test.*`,` ${e} /my-dir/*.js`," "],o={alias:['Usage: alias [-g] [name="value"] '," ","Create or display aliases. An alias enables a replacement of a word with another string. ","It can be used to abbreviate a commonly used command, or commonly used parts of a command. The NAME ","of an alias defines the word that will be replaced, while the VALUE defines what it will be replaced by. For example, ","you could create the alias 'nuke' for the Terminal command 'run NUKE.exe' using the following: "," ",' alias nuke="run NUKE.exe"'," ","Then, to run the NUKE.exe program you would just have to enter 'nuke' in Terminal rather than the full command. ","It is important to note that 'default' aliases will only be substituted for the first word of a Terminal command. For ","example, if the following alias was set: "," ",' alias worm="HTTPWorm.exe"'," ","and then you tried to run the following terminal command: "," "," run worm"," ","This would fail because the worm alias is not the first word of a Terminal command. To allow an alias to be substituted ","anywhere in a Terminal command, rather than just the first word, you must set it to be a global alias using the -g flag: "," ",' alias -g worm="HTTPWorm.exe"'," ","Now, the 'worm' alias will be substituted anytime it shows up as an individual word in a Terminal command. "," ","Entering just the command 'alias' without any arguments prints the list of all defined aliases in the reusable form ","'alias NAME=VALUE' on the Terminal. "," ","The 'unalias' command can be used to remove aliases."," "],analyze:["Usage: analyze"," ","Prints details and statistics about the current server. The information that is printed includes basic ","server details such as the hostname, whether the player has root access, what ports are opened/closed, and also ","hacking-related information such as an estimated chance to successfully hack, an estimate of how much money is ","available on the server, etc."," "],backdoor:["Usage: backdoor"," ","Install a backdoor on the current machine, grants a secret bonus depending on the machine."," ","Requires root access to run."," "],buy:["Usage: buy [-l / -a / program]"," ","Purchase a program through the Dark Web. Requires a TOR router to use."," ","If this command is ran with the '-l' flag, it will display a list of all programs that can be bought through the ","dark web to the Terminal, as well as their costs."," ","If this command is ran with the '-a' flag, it will attempt to purchase all unowned programs."," ","Otherwise, the name of the program must be passed in as a parameter. This name is NOT case-sensitive."," "],cat:["Usage: cat [file]"," ","Display message (.msg), literature (.lit), or text (.txt) files. Examples:"," "," cat j1.msg"," "," cat foo.lit"," "," cat servers.txt"," "],cd:["Usage: cd [dir]"," ","Change to the specified directory. Note that this works even for directories that don't exist. If you ","change to a directory that does not exist, it will not be 'created'. Examples:"," "," cd scripts/hacking"," "," cd /logs"," "," cd ../"," "],check:["Usage: check [script name] [args...]"," ","Print the logs of the script specified by the script name and arguments to the Terminal. Each argument must be separated by ","a space. Remember that a running script is uniquely ","identified both by its name and the arguments that are used to start it. So, if a script was ran with the following arguments: "," "," run foo.script 1 2 foodnstuff"," ","Then to run the 'check' command on this script you would have to pass the same arguments in: "," "," check foo.script 1 2 foodnstuff"," "],clear:["Usage: clear"," ","Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up ","and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'cls' command"," "],cls:["Usage: cls"," ","Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up ","and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'clear' command"," "],connect:["Usage: connect [hostname]"," ","Connect to a remote server. The hostname of the remote server must be given as the argument ","to this command. Note that only servers that are immediately adjacent to the current server in the network and the ones that have","a backdoor installed can be connected to. To see which servers can be connected to, use the 'scan' command."," "],cp:["Usage: cp [src] [dst]"," ","Copy a file on this server. To copy a file to another server use scp."," "],download:["Usage: download [script/text file]"," ","Downloads a script or text file to your computer (like your real life computer)."," ","You can also download all of your scripts/text files as a zip file using the following Terminal commands:"," ","Download all scripts and text files: download *"," ","Download all scripts: download *.script"," ","Download all text files: download *.txt"," "],expr:["Usage: expr [mathematical expression]"," ","Evaluate a simple mathematical expression. Supports native JavaScript operators:"," ","+, -, /, *, **, %"," ","Example:"," "," expr 25 * 2 ** 10"," ","Note that letters (non-digits) are not allowed and will be removed from the input."," "],free:["Usage: free"," ","Displays the memory usage on the current machine. Print the amount of RAM that is available on the current server as well as ","how much of it is being used."," "],grow:["Usage: grow"," ","Spoof transactions in the current server. Increasing the money available by hacking. Requires root access.","See the wiki page for hacking mechanics."," "],hack:["Usage: hack"," ","Attempt to hack the current server. Requires root access in order to be run. See the wiki page for hacking mechanics"," "],help:["Usage: help [command]"," ","Display Terminal help information. Without arguments, 'help' prints a list of all valid Terminal commands and a brief ","description of their functionality. You can also pass the name of a Terminal command as an argument to 'help' to print ","more detailed information about the Terminal command. Examples: "," "," help alias"," "," help scan-analyze"," "],history:["Usage: history [-c]"," ","Without arguments, displays the terminal command history. To clear the history, pass in the '-c' argument."," "],home:["Usage: home"," ","Connect to your home computer. This will work no matter what server you are currently connected to."," "],hostname:["Usage: hostname"," ","Prints the hostname of the current server"," "],kill:["Usage: kill [script name] [args...] or kill [pid]"," ","Kill the script specified by the script name and arguments OR by its PID."," ","If you are killing the script using its filename and arguments, then each ","argument must be separated by a space. Remember that a running script is ","uniquely identified by both its name and the arguments that are used to start ","it. So, if a script was ran with the following arguments:"," "," run foo.script 1 sigma-cosmetics"," ","Then to kill this script the same arguments would have to be used:"," "," kill foo.script 1 sigma-cosmetics"," ","If you are killing the script using its PID, then the PID argument must be numeric"," "],killall:["Usage: killall"," ","Kills all scripts on the current server. ","Note that after the 'kill' command is issued for a script, it may take a while for the script to actually stop running. ","This will happen if the script is in the middle of a command such as grow() or weaken() that takes time to execute. ","The script will not be stopped/killed until after that time has elapsed."," "],ls:["Usage: ls [dir] [-l] [--grep pattern]"," ","The ls command, with no arguments, prints all files and directories on the current server's directory to the Terminal screen. ","The files will be displayed in alphabetical order. "," ","The 'dir' optional parameter can be used to display files/directories in another directory."," ","The '-l' optional parameter allows you to force each item onto a single line."," ","The '--grep pattern' optional parameter can be used to only display files whose filenames match the specified pattern."," ","Examples:"," ","List all files with the '.script' extension in the current directory:"," "," ls -l --grep .script"," ","List all files with the '.js' extension in the root directory:"," "," ls / -l --grep .js"," ","List all files with the word 'purchase' in the filename, in the 'scripts' directory:"," "," ls scripts -l --grep purchase"," "],lscpu:["Usage: lscpu"," ","Prints the number of CPU Cores the current server has"," "],mem:["Usage: mem [script name] [-t num_threads]"," ","Displays the amount of RAM needed to run the specified script with a single thread. The command can also be used to print ","the amount of RAM needed to run a script with multiple threads using the '-t' flag. If the '-t' flag is specified, then ","an argument for the number of threads must be passed in afterwards. Examples:"," "," mem foo.script"," "," mem foo.script -t 50"," ","The first example above will print the amount of RAM needed to run 'foo.script' with a single thread. The second example ","above will print the amount of RAM needed to run 'foo.script' with 50 threads."," "],mv:["Usage: mv [src] [dest]"," ","Move the source file to the specified destination. This can also be used to rename files. ","This command only works for scripts and text files (.txt). This command CANNOT be used to ","convert to different file types"," ","Note that, unlike the Linux 'mv' command, the destination argument must be the ","full filepath. ","Examples: "," "," mv hacking-controller.script scripts/hacking-controller.script"," "," mv myScript.js myOldScript.js"," "],nano:r("nano"),ps:["Usage: ps"," ","Prints all scripts that are running on the current server"," "],rm:["Usage: rm [file]"," ","Removes the specified file from the current server. A file can be a script, a program, or a message file. "," ","WARNING: This is permanent and cannot be undone"," "],run:["Usage: run [file name] [-t] [num threads] [args...]"," ","Execute a program, script or coding contract."," ","The '[-t]', '[num threads]', and '[args...]' arguments are only valid when running a script. The '-t' flag is used ","to indicate that the script should be run with the specified number of threads. If the flag is omitted, ","then the script will be run with a single thread by default. ","If the '-t' flag is used, then it MUST come immediately ","after the script name, and the [num threads] argument MUST come immediately afterwards. "," ","[args...] represents a variable number of arguments that will be passed into the script. See the documentation ","about script arguments. Each specified argument must be separated by a space. "," "],scan:["Usage: scan"," ","Prints all immediately-available network connection. This will print a list of all servers that you can currently connect ","to using the 'connect' Terminal command."," "],"scan-analyze":["Usage: scan-analyze [depth] [-a]"," ","Prints detailed information about all servers up to [depth] nodes away on the network. Calling ","'scan-analyze 1' will display information for the same servers that are shown by the 'scan' Terminal ","command. This command also shows the relative paths to reach each server."," ","By default, the maximum depth that can be specified for 'scan-analyze' is 3. However, once you have ","the DeepscanV1.exe and DeepscanV2.exe programs, you can execute 'scan-analyze' with a depth up to ","5 and 10, respectively."," ","The information 'scan-analyze' displays about each server includes whether or not you have root access to it, ","its required hacking level, the number of open ports required to run NUKE.exe on it, and how much RAM ","it has."," ","By default, this command will not display servers that you have purchased. However, you can pass in the ","-a flag at the end of the command if you would like to enable that."," "],scp:["Usage: scp [filename ...] [target server]"," ","Copies the specified file(s) from the current server to the target server. ","This command only works for script files (.script or .js extension), literature files (.lit extension), ","and text files (.txt extension). ","The second argument passed in must be the hostname or IP of the target server. Examples:"," "," scp foo.script n00dles"," "," scp foo.script bar.script n00dles"," "],sudov:["Usage: sudov"," ","Prints whether or not you have root access to the current machine"," "],tail:["Usage: tail [script name] [args...]"," ","Displays dynamic logs for the script specified by the script name and arguments. Each argument must be separated ","by a space. Remember that a running script is uniquely identified by both its name and the arguments that were used ","to run it. So, if a script was ran with the following arguments: "," "," run foo.script 10 50000"," ","Then in order to check its logs with 'tail' the same arguments must be used: "," "," tail foo.script 10 50000"," "],top:["Usage: top"," ","Prints a list of all scripts running on the current server as well as their thread count and how much ","RAM they are using in total."," "],unalias:["Usage: unalias [alias name]"," ","Deletes the specified alias. Note that the double quotation marks are required. "," ","As an example, if an alias was declared using:"," ",' alias r="run"'," ","Then it could be removed using:"," "," unalias r"," ","It is not necessary to differentiate between global and non-global aliases when using 'unalias'"," "],vim:r("vim"),weaken:["Usage: weaken"," ","Reduces the security level of the current server. Decreasing the time it takes for all operations on this server.","Requires root access. See the wiki page for hacking mechanics."," "],wget:["Usage: wget [url] [target file]"," ","Retrieves data from a URL and downloads it to a file on the current server. The data can only ","be downloaded to a script (.script or .js) or a text file (.txt). If the file already exists, ","it will be overwritten by this command."," ","Note that it will not be possible to download data from many websites because they do not allow ","cross-origin resource sharing (CORS). Example:"," "," wget https://raw.githubusercontent.com/bitburner-official/bitburner-src/master/README.md game_readme.txt"," "]}},86142:(e,t,n)=>{"use strict";n.d(t,{Jm:()=>s,TE:()=>c,rU:()=>l,r_:()=>i});var a=n(67294),r=n(51087),o=n(30282);class i{constructor(e,t){r.Z.TimestampsFormat&&(e="["+(0,o.m)(r.Z.TimestampsFormat)+"] "+e),this.text=e,this.color=t}}class s{constructor(e){r.Z.TimestampsFormat&&(e=a.createElement(a.Fragment,null,"[",(0,o.m)(r.Z.TimestampsFormat),"] ",e)),this.raw=e}}class l{constructor(e,t){r.Z.TimestampsFormat&&(e="["+(0,o.m)(r.Z.TimestampsFormat)+"] "+e),this.hostname=t,this.dashes=e}}class c{constructor(e,t,n){this.time=e,this.timeLeft=e,this.action=t,this.server=n}}},91371:(e,t,n)=>{"use strict";n.d(t,{$4:()=>l,CL:()=>s});var a=n(22392),r=n(69895);function o(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return isNaN(t)?(0,a.g)(e):t}function i(e){const t=e.match(/(?:'[^']*'|"[^"]*"|[^;])*/g);return t?t.map((e=>e.trim())):[]}function s(e){return i(e).map(r.lg).flatMap(i).filter(Boolean)}function l(e){const t=e.match(/(?:([^ ;"']*"[^"]*"|[^ ;"']*'[^']*'|[^\s]+))/g);return t?t.map(o):[]}},31492:(e,t,n)=>{"use strict";n.d(t,{o:()=>ye});var a=n(86142),r=n(52947),o=n(24815),i=n(49173),s=n(3853),l=n(89916),c=n(33244),u=n(62725),m=n(68028),f=n(69917),h=n(72938),d=n(97467),p=n(19468),g=n(40780),y=n(2517),b=n(91371),v=n(40425),k=n(51087),w=n(93826),E=n(49708),S=n(22115),C=n(49802),x=n(85875),N=n(96139),M=n(23140),A=n(6984),T=n(41201),L=n(25995),R=n(33586),F=n(69247),I=n(70179),_=n(66798),P=n(7855),B=n(88172),O=n(31937),D=n(64545),Z=n(44050),G=n(19805),J=n(34909),W=n(94393),H=n(23692),U=n(65802),j=n(82524),$=n(30969),q=n(5222),z=n(88863),V=n(42698),Y=n(28736),K=n(13447),X=n(20741),Q=n(51439),ee=n(64199),te=n(93057),ne=n(30741),ae=n(38686),re=n(1512),oe=n(46463),ie=n(87436),se=n(10649),le=n(19551),ce=n(90936),ue=n(97017),me=n(15122),fe=n(97740),he=n(2827),de=n(27757),pe=n(64962),ge=n(48897);class ye{action=null;commandHistory=[];commandHistoryIndex=0;outputHistory=[new a.r_(`Bitburner v${h.t.VersionString} (${(0,ce.v)()})`,"primary")];contractOpen=!1;currDir="";process(e){null!==this.action&&(this.action.timeLeft-=h.t.MilliPerCycle*e/1e3,this.action.timeLeft<.01&&this.finishAction(!1))}append(e){this.outputHistory.push(e),this.outputHistory.length>k.Z.MaxTerminalCapacity&&this.outputHistory.splice(0,this.outputHistory.length-k.Z.MaxTerminalCapacity),m.t.emit()}print(e){this.append(new a.r_(e,"primary"))}printRaw(e){this.append(new a.Jm(e))}error(e){this.append(new a.r_(e,"error"))}success(e){this.append(new a.r_(e,"success"))}info(e){this.append(new a.r_(e,"info"))}warn(e){this.append(new a.r_(e,"warn"))}startHack(){const e=i.J5.getCurrentServer();if(e instanceof s.u)this.error("Cannot hack this kind of server");else{if(!(e instanceof l.x))throw new Error("server should be normal server");this.startAction((0,E.sI)(e,i.J5)/4,"h",e)}}startGrow(){const e=i.J5.getCurrentServer();if(e instanceof s.u)this.error("Cannot grow this kind of server");else{if(!(e instanceof l.x))throw new Error("server should be normal server");this.startAction((0,E.Md)(e,i.J5)/16,"g",e)}}startWeaken(){const e=i.J5.getCurrentServer();if(e instanceof s.u)this.error("Cannot weaken this kind of server");else{if(!(e instanceof l.x))throw new Error("server should be normal server");this.startAction((0,E.Vp)(e,i.J5)/16,"w",e)}}startBackdoor(){const e=i.J5.getCurrentServer();if(e instanceof s.u)this.error("Cannot backdoor this kind of server");else{if(!(e instanceof l.x))throw new Error("server should be normal server");this.startAction((0,E.sI)(e,i.J5)/4,"b",e)}}startAnalyze(){this.print("Analyzing system...");const e=i.J5.getCurrentServer();this.startAction(1,"a",e)}startAction(e,t,n){this.action=new a.TE(e,t,n)}finishHack(e){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1])return;if(e instanceof s.u)return void this.error("Cannot hack this kind of server");if(!(e instanceof l.x))throw new Error("server should be normal server");const t=(0,E.gb)(e,i.J5),n=Math.random(),a=(0,E.iG)(e,i.J5),c=a/4;if(n1&&void 0!==arguments[1]&&arguments[1])return;if(e instanceof s.u)return void this.error("Cannot grow this kind of server");if(!(e instanceof l.x))throw new Error("server should be normal server");const t=(0,E.iG)(e,i.J5),n=e.hackDifficulty,a=(0,y.pw)(e,25,e.cpuCores)-1,r=e.hackDifficulty;i.J5.gainHackingExp(t),this.print(`Available money on '${e.hostname}' grown by ${(0,S.T3)(a,6)}. Gained ${(0,S.Mf)(t)} hacking exp.`),this.print(`Security increased on '${e.hostname}' from ${(0,S.L7)(n)} to ${(0,S.L7)(r)}`)}finishWeaken(e){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1])return;if(e instanceof s.u)return void this.error("Cannot weaken this kind of server");if(!(e instanceof l.x))throw new Error("server should be normal server");const t=(0,E.iG)(e,i.J5),n=e.hackDifficulty;e.weaken(h.t.ServerWeakenAmount);const a=e.hackDifficulty;i.J5.gainHackingExp(t),this.print(`Security decreased on '${e.hostname}' from ${(0,S.L7)(n)} to ${(0,S.L7)(a)} (min: ${(0,S.L7)(e.minDifficulty)}) and Gained ${(0,S.Mf)(t)} hacking exp.`)}finishBackdoor(e){if(!(arguments.length>1&&void 0!==arguments[1]&&arguments[1])){if(e instanceof s.u)return void this.error("Cannot hack this kind of server");if(!(e instanceof l.x))throw new Error("server should be normal server");if(e.backdoorInstalled=!0,v.r.WorldDaemon===e.hostname)return null==i.J5.bitNodeN&&(i.J5.bitNodeN=1),void r.F.toPage(o.T3.BitVerse,{flume:!1,quick:!1});he.D.Counters.checkFactionInvitations=0,he.D.checkCounters(),this.print(`Backdoor on '${e.hostname}' successful!`)}}finishAnalyze(e){if(!(arguments.length>1&&void 0!==arguments[1]&&arguments[1])){const t=e instanceof s.u;this.print(e.hostname+": ");const n=e.organizationName;this.print("Organization name: "+(t?"player":n));const a=!t&&e.hasAdminRights||t;this.print("Root Access: "+(a?"YES":"NO"));const r=a&&e.maxRam>0;if(this.print("Can run scripts on this host: "+(r?"YES":"NO")),this.print("RAM: "+(0,S.$1)(e.maxRam)),e instanceof l.x){this.print("Backdoor: "+(e.backdoorInstalled?"YES":"NO"));const n=e.requiredHackingSkill;this.print("Required hacking skill for hack() and backdoor: "+(t?"N/A":n));const a=e.hackDifficulty;this.print("Server security level: "+(t?"N/A":(0,S.L7)(a)));const r=(0,E.gb)(e,i.J5);this.print("Chance to hack: "+(t?"N/A":(0,S.T3)(r)));const o=1e3*(0,E.sI)(e,i.J5);this.print("Time to hack: "+(t?"N/A":(0,C.UF)(o,!0)))}if(this.print(`Total money available on server: ${e instanceof l.x?(0,S.lb)(e.moneyAvailable):"N/A"}`),e instanceof l.x){const n=e.numOpenPortsRequired;this.print("Required number of open ports for NUKE: "+(t?"N/A":n)),this.print("SSH port: "+(e.sshPortOpen?"Open":"Closed")),this.print("FTP port: "+(e.ftpPortOpen?"Open":"Closed")),this.print("SMTP port: "+(e.smtpPortOpen?"Open":"Closed")),this.print("HTTP port: "+(e.httpPortOpen?"Open":"Closed")),this.print("SQL port: "+(e.sqlPortOpen?"Open":"Closed"))}}}finishAction(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(null!==this.action){if(!this.action.server)throw new Error("Missing action target server");this.print(this.getProgressText()),"h"===this.action.action?this.finishHack(this.action.server,e):"g"===this.action.action?this.finishGrow(this.action.server,e):"w"===this.action.action?this.finishWeaken(this.action.server,e):"b"===this.action.action?this.finishBackdoor(this.action.server,e):"a"===this.action.action&&this.finishAnalyze(this.action.server,e),e&&this.print("Cancelled"),this.action=null,m.t.emit()}else if(!e)throw new Error("Finish action called when there was no action")}getFile(e){return(0,f.UH)(e)?this.getScript(e):(0,ge.e)(e)?this.getTextFile(e):e.endsWith(".lit")?this.getLitFile(e):null}getFilepath(e,t){return t||e.startsWith("/")?(0,pe.Iw)(e):(e="./"+e,(0,pe.Iw)(e,this.currDir))}getDirectory(e,t){return t||e.startsWith("/")?(0,de.RL)(e):(e="./"+e,(0,de.RL)(e,this.currDir))}getScript(e){const t=i.J5.getCurrentServer(),n=this.getFilepath(e);return n&&(0,f.UH)(n)?t.scripts.get(n)??null:null}getTextFile(e){const t=i.J5.getCurrentServer(),n=this.getFilepath(e);return n&&(0,ge.e)(n)?t.textFiles.get(n)??null:null}getLitFile(e){const t=i.J5.getCurrentServer(),n=this.getFilepath(e);if(!n)return null;for(const e of t.messages)if("string"==typeof e&&n===e)return e;return null}cwd(){return this.currDir}setcwd(e){this.currDir=e,m.t.emit()}async runContract(e){if(this.contractOpen)return this.error("There's already a Coding Contract in Progress");const t=i.J5.getCurrentServer(),n=t.getContract(e);if(!n)return this.error("No such contract");this.contractOpen=!0;const a=await n.prompt();if(null==t.getContract(e))return this.contractOpen=!1,this.error("Contract no longer exists (Was it solved by a script?)");switch(a){case u.cu.Success:if(null!==n.reward){const e=i.J5.gainCodingContractReward(n.reward,n.getDifficulty());this.print(`Contract SUCCESS - ${e}`)}t.removeContract(n);break;case u.cu.Failure:++n.tries,n.tries>=n.getMaxNumTries()?(this.error("Contract FAILED - Contract is now self-destructing"),t.removeContract(n)):this.error(`Contract FAILED - ${n.getMaxNumTries()-n.tries} tries remaining`);break;case u.cu.Cancelled:default:this.print("Contract cancelled")}this.contractOpen=!1}executeScanAnalyzeCommand(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=(e,a)=>!n&&e.purchasedByPlayer&&"home"!=e.hostname||a>t||!n&&e instanceof s.u,o=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return{hostname:t.hostname,children:t.serversOnNetwork.filter((t=>t!=e)).map((e=>(0,d.WT)(e))).filter((e=>!!e)).filter((e=>!r(e,n))).map((e=>o(t.hostname,e,n+1)))}},u=o(i.J5.getCurrentServer().hostname,i.J5.getCurrentServer()),m=function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[" "],r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=n.slice(0,n.length-1).join("")+(r?"┗ ":"┣ "),s=n.join("")+(t.children.length>0?"┃ ":" ");i.J5.hasProgram(c.CompletedProgramName.autoLink)?e.append(new a.rU(o,t.hostname)):e.print(o+t.hostname+"\n");const u=(0,d.WT)(t.hostname);if(u){if(u instanceof l.x){const t=u.hasAdminRights?"YES":"NO";e.print(`${s}Root Access: ${t}, Required hacking skill: ${u.requiredHackingSkill}\n`),e.print(`${s}Number of open ports required to NUKE: ${u.numOpenPortsRequired}\n`)}e.print(`${s}RAM: ${(0,S.$1)(u.maxRam)}\n`),t.children.forEach(((e,a)=>m(e,[...n,a===t.children.length-1?" ":"┃ "],a===t.children.length-1)))}};m(u)}connectToServer(e){const t=(0,d.WT)(e);null!=t?(i.J5.getCurrentServer().isConnectedTo=!1,i.J5.currentServer=t.hostname,i.J5.getCurrentServer().isConnectedTo=!0,this.print("Connected to "+t.hostname),this.setcwd(de.Jz),"darkweb"==i.J5.getCurrentServer().hostname&&(0,p.u2)()):this.error("Invalid server. Connection failed.")}executeCommands(e){this.commandHistory[this.commandHistory.length-1]!=e&&(this.commandHistory.push(e),this.commandHistory.length>50&&this.commandHistory.splice(0,1),i.J5.terminalCommandHistory=this.commandHistory),this.commandHistoryIndex=this.commandHistory.length;const t=(0,b.CL)(e);for(const e of t)this.executeCommand(e)}clear(){this.outputHistory=[new a.r_(`Bitburner v${h.t.VersionString} (${(0,ce.v)()})`,"primary")],m.t.emit(),m.m.emit()}prestige(){this.action=null,this.clear()}executeCommand(e){if(null!==this.action)return this.error(`Cannot execute command (${e}) while an action is in progress`);const t=(0,b.$4)(e);if(!t.length)return;const n=i.J5.getCurrentServer();if(g.wP.isRunning){const e=(0,d.WT)("n00dles");if(null==e)throw new Error("Could not get n00dles server");switch(g.wP.currStep){case g.$o.TerminalHelp:if(1!==t.length||"help"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalLs:if(1!==t.length||"ls"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalScan:if(1!==t.length||"scan"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalScanAnalyze1:if(1!=t.length||"scan-analyze"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalScanAnalyze2:if(2!=t.length||"scan-analyze"!=t[0]||2!==t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalConnect:if(2!=t.length)return void this.error("Bad command. Please follow the tutorial");if("connect"!=t[0]||"n00dles"!=t[1]&&t[1]!=e.hostname)return void this.error("Wrong command! Try again!");(0,g.ZF)();break;case g.$o.TerminalAnalyze:if(1!==t.length||"analyze"!==t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalNuke:if(2!=t.length||"run"!=t[0]||"NUKE.exe"!=t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalManualHack:if(1!=t.length||"hack"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalHackingMechanics:if(1!==t.length||!["grow","weaken","hack"].includes(t[0]+""))return void this.error("Bad command. Please follow the tutorial");break;case g.$o.TerminalGoHome:if(1!=t.length||"home"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalCreateScript:if(2!=t.length||"nano"!=t[0]||"n00dles.script"!=t[1]&&"n00dles.js"!=t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalFree:if(1!=t.length||"free"!=t[0])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.TerminalRunScript:if(2!=t.length||"run"!=t[0]||"n00dles.script"!=t[1]&&"n00dles.js"!=t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;case g.$o.ActiveScriptsToTerminal:if(2!=t.length||"tail"!=t[0]||"n00dles.script"!=t[1]&&"n00dles.js"!=t[1])return void this.error("Bad command. Please follow the tutorial");(0,g.ZF)();break;default:return void this.error("Please follow the tutorial, or click 'EXIT' if you'd like to skip it")}}const a=t[0];if("string"!=typeof a)return this.error(`${a} is not a valid command.`);if((0,pe.Vf)(a))return(0,X.K)(t,n);t.shift();const r={"scan-analyze":ee.h,alias:x.b,analyze:N.B,backdoor:M.c,buy:A.b,cat:T.d,cd:L.cd,changelog:me.V,check:R.B,clear:()=>this.clear(),cls:()=>this.clear(),connect:F.$,cp:I.cp,download:_.L,expr:P.Y,free:B.g,grow:O.t,hack:D.U,help:Z.R,history:G.m,home:J.L,hostname:W.K,kill:H.V,killall:U.G,ls:j.ls,lscpu:$.Z,mem:q.$,mv:z.mv,nano:V.J,ps:Y.ps,rm:K.rm,run:X.K,scan:Q.R,scp:te.D,sudov:ne.C,tail:ae.G,apr1:ue.W,top:re.w,unalias:oe.r,vim:ie.d,weaken:se.H,wget:le.R}[a.toLowerCase()];if(!r)return this.error(`Command ${a} not found`);r(t,n)}getProgressText(){if(null===this.action)throw new Error("trying to get the progress text when there's no action");return(0,w.x)({progress:(this.action.time-this.action.timeLeft)/this.action.time,totalTicks:50})}}},68028:(e,t,n)=>{"use strict";n.d(t,{m:()=>o,t:()=>r});var a=n(13342);const r=new a.v,o=new a.v},85875:(e,t,n)=>{"use strict";n.d(t,{b:()=>o});var a=n(65065),r=n(69895);function o(e){0!==e.length?1===e.length&&(0,r.nS)(e[0]+"")?a.o.print(`Set alias ${e[0]}`):2===e.length&&"-g"===e[0]&&(0,r.nS)(e[1]+"",!0)?a.o.print(`Set global alias ${e[1]}`):a.o.error('Incorrect usage of alias command. Usage: alias [-g] [aliasname="value"]'):(0,r.aX)()}},96139:(e,t,n)=>{"use strict";n.d(t,{B:()=>r});var a=n(65065);function r(e){0===e.length?a.o.startAnalyze():a.o.error("Incorrect usage of analyze command. Usage: analyze")}},97017:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});var a=n(51674);function r(){a.Z.emit()}},23140:(e,t,n)=>{"use strict";n.d(t,{c:()=>s});var a=n(65065),r=n(49173),o=n(89916),i=n(3853);function s(e,t){if(0!==e.length)return void a.o.error("Incorrect usage of backdoor command. Usage: backdoor");t instanceof o.x||a.o.error("Can only backdoor normal servers");const n=t;n.purchasedByPlayer?a.o.error("Cannot use backdoor on your own machines! You are currently connected to your home PC or one of your purchased servers"):n.hasAdminRights?n.requiredHackingSkill>r.J5.skills.hacking?a.o.error("Your hacking skill is not high enough to use backdoor on this machine. Try analyzing the machine to determine the required hacking skill"):n instanceof i.u?a.o.error("Cannot use backdoor on this type of Server"):a.o.startBackdoor():a.o.error("You do not have admin rights for this machine! Cannot backdoor")}},6984:(e,t,n)=>{"use strict";n.d(t,{b:()=>i});var a=n(65065),r=n(49173),o=n(19468);function i(e){if(!r.J5.hasTorRouter())return void a.o.error("You need to be able to connect to the Dark Web to use the buy command. (Maybe there's a TOR router you can buy somewhere)");if(1!=e.length)return a.o.print("Incorrect number of arguments. Usage: "),a.o.print("buy -l"),a.o.print("buy -a"),void a.o.print("buy [item name]");const t=e[0]+"";"-l"==t||"-1"==t||"--list"==t?(0,o.uN)():"-a"==t||"--all"==t?(0,o.Km)():(0,o.y$)(t)}},41201:(e,t,n)=>{"use strict";n.d(t,{d:()=>u});var a=n(65065),r=n(72198),o=n(20404),i=n(39463),s=n(69917),l=n(48897),c=n(50862);function u(e,t){if(1!==e.length)return a.o.error("Incorrect usage of cat command. Usage: cat [file]");const n=e[0]+"",u=a.o.getFilepath(n);if(!u)return a.o.error(`Invalid filename: ${n}`);if((0,s.UH)(u)||(0,l.e)(u)){const e=t.getContentFile(u);return e?(0,i.X)(`${e.filename}\n\n${e.content}`):a.o.error(`No file at path ${u}`)}return u.endsWith(".msg")||u.endsWith(".lit")?(0,c.R)("MessageFilename",u)&&t.messages.includes(u)?(0,r.PV)(u):(0,c.R)("LiteratureName",u)&&t.messages.includes(u)?(0,o.O)(u):void a.o.error(`No file at path ${u}`):a.o.error("Invalid file extension. Filename must end with .msg, .txt, .lit, .script or .js")}},25995:(e,t,n)=>{"use strict";n.d(t,{cd:()=>o});var a=n(65065),r=n(27757);function o(e,t){if(e.length>1)return a.o.error("Incorrect number of arguments. Usage: cd [dir]");const n=String(e[0]??"/"),o=(0,r.RL)(n,a.o.currDir);return null===o?a.o.error(`Could not resolve directory ${n}`):(0,r.iL)(o,t)?void a.o.setcwd(o):a.o.error(`Directory ${o} does not exist.`)}},15122:(e,t,n)=>{"use strict";n.d(t,{V:()=>o});var a=n(72938),r=n(39463);const o=()=>(0,r.X)("Most recent changelog info:\n\n"+a.t.LatestUpdate)},33586:(e,t,n)=>{"use strict";n.d(t,{B:()=>i});var a=n(65065),r=n(10364),o=n(69917);function i(e,t){if(e.length<1)a.o.error("Incorrect number of arguments. Usage: check [script] [arg1] [arg2]...");else{const n=a.o.getFilepath(e[0]+"");if(!n)return a.o.error(`Invalid filename: ${e[0]}`);if(!(0,o.UH)(n))return a.o.error(`check: File extension must be one of ${o.a0.join(", ")})`);const i=(0,r.Es)(n,e.slice(1),t);if(null===i)return void a.o.error(`No script named ${n} is running on the server`);i.values().next().value.displayLog()}}},17010:(e,t,n)=>{"use strict";n.d(t,{a:()=>m});var a=n(65065),r=n(24815),o=n(52947),i=n(42281),s=n(69917),l=n(48897),c=n(20706);const u="/** @param {NS} ns */\nexport async function main(ns) {\n\n}";function m(e,t,n){let{args:m,server:f}=t;if(m.length<1)return a.o.error(`Incorrect usage of ${e} command. Usage: ${e} [scriptname]`);const h=new Map;for(const t of m){const n=String(t);if(n.includes("*")||n.includes("?")){for(const[e,t]of(0,c.m)(n,f,a.o.currDir))h.set(e,t.content);continue}const r=a.o.getFilepath(n);if(!r)return a.o.error(`Invalid file path ${t}`);if(!(0,s.UH)(r)&&!(0,l.e)(r))return a.o.error(`${e}: Only scripts or text files can be edited. Invalid file type: ${t}`);const o=f.getContentFile(r),m=o?o.content:r.endsWith(".js")?u:"";h.set(r,m),m===u&&i.M.saveCursor(r,{row:3,column:5})}o.F.toPage(r.T3.ScriptEditor,{files:h,options:n})}},69247:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var a=n(65065),r=n(2517),o=n(97467);function i(e,t){if(1!==e.length)return void a.o.error("Incorrect usage of connect command. Usage: connect [hostname]");const n=e[0]+"";for(let e=0;e{"use strict";n.d(t,{cp:()=>s});var a=n(65065),r=n(64962),o=n(48897),i=n(69917);function s(e,t){if(2!==e.length)return a.o.error("Incorrect usage of cp command. Usage: cp [source filename] [destination]");const n=a.o.getFilepath(String(e[0]));if(!n)return a.o.error(`Invalid source filename ${e[0]}`);if(!(0,o.e)(n)&&!(0,i.UH)(n))return a.o.error("cp: Can only be performed on script and text files");const s=t.getContentFile(n);if(!s)return a.o.error(`File not found: ${n}`);const l=String(e[1]);let c=a.o.getFilepath(l);if(!c){const e=a.o.getDirectory(l);if(!e)return a.o.error(`Could not resolve ${l} as a FilePath or Directory`);c=(0,r.bW)(e,(0,r.uP)(n))}if(!(0,o.e)(c)&&!(0,i.UH)(c))return a.o.error(`cp: Can only copy to script and text files (${c} is invalid destination)`);const u=t.writeToContentFile(c,s.content);a.o.print(`File ${n} copied to ${c}`),u.overwritten&&a.o.warn(`${c} was overwritten.`)}},66798:(e,t,n)=>{"use strict";n.d(t,{L:()=>h,e:()=>f});var a=n(65065),r=n(93162),o=n.n(r),i=n(55733),s=n.n(i),l=n(27757),c=n(69917),u=n(48897),m=n(20706);function f(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l.Jz;const a=new(s());for(const[r,o]of(0,m.m)(e,t,n))a.file(r,new Blob([o.content],{type:"text/plain"}));if(0==Object.keys(a.files).length)throw new Error(`No files match the pattern ${e}`);const r=`bitburner${(0,c.UH)(e)?"Scripts":e.endsWith(".txt")?"Texts":"Files"}.zip`;a.generateAsync({type:"blob"}).then((e=>o().saveAs(e,r)))}function h(e,t){if(1!==e.length)return a.o.error("Incorrect usage of download command. Usage: download [script/text file]");const n=String(e[0]);if(n.includes("*")||n.includes("?"))try{return void f(n,t,a.o.currDir)}catch(e){const t=String((null==e?void 0:e.message)??e);return a.o.error(t)}const r=a.o.getFilepath(n);if(!r)return a.o.error(`Could not resolve path ${n}`);if(!(0,c.UH)(r)&&!(0,u.e)(r))return a.o.error("Can only download script and text files");const o=t.getContentFile(r);return o?o.download():a.o.error(`File not found: ${r}`)}},7855:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{Y:()=>expr});var _Terminal__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(65065);function expr(args){if(0===args.length)return void _Terminal__WEBPACK_IMPORTED_MODULE_0__.o.error("Incorrect usage of expr command. Usage: expr [math expression]");const expr=args.join(""),sanitizedExpr=expr.replace(/s+/g,"").replace(/[^-()\d/*+.%]/g,"");let result;try{result=eval(sanitizedExpr)}catch(e){return void _Terminal__WEBPACK_IMPORTED_MODULE_0__.o.error(`Could not evaluate expression: ${sanitizedExpr}`)}_Terminal__WEBPACK_IMPORTED_MODULE_0__.o.print(result)}},88172:(e,t,n)=>{"use strict";n.d(t,{g:()=>o});var a=n(65065),r=n(22115);function o(e,t){if(0!==e.length)return void a.o.error("Incorrect usage of free command. Usage: free");const n=(0,r.$1)(t.maxRam),o=(0,r.$1)(t.ramUsed),i=(0,r.$1)(t.maxRam-t.ramUsed),s=Math.max(n.length,Math.max(o.length,i.length)),l=(0,r.T3)(t.ramUsed/t.maxRam);a.o.print(`Total: ${" ".repeat(s-n.length)}${n}`),a.o.print(`Used: ${" ".repeat(s-o.length)}${o} (${l})`),a.o.print(`Available: ${" ".repeat(s-i.length)}${i}`)}},31937:(e,t,n)=>{"use strict";n.d(t,{t:()=>r});var a=n(65065);function r(e,t){return 0!==e.length?a.o.error("Incorrect usage of grow command. Usage: grow"):t.purchasedByPlayer?a.o.error("Cannot grow your own machines!"):t.hasAdminRights?void 0===t.requiredHackingSkill?a.o.error("Cannot grow this server."):void a.o.startGrow():a.o.error("You do not have admin rights for this machine!")}},64545:(e,t,n)=>{"use strict";n.d(t,{U:()=>o});var a=n(65065),r=n(49173);function o(e,t){return 0!==e.length?a.o.error("Incorrect usage of hack command. Usage: hack"):t.purchasedByPlayer?a.o.error("Cannot hack your own machines!"):t.hasAdminRights?void 0===t.requiredHackingSkill?a.o.error("Cannot hack this server."):t.requiredHackingSkill>r.J5.skills.hacking?a.o.error("Your hacking skill is not high enough to hack this machine. Try analyzing the machine to determine the required hacking skill"):void a.o.startHack():a.o.error("You do not have admin rights for this machine!")}},44050:(e,t,n)=>{"use strict";n.d(t,{R:()=>o});var a=n(65065),r=n(57082);function o(e){if(0===e.length||1===e.length)if(0===e.length)r.N.forEach((e=>a.o.print(e)));else{const t=e[0]+"",n=r.s[t];if(null==n)return void a.o.error("No help topics match '"+t+"'");n.forEach((e=>a.o.print(e)))}else a.o.error("Incorrect usage of help command. Usage: help")}},19805:(e,t,n)=>{"use strict";n.d(t,{m:()=>o});var a=n(65065),r=n(49173);function o(e){if(0===e.length)return void a.o.commandHistory.forEach(((e,t)=>{a.o.print(`${t.toString().padStart(2)} ${e}`)}));const t=e[0]+"";"-c"===t||"--clear"===t?(r.J5.terminalCommandHistory=[],a.o.commandHistory=[],a.o.commandHistoryIndex=1):a.o.error("Incorrect usage of history command. usage: history [-c]")}},34909:(e,t,n)=>{"use strict";n.d(t,{L:()=>i});var a=n(27757),r=n(65065),o=n(49173);function i(e){0===e.length?(o.J5.getCurrentServer().isConnectedTo=!1,o.J5.currentServer=o.J5.getHomeComputer().hostname,o.J5.getCurrentServer().isConnectedTo=!0,r.o.print("Connected to home"),r.o.setcwd(a.Jz)):r.o.error("Incorrect usage of home command. Usage: home")}},94393:(e,t,n)=>{"use strict";n.d(t,{K:()=>r});var a=n(65065);function r(e,t){0===e.length?a.o.print(t.hostname):a.o.error("Incorrect usage of hostname command. Usage: hostname")}},23692:(e,t,n)=>{"use strict";n.d(t,{V:()=>s});var a=n(65065),r=n(10364),o=n(21951),i=n(69917);function s(e,t){try{if(e.length<1||"boolean"==typeof e[0])return void a.o.error("Incorrect usage of kill command. Usage: kill [pid] or kill [scriptname] [arg1] [arg2]...");if("number"==typeof e[0]){const t=e[0];return void((0,o._)(t)?a.o.print(`Killing script with PID ${t}`):a.o.error(`Failed to kill script with PID ${t}. No such script is running`))}const n=a.o.getFilepath(e[0]);if(!n)return a.o.error(`Invalid filename: ${e[0]}`);if(!(0,i.UH)(n))return a.o.error("Invalid file extension. Kill can only be used on scripts.");const s=(0,r.Es)(n,e.slice(1),t);if(null===s)return void a.o.error("No such script is running. Nothing to kill");let l=0;for(const e of s.keys())l++,l<5&&a.o.print(`Killing ${n} with pid ${e}`),(0,o._)(e);l>=5&&a.o.print(`... killed ${l} instances total`)}catch(e){a.o.error(e+"")}}},65802:(e,t,n)=>{"use strict";n.d(t,{G:()=>o});var a=n(65065),r=n(21951);function o(e,t){a.o.print("Killing all running scripts");for(const e of t.runningScriptMap.values())for(const t of e.values())(0,r._)(t.pid)}},82524:(e,t,n)=>{"use strict";n.d(t,{ls:()=>g});var a=n(67294),r=n(73327),o=n(77541),i=n(52947),s=n(24815),l=n(65065),c=n(86021),u=n.n(c),m=n(20404),f=n(72198),h=n(64962),d=n(27757),p=n(50862);function g(e,t){let n;try{n=u()({"-l":Boolean,"--grep":String,"-g":"--grep"},{argv:e})}catch(e){return void g()}const c=n["--grep"]??"";function g(){l.o.error("Incorrect usage of ls command. Usage: ls [dir] [-l] [-g, --grep pattern]")}if(e.length>4)return g();let y=l.o.currDir;if(e[0]&&"string"==typeof e[0]&&!e[0].startsWith("-")){const n=(0,d.RL)(e[0],e[0].startsWith("/")?d.Jz:l.o.currDir);if(null===n||!(0,d.iL)(n,t))return g();y=n}const b=[],v=[],k=[],w=[],E=[],S=[];function C(e,t){const n=(0,h.ws)(y,e);if(!n)return;if(!n.includes(c))return;const a=(0,d.Z1)(n);if(a){if(!a.includes(c)||S.includes(a))return;S.push(a)}else t.push(n)}for(const e of t.programs)C(e,b);for(const e of t.scripts.keys())C(e,v);for(const e of t.textFiles.keys())C(e,k);for(const e of t.contracts)C(e.fn,w);for(const e of t.messages)C(e,E);function x(e){const t=(0,o.Z)({segmentGrid:{display:"grid",gridTemplateColumns:"repeat(auto-fill, var(--colSize))"}})(),n={"--colSize":e.colSize};return a.createElement("span",{style:n,className:t.segmentGrid},e.children)}function N(e){const n=(0,o.Z)((e=>(0,r.Z)({link:{cursor:"pointer",textDecorationLine:"underline",color:e.palette.warning.main}})))(),l=(0,h.bW)(y,e.path);return a.createElement("span",null,a.createElement("span",{className:n.link,onClick:function(){var e;const n=(null===(e=t.scripts.get(l))||void 0===e?void 0:e.content)??"",a=new Map;a.set(l,n),i.F.toPage(s.T3.ScriptEditor,{files:a})}},e.path))}function M(e){const n=(0,o.Z)({link:{cursor:"pointer",textDecorationLine:"underline"}})();return a.createElement("span",null,a.createElement("span",{className:n.link,onClick:function(){if(!t.isConnectedTo)return l.o.error(`File is not on this server, connect to ${t.hostname} and try again`);(0,p.R)("MessageFilename",e.path)?(0,f.PV)(e.path):(0,p.R)("LiteratureName",e.path)&&(0,m.O)(e.path)}},e.path))}let A;function T(e,t){let n,{type:r,segments:o}=e;const i=t["-l"]?"100%":Math.ceil(.7*Math.max(...o.map((e=>e.length))))+"em";switch(r){case A.Folder:n=o.map((e=>a.createElement("span",{key:e,style:{color:"cyan"}},e)));break;case A.Message:n=o.map((e=>a.createElement(M,{key:e,path:e})));break;case A.Script:n=o.map((e=>a.createElement(N,{key:e,path:e})));break;default:n=o.map((e=>a.createElement("span",{key:e},e)))}l.o.printRaw(a.createElement(x,{colSize:i},n))}b.sort(),v.sort(),k.sort(),w.sort(),E.sort(),S.sort(),function(e){e[e.Folder=0]="Folder",e[e.Message=1]="Message",e[e.TextFile=2]="TextFile",e[e.Program=3]="Program",e[e.Contract=4]="Contract",e[e.Script=5]="Script"}(A||(A={}));const L=[{type:A.Folder,segments:S},{type:A.Message,segments:E},{type:A.TextFile,segments:k},{type:A.Program,segments:b},{type:A.Contract,segments:w},{type:A.Script,segments:v}];for(const e of L)e.segments.length>0&&T(e,n)}},30969:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(65065);function r(e,t){a.o.print(t.cpuCores+" Core(s)")}},5222:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var a=n(65065),r=n(22115),o=n(51087);function i(e,t){try{if(1!==e.length&&3!==e.length)return void a.o.error("Incorrect usage of mem command. usage: mem [scriptname] [-t] [number threads]");const n=e[0]+"";let i=1;if(3===e.length&&"-t"===e[1]&&(i=Math.round(parseInt(e[2]+"")),isNaN(i)||i<1))return void a.o.error("Invalid number of threads specified. Number of threads must be greater than 1");const s=a.o.getScript(n);if(null==s)return void a.o.error("mem failed. No such script exists!");const l=s.getRamUsage(t.scripts);if(!l)return a.o.error(`Could not calculate ram usage for ${n}`);const c=l*i;a.o.print(`This script requires ${(0,r.$1)(c)} of RAM to run for ${i} thread(s)`);const u=s.ramUsageEntries.sort(((e,t)=>t.cost-e.cost))??[],m=o.Z.UseIEC60027_2?9:8;for(const e of u)a.o.print(`${(0,r.$1)(e.cost*i).padStart(m)} | ${e.name} (${e.type})`);c>0&&0===u.length&&a.o.warn("You might have to open & save this script to see the detailed RAM usage information.")}catch(e){a.o.error(e+"")}}},88863:(e,t,n)=>{"use strict";n.d(t,{mv:()=>i});var a=n(65065),r=n(69917),o=n(48897);function i(e,t){if(2!==e.length)return void a.o.error("Incorrect number of arguments. Usage: mv [src] [dest]");const[n,i]=e.map((e=>e+"")),s=a.o.getFilepath(n);if(!s)return a.o.error(`Invalid source filename: ${n}`);const l=a.o.getFilepath(i);if(!l)return a.o.error(`Invalid destination filename: ${l}`);if(!(0,r.UH)(s)&&!(0,o.e)(s)||!(0,r.UH)(l)&&!(0,o.e)(l))return a.o.error("'mv' can only be used on scripts and text files (.txt)");const c=t.getContentFile(s);if(!c)return a.o.error(`Source file ${s} does not exist`);if(!c.deleteFromServer(t))return a.o.error(`Could not remove source file ${s} from existing location.`);a.o.print(`Moved ${s} to ${l}`);const{overwritten:u}=t.writeToContentFile(l,c.content);u&&a.o.warn(`${l} was overwritten.`)}},42698:(e,t,n)=>{"use strict";n.d(t,{J:()=>r});var a=n(17010);function r(e,t){return(0,a.a)("nano",{args:e,server:t})}},28736:(e,t,n)=>{"use strict";n.d(t,{ps:()=>i});var a=n(65065),r=n(70769),o=n(86021);function i(e,t){let n;try{n=o({"--grep":String,"-g":"--grep"},{argv:e})}catch(e){return void a.o.error("Incorrect usage of ps command. Usage: ps [-g, --grep pattern]")}let i=n["--grep"];i||(i=".*");const s=(0,r.lr)(i);for(const[e,n]of t.runningScriptMap)if(s.test(e))for(const e of n.values()){const t=`(PID - ${e.pid}) ${e.filename} ${e.args.join(" ")}`;a.o.print(t)}}},13447:(e,t,n)=>{"use strict";n.d(t,{rm:()=>r});var a=n(65065);function r(e,t){if(1!==e.length)return a.o.error("Incorrect number of arguments. Usage: rm [program/script]");const n=a.o.getFilepath(e[0]+"");if(!n)return a.o.error(`Invalid filename: ${e[0]}`);const r=t.removeFile(n);!r.res&&r.msg&&a.o.error(r.msg)}},20741:(e,t,n)=>{"use strict";n.d(t,{K:()=>c});var a=n(65065),r=n(55086),o=n(99580),i=n(69917),s=n(61835),l=n(84555);function c(e,t){const n=e.shift();if(!n)return a.o.error("Usage: run [program/script] [-t] [num threads] [arg1] [arg2]...");const c=a.o.getFilepath(String(n));return c?(0,i.UH)(c)?(0,r.T)(c,e,t):(0,s.G)(c)?void a.o.runContract(c):(0,l.LL)(c)?(0,o._)(c,e,t):void a.o.error("Invalid file extension. Only .js, .script, .cct, and .exe files can be ran."):a.o.error(`${n} is not a valid filepath.`)}},99580:(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var a=n(65065),r=n(49173),o=n(58073),i=n(21623);function s(e,t,n){const s=e.toLowerCase(),l=(0,i.nd)(o.B).find((e=>e.toLowerCase()===s));l&&r.J5.hasProgram(l)?o.B[l].run(t.map(String),n):a.o.error(`No such (exe, script, js, or cct) file! (Only finished programs that exist on your home computer or scripts on ${n.hostname} can be run)`)}},55086:(e,t,n)=>{"use strict";n.d(t,{T:()=>u});var a=n(65065),r=n(85167),o=n(7872),i=n(19918),s=n(86021),l=n(22115),c=n(20145);function u(e,t,n){const u=n.scripts.get(e);if(!u)return a.o.error(`Script ${e} does not exist on this server.`);const m={"--tail":Boolean,"-t":Number},f=s(m,{permissive:!0,argv:t}),h=!0===f["--tail"],d=parseFloat(f["-t"]??1);if(!(0,c.a)(d))return a.o.error("Invalid number of threads specified. Number of threads must be an integer greater than 0");if(!n.hasAdminRights)return a.o.error("Need root access to run script");const p=f._,g=u.getRamUsage(n.scripts);if(!g)return a.o.error(`Error while calculating ram usage for this script. ${u.ramCalculationError}`);const y=g*d;if(y>n.maxRam-n.ramUsed+.001)return a.o.error("This machine does not have enough RAM to run this script"+(1===d?"":` with ${d} threads`)+`. Script requires ${(0,l.$1)(y)} of RAM`);const b=new i.X(u,g,p);if(b.threads=d,!(0,o.dU)(b,n))return a.o.error("Failed to start script");a.o.print(`Running script with ${d} thread(s), pid ${b.pid} and args: ${JSON.stringify(p)}.`),h&&r.ki.emit(b)}},51439:(e,t,n)=>{"use strict";n.d(t,{R:()=>o});var a=n(65065),r=n(2517);function o(e,t){if(0!==e.length)return void a.o.error("Incorrect usage of scan command. Usage: scan");const n=t.serversOnNetwork.map(((e,n)=>{const a=(0,r.xy)(t,n);if(null===a)throw new Error("Server should not be null");return{hostname:a.hostname,ip:a.ip,hasRoot:a.hasAdminRights?"Y":"N"}}));n.unshift({hostname:"Hostname",ip:"IP",hasRoot:"Root Access"});const o=Math.max(...n.map((e=>e.hostname.length))),i=Math.max(...n.map((e=>e.ip.length)));for(const e of n){if(!e)continue;let t=e.hostname;t+=" ".repeat(o-e.hostname.length+1),t+=e.ip,t+=" ".repeat(i-e.ip.length+1),t+=e.hasRoot,a.o.print(t)}}},64199:(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var a=n(49173),r=n(33244),o=n(65065);function i(e){if(0===e.length)o.o.executeScanAnalyzeCommand();else{if(e.length>2)return void o.o.error("Incorrect usage of scan-analyze command. usage: scan-analyze [depth]");let t=!1;2===e.length&&"-a"===e[1]&&(t=!0);const n=parseInt(e[0]+"");if(isNaN(n)||n<0)return o.o.error("Incorrect usage of scan-analyze command. depth argument must be positive numeric");if(n>3&&!a.J5.hasProgram(r.CompletedProgramName.deepScan1)&&!a.J5.hasProgram(r.CompletedProgramName.deepScan2))return o.o.error("You cannot scan-analyze with that high of a depth. Maximum depth is 3");if(n>5&&!a.J5.hasProgram(r.CompletedProgramName.deepScan2))return o.o.error("You cannot scan-analyze with that high of a depth. Maximum depth is 5");if(n>10)return o.o.error("You cannot scan-analyze with that high of a depth. Maximum depth is 10");o.o.executeScanAnalyzeCommand(n,t)}}},93057:(e,t,n)=>{"use strict";n.d(t,{D:()=>l});var a=n(65065),r=n(97467),o=n(69917),i=n(48897),s=n(50862);function l(e,t){if(e.length<2)return a.o.error("Incorrect usage of scp command. Usage: scp [source filename] [destination hostname]");const n=String(e.pop()),l=(0,r.WT)(n);if(!l)return a.o.error(`Invalid destination server: ${n}`);const c=e.map(String),u=[];for(const e of c){const n=a.o.getFilepath(e);if(!n)return a.o.error(`Invalid file path: ${e}`);if(n.endsWith(".lit")){if(!(0,s.R)("LiteratureName",n)||!t.messages.includes(n))return a.o.error(`scp failed: ${n} does not exist on server ${t.hostname}`);u.push(n);continue}if(!(0,o.UH)(n)&&!(0,i.e)(n))return a.o.error(`scp failed: ${n} has invalid extension. scp only works for scripts (.js or .script), text files (.txt), and literature files (.lit)`);const r=t.getContentFile(n);if(!r)return a.o.error(`scp failed: ${n} does not exist on server ${t.hostname}`);u.push(r)}for(const e of u){if((0,s.R)("LiteratureName",e)){if(l.messages.includes(e)){a.o.print(`${e} was already on ${n}, file skipped`);continue}l.messages.push(e),a.o.print(`${e} copied to ${n}`);continue}const{filename:t,content:r}=e,{overwritten:o}=l.writeToContentFile(t,r);o?a.o.warn(`${t} already existed on ${n} and was overwritten`):a.o.print(`${t} copied to ${n}`)}}},30741:(e,t,n)=>{"use strict";n.d(t,{C:()=>r});var a=n(65065);function r(e,t){0===e.length?t.hasAdminRights?a.o.print("You have ROOT access to this machine"):a.o.print("You do NOT have root access to this machine"):a.o.error("Incorrect number of arguments. Usage: sudov")}},38686:(e,t,n)=>{"use strict";n.d(t,{G:()=>s});var a=n(65065),r=n(10364),o=n(85167),i=n(69917);function s(e,t){try{if(e.length<1)a.o.error("Incorrect number of arguments. Usage: tail [script] [arg1] [arg2]...");else if("string"==typeof e[0]){const[n,...s]=e,l=a.o.getFilepath(n);if(!l)return a.o.error(`Invalid filename: ${n}`);if(!(0,i.UH)(l))return a.o.error("Invalid file extension. Tail can only be used on scripts.");const c=(0,r.Es)(l,s,t);if(null===c)return void a.o.error(`No script named ${l} with args ${JSON.stringify(s)} is running on the server`);o.ki.emit(c.values().next().value)}else if("number"==typeof e[0]){const n=(0,r.$o)(e[0],t);if(null==n)return void a.o.error(`No script with PID ${e[0]} is running on the server`);o.ki.emit(n)}}catch(e){a.o.error(e+"")}}},1512:(e,t,n)=>{"use strict";n.d(t,{w:()=>o});var a=n(65065),r=n(22115);function o(e,t){if(0!==e.length)return void a.o.error("Incorrect usage of top command. Usage: top");const n="Script",o="Threads",i=`${n}${" ".repeat(40-n.length)}PID${" ".repeat(10-"PID".length)}${o}${" ".repeat(16-o.length)}RAM Usage`;a.o.print(i);const s=t.runningScriptMap;for(const e of s.values())for(const t of e.values()){const e=Math.max(0,40-t.filename.length),n=" ".repeat(e),o=Math.max(0,10-(t.pid+"").length),i=" ".repeat(o),s=Math.max(0,16-(t.threads+"").length),l=" ".repeat(s),c=(0,r.$1)(t.ramUsage*t.threads),u=[t.filename,n,t.pid,i,t.threads,l,c].join("");a.o.print(u)}}},46463:(e,t,n)=>{"use strict";n.d(t,{r:()=>o});var a=n(65065),r=n(69895);function o(e){1===e.length?(0,r.z7)(e[0]+"")?a.o.print(`Removed alias ${e[0]}`):a.o.error(`No such alias exists: ${e[0]}`):a.o.error("Incorrect usage of unalias name. Usage: unalias [alias]")}},87436:(e,t,n)=>{"use strict";n.d(t,{d:()=>r});var a=n(17010);function r(e,t){return(0,a.a)("vim",{args:e,server:t},{vim:!0})}},10649:(e,t,n)=>{"use strict";n.d(t,{H:()=>r});var a=n(65065);function r(e,t){return 0!==e.length?a.o.error("Incorrect usage of weaken command. Usage: weaken"):t.purchasedByPlayer?a.o.error("Cannot weaken your own machines!"):t.hasAdminRights?void 0===t.requiredHackingSkill?a.o.error("Cannot weaken this server."):void a.o.startWeaken():a.o.error("You do not have admin rights for this machine!")}},19551:(e,t,n)=>{"use strict";n.d(t,{R:()=>l});var a=n(19755),r=n.n(a),o=n(65065),i=n(69917),s=n(48897);function l(e,t){if(2!==e.length)return void o.o.error("Incorrect usage of wget command. Usage: wget [url] [target file]");const n=e[0]+"",a=o.o.getFilepath(e[1]+"");if(!a||!(0,i.UH)(a)&&!(0,s.e)(a))return o.o.error("wget failed: Invalid target file. Target file must be script or text file");r().get(n,(function(e){let n;return n=(0,s.e)(a)?t.writeToTextFile(a,String(e)):t.writeToScriptFile(a,String(e)),n.overwritten?o.o.print(`wget successfully retrieved content and overwrote ${a}`):o.o.print(`wget successfully retrieved content to new file ${a}`)}),"text").fail((function(e){return o.o.error("wget failed: "+JSON.stringify(e))}))}},35968:(e,t,n)=>{"use strict";n.d(t,{t:()=>p});var a=n(69895),r=n(4852),o=n(49173),i=n(97467),s=n(91371),l=n(57082),c=n(50663),u=n(21278),m=n(86021),f=n(27757),h=n(69917);const d=["alias","analyze","backdoor","cat","cd","changelog","check","clear","cls","connect","cp","download","expr","free","grow","hack","help","home","hostname","ifconfig","kill","killall","ls","lscpu","mem","mv","nano","ps","rm","run","scan-analyze","scan","scp","sudov","tail","theme","top","vim","weaken"];async function p(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.Jz;const p=(null===(t=/[^ ]*$/.exec(e))||void 0===t?void 0:t[0])??"",g=e.substring(0,e.length-p.length),y=(0,s.CL)(g);y.length||y.push("");const b=(0,s.$4)(y[y.length-1]).map(String);b.push(p);const v=b.length,k=p.toLowerCase();let w=p.toLowerCase(),E="";const S=p.lastIndexOf("/");if(-1!==S){E=p.substring(0,S+1);const e=(0,f.RL)(E,n);if(null===e)return[];n=e,w=p.replace(/^.*\//,e).toLowerCase()}else n!==f.Jz&&(w=(n+p).toLowerCase());const C=[],x=o.J5.getCurrentServer(),N=o.J5.getHomeComputer();function M(e){let{iterable:t,usePathing:a,ignoreCurrent:r}=e;const o=a?w:k;for(const e of t)r&&e.length<=o.length||e.toLowerCase().startsWith(o)&&C.push(a?E+e.substring(n.length):e)}const A=()=>M({iterable:a.$z.keys()}),T=()=>M({iterable:a.Ui.keys()}),L=()=>M({iterable:d}),R=()=>M({iterable:Object.values(r.L).map((e=>e.program))}),F=()=>M({iterable:(0,i.XX)().map((e=>e.hostname))}),I=()=>M({iterable:x.scripts.keys(),usePathing:!0}),_=()=>M({iterable:x.textFiles.keys(),usePathing:!0}),P=()=>{M({iterable:x.contracts.map((e=>e.fn)),usePathing:!0})},B=()=>{M({iterable:x.messages.filter((e=>e.endsWith(".lit"))),usePathing:!0})},O=()=>{M({iterable:x.messages.filter((e=>e.endsWith(".msg"))),usePathing:!0})},D=()=>{M({iterable:(0,i.XX)().filter((e=>e.backdoorInstalled||x.serversOnNetwork.includes(e.hostname))).map((e=>e.hostname))})},Z=()=>{const e=N.programs.filter((e=>e.endsWith(".exe")));M({iterable:e}),N.isConnectedTo&&E&&M({iterable:e,usePathing:!0})},G=()=>{M({iterable:(0,f.cx)(x),usePathing:!0,ignoreCurrent:!0})},J=1===v,W=2===v;switch(T(),E&&G(),J&&(A(),L(),E&&(I(),Z(),P())),b[0]){case"buy":return R(),C;case"cat":return I(),_(),O(),B(),C;case"cd":case"ls":return W&&!E&&G(),C;case"mem":return W&&I(),C;case"connect":return W&&D(),C;case"cp":case"download":case"mv":return W&&(I(),_()),C;case"help":return W&&M({iterable:Object.keys(l.s),usePathing:!1}),C;case"nano":case"vim":return I(),_(),C;case"scp":return W||F(),I(),_(),B(),C;case"rm":return I(),Z(),B(),_(),P(),C;case"run":if(W)Z(),P(),I();else{const e=await H();e&&M({iterable:e,usePathing:!1})}return C;case"check":case"tail":case"kill":if(W)I();else{const e=await H();e&&M({iterable:e,usePathing:!1})}return C;default:return C}async function H(){let e=b.join(" ");1===v&&(e="run "+e);const t=(0,s.CL)(e);if(0===t.length)return;const a=(0,s.$4)(t[t.length-1]),r=(0,h.L6)(String(a[1]),n);if(!r)return;if(r.endsWith(".script"))return;const o=x.scripts.get(r);if(!o)return;let l;try{l=await(0,c.M)(o,x.scripts)}catch(e){return}if(!l||!l.autocomplete)return;const f={"--tail":Boolean,"-t":Number},d=m(f,{permissive:!0,argv:a.slice(2)}),p=(0,u.v)(d._),g={servers:(0,i.XX)().map((e=>e.hostname)),scripts:[...x.scripts.keys()],txts:[...x.textFiles.keys()],flags:e=>{if(!Array.isArray(e))throw new Error("flags require an array of array");k=e.map((e=>{if(!Array.isArray(e))throw new Error("flags require an array of array");return 1===e[0].length?"-"+e[0]:"--"+e[0]}));try{return p(e)}catch(e){return{}}}};let y=[],k=[];const w=l.autocomplete(g,d._);if(!Array.isArray(w))throw new Error("autocomplete did not return list of strings");return y=y.concat(w.map((e=>String(e)))),y.concat(k)}}},83530:(e,t,n)=>{"use strict";n.d(t,{E:()=>s});var a=n(67294),r=n(81138),o=n(88775),i=n(65065);function s(){return(0,o.S)(200),a.createElement(r.Z,{color:"primary"},i.o.action&&i.o.getProgressText())}},1944:(e,t,n)=>{"use strict";n.d(t,{i:()=>b});var a=n(67294),r=n(81138),o=n(77541),i=n(73327),s=n(28881),l=n(62937),c=n(66351),u=n(81055),m=n(65065),f=n(49173),h=n(35968),d=n(51087),p=n(49802);const g=(0,o.Z)((e=>(0,i.Z)({textfield:{margin:e.spacing(0)},input:{backgroundColor:e.colors.backgroundprimary},nopadding:{padding:e.spacing(0)},preformatted:{margin:e.spacing(0)},list:{padding:e.spacing(0),height:"100%"},absolute:{margin:e.spacing(0),position:"absolute",bottom:"5px",opacity:"0.75",maxWidth:"100%",whiteSpace:"pre",overflow:"hidden",pointerEvents:"none"}})));let y="";function b(){const e=(0,a.useRef)(null),[t,n]=(0,a.useState)(y),[o,i]=(0,a.useState)(),[b,v]=(0,a.useState)([]),[k,w]=(0,a.useState)([]),[E,S]=(0,a.useState)(0),[C,x]=(0,a.useState)(!1),N=g();function M(e,t){y=e,n(e),t&&i({postUpdate:t})}function A(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];w([]),x(e),S(0)}function T(n){const a=e.current;if(!a)return;const r=t.length,o=a.selectionStart;if(null===o)return;const i=a.value;switch(n){case"backspace":o>0&&o<=r+1&&M(i.substr(0,o-1)+i.substr(o));break;case"deletewordbefore":for(let t=o-1;t>-2;--t)if((i.charAt(t)===u.F.SPACE||-1===t)&&t!==o-1)return void M(i.substr(0,t+1)+i.substr(o),(()=>{const n=e.current;null==n||n.setSelectionRange(t+1,t+1)}));break;case"deletewordafter":for(let n=o+1;n<=t.length+1;++n)if(i.charAt(n)===u.F.SPACE||n===t.length+1)return void M(i.substr(0,o)+i.substr(n+1),(()=>{const t=e.current;null==t||t.setSelectionRange(o,o)}));break;case"clearafter":M(i.substr(0,o));break;case"clearbefore":M(i.substr(o),(()=>L("home")));break;case"clearall":M(""),A()}}function L(n){const a=e.current;if(!a)return;const r=t.length,o=a.selectionStart;if(null!==o)switch(n){case"home":a.setSelectionRange(0,0);break;case"end":a.setSelectionRange(r,r);break;case"prevchar":o>0&&a.setSelectionRange(o-1,o-1);break;case"prevword":for(let e=o-2;e>=0;--e)if(a.value.charAt(e)===u.F.SPACE)return void a.setSelectionRange(e+1,e+1);a.setSelectionRange(0,0);break;case"nextchar":a.setSelectionRange(o+1,o+1);break;case"nextword":for(let e=o+1;e<=r;++e)if(a.value.charAt(e)===u.F.SPACE)return void a.setSelectionRange(e,e);a.setSelectionRange(r,r);break;default:console.warn("Invalid loc argument in Terminal.moveTextCursor()")}}return 0===m.o.commandHistory.length&&f.J5.terminalCommandHistory.length>0&&(m.o.commandHistory=f.J5.terminalCommandHistory,m.o.commandHistoryIndex=m.o.commandHistory.length),(0,a.useEffect)((()=>{null!=o&&o.postUpdate&&(o.postUpdate(),i(null))}),[o]),(0,a.useEffect)((()=>{function t(t){if(m.o.contractOpen)return;if(null!==m.o.action&&t.key===u.F.C&&t.ctrlKey)return void m.o.finishAction(!0);const n=e.current;t.ctrlKey||t.metaKey||t.key===u.F.C&&(t.ctrlKey||t.metaKey)||n&&n.focus()}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)})),a.createElement(a.Fragment,null,a.createElement(c.Z,{fullWidth:!0,color:null===m.o.action?"primary":"secondary",autoFocus:!0,disabled:null!==m.o.action,autoComplete:"off",value:t,classes:{root:N.textfield},onChange:function(e){M(e.target.value),v([]),w([]),x(!1)},inputRef:e,InputProps:{id:"terminal-input",className:N.input,startAdornment:a.createElement(r.Z,{color:null===m.o.action?"primary":"secondary",flexShrink:0},"[",f.J5.getCurrentServer().hostname," /",m.o.cwd(),"]> "),spellCheck:!1,onBlur:()=>{v([]),A()},onKeyDown:async function(n){const a=e.current;if(n.key===u.F.ENTER){n.preventDefault();const e=k.length?k[E]:t;return m.o.print(`[${f.J5.getCurrentServer().hostname} /${m.o.cwd()}]> ${e}`),void(e&&(m.o.executeCommands(e),M(""),A()))}if(n.key===u.F.TAB){if(n.preventDefault(),k.length)return M(k[E]),void A(!0);const e=await(0,h.t)(t,m.o.cwd());if(0===e.length)return;if(w([]),1===e.length)return void M(t.replace(/[^ ]*$/,e[0])+" ");const a=(0,p.n0)(e);M(t.replace(/[^ ]*$/,a)),v(e)}if(n.key===u.F.L&&n.ctrlKey&&(n.preventDefault(),m.o.clear()),n.key===u.F.UP_ARROW||d.Z.EnableBashHotkeys&&n.key===u.F.P&&n.ctrlKey){(d.Z.EnableBashHotkeys||d.Z.EnableHistorySearch&&t)&&n.preventDefault();const e=m.o.commandHistoryIndex,r=m.o.commandHistory.length;if(0==r)return;if(t&&!C&&d.Z.EnableHistorySearch){if(k.length>0)return void S((E+1)%k.length);const e=[...new Set(m.o.commandHistory.filter((e=>null==e?void 0:e.startsWith(t))).reverse())];return void(e.length&&w(e))}(e<0||e>r)&&(m.o.commandHistoryIndex=r),0!=e&&--m.o.commandHistoryIndex,M(m.o.commandHistory[m.o.commandHistoryIndex]),A(!0),a&&setTimeout((function(){a.selectionStart=a.selectionEnd=1e4}),10)}if(n.key===u.F.DOWN_ARROW||d.Z.EnableBashHotkeys&&n.key===u.F.M&&n.ctrlKey){if(d.Z.EnableBashHotkeys&&n.preventDefault(),k.length>0)return void S(0===E?k.length-1:E-1);const e=m.o.commandHistoryIndex,t=m.o.commandHistory.length;if(0==t)return;(e<0||e>t)&&(m.o.commandHistoryIndex=t),e==t||e==t-1?(m.o.commandHistoryIndex=t,M(""),A()):(++m.o.commandHistoryIndex,M(m.o.commandHistory[m.o.commandHistoryIndex]),A(!0))}n.key===u.F.ESC&&k.length&&A(),d.Z.EnableBashHotkeys&&(n.code===u.P.C&&n.ctrlKey&&a&&a.selectionStart===a.selectionEnd&&(n.preventDefault(),m.o.print(`[${f.J5.getCurrentServer().hostname} /${m.o.cwd()}]> ${t}`),T("clearall")),n.code===u.P.A&&n.ctrlKey&&(n.preventDefault(),L("home")),n.code===u.P.E&&n.ctrlKey&&(n.preventDefault(),L("end")),n.code===u.P.B&&n.ctrlKey&&(n.preventDefault(),L("prevchar")),n.code===u.P.B&&n.altKey&&(n.preventDefault(),L("prevword")),n.code===u.P.F&&n.ctrlKey&&(n.preventDefault(),L("nextchar")),n.code===u.P.F&&n.altKey&&(n.preventDefault(),L("nextword")),n.code!==u.P.H&&n.code!==u.P.D||!n.ctrlKey||(T("backspace"),n.preventDefault()),n.code===u.P.W&&n.ctrlKey&&(n.preventDefault(),T("deletewordbefore")),n.code===u.P.D&&n.altKey&&(n.preventDefault(),T("deletewordafter")),n.code===u.P.U&&n.ctrlKey&&(n.preventDefault(),T("clearbefore")),n.code===u.P.K&&n.ctrlKey&&(n.preventDefault(),T("clearafter")))}}}),a.createElement(l.Z,{open:b.length>0,anchorEl:e.current,placement:"top",sx:{maxWidth:"75%"}},a.createElement(s.Z,{sx:{m:1,p:2}},a.createElement(r.Z,{classes:{root:N.preformatted},color:"primary",paragraph:!1},"Possible autocomplete candidates:"),a.createElement(r.Z,{classes:{root:N.preformatted},color:"primary",paragraph:!1},b.join(" ")))),a.createElement(r.Z,{classes:{root:N.absolute},color:"primary",paragraph:!1},function(){const e=`[${f.J5.getCurrentServer().hostname} /${m.o.cwd()}]> ${t}`.length;return Array(e).fill(" ")}(),(k[E]??"").substring(t.length)))}},55482:(e,t,n)=>{"use strict";n.d(t,{F:()=>S});var a=n(67294),r=n(81138),o=n(97212),i=n(10848),s=n(39401),l=n(77541),c=n(73327),u=n(30120),m=n(96486),f=n.n(m),h=n(86142),d=n(65065),p=n(1944),g=n(68028),y=n(37334),b=n(51020),v=n(86378),k=n(88775),w=n(83530);const E=(0,l.Z)((e=>(0,c.Z)({nopadding:{padding:e.spacing(0)},preformatted:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),width:"100%"},list:{padding:e.spacing(0),height:"100%",width:"100%"}})));function S(){const e=(0,a.useRef)(null),t=(0,k.S)(),[n,l]=(0,a.useState)(0);function c(){const t=e.current;if(null!==t)return window.setTimeout((()=>t.scrollIntoView(!0)),50)}(0,a.useEffect)((()=>{const e=f().debounce((async()=>t()),25,{maxWait:50}),n=g.t.subscribe(e);return()=>{e.cancel(),n()}}),[t]),(0,a.useEffect)((()=>{const e=f().debounce((async()=>l((e=>e+1))),25,{maxWait:50}),t=g.m.subscribe(e);return()=>{e.cancel(),t()}}),[]),c(),(0,a.useEffect)((()=>{let e;const t=setTimeout((()=>{e=c()??0}),50);return()=>{clearTimeout(t),clearTimeout(e)}}),[]);const m=E();return a.createElement(a.Fragment,null,a.createElement(u.Z,{width:"100%",minHeight:"100vh",display:"flex",alignItems:"flex-end"},a.createElement(o.Z,{key:n,id:"terminal",classes:{root:m.list}},d.o.outputHistory.map(((e,t)=>a.createElement(i.ZP,{key:t,classes:{root:m.nopadding}},e instanceof h.r_&&a.createElement(v.m,{text:e.text,color:e.color}),e instanceof h.Jm&&a.createElement(r.Z,{classes:{root:m.preformatted},paragraph:!1},e.raw),e instanceof h.rU&&a.createElement(r.Z,{classes:{root:m.preformatted}},e.dashes,a.createElement(s.Z,{onClick:()=>d.o.connectToServer(e.hostname)},e.hostname))))),null!==d.o.action&&a.createElement(i.ZP,{classes:{root:m.nopadding}},a.createElement(w.E,null)," ")),a.createElement("div",{ref:e})),a.createElement(u.Z,{position:"sticky",bottom:0,width:"100%",px:0},a.createElement(p.i,null)),a.createElement(y.Z,null),a.createElement(b.W,null))}},73741:(e,t,n)=>{"use strict";n.d(t,{w:()=>o});var a=n(39463),r=n(94515);class o{get content(){return this.text}set content(e){this.text=e}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default.txt",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.filename=e,this.text=t}append(e){this.text+=e}download(){const e=new Blob([this.text],{type:"text/plain"}),t=document.createElement("a"),n=URL.createObjectURL(e);t.href=n,t.download=this.filename,document.body.appendChild(t),t.click(),setTimeout((()=>{document.body.removeChild(t),window.URL.revokeObjectURL(n)}),0)}read(){return this.text}show(){(0,a.X)(`${this.filename}\n\n${this.text}`)}toJSON(){return(0,r.L3)("TextFile",this)}write(e){this.text=e}deleteFromServer(e){return!!e.textFiles.has(this.filename)&&(e.textFiles.delete(this.filename),!0)}static fromJSON(e){return(0,r.Id)(o,e.data)}}r.gY.TextFile=o},15975:(e,t,n)=>{"use strict";n.d(t,{j:()=>a});const a={lineHeight:1.5,fontFamily:"Lucida Console, Lucida Sans Unicode, Fira Mono, Consolas, Courier New, Courier, monospace, Times New Roman"}},18746:(e,t,n)=>{"use strict";n.d(t,{H:()=>o,u:()=>r});var a=n(26571);const r={...a.Default.colors},o=()=>({...a})},82694:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Dark Blue",description:"Very dark with a blue/purplelly primary",credit:"Saynt_Garmo",reference:"https://discord.com/channels/415207508303544321/921991895230611466/923084732718264340",screenshot:n(58233),colors:{primarylight:"#023DDE",primary:"#4A41C8",primarydark:"#005299",successlight:"#00FF00",success:"#D1DAD1",successdark:"#BFCABF",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#040505",white:"#fff",black:"#000000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#091419",backgroundsecondary:"#000000",button:"#000000"}}},90603:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Dark+",credit:"LoganMD",description:"VSCode Dark+",reference:"https://discord.com/channels/415207508303544321/921991895230611466/921999975867617310",screenshot:n(82345),colors:{primarylight:"#E0E0BC",primary:"#CCCCAE",primarydark:"#B8B89C",successlight:"#00F000",success:"#00D200",successdark:"#00B400",errorlight:"#F00000",error:"#C80000",errordark:"#A00000",secondarylight:"#B4AEAE",secondary:"#969090",secondarydark:"#787272",warninglight:"#F0F000",warning:"#C8C800",warningdark:"#A0A000",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#1E1E1E",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#1E1E1E",backgroundsecondary:"#252525",button:"#333"}}},87789:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Default-lite",description:"Less eye-straining default theme",credit:"NmuGmu",reference:"https://discord.com/channels/415207508303544321/921991895230611466/925263801564151888",screenshot:n(97565),colors:{primarylight:"#28CF28",primary:"#21A821",primarydark:"#177317",successlight:"#1CFF1C",success:"#16CA16",successdark:"#0D910D",errorlight:"#FF3B3B",error:"#C32D2D",errordark:"#8E2121",secondarylight:"#B3B3B3",secondary:"#838383",secondarydark:"#676767",warninglight:"#FFFF3A",warning:"#C3C32A",warningdark:"#8C8C1E",infolight:"#64CBFF",info:"#3399CC",infodark:"#246D91",welllight:"#404040",well:"#1C1C1C",white:"#C3C3C3",black:"#0A0B0B",hp:"#C62E2E",money:"#D6BB27",hack:"#ADFF2F",combat:"#E8EDCD",cha:"#8B5FAF",int:"#537CC8",rep:"#E8EDCD",disabled:"#5AB5A5",backgroundprimary:"#0C0D0E",backgroundsecondary:"#121415",button:"#252829"}}},2296:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Default",description:"Default game theme, most supported",credit:"hydroflame",screenshot:n(55653),colors:{primarylight:"#0f0",primary:"#0c0",primarydark:"#090",successlight:"#0f0",success:"#0c0",successdark:"#090",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#000",backgroundsecondary:"#000",button:"#333"}}},975:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Discord-like",description:"Discord inspired theme",credit:"Thermite",reference:"https://discord.com/channels/415207508303544321/921991895230611466/924305252017143818",screenshot:n(21246),colors:{primarylight:"#7389DC",primary:"#7389DC",primarydark:"#5964F1",successlight:"#00CC00",success:"#20DF20",successdark:"#0CB80C",errorlight:"#EA5558",error:"#EC4145",errordark:"#E82528",secondarylight:"#C3C3C3",secondary:"#9C9C9C",secondarydark:"#4E4E4E",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#1C4FB3",welllight:"#999999",well:"#35383C",white:"#FFFFFF",black:"#202225",hp:"#FF5656",money:"#43FF43",hack:"#FFAB3D",combat:"#8A90FD",cha:"#FF51D9",int:"#6495ed",rep:"#FFFF30",disabled:"#474B51",backgroundprimary:"#2F3136",backgroundsecondary:"#35393E",button:"#333"}}},75759:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Dracula",description:"Dracula Look-alike",credit:"H3draut3r",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922296307836678144",screenshot:n(67456),colors:{primarylight:"#7082B8",primary:"#F8F8F2",primarydark:"#FF79C6",successlight:"#0f0",success:"#0c0",successdark:"#090",errorlight:"#FD4545",error:"#FF2D2D",errordark:"#C62424",secondarylight:"#AAA",secondary:"#8BE9FD",secondarydark:"#666",warninglight:"#FFC281",warning:"#FFB86C",warningdark:"#E6A055",infolight:"#A0A0FF",info:"#7070FF",infodark:"#4040FF",welllight:"#44475A",well:"#363948",white:"#fff",black:"#282A36",hp:"#D34448",money:"#50FA7B",hack:"#F1FA8C",combat:"#BD93F9",cha:"#FF79C6",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#282A36",backgroundsecondary:"#21222C",button:"#21222C"}}},26571:(e,t,n)=>{"use strict";n.r(t),n.d(t,{DarkBlue:()=>f.Q,DarkPlus:()=>s.Q,Default:()=>a.Q,DefaultLite:()=>r.Q,DiscordLike:()=>h.Q,Dracula:()=>m.Q,IronMan:()=>y.Q,Light:()=>g.Q,MayukaiDark:()=>l.Q,Monokai:()=>o.Q,MutedGoldBlue:()=>p.Q,OneDark:()=>d.Q,Purple:()=>c.Q,SmoothGreen:()=>u.Q,Warmer:()=>i.Q,Zerenity:()=>b.Q});var a=n(2296),r=n(87789),o=n(53891),i=n(54312),s=n(90603),l=n(52259),c=n(32478),u=n(30993),m=n(75759),f=n(82694),h=n(975),d=n(40034),p=n(67990),g=n(99445),y=n(91646),b=n(73133)},91646:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Iron Man",credit:"Matti#2942",description:"Mark 42. Threw a little hot rod red in there.",reference:"https://discord.com/channels/415207508303544321/921991895230611466/1069233364927787089",screenshot:n(89204),colors:{primarylight:"#FFFEFC",primary:"#FFA95E",primarydark:"#E8BC71",successlight:"#00FF00",success:"#0c0",successdark:"#090",errorlight:"#FF0B0B",error:"#FF0000",errordark:"#770000",secondarylight:"#FFC596",secondary:"#DA3F3F",secondarydark:"#6E1D1D",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#FFFFFF",info:"#B6E9FF",infodark:"#5596CF",welllight:"#8A2121",well:"#350000",white:"#fff",black:"#000",hp:"#FF4E4E",money:"#C2F26F",hack:"#D5FFB2",combat:"#E39C5A",cha:"#CA4444",int:"#6495ed",rep:"#E39C5A",disabled:"#3C0C0C",backgroundprimary:"#2C0707",backgroundsecondary:"#551212",button:"#8A2121"}}},99445:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Light",description:"Cobbled Together Light Theme",credit:"matt",reference:"https://discord.com/channels/415207508303544321/921991895230611466/926114005456658432",screenshot:n(9657),colors:{primarylight:"#535353",primary:"#1A1A1A",primarydark:"#0d0d0d",successlight:"#63c439",success:"#428226",successdark:"#2E5A1B",errorlight:"#df7051",error:"#C94824",errordark:"#91341B",secondarylight:"#b3b3b3",secondary:"#9B9B9B",secondarydark:"#7A7979",warninglight:"#e8d464",warning:"#C6AD20",warningdark:"#9F8A16",infolight:"#6299cf",info:"#3778B7",infodark:"#30689C",welllight:"#f9f9f9",well:"#eaeaea",white:"#F7F7F7",black:"#F7F7F7",hp:"#BF5C41",money:"#E1B121",hack:"#47BC38",combat:"#656262",cha:"#A568AC",int:"#889BCF",rep:"#656262",disabled:"#70B4BF",backgroundprimary:"#F7F7F7",backgroundsecondary:"#f9f9f9",button:"#eaeaea"}}},52259:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Mayukai Dark",description:"Mayukai Dark-esque",credit:"Festive Noire",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922037502334889994",screenshot:n(6683),colors:{primarylight:"#DDDFC5",primary:"#CDCFB6",primarydark:"#9D9F8C",successlight:"#00EF00",success:"#00A500",successdark:"#007A00",errorlight:"#F92672",error:"#CA1C5C",errordark:"#90274A",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#D3D300",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#00010A",white:"#fff",black:"#020509",hp:"#dd3434",money:"#ffd700",hack:"#8CCF27",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#080C11",backgroundsecondary:"#03080F",button:"#00010A"}}},53891:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Monokai'ish",description:"Monokai'ish",credit:"eltea",screenshot:n(99425),colors:{primarylight:"#FFF",primary:"#F8F8F2",primarydark:"#FAFAEB",successlight:"#ADE146",success:"#A6E22E",successdark:"#98E104",errorlight:"#FF69A0",error:"#F92672",errordark:"#D10F56",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#E1D992",warning:"#E6DB74",warningdark:"#EDDD54",infolight:"#92E1F1",info:"#66D9EF",infodark:"#31CDED",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#F92672",money:"#E6DB74",hack:"#A6E22E",combat:"#75715E",cha:"#AE81FF",int:"#66D9EF",rep:"#E69F66",disabled:"#66cfbc",backgroundprimary:"#272822",backgroundsecondary:"#1B1C18",button:"#333"}}},67990:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Muted Gold & Blue",description:"Muted gold with blue accents.",credit:"Sloth",reference:"https://discord.com/channels/415207508303544321/921991895230611466/924672660758208563",screenshot:n(95519),colors:{primarylight:"#E3B54A",primary:"#CAA243",primarydark:"#7E6937",successlight:"#82FF82",success:"#6FDA6F",successdark:"#64C364",errorlight:"#FD5555",error:"#D84A4A",errordark:"#AC3939",secondarylight:"#D8D0B8",secondary:"#B1AA95",secondarydark:"#736E5E",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#111111",white:"#fff",black:"#070300",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#0A0A0E",backgroundsecondary:"#0E0E10",button:"#222222"}}},40034:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"One Dark",description:"Dark with a greenish tint",credit:"Dexalt142",reference:"https://discord.com/channels/415207508303544321/921991895230611466/924650660694208512",screenshot:n(90407),colors:{primarylight:"#98C379",primary:"#98C379",primarydark:"#98C379",successlight:"#98C379",success:"#98C379",successdark:"#98C379",errorlight:"#E06C75",error:"#BE5046",errordark:"#BE5046",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#E5C07B",warning:"#E5C07B",warningdark:"#D19A66",infolight:"#61AFEF",info:"#61AFEF",infodark:"#61AFEF",welllight:"#4B5263",well:"#282C34",white:"#ABB2BF",black:"#282C34",hp:"#E06C75",money:"#E5C07B",hack:"#98C379",combat:"#ABB2BF",cha:"#C678DD",int:"#61AFEF",rep:"#ABB2BF",disabled:"#56B6C2",backgroundprimary:"#282C34",backgroundsecondary:"#21252B",button:"#4B5263"}}},32478:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Purple",credit:"zer0ney",description:"Essentially all defaults except for purple replacing the main colors",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922091815849570395",screenshot:n(37581),colors:{primarylight:"#BA55D3",primary:"#9370DB",primarydark:"#8A2BE2",successlight:"#BA55D3",success:"#9370DB",successdark:"#8A2BE2",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#000",backgroundsecondary:"#000",button:"#333"}}},30993:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Smooth Green",description:"A nice green theme that doesn't hurt your eyes.",credit:"Swidt",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922243957986033725",screenshot:n(76525),colors:{primarylight:"#E0E0BC",primary:"#B0D9A3",primarydark:"#B8B89C",successlight:"#00F000",success:"#6BC16B",successdark:"#00B400",errorlight:"#F00000",error:"#3D713D",errordark:"#A00000",secondarylight:"#B4AEAE",secondary:"#8FAF85",secondarydark:"#787272",warninglight:"#F0F000",warning:"#38F100",warningdark:"#A0A000",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#2F3C2B",white:"#fff",black:"#1E1E1E",hp:"#dd3434",money:"#4AA52E",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#35A135",disabled:"#66cfbc",backgroundprimary:"#1E1E1E",backgroundsecondary:"#252525",button:"#2F3C2B"}}},54312:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Warmer",credit:"hexnaught",description:"Warmer, softer theme",reference:"https://discord.com/channels/415207508303544321/921991895230611466/921999581020028938",screenshot:n(33855),colors:{primarylight:"#EA9062",primary:"#DD7B4A",primarydark:"#D3591C",successlight:"#6ACF6A",success:"#43BF43",successdark:"#3E913E",errorlight:"#C15757",error:"#B34141",errordark:"#752525",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#E6E69D",warning:"#DADA56",warningdark:"#A1A106",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#AD84CF",int:"#6495ed",rep:"#faffdf",disabled:"#76C6B7",backgroundprimary:"#000",backgroundsecondary:"#000",button:"#333"}}},73133:(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});const a={name:"Zerenity",description:"Calm purple and grey theme with some bright colors subtly popping up.",credit:"Zelow",reference:"https://discord.com/channels/415207508303544321/921991895230611466/1137934426832130168",screenshot:n(41458),colors:{primarylight:"#9B9BFF",primary:"#9B9BFF",primarydark:"#7373D7",successlight:"#32FF32",success:"#00FF00",successdark:"#00CD00",errorlight:"#FF3232",error:"#FF0000",errordark:"#CD0000",secondarylight:"#9B9BE1",secondary:"#9B9BB9",secondarydark:"#373755",warninglight:"#FFFF32",warning:"#FFFF00",warningdark:"#CDCD00",infolight:"#5A9BFF",info:"#3C7DFF",infodark:"#2869CD",welllight:"#444",well:"#111111",white:"#FFFFFF",black:"#000000",hp:"#FF1B1B",money:"#FFEE33",hack:"#00FF00",combat:"#F2FFFC",cha:"#893BC8",int:"#3179FF",rep:"#EDDEFF",disabled:"#515164",backgroundprimary:"#191919",backgroundsecondary:"#111011",button:"#232337"}}},20331:(e,t,n)=>{"use strict";n.d(t,{D:()=>l});var a=n(67294),r=n(56798),o=n(17575),i=n(92777),s=n(95317);function l(){const[e,t]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,a.createElement(o.Z,{title:"The style editor allows you to modify certain CSS rules used by the game."},a.createElement(r.Z,{startIcon:a.createElement(i.Z,null),onClick:()=>t(!0)},"Style Editor")),a.createElement(s.l,{open:e,onClose:()=>t(!1)}))}},95317:(e,t,n)=>{"use strict";n.d(t,{l:()=>b});var a=n(67294),r=n(48672),o=n(56798),i=n(34265),s=n(81138),l=n(28881),c=n(66351),u=n(64459),m=n(66818),f=n(10425),h=n(51087),d=n(15975),p=n(17575);function g(e){let{value:t,onChange:n}=e;const[r,o]=(0,a.useState)(),[i,s]=(0,a.useState)(t);return a.createElement(c.Z,{sx:{my:1},label:"Font-Family",error:!!r,value:i,helperText:r,onChange:e=>(e=>{const t=e?"":"Must have a value";s(e),o(t),n(e,t)})(e.target.value),fullWidth:!0})}function y(e){let{value:t,onChange:n}=e;const[r,o]=(0,a.useState)(),[i,s]=(0,a.useState)(t);return a.createElement(c.Z,{sx:{my:1},label:"Line Height",error:!!r,value:i,helperText:r,onChange:e=>(e=>{const t=e?isNaN(Number(e))?"Must be a number":"":"Must have a value";s(e),o(t),n(e,t)})(e.target.value)})}function b(e){const[t,n]=(0,a.useState)(),[c,b]=(0,a.useState)({...h.Z.styles});function v(e){Object.assign(h.Z.styles,e),f.bS.emit()}function k(e,t){n(t),t||b(e)}return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(s.Z,{variant:"h6"},"Styles Editor"),a.createElement(s.Z,null,"WARNING: Changing styles ",a.createElement("strong",null,"may mess up")," the interface. Drastic changes are"," ",a.createElement("strong",null,"NOT recommended"),"."),a.createElement(l.Z,{sx:{p:2,my:2}},a.createElement(g,{value:c.fontFamily,onChange:(e,t)=>k({...c,fontFamily:e??""},t)}),a.createElement("br",null),a.createElement(y,{value:c.lineHeight,onChange:(e,t)=>k({...c,lineHeight:Number(e)??0},t)}),a.createElement("br",null),a.createElement(i.Z,{sx:{my:1}},a.createElement(o.Z,{onClick:function(){const e={...d.j};b(e),v(e)},startIcon:a.createElement(u.Z,null),color:"secondary",variant:"outlined"},"Revert to Defaults"),a.createElement(p.Z,{title:"Save styles to settings"},a.createElement(o.Z,{onClick:function(){v(c)},endIcon:a.createElement(m.Z,null),color:t?"error":"primary",disabled:!!t},"Save Modifications")))))}},10425:(e,t,n)=>{"use strict";n.d(t,{On:()=>f,Rl:()=>m,bS:()=>c});var a=n(67294),r=n(21969),o=n(94810),i=n(61817),s=n(13342),l=n(51087);const c=new s.v;let u;function m(){var e;u=(0,r.Z)({colors:{hp:l.Z.theme.hp,money:l.Z.theme.money,hack:l.Z.theme.hack,combat:l.Z.theme.combat,cha:l.Z.theme.cha,int:l.Z.theme.int,rep:l.Z.theme.rep,backgroundprimary:l.Z.theme.backgroundprimary,backgroundsecondary:l.Z.theme.backgroundsecondary,button:l.Z.theme.button,successlight:l.Z.theme.successlight,success:l.Z.theme.success,successdark:l.Z.theme.successdark,white:l.Z.theme.white,black:l.Z.theme.black},palette:{primary:{light:l.Z.theme.primarylight,main:l.Z.theme.primary,dark:l.Z.theme.primarydark},secondary:{light:l.Z.theme.secondarylight,main:l.Z.theme.secondary,dark:l.Z.theme.secondarydark},error:{light:l.Z.theme.errorlight,main:l.Z.theme.error,dark:l.Z.theme.errordark},info:{light:l.Z.theme.infolight,main:l.Z.theme.info,dark:l.Z.theme.infodark},warning:{light:l.Z.theme.warninglight,main:l.Z.theme.warning,dark:l.Z.theme.warningdark},success:{light:l.Z.theme.successlight,main:l.Z.theme.success,dark:l.Z.theme.successdark},background:{default:l.Z.theme.backgroundprimary,paper:l.Z.theme.well},action:{disabled:l.Z.theme.disabled}},typography:{fontFamily:l.Z.styles.fontFamily,button:{textTransform:"none"}},components:{MuiInputBase:{styleOverrides:{root:{backgroundColor:l.Z.theme.well,color:l.Z.theme.primary},input:{"&::placeholder":{userSelect:"none",color:l.Z.theme.primarydark}}}},MuiInput:{styleOverrides:{root:{backgroundColor:l.Z.theme.well,borderBottomColor:"#fff"},underline:{"&:hover":{borderBottomColor:l.Z.theme.primarydark},"&:before":{borderBottomColor:l.Z.theme.primary},"&:after":{borderBottomColor:l.Z.theme.primarylight}}}},MuiInputLabel:{styleOverrides:{root:{color:l.Z.theme.primarydark,userSelect:"none","&:before":{color:l.Z.theme.primarylight}}}},MuiButtonGroup:{styleOverrides:{root:{"& .MuiButton-root:not(:last-of-type)":{marginRight:"1px"}}}},MuiButton:{styleOverrides:{root:{backgroundColor:l.Z.theme.button,border:"1px solid "+l.Z.theme.well,"&:hover":{backgroundColor:l.Z.theme.backgroundsecondary},borderRadius:0}}},MuiSelect:{styleOverrides:{icon:{color:l.Z.theme.primary}},defaultProps:{variant:"standard"}},MuiTextField:{defaultProps:{variant:"standard"}},MuiTypography:{defaultProps:{color:"primary"},styleOverrides:{root:{lineHeight:l.Z.styles.lineHeight}}},MuiMenu:{styleOverrides:{list:{backgroundColor:l.Z.theme.well}}},MuiMenuItem:{styleOverrides:{root:{color:l.Z.theme.primary}}},MuiAccordionSummary:{styleOverrides:{root:{backgroundColor:"#111"}}},MuiAccordionDetails:{styleOverrides:{root:{backgroundColor:l.Z.theme.backgroundsecondary}}},MuiIconButton:{styleOverrides:{root:{color:l.Z.theme.primary}}},MuiTooltip:{styleOverrides:{tooltip:{fontSize:"1em",color:l.Z.theme.primary,backgroundColor:l.Z.theme.well,borderRadius:0,border:"2px solid white",maxWidth:"100vh"}},defaultProps:{disableInteractive:!0}},MuiSlider:{styleOverrides:{valueLabel:{color:l.Z.theme.primary,backgroundColor:l.Z.theme.well}}},MuiDrawer:{styleOverrides:{paper:{"&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none",backgroundColor:l.Z.theme.backgroundsecondary},paperAnchorDockedLeft:{borderRight:"1px solid "+l.Z.theme.welllight}}},MuiDivider:{styleOverrides:{root:{backgroundColor:l.Z.theme.welllight}}},MuiFormControlLabel:{styleOverrides:{root:{color:l.Z.theme.primary}}},MuiSwitch:{styleOverrides:{switchBase:{color:l.Z.theme.primarydark},track:{backgroundColor:l.Z.theme.welllight}}},MuiPaper:{styleOverrides:{root:{borderRadius:0,backgroundColor:l.Z.theme.backgroundsecondary,border:"1px solid "+l.Z.theme.welllight}}},MuiTablePagination:{styleOverrides:{select:{color:l.Z.theme.primary},selectLabel:{color:l.Z.theme.primary},displayedRows:{color:l.Z.theme.primary}}},MuiTab:{styleOverrides:{textColorPrimary:{color:l.Z.theme.secondary,"&.Mui-selected":{color:l.Z.theme.primary}},root:{backgroundColor:l.Z.theme.backgroundsecondary,border:"1px solid "+l.Z.theme.well,margin:"3px","&.Mui-selected":{backgroundColor:l.Z.theme.button}}}},MuiTabs:{styleOverrides:{scrollButtons:{backgroundColor:l.Z.theme.backgroundsecondary,color:l.Z.theme.secondary,margin:"3px",opacity:1,width:"fit-content","&.Mui-disabled":{opacity:.5}}},defaultProps:{TabIndicatorProps:{style:{display:"none"}}}},MuiAlert:{styleOverrides:{root:{backgroundColor:l.Z.theme.black,borderRadius:0,border:"1px solid "+l.Z.theme.well},standardSuccess:{color:l.Z.theme.successlight},standardError:{color:l.Z.theme.errorlight},standardWarning:{color:l.Z.theme.warninglight},standardInfo:{color:l.Z.theme.infolight}}}}}),document.body.style.backgroundColor=(null===(e=u.colors.backgroundprimary)||void 0===e?void 0:e.toString())??"black"}m();const f=e=>{let{children:t}=e;return a.createElement(o.Z,{injectFirst:!0},a.createElement(i.Z,{theme:u},t))}},11590:(e,t,n)=>{"use strict";n.d(t,{C:()=>k});var a=n(67294),r=n(81138),o=n(28881),i=n(10425),s=n(51087),l=n(18746),c=n(56798),u=n(30120),m=n(34265),f=n(31288),h=n(20331),d=n(89231),p=n(43524),g=n(48672),y=n(32369),b=n(33244);let v=0;function k(){const[e,t]=(0,a.useState)(!1),[n,k]=(0,a.useState)(),w=(0,l.H)(),E=w&&Object.entries(w).map((e=>{let[t,n]=e;return a.createElement(d.R,{key:t,theme:n,onActivated:()=>function(e){v=window.scrollY;const t={...s.Z.theme};Object.assign(s.Z.theme,e.colors),i.bS.emit(),y.sC.emit(a.createElement(a.Fragment,null,'Updated theme to "',a.createElement("strong",null,e.name),'"',a.createElement(c.Z,{sx:{ml:1},color:"secondary",size:"small",onClick:()=>{Object.assign(s.Z.theme,t),i.bS.emit()}},"UNDO")),b.ToastVariant.INFO,3e4)}(n),onImageClick:S})}))||a.createElement(a.Fragment,null);function S(e){v=window.scrollY,k(e),t(!0)}return(0,a.useEffect)((()=>{requestAnimationFrame((()=>window.scrollTo(0,v)))})),a.createElement(u.Z,{sx:{mx:2}},a.createElement(r.Z,{variant:"h4"},"Theme Browser"),a.createElement(o.Z,{sx:{px:2,py:1,my:1}},a.createElement(p.G,null),a.createElement(m.Z,{sx:{mb:2,display:"block"}},a.createElement(f.T,null),a.createElement(h.D,null)),a.createElement(u.Z,{sx:{display:"flex",flexWrap:"wrap"}},E),a.createElement(g.u,{open:e,onClose:function(){v=window.scrollY,t(!1)}},a.createElement("img",{src:n,style:{width:"100%"}}))))}},43524:(e,t,n)=>{"use strict";n.d(t,{G:()=>i});var a=n(67294),r=n(81138),o=n(39401);function i(){return a.createElement(a.Fragment,null,a.createElement(r.Z,{sx:{my:1}},"If you've created a theme that you believe should be added in game's theme browser, feel free to"," ",a.createElement(o.Z,{href:"https://github.com/bitburner-official/bitburner-src/tree/dev/src/Themes/README.md",target:"_blank"},"create a pull request"),"."),a.createElement(r.Z,{sx:{my:1}},"Head over to the"," ",a.createElement(o.Z,{href:"https://discord.com/channels/415207508303544321/921991895230611466",target:"_blank"},"theme-sharing")," ","discord channel for more."))}},31288:(e,t,n)=>{"use strict";n.d(t,{T:()=>l});var a=n(67294),r=n(56798),o=n(17575),i=n(40729),s=n(14534);function l(){const[e,t]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,a.createElement(o.Z,{title:"The theme editor allows you to modify the colors the game uses."},a.createElement(r.Z,{id:"bb-theme-editor-button",startIcon:a.createElement(s.Z,null),onClick:()=>t(!0)},"Theme Editor")),a.createElement(i.y,{open:e,onClose:()=>t(!1)}))}},40729:(e,t,n)=>{"use strict";n.d(t,{y:()=>S});var a=n(67294),r=n(48672),o=n(56798),i=n(34265),s=n(81138),l=n(17575),c=n(28881),u=n(66351),m=n(92557),f=n(64459),h=n(83519),d=n(32457),p=n(63638),g=n(10425),y=n(51087),b=n(18746),v=n(52947),k=n(24815),w=n(43524);function E(e){let{name:t,onColorChange:n,color:r,defaultColor:o}=e;return void 0===r&&(console.error(`color ${t} was undefined, reverting to default`),r=o),a.createElement(a.Fragment,null,a.createElement(u.Z,{sx:{mx:1},label:t,value:r,InputProps:{startAdornment:a.createElement(a.Fragment,null,a.createElement(p.zH,{hideTextfield:!0,deferred:!0,value:r,onChange:e=>n(t,"#"+e.hex),disableAlpha:!0})),endAdornment:a.createElement(a.Fragment,null,a.createElement(m.Z,{onClick:()=>n(t,o)},a.createElement(f.Z,{color:"primary"})))}}))}function S(e){const[t,n]=(0,a.useState)({...y.Z.theme});function m(e,t){n((n=>(n[e]=t,n))),y.Z.theme[e]=t,g.bS.emit()}return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(c.Z,{sx:{px:1,py:1,my:1}},a.createElement(l.Z,{open:!0,placement:"top",title:a.createElement(s.Z,null,"Example tooltip")},a.createElement(o.Z,{color:"primary",size:"small"},"primary button")),a.createElement(o.Z,{color:"secondary",size:"small"},"secondary button"),a.createElement(o.Z,{color:"warning",size:"small"},"warning button"),a.createElement(o.Z,{color:"info",size:"small"},"info button"),a.createElement(o.Z,{color:"error",size:"small"},"error button"),a.createElement(o.Z,{disabled:!0,size:"small"},"disabled button"),a.createElement("br",null),a.createElement(s.Z,{color:"primary",variant:"caption"},"text with primary color")," ",a.createElement(s.Z,{color:"secondary",variant:"caption"},"text with secondary color")," ",a.createElement(s.Z,{color:"error",variant:"caption"},"text with error color"),a.createElement("br",null),a.createElement(u.Z,{value:"Text field",size:"small"})),a.createElement(c.Z,{sx:{py:1,my:1}},a.createElement(E,{name:"primarylight",onColorChange:m,color:t.primarylight,defaultColor:b.u.primarylight}),a.createElement(E,{name:"primary",onColorChange:m,color:t.primary,defaultColor:b.u.primary}),a.createElement(E,{name:"primarydark",onColorChange:m,color:t.primarydark,defaultColor:b.u.primarydark}),a.createElement("br",null),a.createElement(E,{name:"successlight",onColorChange:m,color:t.successlight,defaultColor:b.u.successlight}),a.createElement(E,{name:"success",onColorChange:m,color:t.success,defaultColor:b.u.success}),a.createElement(E,{name:"successdark",onColorChange:m,color:t.successdark,defaultColor:b.u.successdark}),a.createElement("br",null),a.createElement(E,{name:"errorlight",onColorChange:m,color:t.errorlight,defaultColor:b.u.errorlight}),a.createElement(E,{name:"error",onColorChange:m,color:t.error,defaultColor:b.u.error}),a.createElement(E,{name:"errordark",onColorChange:m,color:t.errordark,defaultColor:b.u.errordark}),a.createElement("br",null),a.createElement(E,{name:"secondarylight",onColorChange:m,color:t.secondarylight,defaultColor:b.u.secondarylight}),a.createElement(E,{name:"secondary",onColorChange:m,color:t.secondary,defaultColor:b.u.secondary}),a.createElement(E,{name:"secondarydark",onColorChange:m,color:t.secondarydark,defaultColor:b.u.secondarydark}),a.createElement("br",null),a.createElement(E,{name:"warninglight",onColorChange:m,color:t.warninglight,defaultColor:b.u.warninglight}),a.createElement(E,{name:"warning",onColorChange:m,color:t.warning,defaultColor:b.u.warning}),a.createElement(E,{name:"warningdark",onColorChange:m,color:t.warningdark,defaultColor:b.u.warningdark}),a.createElement("br",null),a.createElement(E,{name:"infolight",onColorChange:m,color:t.infolight,defaultColor:b.u.infolight}),a.createElement(E,{name:"info",onColorChange:m,color:t.info,defaultColor:b.u.info}),a.createElement(E,{name:"infodark",onColorChange:m,color:t.infodark,defaultColor:b.u.infodark}),a.createElement("br",null),a.createElement(E,{name:"welllight",onColorChange:m,color:t.welllight,defaultColor:b.u.welllight}),a.createElement(E,{name:"well",onColorChange:m,color:t.well,defaultColor:b.u.well}),a.createElement(E,{name:"white",onColorChange:m,color:t.white,defaultColor:b.u.white}),a.createElement(E,{name:"black",onColorChange:m,color:t.black,defaultColor:b.u.black}),a.createElement(E,{name:"backgroundprimary",onColorChange:m,color:t.backgroundprimary,defaultColor:b.u.backgroundprimary}),a.createElement(E,{name:"backgroundsecondary",onColorChange:m,color:t.backgroundsecondary,defaultColor:b.u.backgroundsecondary}),a.createElement(E,{name:"button",onColorChange:m,color:t.button,defaultColor:b.u.button}),a.createElement("br",null),a.createElement(E,{name:"hp",onColorChange:m,color:t.hp,defaultColor:b.u.hp}),a.createElement(E,{name:"money",onColorChange:m,color:t.money,defaultColor:b.u.money}),a.createElement(E,{name:"hack",onColorChange:m,color:t.hack,defaultColor:b.u.hack}),a.createElement(E,{name:"combat",onColorChange:m,color:t.combat,defaultColor:b.u.combat}),a.createElement(E,{name:"cha",onColorChange:m,color:t.cha,defaultColor:b.u.cha}),a.createElement(E,{name:"int",onColorChange:m,color:t.int,defaultColor:b.u.int}),a.createElement(E,{name:"rep",onColorChange:m,color:t.rep,defaultColor:b.u.rep}),a.createElement(E,{name:"disabled",onColorChange:m,color:t.disabled,defaultColor:b.u.disabled})),a.createElement(c.Z,{sx:{px:1,py:1,my:1}},a.createElement(u.Z,{sx:{mb:1},multiline:!0,fullWidth:!0,maxRows:10,label:"import / export theme",value:JSON.stringify(t,void 0,2),onChange:function(e){try{const t=JSON.parse(e.target.value);if("object"!=typeof t)return;n(t);for(const e of Object.keys(t))y.Z.theme[e]=t[e];g.bS.emit()}catch(e){}}}),a.createElement(a.Fragment,null,a.createElement(s.Z,{sx:{my:1}},"Backup your theme or share it with others by copying the string above."),a.createElement(w.G,null),a.createElement(i.Z,null,a.createElement(l.Z,{title:"Reverts all modification back to the default theme. This is permanent."},a.createElement(o.Z,{onClick:()=>{!function(e){n(e),Object.assign(y.Z.theme,e),g.bS.emit()}(b.u)},startIcon:a.createElement(d.Z,null)},"Revert to Default")),a.createElement(l.Z,{title:"Move over to the theme browser's page to use one of our predefined themes."},a.createElement(o.Z,{startIcon:a.createElement(h.Z,null),onClick:()=>v.F.toPage(k.T3.ThemeBrowser)},"See more themes"))))))}},89231:(e,t,n)=>{"use strict";n.d(t,{R:()=>d});var a=n(67294),r=n(81138),o=n(17575),i=n(83519),s=n(51087),l=n(54278),c=n(69774),u=n(56798),m=n(39401),f=n(72213),h=n(59677);function d(e){let{theme:t,onActivated:n,onImageClick:d}=e;return t?a.createElement(l.Z,{key:t.screenshot,sx:{width:400,mr:1,mb:1}},a.createElement(c.Z,{action:a.createElement(o.Z,{title:"Use this theme"},a.createElement(u.Z,{startIcon:a.createElement(i.Z,null),onClick:n,variant:"outlined"},"Use")),title:t.name,subheader:a.createElement(a.Fragment,null,"by ",t.credit," ",t.reference&&a.createElement(a.Fragment,null,"(",a.createElement(m.Z,{href:t.reference,target:"_blank"},"ref"),")")),sx:{color:s.Z.theme.primary,"& .MuiCardHeader-subheader":{color:s.Z.theme.secondarydark},"& .MuiButton-outlined":{backgroundColor:"transparent"}}}),a.createElement(f.Z,{component:"img",width:"400",image:t.screenshot,alt:`Theme Screenshot of "${t.name}"`,sx:{borderTop:`1px solid ${s.Z.theme.welllight}`,borderBottom:`1px solid ${s.Z.theme.welllight}`,cursor:"zoom-in"},onClick:()=>d(t.screenshot)}),a.createElement(h.Z,null,a.createElement(r.Z,{variant:"body2",color:"text.secondary",sx:{color:s.Z.theme.primarydark}},t.description))):a.createElement(a.Fragment,null)}},46277:(e,t,n)=>{"use strict";n.d(t,{N:()=>r});var a=n(63230),r=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.sourceCode=e,this.sourceCodeLineOffset=n,"string"==typeof e&&(e=a.Qc(e,r.PARSE_OPTIONS)),this.ast=e,this.initFunc_=t,this.paused_=!1,this.polyfills_=[],this.functionCounter_=0,this.stepFunctions_=Object.create(null);var o,i,s=/^step([A-Z]\w*)$/;for(var l in this)"function"==typeof this[l]&&(o=l.match(s))&&(this.stepFunctions_[o[1]]=this[l].bind(this));this.global=this.createScope(this.ast,null),this.ast=a.Qc(this.polyfills_.join("\n"),r.PARSE_OPTIONS),this.polyfills_=void 0,this.stripLocations_(this.ast,void 0,void 0),(i=new r.State(this.ast,this.global)).done=!1,this.stateStack=[i],this.run(),this.value=void 0,this.ast=e,(i=new r.State(this.ast,this.global)).done=!1,this.stateStack.length=0,this.stateStack[0]=i,this.nodeConstructor=i.node.constructor,this.stateStack=this.stateStack};r.PARSE_OPTIONS={ecmaVersion:5,locations:!0},r.READONLY_DESCRIPTOR={configurable:!0,enumerable:!0,writable:!1},r.NONENUMERABLE_DESCRIPTOR={configurable:!0,enumerable:!1,writable:!0},r.READONLY_NONENUMERABLE_DESCRIPTOR={configurable:!0,enumerable:!1,writable:!1},r.VARIABLE_DESCRIPTOR={configurable:!1,enumerable:!0,writable:!0},r.STEP_ERROR={},r.SCOPE_REFERENCE={},r.VALUE_IN_DESCRIPTOR={},r.toStringCycles_=[],r.prototype.getErrorLineNumber=function(e){var t=this.sourceCode;if(null==e||null==e.start)return NaN;try{return((t=t.substring(0,e.start)).match(/\n/g)||[]).length+1-this.sourceCodeLineOffset}catch(e){return NaN}},r.prototype.getErrorLineNumberMessage=function(e){return isNaN(e)?" (Unknown line number)":e<=0?" (Error occurred in an imported function)":" (Line Number "+e+". This line number is probably incorrect if your script is importing any functions. This is being worked on)"},r.prototype.appendCode=function(e){var t=this.stateStack[0];if(!t||"Program"!==t.node.type)throw Error("Expecting original AST to start with a Program node.");if("string"==typeof e&&(e=a.Qc(e,r.PARSE_OPTIONS)),!e||"Program"!==e.type)throw Error("Expecting new AST to start with a Program node.");this.populateScope_(e,t.scope);for(var n,o=0;n=e.body[o];o++)t.node.body.push(n);t.done=!1},r.prototype.step=function(){var e=this.stateStack,t=e[e.length-1];if(!t)return!1;var n=t.node,a=n.type;if("Program"===a&&t.done)return!1;if(this.paused_)return!0;try{var o=this.stepFunctions_[a](e,t,n)}catch(e){if(e!==r.STEP_ERROR)throw e}return o&&e.push(o),!!n.end||this.step()},r.prototype.run=function(){for(;!this.paused_&&this.step(););return this.paused_},r.prototype.initGlobalScope=function(e){this.setProperty(e,"NaN",NaN,r.READONLY_DESCRIPTOR),this.setProperty(e,"Infinity",1/0,r.READONLY_DESCRIPTOR),this.setProperty(e,"undefined",void 0,r.READONLY_DESCRIPTOR),this.setProperty(e,"window",e,r.READONLY_DESCRIPTOR),this.setProperty(e,"this",e,r.READONLY_DESCRIPTOR),this.setProperty(e,"self",e),this.OBJECT_PROTO=new r.Object(null),this.FUNCTION_PROTO=new r.Object(this.OBJECT_PROTO),this.initFunction(e),this.initObject(e),e.proto=this.OBJECT_PROTO,this.setProperty(e,"constructor",this.OBJECT,r.NONENUMERABLE_DESCRIPTOR),this.initArray(e),this.initString(e),this.initBoolean(e),this.initNumber(e),this.initDate(e),this.initRegExp(e),this.initError(e),this.initMath(e),this.initJSON(e);var t=this,n=this.createNativeFunction((function(e){throw EvalError("Can't happen")}),!1);n.eval=!0,this.setProperty(e,"eval",n),this.setProperty(e,"parseInt",this.createNativeFunction(parseInt,!1)),this.setProperty(e,"parseFloat",this.createNativeFunction(parseFloat,!1)),this.setProperty(e,"isNaN",this.createNativeFunction(isNaN,!1)),this.setProperty(e,"isFinite",this.createNativeFunction(isFinite,!1));for(var a=[[escape,"escape"],[unescape,"unescape"],[decodeURI,"decodeURI"],[decodeURIComponent,"decodeURIComponent"],[encodeURI,"encodeURI"],[encodeURIComponent,"encodeURIComponent"]],o=0;o>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O && !callbackfn.call(T, O[k], k, O)) return false;","k++;","}","return true;","}","});","Object.defineProperty(Array.prototype, 'filter',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var res = [];","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t) {","var val = t[i];","if (fun.call(thisArg, val, i, t)) res.push(val);","}","}","return res;","}","});","if (!Array.prototype.find) {","Object.defineProperty(Array.prototype, 'find', {","value: function(predicate) {","if (this == null) {","throw new TypeError('\"this\" is null or not defined');","}","var o = Object(this);","var len = o.length >>> 0;","if (typeof predicate !== 'function') {","throw new TypeError('predicate must be a function');","}","var thisArg = arguments[1];","var k = 0;","while (k < len) {","var kValue = o[k];","if (predicate.call(thisArg, kValue, k, o)) {","return kValue;","}","k++;","}","return undefined;","},","configurable: true,","writable: true","});","}","if (!Array.prototype.findIndex) {","Object.defineProperty(Array.prototype, 'findIndex', {","value: function(predicate) {","if (this == null) {","throw new TypeError('\"this\" is null or not defined');","}","var o = Object(this);","var len = o.length >>> 0;","if (typeof predicate !== 'function') {","throw new TypeError('predicate must be a function');","}","var thisArg = arguments[1];","var k = 0;","while (k < len) {","var kValue = o[k];","if (predicate.call(thisArg, kValue, k, o)) {","return k;","}","k++;","}","return -1;","},","configurable: true,","writable: true","});","}","Object.defineProperty(Array.prototype, 'forEach',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') throw TypeError();","var T, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O) callback.call(T, O[k], k, O);","k++;","}","}","});","Object.defineProperty(Array.prototype, 'includes', {","value: function(searchElement, fromIndex) {","if (this == null) {","throw new TypeError('\"this\" is null or not defined');","}","// 1. Let O be ? ToObject(this value).","var o = Object(this);",'// 2. Let len be ? ToLength(? Get(O, "length")).',"var len = o.length >>> 0;","// 3. If len is 0, return false.","if (len === 0) {","return false;","}","// 4. Let n be ? ToInteger(fromIndex).","// (If fromIndex is undefined, this step produces the value 0.)","var n = fromIndex | 0;","// 5. If n ≥ 0, then","// a. Let k be n.","// 6. Else n < 0,","// a. Let k be len + n.","// b. If k < 0, let k be 0.","var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);","function sameValueZero(x, y) {","return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));","}","// 7. Repeat, while k < len","while (k < len) {","// a. Let elementK be the result of ? Get(O, ! ToString(k)).","// b. If SameValueZero(searchElement, elementK) is true, return true.","if (sameValueZero(o[k], searchElement)) {","return true;","}","// c. Increase k by 1. ","k++;","}","// 8. Return false","return false;","}","});","Object.defineProperty(Array.prototype, 'map',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') new TypeError;","var T, A, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","A = new Array(len);","k = 0;","while (k < len) {","if (k in O) A[k] = callback.call(T, O[k], k, O);","k++;","}","return A;","}","});","Object.defineProperty(Array.prototype, 'reduce',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (!this || typeof callback !== 'function') throw TypeError();","var t = Object(this), len = t.length >>> 0, k = 0, value;","if (arguments.length === 2) {","value = arguments[1];","} else {","while (k < len && !(k in t)) k++;","if (k >= len) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k++];","}","for (; k < len; k++) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'reduceRight',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();","var t = Object(this), len = t.length >>> 0, k = len - 1, value;","if (arguments.length >= 2) {","value = arguments[1];","} else {","while (k >= 0 && !(k in t)) k--;","if (k < 0) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k--];","}","for (; k >= 0; k--) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'some',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (!this || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t && fun.call(thisArg, t[i], i, t)) {","return true;","}","}","return false;","}","});","(function() {","var sort_ = Array.prototype.sort;","Array.prototype.sort = function(opt_comp) {","if (typeof opt_comp !== 'function') {","return sort_.call(this);","}","for (var i = 0; i < this.length; i++) {","var changes = 0;","for (var j = 0; j < this.length - i - 1; j++) {","if (opt_comp(this[j], this[j + 1]) > 0) {","var swap = this[j];","this[j] = this[j + 1];","this[j + 1] = swap;","changes++;","}","}","if (!changes) break;","}","return this;","};","})();","Object.defineProperty(Array.prototype, 'toLocaleString',","{configurable: true, writable: true, value:","function() {","var out = [];","for (var i = 0; i < this.length; i++) {","out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();","}","return out.join(',');","}","});","")},r.prototype.initString=function(e){var t,n=this;t=function(e){return e=String(e),n.calledWithNew()?(this.data=e,this):e},this.STRING=this.createNativeFunction(t,!0),this.setProperty(e,"String",this.STRING),this.setProperty(this.STRING,"fromCharCode",this.createNativeFunction(String.fromCharCode,!1),r.NONENUMERABLE_DESCRIPTOR);for(var a=["charAt","charCodeAt","concat","indexOf","lastIndexOf","slice","substr","substring","toLocaleLowerCase","toLocaleUpperCase","toLowerCase","toUpperCase","trim"],o=0;o= 0; i--) {","str = str.substring(0, subs[i][0]) + subs[i][2] + str.substring(subs[i][0] + subs[i][1]);","}","} else {","var i = str.indexOf(substr);","if (i !== -1) {","var inject = newSubstr(str.substr(i, substr.length), i, str);","str = str.substring(0, i) + inject + str.substring(i + substr.length);","}","}","return str;","};","})();","if (!String.prototype.endsWith) {","String.prototype.endsWith = function(search, this_len) {","if (this_len === undefined || this_len > this.length) {","this_len = this.length;","}","return this.substring(this_len - search.length, this_len) === search;","};","}","if (!String.prototype.includes) {","String.prototype.includes = function(search, start) {","'use strict';","if (typeof start !== 'number') {","start = 0;","}"," ","if (start + search.length > this.length) {","return false;","} else {","return this.indexOf(search, start) !== -1;","}","};","}","if (!String.prototype.startsWith) {","String.prototype.startsWith = function(search, pos) {","return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;","};","}","")},r.prototype.initBoolean=function(e){var t,n=this;t=function(e){return e=Boolean(e),n.calledWithNew()?(this.data=e,this):e},this.BOOLEAN=this.createNativeFunction(t,!0),this.setProperty(e,"Boolean",this.BOOLEAN)},r.prototype.initNumber=function(e){var t,n=this;t=function(e){return e=Number(e),n.calledWithNew()?(this.data=e,this):e},this.NUMBER=this.createNativeFunction(t,!0),this.setProperty(e,"Number",this.NUMBER);for(var a=["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"],o=0;o>>0;return t===Number(e)?t:NaN},r.legalArrayIndex=function(e){var t=e>>>0;return String(t)===String(e)&&4294967295!==t?t:NaN},r.Value,r.Object=function(e){this.getter=Object.create(null),this.setter=Object.create(null),this.properties=Object.create(null),this.proto=e},r.Object.prototype.proto=null,r.Object.prototype.isObject=!0,r.Object.prototype.class="Object",r.Object.prototype.data=null,r.Object.prototype.toString=function(){if("Array"===this.class){(a=r.toStringCycles_).push(this);try{for(var e=[],t=0;t3&&void 0!==arguments[3]?arguments[3]:"";return function(e){if(e===r.Completion.NORMAL)throw TypeError("Should not unwind for NORMAL completions");for(var i=a.stateStack;i.length>0;i.pop()){var s=i[i.length-1];switch(s.node.type){case"TryStatement":return void(s.cv={type:e,value:t,label:n});case"CallExpression":case"NewExpression":if(e===r.Completion.RETURN)return void(s.value=t);if(e!==r.Completion.THROW)throw Error("Unsynatctic break/continue not rejected by Acorn")}if(e===r.Completion.BREAK){if(n?s.labels&&-1!==s.labels.indexOf(n):s.isLoop||s.isSwitch)return void i.pop()}else if(e===r.Completion.CONTINUE&&(n?s.labels&&-1!==s.labels.indexOf(n):s.isLoop))return}var l;if(a.isa(t,a.ERROR)){var c={EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError},u=a.getProperty(t,"name").toString(),m=a.getProperty(t,"message").valueOf();l=(e=c[u]||Error)(m+o)}else l=String(t)+o;throw l}(e)},r.prototype.createGetter_=function(e,t){var n=Array.isArray(t)?t[0]:t,a=new this.nodeConstructor;a.type="CallExpression";var o=new r.State(a,this.stateStack[this.stateStack.length-1].scope);return o.doneCallee_=!0,o.funcThis_=n,o.func_=e,o.doneArgs_=!0,o.arguments_=[],o},r.prototype.createSetter_=function(e,t,n){var a=Array.isArray(t)?t[0]:this.global,o=new this.nodeConstructor;o.type="CallExpression";var i=new r.State(o,this.stateStack[this.stateStack.length-1].scope);return i.doneCallee_=!0,i.funcThis_=a,i.func_=e,i.doneArgs_=!0,i.arguments_=[n],i},r.State=function(e,t){this.node=e,this.scope=t},r.prototype.stepArrayExpression=function(e,t,n){var a=n.elements,o=t.n_||0;for(t.array_?(this.setProperty(t.array_,o,t.value),o++):(t.array_=this.createObjectProto(this.ARRAY_PROTO),t.array_.properties.length=a.length);o>=":s>>=l;break;case">>>=":s>>>=l;break;case"&=":s&=l;break;case"^=":s^=l;break;case"|=":s|=l;break;default:throw SyntaxError("Unknown assignment expression: "+n.operator)}var c=this.setValue(t.leftReference_,s);if(c)return t.doneSetter_=!0,t.setterValue_=s,this.createSetter_(c,t.leftReference_,s);e.pop(),e[e.length-1].value=s},r.prototype.stepBinaryExpression=function(e,t,n){if(!t.doneLeft_)return t.doneLeft_=!0,new r.State(n.left,t.scope);if(!t.doneRight_)return t.doneRight_=!0,t.leftValue_=t.value,new r.State(n.right,t.scope);e.pop();var a,o=t.leftValue_,i=t.value;switch(n.operator){case"==":a=o==i;break;case"!=":a=o!=i;break;case"===":a=o===i;break;case"!==":a=o!==i;break;case">":a=o>i;break;case">=":a=o>=i;break;case"<":a=o>":a=o>>i;break;case">>>":a=o>>>i;break;case"in":if(!i||!i.isObject){let e=this.getErrorLineNumber(n);this.throwException(this.TYPE_ERROR,"'in' expects an object, not '"+i+"'",e)}a=this.hasProperty(i,o);break;case"instanceof":if(!this.isa(i,this.FUNCTION)){let e=this.getErrorLineNumber(n);this.throwException(this.TYPE_ERROR,"Right-hand side of instanceof is not an object",e)}a=!!o.isObject&&this.isa(o,i);break;default:throw SyntaxError("Unknown binary operator: "+n.operator)}e[e.length-1].value=a},r.prototype.stepBlockStatement=function(e,t,n){var a=t.n_||0,o=n.body[a];if(o)return t.n_=a+1,new r.State(o,t.scope);e.pop()},r.prototype.stepBreakStatement=function(e,t,n){var a=n.label&&n.label.name;this.unwind(r.Completion.BREAK,void 0,a)},r.prototype.stepCallExpression=function(e,t,n){if(!t.doneCallee_){t.doneCallee_=1;var o=new r.State(n.callee,t.scope);return o.components=!0,o}if(1===t.doneCallee_){t.doneCallee_=2;var i=t.value;if(Array.isArray(i)){if(t.func_=this.getValue(i,n),i[0]===r.SCOPE_REFERENCE?t.directEval_="eval"===i[1]:t.funcThis_=i[0],(i=t.func_)&&"object"==typeof i&&i.isGetter)return i.isGetter=!1,t.doneCallee_=1,this.createGetter_(i,t.value)}else t.func_=i;t.arguments_=[],t.n_=0}if(i=t.func_,!t.doneArgs_){if(0!==t.n_&&t.arguments_.push(t.value),n.arguments[t.n_])return new r.State(n.arguments[t.n_++],t.scope);if("NewExpression"===n.type){if(i.illegalConstructor){let e=this.getErrorLineNumber(n);this.throwException(this.TYPE_ERROR,i+" is not a constructor",e)}var s=i.properties.prototype;"object"==typeof s&&null!==s||(s=this.OBJECT_PROTO),t.funcThis_=this.createObjectProto(s),t.isConstructor=!0}else void 0===t.funcThis_&&(t.funcThis_=t.scope.strict?void 0:this.global);t.doneArgs_=!0}if(t.doneExec_)e.pop(),t.isConstructor&&"object"!=typeof t.value?e[e.length-1].value=t.funcThis_:e[e.length-1].value=t.value;else{if(t.doneExec_=!0,!i||!i.isObject){let e=this.getErrorLineNumber(n);this.throwException(this.TYPE_ERROR,i+" is not a function",e)}var l=i.node;if(l){for(var c=this.createScope(l.body,i.parentScope),u=0;uu?t.arguments_[u]:void 0;this.setProperty(c,m,f)}var h=this.createObjectProto(this.ARRAY_PROTO);for(u=0;u{"use strict";n.d(t,{P:()=>o});class a{constructor(e,t,n){this.set(e,t,n)}toString(){return`rgb(${Math.round(this.r)}, ${Math.round(this.g)}, ${Math.round(this.b)})`}set(e,t,n){this.r=this.clamp(e),this.g=this.clamp(t),this.b=this.clamp(n)}hueRotate(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=e/180*Math.PI;const t=Math.sin(e),n=Math.cos(e);this.multiply([.213+.787*n-.213*t,.715-.715*n-.715*t,.072-.072*n+.928*t,.213-.213*n+.143*t,.715+.285*n+.14*t,.072-.072*n-.283*t,.213-.213*n-.787*t,.715-.715*n+.715*t,.072+.928*n+.072*t])}grayscale(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.multiply([.2126+.7874*(1-e),.7152-.7152*(1-e),.0722-.0722*(1-e),.2126-.2126*(1-e),.7152+.2848*(1-e),.0722-.0722*(1-e),.2126-.2126*(1-e),.7152-.7152*(1-e),.0722+.9278*(1-e)])}sepia(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.multiply([.393+.607*(1-e),.769-.769*(1-e),.189-.189*(1-e),.349-.349*(1-e),.686+.314*(1-e),.168-.168*(1-e),.272-.272*(1-e),.534-.534*(1-e),.131+.869*(1-e)])}saturate(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.multiply([.213+.787*e,.715-.715*e,.072-.072*e,.213-.213*e,.715+.285*e,.072-.072*e,.213-.213*e,.715-.715*e,.072+.928*e])}multiply(e){const t=this.clamp(this.r*e[0]+this.g*e[1]+this.b*e[2]),n=this.clamp(this.r*e[3]+this.g*e[4]+this.b*e[5]),a=this.clamp(this.r*e[6]+this.g*e[7]+this.b*e[8]);this.r=t,this.g=n,this.b=a}brightness(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.linear(e)}contrast(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.linear(e,-.5*e+.5)}linear(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.r=this.clamp(this.r*e+255*t),this.g=this.clamp(this.g*e+255*t),this.b=this.clamp(this.b*e+255*t)}invert(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.r=this.clamp(255*(e+this.r/255*(1-2*e))),this.g=this.clamp(255*(e+this.g/255*(1-2*e))),this.b=this.clamp(255*(e+this.b/255*(1-2*e)))}hsl(){const e=this.r/255,t=this.g/255,n=this.b/255,a=Math.max(e,t,n),r=Math.min(e,t,n);let o,i,s=(a+r)/2;if(a===r)o=i=0;else{const l=a-r;switch(i=s>.5?l/(2-a-r):l/(a+r),a){case e:o=(t-n)/l+(t255?e=255:e<0&&(e=0),e}}class r{constructor(e){this.target=e,this.targetHSL=e.hsl(),this.reusedColor=new a(0,0,0)}solve(){const e=this.solveNarrow(this.solveWide());return{values:e.values,loss:e.loss,filter:this.css(e.values)}}solveWide(){const e=[60,180,18e3,600,1.2,1.2];let t={loss:1/0};for(let n=0;t.loss>25&&n<3;n++){const n=[50,20,3750,50,100,100],a=this.spsa(5,e,15,n,1e3);a.loss.5?1:-1,l[e]=a[e]+r*s[e],c[e]=a[e]-r*s[e];const f=this.loss(l)-this.loss(c);for(let n=0;n<6;n++){const o=f/(2*r)*s[n],i=t[n]/Math.pow(e+m+1,1);a[n]=u(a[n]-i*o,n)}const h=this.loss(a);hn?e%=n:e<0&&(e=n+e%n):e<0?e=0:e>n&&(e=n),e}}loss(e){const t=this.reusedColor;t.set(0,0,0),t.invert(e[0]/100),t.sepia(e[1]/100),t.saturate(e[2]/100),t.hueRotate(3.6*e[3]),t.brightness(e[4]/100),t.contrast(e[5]/100);const n=t.hsl();return Math.abs(t.r-this.target.r)+Math.abs(t.g-this.target.g)+Math.abs(t.b-this.target.b)+Math.abs(n.h-this.targetHSL.h)+Math.abs(n.s-this.targetHSL.s)+Math.abs(n.l-this.targetHSL.l)}css(e){function t(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.round(e[t]*n)}return`invert(${t(0)}%) sepia(${t(1)}%) saturate(${t(2)}%) hue-rotate(${t(3,3.6)}deg) brightness(${t(4)}%) contrast(${t(5)}%)`}}function o(e){const t=function(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,((e,t,n,a)=>t+t+n+n+a+a));const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null}(e);if(!t)return"";const[n,o,i]=t,s=new a(n,o,i);return new r(s).solve().filter}},7165:(e,t,n)=>{"use strict";n.d(t,{X:()=>r,z:()=>a});class a extends Set{toJSON(){return{ctor:"JSONSet",data:Array.from(this)}}static fromJSON(e){return new a(e.data)}}class r extends Map{toJSON(){return{ctor:"JSONMap",data:Array.from(this)}}static fromJSON(e){return new r(e.data)}}},21623:(e,t,n)=>{"use strict";n.d(t,{KW:()=>s,R3:()=>a,cD:()=>i,m0:()=>o,nd:()=>r});const a=Object.values,r=Object.keys,o=Object.entries,i=Object.fromEntries;function s(e,t){return i(Object.values(e).map((e=>[e,t(e)])))}Object.fromEntries},473:(e,t,n)=>{"use strict";function a(e){return/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e)}n.d(t,{O:()=>a})},91893:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});var a=n(23122);function r(){window.addEventListener("unhandledrejection",(e=>{e.preventDefault(),(0,a.ac)(e.reason,null,"UNCAUGHT PROMISE ERROR\nYou forgot to await a promise\nmaybe hack / grow / weaken ?\n\n")}))}},94337:(e,t,n)=>{"use strict";n.d(t,{LA:()=>v,PZ:()=>y,tG:()=>b});var a=n(67294),r=n(94515),o=n(72938),i=n(22115),s=n(33244),l=n(39463),c=n(72360),u=n(49802),m=n(49173),f=n(97093),h=n(29882),d=n(15485),p=n(51544),g=n(50862);const y={[s.UniversityClassType.computerScience]:{type:s.UniversityClassType.computerScience,youAreCurrently:"studying Computer Science",earnings:(0,d.fC)({hackExp:.5,intExp:.01})},[s.UniversityClassType.dataStructures]:{type:s.UniversityClassType.dataStructures,youAreCurrently:"taking a Data Structures course",earnings:(0,d.fC)({money:-40,hackExp:1,intExp:.01})},[s.UniversityClassType.networks]:{type:s.UniversityClassType.networks,youAreCurrently:"taking a Networks course",earnings:(0,d.fC)({money:-80,hackExp:2,intExp:.01})},[s.UniversityClassType.algorithms]:{type:s.UniversityClassType.algorithms,youAreCurrently:"taking an Algorithms course",earnings:(0,d.fC)({money:-320,hackExp:4,intExp:.01})},[s.UniversityClassType.management]:{type:s.UniversityClassType.management,youAreCurrently:"taking a Management course",earnings:(0,d.fC)({money:-160,chaExp:2,intExp:.01})},[s.UniversityClassType.leadership]:{type:s.UniversityClassType.leadership,youAreCurrently:"taking a Leadership course",earnings:(0,d.fC)({money:-320,chaExp:4,intExp:.01})},[s.GymType.strength]:{type:s.GymType.strength,youAreCurrently:"training your strength at a gym",earnings:(0,d.fC)({money:-120,strExp:1})},[s.GymType.defense]:{type:s.GymType.defense,youAreCurrently:"training your defense at a gym",earnings:(0,d.fC)({money:-120,defExp:1})},[s.GymType.dexterity]:{type:s.GymType.dexterity,youAreCurrently:"training your dexterity at a gym",earnings:(0,d.fC)({money:-120,dexExp:1})},[s.GymType.agility]:{type:s.GymType.agility,youAreCurrently:"training your agility at a gym",earnings:(0,d.fC)({money:-120,agiExp:1})}},b=e=>null!==e&&e.type===h.C.CLASS;class v extends h.m{earnings=(0,d.fC)();constructor(e){super(h.C.CLASS,(null==e?void 0:e.singularity)??!0),this.classType=(null==e?void 0:e.classType)??s.UniversityClassType.computerScience,this.location=(null==e?void 0:e.location)??s.LocationName.Sector12RothmanUniversity}isGym(){return(0,g.R)("GymType",this.classType)}getClass(){return y[this.classType]}calculateRates(){return(0,f.w4)(m.J5,this.classType,this.location)}process(e){this.cyclesWorked+=e;const t=this.calculateRates(),n=(0,d.SR)(m.J5,t,e,"class");return this.earnings=(0,d.AD)(this.earnings,n),!1}finish(e,t){this.singularity||t||(0,l.X)(a.createElement(a.Fragment,null,"After ",this.getClass().youAreCurrently," for"," ",(0,u.UF)(this.cyclesWorked*o.t.MilliPerCycle),", ",a.createElement("br",null),"you spent a total of ",a.createElement(c.W,{money:-this.earnings.money}),". ",a.createElement("br",null),a.createElement("br",null),"You earned a total of: ",a.createElement("br",null),(0,i.Mf)(this.earnings.hackExp)," hacking exp ",a.createElement("br",null),(0,i.Mf)(this.earnings.strExp)," strength exp ",a.createElement("br",null),(0,i.Mf)(this.earnings.defExp)," defense exp ",a.createElement("br",null),(0,i.Mf)(this.earnings.dexExp)," dexterity exp ",a.createElement("br",null),(0,i.Mf)(this.earnings.agiExp)," agility exp ",a.createElement("br",null),(0,i.Mf)(this.earnings.chaExp)," charisma exp",a.createElement("br",null)))}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,classType:this.classType,location:this.location}}toJSON(){return(0,r.L3)("ClassWork",this)}static fromJSON(e){const t=(0,r.Id)(v,e.data);return t.classType=(0,p.x)(s.UniversityClassType,t.classType)??(0,p.x)(s.GymType,t.classType)??s.UniversityClassType.computerScience,t}}r.gY.ClassWork=v},75522:(e,t,n)=>{"use strict";n.d(t,{d:()=>b,t:()=>v});var a=n(67294),r=n(94515),o=n(49173),i=n(29882),s=n(62734),l=n(33244),c=n(97093),u=n(62586),m=n(15485),f=n(39463),h=n(17365),d=n(72938),p=n(11124),g=n(50862),y=n(82141);const b=e=>null!==e&&e.type===i.C.COMPANY;class v extends i.m{constructor(e){super(i.C.COMPANY,(null==e?void 0:e.singularity)??!1),this.companyName=(null==e?void 0:e.companyName)??l.CompanyName.NoodleBar}getCompany(){return u.O[this.companyName]}getGainRates(e){let t=1;o.J5.hasAugmentation(l.AugmentationName.NeuroreceptorManager,!0)||(t=o.J5.focus?1:d.t.BaseFocusBonus);const n=this.getCompany();return(0,m.U9)((0,c.zP)(o.J5,n,p.A[e],n.favor),t)}process(e){this.cyclesWorked+=e;const t=this.getCompany(),n=o.J5.jobs[this.companyName];if(!n)return!0;const a=this.getGainRates(n);return(0,m.SR)(o.J5,a,e,"work"),t.playerReputation+=a.reputation*e,(0,s.gz)(t,a.reputation,e),!1}finish(e,t){this.singularity||t||(0,f.X)(a.createElement(a.Fragment,null,"You finished working for ",this.companyName,a.createElement("br",null),"You have ",a.createElement(h.Y,{reputation:this.getCompany().playerReputation})," reputation with them."))}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,companyName:this.companyName}}toJSON(){return(0,r.L3)("CompanyWork",this)}static fromJSON(e){const t=(0,r.Id)(v,e.data);return(0,g.R)("CompanyName",t.companyName)?t:(0,y.v)()}}r.gY.CompanyWork=v},95814:(e,t,n)=>{"use strict";n.d(t,{m:()=>h,o:()=>f});var a=n(39463),r=n(94515),o=n(33244),i=n(72938),s=n(49173),l=n(58073),c=n(29882),u=n(46085),m=n(84555);const f=e=>null!==e&&e.type===c.C.CREATE_PROGRAM;class h extends c.m{constructor(e){if(super(c.C.CREATE_PROGRAM,(null==e?void 0:e.singularity)??!0),this.unitCompleted=0,this.programName=(null==e?void 0:e.programName)??o.CompletedProgramName.bruteSsh,e)for(let e=0;e=100)break;this.unitCompleted=a/100*this.unitNeeded(),s.J5.getHomeComputer().programs.splice(e,1)}}}unitNeeded(){var e;return(null===(e=this.getProgram().create)||void 0===e?void 0:e.time)??0}getProgram(){return l.B[this.programName]}process(e){var t;let n=1;s.J5.hasAugmentation(o.AugmentationName.NeuroreceptorManager,!0)||(n=s.J5.focus?1:i.t.BaseFocusBonus);const a=(null===(t=this.getProgram().create)||void 0===t?void 0:t.level)??0;let r=s.J5.skills.hacking/a*(0,u.f)(s.J5.skills.intelligence,3);return r=1+(r-1)/5,r*=n,this.cyclesWorked+=e,this.unitCompleted+=i.t.MilliPerCycle*e*r,this.unitCompleted>=this.unitNeeded()}finish(e,t){const n=(0,m.P1)(this.programName);if(e){if(!s.J5.getHomeComputer().programs.includes(n)){const e=(100*this.unitCompleted/this.unitNeeded()).toFixed(2),t=(0,m.P1)(n+"-"+e+"%-INC");s.J5.getHomeComputer().programs.push(t)}}else{if(s.J5.gainIntelligenceExp(i.t.IntelligenceProgramBaseExpGain*this.cyclesWorked*i.t.MilliPerCycle/1e3),!this.singularity&&!t){const e=[`You've finished creating ${n}!`,"The new program can be found on your home computer."];(0,a.X)(e.join("\n"))}s.J5.getHomeComputer().programs.includes(n)||s.J5.getHomeComputer().programs.push(n)}}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,programName:this.programName}}toJSON(){return(0,r.L3)("CreateProgramWork",this)}static fromJSON(e){return(0,r.Id)(h,e.data)}}r.gY.CreateProgramWork=h},48196:(e,t,n)=>{"use strict";n.d(t,{Q:()=>p,s:()=>d});var a=n(49173),r=n(33244),o=n(94515),i=n(72938),s=n(35100),l=n(35333),c=n(39463),u=n(29882),m=n(15485),f=n(97093),h=n(50862);const d=e=>null!==e&&e.type===u.C.CRIME;class p extends u.m{constructor(e){super(u.C.CRIME,(null==e?void 0:e.singularity)??!0),this.crimeType=(null==e?void 0:e.crimeType)??r.CrimeType.shoplift,this.unitCompleted=0}getCrime(){return l.W[this.crimeType]}process(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.cyclesWorked+=t;const n=(null===(e=Object.values(l.W).find((e=>e.type===this.crimeType)))||void 0===e?void 0:e.time)??0;for(this.unitCompleted+=i.t.MilliPerCycle*t;this.unitCompleted>=n;)this.commit(),this.unitCompleted-=n;return!1}earnings(){return(0,f.jI)(a.J5,this.getCrime())}commit(){const e=this.getCrime();if(null==e)return void(0,c.X)(`ERR: Unrecognized crime type (${this.crimeType}). This is probably a bug please contact the developer`);const t=a.J5.focusPenalty();let n=(0,m.U9)(this.earnings(),t,!1),r=e.karma;(0,s.T)(e.type)?(a.J5.gainMoney(n.money,"crime"),a.J5.numPeopleKilled+=e.kills,a.J5.gainIntelligenceExp(n.intExp)):(n=(0,m.U9)(n,.25),r/=4),a.J5.gainHackingExp(n.hackExp),a.J5.gainStrengthExp(n.strExp),a.J5.gainDefenseExp(n.defExp),a.J5.gainDexterityExp(n.dexExp),a.J5.gainAgilityExp(n.agiExp),a.J5.gainCharismaExp(n.chaExp),a.J5.karma-=r*t}finish(){}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,crimeType:this.crimeType}}toJSON(){return(0,o.L3)("CrimeWork",this)}static fromJSON(e){const t=(0,o.Id)(p,e.data);return t.crimeType=(0,h.m)("CrimeType").fuzzyGetMember(t.crimeType,!0),t}}o.gY.CrimeWork=p},96707:(e,t,n)=>{"use strict";let a,r,o;n.d(t,{A$:()=>o,GK:()=>r,q3:()=>s,rF:()=>i,vD:()=>a}),function(e){e.hacking="hacking",e.field="field",e.security="security"}(a||(a={})),function(e){e.computerScience="Computer Science",e.dataStructures="Data Structures",e.networks="Networks",e.algorithms="Algorithms",e.management="Management",e.leadership="Leadership"}(r||(r={})),function(e){e.strength="str",e.defense="def",e.dexterity="dex",e.agility="agi"}(o||(o={}));const i={...r,...o};let s;!function(e){e.software0="Software Engineering Intern",e.software1="Junior Software Engineer",e.software2="Senior Software Engineer",e.software3="Lead Software Developer",e.software4="Head of Software",e.software5="Head of Engineering",e.software6="Vice President of Technology",e.software7="Chief Technology Officer",e.IT0="IT Intern",e.IT1="IT Analyst",e.IT2="IT Manager",e.IT3="Systems Administrator",e.securityEng="Security Engineer",e.networkEng0="Network Engineer",e.networkEng1="Network Administrator",e.business0="Business Intern",e.business1="Business Analyst",e.business2="Business Manager",e.business3="Operations Manager",e.business4="Chief Financial Officer",e.business5="Chief Executive Officer",e.security0="Security Guard",e.security1="Security Officer",e.security2="Security Supervisor",e.security3="Head of Security",e.agent0="Field Agent",e.agent1="Secret Agent",e.agent2="Special Operative",e.employee="Employee",e.employeePT="Part-time Employee",e.waiter="Waiter",e.waiterPT="Part-time Waiter",e.softwareConsult0="Software Consultant",e.softwareConsult1="Senior Software Consultant",e.businessConsult0="Business Consultant",e.businessConsult1="Senior Business Consultant"}(s||(s={}))},16632:(e,t,n)=>{"use strict";n.d(t,{D:()=>p,s:()=>g});var a=n(67294),r=n(29882),o=n(94515),i=n(49173),s=n(33244),l=n(58427),c=n(15485),u=n(39463),m=n(17365),f=n(72938),h=n(97093),d=n(50862);const p=e=>null!==e&&e.type===r.C.FACTION;class g extends r.m{constructor(e){super(r.C.FACTION,(null==e?void 0:e.singularity)??!0),this.factionWorkType=(null==e?void 0:e.factionWorkType)??s.FactionWorkType.hacking,this.factionName=(null==e?void 0:e.faction)??s.FactionName.Sector12}getFaction(){return l.i[this.factionName]}getReputationRate(){let e=1;return i.J5.hasAugmentation(s.AugmentationName.NeuroreceptorManager,!0)||(e=i.J5.focus?1:f.t.BaseFocusBonus),(0,h.EV)(i.J5,this.factionWorkType,this.getFaction().favor)*e}getExpRates(){let e=1;i.J5.hasAugmentation(s.AugmentationName.NeuroreceptorManager,!0)||(e=i.J5.focus?1:f.t.BaseFocusBonus);const t=(0,h.r0)(i.J5,this.factionWorkType);return(0,c.U9)(t,e,!1)}process(e){this.cyclesWorked+=e,this.getFaction().playerReputation+=this.getReputationRate()*e;const t=this.getExpRates();return(0,c.SR)(i.J5,t,e,"class"),!1}finish(e,t){this.singularity||t||(0,u.X)(a.createElement(a.Fragment,null,"You worked for ",this.getFaction().name,".",a.createElement("br",null),"They now have a total of ",a.createElement(m.Y,{reputation:this.getFaction().playerReputation})," reputation."))}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,factionWorkType:this.factionWorkType,factionName:this.factionName}}toJSON(){return(0,o.L3)("FactionWork",this)}static fromJSON(e){const t=(0,o.Id)(g,e.data);return t.factionWorkType=(0,d.m)("FactionWorkType").fuzzyGetMember(t.factionWorkType,!0),t.factionName=(0,d.m)("FactionName").fuzzyGetMember(t.factionName,!0),t}}o.gY.FactionWork=g},97093:(e,t,n)=>{"use strict";n.d(t,{EV:()=>y,jI:()=>g,r0:()=>b,sk:()=>v,w4:()=>k,zP:()=>w});var a=n(97740),r=n(15485),o=n(72938),i=n(33244),s=n(509),l=n(81881),c=n(49173),u=n(94337),m=n(97467),f=n(16014),h=n(50862);const d=1e3/o.t.MilliPerCycle,p={[i.FactionWorkType.hacking]:(0,r.fC)({hackExp:2}),[i.FactionWorkType.field]:(0,r.fC)({hackExp:1,strExp:1,defExp:1,dexExp:1,agiExp:1,chaExp:1}),[i.FactionWorkType.security]:(0,r.fC)({hackExp:.5,strExp:1.5,defExp:1.5,dexExp:1.5,agiExp:1.5})};function g(e,t){return(0,r.U9)((0,r.Le)((0,r.fC)({money:t.money,hackExp:t.hacking_exp,strExp:t.strength_exp,defExp:t.defense_exp,dexExp:t.dexterity_exp,agiExp:t.agility_exp,chaExp:t.charisma_exp,intExp:t.intelligence_exp}),e.mults,e.mults.crime_money*a.dQ.CrimeMoney),a.dQ.CrimeExpGain,!1)}const y=(e,t,n)=>({[i.FactionWorkType.hacking]:s.He,[i.FactionWorkType.field]:s._h,[i.FactionWorkType.security]:s.Zz}[t](e,n));function b(e,t){return(0,r.U9)((0,r.Le)(p[t],e.mults),a.dQ.FactionWorkExpGain/d)}function v(e,t){const n=f.q.find((e=>e.specialName===t.name)),a=(0,m.WT)(n?n.hostname:"").backdoorInstalled?.9:1;return e.earnings.money*t.costMult*a}function k(e,t,n){const a=c.J5.hashManager,o=u.PZ[t],i=l.t[n],s=(0,h.R)("GymType",t)?a.getTrainingMult():a.getStudyMult(),m=(0,r.Le)((0,r.U9)(o.earnings,i.expMult/d*s,!1),e.mults);return m.money=v(o,i)/d,m}const w=(e,t,n,o)=>{const i=isNaN(o)?1:1+o/100,s=c.J5.sourceFileLvl(11)>0?i:1,l=(0,r.U9)((0,r.Le)({money:n.baseSalary*t.salaryMultiplier*s*a.dQ.CompanyWorkMoney,hackExp:n.hackingExpGain,strExp:n.strengthExpGain,defExp:n.defenseExpGain,dexExp:n.dexterityExpGain,agiExp:n.agilityExpGain,chaExp:n.charismaExpGain},e.mults,e.mults.work_money),t.expMultiplier*a.dQ.CompanyWorkExpGain,!1),u=n.calculateJobPerformance(e);return l.reputation=u*e.mults.company_rep*i,l}},64315:(e,t,n)=>{"use strict";n.d(t,{Y:()=>g,u:()=>p});var a=n(67294),r=n(72938),o=n(33244),i=n(72390),s=n(49173),l=n(29882),c=n(16771),u=n(27889),m=n(39463),f=n(94515),h=n(51278),d=n(73440);const p=e=>null!==e&&e.type===l.C.GRAFTING;class g extends l.m{constructor(e){super(l.C.GRAFTING,(null==e?void 0:e.singularity)??!0),this.unitCompleted=0,this.augmentation=(null==e?void 0:e.augmentation)??o.AugmentationName.Targeting1;const t=(0,i.M)();e&&s.J5.loseMoney(t[this.augmentation].cost,"augmentations")}unitNeeded(){return new h.W(d.x[this.augmentation]).time}process(e){let t=1;return s.J5.hasAugmentation(o.AugmentationName.NeuroreceptorManager,!0)||(t=s.J5.focus?1:r.t.BaseFocusBonus),this.cyclesWorked+=e,this.unitCompleted+=r.t.MilliPerCycle*e*(0,c.hI)()*t,this.unitCompleted>=this.unitNeeded()}finish(e){const t=this.augmentation;e?e&&!this.singularity&&(0,m.X)(a.createElement(a.Fragment,null,"You cancelled the grafting of ",t,".",a.createElement("br",null),"Your money was not returned to you.")):((0,u.kk)({name:t,level:1}),s.J5.hasAugmentation(o.AugmentationName.CongruityImplant,!0)||(s.J5.entropy+=1,s.J5.applyEntropy(s.J5.entropy)),this.singularity||(0,m.X)(a.createElement(a.Fragment,null,"You've finished grafting ",t,".",a.createElement("br",null),"The augmentation has been applied to your body"," ",s.J5.hasAugmentation(o.AugmentationName.CongruityImplant,!0)?".":", but you feel a bit off."))),e||s.J5.gainIntelligenceExp(r.t.IntelligenceGraftBaseExpGain*this.cyclesWorked*r.t.MilliPerCycle/1e4)}APICopy(){return{type:this.type,cyclesWorked:this.cyclesWorked,augmentation:this.augmentation}}toJSON(){return(0,f.L3)("GraftingWork",this)}static fromJSON(e){return(0,f.Id)(g,e.data)}}f.gY.GraftingWork=g},82141:(e,t,n)=>{"use strict";function a(){return null}n.d(t,{v:()=>a})},29882:(e,t,n)=>{"use strict";n.d(t,{C:()=>r,m:()=>a});class a{constructor(e,t){this.type=e,this.singularity=t,this.cyclesWorked=0}}let r;!function(e){e.CRIME="CRIME",e.CLASS="CLASS",e.CREATE_PROGRAM="CREATE_PROGRAM",e.GRAFTING="GRAFTING",e.FACTION="FACTION",e.COMPANY="COMPANY"}(r||(r={}))},15485:(e,t,n)=>{"use strict";n.d(t,{AD:()=>o,Le:()=>c,SR:()=>s,U9:()=>i,fC:()=>r,ki:()=>l});var a=n(49173);const r=e=>({money:(null==e?void 0:e.money)??0,reputation:(null==e?void 0:e.reputation)??0,hackExp:(null==e?void 0:e.hackExp)??0,strExp:(null==e?void 0:e.strExp)??0,defExp:(null==e?void 0:e.defExp)??0,dexExp:(null==e?void 0:e.dexExp)??0,agiExp:(null==e?void 0:e.agiExp)??0,chaExp:(null==e?void 0:e.chaExp)??0,intExp:(null==e?void 0:e.intExp)??0}),o=(e,t)=>({money:e.money+t.money,reputation:e.reputation+t.reputation,hackExp:e.hackExp+t.hackExp,strExp:e.strExp+t.strExp,defExp:e.defExp+t.defExp,dexExp:e.dexExp+t.dexExp,agiExp:e.agiExp+t.agiExp,chaExp:e.chaExp+t.chaExp,intExp:e.intExp+t.intExp}),i=function(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const a=n?t:1;return{money:e.money*a,reputation:e.reputation*t,hackExp:e.hackExp*t,strExp:e.strExp*t,defExp:e.defExp*t,dexExp:e.dexExp*t,agiExp:e.agiExp*t,chaExp:e.chaExp*t,intExp:e.intExp*t}},s=(e,t,n,r)=>{const o=l(e,t,n),i={money:t.money*n,reputation:0,hackExp:o.hackExp,strExp:o.strExp,defExp:o.defExp,dexExp:o.dexExp,agiExp:o.agiExp,chaExp:o.chaExp,intExp:o.intExp};return a.J5.gainMoney(i.money,r),i},l=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const a=i(t,n,!1);return a.money=0,a.reputation=0,e.gainHackingExp(a.hackExp),e.gainStrengthExp(a.strExp),e.gainDefenseExp(a.defExp),e.gainDexterityExp(a.dexExp),e.gainAgilityExp(a.agiExp),e.gainCharismaExp(a.chaExp),e.gainIntelligenceExp(a.intExp),a};function c(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{money:(e.money??0)*n,reputation:(e.reputation??0)*a,hackExp:(e.hackExp??0)*t.hacking_exp,strExp:(e.strExp??0)*t.strength_exp,defExp:(e.defExp??0)*t.defense_exp,dexExp:(e.dexExp??0)*t.dexterity_exp,agiExp:(e.agiExp??0)*t.agility_exp,chaExp:(e.chaExp??0)*t.charisma_exp,intExp:e.intExp??0}}},45628:(e,t,n)=>{"use strict";n.d(t,{X:()=>m});var a=n(92666),r=n(84874),o=n(30058),i=n(31375),s=n(72326);function l(e){let t=e;return t.startsWith("[")&&(t=t.slice(1)),t.endsWith("]")&&(t=t.slice(0,-1)),t}function c(e){let t=e;return(t.startsWith('"')||t.startsWith("'"))&&(t=t.slice(1)),(t.endsWith('"')||t.endsWith("'"))&&(t=t.slice(0,-1)),t}function u(e){const t=[];return e.forEach((e=>{let n=String(e);n=["[",n,"]"].join(""),t.push(n)})),t.join(",").replace(/\s/g,"")}const m=[{desc:e=>["A prime factor is a factor that is a prime number.",`What is the largest prime factor of ${e}?`].join(" "),difficulty:1,gen:()=>(0,a.X)(500,1e9),name:"Find Largest Prime Factor",numTries:10,solver:(e,t)=>{if("number"!=typeof e)throw new Error("solver expected number");let n=2,a=e;for(;a>(n-1)*(n-1);){for(;a%n==0;)a=Math.round(a/n);++n}return(1===a?n-1:a)===parseInt(t,10)}},{desc:e=>["Given the following integer array, find the contiguous subarray","(containing at least one number) which has the largest sum and return that sum.","'Sum' refers to the sum of all the numbers in the subarray.\n",`${e.toString()}`].join(" "),difficulty:1,gen:()=>{const e=(0,a.X)(5,40),t=[];t.length=e;for(let n=0;n{const n=e.slice();for(let e=1;e{if("number"!=typeof e)throw new Error("solver expected number");return["It is possible write four as a sum in exactly four different ways:\n\n","    3 + 1\n","    2 + 2\n","    2 + 1 + 1\n","    1 + 1 + 1 + 1\n\n",`How many different distinct ways can the number ${e} be written as a sum of at least`,"two positive integers?"].join(" ")},difficulty:1.5,gen:()=>(0,a.X)(8,100),name:"Total Ways to Sum",numTries:10,solver:(e,t)=>{if("number"!=typeof e)throw new Error("solver expected number");const n=[1];n.length=e+1,n.fill(0,1);for(let t=1;t{const t=e;return[`How many different distinct ways can the number ${t[0]} be written`,"as a sum of integers contained in the set:\n\n",`[${t[1]}]?\n\n`,"You may use each integer in the set zero or more times."].join(" ")},difficulty:2,gen:()=>{const e=(0,a.X)(12,200),t=(0,a.X)(8,12),n=[];for(let a=1;a<=e&&n.length!=t;a++)(Math.random()<.6||e-a{const n=e,a=n[0],r=n[1],o=[1];o.length=a+1,o.fill(0,1);for(let e=0;e{const t=e;let n=["Given the following array of arrays of numbers representing a 2D matrix,","return the elements of the matrix as an array in spiral order:\n\n"].join(" ");return n+="    [\n",n+=t.map((e=>"        ["+e.map((e=>`${e}`.padStart(2," "))).join(",")+"]")).join("\n"),n+="\n    ]\n",n+=["\nHere is an example of what spiral order should be:\n\n","    [\n","        [1, 2, 3]\n","        [4, 5, 6]\n","        [7, 8, 9]\n","    ]\n\n","Answer: [1, 2, 3, 6, 9, 8 ,7, 4, 5]\n\n","Note that the matrix will not always be square:\n\n","    [\n","        [1,  2,  3,  4]\n","        [5,  6,  7,  8]\n","        [9, 10, 11, 12]\n","    ]\n\n","Answer: [1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7]"].join(" "),n},difficulty:2,gen:()=>{const e=(0,a.X)(1,15),t=(0,a.X)(1,15),n=[];n.length=e;for(let a=0;a{const n=e,a=[];let r=0,o=n.length-1,i=0,s=n[0].length-1,c=0,u=!1;for(;!u;){for(let e=i;e<=s;e++)a[c]=n[r][e],++c;if(++r>o)u=!0;else{for(let e=r;e<=o;e++)a[c]=n[e][s],++c;if(--s=i;e--)a[c]=n[o][e],++c;if(--o=r;e--)a[c]=n[e][i],++c;++i>s&&(u=!0)}}}}const m=l(t).replace(/\s/g,"").split(",").map((e=>parseInt(e)));if(a.length!==m.length)return!1;for(let e=0;e["You are given the following array of integers:\n\n",`${e}\n\n`,"Each element in the array represents your MAXIMUM jump length","at that position. This means that if you are at position i and your","maximum jump length is n, you can jump to any position from","i to i+n.","\n\nAssuming you are initially positioned","at the start of the array, determine whether you are","able to reach the last index.\n\n","Your answer should be submitted as 1 or 0, representing true and false respectively"].join(" "),difficulty:2.5,gen:()=>{const e=(0,a.X)(3,25),t=[];t.length=e;for(let e=0;e{const n=e,a=n.length;let r=0;for(let e=0;r["You are given the following array of integers:\n\n",`${e}\n\n`,"Each element in the array represents your MAXIMUM jump length","at that position. This means that if you are at position i and your","maximum jump length is n, you can jump to any position from","i to i+n.","\n\nAssuming you are initially positioned","at the start of the array, determine the minimum number of","jumps to reach the end of the array.\n\n","If it's impossible to reach the end, then the answer should be 0."].join(" "),difficulty:3,gen:()=>{const e=(0,a.X)(3,25),t=[];t.length=e;for(let e=0;e{const n=e,a=n.length;let r=0,o=0,i=-1;for(;ri;t--)t+n[t]>r&&(r=t+n[t],e=t);if(-1===e){o=0;break}i=e,o++}return o===parseInt(t,10)}},{desc:e=>["Given the following array of arrays of numbers representing a list of","intervals, merge all overlapping intervals.\n\n",`[${u(e)}]\n\n`,"Example:\n\n","[[1, 3], [8, 10], [2, 6], [10, 16]]\n\n","would merge into [[1, 6], [8, 16]].\n\n","The intervals must be returned in ASCENDING order.","You can assume that in an interval, the first number will always be","smaller than the second."].join(" "),difficulty:3,gen:()=>{const e=[],t=(0,a.X)(3,20);for(let n=0;n{const n=e.slice();n.sort(((e,t)=>e[0]-t[0]));const a=[];let r=n[0][0],o=n[0][1];for(const e of n)e[0]<=o?o=Math.max(o,e[1]):(a.push([r,o]),r=e[0],o=e[1]);a.push([r,o]);const i=u(a),s=t.replace(/\s/g,"");return i===s||i===l(s)}},{desc:e=>["Given the following string containing only digits, return","an array with all possible valid IP address combinations","that can be created from the string:\n\n",`${e}\n\n`,"Note that an octet cannot begin with a '0' unless the number","itself is actually 0. For example, '192.168.010.1' is not a valid IP.\n\n","Examples:\n\n",'25525511135 -> ["255.255.11.135", "255.255.111.35"]\n','1938718066 -> ["193.87.180.66"]'].join(" "),difficulty:3,gen:()=>{let e="";for(let t=0;t<4;++t)e+=(0,a.X)(0,255).toString();return e},name:"Generate IP Addresses",numTries:10,solver:(e,t)=>{if("string"!=typeof e)throw new Error("solver expected string");const n=[];for(let t=1;t<=3;++t)for(let a=1;a<=3;++a)for(let r=1;r<=3;++r)for(let o=1;o<=3;++o)if(t+a+r+o===e.length){const i=parseInt(e.substring(0,t),10),s=parseInt(e.substring(t,t+a),10),l=parseInt(e.substring(t+a,t+a+r),10),c=parseInt(e.substring(t+a+r,t+a+r+o),10);if(i<=255&&s<=255&&l<=255&&c<=255){const t=[i.toString(),".",s.toString(),".",l.toString(),".",c.toString()].join("");t.length===e.length+3&&n.push(t)}}const a=l(t).replace(/\s/g,"").split(",").map((e=>e.replace(/^(?['"])([\d.]*)\k$/g,"$2")));if(a.length!==n.length)return!1;for(const e of a)if(!n.includes(e))return!1;return!0}},{desc:e=>["You are given the following array of stock prices (which are numbers)","where the i-th element represents the stock price on day i:\n\n",`${e}\n\n`,"Determine the maximum possible profit you can earn using at most","one transaction (i.e. you can only buy and sell the stock once). If no profit can be made","then the answer should be 0. Note","that you have to buy the stock before you can sell it"].join(" "),difficulty:1,gen:()=>{const e=(0,a.X)(3,50),t=[];t.length=e;for(let n=0;n{const n=e;let a=0,r=0;for(let e=1;e["You are given the following array of stock prices (which are numbers)","where the i-th element represents the stock price on day i:\n\n",`${e}\n\n`,"Determine the maximum possible profit you can earn using as many","transactions as you'd like. A transaction is defined as buying","and then selling one share of the stock. Note that you cannot","engage in multiple transactions at once. In other words, you","must sell the stock before you buy it again.\n\n","If no profit can be made, then the answer should be 0"].join(" "),difficulty:2,gen:()=>{const e=(0,a.X)(3,50),t=[];t.length=e;for(let n=0;n{const n=e;let a=0;for(let e=1;e["You are given the following array of stock prices (which are numbers)","where the i-th element represents the stock price on day i:\n\n",`${e}\n\n`,"Determine the maximum possible profit you can earn using at most","two transactions. A transaction is defined as buying","and then selling one share of the stock. Note that you cannot","engage in multiple transactions at once. In other words, you","must sell the stock before you buy it again.\n\n","If no profit can be made, then the answer should be 0"].join(" "),difficulty:5,gen:()=>{const e=(0,a.X)(3,50),t=[];t.length=e;for(let n=0;n{const n=e;let a=Number.MIN_SAFE_INTEGER,r=Number.MIN_SAFE_INTEGER,o=0,i=0;for(const e of n)i=Math.max(i,r+e),r=Math.max(r,o-e),o=Math.max(o,a+e),a=Math.max(a,-1*e);return i.toString()===t}},{desc:e=>{const t=e;return["You are given the following array with two elements:\n\n",`[${t[0]}, [${t[1]}]]\n\n`,"The first element is an integer k. The second element is an","array of stock prices (which are numbers) where the i-th element","represents the stock price on day i.\n\n","Determine the maximum possible profit you can earn using at most","k transactions. A transaction is defined as buying and then selling","one share of the stock. Note that you cannot engage in multiple","transactions at once. In other words, you must sell the stock before","you can buy it again.\n\n","If no profit can be made, then the answer should be 0."].join(" ")},difficulty:8,gen:()=>{const e=(0,a.X)(2,10),t=(0,a.X)(3,50),n=[];n.length=t;for(let e=0;e{const n=e,a=n[0],r=n[1],o=r.length;if(o<2)return 0===parseInt(t);if(a>o/2){let e=0;for(let t=1;t0;--e)s[e]=Math.max(s[e],i[e]+l),i[e]=Math.max(i[e],s[e-1]-l)}return parseInt(t)===s[a]}},{desc:e=>{function t(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const a=e.length;if(n>=a)return"";const r=a-n+1;let o=[" ".repeat(r),"[",e[n].toString(),"]"].join("");return n 3 -> 5 -> 1)."].join(" ")},difficulty:5,gen:()=>{const e=[],t=(0,a.X)(3,12);e.length=t;for(let n=0;n{const n=e,a=n.length,r=n[a-1].slice();for(let e=a-2;e>-1;--e)for(let t=0;t{const t=e,n=t[0],a=t[1];return["You are in a grid with",`${n} rows and ${a} columns, and you are`,"positioned in the top-left corner of that grid. You are trying to","reach the bottom-right corner of the grid, but you can only","move down or right on each step. Determine how many","unique paths there are from start to finish.\n\n","NOTE: The data returned for this contract is an array","with the number of rows and columns:\n\n",`[${n}, ${a}]`].join(" ")},difficulty:3,gen:()=>[(0,a.X)(2,14),(0,a.X)(2,14)],name:"Unique Paths in a Grid I",numTries:10,solver:(e,t)=>{const n=e,a=n[0],r=n[1],o=[];o.length=a;for(let e=0;e{const t=e;let n="";for(const e of t)n+=`${e.toString()},\n`;return["You are located in the top-left corner of the following grid:\n\n",`${n}\n`,"You are trying reach the bottom-right corner of the grid, but you can only","move down or right on each step. Furthermore, there are obstacles on the grid","that you cannot move onto. These obstacles are denoted by '1', while empty","spaces are denoted by 0.\n\n","Determine how many unique paths there are from start to finish.\n\n","NOTE: The data returned for this contract is an 2D array of numbers representing the grid."].join(" ")},difficulty:5,gen:()=>{const e=(0,a.X)(2,12),t=(0,a.X)(2,12),n=[];n.length=e;for(let a=0;a{const n=e,a=[];a.length=n.length;for(let e=0;e0?a[e-1][t]:0)+(t>0?a[e][t-1]:0);return a[a.length-1][a[0].length-1]===parseInt(t)}},{name:"Shortest Path in a Grid",desc:e=>["You are located in the top-left corner of the following grid:\n\n",`  [${e.map((e=>"["+e+"]")).join(",\n   ")}]\n\n`,"You are trying to find the shortest path to the bottom-right corner of the grid,","but there are obstacles on the grid that you cannot move onto.","These obstacles are denoted by '1', while empty spaces are denoted by 0.\n\n","Determine the shortest path from start to finish, if one exists.","The answer should be given as a string of UDLR characters, indicating the moves along the path\n\n","NOTE: If there are multiple equally short paths, any of them is accepted as answer.","If there is no path, the answer should be an empty string.\n","NOTE: The data returned for this contract is an 2D array of numbers representing the grid.\n\n","Examples:\n\n","    [[0,1,0,0,0],\n","     [0,0,0,1,0]]\n","\n","Answer: 'DRRURRD'\n\n","    [[0,1],\n","     [1,0]]\n","\n","Answer: ''\n\n"].join(" "),difficulty:7,numTries:10,gen:()=>{const e=(0,a.X)(6,12),t=(0,a.X)(6,12),n=e-1,r=t-1,o=n+r,i=new Array(e);for(let n=0;n{const n=e,a=n[0].length,o=n.length,i=o-1,s=a-1,l=new Array(o),c=new r.H;for(let e=0;e=0&&e=0&&t0;){const[e,t]=c.pop();for(const[n,a]of m(e,t)){const r=l[e][t]+1;r{let[t,r]=e;return t==n&&r==a}),r),l[n][a]=r)}}if(l[i][s]==1/0)return""==t;if(t.length>l[i][s])return!1;let f=0,h=0;for(const e of t){switch(e){case"U":h-=1;break;case"D":h+=1;break;case"L":f-=1;break;case"R":f+=1;break;default:return!1}if(!u(h,f))return!1}return h==i&&f==s}},{desc:e=>["Given the following string:\n\n",`${e}\n\n`,"remove the minimum number of invalid parentheses in order to validate","the string. If there are multiple minimal ways to validate the string,","provide all of the possible results. The answer should be provided","as an array of strings. If it is impossible to validate the string","the result should be an array with only an empty string.\n\n","IMPORTANT: The string may contain letters, not just parentheses.","Examples:\n",'"()())()" -> ["()()()", "(())()"]\n','"(a)())()" -> ["(a)()()", "(a())()"]\n','")(" -> [""]'].join(" "),difficulty:10,gen:()=>{const e=(0,a.X)(6,20),t=[];t.length=e,Math.random()<.8?t[0]="(":t[0]=")";for(let n=1;n{if("string"!=typeof e)throw new Error("solver expected string");let n=0,a=0;const r=[];for(let t=0;t0?--n:++a);!function e(t,n,a,r,o,i,s){if(o.length!==n)"("===o[n]?(a>0&&e(t,n+1,a-1,r,o,i,s),e(t+1,n+1,a,r,o,i+o[n],s)):")"===o[n]?(r>0&&e(t,n+1,a,r-1,o,i,s),t>0&&e(t-1,n+1,a,r,o,i+o[n],s)):e(t,n+1,a,r,o,i+o[n],s);else if(0===a&&0===r&&0===t){for(let e=0;e{const t=e,n=t[0],a=t[1];return["You are given the following string which contains only digits between 0 and 9:\n\n",`${n}\n\n`,`You are also given a target number of ${a}. Return all possible ways`,"you can add the +(add), -(subtract), and *(multiply) operators to the string such","that it evaluates to the target number. (Normal order of operations applies.)\n\n","The provided answer should be an array of strings containing the valid expressions.","The data provided by this problem is an array with two elements. The first element","is the string of digits, while the second element is the target number:\n\n",`["${n}", ${a}]\n\n`,"NOTE: The order of evaluation expects script operator precedence","NOTE: Numbers in the expression cannot have leading 0's. In other words,",'"1+01" is not a valid expression',"Examples:\n\n",'Input: digits = "123", target = 6\n',"Output: [1+2+3, 1*2*3]\n\n",'Input: digits = "105", target = 5\n',"Output: [1*0+5, 10-5]"].join(" ")},difficulty:10,gen:()=>{const e=(0,a.X)(4,12),t=[];t.length=e;for(let e=0;e{const n=e,a=n[0],r=n[1],o=l(t),i=(0,s.m)(o.split(","));for(let e=0;e["You are given the following decimal Value: \n",`${e} \n`,"Convert it to a binary representation and encode it as an 'extended Hamming code'. Eg:\n ","Value 8 is expressed in binary as '1000', which will be encoded","with the pattern 'pppdpddd', where p is a parity bit and d a data bit. The encoding of\n","8 is 11110000. As another example, '10101' (Value 21) will result into (pppdpdddpd) '1001101011'.\n","The answer should be given as a string containing only 1s and 0s.\n","NOTE: the endianness of the data bits is reversed in relation to the endianness of the parity bits.\n","NOTE: The bit at index zero is the overall parity bit, this should be set last.\n","NOTE 2: You should watch the Hamming Code video from 3Blue1Brown, which explains the 'rule' of encoding,","including the first index parity bit mentioned in the previous note.\n\n","Extra rule for encoding:\n","There should be no leading zeros in the 'data bit' section"].join(" "),gen:()=>(0,a.X)(Math.pow(2,4),Math.pow(2,(0,a.X)(1,57))),solver:(e,t)=>{if("number"!=typeof e)throw new Error("solver expected number");return t===(0,i.eP)(e)}},{name:"HammingCodes: Encoded Binary to Integer",difficulty:8,numTries:10,desc:e=>["You are given the following encoded binary string: \n",`'${e}' \n\n`,"Treat it as an extended Hamming code with 1 'possible' error at a random index.\n","Find the 'possible' wrong bit, fix it and extract the decimal value, which is hidden inside the string.\n\n","Note: The length of the binary string is dynamic, but its encoding/decoding follows Hamming's 'rule'\n","Note 2: Index 0 is an 'overall' parity bit. Watch the Hamming code video from 3Blue1Brown for more information\n","Note 3: There's a ~55% chance for an altered Bit. So... MAYBE there is an altered Bit 😉\n","Note: The endianness of the encoded decimal value is reversed in relation to the endianness of the Hamming code. Where","the Hamming code is expressed as little-endian (LSB at index 0), the decimal value encoded in it is expressed as big-endian","(MSB at index 0).\n","Extra note for automation: return the decimal value as a string"].join(" "),gen:()=>{const e=Math.round(Math.random()),t=(0,i.Mk)((0,a.X)(Math.pow(2,4),Math.pow(2,(0,a.X)(1,57)))).split("");if(e){const e=(0,a.X)(0,t.length-1);t[e]="0"==t[e]?"1":"0"}return t.join("")},solver:(e,t)=>{if("string"!=typeof e)throw new Error("solver expected string");return parseInt(t,10)===(0,i.ZH)(e)}},{name:"Proper 2-Coloring of a Graph",difficulty:7,numTries:5,desc:e=>{const t=e;return["You are given the following data, representing a graph:\n",`${JSON.stringify(t)}\n`,'Note that "graph", as used here, refers to the field of graph theory, and has',"no relation to statistics or plotting.","The first element of the data represents the number of vertices in the graph.",`Each vertex is a unique number between 0 and ${t[0]-1}.`,"The next element of the data represents the edges of the graph.","Two vertices u,v in a graph are said to be adjacent if there exists an edge [u,v].","Note that an edge [u,v] is the same as an edge [v,u], as order does not matter.","You must construct a 2-coloring of the graph, meaning that you have to assign each",'vertex in the graph a "color", either 0 or 1, such that no two adjacent vertices have',"the same color. Submit your answer in the form of an array, where element i","represents the color of vertex i. If it is impossible to construct a 2-coloring of","the given graph, instead submit an empty array.\n\n","Examples:\n\n","Input: [4, [[0, 2], [0, 3], [1, 2], [1, 3]]]\n","Output: [0, 0, 1, 1]\n\n","Input: [3, [[0, 1], [0, 2], [1, 2]]]\n","Output: []"].join(" ")},gen:()=>{const e=Math.floor(5*Math.random())+3,t=Math.floor(5*Math.random())+3,n=[];for(let a=0;a.5&&n.push([a,e+r]);let a=Math.floor(Math.random()*(e+t)),r=Math.floor(Math.random()*(e+t));function o(e){for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}}a>r&&([a,r]=[r,a]),a==r||n.includes([a,r])||n.push([a,r]);const i=Array.from(Array(e+t).keys());o(i);for(let e=0;en[e][1]&&([n[e][0],n[e][1]]=[n[e][1],n[e][0]]);return o(n),[e+t,n]},solver:(e,t)=>{function n(e){const t=a[1].filter((t=>{let[n]=t;return n==e})).map((e=>{let[,t]=e;return t})),n=a[1].filter((t=>{let[,n]=t;return n==e})).map((e=>{let[t]=e;return t}));return t.concat(n)}const a=e,r=l(t);if(""===r){const e=Array(a[0]).fill(void 0);for(;e.some((e=>void 0===e));){const t=e.findIndex((e=>void 0===e));e[t]=0;const a=[t];for(;a.length>0;){const t=a.pop()||0,r=n(t);for(const n in r){const o=r[n];if(void 0===e[o])0===e[t]?e[o]=1:e[o]=0,a.push(o);else if(e[o]===e[t])return!0}}}return!1}const o=r.split(",").map((e=>parseInt(e)));if(o.length==a[0]){const e=a[1],t=[0,1];return e.every((e=>{let[n,a]=e;const r=o[n],i=o[a];return t.includes(r)&&t.includes(i)&&r!=i}))}return!1}},{name:"Compression I: RLE Compression",difficulty:2,numTries:10,desc:e=>["Run-length encoding (RLE) is a data compression technique which encodes data as a series of runs of","a repeated single character. Runs are encoded as a length, followed by the character itself. Lengths","are encoded as a single ASCII digit; runs of 10 characters or more are encoded by splitting them","into multiple runs.\n\n","You are given the following input string:\n",`    ${e}\n`,"Encode it using run-length encoding with the minimum possible output length.\n\n","Examples:\n","    aaaaabccc            ->  5a1b3c\n","    aAaAaA               ->  1a1A1a1A1a1A\n","    111112333            ->  511233\n","    zzzzzzzzzzzzzzzzzzz  ->  9z9z1z  (or 9z8z2z, etc.)\n"].join(" "),gen:()=>{const e=50+Math.floor(25*(Math.random()+Math.random()));let t="";for(;t.length{if("string"!=typeof e)throw new Error("solver expected string");if(t.length%2!=0)return!1;let n="";for(let e=0;e+19)return!1;n+=t[e+1].repeat(a)}if(n!==e)return!1;let a=0;for(let t=0;t0;)n-=9,a+=2}return t.length<=a}},{name:"Compression II: LZ Decompression",difficulty:4,numTries:10,desc:e=>["Lempel-Ziv (LZ) compression is a data compression technique which encodes data using references to","earlier parts of the data. In this variant of LZ, data is encoded in two types of chunk. Each chunk","begins with a length L, encoded as a single ASCII digit from 1 to 9, followed by the chunk data,","which is either:\n\n","1. Exactly L characters, which are to be copied directly into the uncompressed data.\n","2. A reference to an earlier part of the uncompressed data. To do this, the length is followed","by a second ASCII digit X: each of the L output characters is a copy of the character X","places before it in the uncompressed data.\n\n","For both chunk types, a length of 0 instead means the chunk ends immediately, and the next character","is the start of a new chunk. The two chunk types alternate, starting with type 1, and the final","chunk may be of either type.\n\n","You are given the following LZ-encoded string:\n",`    ${e}\n`,"Decode it and output the original string.\n\n","Example: decoding '5aaabb450723abb' chunk-by-chunk\n","    5aaabb           ->  aaabb\n","    5aaabb45         ->  aaabbaaab\n","    5aaabb450        ->  aaabbaaab\n","    5aaabb45072      ->  aaabbaaababababa\n","    5aaabb450723abb  ->  aaabbaaababababaabb"].join(" "),gen:()=>(0,o.yH)((0,o._p)()),solver:(e,t)=>{if("string"!=typeof e)throw new Error("solver expected string");return t===(0,o.KH)(e)}},{name:"Compression III: LZ Compression",difficulty:10,numTries:10,desc:e=>["Lempel-Ziv (LZ) compression is a data compression technique which encodes data using references to","earlier parts of the data. In this variant of LZ, data is encoded in two types of chunk. Each chunk","begins with a length L, encoded as a single ASCII digit from 1 to 9, followed by the chunk data,","which is either:\n\n","1. Exactly L characters, which are to be copied directly into the uncompressed data.\n","2. A reference to an earlier part of the uncompressed data. To do this, the length is followed","by a second ASCII digit X: each of the L output characters is a copy of the character X","places before it in the uncompressed data.\n\n","For both chunk types, a length of 0 instead means the chunk ends immediately, and the next character","is the start of a new chunk. The two chunk types alternate, starting with type 1, and the final","chunk may be of either type.\n\n","You are given the following input string:\n",`    ${e}\n`,"Encode it using Lempel-Ziv encoding with the minimum possible output length.\n\n","Examples (some have other possible encodings of minimal length):\n","    abracadabra     ->  7abracad47\n","    mississippi     ->  4miss433ppi\n","    aAAaAAaAaAA     ->  3aAA53035\n","    2718281828      ->  627182844\n","    abcdefghijk     ->  9abcdefghi02jk\n","    aaaaaaaaaaaa    ->  3aaa91\n","    aaaaaaaaaaaaa   ->  1a91031\n","    aaaaaaaaaaaaaa  ->  1a91041"].join(" "),gen:()=>(0,o._p)(),solver:(e,t)=>{if("string"!=typeof e)throw new Error("solver expected string");return(0,o.KH)(t)===e&&t.length<=(0,o.yH)(e).length}},{desc:e=>{if(!Array.isArray(e))throw new Error("data should be array of string");const t=e;return["Caesar cipher is one of the simplest encryption technique.","It is a type of substitution cipher in which each letter in the plaintext ","is replaced by a letter some fixed number of positions down the alphabet.","For example, with a left shift of 3, D would be replaced by A, ","E would become B, and A would become X (because of rotation).\n\n","You are given an array with two elements:\n",`  ["${t[0]}", ${t[1]}]\n`,"The first element is the plaintext, the second element is the left shift value.\n\n","Return the ciphertext as uppercase string. Spaces remains the same."].join(" ")},difficulty:1,gen:()=>[["ARRAY","CACHE","CLOUD","DEBUG","EMAIL","ENTER","FLASH","FRAME","INBOX","LINUX","LOGIC","LOGIN","MACRO","MEDIA","MODEM","MOUSE","PASTE","POPUP","PRINT","QUEUE","SHELL","SHIFT","TABLE","TRASH","VIRUS"].sort((()=>Math.random()-.5)).slice(0,5).join(" "),Math.floor(25*Math.random()+1)],name:"Encryption I: Caesar Cipher",numTries:10,solver:(e,t)=>{if(!Array.isArray(e))throw new Error("data should be array of string");const n=e;return[...n[0]].map((e=>" "===e?e:String.fromCharCode((e.charCodeAt(0)-65-n[1]+26)%26+65))).join("")===t}},{desc:e=>{if(!Array.isArray(e))throw new Error("data should be array of string");const t=e;return["Vigenère cipher is a type of polyalphabetic substitution. It uses ","the Vigenère square to encrypt and decrypt plaintext with a keyword.\n\n","  Vigenère square:\n","         A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \n","       +----------------------------------------------------\n","     A | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \n","     B | B C D E F G H I J K L M N O P Q R S T U V W X Y Z A \n","     C | C D E F G H I J K L M N O P Q R S T U V W X Y Z A B\n","     D | D E F G H I J K L M N O P Q R S T U V W X Y Z A B C\n","     E | E F G H I J K L M N O P Q R S T U V W X Y Z A B C D\n","                ...\n","     Y | Y Z A B C D E F G H I J K L M N O P Q R S T U V W X\n","     Z | Z A B C D E F G H I J K L M N O P Q R S T U V W X Y\n\n","For encryption each letter of the plaintext is paired with the corresponding letter of a repeating keyword.","For example, the plaintext DASHBOARD is encrypted with the keyword LINUX:\n","   Plaintext: DASHBOARD\n","   Keyword:   LINUXLINU\n","So, the first letter D is paired with the first letter of the key L. Therefore, row D and column L of the ","Vigenère square are used to get the first cipher letter O. This must be repeated for the whole ciphertext.\n\n","You are given an array with two elements:\n",`  ["${t[0]}", "${t[1]}"]\n`,"The first element is the plaintext, the second element is the keyword.\n\n","Return the ciphertext as uppercase string."].join(" ")},difficulty:2,gen:()=>[["ARRAY","CACHE","CLOUD","DEBUG","EMAIL","ENTER","FLASH","FRAME","INBOX","LINUX","LOGIC","LOGIN","MACRO","MEDIA","MODEM","MOUSE","PASTE","POPUP","PRINT","QUEUE","SHELL","SHIFT","TABLE","TRASH","VIRUS"].sort((()=>Math.random()-.5)).slice(0,5).join(""),["ALGORITHM","BANDWIDTH","BLOGGER","BOOKMARK","BROADBAND","BROWSER","CAPTCHA","CLIPBOARD","COMPUTING","COMMAND","COMPILE","COMPRESS","COMPUTER","CONFIGURE","DASHBOARD","DATABASE","DESKTOP","DIGITAL","DOCUMENT","DOWNLOAD","DYNAMIC","EMOTICON","ENCRYPT","EXABYTE","FIREWALL","FIRMWARE","FLAMING","FLOWCHART","FREEWARE","GIGABYTE","GRAPHICS","HARDWARE","HYPERLINK","HYPERTEXT","INTEGER","INTERFACE","INTERNET","ITERATION","JOYSTICK","JUNKMAIL","KEYBOARD","KEYWORD","LURKING","MACINTOSH","MAINFRAME","MALWARE","MONITOR","NETWORK","NOTEBOOK","COMPUTER","OFFLINE","OPERATING","PASSWORD","PHISHING","PLATFORM","PODCAST","PRINTER","PRIVACY","PROCESS","PROGRAM","PROTOCOL","REALTIME","RESTORE","RUNTIME","SCANNER","SECURITY","SHAREWARE","SNAPSHOT","SOFTWARE","SPAMMER","SPYWARE","STORAGE","TERMINAL","TEMPLATE","TERABYTE","TOOLBAR","TYPEFACE","USERNAME","UTILITY","VERSION","VIRTUAL","WEBMASTER","WEBSITE","WINDOWS","WIRELESS","PROCESSOR"].sort((()=>Math.random()-.5))[0]],name:"Encryption II: Vigenère Cipher",numTries:10,solver:(e,t)=>{if(!Array.isArray(e))throw new Error("data should be array of string");const n=e;return[...n[0]].map(((e,t)=>" "===e?e:String.fromCharCode((e.charCodeAt(0)-130+n[1].charCodeAt(t%n[1].length))%26+65))).join("")===t}}]},22573:(e,t,n)=>{"use strict";function a(){return new Promise(((e,t)=>{window.indexedDB||t("Indexed DB does not exists");const n=window.indexedDB.open("bitburnerSave",1);n.onupgradeneeded=function(){this.result.createObjectStore("savestring")},n.onerror=function(e){t(`Failed to get IDB ${e}`)},n.onsuccess=function(){const n=this.result;n?e(n.transaction(["savestring"],"readwrite").objectStore("savestring")):t("database loading result was undefined")}}))}function r(){return new Promise(((e,t)=>{a().then((t=>new Promise(((e,n)=>{const a=t.get("save");a.onerror=function(e){n("Error in Database request to get savestring: "+e)},a.onsuccess=function(){e(this.result)}})).then((t=>e(t))))).catch((e=>t(e)))}))}function o(e){return a().then((t=>new Promise(((n,a)=>{const r=t.put(e,"save");r.onerror=function(e){a("Error saving game to IndexedDB: "+e)},r.onsuccess=()=>n()}))))}function i(){return a().then((e=>{e.delete("save")}))}n.d(t,{TT:()=>i,a1:()=>o,zD:()=>r})},2827:(e,t,n)=>{"use strict";n.d(t,{D:()=>Z});var a=n(49802),r=n(33244),o=n(99745),i=n(16264),s=n(58297),l=n(72938),c=n(58427),u=n(78573),m=n(94542),f=n(52947),h=n(24815),d=n(99363),p=(n(43196),n(509)),g=n(29538),y=n(40780),b=n(72198),v=n(7872),k=n(49173),w=n(34716),E=n(97467),S=n(51087),C=n(22115),x=n(35102),N=n(65065),M=n(72360),A=n(50411),T=n(17365),L=n(95173),R=n(43074),F=n(93573),I=n(30518),_=n(67294),P=n(91893),B=n(81138),O=n(56798),D=n(32369);const Z={_lastUpdate:(new Date).getTime(),updateGame:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const t=e*l.t.MilliPerCycle;null==k.J5.totalPlaytime&&(k.J5.totalPlaytime=0),null==k.J5.playtimeSinceLastAug&&(k.J5.playtimeSinceLastAug=0),null==k.J5.playtimeSinceLastBitnode&&(k.J5.playtimeSinceLastBitnode=0),k.J5.totalPlaytime+=t,k.J5.playtimeSinceLastAug+=t,k.J5.playtimeSinceLastBitnode+=t,N.o.process(e),k.J5.processWork(e),k.J5.hasWseAccount&&(0,x.aW)(e),k.J5.gang&&k.J5.gang.process(e),u.y$.process(e),k.J5.corporation&&(k.J5.corporation.storeCycles(e),k.J5.corporation.process()),k.J5.bladeburner&&k.J5.bladeburner.storeCycles(e),k.J5.sleeves.forEach((t=>t.process(e))),Z.decrementAllCounters(e),Z.checkCounters(),(0,v.K7)(e),(0,g.ZQ)(e)},Counters:{autoSaveCounter:300,updateSkillLevelsCounter:10,updateDisplays:3,updateDisplaysLong:15,updateActiveScriptsDisplay:5,createProgramNotifications:10,augmentationsNotifications:10,checkFactionInvitations:100,passiveFactionGrowth:5,messages:150,mechanicProcess:5,contractGeneration:3e3,achievementsCounter:60},decrementAllCounters:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;for(const[t,n]of Object.entries(Z.Counters)){if(void 0===n)throw new Error("counter should not be undefined");Z.Counters[t]=n-e}},checkCounters:function(){if(Z.Counters.autoSaveCounter<=0&&(null==S.Z.AutosaveInterval&&(S.Z.AutosaveInterval=60),0===S.Z.AutosaveInterval?(function(){if(S.Z.SuppressAutosaveDisabledWarnings)return;if([h.T3.Recovery,h.T3.ImportSave].includes(f.F.page()))return;const e=_.createElement(_.Fragment,null,"Auto-saves are ",_.createElement("strong",null,"disabled"),"!",_.createElement(O.Z,{sx:{ml:1},color:"warning",size:"small",onClick:()=>{S.Z.AutosaveInterval=60}},"Enable"));D.sC.emit(e,r.ToastVariant.WARNING,5e3)}(),Z.Counters.autoSaveCounter=300):(Z.Counters.autoSaveCounter=5*S.Z.AutosaveInterval,w.Ex.saveGame(!S.Z.SuppressSavedGameToast))),Z.Counters.checkFactionInvitations<=0){const e=k.J5.checkForFactionInvitations();if(e.length>0){const t=e[Math.floor(Math.random()*e.length)];(0,m.kl)(t)}Z.Counters.checkFactionInvitations=100}if(Z.Counters.passiveFactionGrowth<=0){const e=Math.floor(5-Z.Counters.passiveFactionGrowth);(0,m.AM)(e),Z.Counters.passiveFactionGrowth=5}if(Z.Counters.messages<=0&&((0,b.Uc)(),k.J5.hasAugmentation(r.AugmentationName.TheRedPill)?Z.Counters.messages=4500:Z.Counters.messages=150),Z.Counters.mechanicProcess<=0){if(k.J5.bladeburner)try{k.J5.bladeburner.process()}catch(e){(0,R.P)("Exception caught in Bladeburner.process(): "+e)}Z.Counters.mechanicProcess=5}Z.Counters.contractGeneration<=0&&(Math.random()<=.25&&(0,s._q)(),Z.Counters.contractGeneration=3e3),Z.Counters.achievementsCounter<=0&&((0,I.v)(),Z.Counters.achievementsCounter=300)},load:function(e){if((0,F.s)(),(0,P.k)(),(0,i.c)(),(0,w.wc)(e)){C.AR.emit(),(0,o.j2)(),k.J5.reapplyAllAugmentations(),k.J5.reapplyAllSourceFiles(),k.J5.hasWseAccount&&(0,x.nD)(),k.J5.applyEntropy(k.J5.entropy),Z._lastUpdate=(new Date).getTime();const e=k.J5.lastUpdate,t=Z._lastUpdate-e,n=Math.floor(t/l.t.MilliPerCycle),r=Math.floor(t/6e5);let i=0;if(r>100&&(i+=Math.floor(.25*r)),r>0&&r<=100)for(let e=0;ee.process(n)));const b=n*l.t.MilliPerCycle;k.J5.totalPlaytime??=0,k.J5.playtimeSinceLastAug??=0,k.J5.playtimeSinceLastBitnode??=0,k.J5.totalPlaytime+=b,k.J5.playtimeSinceLastAug+=b,k.J5.playtimeSinceLastBitnode+=b,k.J5.lastUpdate=Z._lastUpdate,Z.start();const w=(0,a.UF)(b);setTimeout((()=>L.e.emit(_.createElement(_.Fragment,null,_.createElement(B.Z,null,"Offline for ",w,". While you were offline:"),_.createElement("ul",null,_.createElement("li",null,_.createElement(B.Z,null,"Your scripts generated ",_.createElement(M.W,{money:h}))),_.createElement("li",null,_.createElement(B.Z,null,"Your Hacknet Nodes generated ",y)),_.createElement("li",null,_.createElement(B.Z,null,"You gained ",_.createElement(T.Y,{reputation:f})," reputation divided amongst your factions")))))),250)}else C.AR.emit(),(0,o.j2)(),Z.start(),k.J5.init(),(0,E.Bj)(k.J5.getHomeComputer()),k.J5.reapplyAllAugmentations(),(0,y.mp)();(0,d.h)()},start:function(){const e=(new Date).getTime();let t=e-Z._lastUpdate;const n=t%l.t.MilliPerCycle;t=Math.floor(t/l.t.MilliPerCycle),t>0&&(Z._lastUpdate=e-n,k.J5.lastUpdate=e-n,Z.updateGame(t)),window.setTimeout(Z.start,l.t.MilliPerCycle-n)}}},90936:(e,t,n)=>{"use strict";function a(){try{return"c32957eda"}catch{return"DEV"}}n.d(t,{v:()=>a})},73681:(e,t,n)=>{"use strict";var a=n(67294),r=n(73935),o=n(10425),i=n(77888),s=n(10333),l=n(60468);(0,s.jw)(),globalThis.React=a,globalThis.ReactDOM=r,r.render(a.createElement(o.On,null,a.createElement(i.a,null)),document.getElementById("root")),setTimeout(l.j,2e3),o.bS.subscribe((function(){(0,o.Rl)(),r.render(a.createElement(o.On,null,a.createElement(i.a,null)),document.getElementById("root"))})),location.href.startsWith("file://")||(window.onbeforeunload=function(){return"Your work will be lost."}),window.print=()=>{throw new Error("You accidentally called window.print instead of ns.print")},window.prompt=()=>{throw new Error("You accidentally called window.prompt instead of ns.prompt")}},20145:(e,t,n)=>{"use strict";n.d(t,{a:()=>a});const a=e=>(e=>Number.isInteger(e))(e)&&e>0},93542:(e,t,n)=>{"use strict";n.d(t,{s:()=>s});var a=n(67294),r=n(61718),o=n(26043),i=n(81138);function s(e){return a.createElement(a.Fragment,null,a.createElement(i.Z,null,"This page displays a list of all of your scripts that are currently running across every machine. It also provides information about each script's production. The scripts are categorized by the hostname of the servers on which they are running."),a.createElement(r.A,null),a.createElement(o.E,e))}},59656:(e,t,n)=>{"use strict";n.d(t,{M:()=>c});var a=n(67294),r=n(94004),o=n(30527),i=n(93542),s=n(72756),l=n(88775);function c(e){const[t,n]=(0,a.useState)("active");return(0,l.S)(400),a.createElement(a.Fragment,null,a.createElement(r.Z,{variant:"fullWidth",value:t,onChange:function(e,t){n(t)},sx:{minWidth:"fit-content",maxWidth:"25%"}},a.createElement(o.Z,{label:"Active",value:"active"}),a.createElement(o.Z,{label:"Recently Killed",value:"recent"})),"active"===t&&a.createElement(i.s,{workerScripts:e.workerScripts}),"recent"===t&&a.createElement(s.a,null))}},30418:(e,t,n)=>{"use strict";n.d(t,{D:()=>x});var a=n(67294),r=n(22115),o=n(47542),i=n(7272),s=n(49557),l=n(46948),c=n(30120),u=n(28881),m=n(81138),f=n(56798),h=n(95309),d=n(61702),p=n(77541),g=n(51627),y=n(60181),b=n(23508),v=n(49802),k=n(72326),w=n(72360),E=n(85882),S=n(85167);const C=(0,p.Z)({noborder:{borderBottom:"none"}});function x(e){const t=C(),[n,p]=a.useState(!1),x=e.recentScript,N=x.runningScript.onlineMoneyMade/x.runningScript.onlineRunningTime,M=x.runningScript.onlineExpGained/x.runningScript.onlineRunningTime;return a.createElement(a.Fragment,null,a.createElement(h.Z,{onClick:()=>p((e=>!e)),component:u.Z},a.createElement(d.Z,{primary:a.createElement(m.Z,null,"└ ",x.runningScript.filename," (died"," ",(0,v.UF)((new Date).getTime()-x.timeOfDeath.getTime())," ago)")}),n?a.createElement(y.Z,{color:"primary"}):a.createElement(b.Z,{color:"primary"})),a.createElement(g.Z,{in:n,timeout:0,unmountOnExit:!0},a.createElement(c.Z,{mx:6},a.createElement(o.Z,{padding:"none",size:"small"},a.createElement(l.Z,null,a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(m.Z,null,"└ Threads:")),a.createElement(i.Z,{className:t.noborder},a.createElement(m.Z,null,(0,r.jL)(x.runningScript.threads)))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder,colSpan:2},a.createElement(m.Z,null,"└ Args: ",(0,k.N)(x.runningScript.args)))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(m.Z,null,"└ Online Time:")),a.createElement(i.Z,{className:t.noborder},a.createElement(m.Z,null,(0,v.UF)(1e3*x.runningScript.onlineRunningTime)))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(m.Z,null,"└ Offline Time:")),a.createElement(i.Z,{className:t.noborder},a.createElement(m.Z,null,(0,v.UF)(1e3*x.runningScript.offlineRunningTime)))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(m.Z,null,"└ Total online production:")),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(m.Z,null,a.createElement(w.W,{money:x.runningScript.onlineMoneyMade})))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder,colSpan:1}),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(m.Z,null," ",(0,r.Mf)(x.runningScript.onlineExpGained)+" hacking exp"))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(m.Z,null,"└ Online production rate:")),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(m.Z,null,a.createElement(E.G,{money:N})))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder,colSpan:1}),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(m.Z,null," ",(0,r.Mf)(M)+" hacking exp / sec"))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(m.Z,null,"└ Total offline production:")),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(m.Z,null,a.createElement(w.W,{money:x.runningScript.offlineMoneyMade})))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder,colSpan:1}),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(m.Z,null," ",(0,r.Mf)(x.runningScript.offlineExpGained)+" hacking exp"))))),a.createElement(f.Z,{onClick:function(){S.ki.emit(x.runningScript)}},"LOG"))))}},72756:(e,t,n)=>{"use strict";n.d(t,{a:()=>s});var a=n(67294),r=n(81138),o=n(71828),i=n(30418);function s(){return a.createElement(a.Fragment,null,a.createElement(r.Z,null,"List of all recently killed scripts."),o.$.map((e=>a.createElement(i.D,{key:e.runningScript.pid,recentScript:e}))))}},61718:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var a=n(67294),r=n(72360),o=n(85882),i=n(49173),s=n(81138),l=n(77541),c=n(73327),u=n(47542),m=n(46948),f=n(7272),h=n(49557);const d=(0,l.Z)((e=>(0,c.Z)({cell:{borderBottom:"none",padding:e.spacing(1),margin:e.spacing(1),whiteSpace:"nowrap"},size:{width:"1px"}})));function p(){const e=d(),t=i.J5.scriptProdSinceLastAug/(i.J5.playtimeSinceLastAug/1e3);return a.createElement(u.Z,{size:"small",classes:{root:e.size}},a.createElement(m.Z,null,a.createElement(h.Z,null,a.createElement(f.Z,{component:"th",scope:"row",classes:{root:e.cell}},a.createElement(s.Z,{variant:"body2"},"Total production since last Augment Installation:")),a.createElement(f.Z,{align:"left",classes:{root:e.cell}},a.createElement(s.Z,{variant:"body2"},a.createElement(r.W,{money:i.J5.scriptProdSinceLastAug}))),a.createElement(f.Z,{align:"left",classes:{root:e.cell}},a.createElement(s.Z,{variant:"body2"},"(",a.createElement(o.G,{money:t}),")")))))}},93087:(e,t,n)=>{"use strict";n.d(t,{c:()=>d});var a=n(67294),r=n(81138),o=n(95309),i=n(61702),s=n(28881),l=n(30120),c=n(51627),u=n(23508),m=n(60181),f=n(7806),h=n(93826);function d(e){const[t,n]=a.useState(!1),d=e.server,p=`${d.hostname}${" ".repeat(18)}`.slice(0,Math.max(d.hostname.length,18)),g={progress:d.ramUsed/d.maxRam,totalTicks:30},y=`${p} ${(0,h.x)(g)}`;return a.createElement(l.Z,{component:s.Z},a.createElement(o.Z,{onClick:()=>n((e=>!e))},a.createElement(i.Z,{primary:a.createElement(r.Z,{style:{whiteSpace:"pre-wrap"}},y)}),t?a.createElement(m.Z,{color:"primary"}):a.createElement(u.Z,{color:"primary"})),a.createElement(l.Z,{mx:2},a.createElement(c.Z,{in:t,timeout:0,unmountOnExit:!0},a.createElement(f.j,{workerScripts:e.workerScripts}))))}},7806:(e,t,n)=>{"use strict";n.d(t,{j:()=>c});var a=n(67294),r=n(79255),o=n(97212),i=n(35300),s=n(77885),l=n(51087);function c(e){const[t,n]=(0,a.useState)(0),[c,u]=(0,a.useState)(l.Z.ActiveScriptsScriptPageSize);return a.createElement(a.Fragment,null,e.workerScripts.length>10?a.createElement(i.Z,{rowsPerPageOptions:[10,15,20,100],component:"div",count:e.workerScripts.length,rowsPerPage:c,page:t,onPageChange:(e,t)=>{n(t)},onRowsPerPageChange:e=>{l.Z.ActiveScriptsScriptPageSize=parseInt(e.target.value,10),u(parseInt(e.target.value,10)),n(0)},ActionsComponent:s.p}):"",a.createElement(o.Z,{dense:!0,disablePadding:!0},e.workerScripts.slice(t*c,t*c+c).map((e=>a.createElement(r.l,{key:`${e.pid}`,workerScript:e})))))}},26043:(e,t,n)=>{"use strict";n.d(t,{E:()=>g});var a=n(67294),r=n(93087),o=n(66351),i=n(97212),s=n(35300),l=n(31990),c=n(97467),u=n(51087),m=n(77885),f=n(42761),h=n(70769),d=n(96486),p=n.n(d);function g(e){const[t,n]=(0,a.useState)(""),[d,g]=(0,a.useState)(0),[y,b]=(0,a.useState)(u.Z.ActiveScriptsServerPageSize),v={};for(const n of e.workerScripts.values()){const e=(0,c.WT)(n.hostname);if(null==e){console.warn(`WorkerScript has invalid hostname: ${n.hostname}`);continue}let a=v[e.hostname];void 0===a&&(v[e.hostname]={server:e,workerScripts:[]},a=v[e.hostname]),void 0!==a&&(n.hostname.includes(t)||n.name.includes(t))&&a.workerScripts.push(n)}const k=(0,h.lr)(p().escapeRegExp(t)),w=Object.values(v).filter((e=>{if(!e)return!1;if(e.server.hostname.includes(t))return!0;for(const t of e.server.runningScriptMap.keys())if(k.test(t))return!0;return!1}));return a.createElement(a.Fragment,null,a.createElement(l.ZP,{container:!0},a.createElement(l.ZP,{item:!0,xs:4},a.createElement(o.Z,{value:t,onChange:function(e){n(e.target.value),g(0)},autoFocus:!0,InputProps:{startAdornment:a.createElement(f.Z,null),spellCheck:!1},style:{paddingTop:"8px"}})),a.createElement(l.ZP,{item:!0,xs:8},w.length>10?a.createElement(s.Z,{rowsPerPageOptions:[10,15,20,100],component:"div",count:w.length,rowsPerPage:y,page:d,onPageChange:(e,t)=>{g(t)},onRowsPerPageChange:e=>{u.Z.ActiveScriptsServerPageSize=parseInt(e.target.value,10),b(parseInt(e.target.value,10)),g(0)},ActionsComponent:m.p}):"")),a.createElement(i.Z,{dense:!0},w.slice(d*y,d*y+y).map((e=>e&&a.createElement(r.c,{key:e.server.hostname,server:e.server,workerScripts:e.workerScripts})))))}},79255:(e,t,n)=>{"use strict";n.d(t,{l:()=>T});var a=n(67294),r=n(22115),o=n(47542),i=n(7272),s=n(49557),l=n(46948),c=n(56798),u=n(30120),m=n(28881),f=n(81138),h=n(92557),d=n(41733),p=n(95309),g=n(61702),y=n(77541),b=n(51627),v=n(60181),k=n(23508),w=n(21951),E=n(39463),S=n(85167),C=n(49802),x=n(72326),N=n(72360),M=n(85882);const A=(0,y.Z)({noborder:{borderBottom:"none"}});function T(e){const t=A(),[n,y]=a.useState(!1),T=e.workerScript.scriptRef,L=w._.bind(null,T.pid),R=T.onlineMoneyMade/T.onlineRunningTime,F=T.onlineExpGained/T.onlineRunningTime;return a.createElement(a.Fragment,null,a.createElement(p.Z,{onClick:()=>y((e=>!e)),component:m.Z},a.createElement(g.Z,{primary:a.createElement(f.Z,null,"└ ",e.workerScript.name," ",JSON.stringify(e.workerScript.args))}),n?a.createElement(v.Z,{color:"primary"}):a.createElement(k.Z,{color:"primary"})),a.createElement(b.Z,{in:n,timeout:0,unmountOnExit:!0},a.createElement(u.Z,{mx:6},a.createElement(o.Z,{padding:"none",size:"small"},a.createElement(l.Z,null,a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(f.Z,null,"└ Threads:")),a.createElement(i.Z,{className:t.noborder},a.createElement(f.Z,null,(0,r.jL)(e.workerScript.scriptRef.threads)))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder,colSpan:2},a.createElement(f.Z,null,"└ Args: ",(0,x.N)(e.workerScript.args)))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(f.Z,null,"└ Online Time:")),a.createElement(i.Z,{className:t.noborder},a.createElement(f.Z,null,(0,C.UF)(1e3*T.onlineRunningTime)))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(f.Z,null,"└ Offline Time:")),a.createElement(i.Z,{className:t.noborder},a.createElement(f.Z,null,(0,C.UF)(1e3*T.offlineRunningTime)))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(f.Z,null,"└ Total online production:")),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(f.Z,null,a.createElement(N.W,{money:T.onlineMoneyMade})))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder,colSpan:1}),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(f.Z,null," ",(0,r.Mf)(T.onlineExpGained)+" hacking exp"))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(f.Z,null,"└ Online production rate:")),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(f.Z,null,a.createElement(M.G,{money:R})))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder,colSpan:1}),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(f.Z,null," ",(0,r.Mf)(F)+" hacking exp / sec"))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder},a.createElement(f.Z,null,"└ Total offline production:")),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(f.Z,null,a.createElement(N.W,{money:T.offlineMoneyMade})))),a.createElement(s.Z,null,a.createElement(i.Z,{className:t.noborder,colSpan:1}),a.createElement(i.Z,{className:t.noborder,align:"left"},a.createElement(f.Z,null," ",(0,r.Mf)(T.offlineExpGained)+" hacking exp"))))),a.createElement(c.Z,{onClick:function(){S.ki.emit(T)}},"LOG"),a.createElement(h.Z,{onClick:function(){L()&&(0,E.X)("Killing script")}},a.createElement(d.Z,{color:"error"})))))}},51674:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,g:()=>l});var a=n(67294),r=n(13342),o=n(48672);const i=["ttftfffttttttttttfffffffttftt1ttttttt111tttt1111111tttt1tt111tttt111111tttt1ttttttttttttttt111111111\nttfttttttttttttttttfLLLftfffffffffftttt111tt11111ttffffftttt1111111111111111ttttttfttttttttt111111t1\nttttttttttttttttffffLfftffffffffLLffttttttftt111ttfffffftttttttt111111ttttttffffttfffttttttt111111tt\nttttttttttttttttfffLfttffffffLLffffttttttttttt1tfffffffffftttttt111111tffffffffftttfffftttt11111ttt1\nttttttttttttffLfttfffttfffffffffttfftttttt1t1tt11tfffffftttttt111t111111ttffffLLffttfffftt111111tttt\nttttttttttffLLLLfttttffLLLfttttftfLftttttttffffttttffffttttfftt11t111tt111ttfffLffttfftttttt1111tttt\nttttttttffLLLLLLLffttfLLffttfffftfLfttttttffttt11111ttttffffffftt1111tft11111ttffffttt11tfftt11ttttt\ntttttttfffLLLLLLLLfftffttttffLffftfftttttft1i;;::::;iitffffffffftt111tft1tttt1ttffLfttttfffffttttttt\ntttttttfffLLLLLLLLfttttffftffffftfttttttff1:,,,,,,,,::itfffffffft11111111ttttttttttt1tfffffffffffttt\ntttffttffLLLLLLLLLfttfftffffffffLLLftttttt;::,:::;;;;::1tfffftfft11111ttt1ttt1tfttt11ttffffffffLfttt\ntffffffffLLLLLLLffftfLfffttfLLffLLLfttttti;;;iii11111;:i11ttffft111111tfft11t11tt1tttttfffLLLLLLfttf\ntfffffttttfLLLffttttfffffttLLLLfLLLftttfti:;;;iiiiiiii;it111tt111t1111tffttfftt11ttftttfffLLLLLLffff\nttttfttttffffftttttttttttttfLLLffLLfttttt1;;;;;;iiiiii;1tft11tt1111111tfftfffftttttttttttfLLfffttfff\ntfffffffffftttfffffffffttffttLLfffLfttttt11i;;;;iiiiiii1tt11tfftt11111ttt1fffttt1tttttttttfffftttttt\nttffffffffftttfffffffffttffftffttftttttff1ii;;;;iii1iii111tt1ttttt1111t111ffttffttfffffLffttttffffff\nttffffffffttttffffffffttttttttttffftttttft1ii;;;ii1iii111tfft11ttt111111t1tt1tfft1ttffffLLftttLLLLLL\ntttffffffffttfffffffftttttttt11fffftttt1t111iiii;iiiii11ttffft11111111ttttttt1tt11ttffffLfftttfLLLLf\ntttttttffffttfffttttttttffttt11tffttttttt11ttii;;;iiii11i1ffftt1111111tttt111tttt11ttttffffftffLLLff\ntfttttttttttttttttttttfffftttt11tfftttttt111t1i;;;iiii1i,,:;i1111t1111ttt111t1tfftt11111ttfftffffftt\nttttfffftttttttfffftttffffttffttttft111tt11111i;;;iiii1;,,....,:::;i11tt111tt11tffftttttttt1tttttttt\nt11ttffffftttffffffttttfffttffttttft1111111111;;;;;;;it;,...........,:it111ttt1tffftttttfft11ttfffff\ntt1ttfffftt1ttfffft111tffttfttttttt1111t1i;:;11i1i;;1t1:,,............,itt11tt1tfftt1tfffffft1tffLLf\ntfttttfttttt11tttt1ttt11ttttttftt111111i:,..:1111iii11;,...............;tt111t11ttttttttffttt11ffLLf\ntfftttttttfftttttttffftt111ttffftt11i;,.,...,iiii;;;;:,,...............:1ttt1111ttfffttttft1tt1ttfft\nttttttttttttttt11ttttttttttfffffft1:,..........::::::,,,...............,1ttttt11ttfffffttttffftttttt\ntfffttttffffftt11ttttttttttfffffft1:...........:;::;:..................,1tttttt1ttfffffttttttttftttf\ntfffttttfffffft1ttftttfftttttffft11:...........,:::::..................,1tttft11tfffffffttfffffffttf\ntfffttttffffff11tttttttttttttttttt1;...........,::::,...................;t1t1111tfffffLfttfffffffttf\ntfffttttfftttt11tttttttt1tfftttttt1:...........,::::,...... ............,1111tt11fffffLftttffttffttf\ntttttttttttttt11tttttttt1tffftttft1:...........,:::,,....................it1ttt11tfffffftttffttffttt\nttttt1tttttttt11ttttttttttffttttttt:...........,::,,.....................:111tt11tttttttt1tttttttttt\nttttt1tttttttt11tftttttftttttttttt1;,:;:.......,:,,,....................,,1111t11ttttttt11ttttttfttt\n1tttt1ttfffttt11ttffffffttttfffft11ii1i:.......,:,,,.....................,1tt1111ttttttt111tttttfttt\n1ttt11tttttttt11tttttttttttttttttti;;;;:.......,:,,,....... .............,itt1111tttt11t111ttttttt1t\n111111tttttttt11111111ttttttttttt1i;;;;:.......,:,,,......................itt11111111111111111111111\n1111111111111111111111ttttttttttt1;;;;;:...... ,:,,,,.....................itt11t11111111111111111111\n1111111111111111111111tttttttttt1;:,::;,...... ,:...,.....................ittttt11111111111111111111\n111111111111111111111111tttttttt1i,..... .... .:........................,i1tttt11111111111111111111\n1111111111111111111111111t11t11111;,....,,.... ,:::,,,...................,11ttttt11t1111111t11111111\n11111111111111111111111111111111111iiiiii. ... .::::::,..................,11t1ttt111t11111tttttt1111\n1111111111111111111111111111111111111111:.,.....::::::,..................:111tttttt1tttt11tttttt1111\n1111111111111111111111111111111111111111:::,...,::::;::,..,,.............:11tt1ttttttttttttttttt1111\n","ttftfffttttttttttffffffftfftttttttttt111tttt1111111ttttttt111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttftfLLLftfffffffffftt11111tt11111ttffffttttt1111111111111111ttttttfttttttttt111111tt\nttftttttttttttttffffLftttfffffffLLLfttttttftt111ttfffffftttttttt111111tttttffffftfffftttttt1111111tt\nttttttttttttttttfffLLttffffffLLffffttttttttttt1tffffffffffttttttt11111tffffffffftttfffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttfftttttt1tttt1ttftfffftt1ttt111t111111ttffffLLffttfffft1111111tttt\nttttttttttffLLLLfttttffLLLfttttttfLftttttttfft11i;;:;;i11ttfftt11t111tt111tttffffftttttttttt111ttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLttttttfff1;,,,,,,,,:;tffffft11111tft11111ttffffttt11tffftt1ttttt\ntttttttfffLLLLLLLLfftffttttffLffftfftttttfft1;:,,,,,::::,;tffftttt111tft1tttt1ttffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffffftfftttttfffti:;;;iiii11i;:tffffft11111111ttftttttttt1ttffffffffffttt\ntttffttffLLLLLLLLLftffftfLftfftfLLLftttttfft::i;iiiiii11i:1ffftft11111ttt1ttt1ttttt11ttfffffLLfLfttt\nttfLfffffLLLLLLLLfftfLLfffffLfffLLLfttttt1tt;:;;;;;iiiiiii1tffft11111tffft11t11tt1tttttfffLLLLLLffff\ntffftfttttfLLLffttttfffffttLLLLfLLLftttft111i;;;;;;iiiiii111tt111t1111tffttfftt11tfft1tfffLLLLLLLffL\ntttfftttttffLftttttttttttttfLfLffLLfttttttt1iii;;;;;ii11i1t11t11111111tffttfffttttttt11ttfLLLLffftff\nttfLffffffftttfffffffffttfftfLLfffLftttttfft1ii;;;;iii1i1tt1tfftt11111ttt1tffttt1ttt1tttttffffttffft\nttffffffffftttffffffffttfffftffffftttttfffft111;;;;iiii1111t1ttttt1111tt11ffttfftttfffffLfttttfffffL\nttffffffffttttffffffffttttttttttffftttttttt11ttii;iiiiii11tft11ttt111111t11t1tfft1tfffffLLftttLLLLLL\n1ttffffffffttfffffffftttttttt11ffffttttt1111tftiii;;iiii1;,;1111111111tttt11111111ttffffLfftttffLLLf\nttttttttfffttfffttttttttffttt11tffftttttt11ttf1;;;i;iiii1:,,.,,::;ii11tttt111tttt11ttffffffftffLLLff\ntfttttttttttttttttttttfffftttt11tfftttttt111tt1;;;i;;ii1t:,,........,:;1t111t1tfftt11111ttfftffffftt\ntftttffffttttttfftftttffffttffttttftt11tt111i;;;;;;;;;it1,,............,;11tt11tffffttttttt1tttttttt\ntttttffffftttfffffft1ttffftfffttttft111111;:,.;iii;;;i11,.,.............,1tttt1tffftttttfft111tfffff\n1tttffffftt1ttfffftt11tffttfttttttt1111i;,....,1iii;ii;,................,111tt1tfft11tffffftt1tLffLf\ntftttfftt1ttt1tttt1tttt1ttttttttt1111;:,.......i1;;;:::.................,it11t11ttttttttffftt11fffLf\ntfftttttttfftt1111ttfftt11ttfffftt1ti..........:i;::;:,..................ittt111t1tffttttft1tt1tffft\nttttttttttttttt11tttttttt1tffffffftti,.........,::::::,..................itttt11ttffffftttttfftttttt\ntfffttttfffffft11ttttttttttffffffft1i,.........,:,:::,...................,1tttt11tfffffttttttttffttf\ntfffttttfffffft11tftttfftttttffft1111:.........,:,:::,....................;tt111tfffffffttfffffffttf\ntfffttttfffffft1tttttttftttttttttt111;.........,:,::,,....................,111111fffffLfttfffffffttf\ntffftttttttffft11tttttttttffttttfft11i.........,:.:,,......................:1tt11fffffLftttffttffttf\ntttttttttttttt111ttttttt1tffftttfft111:....... ,:.:,,.......................1tt11tfffffftttffftffttt\nttttt1tttttttt11ttttttttttfttttttft111i,...... ,:,,,,......................,itt11ttttttt11ttttttfttt\nttttt1tttttttt11tfttttfftttttffttt1111i,...... ,:.,,,......................:11111ttttttt11ttttttfttt\n1tttt1ttftfttt11tfffffffttttfffft11111,....... ,,.,,....... ...............it1111ttttttt111tttttfttt\n1tttt1tttttttt11ttttttttttttttttt1111;,....... ,,.,,......................:tt11111ttt11t111ttttttt1t\n11t111tttttttt111t1111tttttttttt1iiii:,,...... ,,.........................;t111111111111111111111111\n111111111tt11111111111ttttttttt1;;iiii:....... ,,............ ...........;tttt1111111111111111111111\n1111111111111111111111ttttttttt1;;;iii;... ....,::::,....,:::,,.........;1ttttt111111111111111111111\n111111111111111111111111tttttttt1i;;ii: .,....,:::::... .;;;;;:,.....,;1ttttttttt111111111111111111\n1111111111111111111111111tt1111111i,,.,:;i: ...,:::::.....:;;;;;:.....,1ttttttttt11t1111111t11111111\n11111111111111111111111111111111111:.:1tti,....,:::::.... ,;;;;;;,.....ittttttttt111t11111ttttt11111\n1111111111111111111111111111111111111ttt;,,....,:::::,... .,;;;;:,.,,..:ttttttttttt1tttt11tttttt1111\n11111111111111111111111111111111111111t1,,,....:;;::::,.....:;;;:......,1ttttttttttttttttttttttt1111\n","ttftffftttttttttffffffLftfftttttttttt111tttt1111111tttt1tt111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttfffLLLftfffffffffttt11111tt11111ttfffft1ttt1111111111111111tttttffttttttttt111111tt\nttftttttttttttttffffLffttfffffffLLLfttttttfttt11tffffffftttttttt111111tttttffffftfffftttttt1111111tt\nttttttttttttttttfffLLttffffffLLffffttttttttttt1ttt1iiiii1tttttttt11111tffffffffftttfffffttt1111t1tt1\nttttttttttttffffttffftffffffffffttffttttt11tttt1i::,,,,,,:;111111t111111ttffffLLffttfLfftt11111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfft1i;,,,,,,,,,:;ttt11t111tt111tttffffftttftttttt111ttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLtttttffffti;::;;;;;iii::1ftt11111tft11111ttffffttt11tffftt1ttttt\ntttttttfffLLLLLLLLLftffttttffLffftffttttffffft;:;iiii11111i:iftttt111ttt1tttt11tffLfttttfffffttttttt\ntttttttffLLLLLLLLLfttttffftffLLftfftttttffffft;:;;;;;iiiiii;1fftt11111111ttftttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttttffffti;;;;;;;ii;iiitffft11111ttt1ttt1tfttt11ttfffffLLfLfttt\nttfLfffffLLLLLLLLffffLLfffffLfffLLLLtttttttff1iii;;i;;iii111tfft111111ffft11t11tt1tttttfffLLLLLLffff\ntffftftttffLLLffttttfffffttLLLLfLLLffttftt11t1iii;;;;;iiiii1tt111t1111tffttfftt11tfft1tfffLLLLLLLfff\nttffftttttffLftttttttttttttfLLLffLLftttttttft111i;;;;iiii1111111111111tffttfffttttttt11ttfLLffffftff\nttfLffffffftttfffffffffttfttfLLfffLftttttfffft11i;;;;iiii1t1ttttt11111ttt1tffttt11ttttttttfffftfttft\nttffffffffftttffffffffttfffftffffftttttfffft11t1i;;;;;iii1ii1ttttt1111t111ffttfft1tfffffLfttttfffffL\nttffffffffttttffffffffttttttttttffftttttttt11tft1i;;;;iii1i,:;i1ttt11111t11t1tfft1ttffffLLfttfLLLLLL\ntttffffffffttfffffffftttttttt11ffffttttt1111tfti;ii;;iiii1;,,...,:;ii1tttt1111tt11ttffffffftttffLLLf\nttttttttfffttfffttttttttffttt11tffftttttt11t1iii;;ii;;;i1t:,.........,:;1t111ttt111ttffffffftffLLLLf\ntfttttttttttttttttttttfffftttt11tfftt11tt1i:,.:;;;i;;;itti,,............,;1111ttttt11111ttfftffffftt\ntfttfffftttttttfffftttffffttffttttft1111i:....,;;;ii;i11;.,,.............:1tt1ttffffttttttt1ttttttft\ntttttffffftttffftffttttffftfffttttft1i:,.......:;;;;;;;:,................:tttt1tffftttttfft11ttfffff\n1t1tffffftt1ttfffftt11tffttftttttttt1,.........,ii;;;;;,.................:11tt1tfft11tfffffft1fLLfLf\ntftttfftt1ttt1tftt1ttt11ttttttttt111i,.........,11;:;;:,.................,1t1t11ttttttttfftt111fffLf\ntfftttttttffttt111ttfftt11ttffffftt11,.........,i;::::,..................,1tt11111ffft1ttt11tt1tffft\nttttttttttttttt11tttttttt1tffffffft11;..........::::::,...................;tt1111tfffftttttffftttttt\ntfffttttfffffft11ttttttttttffffffft11:..........:::::,..,;:,...............ittt1tttttffttttttttffttf\ntfffttttfffffft11tftttffttttfffft1111:..........:::::,..;1i;:,..............1t11tfffffffttfffffffttf\ntfffttttfffffft1tttttttftttttttttt111;..........::,:,...;ii;;;,.............:1111tffffLfttfffffffttf\ntffftttttttfft11ttttttttttfftttttft11i,.........::,,,...;;;;;i:..............;111tffffLfttfffttffttf\ntttttttttttttt111tttttttttffftttfft11i,.........::,,,...;;;;;i:..............:111tfffffftttffttffttt\ntttttttttttttt11ttttttttttfftttttft111:.........:,,,....::;;;;:.............,1t11ttttttt11tttttffttt\nttttt1tttttttt11tfttttfftttttfftttt111:.........:,,,......,::::..,.........,i1111ttttttt11ttttttfttt\n1tttt1ttfttttt11tfffffffttttfffft1111i:,........:,,,..... .......,,...... .it1111ttttttt111tttttft1t\n1tttt1tttttttt11ttttttttttttttttt1iiii;,........:........... ...........:itt11111ttt1t1111ttttttt1t\n111111tttttttt111tt111tttttttttti;;;iii:... ....:,,...................:i1tttt11111111111111111111111\n111111111tt11111111111tttttttttt1;;;;;;;. .,....::::..................:1tttttt1111111111111111111111\n1111111111111111111111ttttttttttt1i;;::..:;1,...::::...................;ttttttt111111111111111111111\n1111111111111111111111111tttttttt111i,.,it1;....::::,..................,1ttttttttt111111111111111111\n1111111111111111111111111tttt11111111ii1t1i:...,::::,........,..........itttttttt11t1111111tt1t11111\n11111111111111111111111111111111111111tt1;:....::::;:.......,...........:1ttttttt111t11111ttttt11111\n111111111111111111111111111111111111111ti,,....:;:;::,..................,ittttttttt1tttt11tttttt1111\n111111111111111111111111111111111111111t:,:.,.:;;;;:::,..................;111t1ttttttttttttttttt1111\n","ttftffftttttttttffffffLftfftttttttttt111tttt1111111tttt11t111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttfffLLLftfffffffffttttt1111t11111ttffffftttt1111111111111111tttttfftttttttt1111111tt\nttftttttttttttttffffLffttffffffffLLfttttttfttt11ttt1iiii;i11tttt111111tttttffffftffffttttttt111111tt\nttttttttttttttttfffLLttffffffLLffffttttttttttt1tt1::,,,,,,:;1ttt111111tfftfffffftttfffffttt1111t1tt1\nttttttttttttffffttffftffffffffffttfftttttt1ttt11i;:,,,,,,,,,:1111t1111111tffffLLffttfLfftt11111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttffft1;:::;;;;;;;::it11t111tt111tttffffftttfttttt1111ttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLtttttfffffti:;;ii111111i:itt11111tft11111ttffffttt1ttffftt1ttttt\ntttttttfffLLLLLLLLLftffftttffLffftffttttfffffft;:;;;;;iiiiii;ittt1111ttt1tttt11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLLftfftttttffffffti;;;;;;;ii;iiitttt11111111ttftttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttttfffff1iii;;i;;i1i1i1tttt11111ttt1ttt1tfttt111tfffffLLfLfttt\nttfLffffffLLLLLLLffffLLfffffLfffLLLftttttttfft1i;;;;;;;iiiiitfft111111ffft11t11tt1tttttffffLLLLLffft\ntffftfttttfLLLffttttffffftfLLLLfLLLftttftt1111111i;;;;iiii111t111t1111tffttfftt11tfft1tffLLLLLLLLfff\nttffftttttffLftttttttttttttfLLLffLLftttt1tttt11tti;;;iiiii111111111111tffttffftttttttt1ttfLLLfffffff\nttfLffffffftttfffffffffttfttfLLfffLftttttffft1111i;;;;;ii111tfttt11111ttt1tffttt11ttttttttfLfftfttft\nttffffffffftttfffffffffttffftffffftttttfffft11t11i;;;;iii1i:;1ttft11111111ffttfftttfffffLfttttfffffL\nttffffffffttttffffffffttttttttttffftttttft111tttiii;;iiii1;,,,:;i1111111111t1tfft1ttffffLLftttfLLLLL\ntttffffffffttffffffffttttttttttfffftttt1111i;:;iiii;;;i;11:,,.....,:;i1tft1111tt111tffffLfftttffLLLf\nttttttttfffttfffttttttttfftt111tfffttt11i;,,..:i;;;i;ii1t1,,..........,:i1111ttt1111tffffffftffLLLLf\ntfttttttttttttttttttttffffttttt1tffti;:,,.....,;;;iiii1ti,,,.............;1111ttttt11111ttfftffffftt\ntttttffffttttttfffftttffffttffttttf1:.........,;:;;;;;;;,.,,,............:1tt1ttffff11ttttt1ttttttft\ntttttffffftttffftfft1ttffftfffttttf1,..........,;;;;;;;:.:ii;;:,.........:tttt1tfffttttffft111tfffff\n1tttffffftt1ttfffftt11tffttfttttt1t1,...........ii;;;::,,;i;;ii:.........:tttt1tfft11tfffffft1fLLfLf\ntftttffttttt11tftt1tttt1ttttttttt11i,..........,1i;;::,.:i;;;;i:.........,1t1t11ttttttttfftt111fffLf\ntfftttttttffttt11tttffttt1tttffft11i,..........,ii;:::,.,:;;iii:..........it111111tfft1ttt11tt1tffft\nttttttttttttttt11tttttttt1tfffffftti,...........:::::,....:;;ii:..........:tt111ttfffftttttffftttttt\ntfffttttfffffft11ttttttttttfffffft1i,...........:::::,.....,:;;:.... ......,1t111ttttffttttttttffttf\ntfffttttfffffft11tftttffttttfffft111:...........:::::,........,..,..........,1111tffffffttfffffffttf\ntfffttttfffffft1tttttttftttttttttt11:...........::,:,........ ...:;,.........:111tffffLfttfffttffttf\ntffftttttttfft11ttttttttttffttttttti,...........:::,,.............,...........,i1tffffLfttfffttffttf\ntttttttttttttt111tttttttttffftttfft;,:;:........:::,.............. ...........:11tfffffftttffttffttt\ntttttttttttttt11ttttttttttfftttttftii1i;:.......:::,.......... ..............:t111tttttt11tttttffttt\nttttt1tttttttt11tfttttfftttttffttt1ii;ii;,......::,,........................:1111ttttttt11ttttttfttt\n1tttt1ttfttttt11tfffffffttttfffft11i;;ii;,......:,,,..........:........ .;t1111ttttttt111tttttft1t\n1tttt1tttttttt11tttttttttttttttttt11;:;i:,,.....:,.................. .;i;;1tt1111tttt1t1111ttttttt1t\n111111tttttttt111t111ttttttttttttt11i:,,:1;....,::....................:1ttttt11111111111111111111111\n111111111tt1111111111tttttttttttttt11i;;1t:....:::::...................;tttttttt11111111111111111111\n1111111111111111111111ttttttttttttt111ttt1,,,.,:::::,..................,1ttttttt11111111111111111111\n111111111111111111111111tttttttttt1111111i,::.,;::;:,...................;ttttttttt111111111111111111\n1111111111111111111111111ttttttt11111111t;.,,.,;;;;;,...................,1ttttttt11t1111111tttt11111\n111111111111111111111111111111111111111t1:..,,:;;;;;:,...................;ttttttt111t11111ttttt11111\n111111111111111111111111111111111111111ti,,,::;;;;;;;:,..................,1tttttttt1tttt11tttttt1111\n111111111111111111111111111111111111111t;,,::,;;;ii;;::,..................it1tttttttttttttttttt11111\n","ttftffftttttttttffffffLftfftttttttttt111tttt1111111tttt111111tttt1111111ttttttttttttttttttt11111111t\nttfttttttttttttttfffLLLftfffffffffttttt111tt11111ttffffftttt1111111111111111tttttfftttttttt1111111tt\nttftttttttttttttffffLffttfffffffLLLftttttttttt11ttt1iiii;i11tttt111111ttttttfffftffffttttttt111111t1\nttttttttttttttttfffLLttffffffLLffffttttttttttt1ttt;:,,,,,,,:itttt11111tfftfffffftttfffffttt1111t1ttt\nttttttttttttffffttffftffffffffffttfftttttt1tttt11i:,,,,,,,,,:i111t1111111tffffLLffttfLfft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttffft1;::;;;;;;;;;,;t111111tt111tttffffftttftt1tt1111ttttt\nttttttttffLLLLLLLffttfLLffttfffftfLLtttttffffff1,:iiii111111;:tt11111tft11111ttffffttt11tffft11ttttt\ntttttttfffLLLLLLLLLftffftttffLffftffttttfffffffi:;;;;;iiiii1;;ttt1111ttt1tttt11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLLftfftttttfffffff1;;;;;;;ii;;ii1ttt11111111ttftttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLffffftfLftffffLLLftttttfffff1iiiiii;;iiii1itttt11111ttt1ttt11tttt11ttfffffLLfLfttt\ntffLLffffLLLLLLLLffffLLftffLLLffLLLftttttttffftiii;;;;;ii1ii1tft111111ffft11t11tt1tttttffffLLLLLffft\ntfffffttftfLLLffttttfffffttLLLLfLLLftttft111tt111i;;;;iiiii1tt111t1111tffttfftt11tfft1tffLLLLLLLLfff\nttttfttfffffLftttttttttttttfLLLffLLftttt1tttt11tti;;;iiiii111t11111111tffttffftttttttt1ttfLLLfffffff\nttffffffffftttfffffffffttfftfLLfffLftttttffft11t1i;;;;;iii11ttttt11111ttt1tffttt11ttttttttfLfftftttt\nttffffffffftttfffffffffttffftffftftttttffft111t11i;;;;iii1ii11tttt1111tt11ffttfftttfffffLfttttffffff\nttffffffffttttffffffffttttttttttffftttttttt11111iii;;iiii1;,:;1tttt11111t11t1tfft1ttffffLLftttfLLLLL\ntttffffffffttffffffffttttttttt1tffftttt11i;:,:i;;i;;;;;i11,,..,,:;i111tttt1111tt11ttffffLfftttffLLLf\nttttttttfffttfffttttttttffttt11ttff1ii;:,....,;::;i;;i11ti,,.......,:;ittt111ttt1111ttffffffttfLLLLf\ntfttttttttttttttttttttfffftttt11tff;,,........;;;;iii1tti,,,,:;;::,....,i11111ttttt11111ttfftffffftt\ntfttfffffttttttfffft1tffffttfft1ttt:..........:;;;;;;;i;...,;i;iii:.....,i1tt1ttffff11ttt1t1ttttttft\nttttfffffftttfffffft11tffftffftttti,..........,:;;;;;;;,...,;;iiii,......;tttt1tffftttttftt111tfffff\n1tttffffftt1ttfffftt111ffttft11tt1;,...........;i;;;;;:,.....:;iii,......;tttt1tfft11tffffftt1fLLfLf\ntttttffttttt11tftt1tttt1tttt1tttti,............;1;::;;,......,;iii,......;t11t11ttttttttfftt111fffLf\ntfftttttttffttt111ttfftt111ttfffti.............;i;::::,.......,;;;,......;ttt11111tfft1tttt1tt1tffft\nttttttttttttttt11ttttttt11tffffffi,............,::;:::,..........,.......:ttt1111tfffftt1tttfftttttt\ntfffttttfffffft11tttttttttttffffti,............,:::::,..............,....,ittt11ttttttft1ttttttffttf\ntfffttttfffffft11tffttff11t1tfff1;...... ....,.,:::::,.....................;11111tffffffttfffffffttf\ntfffttttfffffft1tttttttfttttttti:,......:iiii;,,:::,:.......................,;111tffffffttfffttffttf\ntffftttttttfft11ttftttttttfftti,,::,.,:;1i;;;;.,::::,.........................,i1tffffLfttfffttffttf\ntttttttttttttt111ttttttt1ttfft1:::,,,:,:;;;;i:.,:::,,..........................;1tfffffftttffttffttt\nttttt1tttttttt11ttttttttttfttt1;,...,...:;;;:, ,:::,..........................;11ttttttt11ttttttfttt\nttttt1tttttttt11tfttttfftttttfti,..,....,,,....,:::,.........................:111ttttttt11ttttttfttt\n1tttt1ttfttttt11tfffffffttttffft1;::::,,.......,:,:,.................. .:1111ttttttt111tttttfttt\n1tttt1tttttttt11ttttttttttttttttttt11111:......,:,,,..................,::,:1tt1111ttt1t1111ttttttt1t\n111111tttttttt111t1111tttttttttttt111111:......,,.....................,1tttttt1111111111111111111111\n1111111111t11111111111ttttttttttttt11111:......,:,,....................:1t1ttttt11111111111111111111\n1111111111111111111111ttttttttttttt1111t:......,;;::....................:1ttttttt1111111111111111111\n111111111111111111111111ttttttttt1111111:......,::::,...................,itttttt11111111111111111111\n111111111111111111111111111tttt111111111:......,;;::,....................:1ttttttt1tt11111ttttt11111\n1111111111111111111111111111111111111111:......:;;;::,...................,ittttttt11t11111ttttt11111\n11111111111111111111111111111111111111t1:......:;i;;::,...................:11tttttt1tttt11ttttt11111\n1111111111111111111111111111111111111111,......:;;;;;::,..................,1tttttttttttttttttttt1111\n","ttftfffttttttttttfffffLftfftttttttttt111tttt1111111tttt111111ttttt11111tttttttttttttttttttt11111111t\nttfttttttttttttttfffLLLftffffffffftttttt111111111ttfffftt1tt1111111111111111ttttttftttttttt1111111tt\nttftttttttttttttffffLftttfffffffLLLft1tttttft111tfftttfttttttttt111111ttttttfffftffffttttttt11111tt1\nttttttttttttttttfffLfttffffffLLffffttttttttttt1ttti;;;;::;i1tttt111111tffffffffftttfffffttt11111ttt1\ntttttttttttfffffttffftffffffffffttfftttttt1ttt111i,,,,,,,,,;11111t1111111tffffLLffttfLfft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttffft1i::,,,,,,,,,:1t11t111tt1111ttffffftttftt1tt1111ttttt\nttttttttffLLLLLLLffttfLLLfttfLfftfLLtttttfffffti:;;iiiiiiii::1tt11111tftt1111ttffffttt11tffft11ttttt\ntttttttfffLLLLLLLLLftffftttffLffftfftttttffffft::;;iii1i111i:1ttt1111ttt1tttt11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLfftfftttttfffffft;;;;;;;iiiiii;tttt11111111ttftttttttt11tffffffffffttt\ntttfftfffLLLLLLLLLfttfftfLfffffffLLftttttfffft1ii;;;;;iiiiiitfttt11111ttt1ttt11tttt11ttfffffLLfLfttt\nttfLLfffffLLLLLLLfftfLLftfffLLffLLLftttttttfftiii;;i;;ii111itfft111111tfft11t11tt1tttttfffLLLLLLLfff\ntfffffttftfLLLffttttffffftfLLLLfLLLftttft111tt1iii;;;;iiiii1tt111tt111tffttfftt11tfftttffLLLLLLLLfff\nttttfttffttffftttttttttttttfLLLffLLftttt1tttt11t1i;;;iiii1111t11111111tffttffftttttttt1ttfLLLfffffff\nttfLffffffftttfffffffffttftttfLfffLftttttfffft11i;;;;iiii111tfttt11111ttt1fffttt1ttt1tttttfLLffftttt\nttffffffffftttfffffffffttfftttfttttttttffft11111i;;;;;iii1tt11tttt1111t111ffttffttfffffLLfttttfLffff\nttffffffffttttffffffffttttttttttffftt11ttt1111t1i;;;iii1i1itt11ttt111111t11t1ttft1ttffffLLftttfLLLLL\ntttffffffffttfffffffftttttt1111tffftttt11i;::i1iii;;;iii1i,:;i11t11111tttt1111tt11ttffffLfftttffLLLf\nttttttttfffttfffttttttttffttt11ttft1ii;:,....;i;;;ii;;i1t:,...,:;i1111tttt111ttt1111tttffffftfLLLLLf\ntfttttttttttttttttttttfffftttt11t1:,,........ii:;;iii1tt1,,,......,,;i1tt11111ttttt11111ttfftffffftt\ntfttfffffttttttfffft1tffffttfft11;,..........:;::;ii11t1:,,,...,,:,...,it11tt11tffffttttttt1ttttffft\nttttfffffftttfffffft11tfffttfttt1,....,,......,:;;;;;;i,.......:iii;;,.,1t1ttt1tffftttttfftt11tfffff\n1tttffffftt1ttfffft1111tfttft11ti,.............;i;;;;;:........:iiiii:..it11tt1tfftt1tfffffft1fLffLf\ntttttffttttt11tttt1tttt1tttt1tt;,..............i1;;;;;,........,;iii;,..it111t11ttttttttfftt111fffLf\ntfftttttttfftt1111ttfft11111tft:...............;i;;;;:,.........:;ii:..,ittt111111tfftttttt1tt1tffft\nttttttttttttttt11ttttttt11ttff1,...............,::::::......... ,;ii:...itttt111ttffffft1tttfttttttt\ntfffttttffftttt11ttttttt111tft;,........... ..,:;:::,...........,:;:...;ttttt11ttfffffttttttttffttf\ntfffttttfffffft11ttttttf11111;:,..... .....,:::::::::...............,...:1ttt1111fffffffttfffffffttf\ntfffttttfffffft11ttttttt11ti,,...........,:;i;;;:::::..................,.:tt11111tffffffttfffffffttf\ntffftttttttfff111ttttttt111,.,,,,...,,..,;;;;;i;:,::,....................,;i1t111tffffLfttfffftffttt\ntttttttttttttt111ttttttt11t:.......,....,:;;;;;:::,:,.......................:1t11tfffffftttffttffttt\nttttt11ttttttt11tttttttt11t1,............,,,...,::::.........................:111ttttttt11ttttttfttt\nttttt1tttttttt11ttttttfft1t1:,............ .. ,:::,........................,i111ttttttt11ttttttfttt\n1tttt1ttfttttt11tfftttfftttttt1;::,,::.........,:,,,........................i1111ttttttt111tttttfttt\n1ttt11tttttttt11tttttttttttttttttt111i.........,::,,................. . .;t11111ttt1tt111ttttttt1t\n11t111tttt1tt111111111tttttttttttt111i,........,:,,...................,..,itttt111111111111111111111\n1111111111111111111111tttttttttttt111i,....... ,:....................i111ttttttt11111111111111111111\n1111111111111111111111ttttttttttt1111i,....... ,:,::,................,i1t11tttttt1t11111111111111111\n111111111111111111111111tttttttt11111i,........,::;:,..................;1ttttttt11111111111111111111\n1111111111111111111111111tttt11111111i........ ,,:::,..................,1ttttttttttt1111111tt1t11111\n1111111111111111111111111111111111111i,........,,:::,...................it111ttttt11t11111ttttt11111\n111111111111111111111111111111111111t1,........,,,:::,..................,1t1ttttttt1tttt11ttttt11111\n11111111111111111111111111111111111111,........,,,;;::,..................i111ttttttttttttttttttt1111\n","ttftffftttttttffffffffLfttftttttttttt111tttt1111111tttt111111tttt1111111ttttttttttttttttttt11111111t\nttfttttttttttttttftfLLLftffftffffftttttt111111111ttfffftt1tt1111111111111111ttftttftttttttt1111111tt\nttftttttttttttttffffLftttfffffffLLLft11tttfft111tfffffffttt1ttttt11111ttttttfffftffffttttttt11111tt1\nttttttttttttttttfffffttffffffLLffffttt1ttttttt1tt111ii11tft1ttttt11111tfftfffffftttfffffttt11111ttt1\nttttttttttttffffttfffttfffffffffttffftttt111ttt1:,,,,,,,:i1111111t111111ttffffLLffttfLfft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLLfttttttftt1;:,,,,,,,,,;1tt111t1111t111tttffffftttftt1ttt111ttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLfttttffft1i;;;;;;;;;;::1tttt11111ttt11111ttffffttt11tffft11ttttt\ntttttttfffLLLLLLLLLftffftttffLLfftfftttttffffi:;iii111111i:ittttt1111ttt1tttt11tfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLfftfftttttfffff;:;;;;iiiiiii:ittttt11111111ttttttttttt11tffffffffffttt\ntttffftffLLLLLLLLLfttfftfLftfffffLLftttttffff1i;;;;;ii;iiiittttft11111ttt1ttt1ttttt11ttfffffLLfLfttt\nttfLLfffffLLLLLLLfftfLLftfffLfffLLLftttttttf1i1i;i;;iiii1i1tffft111111tfft11t11tt1tttttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttft1111iii;;;;ii1i1i11tt111t1111tffttfftt11tfftttfffLLLLLLLfff\ntttffttfftffLftttttttttttttfLLLffLLfttttttttt11i;;;;iiii11t11111111111tffttfffttttttt11ttfLLLfffffff\nttfLffffffftttfffffffffttftttfLfffLftttttffft11i;;;iiiii1t11ttttt11111ttt1fffttt1tttttttttfLLftftttt\nttffffffffftttfffffffffttffttfffttttttttfft1111i;;;;iii1111111tttt1111tt11ffttffttfffffLffttftffffff\nttffffffffttttffffffffttttttttttffftt11tttt11t1ii;;;iii11tfft11ttt111111t11tttfft1ttffffLLfttffLLLLL\ntttffffffffttfffffffftt1ttt1111fffft1tt11iiii1iiii;iiii1i:1tft11111111tttt111ttt11ttffffLfftttffLLLf\nttttttttfffttfffttttt1ttfft11111tft11i;:,..,;ti;;;i;iii1;,,,:;i1111111tttt111ttt1111tffffffftfLLLLLf\ntfttttttttttttttttttttfffftttt11i;::,,......iti::;i;iitt:,,....,:;i111ttt111t1ttttt11111ttfftffffftt\ntfttfffffttttttfffftttffffttft11:...........;ii::;i11tti,,,,.......,:itt111tt1ttffff11ttt111ttttttft\nttttfffffftttffftfft11tfffttftt;,............,:;;;;;11;,..............;1111ttt1tffftttttfftt1ttfffLf\n1t1tffffft11ttfffft1111tfttft11:.............,:ii;;;;;,...............:11t11tt1tfft11tfffffft1ffffLf\ntttttfftt1tt11tttt1ttt11t1111t;,..............:i1;;;;:,...............,111111t11ftttttttfftt11tfffLf\ntfftttttttfftt1111tttft11111t1,...............:ii;;;;,............,,,.,1tttt11111ttfftttttt1tt1tffft\nttttttttttttttt11ttttttt11ttfi................:;::;::,...........,;i;;:1tttttt11ttffffftttttfftttttf\ntfffttttftttttt11ttttttt11ttfi................,;;:::,............,;iiii1tttttft1ttffftfttttttttftttf\ntfffttttfffffft11ttttttt11111;........ .......:;:::,............:iiiii11ttftt11tfffffffttfffffffttf\ntfffttttftffff111ttttttt11ti:,....... ,:::;;:,.,;:::,............:;;ii:i11tt1111tfffffffttfffffffttf\ntffftttttfffft111ttttttt11i,.........,iii;;;,..,:::,.............::;;,.it1111tt11tffffffttfffftffttf\ntttttttttttttt111ttttttt11,.,,,,..,,,:;;;;;;,..,:::,.............,::;..:i111ttt11tfffffftttffttffttt\nttttt1tttttttt111ttttttt11;,,,...... .:;;;;:...,:,,,.....................:111tt11ttttttt11tttttffttt\nttttt1tttttttt11tttttttt111,..........,,,,.....,:,,.......................:111111ttttttt11tttttffttt\n1tttt1tttttttt11ttttttfft11i:,.....,.... .....,::,......................,1t11111ttttttt111tttttft1t\n1tttt1tttttttt11ttttttttttttt1ii;;;:...........,:,,.....................,it111111ttttttt111ttttttt1t\n11t1111tttttt111111111tt1tttttttt11:...........,:,,.............. .;t11111111111111111111111111\n1111111111111111111111ttttttttttt11,.......... ,,................,:,,,:i1tttt1t111111111111111111111\n1111111111111111111111tttttttttt11i,...........,,,,..............:1t11ttttttttttt1111111111111111111\n111111111111111111111111tttttt1111;........... ,,:;,..............:11ttttttttttttt111111111111111111\n11111111111111111111111111tttt1111;........... ,,:;:...............:111tttttttttt11t1111111tttt11111\n1111111111111111111111111111111111;....,,......,,,::................i1ttttttttttttt1t11111ttttt11111\n1111111111111111111111111111111111;............:,,;:,...............;1tttttttttttttttttt11ttttt11111\n1111111111111111111111111111111111:............,,:;;:...............,1t1tttttttttttttttttttttttt1111\n","ttftffftttttttfffffttfLfttftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttftffLLftffffffffttttttt111111111ttfffft1ttt1111111111111111ttttttftttttttt111111ttt\nttftttttttttttttffffLftttfffffffLLLftt1tttttt111ttfffffftttttttt111111tttttffffftffffttttttt111tttt1\nttttttttttttttttfffLfttffffffLLffffttt1tttttt11tffffffffffttttttt11111tffffffffftttfffffttt11111tttt\nttttttttttttffffttfffttfffffffffttffftttt11111111i;i11ttt11tt1111t111111ttffffLLffttfLfft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLLfttttttfti:::,,,,:;i1ttfttt11t111tt111tttffffftttftt1ttt11tttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLftttttft1;,,,,,,,,,,;tffffft11111tft11111ttffLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfLLfLftffttttfffti;:;;;;iii;::1fffffttt111ttt1tttt1ttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffLfftfftttttfffi;;iiiii1111i:iffffftt11111111ttttttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttttffi:;;;;iiiiiii:1ftttfftt1111ttt1ttt1ttttt111tffffffLfLfttt\ntffLLfffffLLLLLLLfftfLLftftfLfffLLLLttttt1t1i;;;;;ii;iiii1ttffft111111tfft1tt11tt1tt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttft11i1i;;;;i111iii111tt111t1111fffttfftt11tfftttfffLLLLLLLffL\ntttffttfftffLftttttttttttttfLLLffLLftttt1tti1i;;;;ii1iii1tt11111111111tffttffftttttttttttfLLLLfffffL\nttfLfffffffttffffffffffttftttfLfffLftttttfftt1;;;;iiii11ttt1ttftt11111tfttffftt111ttttttttfLLftftttt\nttffffffffftttfffffffffttffttfftttttttttfft111i;;;iiii1t111t1ttttt1111tt11ffttffttfffffLLfttffffffff\nttffffffffttttffffffffttttttttttfffttt1tft1111i;;;iiii111tfft11ttt111111t11tttfft1tfffffLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt1111tffft11t111111iiii;;iii111fffft11111111ttft111ttt11tfffffLfftttfLLLLf\ntttttttttffttfffttttt1ttfft1t11ttfftttt1iiii1i;;;iii1i1i,;i1ttt1111111tttt111tttt111tffffffftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tff11i;:,,,:11i;;iii;it;....,:;i111111ttt111t1ttftt11111ttfftffffftt\ntfttfffffttttttfffftttffffttfft1ii;:,,.....:11;:;;;;1tt;,,,.....,,;i11tt111tt1ttfffftttttt11ttttttft\nttttfffffftttffftfft11tfffttft1;,..........:1ii;;ii1tti,,,..........,it1111ttt1tfffttttffftt1ttfffLf\n1tttffffftt1ttfffft1111tfttft1i,............,:;ii;;i1i,..............:111111tt1tfft11tfffffft1ffffLf\ntftttffttttt11tttt1ttt11t1111t;..............,;1i;;;;,...............,1111111t11ftttttttfftt11tfffLf\ntfftttttttfftt1111ttttt11111tt:............. ,;ii;;;:,...............,i111tt11111tffftttttt1tttttfft\nttttttttttttttt11ttttttt11ttft,...............;;;;;:,.................ittttttt11ttffffftttttfffttttt\ntfffftttftttttt11ttttttt11ttf1,...............:;;;::,.......,,,.......;tttttfftttfffftfttttttttffttf\ntfffttttfffffft11ttttttt1111t1,...............:;;;::........,;i;:,....;t1ttfttt1tfffffffttfffffffttf\ntfffttttftffft111ttttttt11t111,...............,::::,........:iiiii:...;t11tt1111tffffLffttfffffffttf\ntffft1tttfffft111ttttttt11ttt1,..... ..........::::,.......,;iiii;,...it11111tt1tfffLfLfttfffftffttf\ntttttttttttttt111ttttttt11tt1:... .,..........,:::.........:;;i;,...,1t1t11tft11tfffffftttffttffttt\nttttt1tttttttt111ttttttt1tt1:,...:;ii:.........,::,.........,:;;:.....,it1111tt11ttttttt11tttttffttt\nttttt1tttttttt11ttttttttt1t;::,;iiii;,.........,:,,...........,,,......,;11111111ttttttt11tttttffttt\n1tttt1tttttttt11ttttttfft1ti:,,;;;:;;,.........,:,,.......... ..........:tttt1111ttttttt111tttttfttt\n11ttt1tttttttt11ttttttttttt1,.,::::;;:.........,:,,...............,....;ttttt1111ttttttt111ttttttt1t\n11tt11tttt1tt111111111111ttti:,,,::;:..........,:,,............ ......;ttttt11111111111111111111t111\n1111111111111111111111tttttttt1:,,,............,:,.............,. .,;11tttttt1111111111111111111111\n1111111111111111111111tttttttttt1:.............,,............ .11ii1ttttttt1111111111111111111111111\n111111111111111111111111tttttt111,.............,::,,...........ittttttttttttt11111111111111111111111\n11111111111111111111111111111111;..............,;;;:,..........:11tttttttttttttt11111111111111t11111\n11111111111111111111111111111111;..............,;;;:,...........:11tttttttttttttttt1111111ttttt11111\n11111111111111111111111111111111:..............,;;;;:...........:1ttttttttttttttttttttttt1ttttt11111\n11111111111111111111111111111111:..............,;i;::,..........,1tttttttttttttttttttttttttttttt1111\n","ttftffftttttttfffffttfffttftttttttttt111tttt1111111ttttt11111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttftffLLftffffffffttttttt111111111ttfffffttttt111111111111111ttffttftttttttt11111tttt\ntfttttttttttttttffffLffttfffffffLLLft11tttttt111tfffffffttttttttt11111ttttfffffftfLLfttttttt1111ttt1\nttttttttttttttttfffLfttffffffLLffffttt1ttttttt1ttfffffffffttttttt1111ttfftffffLftttfffffttt11111tttt\nttttttttttttffffttfffttffffffffftttfttttt111ttt1ttffffffttttt1111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttfLLLfftttttffLftttttttt11ii11fffft1ttfftt11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLLfttttt1i:;:,,::;i1tttffffftt11111tft11111ttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLftffttttffLffftffttttfti:,,,,,,,,,:;tfffffttttt111tftttttt1ttffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLfftffttttttti:::::;;;;;,,1ffttffttt11111111ttttttttttt1ttffffffffffttt\ntttfftfffLLLLLLLLLfftfftffftffffLLLfttttti;iiiii11111;:1ttfffffftt1111ttt1ttt1tftttt11tfffffLLfLfttt\nttfLLffffLLLLLLLLfftfLLftttfffffLLLLttttt;;i;;iiiiii1;:i11tfffft111111ffft1tt11tt1tt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttft1ii;;;ii;;iii;tt11ttt111t1111tffttfftt11tfftttffLLLLLLLLffL\ntttffttfftffLftttttttttttttfLLLffLLftttt11ti;;;iiii1iii1ttt1ttt1111111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttftttfLfffLfttttt11i;;;iii1iii1tttt1tfftt11111tfttffftt11tttttttttfLLffftttt\nttffffffffftttfffffffffttfftttfftffttttfft11;;;iiiii11tt111ttttttt1111tt1tffttffttfffffLLfttftfLffff\nttffffffffttttffffffffttttttttttfffttt1tft11i;iii11i11111tfft11ttt11111tt11tttfft1tffffLLLfttfLLLLLL\nttfffffffffttfffffffftt1ttt111tfffftttt11111i;i;iiii111ttfffft11111111tttt11tttt11tffffLLfftttfLLLLf\nttttttttfffttfffttttt1ttfftt111tfffttt111111;;i;;iii11i1ttffft11111111tttt111tttt11ttfffffLftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tffttt1t1ii1;;i;;iiii1;,::i11tt1tt1111ttt11tt1tfftt11111ttfftfLffftt\ntfttfffffttttttfffft1tffffttfft11tft11i::,,1ii;:;ii;it:,,...,,:;i11111tt111tt1ttfffftttttt11tttttfft\nttttfffffftttffftfft11tfffttfttttt1i:,....,it1i;;;;i1t;,,,,.......,;111t111ttt1tfffttttffftt11tffLLf\n1tttffffftt1ttfffft111ttfttft11i;:,........i1tt1ii1tt1:,,...........:1111111tt1tfftt1tfffffft1ffffLf\ntftttffttttt11tttt1ttt11t1111t;,...........,;;;11;;;;:..............,1t111111t1tftttttttfftt11tfffLf\ntfftttttttfftt1111ttttt11111tt:..............:;ii;;:,................it111tt11111tffftttttt1tttttfft\nttttttttttttttt11ttttttt11ttf1,..............,;;;;::,................it1tttttt1ttfffffftttttfffttttt\ntfffttttffttttt11ttttttt11ttfi................;;;:::,,:;:,...........;tttttttftttffffffttttttttffttf\ntfffttttfffffft11ttttttt1111ti................:;:::,.:;iii;,.........:111ttfftt1tfffffffttfffffffttf\ntfffttttftffff111ttttttt11t11;................,;:::,.;iiiii:.........:tt11ttt111tfffLfLfttfffffffttf\ntffft1tttfffft111ttttttt1tttt;................,::::,.:;;ii;,.........;ttt1111tt1tfffLLLfttfffftffttf\ntttttttttttttt111tttt1tt11ttti.................:::,...,;;i;,.........itttt11ttt11ffffffftttfftfffttt\ntttttttttttttt111ttttttt11tt1;.................:::,....,:;:,.........,1tt1111tt11ttttttt11tttttffttt\nttttt1tttttttt11ttttttttt1t11:.................:::,.... ..............:1111111t11ttttttt11tttttffttt\n1tttt1tttttttt11ttttttfft11ti;,................,::,.........,......... :ttttt1111ttttttt111tttttfttt\n11tt11tttttttt11tttttttt1tt1iiii:..............::,,...................:1tttt111111tttttt111ttttttt1t\n11t1111tttttt1111111111t111iiiiii:.............,:,,,.................:1ttttt11111111111111111111t111\n11111111111111111111111t11i;;iiii;.............,:,,,........... .,;ttttttttt1111111111111111111111\n1111111111111111111111tt1t1i;;ii;,.............,,........... :i;;i1tttttttt1111111111111111111111111\n1111111111111111111111111ttti:,,...............,,,.......... :ttttttttttttttt1t111111111111111111111\n11111111111111111111111111111;::...............:;;::,........,i11ttttttttttttttt1111111111111tt11111\n111111111111111111111111111111t;...............:ii;;:,........;t1tttttttttttttttt1t1111111ttttt11111\n1111111111111111111111111111111:...............:;i;:::........:tttttttttttttttttttt1ttttt1ttttt11111\n1111111111111111111111111111111:............. ,;ii;;;:,..,,...:ttttttttttttttttttttttttttttttttt1111\n","ttfttfftttttttffffftfffftfftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt11111111t\nttfttttttttttttttttffLLttffffffftttttt1t111111111tfffffftttt1111111111111111ttffttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffLLLftt1tttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt111ttttt\nttttttttttttttttfffffttffffffLLffffttttttttttt1tffffffffffttttttt11111tfffffffLftttfffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttffttttt1111tt1ttffffffttttt1111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffttttffffftttffftt11t111tt111ttfffLLftttftt1tt111tttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLftttttt11i;;;;i1tftttffffffftt1111tftt1111tffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLftffttttffLLfftffttttti:::,,,,::;i1tffffffffttt111tft1tttt1ttffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffLfftfftttt11;,,,,,,,:,,,;tffffffffttt1111t11ttttttttttt1ttffffffLfffttt\ntttfftfffLLLLLLLLLftffftfLftffffLLLftttt1i;;;;iiiii:,:1tttfffffftt1111ttt1ttt1tfttt111tfffffLLfLfttt\nttfLfffffLLLLLLLLfftfLLftttfLfffLLLLttt1i1iiiii1111i::1111ttffft111111ffft1tt11tt1tt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttt11;;;iiiiiii:;ttt111tt111tt111tffttfftt11tfftttffLLLLLLLLffL\ntttffttffttfLftttttttttttttfLLLffLLftttt1i;;;iii;iii;ittfft11tt1111111tfftfffftttttttttttfLLLLffffff\nttffffffffftttfffffffffttfttfLLfffLfttt111;;;i111111iitfttt1tfftt11111tfttfffttt1tttttttttfLLftfttft\nttffffffffftttfffffffffttffttffftfftttttt1i;;iiiii1i1tft11tttttttt1111tt1tffttffttfffffLLfttftffffff\nttffffffffftttffffffffttttttttttfffttt1ttti;;;i111iitt111tfft11ttt111111t1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111tfffftttt111ii;iii;ii11111tfffft11111111tfft11tttt11tffffLLfftttfLLLLL\nttttttttfffttfffttttt1ttfft1111tffftttt1111;;;i;;;i111ttttffftt1111111tttt111tttt11ttfffffLftfLLLLLf\ntfttttttttttttttttt1ttfffftttt11tfft111tt1i;;;i;;i1i1;i11tffftt11t1111ttt11tt1tfftt11111ttfftfLffftt\ntfttffffftt11ttfffftttffffttfft11tft11ii;ii;;;;:;iii1,.,,,:;iii1ttt111tt111tt1ttfffftttttt11ttttfftt\nttttfffffftttffftfft11tfffttftttttt1;:,..:11;;i;;;;11:,,,.....,,:i1111tt111ttt1tffftttttfftt1ttffLLf\ntt1tffffftt1ttfffft1111tfttft1111i:,.....,i11iiiii1tt:.,..........:111111t11tt1tffft1tfffffft1fLffLf\ntftttffttttt11tttt1ttt11t11111;:,.........;i11i1111t;..............;t11111111t1tfttttttfffftt1tfffLf\ntfftttttttfftt1111ttfft111111:.............,::;ii;;:...............:111111ttt111ttffftttfft1tttttfft\nttttttttttttttt11ttttttt11tt1,..............::;;;;;,...............,1111tttttt11tffLffftttttfftttttt\ntfffftttffttttt11ttttttt11tfi,..............,::;;::,,...............i111ttttfftttffffffttttttttffttf\ntfffttttfffffft11ttttttt111ti................::::::,:;;::,..........it111ttffttttfffLfLfttfffffffttf\ntfffttttftffff111ttttttt1tt1;................,;::::.:iiiii,.........;11111ttt11ttfffLfLfttfffffffttf\ntffft1tttfffft111ttttttt11tti,................::::,.:ii;ii:.........;tttt1111ttttfffLLLfttfffftffttf\ntttttttttttttt111ttttttt1ttf1.................,:::,.,:;iii:.. ......:ttttt11tft11tfffffftttfftfffttt\ntttttttttttttt111ttttttt1ttt;::...............,:::,. .:;ii:..........;ttt1111tt11tttttft11tttttffttt\nttttt1tttttttt11ttttttttt1t111i;,..............:::,....,::,...........;1111111t11ttttttt11tttttffttt\n1tttt1tttttttt11ttttttfftt1iiiiii:.............:::,.... ............. :ttttt1111ttttttt111ttttffttt\nt1ttt1tttttttt111ttttttttt1i;iiii;,............,:,,,................. ,1tttt111111tttttt111ttttttt1t\n11t1111tt1ttt11111111111111i;iii1i,............,::,,.................:1tttt11111111111111111111tt111\n11111111111111111111111111t1;;;;;,.............,:,,,.......... .:1tttttt111111111111111111111111\n1111111111111111111111111t11;,.................,:,,..........,;:::;1ttttttt1111111111111111111111111\n11111111111111111111111111111:..,..............,,............:ttttttttttttttttt111111111111111111111\n111111111111111111111111111111ii;..............,::,...........i111ttttttttttt11111t11111111111111111\n111111111111111111111111111111t;...............,;ii;::,.......:1ttttttttttttt11t1tt1111111ttttt11111\n111111111111111111111111111111i,...............:;ii;;;:,......,1ttttttttttttttttttt111111tttttt11111\n11111111111111111111111111111ti,...............:;ii;;;;:,..:..,1ttttttttttttttttttttttttttttttt11111\n","ttfttfffttttttffffttfffftfftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt1111111tt\nttfttttttttttttttttffLLttffffffffftttttt111111111tfffffftttt1111111111111111ttftttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffLLLftt1tttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttfffffttffffffLLffffttttttttttt1tffffffffffttttttt1111ttfffffffLftttfffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttffftttt1111tt1ttffffffttttt1111t111111ttffffLLLfttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffft1ttfffftttffftt11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttffLLLLLLLffttfLLLfttfffftfLftttttfttttttttttftttffffffftt1111tftt1111tffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLftffttttffLffftffttttt1ii::::;111tttffffffffttt111tft1tttt1ttffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffLfftffttttt1:,,,,,,,,:;ittffffffffttt1111t11ttttttttttt1ttffffffffffttt\ntttffttffLLLLLLLLLftffftfLftffffLLLftttti::,::::::,,,;ttttfffffftt1111tft1ttt1tffttt11tfffffLLfLfttt\nttfLffffffLLLLLLLfftfLLftttfLfffLLLfftt11iiiii111i;,,;t111tfffft111111ffft1tt11ttttt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttt1iiiii1111i:,iftt111ttt11tt111tffttfftt11tfftttffLLLLLLLLffL\nttttftttttffLftttttttttttttfLLLffLLftttti;;;ii;iiii::1ttttt11tt1111111tfftfffftttttttttttfLLLLffffff\nttfLfffffffttffffffffffttfttfLLfffLfttt1i;;i1i;iiii:;tftttt1tfftt11111tfttfffttt1tttttttttfLLftftttt\nttffffffffftttffffffffftfffttffftffttttti;;iii111i1iitft11tttttttt1111tt11ffttffttfffffLLfttftfffffL\nttffffffffftttffffffffttttttttttfffttttti;;;ii1111ii1t111tfft11ttt111111t11tttfft1tfffffLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111tfffftttt1i;;;iiiiii11111ttfffft11111111tfftt1tttt11tfffffLfftttfLLLLf\nttttttttfffttfffttttt1ttfft1111ttffttt111i;;ii;;;itt11ttttfffft1111111tttt111tttt11tttfffffftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tfft1t1t1i;;;ii;;it111ttttffftt11t1111ttt111t1tfftt11111ttfftfLffftt\ntfttffffftt11ttfffftttffffttfft1ttft11ii1;;;;i;:;i1;;i11tttft111tt1111tt111tt1tffffftttttt11ttttfftt\nttttfffffftttffftfft11tfffttftttt1i;:,,:1i;;;;i;;;1;.,,,;;i11111111111tt111ttt1tffftttttfftt1ttffLLf\n1tttffffftt1ttfffft111tffttft1ii:,.....,11iiiiiii1t:,,,.....,:;i111111111t11tt1tffft1tfffffft1fLffLf\ntftttffttttt11tttt1ttt11t11i;:,........,i1tt1ii11tt:,,,,........:t11111111111t1tfftttttfffftt1tfffLf\ntfftttttttfftt1111ttfftt11i,............::;;iiiii1;,,............it1111111ttt111ttffftttfft1tttttfft\nttttttttttttttt11ttttttt11;...............:;;;;:;;...............:111111tttttttttffLffftttttfftttttt\ntfffftttffttttt11ttttttt11:...............,;;;;;;:,..............,111111ttttfftttffffffttttttttffttf\ntfffttttfffffft11ttttttt11,...............,:;;;;:,...............,1111111ttffttttfffLfLfttfffffffttf\ntfffttttftffff111ttttttt11:...... ........:;;;;:,...............,11111111ttt1tttfffLfLfttfffffffttf\ntffft1tttfffft111ttttttt11:.......:;;;:....,;;::::.......,::,....,1tt11tt1111tt1tfffLLLfttfffftffttf\ntttttttttttttt111ttttttt11:.....:;;;;;:.....:;:::,.......,:iii;,.,1t1t11tt11tft1tffffffftttfftfffttt\ntttttttttttttt111ttttttt1i,.....:;:;;;:.....,::::,........;;iii;..;t1111t1111tt11tttttftt1tttttffttt\nttttt1tttttttt11tttttttt1i,.....:::;;;,......::::,.......,;;ii;:..,;1t11111111t11ttttttt11tttttffttt\n1tttt1tttttttt11ttttttttti....,,,,:;;,.......,:::,,.......,;;;;,....,it11tttt1111ttttttt111ttttffttt\n11tt11tttttttt111ttttttt1:,,.,,,..,,,.........::::,........,:;,..... ,1tttttt11111ttttt1111ttttttt1t\n1111111tttttt11111111111i,,..,,,.... .........::::,..................itttt111111111111111111111tt111\n1111111111111111111111111,...,,...............,::,,,...........,,...;tttttt1111111111111111111111111\n11111111111111111111111111,..... .............,::,,,......... . .:1tttttt1111111111111111111111111\n1111111111111111111111111ti,,,.,,..............::,,..........,,,::i1tttttttttt1111111111111111111111\n11111111111111111111111111111i11;..............:,............,1tttttttttttttt11111111111111111111111\n1111111111111111111111111111111i...............:;:::::,.......;tttttttttttttt11t1ttt111111ttttt11111\n1111111111111111111111111111111:...............:iiii;;::,......ittttttttttttttttttttt1111tttttt11111\n1111111111111111111111111111111,...............:iiiii;;:,......,1tttttttttttttttttttttttttttttt11111\n","tttttfftttttttffffftfffftfftttttttttt111tttt1111111tttt111111tttt111111tttttttttttttttttttt1111111tt\nttfttttttttttttttttffLLftfffffffffttt1tt111111111tfffffftttt1111111111111111ttftttftttttttt11111tttt\nttttttttttttttttfffffftttfffffffLLLftt1tttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttfffffttffffffLLffffttttttttttt1tffffffffffttttttt11111tfffffffLfttffffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttfftttttt11ttt1ttfffffftttttt11tt111111ttffffLLLfttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffft1tffffftttffftt11t111tt111ttfffLLffttfft1tt111tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLfttttttffffffttttftttffffffftt1111tftt1111tffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLftffttttfLLffftfftttttftttttttffttttffffffffftt111tftttttttttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftffttttttiii;::::i1ttttffffffffftt1111t11ttttttttttttttffffffffffttt\ntttffttffLLLLLLLLLftffftfLfttfffLLLfttt11:,,,,,,,:::itttttfffffft11111tft1ttt1tffttt11tfffffLLfLfttt\ntffLffffffLLLLLLLfftfLLftttfLfffLLLLfttt1i::::,,::,,,itt11tfffft111111ffft1tt11tt1tt1ttffLLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttttiiiiii1i;:,,:ttt111ttt11tt111tffttfftt1ttfftttffLLLLLLLLffL\nttttftttttffLftttttttttttttfLLLffLLftttti;iiii111i;:,iftftt11ttt11111tffftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttfttfLLfffLfttt1;;;ii;iiii;::1ffttt1tffft11111ffttfffttt11ttttttttfLfftftttt\nttffffffffftttffffffffftfffttffftfftttt1;;i1i;;iii;:itft11tttttfttt111tt1tffttffttfffffLLftfftfffffL\nttffffffffftttffffffffttttttttttffftttt1;;iiii111iii1t111tfft1tttt111111t1ttttfftttfffffLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111ttffftttti;;iiiiiiiii1111ttfffft11111111tffttttttt11tfffffLfftttfLLLLL\nttttttttfffttfffttttt1ttfft1111ttfftttt1;;;iiii;;itt11tffffffft1111111tttt111tftt11tttfffffftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tfftttt1i;;;;ii;;it1111tftfffft11t1111ttt111t1tfftt11111ttfftfLffftt\ntfttfffffttt1ttfffftttffftttfft11tft111i;;;;;ii;;i111111tttft111tt1111ttt11tt1tffffftttttt11ttttffft\nttttfffffftttffftfft11tfffttfttt11i;;:ii;;;;iiiii1;11tt111t11111tt1111tt111tft1tffffttfffftt11tffLLf\n1tttffffft11ttfffft1111tfttftii;:,....;1i;;;;ii111,,:;i1tt11tt11111111111t11tt1tffft1tfffffft1fLffLf\ntftttffttttt11ttt11ttt1111i;:,.......,i1tiiii;;11i,,,..,:;i1t1t111t1111111111t1tfftttttfffftt1tfffLf\ntfftttttttffttt111ttttt1i:...........,ii111iii11i:.,,......,:;1t111111111tttt111ttfLftttfftttttttfft\nttttttttttttttt11tttt11t;..............,::;;i1ti:,............,1t1111111tttffttttffLfffttttffffttttt\ntfffttttfftfttt11tttttt1,...............:;:;;;;;:..............;tt111111tttffftttffffffftttttttffttf\ntfffttttfffffft11tttttt1................,;;;;;;;:..............:t11111111ttffttttffLLfLfttfffffffttf\ntfffttttfttftt111tttttti............... .:;;;;;:,..............:1111111111tttttttffLLfLfttfffffffttf\ntffft1ttttttft111tttttt;............. .:;;;;;;:::..............:111tt11tt111ttt1tfffLLLfttfffftffttf\ntttttttttttttt111ttttt1,..............:;i;;i;::::..............:1ttt1111tt11tff1tffffffftttfftfffttt\nttttttttttt1tt111ttttt;..............:;;;;;i:::::..............;1111111111111tt11tttttftt1tttttffttt\nttttt1tttttttt11tttttt:..............:;;;::;:::::..............;t1111111111111t11ttttttt11tttttffttt\n1tttt1tttttttt11ttttt1,........... .,,:,...,:::::..............,11i;;i111tttt1111ttttttt111ttttffttt\n11tt11ttttttt1111tttt;............,..... ...,::::...............:i;:;;i1ttttt11111tttttt111ttttttt1t\n11111111t1tt111111111,............,.........,::::,..............,:::;ii1tt111111111111111111111tt111\n111111111111111111111,............ .........,,,::,..............::::;i11tt11111111111111111111111111\n1111111111111111111111:....... .............,,:,,..............,::::i111t11111111111111111111111111\n11111111111111111111111:....,,,,.............,:::,,..................,1t1111111111111111111111111111\n111111111111111111111111iiii11t; .............,:,..,........ ..:1tttttt11111111111111111111111\n111111111111111111111111111111t:...............:,,,:,,......,,,,,:;;1tttttttt1t111tt1111111tttt11111\n111111111111111111111111111111t: .............::;ii;::,.....,i111ttttttttttttttt11ttt111111tttt11111\n111111111111111111111111111111t:..............:;;iiii;:,.....,i1ttttttttttttttttttttttttttttttt11111\n","tttttfttttttttffffffffffffftttttttttt111tttt1111111ttttttt111tttt111111tttttttttttttttttttt1111111tt\nttfttttttttttttttttffLLftfffffffffttt1tt111111t11tfffffftttt1111111111111111ttftttftttttttt111111ttt\nttttttttttttttttffffLftttfffffffLLLfttttttttt111tfffffffftttttttt11111tttttffffftffLfttttttt11111ttt\nttttttttttttttttfffffttffffffLLffffttt1ttttttt1tffffffffffttttttt11111tfffffffLffttfffffttt1111ttttt\nttttttttttttffffttfffttfffffffffttfftttttt11ttt1ttfffffftttttt11tt111111ttffffLLLfttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfLftttttttfffft1ttfffffttffftt11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLfttttttffffffttttffttffffffftt1111tftt111ttffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfLLffftfftttttfftffffffftttfffffffffftt111tft1tttttttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftfftttttt1iii::;i1ttttfffffffffftt1111t11ttttttttttttttffffffffffttt\nttttfttfLLLLLLLLLLfftfftfLfttfffLLLfttt11:,::,,,,,:;1tttttfffffftt1111tft1ttt1tffttt11tfffffLLLLfttt\nttffffffffLLLLLLLfftfLLftttfLLffLLLffttt1;:,,,,,,,,,;ttt11tfffft111111ffft1tt11ttttt1ttffLLLLLLLLfff\ntfffffttttfLLLffttttfffffttLLLLfLLLftttt1iiiiiiii;:,,iftt111ttt11tt111tffttfftt11tfftttffLLLLLLLLffL\nttttftttttffLftttttttttttttfLLLffLLfttt1i;iii1111i:,:1ftfft11ttt111111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttffttfLfffLfttt1;;;i;iii1i:,;tffttt1tffft11111tfttfffttt11ttttttttfLLftfttft\nttffffffffftttffffffffftffftttfffffttt11;;;ii;;iii::1fft11tttttfttt111tt1tffttffttfffffLLffffffffffL\nttffffffffftttffffffffttttttttttfffttt1i;;iiiii11i;itt111tfft1tttt111111t1ttttfftttffffLLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111ttfffttt1i;;iiiiiiiii1111ttfffft11t11111tffttttttt11ttffffLfftttfLLLLL\nttttttttfffttfffttttt1ttfft1111ttffttt1i;;;iiii;;;1t11tffffffft1111111ttttt1ttfft11ttffffLfftfLLLLLf\ntfttttttttttttttttt11tfffftttt11tfftt111;;iiiii;;;1111ttftfffft11t1111tttt1tt1tffttt1111ttfftfLffftt\ntfttfffffttt1ttftfftttffftttfft11tft1i1i;;;;iii;;;111111tttft111tt1111ttt11tf1tffffftttttttttttttfft\n111tfffffftttffftttt11tfftttfttt11i;;;1;;;;;iiii;i1t11t111t11111tt1111tt111tft1fffffttfffftt11tffLLf\n1t1tffffft11ttffttt1111tftttti;:,,...:1i;;;;iiii1i:;i1ttt111tt11111111111t11tt1tffft1tffffffttfLffLf\ntftttfftt11t11ttt11ttt111i;:,,.......:11ii;;ii;11i,.,,:;11tt11tt11t1111111111t1tffttttffffftt1tfffLf\ntffttttttttftt1111ttttt1:............:1111iiii1ti;,,....,,;i1tttt11111111tttt111ttfLffttfftttttttfft\nttttttttttttttt111ttt1t;...............,:;;i1tt1;,..........,itttt111111tttttttttffLfffttttffffttttf\ntfffttttfftfttt11ttttt1,................:::::;i;:,...........,1ttt111111ttttfftttffffffftttttttffttf\ntffft1ttffffff111ttttti.................,;;;;;;;:,...........,1t111111111ttffttttffLLfLfttfffffffttf\ntffft1ttfttttt111ttttti................,,;;;;;;::,............it1111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt111ttttt;.............:;iii;;:;;:::,............it1111111tt111tttttfffLLLfttfffftffttf\nttttt1tttttttt111tttti,............,;;iiii::;::::,...........,1ttttt111ttt11tft1tfffffLftttfftfffttt\nttttt1tttt11tt111ttt1:.............:;;;iii;::::::............,1tttt1111111111tt1tttfttftt1tttttffttt\nttttt1tttttttt11tttti..............,;;;;:,,:::,,:............:tt11t11111111111t11ttttttt11tttttffttt\n1tttt1tttttttt11tttt:............. ,::,. .::,,,:........... :t1111111t111ttt1111ttttttt111ttttffttt\n11tt11tttttt111111ti.......................,:::::.............it111t11111tttt1111tttttt1111ttttttt1t\n1111111111111111111,.............,.........,:::::.............:1t11ii;:;11111111111111111111111tt111\n1111111111111111111:........................,,:::..............;ii;:;:;ii111111111111111111111111111\n11111111111111111111:....... ..............,,,:,...............,:::::;i1111111111111111111111111111\n111111111111111111111:......,,..............,,,:,...............:::;::;i11t1111111111111111111111111\n1111111111111111111111iiiiii1;...............,,,,.,..............,::::;11111111111111111111111111111\n11111111111111111111111111111;................,,:,,,...... .it1111111111111111111111111111\n1111111111111111111111111111t;...............;i;;;::,.....,,.....,,,;i1ttttttttt11tt111111ttttt11111\n1111111111111111111111111111t;...............:i;;i;::,....:i111111tttttttttttttttttttttttttttttt1111\n","tttttfttttttttffffftfffftfftttttttttt111tttt1111111ttttttt111tttt111111tttttttttttttttttttt1111111tt\nttfttttttttttttttttffLLftfffffffftttt1t1111111t11tfffffftttt1111111111111111ttftttftttttttt111111ttt\nttttttttttttttttffffLftttfffffffLLfftt1tttttt111tfffffffftttttttt11111tttttffffftffLfttttttt11111ttt\nttttttttttttttttfffffttffffffLLLfffttt1ttttttt1tffffffffffttttttt11111tfffffffLffttfffffttt1111ttttt\nttttttttttttffffttfffttffffffffftttftttttt11ttt1ttfffffftttttt11tt111111ttffffLLLfttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttfffttttt1tfffft1ttfffffttfffft11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLftttttttfffffftttffttffffffftt1111tftt111ttffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfLLffftffttttt111i;iitfftttfffffffffftt111tft1tttttttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftfftttt1;:,::,,,:;ittttffffffffftt1111t11ttttttttttttttffffffffffttt\ntttffftfLLLLLLLLLLfttfftfffttfffLLLftt1i:,,,,,,,,,,:1tttttfffffftt1111tft1ttt1tffttt11tffffLLLLLfttt\nttffffffffLLLLLLLfftfLLftttfLLffLLLftt1i;;;;;;;i;:,:tftt11tfffft11111tffft1tt11ttttt1ttfffLLLLLLLfff\ntfffffttttfLLLffttttfffffttLLLLfLLLft1;iiiii11111i::tffft11tttt11t111tfffttfftt1ttfftttffLLLLLLLLffL\ntttfftttttffLftttttttttttttfLLLffLLftt11;;;iiiiiii:;tffffft11tt1111111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttffttLLfffLft11i;;;;i;;iii;tffffttt1tffft11111tfttfffttt1tttttttttfLLftffttt\nttffffffffftttffffffffftffffttfftfttt11i;;;i1iii1iitffft11tttttfft1111tt1tffttffttfffffLLfffftfLffLL\nttffffffffftttffffffffttttttttttffftt11i;;;iii111ii1tt111tfft1ttft111111t1ttttfftttffffLLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt111ttffftttti;;;;iiiiii11111ttfffft11t11111tfftttttttt1tfffffLLftttfLLLLf\nttttttttfffttfffttttt1ttfft1111ttffttt1i;;;iiii;;itt11tffffffft1111111ttttt1ttfft11ttffffLfftfLLLLLf\ntftttttttttttt1tttt11tfffft1tt11tfft111;;;;;iii;;it111ttfffffft11t1111tttt1tt1tffftt1111ttfftfLffftt\ntfttffffftt11ttftfftttffftttfft11tti;;1;;;:;iii::i111111ttfft111tt1111ttt11tf1tffffftttttttttttttfft\n111tfffffftttffftttt11tfftttft1i;:,..,1i;;;;iii;i;:;;1t111t11111tt1111tt111tft1fffffttfffftt11tffLLf\n1tttffffft11ttffftt1111tt1ii:,,......,i1i;;;ii;11;...,:;i111tt11111111111t11tf1tfffttfffffffttfLffLf\ntfttttftt11t11ttt11ttt11;,,..........,11t1iiii1t1:,,.....,:i111111t1111111111t1tffttttffffttt1tfffLf\ntffttttttttfttt111ttttti,.............:;;iii11t1i,,.........,ittt11111111tttt11tttfLffttffttttttffft\nttttttttttttttt111tttt1:................:;;;;;i;:,...........:ttt1111111tttffttttffLLffttttffftttttf\ntfffttttftttttt11ttttti.................,;;;ii;;:............,1ttt11111ttttffftttffffffttttttttffttf\ntffft1ttfffftf111ttttti..................:;;;i;;:,...........,1tt11111111ttffttttffLLfLfttfffffffttf\ntffft1ttfttttt111ttttt;..................,;;;;;::,...........,1t1111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt111ttttt;...........,,.....,;;:;:::............,111111111tt111tttttfffLLLfttfffftffttf\nttttt1tttttttt111tttti,........,;ii:......:;:::::............,ittttt111ttt11tft1tfffffLftttfftfffttt\nttttt1tttt111t111tttt;........:;;;;:,.....,;:::::.............ittttt1111t1111tt1ttfttttttttttttffttt\nttttt1tttttttt11tttt1,.......,:::;;;,......::::::.............;tt1t1111111ttt1tttfttttttt1tttttffttt\n1tttt1tttttttt11tttti.........,:::;:.......,:::::..........,,:;1t11111111ttff1111ttttttt111ttttffttt\n111111tttttt111111t1,..........,:::........,:::::..........,:;;i1111t111ttttt11111ttttt1111ttttttt1t\n1111111111111111111;............,,.........,::::,.........,:;;;i1111111111111111111111111111111tt111\n11111111111111111111:.......................,:::,.. ......,:;;ii111111111111111111111111111111111111\n111111111111111111111:.......,..............,:::,..........,::i11t1111111111111111111111111111111111\n1111111111111111111111:,,..,, ..............,,,::,............,1111111111111111111111111111111111111\n1111111111111111111111111i11:...............,..,:,,..... ..:1t11111111111111111111111111111111111\n111111111111111111111111111;................,::::,,.....::::;i11tttt111111t1111111111111111111111111\n111111111111111111111111111,.................ii;;::,....:1tttt1ttttttttttttttttt11tt111111ttttt11111\n1111111111111111111111111ti..................;i;;;:,.....;t1ttttttttttttttttttttt1ttttttttttttt11111\n","ttffftfffttttttttftttfffttftttttttttt111tttt111111tttttttt111tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLLftfffffffftttt1t111t111t11tfffffftttt111111111111111tttftttfttttttttt1111tttt\nttttttttttttttttffffLftttfffffffLLffttttttttt111tfffffffftttttttt11111ttttfffffftfLLfttttttt111tttt1\nttttttttttttttftfffffttffffffLLffffttttttttttt1tffffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\nttttttttttttffffttfffttffffffffftttfttttt1111tt1ttffffffttttt1111tt11111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttffftttt11tttffttttfffffttfffft11t111tt111ttfffLLftttftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLftt11ii;i;;ii1tttffttffffffftt1111tftt111ttffLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfLLffftfftt1:,,,,,,,,:iftttfffffffffftt111tft1tttttttfLLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftff1i;;:,,,,,,,,:;ttttfffffffffftt1111t11ttttttttttttttffffffffffttt\ntttffftfLLLLLLLLLLfttfftfffttfffLLLt;,,:;;;;;iiii:ittttttffffffftt1111tft1ttt1tftttt11tffffLLLLLfttt\nttffffffffLLLLLLLfftfLLftttfLLffLLLfi,:iiii111111;1ffftt11tfffft11111tffftt1t1tttttt1ttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttLLLLfffffi:;;;;;iiiiiiitffffft11tttt11t111tfffttffft1ttfftttffLLLLLLLLffL\ntttfftttttfffftttttttttttttfLLLffLLti;;;;;i;;iiii1ftffffftt11tt1111111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttffttfLfffLtii;;;ii;;i1111tfffffttt1tffft11111tfttffftttttttttttttfLLfffffft\nttffffffffftttffffffffftffffttfftftt1ii;;;;;;iii11ttffft11tttttfftt111tt1tffttffttfffffLLffffffLffLL\nttffffffffftttffffffffttttttttttffftt11i;;;;;i111111tt111tfft1ttft11111tt1ttttfftttffffLLLfttfLLLLLL\ntttffffffffttfffffffftt1ttt1111tfffttti;;;;;;iiiii11111ttfffft11t11111tfftttttttt1ttfffLLLftttfLLLLf\nttttttttfffttfffttttt1ttfft11111tfft11i;;;:;;ii;;itt11ttfffffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntftttttttttttt1tttt11ttffft1tt11ttti::i;;;:;iii;;;i;i1ttftfffft1tt1111tttt1tt1tffftt1111tffftfLffftt\ntfttffffftt11ttftfft1tffftttff1i;:,...;1;;;;;i;:;i,..,:;i1tft111tt1111ttt11tf1tffffftttttttttttttfft\n111tfffffftttffftttt11tfft11i;:,......,11;iii;;iii,,,....,:;i1111t1111tt111tft1fffffttfffftt11tffLLf\n1tttffffft11ttffftt1111t1;;,..........,i1t11ii11i:.,........,111111111111t11tt1tfffttfffffffttfLffLf\ntfttttftt11t11ttt11ttt11:..............;iiiiiii11,,,......,,,itt11t1111111111t1tffttttffffftt1tfffLf\ntffttttttttfttt111ttttt;................,;;;i;;ii,...........;ttt11111111ttt111tttfLffttfft1ttttffft\nttttttttttttttt111ttt11:.................:;;;i;::............;ttt1111111tttftttttffLLffttttffffttttf\ntfffttttftttttt11ttttt1,.................,;;;;;;:............:ttttt11111tttffftttffffffftttttttffttf\ntffft1ttfffftf111ttttt1,..................:;;;:::............:1tt11111111ttffttttffLLfLfttfffffffttf\ntffft1tttttttt111ttttti...................,;;::::............,111111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt111ttttt:...................,::::::,:::,.......,1t1t11111tt111tttttfffLLLfttfffftffttf\nttttt1tttttttt111tttt1,....................,::::::;;;ii:......ittt11111ttt1ttff1tfffffLftttfftfffttt\nttttt1ttttt11t111tttti.....................,:::::,;;;ii;,.....itttt1111tt111tttttttttttttttttttffttt\nttttt1tttttttt11ttttt;........ .............:::::,;;;ii;,.....:1t1t1111111tttttttfttttttt1tttttffttt\n1tttt1tttttttt11ttttt:.... :i;:.............:::::..,;;i:.......it11111111ttff1111tfttttt11tttttffttt\n11tt11tttttt1111111t1,...,;iiii;, ..........::::,. .,:,......;111111111ttttt1111ttttttt111ttttttt1t\n11111111111111111111i..,.,;;;iii;...........:::::.......,....itt1111111111111111111111111111111tt111\n11t111111111111111111;....::;;ii;...........::::,..........,;111111111111111111111111111111111111111\n1111111111111111111111, ...,:;;;,............,,:,.....,,:;11tt11111111111111111111111111111111111111\n1111111111111111111111i:,....... ............,,:,.....:1tttttt11111111111111111111111111111111111111\n1111111111111111111111111;.,. ..............;;;:,,....,it11ttt11111111111t11111111111111111111111111\n111111111111111111111111i,..................;ii;:,.....,1t1ttttt1111111111t1111111111111111111111111\n111111111111111111111111:...................;ii;;:......;ttttttttttt11tttt1t111111tt11111111ttt11111\n111111111111111111111111:...................:i;:;;,.....:t1tttttttttttttttttttttt1tttttttttttttt1111\n","ttffftfffttttttttttttfffttftt111ttttt111tttt111111ttttttttt11tttt111111ttttttttttttttttttttt111111tt\nttfftttttttttttttttffLLftfffffffftttt111111111t11tffffffttttt11111111111111tttftttfttttttttt1111tttt\nttttttttttttttttffffLftttfffffffLLfft111ttttt111tfffffffftttttttt11111ttttfffffftfLLfttttttt111ttttt\nttttttttttttttttfffffttffffffLLLfffttt1ttttttt1tffffffffffttttttt1111ttffffffLffttffffffttt1111tttt1\nttttttttttttfffftttffttffffffffftttftt1t1iii11111tfffffftttttt11tt111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttffft11i:,,,::::;1tfffftttfffft11t111tt111ttfffLLfttfftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffftfft1;:,,,,,,,,,:tttttttffffffftt1111tftt111tttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffLfftt1::,,,,,:::::;itfttttffffffffftt111tft1ttfttttfLLfttttfffffftttttt\ntttttttfLLLLLLLLLLfttttffftffffttf1,,,,:;iii1111itftttfffffffffftt1111t11ttffttttttttttffffffffffttt\ntttffftfLLLLLLLLLLfttfftfffttffffft:,,,:;iii111ii1tttttttffffffftt1111tft1ttt1tftttt11tffffLLLLLfttt\nttffffffffLLLLLLLfftfLLftttfLfffLft:,,:;;;;iiiiii1tffftt11tfffft111111ffftt1t1tttttttttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttfLLfffft;:::;;;iii;iii1tffffft11tttt11tt111fffttffft1ttfftttffLLLLLLLLffL\ntttfftttttfffftttttttttttttfLLLffffti;;;i;;iii;iitfffffffft1tttt1t1111tfftfffftttttttttttfLLLLffffff\nttfLffffffftttfffffffffttffttfLftfft1i;;;;;iiiii11ffffftttt1tffft11111tfttffftttttttttttttfLLffffftt\nttffffffffftttfffffffftttfftttftttttt1;;;;;iiiii11ttffft11tttttfftt111tt1tffttffttfffffLLffffffLffLL\nttffffffffftttffffffffttttttttttfftt11i;;;;;;ii1111ttt111tfft1ttft11111tt1ttttfftttffffLLLfttffLLLLL\ntttffffffffttfffffffft11ttt1111ttff1;i;;;;;;;ii;iiii111ttfffft11t11111tfftttttttt1tffffLLLftttfLLLLf\nttttttttfffttffftt1tt1tttft1111tt1;,.:i;;;;;iii::;;,,:;i1tfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntfttttttttttttttttt11ttffft1tti;:,...,ii;;;;ii;::;;.....,:itftt1tt1111tttt1tt1tffftt1111tffftfLffftt\ntfttffffftt11ttftfft1tttft1i;:,.......:11iiii;;;:;:,,,,,,..;t111tt1111ttt11tf1tffffftttttttttttttfft\n111tfffffftttffttttt11tti;:,..........,1tt1ii11i;;,,.,.,,,,,1111t11111tt111tft1tffffttfffftt11tffLLf\n1tttffffft11ttttttt1111;...............:11iiii;;1;.,.,,.,..,1t11111111111t11tf1tfffttfffffffttfLffLf\ntfttttftt11t11ttt111tt1,................,;;;ii;i1:.........,111t1111111111111t1tffttttffffftt1tfffLf\ntffttttttttftt11111ttt;..................:;;;;:;i:..........itttt11111111ttt111tttfLffttfft1tttttfft\ntttttttttttttt1111ttt1:..................,;;;;:::,..,.......;tttt1111111tttffttttffLLffttttffftttttf\ntfffttttftttttt11tttt;....................:;;::::,,.........:ttttt111111ttttfftttffffffftttttttffttf\ntffft1ttfftttt111tttt:....................,;:::,:;;;;:,.....:1ttt11111111ttffttttffLLfLfttfffffffttf\ntffft1ttfttttt111ttt1,.....................:::,,::;iii;,.....itt1111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt111ttt;......................,::,,::;;;i;,.....:111111111tt111tttttfffLLLfttfffftffttf\nttttt11ttttttt111tt1:......................,:,..:,:;;i;.......:tttt1111ttt1ttffttffffffftttfftfffttt\nttttt1ttttt111111tt1:......................,:,..:. .:;:......,itttt1111tt111ttttttfttffft1tftttffttt\nttttt1tttttttt111tt1:........... .........,,,.,:...........,1tt11tt111111ttt1ttttffftttt1tftttffttt\nttttt1tttttttt11ttti,......... .,..........,,,.,:..........,it11111111111ttft1111ttttttt11tttttffttt\n11tt11ttttt111111tt:..........,::;,........,,,.,:......,:i11t11111111111ttttt1111ttttttt111ttttttt1t\n11111111111111111111:........:;;ii;.........,,.,,.....i1ttt11t11t111111111111111111111111111111tt111\n1111111111111111111ti........,:;;i;,...........,,.....;t11111111111111111111111111111111111111111111\n11111111111111111111ti;,......,:;;;. ......,:,.,:.....,1t1t11111111111111111111111111111111111111111\n11111111111111111111111;........,,,........:;::,,......;t1tttt11111111111111111111111111111111111111\n1111111111111111111111i......... ........:;;::,......,1ttttt11111111111t11111111111111111111111111\n1111111111111111111111:........ ...........:;;;::.......it1ttttt1111111111t1111111111111111111111111\n111111111111111111111i,........,......... ,ii;;::,......:ttttttttttt11ttt1tt11t111tt111111t1tttt1111\n11111111111111111111t;.........,..........:iiii;::,.....,1ttttttttttttttt1ttt1ttt1tttttttttttttt1111\n","ttttftfffttttttttttttfffttttt111ttttt111tttt111111ttttttttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLLftffftfffftttt111111111t11tffffffttttt11111111111111tttftttfttttttttt1111tttt\nttttttttttttttttfffffftttfffffffLLLft111tttttt11tfffffffftttttttt11111ttttfffffftfLLfttttttt111ttttt\nttttttttttttttttfffffttfffffffffffft11111;:::;;i1tffffffffttttttt1111ttffffffLffttffffffttt1111tttt1\nttttttttttttfffftttffttffffffffftttft1;::,,,,,,,,ifffffftttttt11tt111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLfttttffLLLfftttttff1;:,,,,,,,,,,:itfffftttfffft11t111tt111ttfffLLfttfftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLLfttfffttt1:,,,,:::;;i;;1tttftttffffffftt1111tftt111tttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffLfftt;,,,,,:;ii11t11tfttttffffffffftt111tft1ttfttttfLLfttttfffffftttttt\ntttttttfLLLLLLLLLLfttttffffffffttt;,,,,:;;;iii1111ttttfffffffffftt1111t11ttffttttttt1ttffffffffffttt\ntttffftfLLLLLLLLLLfttfftfffttttfft:,,,,:;;;iiiiii1tttttttffffffftt1111tft1ttt1tftttt11tffffLLLLLfttt\nttffffffffLLLLLLLfftfffftttfLftfLfi;;;;;;;iii1iii1tffftt11tfffft111111ffftt1t1tttttttttfffLLLLLLffff\ntfffffttttfLLLffttttfffffttfLLftfffi;;;i;;;;iiiii1fffffft11tttt11tt111fffttffft1ttfftttffLLLLLLLLffL\ntttfftttttffffttttttttttttttffftffft;;;;;;;;iiii1tttfffffft1tttt1t1111tfftfffftttttttttttfLLLLffffff\nttffffffffftttfffffffffttftttffftfft1;;;;;;;;iii1ttfffffttt1tffft11111tfttfLftttttttttttttfLLftffftt\nttffffffffftttfffffffftttfftttftttt1i;;;;;;;;ii111tffftt11tttttfftt111tt1tffttffttfffffLLffffffLffLL\nttffffffffttttfffffffft1tt1111ttt1::i;;;;;;;i1i;i111ttt11tfft1ttft11111tt1ttttfftttffffLLLfttffLLLLL\ntttffffffffttffffffftt111tt111i;:,..;i;;i;iii11;;;;,::;1tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\nttttttttfffttffttttt111ttt1;:,......,ii;;iii;11;:;;,...,:1fffft1111111ttftt1ttfft11ttffffffftfLLLLLf\ntftttttttttttt11tt111tt1;:,..........;11iii;1t1;:;;,,,,,.:tfttt1tt1111tttt1tt1tffftt1111ttfftfLffftt\ntfttffffftt11tttttt111:..............:1tt1ii11i::;:,,,,,,,if1111tt1111ttt11tf1tfffffttttttttttttffft\n111tfffffft1tfftttt11;................:ii;;i;:,,;;,.,,.,..it1111111111tt111tft1tffffttfffftt1ttffLLf\n1tttffffft111tttttt1i,............,....:;;;;;;:,1i,..,,,..;ttt11111111111t11tt1tfffttfffffffttfLfLLL\ntfttttftt1t111ttt111;..................,;;;;;:,:1i,.......it111t11t1111111111t1tffttttffffftt1tffLLf\ntffttttttttft1111111,...................:;;;::,,;;,.......it1tttt11111111ttt111tttfLffttfft1tttttfft\ntttttttttttttt1111t;....................,;;:::,.:,..,.....:tttttt1111111tttffttttffLLffttttffffttttf\ntfffttttfttttt111t1,.....................;;:::..:,........,1tttttt111111ttttfftttffffffftttttttffttf\ntffft1ttfftttt111ti......................::::,..:,.....,:::i1ttt111111111ttffttttffLLfLfttfffffffttf\nttfft1tttttttt111t:......................,:::,..:,....,:;iiiitt11111111111tttttttffLLfLfttfffffffttf\ntffft1tttttttt1111;.......................,:,...:,....:;;iiii1111111111tt111tftttfffLLLfttfffftffttf\nttttt11ttttttt111t;...................,,,,,,,...,......,;;ii1111ttt1111ttt1tfffttffffffftttfftfffttt\nttttt11tt11111111i,.................,::::::,....:........,,:i1111tt1111tt111ttttttfffffft1tftttffttt\nttttt11ttttttt11t;.................,:;;;;;;,....:.... .. .,1t11ttt1111111ttt1ttttffffttt1tftttffttt\nttttt11ttttttt1111:................,::::;i:.....:.,..,,,:;i11tttt111111111tft1111ttttttt11tttttffttt\n111tt11ttt1111111t1:. ............::::;:.....,:....it11111tt1tt1111111ttttt1111ttttttt111ttttttt1t\n11111111111111111111i:,..............,,,,......,:....:1tt111111t1111111111111111111111111111111tt111\n11111111111111111111t11:........,.... . ..,....:.....it1t111t11111111111111111111111111111111111111\n11111111111111111111111:,..................:....:.....:1ttt11t11t11111111111111111111111111111111111\n1111111111111111111111i,...................:....:......it1ttttt1tt11111111111t1111111111111111111111\n1111111111111111111111;....................,,..,:,.....:tttttttt111111111111111111111111111111111111\n1111111111111111111111:.................. .::..,:......,1t1ttttt11t1t11111t1111111111111111111111111\n11111111111111111111ti,.................. ,;::,,:.......itttttttttttt111t1tt11t111tt111tttt1tttt1111\n11111111111111111111t;....................,;;;:,:.......:tttttttttttttttt1ttt1ttt1tttttttttttttt1111\n","tttttttttttttttttttttffftttt1111111tt1111tt1111111ttttttttt11tttt1111111ttttttttttttttttttt1111111tt\nttfttttttttttttttttffLfttffttfffttttt1111111111111tffffftttt111111111111111tttffttftttttttt11111tttt\nttttttttttttttttffffLftttfffffffffftt11111iii1i11ffffffffttttttt111111tttttffffftfLLfttttttt111ttttt\nttttttttttttttttffffftttffffffffffttt11;::,,,,,:;1ffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttffttffffffffttttt1;:,,,,,,,,,,:tffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLfttttttft;,,,,,,,,:::,:itfffftttfffft11t111tt111ttfffLLfttfftt1ttt11tttttt\nttttttttffLLLLLLLffttfLLLfttfffttt;,,,,,,:;ii1111tttttttffffffftt1111tftt111tttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLffttfttttffffft1:,,,,,:;iii11111fttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttfLLLLLLLLLffttttffftfffftt1:,,,,,:;;;iiiii1ftttfffffffffftt1111t11ttffttttttt1ttffffffffffttt\ntttffttfLLLLLLLLLLfttfttffftttttft::;;::;;iiiiiii1ttttttttfffffftt1111tft1ttt1tffttt11tffffLLLLLfttt\nttffffffffLLLLLLffftfffttttffftfLfi:;i;;;;;iiiiii1tffftt11tfffft111111ffftt1tt1tt1tttttfffLLLLLLffff\ntffftfttttfLLLfftttttffffttfLLftfff;:;;;;;;;iiiii1tffffftt1tttt11tt111fffttffft1ttfftttffLLLLLLLLffL\ntttttttttttfffttttttttttttttffffffft;;;;;;;;iiii1ttffffffft1ttt1111111tfftfffftttttttttttfLLLLffffff\nttffffffffftttfffffffffttft1tfffttt1i;;;;;;;;iii1ttfffftttt1tffft11111tfttffftttttttttttttfLLfffffft\nttffffffffftttfffffffftttffttttti::i;;;i;;;;ii1111tttttt11tttttfftt111tt1tffttffttfffffLLffffffLLfLL\nttffffffffttttfffffffft1ttt11i;:,.,ii;;iiiii11:i1111tt111tfft1ttft11111tt1ttttffttttfffLLLfttfLLLLLL\ntttffffffffttffffffftt111i;:,......:11;;iiiii1::;;;::;i1ttffft11t11111tfftttttttt1ttffffLfftttLLLLLf\nttttttttfffttfttt1111ii;:,.........,it1iii;;1ti::;;,..,:1tfffft1111111ttttt11tfft11ttffffffftfLLLLLf\ntfttttttttt1tt111111;,..............;1111ii1ti:;:;;,,,,.:tffftt11t1111tttt1tt1tffftt1111ttfftfLffftt\ntfttfffftt1111ttttti,................:;;;i;;;,,:;;:,,,,,,itt1111tt1111ttt11tf1tffffftttttt1tttttffft\n111tfffffft1ttttttt:..........,,......:;;;;;;,.,i;,,,,,,.;t111111111111t111tft1tffffttfffftt1ttffLLf\n111ttfffft111ttttt1,............,.....,;;;;;:,.:1i,......;11t111111111111t11tt1tfffttfffffffttfLfLLL\ntttt1tftt11111tt11;....................:;;;;:,.:1i,......:tt11111111111111111t1tffttttffffftt1tffLLf\nttft11ttttttt1111i,....................,:;:;:.,,;:,......:111tttt11111111tttt11tttfLffttfft1tttttfft\ntttttt1ttttttt111;......................,;:;:..,:,.......:11tttttt111111tttffttttffLLffttttffffttttf\ntffft11ttttttt11i,.......................:::,..,:,.......,1tttttttt11111ttttfftttffffffftttftttffttf\ntffft11ttttttt11;........................,:::,..:,........;11tttt11111111ttffttttffLLfLfttfffffffttf\ntttft11ttttttt11;......................,:;;;;;;,:,........,111tt1111111111tttttttffLLfLfttfffffffttf\ntfttt11ttttttt11i.....................:::;;;;;:.:,....... ,1t11111111111t111tftttfffLLLfttfffftffttf\ntttt111ttttttt11:....................,:::;;;;;.,:,..........,:;iii11111ttt11tffttffffffftttfftfffttt\nttttt11tt1111111,....................,:::;;;;,.,:.......... .::;;;;ii11111ttftttftfffft1tftttffttt\nttttt11ttttttt11i................. ....,,,,.....:.... ........,:::;;;;ii111tt1tttfffffttt1tftttffttt\nttttt11ttttttt11ti,. .........,... .. ....,..:,.. ....,:::;;;iii1ttt1111ttttttt11tttttffttt\n11111111ttt111111t1ii;;;,.......................:..,.:1;:,,.. ..,;i1i1t1ttt1111ttttttt111ttttttt1t\n1111111111111111111ttttt:,......................:.. ,tttt111i;;;;i1tt1111111111111111111111111tt111\n111111111111111111111111:,..................,...:.....it1t1ttttttttt11111111111111111111111111111111\n111111111111111111111111;,..................,...:.... ;tttt11t11t11111111111111111111111111111111111\n111111111111111111111111:...................,..,:.....:ttttttttttt1111111111111111111111111111111111\n11111111111111111111111i,...................:,.,:.....,1ttttttttt11111111111111111111111111111111111\n11111111111111111111111;...................,::..:.....,1ttttttttt1t11t1111t1111111111111111111111111\n11111111111111111111111:.................. :;:,,:......itttttttttttttt111ttt11t1111t111t1ttttttt1111\n111111111111111111111t1:.................. :;;:::......;ttttttttttttttttt1ttt1ttt11ttttttttttttt1111\n","tttftttttttttttttttttffftttt1111111tt1111tt11111111tttt1ttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLfftfftttffttttt111111111111ttffffftttt1111111111111111ttffttfttttttttt1111tttt\ntttttttttttttttttffffftttffffffffffft111tt111111ttffffffttttttttt11111tttttffffftfLLftttttt11111ttt1\nttttttttttttttttffffftttffffffLffftt111i;;:::::;1tffffffffttttttt11111tfffffffLfftfffffftttt111ttttt\nttttttttttttfffftttffttffffffffttttt1i;,,,,,,,,,,;fffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLftttttttti:,,,,,,,,,,,,;tfffftttfffft11t111tt111tttffLLfttfftt1tt111tttttt\nttttttttffLLLLLLLffttfLLffttfffttti,,,,,,:;;;ii;itttttttffffffftt1111tftt1tttttfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffffft1:,,,,::;i111tt1tfttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttfLfLLLLLLLLfttttffftfffftti,,,,,,:;;iiii1i1ftttfffffffffft11111t11ttftttttttttttfffffLLfLfttt\ntttffttfLLLLLLLLLLfttfttffftttttf1,,::,:;iiiiiiii1ttttttttfffffftt1111tft1ttt1ttfttt11tffffLLLLLfttt\nttfffftfffLLLLLfffftfffttttffftfLf;:ii;;;;iii11ii1tfffft11tfffft111111ffft11t1ttt1tt1tffffLLLLLLLfff\ntffftfttttfLLLfttttttffffttfLLftff1:;ii;;;;iiiiii1ffffftt11tttt1ttt111fffttfffttttfft1tffLLLLLLLLffL\ntttttttttttfffttttttttttttttfffffff1;;;;;;;iiiii1tffffffftt1ttt1111111tfftfffftttttttttttfLLLLffffff\nttffffffffftttffffffffftttt1tffftft1i;;;;;;;iiii1ttfffffttt1tffft11111tfttfffttt1tttttttttfLLftfffft\nttffffffffttttfffffffft1tftt1tft1;ii;;;;;;;;ii1111ttftft11tttttfft1111tt1tffttffttfffffLLffffffLffLL\nttffffffffttttfffffffft1tttt1ii;,.:i;;;i;iii111t111ttt111tffttttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttfffftfttt111ii;:,....,i1;;iiiii1i:;;;i11111tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\ntttttttttffttfttt1111ii;:,.........;11iiii;;11;::;;,:;1tftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntft1ttttttt1t1111111:,.............:1tt1iii1t1;;:;:,,.,:1tffftt11t1111ttt11tt1tffftt1111ttfftfLLfftt\ntttttffttt1111ttttt;................:iiiiii11,:;:;:,,,,.:tttt111tt1111ttt11tf1tffffftttttt1ttttttfft\n1tttfffffft1tftttt1,.................,;;;;:;:.,:i:,,,,,,,it11111111111tt111tft1tffffttfffftt11tffLLf\n111ttfffft111ttttti...................:;;;;;:,,:1;.......;t1tt11111111111t11tf1tfffttfffffffttfLfLLf\ntttt1tftt11111ttt1:...................,;:;;;:..;1;.......:tt111t11t1111111111t1tffttttffffftt11ffLLf\nttft1111ttttt1111;.....................:;:;;,..,;:.......,111tttt11111111tttt11tttfLffttfft1tt1tffft\n1tttt11ttttttt111,.....................,::;;,..,:,.......,1ttttttt111111tttffttttffLLffttttffffttttf\ntfftt11ttttttt11;.......................:::;,..,:,........itttttttt1111tttttfftttffffffftttftttffttf\nttfft11ttttttt11,.......................,;;;;:,,:,........;11tttt11111111ttffttttffLLfLfttfffffffttf\ntttft11ttttttt1i,.....................,::;i;;;,,:.........:111tt1111111111tttttttffLLfLfttfffffffttf\nttttt11ttttttt1i.....................,:::;i;i:.,:,........,1t1111t111111t111ttfttffLLLLfttfffttffttf\ntttt111ttt11t11;.....................,:::;;;;,.,:..........1tt111tt11111ttt1tffttffffffftttffftffttt\nttttt11t1111111:......................:::::,...,:..........:i1tttt1tt111t1111tttttfttffft1tttttffttt\nttttt11tttt11t1i.......................... ....,,.......... .,,:i11iii11111tt1t1ttffffttt1ttttttfttt\nttttt11tttttt111;... ......................,:............ .,:::;iiii1111111tfttttt11ttttttfttt\n11111111t1111111t1i;;::::......................,:..,:.. .......,::;;;;;;iii11111tttttt111ttttttt1t\n11111111111111111ttttttt1,.....................,:......:,.. ..,:;;;:;;;iiii11111111111111111tt111\n111111111111111111111111i,.................,::..,.... ,tt1ii;,,.. ..,:i;;iii111111111111111111111111\n111111111111111111111111i,.................,;:,,,......1tttttt11i;;::itt11t1111111111111111111111111\n111111111111111111111111i,................ ,;:::,......it1t1tttttttttt11tt11t111111111111111111t1111\n111111111111111111111111;................. ,;;::,......it1tttttttt1111111t11111111111111111111111111\n111111111111111111111111:................. .;;:::......;t1ttttttt1ttttt111t1111111111111111111111111\n111111111111111111111111,...................;i;::,.....;tt1ttttttttttt11tttttttt111t111111tttttt1111\n111111111111111111111111:...................:i;:::.....ittttttttttttttttttttt1ttt111tttttttttttt1111\n","tttftttttttttttttttttffftttt1111111tt1111tt11111111tttt1ttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLfftfftttffttttt111111111111ttffffftttt1111111111111111ttffttfttttttttt1111tttt\ntttttttttttttttttffffftttffffffffffft1111tttt111ttffffffttttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttffffftttffffffLffftt11111i;iiii1tfffffffffttttttt11111tfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttffttffffffffttttt11;::,,,,,,::1fffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLftttttttf1;:,,,,,,,,,,,itfffftttfffft11t111tt111tttffLLfttfftt1ttt11tttttt\nttttttttfffLLLLLLffttfLLffttfffttt1,,,,,,,::::::itttftttffffffftt1111tftt11t11tfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffLfft1:,,,,,:;ii11111ffttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttfLfLLLLLLLLfttttffftfffftt1:,,,,:;;iii1111fftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfLLLLLLLLLLfttfttffftttttf1,,,,,:;iiii;iii1ttttttttfffffftt1111ttt1ttt1ttfttt11tfffffLLLLfttt\nttfffftfffLLLLLfffftfffttttffftfLt:;;;:;;iiiiiii11tfffft11tfffft111111ffft1tt1ttt1tt1tfffLLLLLLLffff\ntffftfttttfLLLfttttttffftttfLLftff1;;;i;;;iii1iiitfffffft11tttt1ttt111fffttfffttttfftttffLLLLLLLLffL\ntttttttttttfffttttttttttttttffftfffi;;;;;;iiiiii1tffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttffffffffftttt1tffftffti;;;;;;iiiii1tttffffttt1tffft11111tfttfffttt1tttttttttfLLftfffft\nttffffffffftttfffffffftttftt1tftt111i;;;;;;;;ii111tfftft11tttttfft1111tt1tffttffttfffffLLffffffLffLL\ntttfffffffttttfffffffft1tt111111i::i;;;i;;;;i11t111ttt111tffttttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttfffftfftt111111i;:,..,ii;;iiiii11:;;;111111tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\ntttttttttffttfttt1111111i;:,.......:11;iiii;11;::;;,:i1tftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntfttttttttt1t1111111i;:,...........:1t1iii;itt;;;;:.,,,:itffftt11t1111ttt11tt1tffftt1111ttfftfLffftt\ntttttffftt1111ttttt1:..............,i111ii1tti:;;;:,,,,.,1tft111tt1111ttt11tf1tffffftttttt1ttttttftt\n111tfffffft1tfttttt;.................:;;;;;;;,.:i:.,,,,,.;t11111111111tt111tft1tffffttfffftt11tfffLf\n111ttfffft111ttttt1,..................:;;;;;:,.:1;.....,.:11tt11111111111t11tf1tfffttfffffffttfLfLLf\ntttt1tftt111111tt11,..................,;;;;;:,.;1;.......,1t111t11t1111111111tttffttttffffftt11fffLf\ntttt111tttttt11111;....................::;;;,..,;:.......,i11tttt11111111tttt11tttfLffttfft1tt1tffft\n1tttt11ttttttt111i.....................,::;;,..,:.........ittttttt111111tttffttttffLLffttttffffttttf\ntfftt11ttttttt111,......................::::,..,:,........itttttttt11111ttttfftttffffffftttttttffttf\nttfft11ttttttt11;.......................,:::,..,:,........;11tttt11111111ttffttttffLLfLfttfffffffttf\ntttft11ttttttt11:........................,:,,..,:,........,111tt1111111111tftttttffLLfLfttfffffffttf\nttttt11ttttttt11,.......................,,::,..,:..........it11111t11111t111tttttffLLLLfttffftfffttf\ntttt111tttt1t11i......................::;;;;;:.,:..........;t11tttt11111tt11tffttffffffftttffftffttt\nttttt11tt111111:....................,:::;i;;i,.,:..........;ttttttt1111111111tttttfttffft1tttttffttt\nttttt11ttttttt1;....................,:::;i;;:..,,...........:;iii1111111111tt1t1ttfffttt11ttttttfttt\nttttt11tttttt111:...................,:::;;;;...,,........... .,:;;;:;i1111ttt1111ttttttt11ttttttfttt\n11111111t11t11111;,.. ...............,,,....,:.... .......,:::::;;11tt11111111tt1tt1111ttttttt1t\n11111111111111111t11i;;;:.......,..... ......,,....,,. ...,::;::;i1111111111111111111111111tt111\n11111111111111111111tttti,...................,.,,... :1i:,. .,,;;i1111111111111111111111111111111\n111111111111111111111111i,...................:,,,.....ittt1i:,.. ,1tttt111111111111111111111111t1111\n111111111111111111111111;,...................,,::.... .111tttt1ii1ttt11111111t11111111111111111t1111\n111111111111111111111111;....................,:::......it1t11ttttt1111111111111111111111111111111111\n111111111111111111111111;....................,::,......;t1tttttt11tt1tt111t1111111111111111111111111\n11111111111111111111111t:....................::::......:1111ttttttttttt1tt11ttt11111111111tttttt1111\n11111111111111111111111t:....................:;::,.....,1tttttttttttttttttttttttt111tttttttttttt1111\n","tttftttttttttttttttttffftttttt11ttttt1111tt11111111tttt1ttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLfftfffttffttttt111111111t11ttffffftttt1111111111111111ttffttfttttttttt1111tttt\ntttttttttttttttttffffftttffffffffffft1111tttt111tfffffffttttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttffffftttffffffLfffttt1111ttttt1tffffffffffttttttt11111tfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttftttffffffffttttft1i;:;;;;;i11tfffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLfttttttfft1;:,,,,,,,,:1ttfffftttfffft11t111tt111tttffLLfttffft1ttt11tttttt\nttttttttfffLLLLLLffttfLLffttfffttti::,,,,,,,,,,;ttttftttffffffftt1111tftt11t11tfLLfttt11tffftttttttt\ntttttttfffLLLLLLLLLfttfttttfffffti,,,,::;;;iiiii1ffttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttfLLLLLLLLLLftttttfftfffftt1:,,,;iii1111111fftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfffLLLLLLLLfttfttffftttttff:,,:;;;iiii1ii1tttttttttfffffftt1111ttt1ttt1ttfttt11tfffffLLLLfttt\nttfffftfffLLLLLfffttfffttttffftfLt;:,:;;;;iiiiii11tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntffftfttttfLLffttttttffftttfLLftff1;;;;;iiiii;i11ttfffftt11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttfffLtfffii;;;;;ii;;iittffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttft1tffftffti;;;;;iiiii1ttttffffttt1tffft11111tfttfffttt1tttttttttfLLfffffft\nttffffffffftttfffffffftttfttttfttttti;;;;;iiii1111tfftft11ttttffff1111tt1tffttffttfffffLLffffffLffLL\nttffffffffttttfffffffft1tt11111tft11i;;;;;;;iit11111tt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffftttfffftfftt1111111111i:,;i;;;;;;ii1i;;;111111tfffft11t11111tfftttttttt1tfffffLfftttfLLLLf\nttttt1tttffttfttt11t111tttt1i;:,...:1i;ii;ii;1i:;;i;;i1tftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntfttttttttt1tt1111111ttt1;:,,.......;ti;iii;it1;;;;,..,:i1fffft11t1111ttt11tt1tffftt1111ttfftfLffftt\nttttfffftt1111ttttt111;:,...........;tt11iii1t1::;;,,,,,.,1ft111tt1111ttt11tf1tffffftttttt1ttttttftt\n111tfffffft1ttttttt11,..............:i11iii111:,;;,,,,,,,.;t1111t11111tt111tft1tffffttfffftt11tfffLf\n111ttfffft111ttttttt;.................:;;;;;;:.,ii,....,,.:1tt11111111111t11tf1tfffttfffffffttfLfLLf\ntttt1tftt11111ttt111:.................,;;i;;;,.,1i,.......:t111111t1111111111tttffttttffffftt11fffLf\ntttt11ttttttt1111111,..................:;;;;;,,,;;,.......:11tttt11111111tttt11tttfLffttfft1tt1tffft\n1tttt11ttttttt11111i...................,;;;;:,..:,........:1tttttt111111tttffttttfLLLLfttttffffttttf\ntfftt11ttttttt11111:....................:i;;:,.,:,........,1ttttttt1111ttttffftttffffffftttttttffttf\nttfft11ttftttt111ti,.....................;;::,..:,........,i1tttt11111111ttffttttffLLfLfttfffffffttf\ntttft11ttttttt111t;......................,::,...:,.........;11t11111111111ttt1tttffLLLLfttfffffffttf\nttttt11ttttttt111t:......................,::,...:,...,,....it11111111111t111tttttfffLLLfttfffftffttf\ntttt11tttt11tt1111,.......................,,,...:,...,:;;;;itt11ttt1111ttt1ttftttffffffftttffftffttt\nttttt11t111111111i.........................,,...:,...,:;iiii11111t111111t111tttttttttffft1tftttffttt\nttttt11ttttttt111,.........................,,...:....,:;;iii11111111111111ttttt1ttfffttt11ttttttfttt\nttttt11ttttttt111;...................,,,,..,....,......,:;ii1ttt1111111111ttt1111tfttttt11ttttttfttt\n11111111t11t11111t;...............,:::::::..,...:.........,,it11tt1111111tttt1111ttt1tt1111ttttttt1t\n1111111111111111111,.............:::::;;i:......:..... :1ttttt111111111111111111111111111111t111\n11111111111111111111;,.. ........,::::;;:.......,... ,i;;;i1tttt111111111111111111111111111111111111\n11111111111111111111t11i,.........,:::;;. ..,:,.:.....itttttttt1111111t111111111111111111111111t1111\n11111111111111111111111t;...........,,,.... ,:,,:......it1111ttt1111111111111111111111111111111t1111\n111111111111111111111111;.......... .... .:,,:,. ...:tttt11tt111111111111111111111111111111111111\n111111111111111111111111;....................::::..,,..,1tttttttt1tttt1111t1111111111111111111111111\n11111111111111111111111t;....................::::..,,...;t1tttttttttttt1t11ttttt111t111111tttttt1111\n11111111111111111111111ti....................:;::,......:11tttttttttttttttttttttt11t11t1111ttttt1111\n","tttftftttttttttttttttfffttttt1111tttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt1111111tt\nttfftttttttttttttttffLfttfffttffttttt111111111t11tfffffftttt1111111111111111ttffttfttttttttt1111tttt\nttttttttttttttttfffffftttffffffffffftt11ttttt111tffffffftttttttt11111ttttttffffftfLLfttttttt1111ttt1\nttttttttttttttttffffftttffffffLfffttttt11tttt11tffffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttffttffffffffftttft1tttt11ttt1ttfffffftttttt111t111111ttffffLLffttfLLft111111ttttt\nttttttttttffLLLLftttttffLLftttttttfft11iiiiiittt1ttfffffttfffft11t111tt111tttffLLfttffft1ttt11tttttt\nttttttttfffLLLLLLffttfLLffttfffttfft;::,,,,,,:itttttffttffffffftt1111tftt11t11tfLLftttt1tffftttttttt\ntttttttfffLLLLLLLLLfttfttttffffft11i:,,,,,,,,:,;fffttttffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttfffttffftt1;:::::;;;iii;:tfftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfffLLLLLLLLfttfttfLfttttfft;:;iii111111i;1ttttttttffffffftt1111ttt1ttt1ttftt11ttfffffLLLLfttt\nttfffftfffLLLLLLffftfffttttfffffLf;:;;;;ii1iiiii11tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntffffftttffLLffftttttffffttfLLffffi:i;;;;;ii;ii11ttffffft11tttt1ttt11tfffttffft1ttfftttffLLLLLLLLffL\ntttttttttttffftttttttttttttfLfftffi;ii;ii;i11111tfffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttftttfLftf1;;;;;;;;i1111tttffffftttttffft11111tfttfffttt1tttttttttfLLfffffft\nttffffffffftttfffffffftttfftttftttt1i;;;;;iiii1111ttftft11ttttffff1111tt1tffttffttfffffLLfffffffffLL\ntttfffffffttttfffffffft1ttt1111tfftt1i;;;;iii1tt111ttt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttffffttftt111t11111ttfft1;;;;;;ii1ti;;i11111ttffft11t11111tfft1tttttt1tfffffLfftttfLLLLL\nttttt1tttffttfttt111111tttt11111tti:i;;;;;;iii1;:;i1i1ttftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntfttttttttt1tt11t1111ttfftt1tt1i;:..;i;;;;;iii1i:;;:,,:;i1ffftt11t1111ttt11tt1tffftt1111ttfftfLffftt\ntfttfffftt1111tttttt1tttttt1i;,.....:11;ii;;;iti:;;,,,...,:1t111tt1111ttt11tf1tffffftttttt1tttttfftt\n1t1tfffffft1tttttttt111tti:,....,...,i11iii;i1ti;i,,,,,,,,.,i111t11111tt111tft1tffffttfffftt11tffLLf\n1t1ttfffft111tttttt1111:,...........,i1t1iii11i,;1,....,,...;t11111111111t11tf1tfffttfffffffttfLLLLf\ntftt1tftt1tt11ttt111tt;..............,:;i;;;;;,.i1,.........:11111t1111111111tttffttttffffftt1tffLLf\ntfftttttttttt111111ttt:................,;;i;;:,,:;,.........:tttt11111111tttt11tttfLffttfft1tt1tffft\ntttttt1ttttttt1111ttti,................,:;;;;:,.,:..........,ttttt111111tttffttttfLLLLfttttffffttttf\ntffft11ttttttt1111ttt;..................,;;;::,.,,..........,1tttt111111tttffftttffffffftttttttffttf\ntffft11ttftttt111tttt:...................:;;::..::,,.........ittt11111111ttffttttffLLfLfttfffffffttf\ntffft11ttttttt111ttt1:...................,;::,,::;;;i;,......;t11111111111ttt1tttffLLLLfttfffffffttf\ntttft11ttttttt111ttt1,....................,::,,::;;iii;. ...,it11tt11111t111tttttfffLLLfttfffftffttf\nttttt1tttttttt111t1ti.....................,:,,,,::;iii;.....,it11tt1111ttt1ttftttffffffftttffftffttt\nttttt11tt11111111t1ti......................,:,. ,,,:;i:.......;11tt11111t111tttttttttffft1tttttffttt\nttttt11tttt11t11tttt;......................,,,..,, .,,.......,;11111111111ttttt1ttfffttt11ttttttfttt\nttttt1tttttttt111ttt:.......................,,..,,.....,....:1ttt111111111ttt1111tfttttt11ttttttfttt\n1111111ttt1t11111tt1,.......................,,..:,.........:1t11111111111tttt1111ttt1ttt111ttttttt1t\n11111111111111111111;....... ............,,..:,.....,;ii1t1t111111111111111111111111111111111t111\n111111111111111111111,.... .,::,................:....,11ttt11tt11t1111111111111111111111111111111111\n111111111111111111111;.....;i;;;,...............:,....it1111ttt1tt1111t111111111111111111111111t1111\n1111111111111111111111i:.,iii;;i:.......... ,::,:......itttttttt1111111111111111111111111111111t1111\n111111111111111111111111i,:;;;ii;,......... ,;;::,.....:1ttttttt11111111111t111111111111111111111111\n111111111111111111111111i,.,::;;:.......... ,;;;::......itttttttt1tttt11t1tt111111111111111111111111\n111111111111111111111111i..,.................;;;::,.,,..:1tt1tttttttttttt11ttttt11111111tttttttt1111\n111111111111111111111111i..... .............;i;:::,.....itttttttttttttt1tttttttt11t11t1111ttttt1111\n","tttfttfttttttttttttttfffttttt1111tttt111tttt111111ttttttttt11tttt111111tttttttttttttttttttt111111ttt\nttfftttttttttttttttffLfftfftttffftttt111111111111tfffffftttt111111111111111tttffttfttttttttt11111ttt\nttttttttttttttttffffLffttfffffffffffttttttttt111tffffffffttttttt111111ttttffffLfffLLfttttttt1111t1t1\nttttttttttttttttffffftttffffffLffffttttttttttt1tffffffffffttttttt1111ttfffffffLfttffffffttt1111ttttt\nttttttttttttfffftttffttffffffffftttftttttt11ttt1ttfffffftttttt111t111111ttffffLLffttfLLfft111111tttt\nttttttttttffLLLLftttttfLLLftttttttfftttttttfffft1tffffftttfffft11t111tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLLfttfffftffft11i;ii1ttffttttffttffffffftt1111tftt11t11tfLLfftt11tffftttttttt\ntttttttfffLLLLLLLLffttfttttffLfLftti;:;:,,,:;;itffftttfffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffftffffftt1;,,,,,,,,::,:tfftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfffLLLLLLLLfttfftfLftttffff1;::::;;iii;,:1ttttttttffffffftt1111ttt1ttt1ttfttt1ttfffffLLLLfttt\nttfffftfffLLLLLfffftfffftttfLfffLfi;iiii11111i;:i1tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntffffftttffLLfffttttfffffttfLLffLf;;;;iiiiiiii;:1tfffffft11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttffLLffLt;;:;;ii;;iii;ttffffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttftttfLftf11i;;;i1ii11ii1tfffffftttttffft11111tfttfffttt1tttttttttfLLfffffft\nttffffffffftttfffffffftttfftttfttt11i;;;;i1111i111ttffft11ttttffft1111tt1tffttffttfffffLLfffffffffLL\ntttfffffffttttfffffffftttttt111tfft11;;;;iiiii1t1111tt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\ntttffffffffttfffffffft111tt1111ttfft1i;;;iiiii1;;;111111ttffft11t11111tfft1tttttt1tfffffLfftttfLLLLL\nttttt1tttffttfftttttt11ttttt111tttft1i;;;;iiiii;;;1t11ttftfffft1111111tttt11ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt11tffftt1tt11tff1ii;;;;;iiii:;;i;;i1tttffftt11t1111ttt11tt1tffftt1111ttfftfLffftt\nttttffffttt11tttttft1tttttt1ttt11i;,:i;;;;;iii;;;;:...,,,:;i1111tt1111ttt11tt1tffffftttttt1ttttttftt\n111tfffffft1ttfftttt11tttt1tfti;,...,i1i;;ii;;i1i;,.........,i11111111tt111tft1tffffttfffftt11tffLLf\n1t1ttfffft111tftttt1111ttt11;:,......;11iii;;1t11;......,.,,.,i1111111111t11tt1tfffttfffffffttfLLLLf\ntftt1tftt1tt11ttt11ttt11i;:,.........:1tt1i;i1111;............;t11t1111111111tttffttttffffftt1tffLLf\ntfftttttttttt111111tttt1,.............:;;;;;;;;:;:............:tt11111111tttt11tttffftttfft1tt1tffft\n1ttttt1ttttttt1111tt11ti................:;;;;;:,:,............,1tt111111tttffttttfLLLLfttttffffttttf\ntffftttttttttt111tttt1ti................,;;;;::,:,.............ittt11111tttffftttffffffftttttttffttf\ntfffttttfftttt111tttttt;.................:;;:::,:,.............:tt1111111ttffttttffLLfLfttfffffffttf\ntffftttttttttt111tttttt;.................,:;:::,:.,:,,.........,it11111111ttt1tttffLLLLfttfffffffttf\ntttft11ttttttt111tttttt:..................,::::,:,,;;;;;:,......itt11111t111tttttffLLLLfttfffftffttf\nttttt1tttttttt1111t1ttt;...................,::,,:,:;;;iii;.....,1tt1111ttt11tftttffffffftttffftffttt\nttttt11tt1111t111tt1ttt:...................,::,,:::;;iiii;,.....:i1t1111t111tttttttttffft1tftttffttt\nttttt11ttttttt11ttttttt:....................::,,:..,,:;ii:...... .1t111111ttttt1ttffffft11ttttttfttt\nttttt1tttttttt111tttttt:....................,::,:. ..::,......,1t1111111ttt1111tfttttt11ttttttfttt\n1111111tttttt1111ttt1tt:.... ...............,:,,:..............,1t1111111tttt1111ttt1ttt111ttttttt1t\n11111111111111111111111;;;;:,...............,:,,:....... ...,,:1ttt11111111111111111111111111111t111\n11111111111111111111111iiiiii:...............,,,:........,:i11tt1tt111111111111111111111111111111111\n11111111111111111111111iiiiiii...............,,,:.......,1tttt11tt1111t111111111111111111111111t1111\n1111111111111111111111i;iiiiii,..............,.,:........ittt11t111111111111111111111111111111111111\n111111111111111111111111iiii;,...............::::,,......:1ttttt11t111111111111111111111111111111111\n1111111111111111111111111i:,. ...............:i;:::,......itttttt1ttt111t1tt111111111111111111111111\n11111111111111111111111111:................. :i;;;::,.....;ttttttttttttttt1ttttt111111111ttttttt1111\n11111111111111111111111111:................. :i;;;;::,....:tttttttttttttttttttttt11t11t1111ttttt1111\n","tttftttttttttttttttttfffttttt1t1ttttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt111111ttt\nttfftttttttttttttttffLLftffftfffftttt111111111t11tfffffftttt1111111111111111ttffttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffffffttttttttt111tfffffffftttttttt11111tttttfffffffLLfttttttt111tttt1\nttttttttttttttttfffffttfffffffLffffttttttttttt1tffffffffffttttttt1111ttffffffLLfttffffffttt1111tttt1\nttttttttttttfffftttftttffffffffftttfttttt111ttt1ttfffffftttttt111tt11111ttffffLLffttfLLff111111ttttt\nttttttttttffLLLLftttttfLLLftttttttffttttttttffft1tffffftttfffft11tt11tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLffttfffftfffttttttfffffftfttffttffffffftt1111tftt11t11tfLLfftt11tffftttttttt\ntttttttfffLLLLLLLLffttfttttffffffttft111i;ii1ttfffftttffffffffffft111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftft1i:::,,,,::;;1fftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfffLLLLLLLLfttfftfLffftfffLf1;,,,,,,,::,,:1tttttttffffffftt1111ttt1ttt1ttfttt1ttfffffLLLLfttt\nttfLfftfffLLLLLfffftfLfftttfffffLLf1;;;;;iiiii:,:1tfffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntffffftttffLLfffttttfffffttfLLLffLfiiiii111111i::1tffffft11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttftttttttffftttttttttttttfffLffLfii;;;iiiiiii;:1ftffffftt1ttt1111111ffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttfttffLfffLti;:;;ii;ii1;;ttffffftttttffft11111tfttffftttttttttttttfLLfffftft\nttffffffffftttfffffffftttfftttftttt1i;;;ii11111ii1ttffft11ttttffft1111tt1tffttffttfffffLLfffffffffLL\ntttfffffffttttfffffffftttttt111tfff1ii;;;iiiiiii1111tt111tffttttft11111tt1ttttfft1tffffLLLfttfLLLLLL\n1tfffffffffttfffffffftt1ttt1111tffft1i;;;iiiiii;;i111111tfffft11t11111tfft1tttttt1tfffffLfftttfLLLLL\ntttttttttffttfftttttt1ttfft1111tttftt1;;;iiiiii;:;tt11ttftfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt11tfffft1tt11ttft11;;;;;iiii;;;1t11ttttffftt11t1111tftt1tt1tffftt1111ttfftfLffftt\nttttffffttt11tttttft1ttfffttfft11tftiii;;;;iiii;;;;:;ii1tttft111tt1111ttt11tt1tffffftttttttttttttftt\n111tfffffft1ttfttttt11tfftttfttt11i:,ii;;;;;iii;i:.....,,::;i111t11111tt111tft1fffffttfffftt11tffLLf\n1t1ttfffft111tffttt1111tft1ft1i;:,...;1i;;;;;;i11:...........,;1111111111t11tt1tfffttfffffffttfLLLLf\ntftt1tftt1tt11tft11ttt111111;:,......,111ii;;i1t1:........,,...;11t1111111111tttffttttffffftt1tffLLf\ntffttttttttttt1111ttttt11;:,.........,i111i;i1t1;,.............,1t1111111tttt11t1tfLftttfft1tt1tffft\n1ttttttttttttt1111ttt11ti,............,::::;;;i;:,..............it111111tttffttttfLLLffttttffffttttf\ntfffttttffttttt11ttttttti...............,;;;;;;;:...............:t111111tttffftttffffffftttttttffttf\ntfffttttfffttft11ttttttt;...............,:;;;;:::...............,1t111111ttffttttffLLfLfttfffffffttf\ntffft1ttttttttt11ttttttt:................,;;;;:::................it1111111ttt1tttffLLLLfttfffffffttf\ntffft1tttttttt111ttttttt:................,:;;::::................:t1111tt111tttttffLLLLfttfffftffttf\nttttt1tttttttt111111tt1t;.................,::::::................,1t111ttt11tftttfffffffttfffftffttt\nttttt1tttt11tt111ttttttt:.,:;:............,::::::................,itt111t111ttt1tttttfft11tftttffttt\nttttt1tttttttt11tttttttt;:;iii:............,:::::...........,:,....:1t11111tttt11tfffttt11ttttttfttt\nttttt1tttttttt111ttttttt;;iiiii:. ..........:::::...........,;;;;:..it1111tft1111ttttttt11ttttttfttt\n1111111tttttt1111ttttttt:;iiiii;............,::::,........,::;;iii;it111ttttt11111tt1ttt111ttttttt1t\n111111111111111111111111:;;iiii;,...........,:,::,.........,;;iiii;it111111111111111111111111111tt11\n111111111111111111111111;:;:;;;,............,::::,...........:;;ii;it1111111111111111111111111111111\n111111111111111111111111;::.... .............,:::,,......... .,,:i1t1111111111111111111111111111111\n111111111111111111111111i;,..................,,,:,,....... .;,..,;11111111111111111111111111111t1111\n1111111111111111111111111i;:;i;,..............,,:,,,........1tii11t111111111111111111111111111111111\n111111111111111111111111111111:..............,:::;;:,.......;ttttttttt11t1tt111111111111111111111111\n11111111111111111111111111111;,..............:i;;ii;;:,.....,1ttt1tttttttt1ttttt1111111111tttttt1111\n1111111111111111111111111111i,...............,i;;iiii;:......ittttttttttttttttttt11t11t1111ttttt1111\n","tttftttttttttttttttttfffttttt1t1ttttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt111111ttt\nttfftttttttttttttttffLLftffftfffftttt111111111t11ttffffftttt1111111111111111ttftttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffffffttttttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt111tttt1\nttttttttttttttttfffffttfffffffLfffftttttttttt11tffffffffffttttttt1111ttfffffffLftttfffffttt1111tttt1\nttttttttttttfffftttftttffffffffftttfttttt111ttt1ttfffffftttttt111tt11111ttffffLLffttfLLff111111ttttt\nttttttttttffLLLLftttttfLLLftttttttffttttttttffft1ttfffffttfffft11tt11tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLLfttfffftffftttttfffffffffttffttffffffftt1111tftt11t11tfLLfftt11tffftttttttt\ntttttttfffLLLLLLLLffttfttttffLffftfftttttfftffffffftttffffffffffft111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffffftfftt11iii;:;;i1tfftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfLLLLLLLLLLfttfftfLffttfffLLft1;:::,,,,::;;1ttttttffffffftt1111ttt1ttt1ttfttt1ttffffLLLLLfttt\nttfLLftfffLLLLLLLfftfLfftttfLfffLLLfti;,,,,:::::,,;fffft11tfffft11111tffft1tt11tt1ttttfffLLLLLLLffff\ntfffffttttfLLfffttttfffffttLLLLffLLf1ii;;iiii11i:,;tfffft11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttfffLffLLf1iiiiiii1111;:;tffffftt1ttt111111tffftfffftttttttt1ttfLLLLffffff\nttffffffffftttfffffffffttfttffLfffLf111;;;ii;;i1i:itfffftttttffft11111tfttffftttttttttttttfLLfffftft\nttffffffffftttffffffffttffftttftttttt1i;;;iii;iii;ifftft11tttttffft111tt1tffttffttfffffLLfffffffffLL\ntttfffffffttttfffffffftttttt111tffft11i;;;ii11111111tt111tffftttft11111tt1ttttfft1tffffLLLfttfLLLLLL\n1tfffffffffttfffffffftt1ttt1111fffft111i;;;iiiiiii11111ttfffft11111111tfft1tttttt1tfffffLfftttfLLLLL\ntttttttttffttfftttttt1ttftt1111ttffttt1i;;;iiii;;;1t11ttttfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt1ttfffftttt11ttft1t1i;;iiiii;:;1t111tttffftt11t1111tftt1tt1tffftt1111ttfftfLffftt\nttttfffftttt1ttttfft1tffffttfft11tft111i;;;;;ii;:;i11111ttttt1111t1111ttt11tt1tfffffttttttttttttffft\n111tfffffftttffftttt11tfftttfttt1ttt1i1i;;;;iiiiii::;i111tt11111t11111tt111tft1fffffttfffftt1ttfLLLf\n1t1ttfffft111tffttt1111tfttft11tti;::,i1;;;;;iii11:...,,::;i1tt1111111111t11tt1tfffttfffffffttfLLLLf\ntttt1tftt1tt11ttt11ttt1111tt11i;,,....;1i;;;;;;i11:.,.......,,:i11t1111111111tttffttttffffftt1tffLLf\ntffttttttttttt1111ttttt111i;:,........;1t1ii;;i1ii,.............;t1111111tttt11t1tfLftttfft1tt1tffft\n1ttttttttttttt1111tttttt11:...........:iiiiii1tti,..............,1t11111tttttttttfLLLffttttffffttttf\ntfffttttffttttt11ttttttt1i,.............,:::;;ii;,...............;t11111ttttfftttffffffftttttttffttf\ntfffttttfffffft11ttttttt1;..............,:;;;;;;:,...............,1111111ttffttttffLLfLfttfffffffttf\ntffftttttttttt111ttttttt1:.......... ....:;;;;;;:,................it111111tttttttffLLLLfttfffffffttf\ntffft1tttttttt111ttttttt1,........,,:;:,.,;;;;;:;,................;t1111t111tttttffffLLfttfffffffttf\nttttt1tttttttt1111t1tttt1,.......;;;;;:,..:;;::::,................,1t11ttt11tftttfffffffttfffftffttt\nttttt1tttt11tt111ttttttt1:......;;;;;;;:,.:;;::::,................,it111t1111tt11ttttfft11tftttffttt\nttttt1tttttttt11tttttttti,......:;:;;;:...,:;::::,.................:1t11111tt1t11tfffttt11ttttttfttt\nttttt1tttttttt11tttttttti,......:;:;;:.....,:::::,..................:11111ttt1111ttttttt11ttttttfttt\n1t1t111tttttt111111ttttt;...,,,.,:::. ......:::::,...................,111tttt11111ttttt1111ttttttt1t\n111111111111111111111111,,,,,,,.............,:::::,..................,1t111111111111111111111111tt11\n11111111111111111111111i,,..:,..............,,::::,,.................,11tt11111111111111111111111111\n111111111111111111111111;...................,:,,::,,.................,;ii11t111111111111111111111111\n111111111111111111111111i,..................,:::::,,................:::;;;i111t111111111111111111111\n1111111111111111111111111i;;;;i1:............::,:,,,,........... ..::;;;;i1111111111111111111111111\n111111111111111111111111111111t1,............,.,:,,,:,,........:,,..,:;;;i11t11111111111111111111111\n1111111111111111111111111111111i.............,,::;;;i;:,...... :111i;::;;;1ttttt11t1111111tttttt1111\n111111111111111111111111111111ti.............:1;;1iiii;:,.......i1tttt11111tt1tt111111t1111ttttt1111\n","tttttttttttttttttttttfffttttt1111tttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt111111ttt\nttfftttttttttttttttffLLftffftfffftttt111111111t11ttffffftttt1111111111111111ttftttfttttttttt1111tttt\nttttttttttttttttffffLffttfffffffffffttttttttt111tfffffffftttttttt11111tttttffffftfLLfttttttt1111ttt1\nttttttttttttttttfffffttfffffffLfffftttttttttt11tffffffffffttttttt11111tffffffffftttfffffttt11111ttt1\nttttttttttttfffftttffttffffffffftttfttttt111ttt1ttfffffftttttt11tt111111ttffffLLffttfLLff111111ttttt\nttttttttttffLLLLftttttfLLLfttttttffffttttttfffft1tffffffttfffft11t111tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLLfttfffftfffttttttfffffftfttfftffffffffttt111tftt11t11tfLLLftt11tffft1tttttt\ntttttttfLfLLLLLLLLffttfttttffLLfftffttttffffffffffftttfffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffLLftffttttttt11i;ii1tftttfffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttffttfLLLLLLLLLLfttfftfffffffffLLfttt1i;::,,,,:;;1tttttffffffftt1111ttt1ttt1ttfttt1ttfffffLLLLfttt\nttfLLftfffLLLLLLLfftfLfftttfLfffLLLLttt1;,,,,,,,::,:iftt11tfffft11111tffft1tt11tt1ttttfffLLLLLLLLfff\ntfffffttttfLLfffttttfffffttLLLLfLLLftt1i;;;;;;iiii:,;fftt11tttt1ttt11tfffttffft1ttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttffLLffLLftt1;iiiii11111i::tfffft1ttt111111tffftfffftttttttt1ttfLLLLffffff\nttfLffffffftttfffffffffttfttffLfffLftt1;i;;;iiiiiii;;tfftttttffft11111tfttffftttttttttttttfLLftfffft\nttffffffffftttffffffffftffftttfttftttttii;;;;ii;;ii;iftt11tttttfft1111tt1tffttffttfffffLLfffffffffLL\nttffffffffttttfffffffftttttt11ttfffttt11ii;;ii1111ii11111tffftttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\n1ttffffffffttfffffffftt1ttt111tffffttt1i1i;;;iiiiii1111ttfffft11t11111tfft1tttttt1ttffffLfftttfLLLLf\ntttttttttffttfftttttt1ttfff1111ttffttttt1i;;;;i;:;it11ttftfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt11tfffftttt11tfftt11tt1;;;ii;;;1t111tttffftt11t1111tttt1tt1tffftt1111ttfftfLffftt\ntfttfffftttt1ttttfft1tffffttfftt1tft1111t1;;;;i;:;i11111tttft111tt1111ttt11tt1tfffffttttttttttttffft\n1tttfffffftttffftfft11tfffttfttttttt11111i;;:;iiii1i;i1t1tt11111t11111tt111tft1fffffttfffftt1ttffLLf\n1t1tffffft111tffttt1111tfttft11tt1t1i;;;1i;;;;ii1ii1,.,:;ii1tt11111111111t11tt1tfffttfffffffttfLfLLf\ntfttttftt1tt11ttt11ttt11t1t11tt11i:,...,11;;;;;it111,,.....,:;i11tt1111111111tttffttttffffftt1tffLLf\ntffttttttttttt1111ttftt111111i;:,......:1t1i;;;;i1t1,..........,:i1111111tttt11t1tfLftttfft1tt1tffft\n1ttttttttttttt1111ttttt111tt;..........:1111iii1;11:.............,it1111tttttt1ttfLLLffttttffffttttf\ntfffttttffttttt11ttttttt11t1,...........,,:::;;i;;:...............:t1111ttttfft1tffffffftttttttffttf\ntfffttttfffffft11ttttttt111i..............:;:::;;::...............,1t1111ttffttttffLLfLfttfffffffttf\ntfffttttttttttt11ttttttt111:..............,;;;;;;:,................;t11111ttt1t1tffLLLLfttfffffffttf\ntffft1tttttttt111ttttttt11i,..........,::::;;;;;;:,................,1t11t111tttttffffLLfttfffffffttf\nttttt1tttttttt111tt1tttt11i.........:;;;;:,;;::::::.................;t1ttt11tftttffffffftttffftffttt\nttttt1tttt11tt111ttttttt111,.......;;;;;;:,:;::::::,................:tttt1111tt11ttfttft11tftttffttt\nttttt1tttttttt11tttttttt11;,......,;;;;;;:::;::::::,................,itt111t11t11ttftttt11ttttttfttt\nttttt1tttttttt11tttttttt11;,......:;;;;i;...,:::::,,.................:tt1tttt1111ttttttt11ttttttfttt\n1t1t111tttttt111tttttttt1;,.,.....,:;:......,:::::,,..................it1tttt11111tttt11111ttttttt1t\n1111111111111111111111111:,,,......,,. .....,,::::,,..................,1t11111111111111111111111tt11\n1111111111111111111111111,,....,,...........,,,:::::,..................itt11111111111111111111111111\n1111111111111111111111111;,.................,:::::::,,................:1tt11111111111111111111111111\n11111111111111111111111111:.... ............,:::,:,,.................,1tt11111111111111111111111111\n11111111111111111111111111ii;;;;;i, .........,,::,,,,,................,:;;1tt11111111111111111111111\n11111111111111111111111111111111t1,..........,,,:,,:,:,,. ...........,:::;;i11tt11111111111111111111\n11111111111111111111111111111111t;.............,:::;;;;:,........ .,:::;;:;i1t111111111ttttttt11111\n111111111111111111111111111111111:...........,;;;i1iiii;:,.......::,,::::;;i1ttt111t11t1111ttttt1111\n","tttftttttttttttttttttfffttttt1111tttt111tttt1111111tttttttt11tttt111111tttttttttttttttttttt11111111t\nttfftttttttttttttttffLLftffftfffftttt111111111t11ttffffftttt1111111111111111ttftttfttttttttt1111tttt\nttftttttttttttttffffLffttfffffffLfffttttttttt111tfffffffftttttttt11111ttttttfffftfLLfttttttt111tttt1\nttttttttttttttttfffffttfffffffLfffftttttttttt11tffffffffffttttttt11111tfffffffffttffffffttt11111ttt1\ntttttttttttffffftttffttffffffffftttfttttt111ttt1ttfffffftttttt11tt111111ttffffLLffttfLLfft11111ttttt\nttttttttttffLLLLftttttfLLLfttttttffLftttttttffft1ttfffffttfffft11t111tt111tttffLLfttfftt1ttt111ttttt\nttttttttfffLLLLLLffttfLLLfttfffftfLfttttttffffffffftftttfffffffttt111tftt11t11tfLLfftt11tffft11ttttt\ntttttttfffLLLLLLLLffttfttttfLLLfftffttttffftt1iii11tttfffffffffftt111tft1ttft11tffLfttttfffffftttttt\ntttttttffLLLLLLLLLfttttffffffLffffftttttfti;;::,,,:;i1tffffffffftt1111111ttftttttttttttfffffLLfffttt\ntttfffffLLLLLLLLLLfttfftfLfffffffLLfttttt1;,,,,,,,::,:ittffffffftt1111ttt1ttt1tftttt1ttffffLLLLLfttt\nttfLLffffLLLLLLLLfftfLfftttfLfffLLLLfttt1i;:::;;iiii;,;t11tfffft11111tffft1tt1ttt1ttttfffLLLLLLLLfff\ntffffftttffLLLffttttfffffttLLLLfLLLffttf1;;iiii11111i::1t11tttt1ttt11tfffttfftttttfft1tffLLLLLLLLffL\ntttttttttttffftttttttttttttfffLffLLftttti:;;;;iiiiiii;;tftt1ttt111111tffftfffftttttttt1ttfLLLLffffff\nttfLffffffftttfffffffffttfttffLfffLfttttti;;;;;iii;i1iiftttttffft11111tfttffftttttttttttttfLLftfffft\nttffffffffftttffffffffftfffftffffftttttft11i;;;iiii1iiit11tttttfft1111tt11ffttffttfffffLLfffffffffLL\nttffffffffttttfffffffftttttt1tttffftttttti1i;;;ii11iii111tffftttftt1111tt1ttttfft1tffffLLLfttfLLLLLL\n1ttffffffffttfffffffftt1ttt1111tfffftttt111i;;iiiiii111ttfffft11t11111tfftttttttt1ttffffLfftttfLLLLf\ntttttttttffttfftttttt1ttfftttt1ttfftttttt111i;i;:;ii11ttftfffft1111111ttttt1ttfft11ttffffffftfLLLLLf\ntft1ttttttttttttttt11tfffftttt11tfftt1ttt111;;i;;;iii1ttttffftt11t1111ttt11tt1tffttt1111ttfftfLffftt\ntfttffffttt11tttttft1tffffttffttttft111ttt11;;;;:;i1i1;;11tft111tt1111tt111tt1tfffffttttt11tttttffft\n1tttfffffftttffftfft11tfftttffttttft1111iii1;;;i;iiii1i,,,:;;i11tt1111tt111tft1fffffttfffftt11tffLLf\n111ttfffftt1ttffttt1111tfttft11tt1t1i;:,,,;1i;;i1ii;iti,,.....,:;i1t11111t11tt1tfffttffffffft1fffLLf\ntfttttftt1tt11tft11ttt11tttt1tt11i;:,.....;11i;i1i;1tt;,,.........,:i11111111t1tffttttffffftt1tfffLf\ntffttttttttftt1111ttttt11111tft;,.........;11111i1ttti,.............,1111tttt1111tffftttfft1tt1tffft\n1ttttttttttttt1111tttttt11tfff1,...........,:;;;;;11i:...............itttttttt1ttfffLffttttffffttttf\ntfffttttffttttt11ttttttt11tfffi............ ,:;;;;;;;,...............;t1ttttfft1tffffffftttttttffttf\ntfffttttfffffft11tttttttttt1tf;..............:;;;;;;;,...............:111ttttttttfffLfLfttfffffffttf\ntfffttttftftft111ttttttt11t111:..............:;;;;;::,...............,1t11ttt1t1tffLLLLfttfffffffttf\ntfffttttfttttt111ttttttt11ttt1:..............,;;;::;::................itt111tttttffffLLfttfffffffttf\ntttttttttttttt111ttttttt1ttfft:..............,;;;;::::................:1tt11tft1tffffffftttffttffttt\nttttt1tttt11tt11tttttttt1tttt1;.,::,..........:;:::;::,...............,1t1111tt11tttttft11tfttttfttt\nttttt1tttttttt11ttttttttt1ttt1;,:;;:..........,::::::,,................it11111111ttftttt11ttttttfttt\nttttt1tttttttt11tttttttttttttiiiiii;,.........,:::::::,................:ttttt1111ttttttt11ttttttfttt\n1t1111tttttttt11tttttttt1ttt1;;;;ii;,.........,:::::::,.................ittttt1111tttt11111ttttttt1t\n11111111111111111111111111tt1;;;;ii;...........::::::::................ :1t111111111111111111111t111\n11111111111111111111111111tt1;::;;i:...........,:::::::,...............,itttt11111111111111111111111\n11111111111111111111111tttttt;,,,::............,::::::,,...............ittttt11111111111111111111111\n1111111111111111111111111tttt1:,,..............,:::::,,,,.......,:;::,:1t1111111111111111111111t1111\n11111111111111111111111111111111i;;i:..........,:,,,.,,.,.......::;;i;it1ttt111111111111111111111111\n1111111111111111111111111111111111ti...........,,.,:,:;::,......,:;;ii1ttttt11111111111111111t111111\n1111111111111111111111111111111111t;...........,;iiiiiii;:,......:;;;i1ttttt111t1111111111tttttt1111\n11111111111111111111111111111111111:...........,;i11iiii;:,.......,:i1tttttt1ttttt1t11t1111ttttt1111\n"],s=new r.v;function l(){const[e,t]=(0,a.useState)(function(){const e=new Date;return 3===e.getMonth()&&1===e.getDate()}()),[n,r]=(0,a.useState)(0);return(0,a.useEffect)((()=>{const e=setInterval((()=>r((e=>(e+1)%i.length))),100);return()=>clearInterval(e)}),[]),(0,a.useEffect)((()=>s.subscribe((()=>{t(!0)}))),[]),e?a.createElement(o.u,{open:e,onClose:()=>t(!1)},a.createElement("pre",{style:{color:"#0f0"}},i[n]),a.createElement("div",{style:{display:"none"}},a.createElement("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/a3Z7zEc7AXQ?autoplay=1",title:"YouTube video player",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"}))):a.createElement(a.Fragment,null)}},49215:(e,t,n)=>{"use strict";n.d(t,{P:()=>F});var a=n(81138),r=n(47542),o=n(46948),i=n(28881),s=n(78016),l=n(30120),c=n(92557),u=n(17575),m=n(59301),f=n(40238),h=n(67294),d=n(99745),p=n(97740),g=n(5808),y=n(93430),b=n(89673),v=n(51087),k=n(49802),w=n(49173),E=n(22115),S=n(48672),C=n(72360),x=n(21927),N=n(97534),M=n(88775);const A=e=>{let{open:t,onClose:n}=e;return h.createElement(S.u,{open:t,onClose:n},h.createElement(h.Fragment,null,h.createElement(a.Z,{variant:"h5"},"All Employers"),h.createElement("ul",null,Object.keys(w.J5.jobs).map((e=>h.createElement(a.Z,{key:e},"* ",e))))))};function T(e){return h.createElement(r.Z,{sx:{display:"table",width:"100%",mb:e.noMargin?0:2}},h.createElement(o.Z,null,e.rows.map((t=>{const{mult:n,value:r,effValue:o=null,color:i=e.color}=t;return null!==o&&o!==r&&w.J5.sourceFileLvl(5)>0?h.createElement(x.j,{key:n,name:n,color:i,data:{}},h.createElement(h.Fragment,null,h.createElement(a.Z,{color:i},h.createElement("span",{style:{opacity:.5}},(0,E.T3)(r))," ",(0,E.T3)(o)))):h.createElement(x.j,{key:n,name:n,color:i,data:{content:(0,E.T3)(r)}})}))))}function L(){if(w.J5.sourceFiles.size>0){const e="BitNode"+w.J5.bitNodeN,t=Math.min(w.J5.sourceFileLvl(w.J5.bitNodeN)+1,12===w.J5.bitNodeN?1/0:3);return h.createElement(i.Z,{sx:{mb:1,p:1}},h.createElement(a.Z,{variant:"h5"},"BitNode ",w.J5.bitNodeN,": ",d.tK[e].name," (Level ",t,")"),h.createElement(a.Z,{sx:{whiteSpace:"pre-wrap",overflowWrap:"break-word"}},d.tK[e].info))}return h.createElement(h.Fragment,null)}function R(e){let{open:t,onClose:n}=e;function r(e){const t=[["Total:",h.createElement(C.W,{key:"total",money:e.total})]];return e.augmentations&&t.push(["Augmentations:",h.createElement(C.W,{key:"aug",money:e.augmentations})]),e.bladeburner&&t.push(["Bladeburner:",h.createElement(C.W,{key:"blade",money:e.bladeburner})]),e.casino&&t.push(["Casino:",h.createElement(C.W,{key:"casino",money:e.casino})]),e.codingcontract&&t.push(["Coding Contracts:",h.createElement(C.W,{key:"coding-contract",money:e.codingcontract})]),e.work&&t.push(["Company Work:",h.createElement(C.W,{key:"company-work",money:e.work})]),e.class&&t.push(["Class:",h.createElement(C.W,{key:"class",money:e.class})]),e.corporation&&t.push(["Corporation:",h.createElement(C.W,{key:"corp",money:e.corporation})]),e.crime&&t.push(["Crimes:",h.createElement(C.W,{key:"crime",money:e.crime})]),e.gang&&t.push(["Gang:",h.createElement(C.W,{key:"gang",money:e.gang})]),e.hacking&&t.push(["Hacking:",h.createElement(C.W,{key:"hacking",money:e.hacking})]),e.hacknet&&t.push(["Hacknet Nodes:",h.createElement(C.W,{key:"hacknet",money:e.hacknet})]),e.hacknet_expenses&&t.push(["Hacknet Nodes Expenses:",h.createElement(C.W,{key:"hacknet-expenses",money:e.hacknet_expenses})]),e.hospitalization&&t.push(["Hospitalization:",h.createElement(C.W,{key:"hospital",money:e.hospitalization})]),e.infiltration&&t.push(["Infiltration:",h.createElement(C.W,{key:"infiltration",money:e.infiltration})]),e.servers&&t.push(["Servers:",h.createElement(C.W,{key:"servers",money:e.servers})]),e.stock&&t.push(["Stock Market:",h.createElement(C.W,{key:"market",money:e.stock})]),e.sleeves&&t.push(["Sleeves:",h.createElement(C.W,{key:"sleeves",money:e.sleeves})]),e.other&&t.push(["Other:",h.createElement(C.W,{key:"other",money:e.other})]),h.createElement(N.C,{rows:t,wide:!0})}let o=h.createElement(h.Fragment,null,h.createElement(a.Z,{variant:"h6",color:"primary"},"Money earned since you last installed Augmentations"),h.createElement("br",null),r(w.J5.moneySourceA));return w.J5.sourceFiles.size>0&&(o=h.createElement(h.Fragment,null,o,h.createElement("br",null),h.createElement("br",null),h.createElement(a.Z,{variant:"h6",color:"primary"},"Money earned in this BitNode"),h.createElement("br",null),r(w.J5.moneySourceB))),h.createElement(S.u,{open:t,onClose:n},o)}function F(){const[e,t]=(0,h.useState)(!1),[n,d]=(0,h.useState)(!1);(0,M.S)(200);const E=[["Since last Augmentation installation",(0,k.UF)(w.J5.playtimeSinceLastAug)]];w.J5.sourceFiles.size>0&&E.push(["Since last Bitnode destroyed",(0,k.UF)(w.J5.playtimeSinceLastBitnode)]),E.push(["Total",(0,k.UF)(w.J5.totalPlaytime)]);let S=!1;return w.J5.sourceFileLvl(5)>0&&(S=!0),h.createElement(s.Z,{maxWidth:"lg",disableGutters:!0,sx:{mx:0}},h.createElement(a.Z,{variant:"h4"},"Stats"),h.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr",minWidth:"fit-content",mb:1,gap:1}},h.createElement(i.Z,{sx:{p:1}},h.createElement(a.Z,{variant:"h5"},"General"),h.createElement(r.Z,null,h.createElement(o.Z,null,h.createElement(x.j,{name:"Current City",color:v.Z.theme.primary,data:{content:w.J5.city}}),h.createElement(x.j,{name:"Money",color:v.Z.theme.money,data:{}},h.createElement(h.Fragment,null,h.createElement(C.W,{money:w.J5.money}),h.createElement(c.Z,{onClick:()=>t(!0),sx:{p:0}},h.createElement(m.Z,{color:"info"})))),w.J5.jobs&&0!==Object.keys(w.J5.jobs).length?h.createElement(x.j,{name:"All Employers",color:v.Z.theme.primary,data:{}},h.createElement(h.Fragment,null,h.createElement("span",{style:{color:v.Z.theme.primary}},Object.keys(w.J5.jobs).length," total"),h.createElement(c.Z,{onClick:()=>d(!0),sx:{p:0}},h.createElement(m.Z,{color:"info"})))):h.createElement(h.Fragment,null),h.createElement(x.j,{name:"Servers Owned",color:v.Z.theme.primary,data:{content:`${w.J5.purchasedServers.length} / ${(0,b.kq)()}`}}),h.createElement(x.j,{name:`Hacknet ${9===w.J5.bitNodeN||w.J5.sourceFileLvl(9)>0?"Servers":"Nodes"} owned`,color:v.Z.theme.primary,data:{content:`${w.J5.hacknetNodes.length}${9===w.J5.bitNodeN||w.J5.sourceFileLvl(9)>0?` / ${y.B5.MaxServers}`:""}`}}),h.createElement(x.j,{name:"Augmentations Installed",color:v.Z.theme.primary,data:{content:String(w.J5.augmentations.length)}})))),h.createElement(i.Z,{sx:{p:1}},h.createElement(a.Z,{variant:"h5"},"Skills"),h.createElement(r.Z,null,h.createElement(o.Z,null,h.createElement(x.j,{name:"Hacking",color:v.Z.theme.hack,data:{level:w.J5.skills.hacking,exp:w.J5.exp.hacking}}),h.createElement(x.j,{name:"Strength",color:v.Z.theme.combat,data:{level:w.J5.skills.strength,exp:w.J5.exp.strength}}),h.createElement(x.j,{name:"Defense",color:v.Z.theme.combat,data:{level:w.J5.skills.defense,exp:w.J5.exp.defense}}),h.createElement(x.j,{name:"Dexterity",color:v.Z.theme.combat,data:{level:w.J5.skills.dexterity,exp:w.J5.exp.dexterity}}),h.createElement(x.j,{name:"Agility",color:v.Z.theme.combat,data:{level:w.J5.skills.agility,exp:w.J5.exp.agility}}),h.createElement(x.j,{name:"Charisma",color:v.Z.theme.cha,data:{level:w.J5.skills.charisma,exp:w.J5.exp.charisma}}),w.J5.skills.intelligence>0&&(5===w.J5.bitNodeN||w.J5.sourceFileLvl(5)>0)&&h.createElement(x.j,{name:"Intelligence",color:v.Z.theme.int,data:{level:w.J5.skills.intelligence,exp:w.J5.exp.intelligence}}))))),h.createElement(i.Z,{sx:{p:1,mb:1}},h.createElement(a.Z,{variant:"h5",color:"primary",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},"Multipliers",w.J5.sourceFileLvl(5)>0&&h.createElement(u.Z,{title:h.createElement(a.Z,null,"Displays your current multipliers.",h.createElement("br",null),h.createElement("br",null),"When there is a dim number next to a multiplier, that means that the multiplier in question is being affected by BitNode multipliers.",h.createElement("br",null),h.createElement("br",null),"The dim number is the raw multiplier, and the undimmed number is the effective multiplier, as dictated by the BitNode.")},h.createElement(f.Z,{sx:{ml:1,mb:.5},color:"info"}))),h.createElement(l.Z,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:1}},h.createElement(l.Z,null,h.createElement(T,{rows:[{mult:"Hacking Chance",value:w.J5.mults.hacking_chance},{mult:"Hacking Speed",value:w.J5.mults.hacking_speed},{mult:"Hacking Money",value:w.J5.mults.hacking_money,effValue:w.J5.mults.hacking_money*p.dQ.ScriptHackMoney},{mult:"Hacking Growth",value:w.J5.mults.hacking_grow,effValue:w.J5.mults.hacking_grow*p.dQ.ServerGrowthRate}],color:v.Z.theme.hack}),h.createElement(T,{rows:[{mult:"Hacking Level",value:w.J5.mults.hacking,effValue:w.J5.mults.hacking*p.dQ.HackingLevelMultiplier},{mult:"Hacking Experience",value:w.J5.mults.hacking_exp,effValue:w.J5.mults.hacking_exp*p.dQ.HackExpGain}],color:v.Z.theme.hack}),h.createElement(T,{rows:[{mult:"Strength Level",value:w.J5.mults.strength,effValue:w.J5.mults.strength*p.dQ.StrengthLevelMultiplier},{mult:"Strength Experience",value:w.J5.mults.strength_exp}],color:v.Z.theme.combat}),h.createElement(T,{rows:[{mult:"Defense Level",value:w.J5.mults.defense,effValue:w.J5.mults.defense*p.dQ.DefenseLevelMultiplier},{mult:"Defense Experience",value:w.J5.mults.defense_exp}],color:v.Z.theme.combat}),h.createElement(T,{rows:[{mult:"Dexterity Level",value:w.J5.mults.dexterity,effValue:w.J5.mults.dexterity*p.dQ.DexterityLevelMultiplier},{mult:"Dexterity Experience",value:w.J5.mults.dexterity_exp}],color:v.Z.theme.combat}),h.createElement(T,{rows:[{mult:"Agility Level",value:w.J5.mults.agility,effValue:w.J5.mults.agility*p.dQ.AgilityLevelMultiplier},{mult:"Agility Experience",value:w.J5.mults.agility_exp}],color:v.Z.theme.combat}),h.createElement(T,{rows:[{mult:"Charisma Level",value:w.J5.mults.charisma,effValue:w.J5.mults.charisma*p.dQ.CharismaLevelMultiplier},{mult:"Charisma Experience",value:w.J5.mults.charisma_exp}],color:v.Z.theme.cha,noMargin:!0})),h.createElement(l.Z,null,h.createElement(T,{rows:[{mult:"Hacknet Node Production",value:w.J5.mults.hacknet_node_money,effValue:w.J5.mults.hacknet_node_money*p.dQ.HacknetNodeMoney},{mult:"Hacknet Node Purchase Cost",value:w.J5.mults.hacknet_node_purchase_cost},{mult:"Hacknet Node RAM Upgrade Cost",value:w.J5.mults.hacknet_node_ram_cost},{mult:"Hacknet Node Core Purchase Cost",value:w.J5.mults.hacknet_node_core_cost},{mult:"Hacknet Node Level Upgrade Cost",value:w.J5.mults.hacknet_node_level_cost}],color:v.Z.theme.primary}),h.createElement(T,{rows:[{mult:"Company Reputation Gain",value:w.J5.mults.company_rep,color:v.Z.theme.rep},{mult:"Faction Reputation Gain",value:w.J5.mults.faction_rep,effValue:w.J5.mults.faction_rep*p.dQ.FactionWorkRepGain,color:v.Z.theme.rep},{mult:"Salary",value:w.J5.mults.work_money,effValue:w.J5.mults.work_money*p.dQ.CompanyWorkMoney,color:v.Z.theme.money}],color:v.Z.theme.money}),h.createElement(T,{rows:[{mult:"Crime Success Chance",value:w.J5.mults.crime_success},{mult:"Crime Money",value:w.J5.mults.crime_money,effValue:w.J5.mults.crime_money*p.dQ.CrimeMoney,color:v.Z.theme.money}],color:v.Z.theme.combat}),w.J5.canAccessBladeburner()&&p.dQ.BladeburnerRank>0&&h.createElement(T,{rows:[{mult:"Bladeburner Success Chance",value:w.J5.mults.bladeburner_success_chance},{mult:"Bladeburner Max Stamina",value:w.J5.mults.bladeburner_max_stamina},{mult:"Bladeburner Stamina Gain",value:w.J5.mults.bladeburner_stamina_gain},{mult:"Bladeburner Field Analysis",value:w.J5.mults.bladeburner_analysis}],color:v.Z.theme.primary,noMargin:!0})))),h.createElement(i.Z,{sx:{p:1,mb:1}},h.createElement(a.Z,{variant:"h5"},"Time Played"),h.createElement(r.Z,null,h.createElement(o.Z,null,E.map((e=>{let[t,n]=e;return h.createElement(x.j,{key:t,name:t,color:v.Z.theme.primary,data:{content:n}})}))))),h.createElement(L,null),S&&h.createElement(i.Z,{sx:{p:1,mb:1}},h.createElement(a.Z,{variant:"h5"},"BitNode Multipliers"),h.createElement(g.I,{n:w.J5.bitNodeN})),h.createElement(R,{open:e,onClose:()=>t(!1)}),h.createElement(A,{open:n,onClose:()=>d(!1)}))}},37150:(e,t,n)=>{"use strict";n.d(t,{g:()=>s});var a=n(67294),r=n(17575),o=n(56798);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{"use strict";n.d(t,{o:()=>o});var a=n(67294),r=n(81138);class o extends a.Component{constructor(e){super(e),this.state={error:void 0}}componentDidCatch(e){this.setState({error:e}),console.warn("Error in custom react content:"),console.error(e)}render(){return this.state.error?a.createElement(r.Z,{component:"span"},"Error in custom react content. See console for details."):a.createElement(r.Z,{component:"span"},this.props.children)}}},36352:(e,t,n)=>{"use strict";let a;n.d(t,{x:()=>a}),function(e){e.SUCCESS="success",e.WARNING="warning",e.ERROR="error",e.INFO="info"}(a||(a={}))},38886:(e,t,n)=>{"use strict";n.d(t,{S:()=>s});var a=n(67294),r=n(10980),o=n(97833),i=n(52947);class s extends a.Component{constructor(e){super(e),this.state={hasError:!1}}reset(){this.setState({hasError:!1})}componentDidCatch(e,t){this.setState({errorInfo:t,page:i.F.page()}),console.error(e,t)}render(){if(this.state.hasError){let e;if(this.state.error)try{e=(0,r.o)(this.state.error,this.state.errorInfo,this.state.page)}catch(e){console.error(e)}return a.createElement(o.JI,{softReset:this.props.softReset,errorData:e,resetError:()=>this.reset()})}return this.props.children}static getDerivedStateFromError(e){return{hasError:!0,error:e}}}},52947:(e,t,n)=>{"use strict";n.d(t,{F:()=>ke,O:()=>we});var a=n(67294),r=n(77541),o=n(73327),i=n(81138),s=n(30120),l=n(49173),c=n(27889),u=n(34716),m=n(93936),f=n(33244),h=n(40780),d=n(59132),p=n(45756),g=n(72805),y=n(39463),b=n(97467),v=n(35102),k=n(24815),w=n(56112),E=n(24326),S=n(16937),C=n(78008),x=n(41858),N=n(22527),M=n(31635),A=n(30213),T=n(72390),L=n(52037),R=n(68848),F=n(45693),I=n(23187),_=n(24025),P=n(14533),B=n(30286),O=n(99363),D=n(19491),Z=n(55482),G=n(81009),J=n(59656),W=n(1041),H=n(41500),U=n(57385),j=n(49215),$=n(66927),q=n(51801),z=n(50856),V=n(40389),Y=n(78573),K=n(43480),X=n(59061),Q=n(75350),ee=n(6290),te=n(32369),ne=n(85167),ae=n(95173),re=n(23001),oe=n(60784),ie=n(30518),se=n(97833),le=n(24853),ce=n(38886),ue=n(11590),me=n(48562),fe=n(18450),he=n(51674),de=n(93344),pe=n(52720),ge=n(88775),ye=n(19678);const be=location,ve=(0,r.Z)((e=>(0,o.Z)({root:{"-ms-overflow-style":"none","scrollbar-width":"none",margin:e.spacing(0),flexGrow:1,padding:"8px",minHeight:"100vh",boxSizing:"border-box",width:"1px"}})),{name:"GameRoot"});let ke={isInitialized:!1,page:()=>{throw new Error("Router called before initialization")},allowRouting:()=>{throw new Error("Router called before initialization")},toPage:()=>{throw new Error("Router called before initialization")},back:()=>{throw new Error("Router called before initialization")}};function we(){const e=ve(),[t,n]=(0,a.useState)((()=>[{page:se.aF?k.T3.Recovery:null!==l.J5.currentWork?k.T3.Work:k.T3.Terminal}])),r=t[0],o=(0,ge.S)(),[we,Ee]=(0,a.useState)(0),[Se,Ce]=(0,a.useState)(!0);function xe(){for(const e of(0,b.XX)())e.runningScriptMap.clear();u.Ex.saveGame(),setTimeout((()=>be.reload()),2e3)}function Ne(e){console.error(`Routing is currently disabled - Attempted router.${e}()`)}function Me(){(0,y.X)("Soft Reset!"),(0,c.Kq)(!0),Ee(we+1),ke.toPage(k.T3.Terminal)}(0,a.useEffect)((()=>p.p.subscribe(o)),[o]),ke={isInitialized:!0,page:()=>r.page,allowRouting:e=>Ce(e),toPage:(e,t)=>{if(!Se)return Ne("toPage");switch(e){case k.T3.Travel:l.J5.gotoLocation(f.LocationName.TravelAgency);break;case k.T3.BitVerse:(0,ie.v)()}(e=>{n((t=>{const n=[e,...t];return n.length=Math.min(n.length,10),n}))})({page:e,...t})},back:()=>{if(!Se)return Ne("back");n((e=>e.slice(1)))}},(0,a.useEffect)((()=>{r.page!==k.T3.Terminal&&window.scrollTo(0,0)}));let Ae=a.createElement(i.Z,null,"Cannot load"),Te=!0,Le=!0,Re=!1;switch(r.page){case k.T3.Recovery:Ae=a.createElement(se.JI,{softReset:Me}),Te=!1,Le=!1,Re=!0;break;case k.T3.BitVerse:Ae=a.createElement(z.x,{flume:r.flume,quick:r.quick}),Te=!1,Le=!1;break;case k.T3.Infiltration:Ae=a.createElement(A.m,{location:r.location}),Te=!1,Le=!1;break;case k.T3.BladeburnerCinematic:Ae=a.createElement(X.K,null),Te=!1,Le=!1;break;case k.T3.Work:Ae=a.createElement(L.l,null),Te=!1;break;case k.T3.Terminal:Ae=a.createElement(Z.F,null);break;case k.T3.Sleeves:Ae=a.createElement(F.X,null);break;case k.T3.StaneksGift:Ae=a.createElement(V.w,{staneksGift:Y.y$});break;case k.T3.Stats:Ae=a.createElement(j.P,null);break;case k.T3.ScriptEditor:var Fe;Ae=a.createElement(O.z,{files:r.files??new Map,hostname:l.J5.getCurrentServer().hostname,vim:!(null===(Fe=r.options)||void 0===Fe||!Fe.vim)});break;case k.T3.ActiveScripts:Ae=a.createElement(J.M,{workerScripts:Q.R});break;case k.T3.Hacknet:Ae=a.createElement(I.W,null);break;case k.T3.CreateProgram:Ae=a.createElement(B.d,null);break;case k.T3.Factions:Ae=a.createElement(W.Q,null);break;case k.T3.Faction:Ae=a.createElement(H.P,{faction:r.faction});break;case k.T3.FactionAugmentations:Ae=a.createElement(U.c,{faction:r.faction});break;case k.T3.Milestones:Ae=a.createElement(D.q,null);break;case k.T3.Documentation:Ae=a.createElement(G.C,null);break;case k.T3.DevMenu:Ae=a.createElement(C.V,null);break;case k.T3.Gang:Ae=a.createElement(N.m,null);break;case k.T3.Corporation:Ae=a.createElement(M.n,null);break;case k.T3.Bladeburner:Ae=a.createElement(x.i,null);break;case k.T3.Grafting:Ae=a.createElement(T.q,null);break;case k.T3.Travel:Ae=a.createElement($.Z,null);break;case k.T3.StockMarket:Ae=a.createElement(q.j,{stockMarket:v.xO});break;case k.T3.City:Ae=a.createElement(P.L,null);break;case k.T3.Job:case k.T3.Location:Ae=a.createElement(_.d,{loc:r.location});break;case k.T3.Options:Ae=a.createElement(R.n,{save:()=>u.Ex.saveGame(),export:()=>{(0,m.uL)(),u.Ex.exportGame()},forceKill:xe,softReset:Me,reactivateTutorial:()=>{(0,g.Y)(),ke.toPage(k.T3.Terminal),(0,h.mp)()}});break;case k.T3.Augmentations:Ae=a.createElement(S.n,{exportGameFn:()=>{(0,m.uL)(),u.Ex.exportGame()},installAugmentationsFn:()=>{(0,c.Kq)()}});break;case k.T3.Achievements:Ae=a.createElement(le.k,null);break;case k.T3.ThemeBrowser:Ae=a.createElement(ue.C,null);break;case k.T3.ImportSave:Ae=a.createElement(me.R,{importString:r.base64Save,automatic:!!r.automatic}),Te=!1,Le=!1,Re=!0}return a.createElement(pe.Z,{version:3,src:"dist/ext/MathJax-3.2.2/es5/tex-chtml.js"},a.createElement(ce.S,{key:we,softReset:Me},a.createElement(fe.i,{content:Re?Ae:null},a.createElement(ye.f6,null,a.createElement(te.wT,null,a.createElement(w.g,{mode:h.wP.isRunning?"tutorial":"overview"},(e=>h.wP.isRunning?a.createElement(d.o,null):a.createElement(K.sf,{parentOpen:e,save:()=>u.Ex.saveGame(),killScripts:xe}))),Te?a.createElement(s.Z,{display:"flex",flexDirection:"row",width:"100%"},a.createElement(E.F,{page:r.page}),a.createElement(s.Z,{className:e.root},Ae)):a.createElement(s.Z,{className:e.root},Ae),a.createElement(ee.f,null),a.createElement("div",{style:{display:Le?"inherit":"none",position:"absolute"}},a.createElement(ne.lj,null),a.createElement(ae.S,null),a.createElement(re.C,null),a.createElement(oe.N,null),a.createElement(te.A9,null)),a.createElement(he.g,null))))),a.createElement(de.u,null))}},45756:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});const a=new(n(13342).v)},59132:(e,t,n)=>{"use strict";n.d(t,{o:()=>C});var a=n(67294),r=n(28881),o=n(81138),i=n(92557),s=n(56798),l=n(13379),c=n(20724),u=n(45756),m=n(45529),f=n(10848),h=n(84855),d=n(91290),p=n(9944),g=n(30061),y=n(81261),b=n(3816),v=n(77541),k=n(73327),w=n(40780),E=n(88775);const S=(0,v.Z)((e=>(0,k.Z)({textfield:{borderBottom:"1px solid "+e.palette.primary.main},code:{whiteSpace:"pre",backgroundColor:e.palette.background.paper}})));function C(){const e=S(),t=(0,E.S)(),n="n00dles.js",v={[w.$o.Start]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Welcome to Bitburner, a cyberpunk-themed incremental RPG! The game takes place in a dark, dystopian future... The year is 2077...",a.createElement("br",null),a.createElement("br",null),"This tutorial will show you the basics of the game. You may skip the tutorial at any time.",a.createElement("br",null),a.createElement("br",null),"You can also collapse this panel to temporarily hide this tutorial.")),canNext:!0},[w.$o.GoToCharacterPage]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Let's start by heading to the Stats page. Click"),a.createElement(f.ZP,null,a.createElement(h.Z,{color:"error"}),a.createElement(o.Z,{color:"error"},"Stats")),a.createElement(o.Z,null,"on the main navigation menu (left-hand side of the screen)")),canNext:!1},[w.$o.CharacterPage]:{content:a.createElement(a.Fragment,null,a.createElement(f.ZP,null,a.createElement(h.Z,{color:"primary"}),a.createElement(o.Z,{color:"primary"},"Stats")),a.createElement(o.Z,null,"shows a lot of important information about your progress, such as your skills, money, and bonuses.")),canNext:!0},[w.$o.CharacterGoToTerminalPage]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Let's head to your computer's terminal by clicking"),a.createElement(f.ZP,null,a.createElement(d.Z,{color:"error"}),a.createElement(o.Z,{color:"error"},"Terminal")),a.createElement(o.Z,null,"on the main navigation menu.")),canNext:!1},[w.$o.TerminalIntro]:{content:a.createElement(a.Fragment,null,a.createElement(f.ZP,null,a.createElement(d.Z,{color:"primary"}),a.createElement(o.Z,{color:"primary"},"Terminal")),a.createElement(o.Z,null,"is used to interface with your home computer as well as all of the other machines around the world.")),canNext:!0},[w.$o.TerminalHelp]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Let's try it out. Start by entering"),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> help"),a.createElement(o.Z,null,"(Don't forget to press Enter after typing the command)")),canNext:!1},[w.$o.TerminalLs]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> help"),a.createElement(o.Z,null,"displays a list of all available Terminal commands, how to use them, and a description of what they do."," ",a.createElement("br",null),a.createElement("br",null),"Let's try another command. Enter"),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> ls")),canNext:!1},[w.$o.TerminalScan]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> ls"),a.createElement(o.Z,null," ","is a basic command that shows files on the computer. Right now, it shows that you have a program called"," ","NUKE.exe on your computer. We'll get to what this does later. ",a.createElement("br",null),a.createElement("br",null),"Using your home computer's terminal, you can connect to other machines throughout the world. Let's do that now by first entering"),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan")),canNext:!1},[w.$o.TerminalScanAnalyze1]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan"),a.createElement(o.Z,null,"shows all available network connections. In other words, it displays a list of all servers that can be connected to from your current machine. A server is identified by its hostname. ",a.createElement("br",null),a.createElement("br",null),"That's great and all, but there's so many servers. Which one should you go to?"," "),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan-analyze"),a.createElement(o.Z,null,"gives some more detailed information about servers on the network. Try it now!")),canNext:!1},[w.$o.TerminalScanAnalyze2]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan-analyze"),a.createElement(o.Z,null,"shows more detailed information about each server that you can connect to (servers that are a distance of one node away). ",a.createElement("br",null),a.createElement("br",null)," It is also possible to run scan-analyze with a higher depth. Let's try a depth of two with the following command:"," "),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan-analyze 2")),canNext:!1},[w.$o.TerminalConnect]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Now you can see information about all servers that are up to two nodes away, as well as figure out how to navigate to those servers through the network. You can only connect to a server that is one node away. To connect to a machine, use"),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> connect hostname"),a.createElement(o.Z,null,"From the results of "),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> scan-analyze 2"),a.createElement(o.Z,null," ","we can see that the n00dles server is only one node away. Let's connect to it now using:"),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> connect n00dles")),canNext:!1},[w.$o.TerminalAnalyze]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"You are now connected to another machine! What can you do now? You can hack it!",a.createElement("br",null),a.createElement("br",null)," In the year 2077, currency has become digital and decentralized. People and corporations store their money on servers and computers. Using your hacking abilities, you can hack servers to steal money and gain experience. ",a.createElement("br",null),a.createElement("br",null),"Before you try to hack a server, you should run diagnostics using"," "),a.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> analyze")),canNext:!1},[w.$o.TerminalNuke]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"When "),a.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> analyze"),a.createElement(o.Z,null,"finishes running it will show useful information about hacking the server. ",a.createElement("br",null),a.createElement("br",null)," For this server, the required hacking skill is only 1, which means you can hack it right now. However, in order to hack a server you must first gain root access. The NUKE.exe program that we saw earlier on your home computer is a virus that will grant you root access to a machine if there are enough open ports."),a.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> analyze"),a.createElement(o.Z,null," ","shows that there do not need to be any open ports on this machine for the NUKE virus to work, so go ahead and run the virus using"," "),a.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> run NUKE.exe"),a.createElement(o.Z,null)),canNext:!1},[w.$o.TerminalManualHack]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"You now have root access! You can hack the server using "),a.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> hack"),a.createElement(o.Z,null," Try doing that now.")),canNext:!0},[w.$o.TerminalHackingMechanics]:{content:a.createElement(o.Z,null,"You are now attempting to hack the server. Performing a hack takes time and only has a certain percentage chance of success. This time and success chance is determined by a variety of factors, including your hacking skill and the server's security level.",a.createElement("br",null),a.createElement("br",null),"If your attempt to hack the server is successful, you will steal a certain percentage of the server's total money. This percentage is affected by your hacking skill and the server's security level.",a.createElement("br",null),a.createElement("br",null),"The amount of money on a server is not limitless. So, if you constantly hack a server and deplete its money, then you will encounter diminishing returns in your hacking. You will need to use"," ",a.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> grow"),"which tricks the company into adding money to their server and"," ",a.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> weaken"),"which increases the speed of hack and grow."),canNext:!0},[w.$o.TerminalGoHome]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"From any server you can get back home using"),a.createElement(o.Z,{classes:{root:e.textfield}},"[n00dles ~/]> home"),a.createElement(o.Z,null,"Let's head home before creating our first script!")),canNext:!1},[w.$o.TerminalCreateScript]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Hacking is the core mechanic of the game and is necessary for progressing. However, you don't want to be hacking manually the entire time. You can automate your hacking by writing scripts!",a.createElement("br",null),a.createElement("br",null),"To create a new script or edit an existing one, you can use"," "),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> nano"),a.createElement(o.Z,null,"Scripts must end with the .js extension. Let's make a script now by entering "),a.createElement(o.Z,{classes:{root:e.textfield}},`[home ~/]> nano ${n}`)),canNext:!1},[w.$o.TerminalTypeScript]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"This is the script editor. You can use it to program your scripts. Click this text to copy it and paste it into the text editor: ",a.createElement("br",null)),a.createElement(o.Z,{classes:{root:e.code}},a.createElement(m.v,{value:"export async function main(ns) {\n\twhile(true) {\n\t\tawait ns.hack('n00dles');\n\t}\n}"})),a.createElement(o.Z,null,"For anyone with basic programming experience, this code should be straightforward. This script will continuously hack the n00dles server.",a.createElement("br",null),a.createElement("br",null),"To save and close the script editor, press the button at the bottom.")),canNext:!1},[w.$o.TerminalFree]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Now we'll run the script. Scripts require a certain amount of RAM to run, and can be run on any machine which you have root access to. Different servers have different amounts of RAM. You can also purchase more RAM for your home server.",a.createElement("br",null),a.createElement("br",null),"To check how much RAM is available on this machine, enter"),a.createElement(o.Z,{classes:{root:e.textfield}},"[home ~/]> free")),canNext:!1},[w.$o.TerminalRunScript]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"We have 8GB of free RAM on this machine, which is enough to run our script. Let's run our script using"),a.createElement(o.Z,{classes:{root:e.textfield}},`[home ~/]> run ${n}`)),canNext:!1},[w.$o.TerminalGoToActiveScriptsPage]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Your script is now running! It will continuously run in the background and will automatically stop if the code ever completes (the ",n," will never complete because it runs an infinite loop). ",a.createElement("br",null),a.createElement("br",null),"These scripts can passively earn you income and hacking experience. Your scripts will also earn money and experience while you are offline, although at a slightly slower rate. ",a.createElement("br",null),a.createElement("br",null),"Let's check out some statistics for our running scripts by clicking"," "),a.createElement(f.ZP,null,a.createElement(y.Z,{color:"error"}),a.createElement(o.Z,{color:"error"},"Active Scripts"))),canNext:!1},[w.$o.ActiveScriptsPage]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"This page displays information about all of your scripts that are running across every server. You can use this to gauge how well your scripts are doing.",a.createElement("br",null),a.createElement("br",null),"Click on Home to see the scripts running on it.",a.createElement("br",null),a.createElement("br",null),"Then click on n00dles.js to see the scripts information.",a.createElement("br",null),a.createElement("br",null),"Let's go back to"),a.createElement(f.ZP,null,a.createElement(d.Z,{color:"error"}),a.createElement(o.Z,{color:"error"},"Terminal"))),canNext:!1},[w.$o.ActiveScriptsToTerminal]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"One last thing about scripts, each active script contains logs that detail what it's doing. We can check these logs using the tail command. Do that now for the script we just ran by typing"," "),a.createElement(o.Z,{classes:{root:e.textfield}},`[home ~/]> tail ${n}`)),canNext:!1},[w.$o.TerminalTailScript]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"The log for this script won't show much right now (it might show nothing at all) because it just started running...but check back again in a few minutes! ",a.createElement("br",null),a.createElement("br",null),"This covers the basics of hacking. To learn more about writing scripts, select"),a.createElement(f.ZP,null,a.createElement(p.Z,{color:"primary"}),a.createElement(o.Z,{color:"primary"},"Documentation")),a.createElement(o.Z,null,"in the main navigation menu to look at the documentation.",a.createElement("br",null),a.createElement("br",null),"For now, let's move on to something else!")),canNext:!0},[w.$o.GoToHacknetNodesPage]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"Hacking is not the only way to earn money. One other way to passively earn money is by purchasing and upgrading Hacknet Nodes. Let's go to"),a.createElement(f.ZP,null,a.createElement(g.Z,{color:"error"}),a.createElement(o.Z,{color:"error"},"Hacknet")),a.createElement(o.Z,null,"through the main navigation menu now.")),canNext:!1},[w.$o.HacknetNodesIntroduction]:{content:a.createElement(o.Z,null,"Here you can purchase new Hacknet Nodes and upgrade your existing ones. Let's purchase a new one now."),canNext:!0},[w.$o.HacknetNodesGoToWorldPage]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"You just purchased a Hacknet Node! This Hacknet Node will passively earn you money over time, both online and offline. When you get enough money, you can upgrade your newly-purchased Hacknet Node below.",a.createElement("br",null),a.createElement("br",null),"Let's go to"),a.createElement(f.ZP,null,a.createElement(b.Z,{color:"error"}),a.createElement(o.Z,{color:"error"},"City"))),canNext:!1},[w.$o.WorldDescription]:{content:a.createElement(a.Fragment,null,a.createElement(o.Z,null,"This page lists all of the different locations you can currently travel to. Each location has something that you can do. There's a lot of content out in the world, make sure you explore and discover!",a.createElement("br",null),a.createElement("br",null),"Lastly, click on"),a.createElement(f.ZP,null,a.createElement(p.Z,{color:"error"}),a.createElement(o.Z,{color:"error"},"Documentation"))),canNext:!1},[w.$o.DocumentationPageInfo]:{content:a.createElement(o.Z,null,"This page contains a lot of different documentation about the game's content and mechanics. I know it's a lot, but I highly suggest you read (or at least skim) through this before you start playing.",a.createElement("br",null),a.createElement("br",null),"The Beginner's Guide contains the guide for new players, navigating you through most of early game.",a.createElement("br",null),a.createElement("br",null),"That's the end of the tutorial. Hope you enjoy the game!"),canNext:!0},[w.$o.End]:{content:a.createElement(o.Z,null),canNext:!0}};(0,a.useEffect)((()=>u.p.subscribe(t)),[t]);const k=w.wP.currStep,C=v[k];if(void 0===C)throw new Error("error in the tutorial");return a.createElement(a.Fragment,null,a.createElement(r.Z,{square:!0,sx:{maxWidth:"70vw",p:2}},C.content,k!==w.$o.DocumentationPageInfo&&a.createElement(a.Fragment,null,k!==w.$o.Start&&a.createElement(i.Z,{onClick:w.oo,"aria-label":"previous"},a.createElement(c.Z,null)),(C.canNext||w.wP.stepIsDone[k])&&a.createElement(i.Z,{onClick:w.ZF,"aria-label":"next"},a.createElement(l.Z,null))),a.createElement("br",null),a.createElement("br",null),a.createElement(s.Z,{onClick:w.nu},k!==w.$o.DocumentationPageInfo?"SKIP TUTORIAL":"FINISH TUTORIAL")))}},77888:(e,t,n)=>{"use strict";n.d(t,{a:()=>d});var a=n(67294),r=n(90149),o=n(81138),i=n(31990),s=n(22573),l=n(2827),c=n(52947),u=n(72938),m=n(97833),f=n(90936),h=n(10333);function d(){const[e,t]=(0,a.useState)(!1),[n,d]=(0,a.useState)(!1),p=`v${u.t.VersionString} (${(0,f.v)()})`;return document.title=`Bitburner ${p}`,(0,a.useEffect)((()=>{const e=setTimeout((()=>{n||t(!0)}),2e3);return()=>clearTimeout(e)})),(0,a.useEffect)((()=>{!async function(){await(0,s.zD)().then((e=>{try{l.D.load(e)}catch(e){throw(0,m.fp)(),d(!0),e}(0,h.e_)(),d(!0)})).catch((e=>{console.error(e),l.D.load(""),d(!0)}))}()}),[]),n?a.createElement(c.O,null):a.createElement(i.ZP,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",style:{minHeight:"100vh"}},a.createElement(i.ZP,{item:!0},a.createElement(r.Z,{size:150,color:"primary"})),a.createElement(i.ZP,{item:!0},a.createElement(o.Z,{variant:"h3"},"Loading Bitburner ",p)),e&&a.createElement(i.ZP,{item:!0},a.createElement(o.Z,null,"If the game fails to load, consider ",a.createElement("a",{href:"?noScripts"},"killing all scripts"))))}},45512:(e,t,n)=>{"use strict";n.d(t,{MD:()=>u});var a=n(67294),r=n(57433),o=n(15369),i=n(26219),s=n(8586),l=n(84066),c=n(51936);function u(e){return a.createElement(r.D,{components:{h1:s.h1,h2:s.h2,h3:s.h3,h4:s.h4,h5:s.h5,h6:s.h6,pre:l.S,p:s.p,code:l.T,li:s.li,th:s.Th,td:s.Td,table:s.K,thead:o.Z,tr:s.tr,blockquote:s.V,a:c.A},remarkPlugins:[i.Z]},e.md)}},51936:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var a=n(67294),r=n(39401),o=n(19678),i=n(93989),s=n(49173);const l=e=>{const t=(0,o.Q2)(),n=e.href??"";return n.startsWith("http")?a.createElement(r.Z,{rel:"noopener noreferrer",href:e.href,target:"_blank"},e.children):n.includes("advanced/")&&0===s.J5.sourceFileLvl(1)?a.createElement("span",{style:{textDecoration:"underline",cursor:"pointer"}},a.createElement(i.q,{content:e.children+""})):a.createElement(r.Z,{onClick:e=>{t.navigate(n,e.ctrlKey)},component:"button",variant:"body1",fontSize:"inherit"},e.children)}},84066:(e,t,n)=>{"use strict";n.d(t,{S:()=>u,T:()=>h});var a=n(67294),r=n(26105),o=n(58519),i=n(77541),s=n(73327),l=n(81138);const c=(0,i.Z)((e=>(0,s.Z)({pre:{borderRadius:"6px"},code:{paddingBottom:"2.72px",paddingLeft:"5.44px",paddingRight:"5.44px",paddingTop:"2.72px",borderRadius:"6px",display:"inline",backgroundColor:e.palette.background.paper}}))),u=e=>{const t=c();return a.createElement(l.Z,{component:"span",classes:{root:t.pre}},e.children)},m=e=>a.createElement(l.Z,{component:"span",classes:{root:c().code}},e.children),f=e=>a.createElement(r.Z,{language:"javascript",style:o.Z,customStyle:{padding:"16px",borderRadius:"6px"}},String(e.children)),h=e=>e.inline?a.createElement(m,e):a.createElement(f,e)},8586:(e,t,n)=>{"use strict";n.d(t,{K:()=>S,Td:()=>w,Th:()=>E,V:()=>x,h1:()=>f,h2:()=>h,h3:()=>d,h4:()=>p,h5:()=>g,h6:()=>y,li:()=>v,p:()=>b,tr:()=>C});var a=n(67294),r=n(77541),o=n(73327),i=n(81138),s=n(61702),l=n(7272),c=n(47542),u=n(49557);const m=(0,r.Z)((e=>(0,o.Z)({th:{whiteSpace:"pre",fontWeight:"bold"},td:{whiteSpace:"pre"},blockquote:{borderLeftColor:e.palette.background.paper,borderLeftStyle:"solid",borderLeftWidth:"4px",paddingLeft:"16px",paddingRight:"16px"}}))),f=e=>a.createElement(i.Z,{variant:"h2"},e.children),h=e=>a.createElement(i.Z,{variant:"h3"},e.children),d=e=>a.createElement(i.Z,{variant:"h4"},e.children),p=e=>a.createElement(i.Z,{variant:"h5"},e.children),g=e=>a.createElement(i.Z,{variant:"h6"},e.children),y=e=>a.createElement(i.Z,{variant:"h6"},e.children),b=e=>a.createElement(i.Z,{sx:{mb:1}},e.children),v=e=>{const t=e.ordered?`${e.index+1}. `:"· ";return a.createElement(s.Z,null,t,e.children)},k=e=>"-moz-initial"===e||"initial"===e||"revert"===e||"revert-layer"===e||"unset"===e||"end"===e||"start"===e||"match-parent"===e?"inherit":e,w=e=>{var t;const n=m(),r=k(null===(t=e.style)||void 0===t?void 0:t.textAlign);return a.createElement(l.Z,{align:r},a.createElement(i.Z,{align:r,classes:{root:n.td}},e.children))},E=e=>{var t;const n=m(),r=k(null===(t=e.style)||void 0===t?void 0:t.textAlign);return a.createElement(l.Z,{align:r},a.createElement(i.Z,{align:r,classes:{root:n.th}},e.children))},S=e=>a.createElement(c.Z,{sx:{width:"inherit"}},e.children),C=e=>a.createElement(u.Z,null,e.children),x=e=>{const t=m();return a.createElement("blockquote",{className:t.blockquote},e.children)}},86378:(e,t,n)=>{"use strict";n.d(t,{m:()=>m});var a=n(81138),r=n(67294),o=n(77541),i=n(73327),s=n(51087);const l=new RegExp("\\[(?.*?)m","ug"),c=(0,o.Z)((e=>(0,i.Z)({success:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.colors.success,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"},error:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.error.main,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"},primary:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.primary.main,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"},info:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.info.main,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"},warning:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.warning.main,"--padForFlushBg":(s.Z.styles.lineHeight-1)/2+"em"}}))),u=(e,t)=>({error:e.error,success:e.success,info:e.info,warn:e.warning}[t]||e.primary),m=r.memo((function(e){const t=String(e.text),n=c(),o=[],i=[{0:"",index:0,groups:{code:null}},...t.matchAll(l),null];return i.length>2&&i.slice(0,-1).forEach(((e,n)=>{const a=i[n+1];if(!e||void 0===e.index||void 0===e.groups)return;const r=e.index+e[0].length,s=a?a.index:t.length,l=t.slice(r,s);r!==s&&o.push({code:e.groups.code,text:l})})),0===o.length&&o.push({code:null,text:t}),r.createElement(a.Z,{component:"div",classes:{root:u(n,e.color)},paragraph:!1},o.map(((e,t)=>r.createElement("span",{key:t,style:f(e.code)},e.text))))}));function f(e){const t=["#404040","#ff0000","#00ff00","#ffff00","#0000ff","#ff00ff","#00ffff","#ffffff"],n=["#000000","#800000","#008000","#808000","#000080","#800080","#008080","#c0c0c0"],a=(e,a)=>{if(5===e[a]){if(e.length<=a+1)return[e.length-a,"inherit"];const r=e[a+1];if(0<=r&&r<8)return[2,n[r]];if(8<=r&&r<16)return[2,t[r-8]];if(16<=r&&r<232){const e=r-16,t=Math.floor(e/36),n=Math.floor(e%36/6),a=Math.floor(e%6/1);return[2,`rgb(${t<=0?0:55+40*t}, ${n<=0?0:55+40*n}, ${a<=0?0:55+40*a})`]}if(232<=r&&r<256){const e=10*(r-232)+8;return[2,`rgb(${e}, ${e}, ${e})`]}return[2,"inherit"]}return 2===e[a]?e.length<=a+3?[e.length-a,"inherit"]:[4,`rgb(${e[a+1]}, ${e[a+2]}, ${e[a+3]})`]:[-1,""]},r={};if(null===e||"0"===e)return r;const o=e.split(";").map((e=>""===e?0:parseInt(e)));for(let e=0;e0&&(e+=t,r[38===i?"color":"backgroundColor"]=n)}}return r.backgroundColor&&(r.padding="var(--padForFlushBg) 0px"),r}},95173:(e,t,n)=>{"use strict";n.d(t,{S:()=>m,e:()=>c});var a=n(67294),r=n(13342),o=n(48672),i=n(81138),s=n(30120),l=n(72023);const c=new r.v;let u=0;function m(){const[e,t]=(0,a.useState)([]);return(0,a.useEffect)((()=>c.subscribe((e=>{const n=u+"";u++,t((t=>{const a=function(e){return"string"==typeof e?(0,l.sha256)(e):(0,l.sha256)(JSON.stringify(e.props))}(e);return t.some((e=>e.hash===a))?t:[...t,{id:n,text:e,hash:a}]}))}))),[]),(0,a.useEffect)((()=>{function e(e){"Escape"===e.code&&t([])}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)}),[]),a.createElement(a.Fragment,null,e.length>0&&a.createElement(o.u,{open:!0,onClose:function(){t((e=>e.slice(1,1e99)))}},a.createElement(s.Z,{overflow:"scroll",sx:{overflowWrap:"break-word",whiteSpace:"pre-line"}},a.createElement(i.Z,{component:"span"},e[0].text))))}},18450:(e,t,n)=>{"use strict";n.d(t,{i:()=>r});var a=n(67294);function r(e){return e.content?a.createElement(a.Fragment,null,e.content):a.createElement(a.Fragment,null,e.children)}},43480:(e,t,n)=>{"use strict";n.d(t,{sf:()=>q,yK:()=>Q});var a=n(67294),r=n(62097),o=n(77541),i=n(73327),s=n(22115),l=n(17365),c=n(22949),u=n(49802),m=n(47542),f=n(46948),h=n(7272),d=n(49557),p=n(81138),g=n(56798),y=n(92557),b=n(66818),v=n(92911),k=n(51087),w=n(52947),E=n(24815),S=n(49173),C=n(19312),x=n(97740),N=n(30120),M=n(17575),A=n(94337),T=n(72938),L=n(95814),R=n(64315),F=n(16632),I=n(74192),_=n(75522),P=n(48196),B=n(22738),O=n(13342),D=n(88775);const Z=new O.v,G={HP:()=>S.J5.hp.current+"|"+S.J5.hp.max,Money:()=>S.J5.money,Hack:()=>S.J5.skills.hacking,Str:()=>S.J5.skills.strength,Def:()=>S.J5.skills.defense,Dex:()=>S.J5.skills.dexterity,Agi:()=>S.J5.skills.agility,Cha:()=>S.J5.skills.charisma,Int:()=>S.J5.skills.intelligence},J={HP:()=>`${(0,s.nC)(S.J5.hp.current)} / ${(0,s.nC)(S.J5.hp.max)}`,Money:()=>(0,s.lb)(S.J5.money),Hack:()=>(0,s.DR)(S.J5.skills.hacking),Str:()=>(0,s.DR)(S.J5.skills.strength),Def:()=>(0,s.DR)(S.J5.skills.defense),Dex:()=>(0,s.DR)(S.J5.skills.dexterity),Agi:()=>(0,s.DR)(S.J5.skills.agility),Cha:()=>(0,s.DR)(S.J5.skills.charisma),Int:()=>(0,s.DR)(S.J5.skills.intelligence)},W={Hack:()=>S.J5.mults.hacking*x.dQ.HackingLevelMultiplier,Str:()=>S.J5.mults.strength*x.dQ.StrengthLevelMultiplier,Def:()=>S.J5.mults.defense*x.dQ.DefenseLevelMultiplier,Dex:()=>S.J5.mults.dexterity*x.dQ.DexterityLevelMultiplier,Agi:()=>S.J5.mults.agility*x.dQ.AgilityLevelMultiplier,Cha:()=>S.J5.mults.charisma*x.dQ.CharismaLevelMultiplier,Int:()=>1},H={Hack:"hacking",Str:"strength",Def:"defense",Dex:"dexterity",Agi:"agility",Cha:"charisma",Int:"intelligence"};function U(e){let{name:t,color:n}=e;const[r,o]=(0,a.useState)((0,B.VI)(0));return(0,a.useEffect)((()=>Z.subscribe((()=>{const e=W[t]();o((0,B.VI)(S.J5.exp[H[t]],e))}))),[t]),a.createElement(d.Z,null,a.createElement(C.B,{progress:r,color:n}))}function j(e){let{name:t,color:n}=e;const[r,o]=(0,a.useState)(G[t]());return(0,a.useEffect)((()=>Z.subscribe((()=>o(G[t]())))),[t]),a.createElement(p.Z,{color:n},J[t]())}function $(e){let{name:t,showBar:n,color:r,cellType:o}=e;const i=Q(),s=n&&t in H?a.createElement(U,{name:t,color:r}):a.createElement(a.Fragment,null);return a.createElement(a.Fragment,null,a.createElement(d.Z,null,a.createElement(h.Z,{component:"th",scope:"row",classes:{root:i[o]}},a.createElement(p.Z,{color:r},t," ")),a.createElement(h.Z,{align:"right",classes:{root:i[o]}},a.createElement(j,{name:t,color:r})),a.createElement(h.Z,{align:"right",classes:{root:i[o]}},a.createElement(p.Z,{id:"overview-"+t.toLowerCase()+"-hook",color:r}))),s)}function q(e){let{parentOpen:t,save:n,killScripts:o}=e;const[i,s]=(0,a.useState)(!1),[l,u]=(0,a.useState)(S.J5.skills.intelligence>0),[g,w]=(0,a.useState)(!k.Z.DisableOverviewProgressBars);(0,a.useEffect)((()=>{if(!t)return;const e=setInterval((()=>{u(S.J5.skills.intelligence>0),w(!k.Z.DisableOverviewProgressBars),Z.emit()}),600);return()=>clearInterval(e)}),[t]);const E=Q(),C=(0,r.Z)();return a.createElement(a.Fragment,null,a.createElement(m.Z,{sx:{display:"block",m:1}},a.createElement(f.Z,null,a.createElement($,{name:"HP",showBar:!1,color:C.colors.hp,cellType:"cellNone"}),a.createElement($,{name:"Money",showBar:!1,color:C.colors.money,cellType:"cell"}),a.createElement($,{name:"Hack",showBar:g,color:C.colors.hack,cellType:"cell"}),a.createElement($,{name:"Str",showBar:g,color:C.colors.combat,cellType:"cellNone"}),a.createElement($,{name:"Def",showBar:g,color:C.colors.combat,cellType:"cellNone"}),a.createElement($,{name:"Dex",showBar:g,color:C.colors.combat,cellType:"cellNone"}),a.createElement($,{name:"Agi",showBar:g,color:C.colors.combat,cellType:"cell"}),a.createElement($,{name:"Cha",showBar:g,color:C.colors.cha,cellType:"cell"}),l?a.createElement($,{name:"Int",showBar:g,color:C.colors.int,cellType:"cell"}):a.createElement(a.Fragment,null),a.createElement(d.Z,null,a.createElement(h.Z,{component:"th",scope:"row",classes:{root:E.cell}},a.createElement(p.Z,{id:"overview-extra-hook-0",color:C.colors.hack})),a.createElement(h.Z,{component:"th",scope:"row",align:"right",classes:{root:E.cell}},a.createElement(p.Z,{id:"overview-extra-hook-1",color:C.colors.hack})),a.createElement(h.Z,{component:"th",scope:"row",align:"right",classes:{root:E.cell}},a.createElement(p.Z,{id:"overview-extra-hook-2",color:C.colors.hack}))),a.createElement(X,null),a.createElement(V,null))),a.createElement(N.Z,{sx:{display:"flex",borderTop:`1px solid ${k.Z.theme.welllight}`}},a.createElement(N.Z,{sx:{display:"flex",flex:1,justifyContent:"flex-start",alignItems:"center"}},a.createElement(y.Z,{"aria-label":"save game",onClick:n},a.createElement(M.Z,{title:0!==k.Z.AutosaveInterval?"Save game":"Save game (auto-saves are disabled!)"},a.createElement(b.Z,{color:0!==k.Z.AutosaveInterval?"primary":"error"})))),a.createElement(N.Z,{sx:{display:"flex",flex:1,justifyContent:"flex-end",alignItems:"center"}},a.createElement(y.Z,{"aria-label":"kill all scripts",onClick:()=>s(!0)},a.createElement(M.Z,{title:"Kill all running scripts"},a.createElement(v.Z,{color:"error"}))))),a.createElement(c.C,{open:i,onClose:()=>s(!1),killScripts:o}))}function z(e){const t=S.J5.bladeburner;if(!t)return a.createElement(a.Fragment,null);const n=t.getTypeAndNameFromActionId(e.action);return a.createElement(p.Z,null,n.type,": ",n.name)}function V(){var e;const t=Q(),n=(0,D.S)();(0,a.useEffect)((()=>Z.subscribe(n)),[n]);const r=null===(e=S.J5.bladeburner)||void 0===e?void 0:e.action;return(0,a.useMemo)((()=>r&&1!==r.type?a.createElement(a.Fragment,null,a.createElement(d.Z,null,a.createElement(h.Z,{component:"th",scope:"row",colSpan:2,classes:{root:t.cellNone}},a.createElement(p.Z,null,"Bladeburner:"))),a.createElement(d.Z,null,a.createElement(h.Z,{component:"th",scope:"row",colSpan:2,classes:{root:t.cellNone}},a.createElement(z,{action:r})))):a.createElement(a.Fragment,null)),[r,t.cellNone])}const Y=()=>{S.J5.startFocusing(),w.F.toPage(E.T3.Work)};function K(e){let{tooltip:t,children:n,header:r}=e;const o=Q();return a.createElement(a.Fragment,null,a.createElement(d.Z,null,a.createElement(h.Z,{component:"th",scope:"row",colSpan:2,classes:{root:o.workCell}},a.createElement(M.Z,{title:a.createElement(a.Fragment,null,t)},a.createElement(p.Z,{className:o.workHeader,sx:{pt:1,pb:.5}},r)))),a.createElement(d.Z,null,a.createElement(h.Z,{component:"th",scope:"row",colSpan:2,classes:{root:o.workCell}},a.createElement(p.Z,{className:o.workSubtitles},n))),(0,a.useMemo)((()=>a.createElement(d.Z,null,a.createElement(h.Z,{component:"th",scope:"row",align:"center",colSpan:2,classes:{root:o.cellNone}},a.createElement(g.Z,{sx:{mt:1},onClick:Y},"Focus")))),[o.cellNone]))}function X(){const e=(0,D.S)();if((0,a.useEffect)((()=>Z.subscribe(e)),[e]),null===S.J5.currentWork||S.J5.focus)return a.createElement(a.Fragment,null);let t="",n="",r="";if((0,P.s)(S.J5.currentWork)){const e=S.J5.currentWork.getCrime(),o=S.J5.currentWork.unitCompleted/e.time*100;t=a.createElement(a.Fragment,null,S.J5.currentWork.crimeType),n=a.createElement(a.Fragment,null,"You are attempting to ",S.J5.currentWork.crimeType),r=a.createElement(a.Fragment,null,o.toFixed(2),"%")}if((0,A.tG)(S.J5.currentWork)&&(t=a.createElement(a.Fragment,null,S.J5.currentWork.getClass().youAreCurrently),n=a.createElement(a.Fragment,null,"You are ",S.J5.currentWork.getClass().youAreCurrently),r=a.createElement(a.Fragment,null,(0,u.UF)(S.J5.currentWork.cyclesWorked*T.t.MilliPerCycle))),(0,L.o)(S.J5.currentWork)){const e=S.J5.currentWork;t=a.createElement(a.Fragment,null,"Coding ",e.programName),n=a.createElement(a.Fragment,null,"Creating a program"),r=a.createElement(a.Fragment,null,e.programName," ",(e.unitCompleted/e.unitNeeded()*100).toFixed(2),"%")}if((0,R.u)(S.J5.currentWork)){const e=S.J5.currentWork;t=a.createElement(a.Fragment,null,"Grafting ",e.augmentation),n=a.createElement(a.Fragment,null,"Grafting an Augmentation"),r=a.createElement(a.Fragment,null,a.createElement("strong",null,(e.unitCompleted/e.unitNeeded()*100).toFixed(2),"%")," done")}if((0,F.D)(S.J5.currentWork)){const e=S.J5.currentWork;n=a.createElement(a.Fragment,null,"Working for ",a.createElement("strong",null,e.factionName)),r=a.createElement(a.Fragment,null,a.createElement(l.Y,{reputation:e.getFaction().playerReputation})," rep",a.createElement("br",null),"(",a.createElement(I.y,{reputation:e.getReputationRate()*(1e3/T.t.MilliPerCycle)}),")")}if((0,_.d)(S.J5.currentWork)){const e=S.J5.currentWork,o=S.J5.jobs[e.companyName];if(!o)return a.createElement(a.Fragment,null);t=a.createElement(a.Fragment,null,o," at ",a.createElement("strong",null,e.companyName)),n=a.createElement(a.Fragment,null,"Working at ",a.createElement("strong",null,e.companyName)),r=a.createElement(a.Fragment,null,a.createElement(l.Y,{reputation:e.getCompany().playerReputation})," rep",a.createElement("br",null),"(",a.createElement(I.y,{reputation:e.getGainRates(o).reputation*(1e3/T.t.MilliPerCycle)}),")")}return a.createElement(K,{tooltip:t,header:n},r)}const Q=(0,o.Z)((e=>(0,i.Z)({workCell:{textAlign:"center",maxWidth:"200px",borderBottom:"none",padding:0,margin:0},workHeader:{fontSize:"0.9rem"},workSubtitles:{fontSize:"0.8rem"},cellNone:{borderBottom:"none",padding:0,margin:0},cell:{padding:0,margin:0},hp:{color:e.colors.hp},money:{color:e.colors.money},hack:{color:e.colors.hack},combat:{color:e.colors.combat},cha:{color:e.colors.cha},int:{color:e.colors.int}})))},441:(e,t,n)=>{"use strict";n.d(t,{z:()=>o});var a=n(67294),r=n(81138);function o(e){const[t,n]=(0,a.useState)(0),[o,i]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{if(o&&e.onDone)return void e.onDone();let a=!1;return(async()=>{await(10,new Promise((e=>setTimeout(e,10)))).then((()=>!a&&function(){const a=t+1;n(a),i(a>=e.text.length)}()))})(),()=>{a=!0}})),a.createElement(a.Fragment,null,a.createElement(r.Z,null,e.text.slice(0,t),!o&&a.createElement("span",null,"█")))}},6681:(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var a=n(67294),r=n(441),o=n(81138),i=n(56798);function s(e){const[t,n]=(0,a.useState)(0),[s,l]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,e.lines.slice(0,t).map(((e,t)=>a.createElement(o.Z,{key:t},e))),e.lines.length>t&&a.createElement(r.z,{key:t,text:e.lines[t],onDone:function(){const a=t+1;n(a),a>=e.lines.length&&(e.onDone&&e.auto&&e.onDone(),l(!0))}}),!e.auto&&e.onDone&&s&&a.createElement(i.Z,{onClick:e.onDone},"Continue ..."))}},51020:(e,t,n)=>{"use strict";n.d(t,{W:()=>h,Z:()=>f});var a=n(67294),r=n(81055),o=n(62725),i=n(45529),s=n(48672),l=n(13342),c=n(81138),u=n(66351),m=n(56798);const f=new l.v;function h(){const[e,t]=(0,a.useState)(null),[n,l]=(0,a.useState)("");if((0,a.useEffect)((()=>{f.subscribe((e=>t(e)))})),(0,a.useEffect)((()=>()=>{null==e||e.onClose()}),[e]),null===e)return a.createElement(a.Fragment,null);function h(){null!==e&&(e.onClose(),t(null))}const d=o.Th[e.c.type],p=[];for(const[t,n]of d.desc(e.c.data).split("\n").entries())p.push(a.createElement("span",{key:t,dangerouslySetInnerHTML:{__html:n+"
"}}));return a.createElement(s.u,{open:null!==e,onClose:h},a.createElement(i.v,{variant:"h4",value:e.c.type}),a.createElement(c.Z,null,"You are attempting to solve a Coding Contract. You have ",e.c.getMaxNumTries()-e.c.tries," tries remaining, after which the contract will self-destruct."),a.createElement("br",null),a.createElement(c.Z,null,p),a.createElement("br",null),a.createElement(u.Z,{autoFocus:!0,placeholder:"Enter Solution here",value:n,onChange:function(e){l(e.target.value)},onKeyDown:function(t){if(null===e)return;const a=t.currentTarget.value;t.key===r.F.ENTER&&""!==a&&(t.preventDefault(),e.onAttempt(n),l(""),h())},InputProps:{endAdornment:a.createElement(m.Z,{onClick:()=>{e.onAttempt(n),l(""),h()}},"Solve")}}))}},38217:(e,t,n)=>{"use strict";n.d(t,{e:()=>c});var a=n(67294),r=n(26023),o=n(98649),i=n(56798),s=n(62586);const l=(0,n(21623).nd)(s.O).sort(((e,t)=>e.localeCompare(t)));function c(e){const t=[];for(const e of l)t.push(a.createElement(o.Z,{key:e,value:e},e));return a.createElement(r.Z,{startAdornment:a.createElement(i.Z,{onClick:e.purchase,disabled:!e.canPurchase},"Buy"),sx:{mx:1},value:e.value,onChange:e.onChange},t)}},54538:(e,t,n)=>{"use strict";n.d(t,{c:()=>s});var a=n(67294),r=n(48672),o=n(56798),i=n(81138);function s(e){return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(a.Fragment,null,a.createElement(i.Z,null,e.confirmationText),a.createElement(o.Z,{onClick:()=>{e.onConfirm()}},"Confirm"),e.additionalButton&&a.createElement(a.Fragment,null,e.additionalButton)))}},45529:(e,t,n)=>{"use strict";n.d(t,{v:()=>i});var a=n(67294),r=n(81138),o=n(17575);function i(e){const[t,n]=(0,a.useState)(!1);return a.createElement(o.Z,{open:t,title:a.createElement(r.Z,null,"Copied!")},a.createElement(r.Z,{variant:e.variant,color:e.color,onClick:function(){const t=document.createElement("textarea");t.value=e.value,document.body.appendChild(t),t.select(),t.setSelectionRange(0,1e10),document.execCommand("copy"),document.body.removeChild(t),n(!0),setTimeout((()=>n(!1)),1e3)}},e.value))}},93989:(e,t,n)=>{"use strict";n.d(t,{q:()=>o});var a=n(67294);function r(e,t,n){return e.substring(0,t)+n+e.substring(t+1)}function o(e){const[t,n]=(0,a.useState)(e.content);return(0,a.useEffect)((()=>{let t=5;const a=[],o=setInterval((()=>{if(t--,t>0)return;t=5*Math.random();const o=Math.random()*e.content.length,i=e.content.charAt(o);n((e=>r(e,o,function(e){const t=e=>e[Math.floor(Math.random()*e.length)],n=["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","1234567890"," _","()[]{}<>"];for(const a of n)if(a.includes(e))return t(a);return t("!@#$%^&*()_+|\\';\"/.,?`~")}(i)))),a.push(window.setTimeout((()=>{n((e=>r(e,o,i)))}),500))}),20);return()=>{clearInterval(o),a.forEach((e=>clearTimeout(e)))}}),[e.content]),a.createElement("span",null,t)}},6466:(e,t,n)=>{"use strict";n.d(t,{t:()=>u});var a=n(67294),r=n(22573),o=n(54538),i=n(56798),s=n(17575),l=n(41733),c=n(10333);function u(e){let{color:t="primary"}=e;const[n,u]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,a.createElement(s.Z,{title:"This will permanently delete your local save game. Did you export it before?"},a.createElement(i.Z,{startIcon:a.createElement(l.Z,null),color:t,onClick:()=>u(!0)},"Delete Save")),a.createElement(o.c,{onConfirm:()=>{u(!1),(0,r.TT)().then((()=>{(0,c._l)(),setTimeout((()=>location.reload()),1e3)})).catch((e=>console.error(`Could not delete game: ${e}`)))},open:n,onClose:()=>u(!1),confirmationText:"Really delete your game? (It's permanent!)",additionalButton:a.createElement(i.Z,{onClick:()=>u(!1)},"Cancel")}))}},39463:(e,t,n)=>{"use strict";n.d(t,{X:()=>i});var a=n(95173),r=n(67294),o=n(81138);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.e.emit("string"!=typeof e?e:t?r.createElement("div",{dangerouslySetInnerHTML:{__html:e}}):r.createElement(o.Z,{component:"span",style:{whiteSpace:"pre-wrap"}},e))}},19678:(e,t,n)=>{"use strict";n.d(t,{C3:()=>o,Q2:()=>i,f6:()=>m,k6:()=>u});var a=n(67294),r=n(64962);const o=a.createContext({navigate:()=>{}}),i=()=>(0,a.useContext)(o),s=(0,r.Tp)("index.md"),l=a.createContext({page:s,pages:[],push:()=>{},pop:()=>{},home:()=>{}}),c=l.Provider,u=()=>(0,a.useContext)(l),m=e=>{const[t,n]=(0,a.useState)({page:s,pages:[],push(e){n((t=>((e,t)=>({...e,page:t,pages:[...e.pages,e.page]}))(t,e)))},pop(){n((e=>(e=>{const t=e.pages.pop()??s;return{...e,page:t}})(e)))},home(){n((e=>(e=>({...e,page:s,pages:[]}))(e)))}});return a.createElement(c,{value:t},e.children)}},41519:(e,t,n)=>{"use strict";n.d(t,{T:()=>l});var a=n(67294),r=n(22115),o=n(77541),i=n(73327);const s=(0,o.Z)((e=>(0,i.Z)({favor:{color:e.colors.rep}})));function l(e){let{favor:t}=e;const n=s();return a.createElement("span",{className:n.favor},"number"==typeof t?(0,r.ZQ)(t):t)}},79198:(e,t,n)=>{"use strict";n.d(t,{a:()=>i});var a=n(67294),r=n(22115),o=n(50411);function i(e){let{hashes:t}=e;return a.createElement(o.S,{hashes:`${(0,r.y3)(t)} h / s`})}},50411:(e,t,n)=>{"use strict";n.d(t,{S:()=>l});var a=n(67294),r=n(22115),o=n(77541),i=n(73327);const s=(0,o.Z)((e=>(0,i.Z)({money:{color:e.colors.money}})));function l(e){let{hashes:t}=e;const n=s();return a.createElement("span",{className:n.money},"number"==typeof t?(0,r.y3)(t):t)}},5890:(e,t,n)=>{"use strict";n.d(t,{k:()=>s});var a=n(67294),r=n(17575),o=n(40759),i=n(35487);const s=e=>{let{isBetter:t}=e;const n=t?"Imported value is larger!":"Imported value is smaller!",s=t?a.createElement(o.Z,{color:"success"}):a.createElement(i.Z,{color:"error"});return a.createElement(r.Z,{title:n},s)}},96380:(e,t,n)=>{"use strict";n.d(t,{R:()=>D});var a=n(67294),r=n(30120),o=n(56798),i=n(34265),s=n(51627),l=n(92557),c=n(28881),u=n(47542),m=n(15369),f=n(49557),h=n(46948),d=n(67929),p=n(7272),g=n(17575),y=n(81138),b=n(77541),v=n(73327),k=n(62177),w=n(80227),E=n(21023),S=n(75503),C=n(90813),x=n(34716),N=n(51087),M=n(49802),A=n(22115),T=n(54538),L=n(10333),R=n(52947),F=n(24815),I=n(88775),_=n(5890);const P=(0,b.Z)((e=>(0,v.Z)({root:{padding:e.spacing(2),maxWidth:"1000px","& .MuiTable-root":{"& .MuiTableCell-root":{borderBottom:`1px solid ${N.Z.theme.welllight}`},"& .MuiTableHead-root .MuiTableRow-root":{backgroundColor:N.Z.theme.backgroundsecondary,"& .MuiTableCell-root":{color:N.Z.theme.primary,fontWeight:"bold"}},"& .MuiTableBody-root":{"& .MuiTableRow-root:nth-of-type(odd)":{backgroundColor:N.Z.theme.well,"& .MuiTableCell-root":{color:N.Z.theme.primarylight}},"& .MuiTableRow-root:nth-of-type(even)":{backgroundColor:N.Z.theme.backgroundsecondary,"& .MuiTableCell-root":{color:N.Z.theme.primarylight}}}}},skillTitle:{textTransform:"capitalize"}}))),B=["hacking","strength","defense","dexterity","agility","charisma"];let O=0;const D=e=>{var t,n,b,v,D,Z,G,J,W,H,U,j,$,q,z,V,Y,K,X,Q,ee,te,ne,ae,re,oe,ie,se,le,ce,ue,me,fe,he,de,pe,ge,ye,be,ve,ke,we,Ee,Se,Ce,xe,Ne,Me,Ae,Te,Le,Re;const Fe=P(),[Ie,_e]=(0,a.useState)(),[Pe,Be]=(0,a.useState)(),[Oe,{on:De,off:Ze}]=(0,I.k)(!1),[Ge,{toggle:Je}]=(0,I.k)(!0),[We,He]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{O=N.Z.AutosaveInterval,N.Z.AutosaveInterval=0,R.F.allowRouting(!1)}),[]),(0,a.useEffect)((()=>{We&&R.F.toPage(F.T3.Terminal)}),[We]),(0,a.useEffect)((()=>{e.importString&&async function(){const t=await x.Ex.getImportDataFromString(e.importString),n=await x.Ex.getImportDataFromString(x.Ex.getSaveString(!0));_e(t),Be(n),Promise.resolve()}()}),[e.importString]),Ie&&Pe?a.createElement(r.Z,{className:Fe.root},a.createElement(y.Z,{variant:"h4",sx:{mb:2}},"Import Save Comparison"),e.automatic&&a.createElement(y.Z,{sx:{mb:2}},"We've found a ",a.createElement("b",null,"NEWER save")," that you may want to use instead."),a.createElement(y.Z,{variant:"body1",sx:{mb:2}},"Your current game's data is on the left and the data that will be imported is on the right.",a.createElement("br",null),"Please double check everything is fine before proceeding!"),a.createElement(d.Z,{color:"secondary",component:c.Z},a.createElement(u.Z,null,a.createElement(m.Z,null,a.createElement(f.Z,null,a.createElement(p.Z,null),a.createElement(p.Z,null,"Current Game"),a.createElement(p.Z,null,"Being Imported"),a.createElement(p.Z,{width:56}))),a.createElement(h.Z,null,a.createElement(f.Z,null,a.createElement(p.Z,null,"Game Identifier"),a.createElement(p.Z,null,(null===(t=Pe.playerData)||void 0===t?void 0:t.identifier)??"n/a"),a.createElement(p.Z,null,(null===(n=Ie.playerData)||void 0===n?void 0:n.identifier)??"n/a"),a.createElement(p.Z,null,(null===(b=Ie.playerData)||void 0===b?void 0:b.identifier)!==(null===(v=Pe.playerData)||void 0===v?void 0:v.identifier)&&a.createElement(g.Z,{title:"These are two different games!"},a.createElement(k.Z,{color:"warning"})))),a.createElement(f.Z,null,a.createElement(p.Z,null,"Playtime"),a.createElement(p.Z,null,(0,M.UF)((null===(D=Pe.playerData)||void 0===D?void 0:D.totalPlaytime)??0)),a.createElement(p.Z,null,(0,M.UF)((null===(Z=Ie.playerData)||void 0===Z?void 0:Z.totalPlaytime)??0)),a.createElement(p.Z,null,(null===(G=Ie.playerData)||void 0===G?void 0:G.totalPlaytime)!==(null===(J=Pe.playerData)||void 0===J?void 0:J.totalPlaytime)&&a.createElement(_.k,{isBetter:((null===(W=Ie.playerData)||void 0===W?void 0:W.totalPlaytime)??0)>((null===(H=Pe.playerData)||void 0===H?void 0:H.totalPlaytime)??0)}))),a.createElement(f.Z,null,a.createElement(p.Z,null,"Saved On"),a.createElement(p.Z,null,((null===(U=Pe.playerData)||void 0===U?void 0:U.lastSave)??0)>0?new Date((null===(j=Pe.playerData)||void 0===j?void 0:j.lastSave)??0).toLocaleString():"n/a"),a.createElement(p.Z,null,((null===($=Ie.playerData)||void 0===$?void 0:$.lastSave)??0)>0?new Date((null===(q=Ie.playerData)||void 0===q?void 0:q.lastSave)??0).toLocaleString():"n/a"),a.createElement(p.Z,null,(null===(z=Ie.playerData)||void 0===z?void 0:z.lastSave)!==(null===(V=Pe.playerData)||void 0===V?void 0:V.lastSave)&&a.createElement(_.k,{isBetter:((null===(Y=Ie.playerData)||void 0===Y?void 0:Y.lastSave)??0)>((null===(K=Pe.playerData)||void 0===K?void 0:K.lastSave)??0)}))),a.createElement(f.Z,null,a.createElement(p.Z,null,"Money"),a.createElement(p.Z,null,(0,A.lb)((null===(X=Pe.playerData)||void 0===X?void 0:X.money)??0)),a.createElement(p.Z,null,(0,A.lb)((null===(Q=Ie.playerData)||void 0===Q?void 0:Q.money)??0)),a.createElement(p.Z,null,(null===(ee=Ie.playerData)||void 0===ee?void 0:ee.money)!==(null===(te=Pe.playerData)||void 0===te?void 0:te.money)&&a.createElement(_.k,{isBetter:((null===(ne=Ie.playerData)||void 0===ne?void 0:ne.money)??0)>((null===(ae=Pe.playerData)||void 0===ae?void 0:ae.money)??0)}))),a.createElement(f.Z,null,a.createElement(p.Z,{colSpan:4},a.createElement(l.Z,{"aria-label":"expand row",size:"small",onClick:Je},Ge?a.createElement(C.Z,null):a.createElement(S.Z,null)),"Skills")),a.createElement(f.Z,null,a.createElement(p.Z,{colSpan:4,padding:"none"},a.createElement(s.Z,{in:Ge},a.createElement(u.Z,null,a.createElement(h.Z,null,a.createElement(f.Z,null),B.map((e=>{var t,n;const r=(null===(t=Pe.playerData)||void 0===t?void 0:t.skills[e])??0,o=(null===(n=Ie.playerData)||void 0===n?void 0:n.skills[e])??0;return a.createElement(f.Z,{key:e},a.createElement(p.Z,{className:Fe.skillTitle},e),a.createElement(p.Z,null,(0,A.$j)(r,0)),a.createElement(p.Z,null,(0,A.$j)(o,0)),a.createElement(p.Z,{width:56},r!==o&&a.createElement(_.k,{isBetter:o>r})))})),B.length%2==1&&a.createElement(f.Z,null)))))),a.createElement(f.Z,null),a.createElement(f.Z,null,a.createElement(p.Z,null,"Augmentations"),a.createElement(p.Z,null,null===(re=Pe.playerData)||void 0===re?void 0:re.augmentations),a.createElement(p.Z,null,null===(oe=Ie.playerData)||void 0===oe?void 0:oe.augmentations),a.createElement(p.Z,null,(null===(ie=Ie.playerData)||void 0===ie?void 0:ie.augmentations)!==(null===(se=Pe.playerData)||void 0===se?void 0:se.augmentations)&&a.createElement(_.k,{isBetter:((null===(le=Ie.playerData)||void 0===le?void 0:le.augmentations)??0)>((null===(ce=Pe.playerData)||void 0===ce?void 0:ce.augmentations)??0)}))),a.createElement(f.Z,null,a.createElement(p.Z,null,"Factions"),a.createElement(p.Z,null,null===(ue=Pe.playerData)||void 0===ue?void 0:ue.factions),a.createElement(p.Z,null,null===(me=Ie.playerData)||void 0===me?void 0:me.factions),a.createElement(p.Z,null,(null===(fe=Ie.playerData)||void 0===fe?void 0:fe.factions)!==(null===(he=Pe.playerData)||void 0===he?void 0:he.factions)&&a.createElement(_.k,{isBetter:((null===(de=Ie.playerData)||void 0===de?void 0:de.factions)??0)>((null===(pe=Pe.playerData)||void 0===pe?void 0:pe.factions)??0)}))),a.createElement(f.Z,null,a.createElement(p.Z,null,"Achievements"),a.createElement(p.Z,null,null===(ge=Pe.playerData)||void 0===ge?void 0:ge.achievements),a.createElement(p.Z,null,null===(ye=Ie.playerData)||void 0===ye?void 0:ye.achievements),a.createElement(p.Z,null,(null===(be=Ie.playerData)||void 0===be?void 0:be.achievements)!==(null===(ve=Pe.playerData)||void 0===ve?void 0:ve.achievements)&&a.createElement(_.k,{isBetter:((null===(ke=Ie.playerData)||void 0===ke?void 0:ke.achievements)??0)>((null===(we=Pe.playerData)||void 0===we?void 0:we.achievements)??0)}))),a.createElement(f.Z,null,a.createElement(p.Z,null,"Source Files"),a.createElement(p.Z,null,null===(Ee=Pe.playerData)||void 0===Ee?void 0:Ee.sourceFiles),a.createElement(p.Z,null,null===(Se=Ie.playerData)||void 0===Se?void 0:Se.sourceFiles),a.createElement(p.Z,null,(null===(Ce=Ie.playerData)||void 0===Ce?void 0:Ce.sourceFiles)!==(null===(xe=Pe.playerData)||void 0===xe?void 0:xe.sourceFiles)&&a.createElement(_.k,{isBetter:((null===(Ne=Ie.playerData)||void 0===Ne?void 0:Ne.sourceFiles)??0)>((null===(Me=Pe.playerData)||void 0===Me?void 0:Me.sourceFiles)??0)}))),a.createElement(f.Z,null,a.createElement(p.Z,null,"BitNode"),a.createElement(p.Z,null,null===(Ae=Pe.playerData)||void 0===Ae?void 0:Ae.bitNode,"-",null===(Te=Pe.playerData)||void 0===Te?void 0:Te.bitNodeLevel),a.createElement(p.Z,null,null===(Le=Ie.playerData)||void 0===Le?void 0:Le.bitNode,"-",null===(Re=Ie.playerData)||void 0===Re?void 0:Re.bitNodeLevel),a.createElement(p.Z,null))))),a.createElement(r.Z,{sx:{display:"flex",justifyContent:"flex-end"}},a.createElement(i.Z,null,a.createElement(o.Z,{onClick:()=>{N.Z.AutosaveInterval=O,(0,L.y_)(!1),R.F.allowRouting(!0),He(!0)},sx:{my:2},startIcon:a.createElement(E.Z,null),color:"secondary"},"Take me back!"),a.createElement(o.Z,{onClick:De,sx:{my:2},startIcon:a.createElement(w.Z,null),color:"warning"},"Proceed with import")),a.createElement(T.c,{open:Oe,onClose:Ze,onConfirm:async()=>{await x.Ex.importGame(e.importString,!0),(0,L.y_)(!0)},confirmationText:a.createElement(a.Fragment,null,"Importing new save game data will ",a.createElement("strong",null,"completely wipe")," the current game data!",a.createElement("br",null))}))):a.createElement(a.Fragment,null)}},48562:(e,t,n)=>{"use strict";n.d(t,{R:()=>a.R});var a=n(96380)},22949:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var a=n(67294),r=n(48672),o=n(81138),i=n(56798);function s(e){return a.createElement(r.u,{open:e.open,onClose:e.onClose},a.createElement(o.Z,null,"Forcefully kill all running scripts? This will also save your game and reload the game."),a.createElement(i.Z,{onClick:function(){e.killScripts(),e.onClose()}},"KILL"))}},85167:(e,t,n)=>{"use strict";n.d(t,{A9:()=>F,O4:()=>D,ki:()=>R,lj:()=>B,sx:()=>I});var a=n(67294),r=n(13342),o=n(21951),i=n(81138),s=n(30120),l=n(28881),c=n(61193),u=n.n(c),m=n(1706),f=n(92557),h=n(77541),d=n(73327),p=n(13379),g=n(50594),y=n(23508),b=n(60181),v=n(98034),k=n(66522),w=n(75350),E=n(7872),S=n(97467),C=n(10364),x=n(96486),N=n(51087),M=n(86378),A=n(88775),T=n(39463);let L=0;const R=new r.v,F=new r.v,I=new r.v;class _{x=.4*window.innerWidth;y=.3*window.innerHeight;width=500;height=500;constructor(e,t){this.rerender=e,this.rootRef=t}updateDOM(){if(!this.rootRef.current)return;const e=this.rootRef.current.state;e.x=this.x,e.y=this.y}setPosition(e,t){this.x=e,this.y=t,this.updateDOM()}setSize(e,t){this.width=e,this.height=t,this.rerender()}isVisible(){return null!==this.rootRef.current}}let P=[];function B(){const e=(0,A.S)(),t=(0,a.useCallback)((t=>{P=P.filter((e=>e.script.pid!==t)),e()}),[e]);return(0,a.useEffect)((()=>R.subscribe((t=>{P.some((e=>e.script.pid===t.pid))||(P.push({id:t.pid,script:t}),e())}))),[e]),(0,a.useEffect)((()=>F.subscribe((e=>{t(e)}))),[t]),(0,a.useEffect)((()=>I.subscribe((()=>{P=[],e()}))),[e]),a.createElement(a.Fragment,null,P.map((t=>a.createElement(Z,{key:t.id,script:t.script,onClose:()=>{return n=t.id,P=P.filter((e=>e.id!==n)),void e();var n}}))))}const O=(0,h.Z)((()=>(0,d.Z)({logs:{overflowY:"scroll",overflowX:"hidden",scrollbarWidth:"auto",flexDirection:"column-reverse",whiteSpace:"pre-wrap",wordWrap:"break-word"},titleButton:{borderWidth:"0 0 0 1px",borderColor:N.Z.theme.welllight,borderStyle:"solid",borderRadius:"0",padding:"0",height:"100%"}}))),D=1500;function Z(e){const t=(0,a.useRef)(null),n=(0,a.useRef)(null),r=e.script,c=O(),h=(0,a.useRef)(null),d=(0,a.useRef)(null),R=(0,A.S)(1e3),F=(0,a.useRef)(new _(R,n));r.tailProps=F.current;const[I,P]=(0,a.useState)(!1),B=(0,a.useCallback)((()=>{const e=h.current;null!==e&&(e.style.zIndex=D+L+"",L++,R())}),[R]);function Z(){(0,o._)(r.pid),R()}function G(){const e=(0,S.WT)(r.server);if(null!==e)if(null===(0,C.$o)(r.pid,e)){const t=e.scripts.get(r.filename);if(!t)return(0,T.X)(`Could not launch script. The script ${r.filename} no longer exists on the server ${e.hostname}.`);const n=t.getRamUsage(e.scripts);if(!n)return(0,T.X)(`Could not calculate ram usage for ${r.filename} on ${e.hostname}.`);r.ramUsage=n,r.dataMap={},r.onlineExpGained=0,r.onlineMoneyMade=0,r.onlineRunningTime=.01,(0,E.dU)(r,e),R()}else console.warn(`Tried to rerun pid ${r.pid} that was already running!`)}function J(){P(!I)}(0,a.useEffect)((()=>{F.current.updateDOM(),B()}),[B]);const W=(0,a.useMemo)((()=>(0,x.debounce)((()=>{const e=t.current;e&&(H(e)||F.current.setPosition(0,0))}),100)),[]);(0,a.useEffect)((()=>(window.addEventListener("resize",W),()=>{window.removeEventListener("resize",W)})),[W]);const H=e=>{const t=e.getBoundingClientRect();return!(t.right<0||t.bottom<0||t.left>innerWidth||t.top>outerWidth)},U=[150,33];return a.createElement(u(),{handle:".drag",onDrag:e=>{if(e.preventDefault(),e instanceof MouseEvent&&(e.clientX<0||e.clientY<0||e.clientX>innerWidth||e.clientY>innerHeight))return!1},ref:n,onMouseDown:B},a.createElement(s.Z,{display:"flex",sx:{flexFlow:"column",position:"fixed",zIndex:1400,minWidth:`${U[0]}px`,minHeight:`${U[1]}px`,...I?{border:"none",margin:0,maxHeight:0,padding:0}:{border:`1px solid ${N.Z.theme.welllight}`}},ref:h},a.createElement(m.ResizableBox,{width:F.current.width,height:F.current.height,onResize:(e,t)=>{let{size:n}=t;F.current.setSize(n.width,n.height)},minConstraints:U,handle:a.createElement("span",{style:{position:"absolute",right:"-10px",bottom:"-16px",cursor:"nw-resize",display:I?"none":"inline-block"}},a.createElement(p.Z,{color:"primary",style:{transform:"rotate(45deg)",fontSize:"1.75rem"}}))},a.createElement(a.Fragment,null,a.createElement(l.Z,{className:"drag",sx:{display:"flex",alignItems:"center",cursor:"grab"},ref:t},function(){const e="string"===r.title?r.title:`${r.filename} ${r.args.join(" ")}`;return a.createElement(i.Z,{variant:"h6",sx:{marginRight:"auto",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},title:e},r.title)}(),a.createElement("span",{style:{minWidth:"fit-content",height:`${U[1]}px`}},w.R.has(r.pid)?a.createElement(f.Z,{title:"Stop script",className:c.titleButton,onClick:Z,onTouchEnd:Z},a.createElement(v.Z,{color:"error"})):a.createElement(f.Z,{title:"Re-run script",className:c.titleButton,onClick:G,onTouchEnd:G},a.createElement(k.Z,null)),a.createElement(f.Z,{title:I?"Expand":"Collapse",className:c.titleButton,onClick:J,onTouchEnd:J},I?a.createElement(y.Z,null):a.createElement(b.Z,null)),a.createElement(f.Z,{title:"Close window",className:c.titleButton,onClick:e.onClose,onTouchEnd:e.onClose},a.createElement(g.Z,null)))),a.createElement(l.Z,{className:c.logs,style:{height:`calc(100% - ${U[1]}px)`,display:I?"none":"flex"},tabIndex:-1,ref:d,onKeyDown:e=>{if(e.ctrlKey&&"a"===e.key){var t,n;if(!d.current)return;const a=new Range;a.setStartBefore(d.current),a.setEndAfter(d.current),null===(t=document.getSelection())||void 0===t||t.removeAllRanges(),null===(n=document.getSelection())||void 0===n||n.addRange(a),e.preventDefault(),e.stopPropagation()}}},a.createElement("div",{style:{display:"flex",flexDirection:"column"}},r.logs.map(((e,t)=>{return"string"!=typeof e?e:a.createElement(M.m,{key:t,text:e,color:(n=e,n.match(/(^\[[^\]]+\] )?ERROR/)||n.match(/(^\[[^\]]+\] )?FAIL/)?"error":n.match(/(^\[[^\]]+\] )?SUCCESS/)?"success":n.match(/(^\[[^\]]+\] )?WARN/)?"warn":n.match(/(^\[[^\]]+\] )?INFO/)?"info":"primary")});var n}))))))))}},48672:(e,t,n)=>{"use strict";n.d(t,{u:()=>f});var a=n(67294),r=n(30120),o=n(92557),i=n(9942),s=n(96378),l=n(73327),c=n(77541),u=n(50594);const m=(0,c.Z)((e=>(0,l.Z)({modal:{display:"flex",alignItems:"center",justifyContent:"center"},paper:{position:"relative",backgroundColor:e.palette.background.default,border:"2px solid "+e.palette.primary.main,boxShadow:`0px 3px 5px -1px ${e.palette.primary.dark},0px 5px 8px 0px ${e.palette.primary.dark},0px 1px 14px 0px ${e.palette.primary.dark}`,padding:2,maxWidth:"80%",maxHeight:"80%",overflow:"auto","&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"},closeButton:{position:"absolute",right:3,top:3,width:20,height:20}}))),f=e=>{let{open:t,onClose:n,children:l,sx:c}=e;const f=m(),[h,d]=(0,a.useState)(l);return(0,a.useEffect)((()=>{t&&d(l)}),[l,t]),a.createElement(s.Z,{disableRestoreFocus:!0,disableScrollLock:!0,disableEnforceFocus:!0,disableAutoFocus:!0,open:t,onClose:n,closeAfterTransition:!0,className:f.modal,sx:c},a.createElement(i.Z,{in:t},a.createElement("div",{className:f.paper,inert:t?null:""},a.createElement(o.Z,{className:f.closeButton,onClick:n},a.createElement(u.Z,null)),a.createElement(r.Z,{sx:{m:2}},h))))}},72360:(e,t,n)=>{"use strict";n.d(t,{W:()=>c});var a=n(67294),r=n(22115),o=n(49173),i=n(77541),s=n(73327);const l=(0,i.Z)((e=>(0,s.Z)({unbuyable:{color:e.palette.action.disabled},money:{color:e.colors.money}})));function c(e){const t=l();if(e.forPurchase){if("number"!=typeof e.money)throw new Error("if value is for a purchase, money should be number, contact dev");if(!o.J5.canAfford(e.money))return a.createElement("span",{className:t.unbuyable},(0,r.lb)(e.money))}return a.createElement("span",{className:t.money},"number"==typeof e.money?(0,r.lb)(e.money):e.money)}},85882:(e,t,n)=>{"use strict";n.d(t,{G:()=>i});var a=n(67294),r=n(22115),o=n(72360);function i(e){let{money:t}=e;return a.createElement(o.W,{money:`${(0,r.lb)(t)} / sec`})}},33313:(e,t,n)=>{"use strict";n.d(t,{Y:()=>i});var a=n(66351),r=n(67294),o=n(22115);function i(e){const t={...e,onChange:t=>{const n=(0,o.US)(t.target.value);""===t.target.value||isNaN(n)?e.onChange(NaN):e.onChange(n)}};return r.createElement(a.Z,t)}},15460:(e,t,n)=>{"use strict";n.d(t,{V:()=>l});var a=n(29919),r=n(16056),o=n(17575),i=n(81138),s=n(67294);function l(e){let{checked:t,onChange:n,text:l,tooltip:c}=e;const[u,m]=(0,s.useState)(t);return s.createElement(s.Fragment,null,s.createElement(a.Z,{control:s.createElement(r.Z,{checked:u,onChange:function(e){const t=e.target.checked;m(t),n(t)}}),label:s.createElement(o.Z,{title:s.createElement(i.Z,null,c)},s.createElement(i.Z,null,l))}),s.createElement("br",null))}},56112:(e,t,n)=>{"use strict";n.d(t,{g:()=>w});var a=n(67294),r=n(61193),o=n.n(r),i=n(77541),s=n(51627),l=n(28881),c=n(75503),u=n(90813),m=n(84855),f=n(88698),h=n(52947),d=n(24815),p=n(51087),g=n(30120),y=n(81138),b=n(56798),v=n(96486);const k=(0,i.Z)({overviewContainer:{position:"fixed",top:0,right:0,zIndex:1500,display:"flex",justifyContent:"flex-end",flexDirection:"column"},header:{cursor:"grab",textAlign:"center",display:"flex",flexDirection:"row",alignItems:"center"},visibilityToggle:{padding:"2px",minWidth:"inherit",backgroundColor:"transparent",border:"none","&:hover":{backgroundColor:"rgba(255, 255, 255, 0.1)"}},collapse:{borderTop:`1px solid ${p.Z.theme.welllight}`,margin:"0 auto"},icon:{fontSize:"24px"}});function w(e){let{children:t,mode:n}=e;const r=(0,a.useRef)(null),[i,w]=(0,a.useState)(p.Z.overview.opened),[E,S]=(0,a.useState)(p.Z.overview.x),[C,x]=(0,a.useState)(p.Z.overview.y),N=k(),M=i?u.Z:c.Z,A="tutorial"===n?f.Z:m.Z,T="tutorial"===n?"Tutorial":"Overview";(0,a.useEffect)((()=>{p.Z.overview={x:E,y:C,opened:i}}),[i,E,C]);const L=(0,a.useMemo)((()=>(0,v.debounce)((()=>{const e=r.current;e&&(R(e,"mouseover"),R(e,"mousedown"),R(document,"mousemove"),R(e,"mouseup"),R(e,"click"))}),100)),[]);(0,a.useEffect)((()=>L()),[L]),(0,a.useEffect)((()=>(window.addEventListener("resize",L),()=>{window.removeEventListener("resize",L)})),[L]);const R=(e,t)=>{const n=document.createEvent("MouseEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)};return h.F.page()===d.T3.BitVerse||h.F.page()===d.T3.Loading||h.F.page()===d.T3.Recovery?a.createElement(a.Fragment,null):a.createElement(o(),{handle:".drag",bounds:"body",onStop:(e,t)=>{S(t.x),x(t.y)},defaultPosition:{x:E,y:C}},a.createElement(l.Z,{className:N.overviewContainer,square:!0},a.createElement(g.Z,{className:"drag",onDoubleClick:()=>w((e=>!e)),ref:r},a.createElement(g.Z,{className:N.header},a.createElement(A,{color:"secondary",className:N.icon,sx:{padding:"2px"}}),a.createElement(y.Z,{flexGrow:1,color:"secondary"},T),a.createElement(b.Z,{"aria-label":"expand or collapse character overview",variant:"text",size:"small",className:N.visibilityToggle},a.createElement(M,{className:N.icon,color:"secondary",onClick:()=>w((e=>!e)),onTouchEnd:()=>w((e=>!e))})))),a.createElement(s.Z,{in:i,className:N.collapse},t(i))))}},3197:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});var a=n(23149);const r=(0,n(79516).Z)((e=>({root:{backgroundColor:e.palette.background.paper},bar:{transition:"none",backgroundColor:e.palette.primary.main}})))(a.Z)},23001:(e,t,n)=>{"use strict";n.d(t,{C:()=>h,H:()=>f});var a=n(67294),r=n(13342),o=n(48672),i=n(81138),s=n(56798),l=n(26023),c=n(66351),u=n(98649),m=n(81055);const f=new r.v;function h(){var e;const[t,n]=(0,a.useState)(null);if((0,a.useEffect)((()=>f.subscribe((e=>{n(e)}))),[]),null===t)return a.createElement(a.Fragment,null);const r={text:p,select:g};let s=d;return null!==(e=t.options)&&void 0!==e&&e.type&&["text","select"].includes(t.options.type)&&(s=r[t.options.type]),a.createElement(o.u,{open:!0,onClose:function(){var e;null!==t&&(["text","select"].includes((null===(e=t.options)||void 0===e?void 0:e.type)??"")?t.resolve(""):t.resolve(!1),n(null))}},a.createElement("pre",null,a.createElement(i.Z,null,t.txt)),a.createElement(s,{prompt:t,resolve:e=>{t.resolve(e),n(null)}}))}function d(e){let{resolve:t}=e;return a.createElement(a.Fragment,null,a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",paddingTop:"10px"}},a.createElement(s.Z,{style:{marginRight:"auto"},onClick:()=>t(!0)},"Yes"),a.createElement(s.Z,{onClick:()=>t(!1)},"No")))}function p(e){let{resolve:t}=e;const[n,r]=(0,a.useState)(""),o=()=>t(n);return a.createElement(a.Fragment,null,a.createElement("div",{style:{display:"flex",alignItems:"center",paddingTop:"10px"}},a.createElement(c.Z,{autoFocus:!0,value:n,onInput:e=>{r(e.target.value)},onKeyDown:e=>{e.stopPropagation(),e.key===m.F.ENTER&&(e.preventDefault(),o())},style:{flex:"1 0 auto"},InputProps:{endAdornment:a.createElement(s.Z,{onClick:o},"Confirm")}})))}function g(e){var t,n;let{prompt:r,resolve:o}=e;const[c,m]=(0,a.useState)("");return Array.isArray(null===(t=r.options)||void 0===t?void 0:t.choices)?a.createElement(a.Fragment,null,a.createElement("div",{style:{display:"flex",alignItems:"center",paddingTop:"10px"}},a.createElement(l.Z,{onChange:e=>{m(e.target.value)},value:c,style:{flex:"1 0 auto"}},(e=>{const t=[];for(const n of e)t.push(a.createElement(u.Z,{key:n,value:n},n));return t})((null===(n=r.options)||void 0===n?void 0:n.choices)||[])),a.createElement(s.Z,{onClick:()=>o(c),disabled:""===c},"Confirm"))):a.createElement(i.Z,null,"Error: Please provide an array of string choices")}},97833:(e,t,n)=>{"use strict";n.d(t,{JI:()=>C,aF:()=>E,fp:()=>S});var a=n(67294),r=n(30120),o=n(81138),i=n(39401),s=n(34265),l=n(17575),c=n(56798),u=n(28881),m=n(66351),f=n(51087),h=n(22573),d=n(52947),p=n(24815),g=n(34716),y=n(10980),b=n(6466),v=n(64573),k=n(80227),w=n(25449);let E=!1;function S(){E=!0}function C(e){let{softReset:t,errorData:n,resetError:S}=e;return f.Z.AutosaveInterval=0,(0,a.useEffect)((()=>{(0,h.zD)().then((e=>{const t=`RECOVERY_BITBURNER_${Math.round(Date.now()/1e3)}.json`;(0,g.LR)(t,e)})).catch((e=>console.error(e)))}),[]),a.createElement(r.Z,{sx:{padding:"8px 16px",minHeight:"100vh",maxWidth:"1200px",boxSizing:"border-box"}},a.createElement(o.Z,{variant:"h3"},"RECOVERY MODE ACTIVATED"),a.createElement(o.Z,null,"There was an error with your save file and the game went into recovery mode. In this mode saving is disabled and the game will automatically export your save file (to prevent corruption)."),a.createElement(o.Z,null,"At this point it is recommended to alert a developer."),a.createElement(o.Z,null,a.createElement(i.Z,{href:(null==n?void 0:n.issueUrl)??y.U,target:"_blank"},"File an issue on github")),a.createElement(o.Z,null,a.createElement(i.Z,{href:"https://www.reddit.com/r/Bitburner/",target:"_blank"},"Make a reddit post")),a.createElement(o.Z,null,a.createElement(i.Z,{href:"https://discord.gg/TFc3hKD",target:"_blank"},"Post in the #bug-report channel on Discord.")),a.createElement(o.Z,null,"Please include your save file."),a.createElement("br",null),a.createElement("br",null),a.createElement(o.Z,null,"You can disable recovery mode now. But chances are the game will not work correctly."),a.createElement(s.Z,{sx:{my:2}},a.createElement(l.Z,{title:"Disables the recovery mode & attempt to head back to the terminal page. This may or may not work. Ensure you have saved the recovery file."},a.createElement(c.Z,{onClick:function(){S&&S(),E=!1,d.F.toPage(p.T3.Terminal)},startIcon:a.createElement(k.Z,null)},"Disable Recovery Mode")),a.createElement(v.Q,{color:"warning",onTriggered:t}),a.createElement(b.t,{color:"error"})),n&&a.createElement(u.Z,{sx:{px:2,pt:1,pb:2,mt:2}},a.createElement(o.Z,{variant:"h5"},n.title),a.createElement(r.Z,{sx:{my:2}},a.createElement(m.Z,{label:"Bug Report Text",value:n.body,variant:"outlined",color:"secondary",multiline:!0,fullWidth:!0,rows:12,spellCheck:!1,sx:{"& .MuiOutlinedInput-root":{color:f.Z.theme.secondary}}})),a.createElement(l.Z,{title:"Submitting an issue to GitHub really help us improve the game!"},a.createElement(c.Z,{component:i.Z,startIcon:a.createElement(w.Z,null),color:"info",sx:{px:2},href:n.issueUrl??y.U,target:"_blank"},"Submit Issue to GitHub"))))}},17365:(e,t,n)=>{"use strict";n.d(t,{Y:()=>l});var a=n(67294),r=n(22115),o=n(77541),i=n(73327);const s=(0,o.Z)((e=>(0,i.Z)({reputation:{color:e.colors.rep}})));function l(e){let{reputation:t}=e;const n=s();return a.createElement("span",{className:n.reputation},"number"==typeof t?(0,r.$n)(t):t)}},74192:(e,t,n)=>{"use strict";n.d(t,{y:()=>i});var a=n(67294),r=n(22115),o=n(17365);function i(e){let{reputation:t}=e;return a.createElement(o.Y,{reputation:`${(0,r.$n)(t)} / sec`})}},60724:(e,t,n)=>{"use strict";n.d(t,{D:()=>u,k:()=>m});var a=n(67294),r=n(97467),o=n(89916),i=n(3853),s=n(26023),l=n(98649),c=n(56798);const u={All:0,Foreign:1,Owned:2,Purchased:3};function m(e){function t(t){const n=t instanceof o.x&&t.purchasedByPlayer,a=e.serverType;switch(a){case u.All:return!0;case u.Foreign:return"home"!==t.hostname&&!n;case u.Owned:return n||t instanceof i.u||"home"===t.hostname;case u.Purchased:return n||t instanceof i.u;default:return console.warn(`Invalid ServerType specified for ServerDropdown component: ${a}`),!1}}const n=[];for(const e of(0,r.XX)().sort(((e,t)=>e.hostname.localeCompare(t.hostname))))t(e)&&n.push(a.createElement(l.Z,{key:e.hostname,value:e.hostname},e.hostname));return a.createElement(s.Z,{startAdornment:a.createElement(c.Z,{onClick:e.purchase,disabled:!e.canPurchase},"Buy"),sx:{mx:1},value:e.value,onChange:e.onChange},n)}},32369:(e,t,n)=>{"use strict";n.d(t,{A9:()=>h,sC:()=>f,wT:()=>m});var a=n(67294),r=n(73400),o=n(77541),i=n(13342),s=n(67182),l=n(28881),c=n(85167);const u=(0,o.Z)((()=>({snackbar:{zIndex:`${c.O4+1e3} !important`,"& .MuiAlert-icon":{alignSelf:"center"}}})));function m(e){const t=u();return a.createElement(r.wT,{dense:!0,maxSnack:9,anchorOrigin:{horizontal:"right",vertical:"bottom"},autoHideDuration:2e3,classes:{containerRoot:t.snackbar}},e.children)}const f=new i.v;function h(){const{enqueueSnackbar:e,closeSnackbar:t}=(0,r.Ds)();return(0,a.useEffect)((()=>f.subscribe(((n,r,o)=>{const i=e(a.createElement(s.Z,{severity:r},n),{content:(e,t)=>a.createElement(l.Z,{key:e},t),variant:r,autoHideDuration:o,onClick:()=>t(i)})})))),a.createElement(a.Fragment,null)}},64573:(e,t,n)=>{"use strict";n.d(t,{Q:()=>c});var a=n(67294),r=n(54538),o=n(56798),i=n(17575),s=n(81138),l=n(34282);function c(e){let{color:t="primary",noConfirmation:n=!1,onTriggered:c}=e;const[u,m]=(0,a.useState)(!1);return a.createElement(a.Fragment,null,a.createElement(i.Z,{title:"Perform a Soft Reset - similar to installing Augmentations, even if you have none."},a.createElement(o.Z,{startIcon:a.createElement(l.Z,null),color:t,onClick:function(){n?c():m(!0)}},"Soft Reset")),a.createElement(r.c,{onConfirm:c,open:u,onClose:()=>m(!1),confirmationText:a.createElement(s.Z,{style:{whiteSpace:"pre-wrap"}},"Soft Reset will:\n\n - Reset basic stats and money\n - Accumulate Favor for companies and factions\n - Install Augmentations if you have any purchased\n - Reset servers, programs, recent scripts and terminal \n - Scripts on your home server will stop, but aren't deleted\n - Stop some special mechanics like Bladeburner tasks\n - You will not lose overall progress or access to special mechanics\n\nAre you sure? \n "),additionalButton:a.createElement(o.Z,{onClick:()=>m(!1)},"Cancel")}))}},6248:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});var a=n(67294),r=n(48672);function o(e){return a.createElement(r.u,{open:e.open,onClose:e.onClose},e.children)}},19312:(e,t,n)=>{"use strict";n.d(t,{B:()=>m});var a=n(67294),r=n(23149),o=n(81138),i=n(17575),s=n(7272),l=n(43480),c=n(22115);function u(e){let{min:t,max:n,current:s,remaining:l,progress:u,color:m}=e;const f=a.createElement(o.Z,{sx:{textAlign:"right"}},a.createElement("strong",null,"Progress:")," ",(0,c.Mf)(s)," / ",(0,c.Mf)(n-t),a.createElement("br",null),a.createElement("strong",null,"Remaining:")," ",(0,c.Mf)(l)," (",u.toFixed(2),"%)");return a.createElement(i.Z,{title:f},a.createElement(r.Z,{variant:"determinate",value:u,sx:{backgroundColor:"#111111","& .MuiLinearProgress-bar1Determinate":{backgroundColor:m}}}))}function m(e){let{progress:t,color:n}=e;const r=(0,l.yK)();return a.createElement(s.Z,{component:"th",scope:"row",colSpan:2,classes:{root:r.cellNone},style:{paddingBottom:"2px",position:"relative",top:"-3px"}},a.createElement(u,{min:t.baseExperience,max:t.nextExperience,current:t.currentExperience,remaining:t.remainingExperience,progress:t.progress,color:n}))}},21927:(e,t,n)=>{"use strict";n.d(t,{j:()=>c});var a=n(67294),r=n(49557),o=n(7272),i=n(81138),s=n(22115),l=n(43480);const c=e=>{let{name:t,color:n,children:c,data:u}=e;const m=(0,l.yK)();let f="";return u&&(void 0!==u.content?f=u.content:void 0!==u.level&&void 0!==u.exp?f=`${(0,s.DR)(u.level)} (${(0,s.Mf)(u.exp)} exp)`:void 0!==u.level&&void 0===u.exp&&(f=`${(0,s.DR)(u.level)}`)),a.createElement(r.Z,null,a.createElement(o.Z,{classes:{root:m.cellNone}},a.createElement(i.Z,{style:{color:n}},t)),a.createElement(o.Z,{align:"right",classes:{root:m.cellNone}},f&&a.createElement(i.Z,{style:{color:n}},f),c))}},97534:(e,t,n)=>{"use strict";n.d(t,{C:()=>c});var a=n(67294),r=n(61011),o=n(46948),i=n(47542),s=n(49557),l=n(81138);function c(e){let{rows:t,title:n,wide:c}=e;const u=c?i.Z:r.i;return a.createElement(a.Fragment,null,n&&a.createElement(l.Z,null,n),a.createElement(u,{size:"small",padding:"none"},a.createElement(o.Z,null,t.map(((e,t)=>a.createElement(s.Z,{key:t},e.map(((e,t)=>a.createElement(r.p,{key:t,align:0!==t?"right":"left"},a.createElement(l.Z,{noWrap:!0},e))))))))))}},61011:(e,t,n)=>{"use strict";n.d(t,{i:()=>c,p:()=>l});var a=n(67294),r=n(7272),o=n(47542);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;ta.createElement(r.Z,i({},e,{classes:{root:s().root,...e.classes}})),c=e=>a.createElement(o.Z,i({},e,{classes:{root:s().small,...e.classes}}))},77885:(e,t,n)=>{"use strict";n.d(t,{p:()=>m});var a=n(67294),r=n(62097),o=n(30120),i=n(92557),s=n(78066),l=n(76172),c=n(48317),u=n(91290);function m(e){const t=(0,r.Z)(),{count:n,page:m,rowsPerPage:f,onPageChange:h}=e;return a.createElement(o.Z,{sx:{flexShrink:0,ml:2.5}},a.createElement(i.Z,{onClick:e=>{h(e,0)},disabled:0===m},"rtl"===t.direction?a.createElement(u.Z,null):a.createElement(s.Z,null)),a.createElement(i.Z,{onClick:e=>{h(e,m-1)},disabled:0===m},"rtl"===t.direction?a.createElement(c.Z,null):a.createElement(l.Z,null)),a.createElement(i.Z,{onClick:e=>{h(e,m+1)},disabled:m>=Math.ceil(n/f)-1},"rtl"===t.direction?a.createElement(l.Z,null):a.createElement(c.Z,null)),a.createElement(i.Z,{onClick:e=>{h(e,Math.max(0,Math.ceil(n/f)-1))},disabled:m>=Math.ceil(n/f)-1},"rtl"===t.direction?a.createElement(s.Z,null):a.createElement(u.Z,null)))}},86091:(e,t,n)=>{"use strict";n.d(t,{b:()=>m});var a=n(67294),r=n(77541),o=n(73327),i=n(17575),s=n(81138),l=n(33244);const c=(0,r.Z)((e=>(0,o.Z)({travel:{color:e.colors.white,lineHeight:"1em",whiteSpace:"pre",cursor:"pointer"}})));function u(e){const t=c();return e.city!==e.currentCity?a.createElement(i.Z,{title:a.createElement(s.Z,null,e.city)},a.createElement("span",{onClick:()=>e.onTravel(e.city),className:t.travel},e.city[0])):a.createElement("span",null,e.city[0])}function m(e){return a.createElement(a.Fragment,null,a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,_ . ._. _. ."),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," , _-\\','|~\\~ ~/ ;-'_ _-' ,;_;_, ~~-"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," /~~-\\_/-'~'--' \\~~| ', ,' / / ~|-_\\_/~/~ ~~--~~~~'--_"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / ,/'-/~ '\\ ,' _ , '",a.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Volhaven}),",'|~ ._/-, /~"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~/-'~\\_, '-,| '|. ' ~ ,\\ /'~ / /_ /~"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}},".-~ '| '',\\~|\\ _\\~ ,_ , ",a.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Chongqing})," /,"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '\\ ",a.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Sector12})," /'~ |_/~\\\\,-,~ \\ \" ,_,/ |"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | / ._-~'\\_ _~| \\ ) ",a.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.NewTokyo})),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ __-\\ '/ ~ |\\ \\_ / ~"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ., '\\ |, ~-_ - | \\\\_' ~| /\\ \\~ ,"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~-_' _; '\\ '-, \\,' /\\/ |"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '\\_,~'\\_ \\_ _, /' ' |, /|'"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / \\_ ~ | / \\ ~'; -,_."),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ~\\ | | , '-_, ,; ~ ~\\"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\, ",a.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Aevum})," / \\ / /| ,-, , -,"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ,/ | |' |/ ,- ~ \\ '."),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,| ,/ \\ ,/ \\ ",a.createElement(u,{onTravel:e.onTravel,currentCity:e.currentCity,city:l.CityName.Ishima})," |"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / | ~ -~~-, / _"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ,-' ~ /"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / ,' ~"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ',| ~"),a.createElement(s.Z,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~'"))}},88775:(e,t,n)=>{"use strict";n.d(t,{S:()=>r,k:()=>o});var a=n(67294);function r(e){const[t,n]=(0,a.useState)(!1),r=(0,a.useCallback)((()=>n((e=>!e))),[]);return(0,a.useEffect)((()=>{if(!e)return;const t=setInterval(r,e);return()=>clearInterval(t)}),[r,e]),r}function o(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const[t,n]=(0,a.useState)(e),r=(0,a.useCallback)((()=>{n((e=>!e))}),[]),o=(0,a.useCallback)((()=>{n(!0)}),[]),i=(0,a.useCallback)((()=>{n(!1)}),[]);return[t,{toggle:r,on:o,off:i}]}},24815:(e,t,n)=>{"use strict";let a,r;n.d(t,{Pg:()=>s,T3:()=>o}),function(e){e.ActiveScripts="Active Scripts",e.Augmentations="Augmentations",e.Bladeburner="Bladeburner",e.City="City",e.Corporation="Corporation",e.CreateProgram="Create Program",e.DevMenu="Dev",e.Factions="Factions",e.Gang="Gang",e.Hacknet="Hacknet",e.Milestones="Milestones",e.Options="Options",e.Grafting="Grafting",e.Sleeves="Sleeves",e.Stats="Stats",e.StockMarket="Stock Market",e.Terminal="Terminal",e.Travel="Travel",e.Documentation="Documentation",e.Work="Work",e.BladeburnerCinematic="Bladeburner Cinematic",e.Loading="Loading",e.StaneksGift="Staneks Gift",e.Recovery="Recovery",e.Achievements="Achievements",e.ThemeBrowser="Theme Browser"}(a||(a={})),function(e){e.BitVerse="BitVerse",e.Infiltration="Infiltration",e.Job="Job",e.Faction="Faction",e.FactionAugmentations="Faction Augmentations",e.ScriptEditor="Script Editor",e.Location="Location",e.ImportSave="Import Save"}(r||(r={}));const o={...a,...r},i=Object.values(a),s=e=>i.includes(e)},52037:(e,t,n)=>{"use strict";n.d(t,{l:()=>D});var a=n(67294),r=n(81138),o=n(78016),i=n(28881),s=n(47542),l=n(46948),c=n(30120),u=n(17575),m=n(56798),f=n(49173),h=n(33244),d=n(72360),p=n(85882),g=n(3197),y=n(17365),b=n(74192),v=n(21927),k=n(88775),w=n(62586),E=n(72938),S=n(81881),C=n(51087),x=n(49802),N=n(72326),M=n(48196),A=n(94337),T=n(95814),L=n(64315),R=n(16632),F=n(75522),I=n(52947),_=n(24815),P=n(22115);const B=1e3/E.t.MilliPerCycle;function O(e){return(0,N.m)([e.hackExp>0&&a.createElement(v.j,{key:"hack",name:"Hacking Exp",color:C.Z.theme.hack,data:{content:`${(0,P.Mf)(e.hackExp*B)} / sec`}}),e.strExp>0&&a.createElement(v.j,{key:"str",name:"Strength Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(e.strExp*B)} / sec`}}),e.defExp>0&&a.createElement(v.j,{key:"def",name:"Defense Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(e.defExp*B)} / sec`}}),e.dexExp>0&&a.createElement(v.j,{key:"dex",name:"Dexterity Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(e.dexExp*B)} / sec`}}),e.agiExp>0&&a.createElement(v.j,{key:"agi",name:"Agility Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(e.agiExp*B)} / sec`}}),e.chaExp>0&&a.createElement(v.j,{key:"cha",name:"Charisma Exp",color:C.Z.theme.cha,data:{content:`${(0,P.Mf)(e.chaExp*B)} / sec`}})])}function D(){(0,k.S)(E.t.MilliPerCycle);let e={buttons:{cancel:()=>{}},title:"",stopText:""};if(null===f.J5.currentWork)return setTimeout((()=>I.F.toPage(_.T3.Terminal))),a.createElement(a.Fragment,null);if((0,M.s)(f.J5.currentWork)){const n=f.J5.currentWork.getCrime(),o=f.J5.currentWork.unitCompleted/n.time*100,i=f.J5.currentWork.earnings(),s=n.successRate(f.J5);e={buttons:{cancel:()=>{I.F.toPage(_.T3.Location,{location:S.t[h.LocationName.Slums]}),f.J5.finishWork(!0)},unfocus:()=>{I.F.toPage(_.T3.City),f.J5.stopFocusing()}},title:`You are attempting ${n.workName}`,gains:[a.createElement("tr",{key:"header"},a.createElement("td",null,a.createElement(r.Z,null,"Success chance: ",(0,P.T3)(s)),a.createElement(r.Z,null,"Gains (on success)"))),a.createElement(v.j,{key:"money",name:"Money:",color:C.Z.theme.money},a.createElement(r.Z,null,a.createElement(d.W,{money:i.money}))),...(t=i,(0,N.m)([t.hackExp>0&&a.createElement(v.j,{key:"hack",name:"Hacking Exp",color:C.Z.theme.hack,data:{content:`${(0,P.Mf)(t.hackExp)}`}}),t.strExp>0&&a.createElement(v.j,{key:"str",name:"Strength Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(t.strExp)}`}}),t.defExp>0&&a.createElement(v.j,{key:"def",name:"Defense Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(t.defExp)}`}}),t.dexExp>0&&a.createElement(v.j,{key:"dex",name:"Dexterity Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(t.dexExp)}`}}),t.agiExp>0&&a.createElement(v.j,{key:"agi",name:"Agility Exp",color:C.Z.theme.combat,data:{content:`${(0,P.Mf)(t.agiExp)}`}}),t.chaExp>0&&a.createElement(v.j,{key:"cha",name:"Charisma Exp",color:C.Z.theme.cha,data:{content:`${(0,P.Mf)(t.chaExp)}`}})]))],progress:{remaining:n.time-f.J5.currentWork.unitCompleted,percentage:o},stopText:"Stop committing crime"}}var t;if((0,A.tG)(f.J5.currentWork)){const t=f.J5.currentWork;let n="";n=t.isGym()?"Stop training at gym":"Stop taking course";const o=t.calculateRates();e={buttons:{cancel:()=>{f.J5.finishWork(!0),I.F.toPage(_.T3.City)},unfocus:()=>{I.F.toPage(_.T3.City),f.J5.stopFocusing()}},title:a.createElement(a.Fragment,null,"You are currently ",a.createElement("b",null,t.getClass().youAreCurrently)),gains:[a.createElement(v.j,{key:"totalCost",name:"Total Cost",color:C.Z.theme.money},a.createElement(r.Z,null,a.createElement(d.W,{money:t.earnings.money})," (",a.createElement(p.G,{money:o.money*B}),")")),...O(o)],progress:{elapsed:t.cyclesWorked*E.t.MilliPerCycle},stopText:n}}if((0,T.o)(f.J5.currentWork)){const t=f.J5.currentWork,n=t.unitCompleted/t.unitNeeded()*100;e={buttons:{cancel:()=>{f.J5.finishWork(!0),I.F.toPage(_.T3.Terminal)},unfocus:()=>{I.F.toPage(_.T3.Terminal),f.J5.stopFocusing()}},title:a.createElement(a.Fragment,null,"You are currently working on coding ",a.createElement("b",null,t.programName)),progress:{elapsed:t.cyclesWorked*E.t.MilliPerCycle,percentage:n},stopText:"Stop creating program",stopTooltip:"Your work will be saved and you can return to complete the program later."}}if((0,L.u)(f.J5.currentWork)){const t=f.J5.currentWork;e={buttons:{cancel:()=>{f.J5.finishWork(!0),I.F.toPage(_.T3.Terminal)},unfocus:()=>{I.F.toPage(_.T3.Terminal),f.J5.stopFocusing()}},title:a.createElement(a.Fragment,null,"You are currently working on grafting ",a.createElement("b",null,t.augmentation)),progress:{elapsed:t.cyclesWorked*E.t.MilliPerCycle,percentage:t.unitCompleted/t.unitNeeded()*100},stopText:"Stop grafting",stopTooltip:a.createElement(a.Fragment,null,"If you cancel, your work will ",a.createElement("b",null,"not")," be saved, and the money you spent will ",a.createElement("b",null,"not")," be returned")}}if((0,R.D)(f.J5.currentWork)){const t=f.J5.currentWork.getFaction();t||(e={buttons:{cancel:()=>I.F.toPage(_.T3.Factions)},title:`You have not joined ${f.J5.currentWork.factionName||"(Faction not found)"} at this time, please try again if you think this should have worked`,stopText:"Back to Factions"});const n={[h.FactionWorkType.hacking]:"carrying out hacking contracts",[h.FactionWorkType.field]:"carrying out field missions",[h.FactionWorkType.security]:"performing security detail"},r=f.J5.currentWork.getExpRates();e={buttons:{cancel:()=>{I.F.toPage(_.T3.Faction,{faction:t}),f.J5.finishWork(!0)},unfocus:()=>{I.F.toPage(_.T3.Faction,{faction:t}),f.J5.stopFocusing()}},title:a.createElement(a.Fragment,null,"You are currently ",n[f.J5.currentWork.factionWorkType]," for ",a.createElement("b",null,t.name)),description:a.createElement(a.Fragment,null,"Current Faction Reputation: ",a.createElement(y.Y,{reputation:t.playerReputation})," (",a.createElement(b.y,{reputation:f.J5.currentWork.getReputationRate()*B}),")"),gains:O(r),progress:{elapsed:f.J5.currentWork.cyclesWorked*E.t.MilliPerCycle},stopText:"Stop Faction work"}}if((0,F.d)(f.J5.currentWork)){const t=w.O[f.J5.currentWork.companyName];t&&(e={buttons:{cancel:()=>I.F.toPage(_.T3.Terminal)},title:`You cannot work for ${f.J5.currentWork.companyName} at this time, please try again if you think this should have worked`,stopText:"Back to Terminal"});const n=t.playerReputation,o=f.J5.jobs[f.J5.currentWork.companyName];if(!o)return a.createElement(a.Fragment,null);const i=f.J5.currentWork.getGainRates(o);e={buttons:{cancel:()=>{f.J5.finishWork(!0),I.F.toPage(_.T3.Job,{location:S.t[t.name]})},unfocus:()=>{f.J5.stopFocusing(),I.F.toPage(_.T3.Job,{location:S.t[t.name]})}},title:a.createElement(a.Fragment,null,"You are currently working as a ",a.createElement("b",null,o)," at ",a.createElement("b",null,f.J5.currentWork.companyName)),description:a.createElement(a.Fragment,null,"Current Company Reputation: ",a.createElement(y.Y,{reputation:n})),gains:[a.createElement(v.j,{key:"money",name:"Money",color:C.Z.theme.money},a.createElement(r.Z,null,a.createElement(p.G,{money:i.money*B}))),a.createElement(v.j,{key:"reputation",name:"Company Reputation",color:C.Z.theme.rep},a.createElement(r.Z,null,a.createElement(b.y,{reputation:i.reputation*B}))),...O(i)],progress:{elapsed:f.J5.currentWork.cyclesWorked*E.t.MilliPerCycle},stopText:"Stop working"}}if(""===e.title)return a.createElement(a.Fragment,null);const n="string"==typeof e.stopTooltip?a.createElement(r.Z,null,e.stopTooltip):e.stopTooltip||a.createElement(a.Fragment,null);return a.createElement(o.Z,{maxWidth:"md",sx:{display:"flex",flexDirection:"column",justifyContent:"center",height:"calc(100vh - 16px)"}},a.createElement(i.Z,{sx:{p:1,mb:1}},a.createElement(r.Z,{variant:"h6"},e.title),a.createElement(r.Z,null,e.description),e.gains&&a.createElement(s.Z,{sx:{mt:1}},a.createElement(l.Z,null,e.gains))),a.createElement(i.Z,{sx:{mb:1,p:1}},void 0!==e.progress&&a.createElement(c.Z,{sx:{mb:1}},a.createElement(c.Z,{display:"grid",sx:{gridTemplateColumns:`repeat(${Object.keys(e.progress).length}, 1fr)`,width:"100%",justifyItems:"center",textAlign:"center"}},void 0!==e.progress.elapsed&&a.createElement(r.Z,null,(0,x.UF)(e.progress.elapsed)," elapsed"),void 0!==e.progress.remaining&&a.createElement(r.Z,null,(0,x.UF)(e.progress.remaining)," remaining"),void 0!==e.progress.percentage&&a.createElement(r.Z,null,e.progress.percentage.toFixed(2),"% done")),void 0!==e.progress.percentage&&a.createElement(g.k,{variant:"determinate",value:e.progress.percentage,color:"primary"})),a.createElement(c.Z,{display:"grid",sx:{gridTemplateColumns:`repeat(${Object.keys(e.buttons).length}, 1fr)`}},e.stopTooltip?a.createElement(u.Z,{title:n},a.createElement(m.Z,{onClick:e.buttons.cancel},e.stopText)):a.createElement(m.Z,{onClick:e.buttons.cancel},e.stopText),e.buttons.unfocus&&a.createElement(m.Z,{onClick:e.buttons.unfocus},"Do something else simultaneously"))))}},22115:(e,t,n)=>{"use strict";n.d(t,{$1:()=>E,$i:()=>v,$j:()=>N,$n:()=>R,AN:()=>Y,AR:()=>b,B1:()=>F,DR:()=>W,Jw:()=>P,Kq:()=>D,L7:()=>I,Mf:()=>T,O3:()=>Z,P6:()=>B,T3:()=>C,US:()=>ee,WJ:()=>z,ZN:()=>j,ZQ:()=>M,_F:()=>_,bS:()=>V,dp:()=>A,jL:()=>J,jj:()=>Q,lb:()=>H,mP:()=>U,nC:()=>G,td:()=>$,uf:()=>x,w5:()=>X,wS:()=>q,wu:()=>K,y3:()=>L,yI:()=>O});var a=n(10425),r=n(13342),o=n(51087);const i=["","k","m","b","t","q","Q","s","S","o","n"],s=i.map(((e,t)=>parseFloat("1e"+3*t))),l=["GB","TB","PB","EB"],c=["GiB","TiB","PiB","EiB"];let u,m,f,h,d,p,g={},y={};const b=new r.v,v=new r.v;function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o.Z.hideThousandsSeparator&&(t.useGrouping=!1),new Intl.NumberFormat([o.Z.Locale,"en"],{minimumFractionDigits:o.Z.hideTrailingDecimalZeros?0:e,maximumFractionDigits:e,...t})}function w(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t[e]?t[e]:t[e]=k(e,n)}function E(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(Number.isNaN(e))return`NaN${f[0]}`;const n=Math.abs(e);if(n===1/0)return`${e<0?"-∞":""}∞${f.at(-1)}`;if(n<1e3)return w(t).format(e)+f[0];const a=Math.min(Math.floor(d(n)/p),f.length-1);return e/=h[a],w(t).format(e)+f[a]}function S(e){return m.format(e).toLocaleLowerCase()}function C(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e6;if(Number.isNaN(e))return"NaN%";const a=Math.abs(e);return 100*a==1/0?e<0?"-∞%":"∞%":a>=n?"x"+x(e,t,0):w(t,y,{style:"percent"}).format(e)}function x(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3,a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(Number.isNaN(e))return"NaN";const r=Math.abs(e);if(r===1/0)return e<0?"-∞":"∞";if(r=1e33)return S(e);let l=Math.floor(Math.log10(r)/3);return e/=s[l],Math.abs(e).toFixed(t).length===t+5&&i[l+1]&&(l+=1,e=e<0?-1:1),w(t).format(e)+i[l]}b.subscribe((()=>{g={},y={},m=k(3,{notation:o.Z.useEngineeringNotation?"engineering":"scientific"}),u=new Intl.NumberFormat([o.Z.Locale,"en"],{useGrouping:!o.Z.hideThousandsSeparator}),[f,d,p]=o.Z.UseIEC60027_2?[c,Math.log2,10]:[l,Math.log10,3],h=f.map(((e,t)=>(o.Z.UseIEC60027_2?1024:1e3)**t)),v.emit(),a.bS.emit()}));const N=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return x(e,t,1e33)},M=N,A=e=>x(e),T=A,L=A,R=A,F=A,I=A,_=A,P=A,B=e=>x(e,2),O=e=>x(e,3,1e3,!0),D=O,Z=O,G=e=>x(e,3,1e6,!0),J=G,W=e=>x(e,3,1e9,!0),H=e=>"$"+x(e),U=e=>x(e,5),j=U,$=U,q=e=>N(e,1),z=e=>N(e,2),V=z,Y=z,K=e=>N(e,3),X=K,Q=K;function ee(e){if(e=(e=e.trim()).replace(/,/g,""),["infinity","Infinity","∞"].includes(e))return 1/0;if(["-infinity","-Infinity","-∞"].includes(e))return-1/0;const t=i.indexOf(e.substring(e.length-1));return-1===t?parseFloat(e):parseFloat(e.substring(0,e.length-1)+"e"+3*t)}},30058:(e,t,n)=>{"use strict";function a(){const e=Math.random();return e<.4?"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(26*Math.random())]:e<.8?"abcdefghijklmnopqrstuvwxyz"[Math.floor(26*Math.random())]:"01234567689"[Math.floor(10*Math.random())]}function r(){const e=50+Math.floor(25*(Math.random()+Math.random()));let t="";for(;t.lengtht.length)continue;for(let a=0;aArray(10).fill(null))),n=Array.from(Array(10),(()=>Array(10)));function a(e,t,n,a){const r=e[t][n];(null==r||a.length9||n+1+a>e.length)return null;if(t+=e.substring(n+1,n+1+a),n+=1+a,n>=e.length)break;const r=e.charCodeAt(n)-48;if(r<0||r>9)return null;if(0===r)++n;else{if(n+1>=e.length)return null;const a=e.charCodeAt(n+1)-48;if(r>0&&(a<1||a>9)||a>t.length)return null;for(let e=0;ei,_p:()=>r,gf:()=>a,yH:()=>o})},50862:(e,t,n)=>{"use strict";n.d(t,{R:()=>c,m:()=>l});var a=n(33244),r=n(23122),o=n(92666);class i{constructor(e,t){this.name=t,this.defaultArgName=t.charAt(0).toLowerCase()+t.slice(1),this.valueArray=Object.values(e),this.valueSet=new Set(this.valueArray),this.fuzzMap=new Map(this.valueArray.map((e=>[e.toLowerCase().replace(/[ -]+/g,""),e])))}isMember(e){return this.valueSet.has(e)}nsGetMember(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.defaultArgName;if(this.isMember(t))return t;(0,r.Ee)(e,n,t);let a=`Allowable values: ${this.valueArray.map((e=>`"${e}"`)).join(", ")}`;throw this.valueArray.length>10&&(console.warn(`Provided value ${t} was not a valid option for enum type ${this.name}.\n${a}`),a="See the developer console for allowable values."),r.BM.makeRuntimeErrorMsg(e,`Argument ${n} should be a ${this.name} enum member.\nProvided value: "${t}".\n${a}`)}fuzzyGetMember(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.fuzzMap.get(e.toLowerCase().replace(/[ -]+/g,""))||(t?this.valueArray[0]:void 0)}getMember(e){return this.isMember(e)?e:void 0}random(){const e=(0,o.X)(0,this.valueArray.length-1);return this.valueArray[e]}}const s=new Map;Object.entries(a).forEach((e=>{let[t,n]=e;s.set(t,new i(n,t))}));const l=s.get.bind(s),c=(e,t)=>l(e).isMember(t)},10980:(e,t,n)=>{"use strict";n.d(t,{U:()=>s,o:()=>l});var a,r,o=n(90936),i=n(72938);!function(e){e[e.Production=0]="Production",e[e.Development=1]="Development"}(a||(a={})),function(e){e[e.Browser=0]="Browser",e[e.Steam=1]="Steam"}(r||(r={}));const s="https://github.com/bitburner-official/bitburner-src/issues/new";function l(e,t,n){var l;const c=function(e,t,n){const s=navigator.userAgent.toLowerCase().includes(" electron/"),l=a.Production,c={version:i.t.VersionString,hash:(0,o.v)(),toDisplay:()=>`v${i.t.VersionString} (${(0,o.v)()})`},u={userAgent:navigator.userAgent,language:navigator.language,cookiesEnabled:navigator.cookieEnabled,doNotTrack:navigator.doNotTrack,indexedDb:!!window.indexedDB};return{platform:s?r.Steam:r.Browser,environment:l,version:c,features:u,error:e,errorInfo:t,page:n}}(e,t,n),u=c.error.fileName,m=`lang=${c.features.language} cookiesEnabled=${c.features.cookiesEnabled.toString()} doNotTrack=${c.features.doNotTrack??"null"} indexedDb=${c.features.indexedDb.toString()}`,f=`${c.error.name}: ${c.error.message} (at "${c.page}")`,h=`\n## ${f}\n\n### How did this happen?\n\nPlease fill this information with details if relevant.\n\n- [ ] Save file\n- [ ] Minimal scripts to reproduce the issue\n- [ ] Steps to reproduce\n\n### Environment\n\n* Error: ${c.error.toString()??"n/a"}\n* Page: ${c.page??"n/a"}\n* Version: ${c.version.toDisplay()}\n* Environment: ${a[c.environment]}\n* Platform: ${r[c.platform]}\n* UserAgent: ${navigator.userAgent}\n* Features: ${m}\n* Source: ${u??"n/a"}\n\n${c.environment===a.Development?`\n### Stack Trace\n\`\`\`\n${null===(l=c.errorInfo)||void 0===l?void 0:l.componentStack.toString().trim()}\n\`\`\`\n`:""}\n### Save\n\`\`\`\nCopy your save here if possible\n\`\`\`\n`.trim();return{metadata:c,fileName:u,features:m,title:f,body:h,issueUrl:`${s}?title=${encodeURIComponent(f)}&body=${encodeURIComponent(h)}`}}},13342:(e,t,n)=>{"use strict";function a(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}n.d(t,{v:()=>r});class r{subscribers={};subscribe(e){let t=a();for(;void 0!==this.subscribers[t];)t=a();return this.subscribers[t]=e,()=>{delete this.subscribers[t]}}emit(){for(const e in this.subscribers){const t=this.subscribers[e];void 0!==t&&t(...arguments)}}}},31375:(e,t,n)=>{"use strict";function a(e){const t=[0],n=e.toString(2).split("").reverse();n.forEach(((e,t,n)=>{n[t]=parseInt(e)}));let a=n.length;for(let e=1;a>0;e++)t[e]=0!=(e&e-1)?n[--a]:0;let r=0;for(let e=0;e{n[t]=parseInt(e)}));for(let e=0;e{n[t]=parseInt(e)}));for(let e=1,t=a;e{n[t]=parseInt(e)}));for(let e=0;er,ZH:()=>o,eP:()=>a})},84874:(e,t,n)=>{"use strict";n.d(t,{H:()=>r});class a{constructor(){this.data=[]}get size(){return this.data.length}push(e,t){const n=this.data.length;this.data[n]=[t,e],this.heapifyUp(n)}peek(){if(0!=this.data.length)return this.data[0][1]}pop(){if(0==this.data.length)return;const e=this.data[0][1];return this.data[0]=this.data[this.data.length-1],this.data.length=this.data.length-1,this.heapifyDown(0),e}changeWeight(e,t){const n=this.data.findIndex((t=>e(t[1])));if(-1==n)return;this.data[n][0]=t;const a=Math.floor((n-1)/2);this.heapOrderABeforeB(this.data[a][0],this.data[n][0])?this.heapifyDown(n):this.heapifyUp(n)}heapifyUp(e){for(;e>0;){const t=Math.floor((e-1)/2);if(this.heapOrderABeforeB(this.data[t][0],this.data[e][0]))break;const n=this.data[t];this.data[t]=this.data[e],this.data[e]=n,e=t}}heapifyDown(e){for(;e{"use strict";n.d(t,{r:()=>r});var a=n(61657);const r=()=>`${(0,a.t)(99)}.${(0,a.t)(9)}.${(0,a.t)(9)}.${(0,a.t)(9)}`},94515:(e,t,n)=>{"use strict";n.d(t,{Id:()=>l,L3:()=>s,Ro:()=>o,_q:()=>c,gY:()=>i});var a=n(47674),r=n(7165);function o(e,t){if(!function(e){return"object"==typeof e&&null!==e&&"ctor"in e&&"string"==typeof e.ctor&&"data"in e}(t))return t;const n=i[t.ctor];if(!n){switch(t.ctor){case"AllServersMap":return console.warn("Converting AllServersMap for v0.43.1"),t.data;case"Industry":return console.warn("Converting a corp from pre-2.3"),t.data;case"Employee":return console.warn("Converting a corp from pre-2.2"),t.data}throw new Error(`Could not locate constructor named ${t.ctor}. If the save data is valid, this is a bug.`)}const r=n.fromJSON(t);return void 0!==n.validationData&&(0,a.FF)(r,n.validationData),r}const i={JSONSet:r.z,JSONMap:r.X};function s(e,t,n){const a={};if(n){for(const e of n)a[e]=t[e];return{ctor:e,data:a}}for(const[e,n]of Object.entries(t))a[e]=n;return{ctor:e,data:a}}function l(e,t,n){const a=new e;if(n){for(const e of n){const n=t[e];void 0!==n&&(a[e]=n)}return a}for(const[e,n]of Object.entries(t))a[e]=n;return a}function c(e){}},57499:(e,t,n)=>{"use strict";n.d(t,{S:()=>r});var a=n(94515);class r{bladeburner=0;casino=0;class=0;codingcontract=0;corporation=0;crime=0;gang=0;hacking=0;hacknet=0;hacknet_expenses=0;hospitalization=0;infiltration=0;sleeves=0;stock=0;total=0;work=0;servers=0;other=0;augmentations=0;record(e,t){this[t]+=e,this.total+=e}reset(){for(const e in this)"number"==typeof this[e]&&(this[e]=0)}toJSON(){return(0,a.L3)("MoneySourceTracker",this)}static fromJSON(e){return(0,a.Id)(r,e.data)}}a.gY.MoneySourceTracker=r},49802:(e,t,n)=>{"use strict";n.d(t,{UF:()=>o,d4:()=>s,n0:()=>i});var a=n(51087),r=n(22392);function o(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=e<0;e=Math.abs(Math.floor(e));const r=1e3,o=60,i=60,s=o*i,l=24,c=s*l,u=Math.floor(e/r),m=Math.floor(u/c),f=u%c,h=Math.floor(f/s),d=f%s,p=Math.floor(d/o),g=d%o,y=(()=>{let t=""+e%r;for(;t.length<3;)t="0"+t;return t})(),b=t?`${g}.${y}`:`${g}`;let v="";return m>0&&(v+=`${m} day${1===m?"":"s"} `),(h>0||a.Z.ShowMiddleNullTimeUnit&&""!=v)&&(v+=`${h} hour${1===h?"":"s"} `),(p>0||a.Z.ShowMiddleNullTimeUnit&&""!=v)&&(v+=`${p} minute${1===p?"":"s"} `),v+=`${b} second${t||1!==g?"s":""}`,n?`-(${v})`:v}function i(e){if(!e.every(r.H))return"";if(0===e.length)return"";const t=e.concat().sort(),n=t[0],a=t[t.length-1],o=n.length;let i=0;for(;i1&&void 0!==arguments[1]?arguments[1]:0,n=3735928559^t,a=1103547991^t;for(let t,r=0;r>>16,2246822507)^Math.imul(a^a>>>13,3266489909),a=Math.imul(a^a>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),(4294967296*(2097151&a)+(n>>>0)).toString(16)}},93344:(e,t,n)=>{"use strict";n.d(t,{s:()=>l,u:()=>c});var a=n(81138),r=n(56798),o=n(67294),i=n(48672);let s=!1;const l=()=>{s=!0},c=()=>{const[e,t]=(0,o.useState)(s);return o.createElement(i.u,{open:e,onClose:()=>{}},o.createElement(a.Z,null,"Welcome to bitburner v2.0.0!")," ",o.createElement(a.Z,null,"While this version does not change the game a lot, it does have quite a few API breaks.")," ",o.createElement(a.Z,null,"A file was added to your home computer called V2_0_0_API_BREAK.txt and it is highly recommended you take a look at this file. It explains where most of the API break have occurred.")," ",o.createElement(a.Z,null,"You should also take a look at"," ",o.createElement("a",{target:"_",href:"https://github.com/bitburner-official/bitburner-src/blob/dev/doc/source/v2.0.0_migration.rst"}," ","the migration guide")," ","as well as"," ",o.createElement("a",{target:"_",href:"https://github.com/bitburner-official/bitburner-src/blob/dev/doc/source/changelog.rst"},"the changelog")),o.createElement(r.Z,{onClick:()=>t(!1)},"I understand"))}},47674:(e,t,n)=>{"use strict";function a(e,t){for(const n of Object.keys(t)){const a=t[n];void 0!==a&&("function"==typeof a?a(e,n):void 0!==a.func?a.func(e,t,n):(typeof e[n]!=typeof a.default&&(e[n]=a.default),"number"==typeof e[n]&&void 0!==a.min&&e[n]a.max&&(e[n]=a.max)))}}function r(e,t,n){return(a,r)=>{"number"==typeof a[r]?(a[r]n&&(a[r]=n)):a[r]=e}}n.d(t,{FF:()=>a,_z:()=>r})},27893:(e,t,n)=>{"use strict";function a(e,t,n){return(t<=0||t>=1)&&console.warn(`Exponential factor is ${t}. This is not an intended value for it`),n<1&&console.warn(`Linear factor is ${n}. This is not an intended value for it`),Math.pow(e,t)+e/n}n.d(t,{o:()=>a})},72326:(e,t,n)=>{"use strict";function a(e){const t=[];for(let n=0;na,m:()=>r})},77732:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{P:()=>N00dles});const n00dlePower="[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[+!+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[(![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]]((+((+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+[+[]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+!+[]]])+[])[!+[]+!+[]]+[+!+[]])+(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]])()())[!+[]+!+[]+!+[]+[+[]]]+(+[]+[][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[]+[][(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[!+[]+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+[+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]])+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+[]]+(+(+!+[]+[+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()+[])[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]])()";function N00dles(){eval(n00dlePower)}},68980:(e,t,n)=>{"use strict";function a(e,t){if(t<0||t>100)return e;const n=e*(t/100);return e+(Math.random()*(2*n)-n)}n.d(t,{b:()=>a})},93826:(e,t,n)=>{"use strict";function a(e){const t=Object.assign({},{progress:0,totalTicks:20},e);t.progress=Math.max(Math.min(t.progress,1),0);const n=Math.max(Math.floor(t.progress/(1/t.totalTicks)),1),a=Math.max(t.totalTicks-n,0);return`[${"|".repeat(n)}${"-".repeat(a)}]`}n.d(t,{x:()=>a})},23999:(e,t,n)=>{"use strict";n.d(t,{v:()=>r});const a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function r(e){let t="";for(let n=0;n{"use strict";function a(e,t){const n=t.toLowerCase().replace(/ /g,"");for(const t of Object.values(e))if(n.includes(t.toLowerCase().replace(/ /g,"")))return t}n.d(t,{x:()=>a})},43074:(e,t,n)=>{"use strict";n.d(t,{P:()=>r});var a=n(39463);function r(e){console.error(e);let t="",n="UNKNOWN FILE NAME",r="UNKNOWN LINE NUMBER";var o,i;"object"==typeof(i=e)&&null!=i&&Object.hasOwn(i,"fileName")&&Object.hasOwn(i,"lineNumber")?(n=e.fileName??n,r=(null===(o=e.lineNumber)||void 0===o?void 0:o.toString())??r):t=String(e),(0,a.X)("Caught an exception: "+t+"

Filename: "+n+"

Line Number: "+r+"

This is a bug, please report to game developer with this message as well as details about how to reproduce the bug.

If you want to be safe, I suggest refreshing the game WITHOUT saving so that your save doesn't get corrupted",!0)}},30282:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});var a=n(32449);function r(e){try{return(0,a.Z)(new Date,e)}catch(e){return"format error"}}},89194:(e,t,n)=>{"use strict";function a(e,t){var n,a;const r=new e,o=new Set(Object.getOwnPropertyNames(r));return null==t||null===(n=t.removedKeys)||void 0===n||n.forEach((e=>o.delete(e))),null==t||null===(a=t.addedKeys)||void 0===a||a.forEach((e=>o.add(e))),[...o]}n.d(t,{i:()=>a})},61657:(e,t,n)=>{"use strict";n.d(t,{t:()=>r});var a=n(92666);function r(e){const t=Math.max(Math.min(e,255),0);return(0,a.X)(0,t)}},92666:(e,t,n)=>{"use strict";function a(e,t){const n=Math.min(e,t),a=Math.max(e,t);return Math.floor(Math.random()*(a-n+1))+n}n.d(t,{X:()=>a})},59546:(e,t,n)=>{"use strict";function a(){const e=new Date,t=`0${e.getHours()}`.slice(-2),n=`0${e.getMinutes()}`.slice(-2),a=`0${e.getSeconds()}`.slice(-2);return`${e.getMonth()+1}/${e.getDate()} ${t}:${n}:${a}`}n.d(t,{u:()=>a})},66579:(e,t,n)=>{"use strict";function a(e){return!isNaN(e)&&0!==e&&0==(e&e-1)}n.d(t,{w:()=>a})},21430:(e,t,n)=>{"use strict";function a(e){return"number"==typeof e&&!isNaN(e)}n.d(t,{q:()=>a})},81055:(e,t,n)=>{"use strict";let a,r;n.d(t,{F:()=>a,P:()=>r}),function(e){e.ENTER="Enter",e.ESC="Escape",e.TAB="Tab",e.SPACE=" ",e.BACKSPACE="Backspace",e.UP_ARROW="ArrowUp",e.DOWN_ARROW="ArrowDown",e.LEFT_ARROW="ArrowLeft",e.RIGHT_ARROW="ArrowRight",e.QUOTE="'",e.DOUBLE_QUOTE='"',e.OPEN_BRACKET="[",e.CLOSE_BRACKET="]",e.LESS_THAN="<",e.GREATER_THAN=">",e.OPEN_PARENTHESIS="(",e.CLOSE_PARENTHESIS=")",e.OPEN_BRACE="{",e.CLOSE_BRACE="}",e.EQUAL="=",e.PIPE="|",e.DOT=".",e.FORWARD_SLASH="/",e.HYPHEN="-",e.HASH="#",e.k0="0",e.k1="1",e.k2="2",e.k3="3",e.k4="4",e.k5="5",e.k6="6",e.k7="7",e.k8="8",e.k9="9",e.A="a",e.B="b",e.C="c",e.D="d",e.E="e",e.F="f",e.G="g",e.H="h",e.I="i",e.J="j",e.K="k",e.L="l",e.M="m",e.N="n",e.O="o",e.P="p",e.Q="q",e.R="r",e.S="s",e.T="t",e.U="u",e.V="v",e.W="w",e.X="x",e.Y="y",e.Z="z"}(a||(a={})),function(e){e.ENTER="Enter",e.ESC="Escape",e.TAB="Tab",e.SPACE="Space",e.BACKSPACE="Backspace",e.UP_ARROW="ArrowUp",e.DOWN_ARROW="ArrowDown",e.LEFT_ARROW="ArrowLeft",e.RIGHT_ARROW="ArrowRight",e.BACKWARD_SLASH="Backslash",e.BACKQUOTE="Backquote",e.COMMA="Comma",e.DOT="Period",e.EQUAL="Equal",e.FORWARD_SLASH="Slash",e.HYPHEN="Minus",e.SEMICOLON="Semicolon",e.QUOTE="Quote",e.k0="Digit0",e.k1="Digit1",e.k2="Digit2",e.k3="Digit3",e.k4="Digit4",e.k5="Digit5",e.k6="Digit6",e.k7="Digit7",e.k8="Digit8",e.k9="Digit9",e.A="KeyA",e.B="KeyB",e.C="KeyC",e.D="KeyD",e.E="KeyE",e.F="KeyF",e.G="KeyG",e.H="KeyH",e.I="KeyI",e.J="KeyJ",e.K="KeyK",e.L="KeyL",e.M="KeyM",e.N="KeyN",e.O="KeyO",e.P="KeyP",e.Q="KeyQ",e.R="KeyR",e.S="KeyS",e.T="KeyT",e.U="KeyU",e.V="KeyV",e.W="KeyW",e.X="KeyX",e.Y="KeyY",e.Z="KeyZ"}(r||(r={}))},99953:(e,t,n)=>{"use strict";function a(e){return Math.round(100*e)/100}n.d(t,{S:()=>a})},70769:(e,t,n)=>{"use strict";function a(e,t){return e+"*"+JSON.stringify(t)}function r(e){return new RegExp("^"+e+"\\*")}function o(e){return r("[^[]*"+e+"[^[]*")}n.d(t,{Wl:()=>a,jz:()=>r,lr:()=>o})},22392:(e,t,n)=>{"use strict";function a(e){return"string"==typeof e||e instanceof String}function r(e){return e.length<2||e.at(0)!==e.at(-1)||"'"!==e.at(0)&&'"'!==e.at(0)?e:e.substring(1,e.length-1)}n.d(t,{H:()=>a,g:()=>r})},78719:(e,t,n)=>{"use strict";function a(e,t,n){try{t(e)}catch(e){throw n("string"==typeof e?e:"unknown")}}function r(e){return null===e?"null":Array.isArray(e)?"array":typeof e}function o(e){const t=r(e);if("object"!==t)throw t}function i(e){const t=r(e);if("string"!==t)throw t}function s(e){if(!Array.isArray(e))throw r(e)}n.d(t,{QS:()=>i,b$:()=>o,hu:()=>a,uF:()=>s})},18476:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,y:()=>h});var a=n(33244),r=n(15571),o=n(49173),i=n(97467),s=n(48897),l=n(69917);const c=[["getHackTime","returns milliseconds"],["getGrowTime","returns milliseconds"],["getWeakenTime","returns milliseconds"],["getActionTime","returns milliseconds"],["hackAnalyzePercent","renamed 'hackAnalyze' and returns decimal"],["hackChance","renamed 'hackAnalyzeChance'"],["basic.calculateSkill","renamed 'skills.calculateSkill'"],["basic.calculateExp","renamed 'skills.calculateExp'"],["basic.hackChance","renamed 'hacking.hackChance'"],["basic.hackExp","renamed 'hacking.hackExp'"],["basic.hackPercent","renamed 'hacking.hackPercent'"],["basic.growPercent","renamed 'hacking.growPercent'"],["basic.hackTime","renamed 'hacking.hackTime'"],["basic.growTime","renamed 'hacking.growTime'"],["basic.weakenTime","renamed 'hacking.weakenTime'"],["write","needs to be awaited"],["scp","needs to be awaited"],["sleep","Can no longer be called simultaneously."],["hacking_skill","renamed 'hacking'"],["tryWrite","renamed 'tryWritePort'"]],u=[[/ns.getHackTime/g,"((...a)=>ns.getHackTime(...a)/1000)"],[/ns.getGrowTime/g,"((...a)=>ns.getGrowTime(...a)/1000)"],[/ns.getWeakenTime/g,"((...a)=>ns.getWeakenTime(...a)/1000)"],[/ns.bladeburner.getActionTime/g,"((...a)=>ns.bladeburner.getActionTime(...a)/1000)"],[/ns.hackAnalyzePercent/g,"((...a)=>ns.hackAnalyze(...a)*100)"],[/ns.hackChance/g,"ns.hackAnalyzeChance"],[/ns.tryWrite/g,"ns.tryWritePort"],[/formulas.basic.calculateSkill/g,"formulas.skills.calculateSkill"],[/formulas.basic.calculateExp/g,"formulas.skills.calculateExp"],[/formulas.basic.hackChance/g,"formulas.hacking.hackChance"],[/formulas.basic.hackExp/g,"formulas.hacking.hackExp"],[/formulas.basic.hackPercent/g,"formulas.hacking.hackPercent"],[/formulas.basic.growPercent/g,"formulas.hacking.growPercent"],[/formulas.basic.hackTime/g,"formulas.hacking.hackTime"],[/formulas.basic.growTime/g,"formulas.hacking.growTime"],[/formulas.basic.weakenTime/g,"formulas.hacking.weakenTime"]];function m(e){for(const t of u)if(e.match(t[0]))return!0;return!1}function f(e){const t=e.split("\n"),n=[];for(let e=0;e0&&void 0!==arguments[0]?arguments[0]:1;const t=o.J5.augmentations.find((e=>e.name===a.AugmentationName.NeuroFluxGovernor));if(t)t.level+=e;else{const t=new r.e(a.AugmentationName.NeuroFluxGovernor);t.level=e,o.J5.augmentations.push(t)}}function d(){let e="";for(const t of(0,i.XX)())for(const n of c){const a=[];for(const e of t.scripts.values()){const t=e.code.split("\n");for(let r=0;r{"use strict";n.d(t,{b:()=>c});var a=n(34716),r=n(97467),o=n(93344);const i=["applyToCompany","b1tflum3","checkFactionInvitations","commitCrime","connect","createProgram","destroyW0r1dD43m0n","donateToFaction","getAugmentationBasePrice","getAugmentationCost","getAugmentationPrereq","getAugmentationPrice","getAugmentationRepReq","getAugmentationsFromFaction","getAugmentationStats","getCompanyFavor","getCompanyFavorGain","getCompanyRep","getCrimeChance","getCrimeStats","getCurrentServer","getDarkwebProgramCost","getDarkwebPrograms","getFactionFavor","getFactionFavorGain","getFactionRep","getOwnedAugmentations","getOwnedSourceFiles","getUpgradeHomeCoresCost","getUpgradeHomeRamCost","goToLocation","gymWorkout","hospitalize","installAugmentations","installBackdoor","isBusy","isFocused","joinFaction","manualHack","purchaseAugmentation","purchaseProgram","purchaseTor","quitJob","setFocus","softReset","stopAction","travelToCity","universityCourse","upgradeHomeCores","upgradeHomeRam","workForCompany","workForFaction"],s=["workChaExpGained","currentWorkFactionName","workDexExpGained","workHackExpGained","createProgramReqLvl","workStrExpGained","companyName","crimeType","workRepGained","workChaExpGainRate","workType","workStrExpGainRate","isWorking","workRepGainRate","workDefExpGained","currentWorkFactionDescription","workHackExpGainRate","workAgiExpGainRate","workDexExpGainRate","workMoneyGained","workMoneyLossRate","workMoneyGainRate","createProgramName","workDefExpGainRate","workAgiExpGained","className","hacking","strength","defense","dexterity","agility","charisma","intelligence","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","intelligence_exp","hp","max_hp","hasWseAccount","hasTixApiAccess","has4SData","has4SDataTixApi"],l=["hacking_chance_mult","hacking_speed_mult","hacking_money_mult","hacking_grow_mult","hacking_mult","hacking_exp_mult","strength_mult","strength_exp_mult","defense_mult","defense_exp_mult","dexterity_mult","dexterity_exp_mult","agility_mult","agility_exp_mult","charisma_mult","charisma_exp_mult","hacknet_node_money_mult","hacknet_node_purchase_cost_mult","hacknet_node_ram_cost_mult","hacknet_node_core_cost_mult","hacknet_node_level_cost_mult","company_rep_mult","faction_rep_mult","work_money_mult","crime_success_mult","crime_money_mult","bladeburner_max_stamina_mult","bladeburner_stamina_gain_mult","bladeburner_analysis_mult","bladeburner_success_chance_mult"],c=()=>{const e=(0,r.WT)("home");if(!e)throw new Error("'home' server was not found.");const t=[{matchJS:/ns\.workForCompany/g,matchScript:/workForCompany/g,reason:"workForCompany argument companyName is now not-optional.",offenders:[]},{matchJS:/ns\.getScriptExpGain/g,matchScript:/getScriptExpGain/g,reason:"getScriptExpGain with 0 argument no longer returns the sum of all scripts. Use getTotalScriptExpGain",offenders:[]},{matchJS:/ns\.getScriptExpGain/g,matchScript:/getScriptExpGain/g,reason:"getScriptIncome with 0 argument no longer returns the sum of all scripts. Use getTotalScriptIncome",offenders:[]},{matchJS:/ns\.scp/g,matchScript:/scp/g,reason:"scp arguments were switch, it is now scp(files, destination, optionally_source). If you were using 2 argument (not 3) this doesn't affect you.",offenders:[]},{matchJS:/ns\.stock\.buy/g,matchScript:/stock\.buy/g,reason:"buy is a very common word so in order to avoid ram costs it was renamed ns.stock.buyStock",offenders:[]},{matchJS:/ns\.stock\.sell/g,matchScript:/stock\.sell/g,reason:"sell is a very common word so in order to avoid ram costs it was renamed ns.stock.sellStock",offenders:[]},{matchJS:/ns\.stock\.short/g,matchScript:/stock\.short/g,reason:"short is a very common word so in order to avoid ram costs it was renamed ns.stock.buyShort",offenders:[]},{matchJS:/ns\.corporation\.bribe/g,matchScript:/corporation\.bribe/g,reason:"bribe no longer allows you to give shares of the corporation, only money",offenders:[]}];for(const e of i)t.push({matchJS:new RegExp(`ns.${e}`,"g"),reason:`ns.${e} was moved to ns.singularity.${e}`,offenders:[]});for(const e of l)t.push({matchJS:new RegExp(e,"g"),reason:`ns.getPlayer().${e} was moved to ns.getPlayer().mults.${e.slice(0,e.length-5)}`,offenders:[]});for(const e of s)t.push({matchJS:new RegExp(e,"g"),reason:`The work system is completely reworked and ns.getPlayer().${e} no longer exists. This data is likely available inside ns.getPlayer().currentWork, skills, exp, or hp`,offenders:[]});for(const n of e.scripts.values())f(t,n);e.writeToTextFile("V2_0_0_API_BREAK.txt",m(t)),(0,o.s)();for(const e of(0,r.XX)())e.runningScriptMap=new Map;a.Ex.exportGame()},u=e=>{const t={};for(const n of e){const e=t[n.file]??[];e.push(n),t[n.file]=e}let n="";for(const e in t){n+="\t"+e+"\n";for(const a of t[e])n+=`\t\tLine ${a.line} ${a.content.trim()}\n`}return n},m=e=>{let t="This file contains the list of potential API break. A pattern was used to look through all your files and note the spots where you might have a problem. Not everything here is broken.";for(const n of e)0!==n.offenders.length&&(t+=String(n.matchJS)+"\n",t+=n.reason+"\n\n",t+=u(n.offenders),t+="\n\n");return t},f=(e,t)=>{const n=t.code.split("\n");for(let a=0;a{"use strict";n.d(t,{Z:()=>a});const a="# BitNodes\n\nA BitNode is an important part of the game's storyline.\nIn the game, you discover what BitNodes are by following the trail of clues left by the mysterious `jump3r`.\n\n## What is a BitNode\n\nA BitNode is the complex simulated reality in which you reside.\nBy following the messages from `jump3r`, you discover that humanity was enslaved by an advanced alien race, called the Enders, using virtual simulations that trapped the minds of humans.\n\nHowever, the Enders didn't just create a single virtual reality to enslave humans, but many different simulations.\nIn other words, there are many different BitNodes that exist.\nThese BitNodes are very different from each other.\n\njump3r tells you that the only hope for humanity is to destroy all of these BitNodes.\nTherefore, the end goal for the player is to enter and then destroy each BitNode.\n\nDestroying a BitNode resets most of the player's progress but grants the player a powerful second-tier persistent upgrade called a [Source-File](sourcefiles.md).\nDifferent BitNodes grant different [Source-Files](sourcefiles.md).\n\nEach BitNode has unique characteristics that are related to varying backstories.\nFor example, in one BitNode the world is in the middle of a financial catastrophe with a collapsing market.\nIn this BitNode, most forms of income such as working at a [Company](../basic/companies.md) or [Hacknet Nodes](../basic/hacknet_nodes.md) are significantly less profitable.\n[Servers](../basic/servers.md) have less money on them and lowered growth rates, but it is easier to lower their security level using the `weaken` function.\n\nFurthermore, some BitNodes introduce new content and mechanics.\nFor example, there is one BitNode that grants access to the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md).\nThere is another BitNode in which you can manage a [Gang](gang.md) to earn money and [Reputation](../basic/reputation.md).\n\n## How to destroy a BitNode\n\nInitially, the only way to destroy a BitNode is to join Daedalus.\nFrom Daedalus, the player can obtain an [Augmentation](../basic/augmentations.md) called `The Red Pill`, which doesn't cost any money but does require a good amount of [Faction](../basic/factions.md) [Reputation](../basic/reputation.md).\n\nAfter installing `The Red Pill`, the player must search for and then manually `hack` a server called `w0r1d_d43m0n`.\nThis server requires a hacking level of `3000`, sometimes more, in order to successfully hack it.\nThis will destroy the player's current BitNode.\n\nThere is a second method of destroying a BitNode, but it must be unlocked by first destroying BitNode-6 or BitNode-7 ([Bladeburners](bladeburners.md)).\n\nWhen the player destroys a BitNode, most of their progress will be reset.\nThis includes things such as [Augmentations](../basic/augmentations.md) and [RAM](../basic/ram.md) upgrades on the home computer.\nThe only things that will persist through destroying BitNodes are:\n\n- [Source-Files](sourcefiles.md)\n- [Scripts](../basic/scripts.md) on the home computer\n- [Intelligence](intelligence.md)\n"},46232:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a='# Bladeburners\n\nBladeburner divisions were created internationally in the mid-21st century. Tasked with monitoring and "managing" rogue Synthoids, which may have blended into society and are sometimes considered a threat, working for Bladeburners gives access to powerful enhancements and a goal of destroying [BitNodes](bitnodes.md) by operating against increasingly strong Synthoid opposition.\n\n## Bladeburner Skills:\n\nDesigned to improve a human agent\'s capabilities beyond their natural limits, Bladeburner skills add a persistent bonus while in the [BitNode](bitnodes.md) where they were purchased. Bladeburner skills are purchased with Bladeburner skill points, not money.\n\n## Faction and Rank:\n\nBladeburners also offer unique [Augmentations](../basic/augmentations.md) and a [Faction](factions.md) invite to agents who "put in the work" to gain a small amount of rank. While Bladeburner rank and skill points persist after any augmentation installs, faction reputation will be reset. Bladeburner faction reputation can only be gained through Bladeburner actions.\n'},20041:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Corporations\n\nPLACEHOLDER\n"},23952:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a='# Gangs\n\nIn the wake of crisis and war, Gang activity surged. Stronger than ever in a lawless world - Enhanced with fantastic technology, no longer held back by ethics and morals, \'free from the shadows\'....\n\nSeen by most of the population as nihilistic, murderous and vile, occassional rumors suggest Gangs sometimes involve themselves with vigilanteism, hacktivism, perhaps even plotting against The Enders, seeking to destroy a world they cannot save.\n\n## Starting and Recruiting\n\nOutside of [BitNode-2](bitnodes.md) gangs require much more crime and heartbreak to create, but can still be a great help. Creating a Gang in other [BitNodes](bitnodes.md) will offer more [Augmentations](../basic/augmentations.md) than other [Factions](../basic/factions.md), but they will not be a way to destroy the [BitNode](bitnodes.md) alone.\n\nAfter creating a gang, you will be able to start recruiting, adding members to your gang as you gain Respect. While in a BitNode, your gang and gang member stats will not reset if you install augmentations.\n\n## Respect\n\nEarned as your gang members complete tasks, Respect affects your gang\'s productivity, including your Faction Reputation (needed to buy augmentations from your Gang Faction), and the number of recruits you can have. An individual gang member\'s Respect is lost or reset if they Ascend, or are killed in a Territory Warfare clash.\n\n## Ascending\n\nWhen experienced enough, gang members are offered Ascension, a permanent boost to their stat multipliers at the cost of resetting their base stats and equipment to 0, and reducing your Gang Reputation by the same amount as that member had earned since they last Ascended.\n\n## Equipping and Managing\n\nBuying Equipment for a gang member will give them a stat boost until they Ascend or are killed, at which point most equipment will reset.\n\nAugmentations you install on gang members (in the Gang Equipment subpage) do not reset when they Ascend.\n\nActive gang members earn stats, respect and money based on their current stats, their equipment, and the effects of Ascending.\n\n## Wanted, Territory and Clashes\n\nYour gang\'s "Wanted Level" can make tasks much less productive, and is affected by the tasks assigned to gang members. "Ethical Hacking" or "Vigilante Justice" tasks can lower Wanted Level.\n\n"Territory Warfare" is a special task that builds Power for your gang. If "Territory Clashes" are enabled [see the Territory subpage of your Gang page], members have a chance to win or lose territory by clashing with other gangs. The % of Territory you control affects most aspects of your gang productivity.\n\nNote that gang members can die during clashes, even if your gang wins.\n'},59715:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Grafting\n\nGrafting is an experimental process through which you can obtain the benefits of [Augmentations](../basic/augmentations.md), without needing to reboot your body.\n\nGrafting can be done at VitaLife in New Tokyo, where you'll find a shady researcher with questionable connections.\nFrom there, you can spend a sum of money to begin grafting [Augmentations](../basic/augmentations.md).\nThis will take some time.\nWhen done, the [Augmentation](../basic/augmentations.md) will be applied to your character without needing to install.\n\nBe warned, some who have tested grafting have reported an unidentified malware.\nDubbed `Entropy`, this virus seems to grow in potency as more [Augmentations](../basic/augmentations.md) are grafted, causing unpredictable affects to the victim.\n\nNote that when grafting an [Augmentation](../basic/augmentations.md), cancelling will **not** save your progress, and the money spent will **not** be returned.\n"},55586:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Hacknet Servers\n\nThese are a very powerful upgrade to [Hacknet Nodes](../basic/hacknet_nodes.md).\nInstead of producing money, the Hacknet Servers produce `hashes`.\nThis currency can be exchanged for a variety of upgrades that boost most other mechanics of the game.\n\nThey can also be used to run scripts on.\nHowever, this reduces the amount of `hash` produced.\n"},43429:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Intelligence\n\nIntelligence is a stat that is unlocked by having [Source-File 5](sourcefiles.md) (i.e. Destroying [BitNode-5](bitnodes.md)).\n\nIntelligence is unique because it is permanent and persistent.\nIt never gets reset back to 1.\nHowever, gaining Intelligence experience is extremely slow.\nIt is a stat that gradually builds up as you continue to play the game.\n\nIntelligence will boost your production for many actions in the game, including:\n\n- [Hacking](../basic/hacking.md)\n- [Infiltration](../basic/infiltration.md)\n- [Crime](../basic/crimes.md) success rate\n- [Bladeburner](bladeburners.md) actions\n- [Reputation](../basic/reputation.md) gain for [Companies](../basic//companies.md) & [Factions](../basic/factions.md)\n- [Augmentation](../basic/augmentations.md) [Grafting](grafting.md) speed\n"},51626:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a='# How Scripts Work Offline\n\nThe scripts you write and execute in the BitVerse are real, working JavaScript.\nFor this reason, it is not possible for Bitburner scripts to run when\n\n- the game is closed\n- the browser tab is inactive (if playing Bitburner in a web browser)\n- or your system is sleeping\n\nall of which we call being "offline" for game purposes.\n\nIt is important to know that logic such as `if`/`else` statements and most functions such as `ns.purchaseHacknetNode()`, `ns.hack()`, and `ns.nuke()` will not work while the game is offline.\n\nHowever, scripts WILL continue to generate money and hacking exp for you while offline.\nThis offline production is based on the average online production of all your hacking scripts since your last augmentation, as shown on your Active Scripts page.\n\n`ns.grow()` and `ns.weaken()` methods are also applied when the game is offline, although at a slower rate.\nThis is done by having each script track the rate at which the `ns.grow()` and `ns.weaken()` commands are called while online,\nthen determining how many calls would have been made while offline, and their effect is applied.\n\nAlso, note that because of the way the JavaScript engine works, whenever you reload or re-open the game all of your Active Scripts will start again from the BEGINNING of their code. The game does not keep track of where exactly the execution of a script is when it saves/loads.\n\n# Bonus Time\n\nBecause of the above details, some activities in Bitburner accumulate "Bonus Time" while the game is closed or in an inactive browser tab . For mechanics that have a Bonus Time effect, the rate of the associated activity or task is significantly increased.\n\nFor example if a certain [Bladeburner](bladeburners.md) contract requires 15 seconds to complete under normal conditions, the same task will be finished instead in 3 seconds if the Bonus Time effect is 5x. The specific details and effects of Bonus Time vary by mechanic.\n'},20772:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Sleeves\n\nWhen VitaLife unveiled their Persona Core technology that allowed people to digitize and transfer their consciousness into other vessels, human bodies became nothing more than 'sleeves' for the human consciousness.\nThis technology thus became known as \"Sleeve technology\".\n\nSleeve technology unlocks two different gameplay features:\n\n- Duplicate Sleeves\n- [Grafting](grafting.md)\n\nSleeve technology is unlocked in [BitNode-10](bitnodes.md).\n\n## Duplicate Sleeves\n\nDuplicate Sleeves are MK-V Synthoids (synthetic androids) into which your consciousness has been copied.\nIn other words, these Synthoids contain a perfect duplicate of your mind.\n\nDuplicate Sleeves are essentially clones which you can use to perform work-type actions, such as working for a [Company](../basic/companies.md) / [Faction](../basic/factions.md) or committing a [Crime](../basic/crimes.md).\nWhen sleeves perform these tasks, they will earn money, experience, and [Reputation](../basic/reputation.md).\n\nSleeves are their own individuals, which means they each have their own experience and stats.\n\nWhen a sleeve earns experience, it earns experience for itself, the player's original consciousness, as well as all of the player's other sleeves.\n\nDuplicate Sleeves are **not** reset when installing [Augmentations](../basic/augmentations.md), but they are reset when switching [BitNodes](bitnodes.md).\n\n## Obtaining Duplicate Sleeves\n\nThere are two methods of obtaining Duplicate Sleeves:\n\n- Destroy [BitNode-10](bitnodes.md).\n Each completion gives you one additional Duplicate Sleeve.\n- Purchase Duplicate Sleeves from The Covenant.\n This is only available in [BitNode-10](bitnodes.md).\n Sleeves purchased this way are **permanent** (they persist through [BitNodes](bitnodes.md)).\n You can purchase up to 5 Duplicate Sleeves from The Covenant.\n\n## Synchronization\n\nSynchronization is a measure of how aligned your consciousness is with that of your Duplicate Sleeves.\nIt is a numerical value between `1` and `100`, and it affects how much experience is earned when the sleeve is performing a task.\n\nSynchronization can be increased by assigning sleeves to the `Synchronize` task.\n\n## Sleeve Shock\n\nSleeve shock is a measure of how much trauma the sleeve has due to being placed in a new body.\nIt is a numerical value between `0` and `100`, where `100` indicates full shock and `0` indicates no shock.\nShock affects the amount of experience earned by the sleeve.\n\nSleeve shock slowly decreases over time.\nYou can further increase the rate at which it decreases by assigning sleeves to the `Shock Recovery` task.\n\nLet `X` be the sleeve's shock and `Y` be the sleeve's synchronization.\nWhen the sleeve earns experience by performing a task, the sleeve gains `X%` of the amount of experience normally earned by the task.\nThe player’s original host consciousness and all of the player's other sleeves earn `Y%` of the experience that the sleeve gained, or `X\\*Y %` of the normal experience amount.\n\n## Augmentations\n\nYou can purchase [Augmentations](../basic/augmentations.md) for your Duplicate Sleeves.\nIn order to do this, the sleeve's shock must be at `0`.\nAny [Augmentation](../basic/augmentations.md) that is currently available to you through a faction is also available for your Duplicate Sleeves.\nThere are a few [Augmentations](../basic/augmentations.md), such as NeuroFlux Governor and [Bladeburner](bladeburners.md)-specific ones, that cannot be purchased for a Duplicate Sleeve.\n\nWhen you purchase an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve, it is instantly installed.\nWhen this happens, the sleeve's stats are instantly reset back to 0, similar to when you normally install [Augmentations](../basic/augmentations.md).\n\nThe cost of purchasing an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve is **not** affected by how many [Augmentations](../basic/augmentations.md) you have purchased for yourself, and vice versa.\n\n## Memory\n\nSleeve memory dictates what a sleeve's synchronization will be when it is reset by switching [BitNodes](bitnodes.md).\nFor example, if a sleeve has a memory of `10`, then when you switch [BitNodes](bitnodes.md) its synchronization will initially be set to `10`, rather than 1.\n\nMemory can only be increased by purchasing upgrades from The Covenant.\nJust like the ability to purchase additional sleeves, this is only available in [BitNode-10](bitnodes.md).\n\nMemory is a persistent stat, meaning it never gets reset back to `1`.\nThe maximum possible value for a sleeve's memory is `100`.\n\nBuying memory has no instant affect on synchronization - memory affects only the starting synchronization upon entering a [BitNode](bitnodes.md).\n"},16234:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Source-Files\n\nSource-Files are a type of persistent upgrade that is more powerful than [Augmentations](../basic/augmentations.md).\nSource-Files are received by destroying a [Bitnode](bitnodes.md).\nThere are many different [BitNodes](bitnodes.md) in the game and each [BitNode](bitnodes.md) will grant a different Source-File when it is destroyed.\n\nA Source-File can be upgraded by destroying its corresponding [BitNode](bitnodes.md) a second or third time (playing through that [BitNode](bitnodes.md) again).\nIt can be upgraded to a maximum of level 3, with the exception of Source-File 12, which has no hard limit.\n"},72188:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Stanek\n\nAllison is a bit crazy.\nBut her special [Augmentation](../basic/augmentations.md) is very useful despite its ~~bugs~~ features.\nThe Gift consists of a grid of squares in which tetris-like pieces called fragments can be placed.\nEach fragment boost a different player multiplier.\nHowever, the fragments are not very powerful by themselves.\n\nTo increase the power of a fragment, the `ns.stanek.charge()` function needs to be called.\nMore threads means more power.\n\nThere are also special fragments called booster fragments which increase the power of the fragment it touches.\n"},65273:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Augmentations\n\nAdvances in science and medicine have led to powerful new technologies that allow people to augment themselves beyond normal human capabilities.\nThere are many different types of Augmentations, ranging from cybernetic to genetic to biological.\nAcquiring these Augmentations enhances the user's physical and mental faculties.\n\nAugmentations provide persistent upgrades in the form of multipliers.\nThese multipliers apply to a wide variety of things such as stats, experience gain, and [hacking](hacking.md), just to name a few.\nThe effects of Augmentations stack multiplicatively.\nYour multipliers can be viewed in the `Character` pages.\n\n## How to acquire Augmentations\n\nBecause of how powerful Augmentations are, the technology behind them is kept private and secret by the corporations and organizations that create them.\nTherefore, the only way for the player to obtain Augmentations is through [Factions](factions.md).\nAfter joining a [Faction](factions.md) and earning enough [Reputation](reputation.md) in it, you will be able to purchase its Augmentations.\nDifferent [Factions](factions.md) offer different Augmentations.\nAugmentations must be purchased in order to be installed, and they are fairly expensive.\nThey also require [Reputation](reputation.md) with a [Faction](factions.md) before they will let you purchase their Augmentations.\n\n## Installing Augmentations\n\nYou will not gain the benefits of your purchased Augmentations until you install them.\nYou can choose to install Augmentations through the `Augmentations` menu tab, found under `Character`.\n\nUnfortunately, installing Augmentations has side effects.\nYou will lose most of the progress you've made, including your skills, stats, and money.\nYou will have to start over, but you will have all of the Augmentations you have installed to help you progress.\nThis is the game's \"soft reset\" or \"prestige\" mechanic.\n\nTo summarize, here is a list of everything you will **LOSE** when you install an Augmentation:\n\n- Stats/Skills\n- Money\n- [Scripts](scripts.md) on all [servers](servers.md) EXCEPT your home computer\n- Purchased [servers](servers.md)\n- [Hacknet Nodes](hacknet_nodes.md)\n- [Company](companies.md) / [Faction](factions.md) [Reputation](reputation.md), but you gain [Favor](reputation.md).\n- Jobs and [Faction](factions.md) memberships\n- Programs\n- [Stocks](stockmarket.md)\n- TOR router\n\nHere is everything you will **KEEP** when you install an Augmentation:\n\n- Every Augmentation you have previously installed\n- [Scripts](scripts.md) on your home computer\n- [RAM](ram.md) / Core Upgrades on your home computer\n- [World Stock Exchange account](stockmarket.md) and [TIX API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md) Access\n\n## Purchasing Multiple Augmentations\n\nYou do not have to install an Augmentation right after you purchase it.\nYou can purchase as many Augmentations as you'd like before you choose to install them.\nWhen you install your purchased Augmentations they will **ALL** get installed at once.\n\nThere are a few drawbacks to this, however.\nFirst, obviously, you won't gain the benefits of your purchased Augmentations until after you install them.\nSecond, purchasing multiple Augmentations before installing them will cause the Augmentations to get progressively more expensive.\nWhen you purchase an Augmentation, the price of purchasing another Augmentation doubles.\nThis multiplier stacks for each Augmentation you purchase.\nOnce you install your purchased Augmentations, their costs are reset back to the original prices.\nYou can only purchase each augmentation once, with the exception of `NeuroFlux Governor`, which can be purchased infinitely at increasing cost.\n"},93352:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Coding Contracts\n\nCoding Contracts are a mechanic that lets players earn rewards in exchange for solving programming problems.\n\nCoding Contracts are files with the `.cct` extension.\nThey can be accessed through the [Terminal](terminal.md) or through [Scripts](scripts.md) using the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\n\nEach contract has a limited number of attempts.\nIf you provide the wrong answer too many times and exceed the number of attempts, the contract will self destruct (delete itself).\n\nCurrently, Coding Contracts are randomly generated and spawned over time.\nThey can appear on any [server](servers.md) (including your home computer), except for your purchased [servers](servers.md).\n\n## Running in Terminal\n\nTo run a Coding Contract in the [Terminal](terminal.md), simply use the `run` command:\n\n $ run some-contract.cct\n\nDoing this will bring up a popup.\nThe popup will display the contract's problem, the number of attempts remaining, and an area to provide an answer.\n\n## Interacting through Scripts\n\nSee the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\nInteracting with Coding Contracts via the [Terminal](terminal.md) can be tedious the more contracts you solve.\nConsider using the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) to automate various aspects of your solution.\nFor example, some contracts have long solutions while others have even longer solutions.\nYou might want to use the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) to automate the process of submitting your solution rather than copy and paste a long solution into an answer box.\n\nHowever, using the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) comes at a cost.\nLike most functions in other APIs, each function in the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) has a RAM cost.\nDepending on which function you use, the initial [RAM](ram.md) on your home server might not be enough to allow you to use various [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) functions.\nPlan on upgrading the [RAM](ram.md) on your home server if you want to use the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\n\n## Submitting Solutions\n\nDifferent contract problem types will require different types of solutions.\nSome may be numbers, others may be strings or arrays.\nIf a contract asks for a specific solution format, then use that.\nOtherwise, follow these rules when submitting solutions:\n\n- String-type solutions should **not** have quotation marks surrounding the string (unless specifically asked for).\n Only quotation marks that are part of the actual string solution should be included.\n- Array-type solutions should be submitted with each element in the array separated by commas.\n Brackets are optional.\n For example, both of the following are valid solution formats:\n - `1,2,3`\n - `[1,2,3]`\n- If the solution is a multidimensional array, then all arrays that are not the outer-most array DO require the brackets.\n For example, an array of arrays can be submitted as one of the following:\n - `[1,2],[3,4]`\n - `[[1,2],[3,4]]`\n\nNumeric solutions should be submitted normally, as expected\n\n## Rewards\n\nThere are currently four possible rewards for solving a Coding Contract:\n\n- [Faction](factions.md) [Reputation](reputation.md) for a specific [Faction](factions.md)\n- [Faction](factions.md) [Reputation](reputation.md) for all [Factions](factions.md) that you are a member of\n- [Company](companies.md) [Reputation](reputation.md) for a specific [Company](companies.md)\n- Money\n\nThe `amount` of the reward varies based on the difficulty of the problem posed by the Coding Contract.\nThere is no way to know what a Coding Contract's exact reward will be until it is solved.\n\n## Notes\n\n- The `scp` [Terminal](terminal.md) command does not work on Coding Contracts\n"},34177:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Companies\n\nWhen exploring the [World](world.md), you can visit various companies.\nAt these companies, you can apply for jobs.\n\nWorking a job lets you earn money, experience, and [Reputation](reputation.md) with that company.\n\nWhile working for a company, you can click `Do something else simultaneously` to be able to do things while you continue to work in the background.\nThere is a 20% penalty to the related gains.\nClicking the `Focus` button under the overview will return you to the current work.\n\nIf you've been hired to do a job you can click that `Apply for X Job` button again to get a promotion if you meet the requirements.\nYou can see the requirements by hovering your cursor over the button.\nHigher positions give increased rewards.\n"},98028:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Crimes\n\nCommitting crimes is an active gameplay mechanic that allows the player to train their [Stats](stats.md) and potentially earn money.\nThe player can attempt to commit crimes by visiting `The Slums` through the `City` tab (Alt + w).\n`The Slums` is available in every city.\n\n## Basic Mechanics\n\nWhen you visit `The Slums` you will see a list of buttons that show all of the available crimes.\nSimply select one of the options to begin attempting that crime.\nAttempting to commit a crime takes a certain amount of time.\nThis time varies between crimes.\n\nWhile doing crimes, you can click `Do something else simultaneously` to be able to do things while you continue to do crimes in the background.\nThere is a 20% penalty to the related gains.\nClicking the `Focus` button under the overview will return you to the current task.\n\nCrimes are not always successful.\nYour rate of success is determined by your [Stats](stats.md) and [Augmentations](augmentations.md).\nThe odds can be seen on the crime-selection page.\nIf you are unsuccessful at committing a crime you will gain EXP, but you will not earn money.\nIf you are successful at committing the crime you will gain extra EXP (4x of what an unsuccessful attempt would give) and earn money.\n\nHarder crimes are typically more profitable, and also give more EXP.\n"},18267:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Factions\n\nThroughout the game you may receive invitations from factions.\nThere are many different factions, and each faction has different criteria for determining its potential members.\nJoining a faction and furthering its cause is crucial to progressing in the game and unlocking endgame content.\n\nIt is possible to join multiple factions if you receive invitations from them.\nHowever, note that joining a faction may prevent you from joining other rival factions.\n(Don't worry, this usually isn't the case.\nAlso, it would only be temporary since resetting the game by installing [Augmentations](augmentations.md) will clear all your factions)\n\nThe `Factions` link on the menu brings up a list of all factions that you have joined.\nYou can select a Faction on this list to go to that Faction page.\nThis page displays general information about the Faction and also lets you perform work for the faction.\nWorking for a Faction is similar to working for a [Company](companies.md) except that you don't get paid a salary.\nYou will only earn [Reputation](reputation.md) in your Faction and train your [Stats](stats.md).\n\nEarning [Reputation](reputation.md) for a Faction unlocks powerful [Augmentations](augmentations.md).\nPurchasing and installing these [Augmentations](augmentations.md) will upgrade your abilities.\nThe [Augmentations](augmentations.md) that are available to unlock vary from Faction to Faction.\n"},88378:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Hacking\n\nIn the year 2077, currency has become digital and decentralized.\nPeople and corporations store their money on [servers](servers.md).\nBy hacking these [servers](servers.md), you can steal their money and gain experience.\n\n## Gaining Root Access\n\nThe first step to hacking a [server](servers.md) is to gain root access to that [server](servers.md).\nThis can be done using the `NUKE.exe` virus.\nYou start the game with a copy of the `NUKE.exe` virus on your home computer.\nThe `NUKE.exe` virus attacks the target [server](servers.md)'s open ports using buffer overflow exploits.\nWhen successful, you are granted root administrative access to the machine.\n\nIn order for the `NUKE.exe` virus to succeed, the target [server](servers.md) needs to have enough open ports.\nSome [servers](servers.md) have no security and will not need any ports opened.\nSome will have very high security and will need many ports opened.\nIn order to open ports on another [server](servers.md), you will need to run programs that attack the [server](servers.md) to open specific ports.\nThese programs can be coded once your hacking skill gets high enough, or they can be purchased if you can find a seller.\n\n**There are two ways to execute port-opening programs and the NUKE virus:**\n\n- Connect to the target [server](servers.md) through the [Terminal](terminal.md) and use the `run` command: `$ run [programName]`\n- Use a function:\n - `nuke`\n - `brutessh`\n - `ftpcrack`\n - `relaysmtp`\n - `httpworm`\n - `sqlinject`\n\n**There are two ways to determine how many ports need to be opened\non a [server](servers.md) in order to successfully NUKE it:**\n\n- Connect to that [server](servers.md) through the [Terminal](terminal.md) and use the `analyze` command.\n- Use the `getServerNumPortsRequired` function.\n\nOnce you have enough ports opened on a [server](servers.md) and have ran the NUKE virus to gain root access, you will be able to hack it.\n\n### For specific details of how Hacking work \"offline\"\n\nSee [Offline And Bonus Time](../advanced/offlineandbonustime.md).\n\n## General Hacking Mechanics\n\nWhen you execute the `hack` command, either manually through the [Terminal](terminal.md) or automatically through a script, you attempt to hack the [server](servers.md).\nThis action takes time.\nThe more advanced a [server](servers.md)'s security is, the more time it will take.\nYour hacking skill level also affects the hacking time, with a higher hacking skill leading to shorter hacking times.\nAlso, running the hack command manually through [Terminal](terminal.md)\nis faster than hacking from a script.\n\nYour attempt to hack a [server](servers.md) will not always succeed.\nThe chance you have to successfully hack a [server](servers.md) is also determined by the [server](servers.md)'s security and your hacking skill level.\nEven if your hacking attempt is unsuccessful, you will still gain experience points.\n\nWhen you successfully hack a [server](servers.md).\nYou steal a certain percentage of that [server](servers.md)'s total money.\nThis percentage is, once again, determined by the [server](servers.md)'s security and your hacking skill level.\nThe amount of money on a [server](servers.md) is not limitless.\nSo, if you constantly hack a [server](servers.md) and deplete its money, then you will encounter diminishing returns in your hacking (since you are only hacking a certain percentage).\nYou can increase the amount of money on a [server](servers.md) using a script and the `grow` function.\n\n## Server Security\n\nEach [server](servers.md) has a security level, typically between `1` and `100`.\nA higher number means the [server](servers.md) has stronger security.\n\nAs mentioned above, a [server](servers.md)'s security level is an important factor to consider when hacking.\nYou can check a [server](servers.md)'s security level using the `analyze` [Terminal](terminal.md) command.\nYou can also check a [server](servers.md)'s security in a script, using the `getServerSecurityLevel` function.\n\nWhenever a [server](servers.md) is hacked manually or through a script, its security level increases by a small amount.\nCalling the `grow` function in a script will also increase security level of the target [server](servers.md).\nThese actions will make it harder for you to hack the [server](servers.md), and decrease the amount of money you can steal.\nYou can lower a [server](servers.md)'s security level in a script using the `weaken` function.\n\nThis means that a [server](servers.md)'s security level will not fall below this value if you are trying to `weaken` it.\n\n## Backdoors\n\n[Servers](servers.md) that can be hacked can also have backdoors installed.\nThese backdoors will provide you with a benefit - the services may be cheaper, penalties may be reduced or there may be other results.\nHoneypots exist and will let factions know when you have succeeded at backdooring their system.\nOnce you have a backdoor installed, you can connect to that [server](servers.md) directly.\n\nWhen you visit a location in the city and see that the name is partially scrambled, this indicates that you have backdoored the [server](servers.md) related to the location.\n"},11082:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Hacknet nodes\n\nThis distributed network of computers allows you to gain passive income.\nBy upgrading a node's level, RAM, and CPU cores you can increase the amount of money it earns.\nYou can also purchase new nodes to expand your Hacknet - The cost for each node increases as your network grows.\n\n**Hacknet nodes won't make as much money as basic hacking scripts, and they are not enough to progress alone.**\n\nLater in the game, there is a powerful change to the Hacknet system called [Hacknet Servers](../advanced/hacknetservers.md).\n"},35123:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Infiltration\n\nInfiltration is a gameplay mechanic that allows you to infiltrate a [Company](companies.md)'s facility to try and steal the [Company](companies.md)'s classified secrets.\nThese secrets can be sold for money or for [Reputation](reputation.md) with a [Faction](factions.md).\n\n## Overview\n\nMany companies have facilities that you can attempt to infiltrate.\nBy infiltrating, you can steal classified [Company](companies.md) secrets and then sell these for money or for [Faction](factions.md) [Reputation](reputation.md).\nTo try and infiltrate a [Company](companies.md), visit a [Company](companies.md) through the [World](world.md) menu.\nThere will be an option that says 'Infiltrate [Company](companies.md)'.\n\nWhen infiltrating a [Company](companies.md), you will be presented with short active challenges.\nNone of the challenges use the mouse.\n\nThe difficulty at the top lowers with better combat stats and charisma.\nIt is not recommended to attempt infiltrations above mid-normal.\n\nThe `maximum level` is the number of challenges you will need to pass to receive the infiltration reward.\n\nEvery time you fail an infiltration challenge, you will take damage based on the difficulty of the infiltration.\nIf you are reduced to `0` hp or below, the infiltration will immediately end.\n\n- Most use spacebar as `action`\n- Some use WASD or arrows interchangeably.\n- A few others use the rest of the keyboard.\n\n### Slash when his guard is down!\n\nPress space when the guard is preparing to attack you.\n\nThere are 3 phases:\n\n1. guarding - attacking back will result in failure.\n2. preparing - attacking will result in a victory.\n3. attacking - the guard will attack you resulting in failure.\n\n### Close the brackets\n\nEnter all the matching brackets in reverse order.\n\n### Type it backward\n\nType the words that are written backward.\n\n### Say something nice about the guard.\n\nUse the arrows to find a compliment for the guard.\n\n### Enter the Code!\n\nMatch the arrows as they appear.\n\n### Match the symbols!\n\nMove the cursor to the matching symbol and press space to confirm.\n\n### Remember all the mines!\n\nAt first, the cursor cannot be moved - remember the positions of the mines. \nNext, move the cursor and press space to mark the mines on the board.\n\n### Cut the wires\n\nFollow the instructions and press the numbers `1` through `9` to cut the appropriate\nwires.\n"},40449:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a='## Programs\n\nIn Bitburner "Programs" refer specifically to the list of `.exe` files found in the Programs tab of the side menu.\n\nUnlike `.js` [scripts](scripts.md) you write for yourself with Javascript, Programs are supplied to you by Bitburner and are only "programs" in name; they do not require or allow you to access actual lines of code. Instead once you have a Program you will be able to use it directly as a function in the [Terminal](terminal.md) or scripts.\n\n [n00dles /]> run BruteSSH.exe\n [n00dles /]> scan-analyze 10\n\nor\n\n ns.sqlinject("n00dles")\n\nAfter meeting the [Hacking Skill level](stats.md) threshold shown on each Program, you have the option to Create Program, allowing you to do that as a focused or unfocused activity. The time needed to create a Program generally increases with their level requirement, and scales with your [stats](stats.md).\n\nAlternatively, you may also find the same Programs available for purchase by connecting to the in-game `Darkweb`, accessed after finding a tech store in a City and purchasing Tor [("The Onion Router")]().\n'},84747:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# RAM\n\nIn Bitburner, RAM determines how many [Scripts](scripts.md) can run on a [Server](servers.md).\n\nMultiplying the number of threads a [Script](scripts.md) uses multiplies its RAM cost, but also multiplies the effectiveness of several functions such as `ns.hack()`, `ns.grow()`, and `ns.weaken()`.\n\nYou can purchase more RAM for your home computer from tech vendors.\nYou can also use other purchased or hacked servers as a source of additional RAM.\n"},15467:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Reputation\n\nIn order to acquire [Augmentations](augmentations.md) from [Factions](factions.md), you need to earn their trust.\n\nThis can be done in a variety of ways, but the most common is offering your services to a [Faction](faction.md).\nAnother option is to give them intel from [Infiltrations](infiltration.md).\n\nWhen installing [Augmentations](augmentations.md), all your reputation gets converted to favor.\nFavor increases the rate at which reputation is gained with that faction.\n\nWith enough favor, donations are unlocked.\nDonations allow you to spend money to acquire reputation directly.\nWithout working for the faction.\nThis feature is particularily useful when a very large amount of reputation is needed for an augmentation.\n"},80575:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a='# Before you start -\n\nIt is highly recommended that you have a basic familiarity with programming concepts like [`for`/`while` loops](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for), [conditionals like `if`/`else`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else), [`functions`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions),[`arrays`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) and [`variables`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) before starting to write scripts - but you can start with basic skills and learn with practice.\n\nIf you\'d like to first learn a bit about programming, see [this page](../programming/learn.md).\n\n# Scripts\n\nScripts you write in Bitburner are real, working JavaScript and can be used to automate basic hacking logic, and almost any mechanic in the game.\n\nRunning any script requires in-game [RAM](ram.md), with a minimum cost of 1.6 GB per script.\nMore complex scripts and API functions generally require more [RAM](ram.md), which you will gain in many ways.\nScripts can be run on any [server](server.md) you have root access to, but not all servers you find will have useable RAM.\n\n## How Scripts work offline\n\nBeing actual JavaScript, Bitburner also contains some quirks and limitations.\nFor this reason, it is not possible for Bitburner scripts to run the same way at all times.\nHowever, you will continue to earn money and exp when Bitburner is not running, though at a slower rate.\nSee [How Scripts Work Offline](../advanced/offlineandbonustime.md) for more details.\n\n## Identifying a Script\n\nMany commands and functions target other scripts running on the same or a different server.\nTherefore, there must be a way to specify which script you want to affect.\n\nOne way to identify a script is by its unique PID (Process IDentifier).\nA PID number is returned from `ns.run()`, `ns.exec()`, etc; and is also shown in the output of `ns.ps()`.\n\nA second way to identify scripts is by filename, hostname **and** arguments.\nHowever, you will probably run multiple copies of a script with the same arguments, so this method is not necessarily **unique** to a script.\nIn case of multiple matches, most functions will return an arbitrary one (typically the oldest).\n\nIf searching by filename, arguments must be an **exact** match - both the order and [type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof) of the arguments you supply matter.\n\n## Referencing Other Scripts\n\nIn order to reference a file, `functions` require the **full** absolute file path.\nFor example\n\n ns.run("/scripts/hacking/helpers.myHelperScripts.js");\n ns.rm("/logs/myHackingLogs.txt");\n ns.rm("thisIsAFileInTheRootDirectory.txt");\n\nA full file path **must** begin with a forward slash (/) if that file is not in the root directory.\nFor details on references in terminal commands, see [Terminal](terminal.md).\n\n## Script Arguments\n\nWhen running a script, you can use [flags](https://github.com/bitburner-official/bitburner-src/blob/bec737a25307be29c7efef147fc31effca65eedc/markdown/bitburner.ns.flags.md) and [arguments](https://github.com/bitburner-official/bitburner-src/blob/bec737a25307be29c7efef147fc31effca65eedc/markdown/bitburner.ns.args.md), which the script\'s logic can access and act on, allowing flexibility in your script designs. For example allowing you to get different results or attack different targets without re-writing your code:\n\n $ run hack.js "harakiri-sushi"\n $ run hack.js "silver-helix"\n\n## Multithreading scripts\n\nA script can be run with multiple threads, which we call "multithreading."\nMultithreading affects every call to the `ns.hack()`, `ns.grow()`, and `ns.weaken()` methods, multiplying their effects by the number of threads used.\nFor example, if a script run with 1 thread is able to hack $10,000, then running the same script with 5 threads would hack $50,000.\n\n[Note -- Scripts will not actually become multithreaded in the real-world sense - Javascript is a "single-threaded" coding language.]\n\nWhen "multithreading" a script, the total [RAM](ram.md) cost can be calculated by simply multiplying the [RAM](ram.md) cost of a single instance of your script by the number of threads you will use. [See [`ns.getScriptRam()`](https://github.com/bitburner-official/bitburner-src/blob/bec737a25307be29c7efef147fc31effca65eedc/markdown/bitburner.ns.getscriptram.md) or the `mem` terminal command detailed below]\n\n## Working with Scripts in Terminal\n\nHere are some [terminal](terminal.md) commands you will find useful when working with scripts:\n\n**check [script] [args...]**\n\nPrints the logs of the script specified by the name and arguments to [Terminal](terminal.md).\nRemember that scripts are uniquely identified by their arguments as well as their name, and\nArguments should be separated by a space.\nFor example, if you ran a script `foo.js` with the argument `foodnstuff` then in order to \'check\' it you must also add `foodnstuff` as an argument for the `check` command:\n\n $ check foo.js foodnstuff\n\n**free**\n\nShows the current server\'s [RAM](ram.md) usage and availability\n\n**kill [pid]** or **kill [script] [args...]**\n\nStops a script that is running with the specified PID, or script name and arguments.\nRemember that scripts are identified by their arguments as well as their name, and\nArguments should be separated by a space.\nFor example, if you ran a script `foo.js` with the arguments `1` and `2`, then just typing `kill foo.js` will not work.\nInstead use:\n\n $ kill foo.js 1 2\n\n**mem [script] [-t] [n]**\n\nCheck how much [RAM](ram.md) a script requires to run with "n" threads\n\n $ mem [scriptname] -t n\n $ mem hack.js -t 500\n\n**nano [script]**\n\nCreate/Edit a script.\nThe name of a script must end with `.js`, but you can also create `.txt` files.\n\n**ps**\n\nDisplays all scripts that are actively running on the current [server](servers.md)\n\n**rm [script]**\n\nPermanently delete a script from the [server](servers.md). Can only be undone with a save import.\n\n**run [script] [-t] [n] [args...]**\n\nRun a script with n threads and the specified arguments.\nEach argument should be separated by a space.\nBoth the thread count and arguments are optional.\nIf neither are specified, then the script will be run with a single thread and no arguments.\n\nExamples:\n\nRun `foo.js` single-threaded with no arguments::\n\n $ run foo.js\n\nRun `foo.js` with 10 threads and no arguments:\n\n $ run foo.js -t 10\n\nRun `foo.js` single-threaded with three arguments: `[foodnstuff, sigma-cosmetics, 10]`:\n\n $ run foo.js foodnstuff sigma-cosmetics 10\n\nRun `foo.js` with 50 threads and a single argument: `foodnstuff`:\n\n $ run foo.js -t 50 foodnstuff\n\n**tail [pid]** or **tail [script] [args...]**\n\nDisplays the logs of the script specified by the PID or filename and arguments.\nRemember that scripts are identified by their arguments as well as their filename.\nFor example, if you ran a script `foo.js` with the argument `foodnstuff`, in order to `tail` it you must also add the `foodnstuff` argument to the `tail` command as so:\n\n $ tail foo.js foodnstuff\n\n**top**\n\nPrints all scripts running on the server and their [RAM](ram.md) usage.\n\n $ top\n'},36814:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Servers\n\nIn this game, a server refers to a computer that can be connected to, accessed, and manipulated through the [Terminal](terminal.md).\nAll servers in the game are connected to each other to form a large, global network.\nTo learn about how to navigate this network and connect to other servers, see the [terminal](terminal.md) page.\n\n## Server Statistics\n\nEach server has its own statistics, such as [RAM](ram.md), required hacking level, and number of ports required to successfully `NUKE` it.\n\nPerhaps the most important property of a server to make note of is its [RAM](ram.md), which refers to how much memory is available on that machine. [RAM](ram.md) is important because it is required to run [Scripts](scripts.md).\nMore [RAM](ram.md) allows the user to run more powerful and complicated [scripts](scripts.md), as well as executing scripts with more threads.\n\nThe `free`, `scan-analyze`, and `analyze` [Terminal](terminal.md) commands can be used to check how much [RAM](ram.md) a server has.\n\nSome servers have some randomized statistics, such as [RAM](ram.md), max Money, or required hacking level.\nThese statistics are randomly generated from a range of values.\n\n## Identifying Servers\n\nA server is identified by its hostname.\nA hostname is a label assigned to a server.\nA hostname will usually give you a general idea of what the server is.\nFor example, the company Nova Medical might have a server with the hostname `nova-med`.\n\nHostnames are unique.\nThis means that if one server has the the hostname `some-server`, then no other server in the game can have that that hostname.\n\nThere are many `functions` and [terminal](terminal.md) commands in the game that will require you to target a specific server by hostname.\n\n## Player-owned Servers\n\nThe player starts with a single server: his/her home computer.\nThis server will have the hostname `home`.\nThe player's home computer is special for a variety of reasons:\n\n- The home computer's [RAM](ram.md) can be upgraded.\n This can be done by visiting certain locations in the [World](world.md).\n- The home computer persists through [Augmentation](augmentations.md) installations.\n This means that you will not lose any [RAM](ram.md) upgrades or [Scripts](scripts.md) on your home computer when you install [Augmentations](augmentations.md)\n (you will, however, lose programs and messages on your home computer).\n\nThe player can also purchase additional servers.\nThis can be done by visiting certain locations in the [World](world.md), or it can be done automatically through a script using the `purchaseServer` function.\nThe advantage of purchased servers is that, in terms of [RAM](ram.md), they are cheaper than upgrading your home computer.\nThe disadvantage is that your purchased servers are lost when you install [Augmentations](augmentations.md).\n\n## Hackable Servers\n\nMost servers that are not owned by the player can be [hacked](hacking.md) for money and exp.\n\nDifferent servers have different levels of security, but also offer different rewards when being hacked.\n\n## Server Connections\n\nThe servers are in a randomly organized tree-structure.\nThe distance from the home computer to each server is fixed, but the exact route to them is randomized when you install [augmentations](augmentations.md).\nIn general, the further away from home computer a server is the higher its statistics are.\n"},72702:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="Below are some of the stats that will increase with play and reset during augmentation installs as you progress through the game.\nYour stats can be found in the Overview panel, the Stats subpage of the sidemenu, or with API methods like `ns.getPlayer()`.\n\n## Hack Skill\n\nFor many aspects of Bitburner, increasing your Hack skill will be an important goal. Primarily affected by the efficiency of your hacking strategies, you will also be offered [Augmentations](augmentations.md) that greatly enhance your Hack Skill level and how effective its results are.\n\nAffects:\n\n- Time needed to execute `hack`, `grow`, or `weaken` and similar methods\n- Your chance to successfully hack a server\n- Percent of a server's money stolen when hacking it\n- Success rate of certain [crimes](crimes.md)\n- Time needed to create a [Program](programs.md)\n- [Faction](factions.md) [Reputation](reputation.md) gain when carrying out Hacking Contracts or Field Work\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\n\nGain Hack experience by:\n\n- Manually hacking servers through the [Terminal](terminal.md)\n- Using `ns.hack()`, `ns.grow()`, or `ns.weaken()` through scripts\n- Committing certain [crimes](crimes.md)\n- Carrying out Hacking Contracts or doing Field work for [Factions](factions.md)\n- Some [Company](companies.md) jobs and other types of work\n- Studying at a university\n\n## Combat Skills\n\n### Strength, Defense, Dexterity, and Agility\n\nThese represent your physical skill and attributes, including your ability to sneak, inflict or endure damage, and pull off high precision tasks. Similar to your Hack skill, you will be offered [Faction](factions.md) [Augmentations](augmentations.md) to multiplicatively enhance your Combat Skills and exp gain.\n\nAffects:\n\n- HP scales with Defense. Infiltration and some jobs may cause you to take damage.\n- Success rate of certain [crimes](crimes.md)\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\n\nGain experience by:\n\n- Working out at a gym\n- Committing certain [crimes](crimes.md)\n- Doing Security or Field Work for a [Faction](factions.md)\n- Working certain jobs at a [Company](companies.md)\n\n## Charisma\n\nRarely as useful as Hacking and Physical skills, Charisma can help get a company job, gain trust, or calm chaos in social situations.\n\nCharisma can also be enhanced with [Augmentations](augmentations.md).\n\nAffects:\n\n- Success rate of certain [crimes](crimes.md)\n- [Faction](factions.md) [Reputation](reputation.md) gain for Field Work\n- [Company](companies.md) [Reputation](reputation.md) gain for most jobs\n\nGain experience by:\n\n- Committing certain [crimes](crimes.md)\n- Studying at a university\n- Working certain jobs at a [Company](companies.md)\n- Doing Field work for a [Faction](factions.md)\n\n### Other Stats and abilities are available in later stages of the game.\n"},26347:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Stock Market\n\nThe Stock Market refers to the World Stock Exchange (WSE), through which you can buy and sell stocks in order to make money.\n\nThe WSE can be found in the `City` tab, and is accessible in every city.\n\n## Fundamentals\n\nThe Stock Market is not as simple as \"buy at price X and sell at price Y\".\nThe following are several fundamental concepts you need to understand about the stock market.\n\nFor those that have experience with finance/trading/investing, please be aware that the game's stock market does not function exactly like it does in the real world.\nSo these concepts below should seem similar, but won't be exactly the same.\n\n## Positions: Long vs Short\n\nWhen making a transaction on the stock market, there are two types of positions: Long and Short.\nA Long position is the typical scenario where you buy a stock and earn a profit if the price of that stock increases.\nMeanwhile, a Short position is the exact opposite.\nIn a Short position, you purchase shares of a stock and earn a profit if the price of that stock decreases.\nThis is also called 'shorting' a stock.\n\nShorting stocks is not available immediately, and must be unlocked later in the game.\n\n## Forecast & Second-Order Forecast\n\nA stock's forecast is its likelihood of increasing or decreasing in value.\nThe forecast is typically represented by its probability of increasing in either a decimal or percentage form.\nFor example, a forecast of `70%` means the stock has a `70%` chance of increasing and a `30%` chance of decreasing.\n\nA stock's second-order forecast is the target value that its forecast trends towards.\nFor example, if a stock has a forecast of `60%` and a second-order forecast of `70%`, then the stock's forecast should slowly trend towards `70%` over time.\nHowever, this is determined by RNG so there is a chance that it may never reach `70%`.\n\nBoth the forecast and the second-order forecast change over time.\n\nA stock's forecast can be viewed after purchasing Four Sigma (4S) Market Data access.\nThis lets you see the forecast info on the Stock Market UI.\nIf you also purchase access to the 4S Market Data TIX API, then you can view a stock's forecast using the `getStockForecast` function.\n\nA stock's second-order forecast is always hidden.\n\n## Spread (Bid Price & Ask Price)\n\nThe **bid price** is the maximum price at which someone will buy a stock on the stock market.\n\nThe **ask price** is the minimum price that a seller is willing to receive for a stock on the stock market\n\nThe ask price will always be higher than the bid price (This is because if a seller is willing to receive less than the bid price, that transaction is guaranteed to happen).\nThe difference between the bid and ask price is known as the **spread**.\nA stock's \"price\" will be the average of the bid and ask price.\n\nThe bid and ask price are important because these are the prices at which a transaction actually occurs.\nIf you purchase a stock in the long position, the cost of your purchase depends on that stock's ask price.\nIf you then try to sell that stock (still in the long position), the price at which you sell is the stock's bid price.\nNote that this is reversed for a short position.\nPurchasing a stock in the short position will occur at the stock's bid price, and selling a stock in the short position will occur at the stock's ask price.\n\n## Transactions Influencing Stock Forecast\n\nBuying or selling a large number of shares of a stock will influence that stock's forecast & second-order forecast.\nThe forecast is the likelihood that the stock will increase or decrease in price.\nThe magnitude of this effect depends on the number of shares being transacted.\nMore shares will have a bigger effect.\n\nThe effect that transactions have on a stock's second-order forecast is significantly smaller than the effect on its forecast.\n\n## Order Types\n\nThere are three different types of orders you can make to buy or sell stocks on the exchange:\nMarket Order, Limit Order, and Stop Order.\n\nLimit Orders and Stop Orders are not available immediately, and must be unlocked later in the game.\n\nWhen you place a Market Order to buy or sell a stock, the order executes immediately at whatever the current price of the stock is.\nFor example if you choose to short a stock with 5000 shares using a Market Order, you immediately purchase those 5000 shares in a Short position at whatever the current market price is for that stock.\n\nA Limit Order is an order that only executes under certain conditions.\nA Limit Order is used to buy or sell a stock at a specified price or better.\nFor example, lets say you purchased a Long position of 100 shares of some stock at a price of $10 per share.\nYou can place a Limit Order to sell those 100 shares at $50 or better.\nThe Limit Order will execute when the price of the stock reaches a value of $50 or higher.\n\nA Stop Order is the opposite of a Limit Order.\nIt is used to buy or sell a stock at a specified price (before the price gets 'worse').\nFor example, lets say you purchased a Short position of 100 shares of some stock at a price of $100 per share.\nThe current price of the stock is $80 (a profit of $20 per share).\nYou can place a Stop Order to sell the Short position if the stock's price reaches $90 or higher.\nThis can be used to lock in your profits and limit any losses.\n\nHere is a summary of how each order works and when they execute:\n\n**In a LONG Position:**\n\nA Limit Order to buy will execute if the stock's price <= order's price\n\nA Limit Order to sell will execute if the stock's price >= order's price\n\nA Stop Order to buy will execute if the stock's price >= order's price\n\nA Stop Order to sell will execute if the stock's price <= order's price\n\n**In a SHORT Position:**\n\nA Limit Order to buy will execute if the stock's price >= order's price\n\nA Limit Order to sell will execute if the stock's price <= order's price\n\nA Stop Order to buy will execute if the stock's price <= order's price\n\nA Stop Order to sell will execute if the stock's price >= order's price.\n\n## Player Actions Influencing Stocks\n\nIt is possible for your actions elsewhere in the game to influence the stock market.\n\n### Hacking\n\nIf a server has a corresponding stock (e.g. _foodnstuff_ server -> FoodNStuff stock), then hacking that server can decrease the stock's second-order forecast.\nThis causes the corresponding stock's forecast to trend downwards in value over time.\n\nThis effect only occurs if you set the stock option to true when calling the `hack` function.\nThe chance that hacking a server will cause this effect is based on what percentage of the server's total money you steal.\n\nA single hack will have a minor effect, but continuously hacking a server for lots of money over time will have a noticeable effect in making the stock's forecast trend downwards.\n\n### Growing\n\nIf a server has a corresponding stock (e.g. `foodnstuff` server -> FoodNStuff stock), then growing that server's money can increase the stock's second-order forecast.\nThis causes the corresponding stock's forecast to trend upwards in value over time.\n\nThis effect only occurs if you set the `stock` option to true when calling the `grow` function.\nThe chance that growing a server will cause this effect is based on what percentage of the server's total money to add to it.\n\nA single grow operation will have a minor effect, but continuously growing a server for lots of money over time will have a noticeable effect in making the stock's forecast trend upwards.\n\n### Working for a Company\n\nIf a [Company](companies.md) has a corresponding stock, then working for that [Company](companies.md) will increase the corresponding stock's second-order forecast.\nThis will cause the stock's forecast to (slowly) trend upwards in value over time.\n\nThe potency of this effect is based on how effective you are when you work (i.e. it's based on your stats and multipliers).\n\n## Automating the Stock Market\n\nYou can write scripts to perform automatic and algorithmic trading on the Stock Market.\nSee [TIX API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md) for more details.\n\n## Under the Hood\n\nStock prices are updated every ~6 seconds.\n\nWhether a stock's price moves up or down is random.\nHowever, stocks have properties that can influence the way their price moves.\nThese properties are hidden, although some of them can be made visible by purchasing the Four Sigma (4S) Market Data upgrade.\nSome examples of these properties are:\n\n- Volatility\n- Likelihood of increasing or decreasing (i.e. the stock's forecast)\n- Likelihood of forecast increasing or decreasing (i.e. the stock's second-order forecast)\n- How easily a stock's price/forecast is influenced by transactions\n- Spread percentage\n- Maximum price (not a real maximum, more of a \"soft cap\")\n\nEach stock has its own unique values for these properties.\n\n## Offline Progression\n\nThe Stock Market does not change or process anything while the game has closed.\nHowever, it does accumulate time when offline.\nThis accumulated time allows the stock market to run `50%` faster when the game is opened again.\nThis means that stock prices will update every ~4 seconds instead of 6.\n"},36565:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a='# Terminal\n\nThe Terminal is a console emulator program that lets you interface with other [Servers](servers.md) in the game.\nIt can be accessed by clicking the `Terminal` tab on the navigation menu on the left-hand side of the game (you may need to expand the \'Hacking\' header in order to see the `Terminal` tab).\nAlternatively, the shortcut Alt + t can be used to open the Terminal.\n\n## Filesystem (Directories)\n\nThe Terminal contains a very basic filesystem to help you organize files into different directories.\nNote that this is **not** a _true_ filesystem implementation and instead relies almost entirely on string manipulation.\nFor this reason, some features found in real-world filesystems do not exist in our Terminal. For example:\n\n- Tab autocompletion does not work with relative paths\n- **`mv` and `rm` commands only accept full filepaths in their arguments.**\n **They do not act on directories.**\n\nThese features are typically in Linux filesystems and have not yet been added to the game.\n\n## Directories\n\nIn order to create a directory, simply name a file using a full absolute Linux-style path:\n\n /scripts/myScript.js\n\nThis will automatically create a "directory" called `scripts`.\nThis will also work for subdirectories:\n\n /scripts/hacking/helpers/myHelperScripts.js\n\nFiles in the root directory do not need to begin with a forward slash:\n\n thisIsAFileInTheRootDirectory.txt\n\nNote that **there is no way to manually create or remove directories.**\nCreation and deletion of "directories" is automatically handled as you create, rename, or delete files in game.\n\n## Absolute vs Relative Paths\n\nMany Terminal commands accept both absolute and relative paths for specifying a file.\n\nAn absolute path specifies the location of the file from the root directory (/).\nAny path that begins with the forward slash is an absolute path:\n\n $ nano /scripts/myScript.js\n $ cat /serverList.txt\n\nA relative path specifies the location of the file relative to the current working directory.\nAny path that does **not** begin with a forward slash is a relative path.\nNote that the Linux-style dot symbols will work for relative paths:\n\n . (a single dot) - represents the current directory\n .. (two dots) - represents the parent directory\n\n $ cd ..\n $ nano ../scripts/myScript.js\n $ nano ../../helper.js\n\nFor additional details about specifying paths and references in scripts, see [Scripts](scripts.md).\n\n## Argument Parsing\n\nWhen evaluating a terminal command, arguments are initially parsed based on whitespace (usually spaces).\nEach whitespace character signifies the end of an argument, and potentially the start of new one.\nFor most terminal commands, this is all you need to know.\n\nWhen running scripts, however, it may be important to know specific detail, especially two main points:\n\n- Quotation marks can be used to wrap a single argument and force it to be parsed as a string.\n Any whitespace inside the quotation marks will not cause a new argument to be parsed.\n- Anything that can represent a number is automatically cast to a number, unless it\'s surrounded by quotation marks.\n\nHere\'s an example to show how these rules work.\nConsider the following script `argType.js`:\n\n export async function main(ns) {\n ns.tprint("Number of args: " + ns.args.length);\n for (var i = 0; i < ns.args.length; ++i) {\n ns.tprint(typeof ns.args[i]);\n }\n }\n\nThen if we run the following terminal command:\n\n $ run argType.js 123 1e3 "5" "this is a single argument"\n\nWe\'ll see the following in the Terminal:\n\n Running script with 1 thread(s), pid 1 and args: [123, 1000, "5", "this is a single argument"].\n argType.js: Number of args: 4\n argType.js: number\n argType.js: number\n argType.js: string\n argType.js: string\n\n## Chaining Commands\n\nYou can run multiple Terminal commands at once by separating each command\nwith a semicolon (;). For example:\n\n $ run foo.js; tail foo.js\n\nChained commands do **not** wait for functions like `hack` or `wget` to finish executing, and so may not always work as expected.\n'},97165:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# World\n\nIn Bitburner, the world consists of six different cities:\n\n- Sector-12 (this is where you start out)\n- Aevum\n- Ishima\n- New Tokyo\n- Chongqing\n- Volhaven\n\nEach city has its own map and [Factions](factions.md).\nEach city also offers different services such as gyms, universities, hardware stores, and places of work.\n"},74135:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Changelog\n\n## v2.5.0 (10/2/2023)\n\n### NOTES\n\n(Corporation) Bugfixes in Corporation may cause a large balance shift for this mechanic.\n\n### API CHANGES:\n\n- ns.print and ns.tprint now handle printing Set and Map objects directly (@ficocelliguy)\n- ns.spawn can now use a configurable delay instead of always 10 seconds (@muesli4brekkies)\n- (Corporation) Added CorporationDivisions property to BitNodeMultipliers interface (@Caldwell-74)\n- (Corporation) Added makesMaterials and makesProducts properties to CorpIndustryData interface (@Caldwell-74)\n- (Corporation) Added issueNewSharesCooldown property to the CorporationInfo interface (@Caldwell-74)\n- (Corporation) Significantly lowered ram cost of all corporation functions (@jjclark1982)\n- (Gang) Added ns.gang.getRecruitsAvailable: Gets the number of additional gang members that can currently be recruited (@myCatsName)\n- (Gang) Added ns.gang.respectForNextRecruit: Gets the respect threshold for recruiting the next gang member (@myCatsName)\n- (Gang) Added ns.gang.renameMember: Renames a gang member (@myCatsName)\n\n### BUGFIX\n\n- Taking a university class no longer gives the player an achievement for working out in a gym (@myCatsName)\n- Bash keybind ctrl-C clears an ongoing terminal history search (@ncharris93)\n- (Corporation): Fix bug in valuation calculation (@yichizhng)\n- (Corporation): Fix bug in share price calculation (@jjclark1982)\n- (Corporation) \"Same sell amount in all cities\" works with Products again (@Caldwell-74)\n- (Hashnet) Buying multiple company favor upgrades at the same time will actually apply them all instead of just one (@aschmider)\n\n### OTHER CHANGES\n\n- MISC: Improved handling of aliases in the Terminal (@ficocelliguy)\n- MISC: Improved error messages for ns.getPurchasedServer (@ficocelliguy)\n- MISC: ns.sleep and ns.asleep now show a formatted time in the script log. (@ficocelliguy)\n- MISC: Fix an exploit that allowed over 100% utilization of a server's ram (@d0sboots)\n- MISC: (Bladeburner / Sleeve) Bladeburner training action is available for sleeves (@Zelow79)\n- MISC: (Gang) Renamed the Territory Warfare mechanic (now referred to as Territory Clashes) to deconflict with the Territory Warfare gang member task (@ficocelliguy)\n- UI: Infiltration now hides tail windows instead of temporarily removing them from the page. This means position/size will remain as they were before the infiltration, and any React content will remain active instead of being unmounted/remounted (@ficocelliguy)\n- UI: Faction augmentation page updates more reliably (@zerbosh)\n- UI: Added a text filter on the Faction Augmentations page (@ficocelliguy)\n- UI: Improved pagination of Active Scripts page (@Ookamiko, @ficocelliguy)\n- UI: Icarus message no longer shows repeatedly for players that are in the endgame (@ficocelliguy)\n- UI: Remove work completion dialogs when performing an augmentation install (@ficocelliguy)\n- UI: Improve soft reset dialog, and always show dialog when soft resetting (@myCatsName)\n- UI: While closing, modals no longer update displayed info and become inert (@Snarling)\n- UI: (Bladeburner) Fix a possible NaN display value in Bladeburner (@zerbosh)\n- UI: (Corporation) Multiple UI improvements for Corporation (@jjclark1982)\n- UI: (Corporation) Tweaked some number formatting to look better in Corp and Stats page (@zerbosh)\n- UI: (Corporation) Market TA no longer has its own dialog box, it's set in the normal sell dialog (@Caldwell-74)\n- UI: (Corporation) Fix an incorrect value in the party dialog box (@aschmider)\n- UI: (Corporation) Improved the descriptions for Corporation states (@Caldwell-74)\n- UI: (Gang) Various UI improvements for Gang (@myCatsName)\n- DOCS: Improve documentation for ports (@muesli4brekkies)\n- DOCS: Updated documentation for ns.tail and ns.getScriptLogs to make it clear a PID can be used (@myCatsName)\n- DOCS: Improve documentation for FilenameOrPID functions (@VictorS)\n- DOCS: Improved various existing ingame documentation pages (@myCatsName)\n- DOCS: (Bladeburner / Gang) Added initial ingame documentation for Bladeburner and Gang (@myCatsName)\n- DOCS: (Bladeburner / Gang) Improve API documentation for Bladeburner and Gang functions (@myCatsName)\n\n## v2.4.1 Update (8/26/23)\n\n### FEATURE ADDITIONS:\n\n- Added \"Enable terminal history search with arrow keys\" option in Misc options category, inspired by similar functionality in shells like zsh. (@ficocelliguy)\n\n### BUGFIX:\n\n- Fixed a bug where buying NeuroFlux Governor would buy one less level than expected (@zerbosh)\n- Fixed an issue that could cause the Coding Contract UI to become unreachable (@myCatsName)\n- Infiltration: Knowledge of Apollo aug no longer highlights the incorrect wires (@Snarling)\n\n### CODEBASE / DOCS / MISC:\n\n- Added a new theme \"zerenity\" (@Zelow79)\n- Reorganize game constants (@zerbosh)\n- Reorganize ingame documentation folder structure, simplify documentation bundling (@Snarling)\n- IP Address coding contract accepts single-quoted entries (@myCatsName)\n- Updated an outdated message on ns.killall logs (@myCatsName)\n- Updated documentation for ns.share and ns.getSharePower (@myCatsName)\n- Removed functions (like ns.getServerRam) are no longer shown when enumerating ns entries. (@Snarling)\n- Removed more references to ReadTheDocs that remained after 2.4.0 (@hydroflame)\n- Fixed some typos/spacing (@myCatsName)\n- Fixed an issue with incorrect React keys in active scripts page (@zornlemma)\n\n### API CHANGES (NON-SPOILER)\n\n- Added ns.stock.getConstants (@Snarling)\n- Added ownedAugs and ownedSF properties to return data of ns.getResetInfo (@Snarling)\n\n### API CHANGES (SPOILERS):\n\n- Added ns.singularity.getAugmentationFactions to provide a list of factions that have a given augmentation (@myCatsName)\n- ns.corporation.getConstants now has a ram cost of 0 (@Snarling)\n\n### OTHER CHANGES (SPOILERS):\n\n- Successes for next level is now accurate in the UI for Bladeburner operations (@myCatsName)\n- ns.sleeve.setToFactionWork no longer allows working for factions the player has not joined (@Snarling)\n\n## v2.4.0 - Death to readthedocs\n\nNETSCRIPT:\n\n- Added ns.getFunctionRamCost\n- Added run and install identifier\n\nCORP:\n\n- Add product investment info to API\n- Prevent issues with invalid materials in warehouse\n- Update exportMaterial amount to `number | string`\n- Validate city with office for starting product development\n\nDOCUMENTATION:\n\n- readthedoc.bitburner.whatever has been fully deprecated.\n That documentation is now available in-game. This will make\n documentation easier to maintain and easier to keep locked\n with the specific version of the game you're playing.\n It's also in `.md`, which is more common than `.rst`\n- Add `printRaw` and `tprintRaw` docs\n- Better docs for `ascension` result\n- Complete the spec for hamming codes enhancement\n- Fix example code for `scp`\n\nMISC.\n\n- Fixed a bug where RAM calculation would be innacurate for near copy of scripts on different servers\n- Fix mislead error message about ram miscalculation when script contains syntax errors.\n- Fix bug in calculating faction donation amount\n- Fix bug where Sleeve would have difficulty doing certain University activities.\n- Fix regression for crime in progress\n- Prevent log scrolling on Active Script window drag\n- show all skills in import save comparison tool\n- Fix extremely minor calculation error where money drained after hack was being floor()\n- Fix ram evaluation to include more edge-cases\n- Fix potential double-free in atExit()\n\nCODEBASE:\n\n- Work on Enum Helper + Reorganise\n- enforce eslint react checks\n- corp code style improvement\n- Added a lot of typesafety\n\n## v2.3.1 - Bugfixes 7 June 2023\n\nNETSCRIPT:\n\n- Added ns.setTitle, which sets the titlebar of a script's tail window (@d0sboots)\n- Added ns.getFunctionRamCost, which gets the ramcost of a function (@G4mingJon4s)\n- ns.ls results will filter as if the filenames have a leading slash (@Snarling)\n\nGENERAL / MISC:\n\n- Changed tail window buttons into icon buttons, allow setting custom title, and tail window bugfixes. (@d0sboots)\n- Terminal no longer scrolls to the bottom constantly while an action is being performed (@bezrodnov)\n- Added a close button to modals (@bezrodnov)\n- Fixed several issues with script editor tabs (@bezrodnov)\n- scp terminal command can copy multiple files at once, like help text indicates (@Snarling)\n- Root directory is no longer displayed as ~ in the terminal prompt, it is displayed as / (@Snarling)\n- cd with no arguments will change to the root directory (@Snarling)\n- Documentation updates (various)\n- Nerf noodle bar\n\nHOTFIXES (these were already backported to 2.3.0 before 2.3.1 release):\n\n- Several important fixes for savegame migration issues from older version (@d0sboots)\n- Prevent scripts from loading during intial migration to 2.3.0 save format, to prevent a crash that could occur. (@Snarling)\n- Fix scp logging (hostname was being logged incorrectly in multiple places and showing as [Object object]) (@Snarling)\n- Update terminal parsing logic so that the old syntax for alias works again. (@Snarling)\n- Fix clickable script links from ls command not working outside root directory (@Snarling)\n- Fix an issue with Find All Valid Math Expressions not accepting empty array when that was the solution. (@Snarling)\n- Fix an issue with scan-analyze display when the player had AutoLink.exe (@Snarling)\n- Reverted undocumented change that program filenames were case sensitive for ns.fileExists. They are case insensitive again. (@Snarling)\n- An issue from pre-2.3 could cause scripts to have the wrong \"server\" property. This caused issues in 2.3, and a fix now repairs any scripts with a mismatched server property. (@Snarling)\n- More fixes to help old savegames load correctly (@Snarling)\n- Servers can no longer have infinite time-to-hack. (@Snarling)\n\nSPOILER SECTIONS:\n\nSF2:\n\n- Overall gang respect gain rate now reads accurately, instead of showing ~10x. (@Snarling)\n\nSF3:\n\n- Added \"maxProducts\" property to ns.corporation.getDivision return value (@kateract)\n- Fixed an issue with sell price parsing for materials (@zerbosh)\n- Fixed display of market price for materials and products (@zerbosh)\n- Fixes for Corp import/export issues, such as -IPROD and Smart Supply not working right (@d0sboots)\n- Improvements to the max-affordable-upgrades calculation (@bezrodnov)\n- Perform additional validation when setting up an export. Exports are now unique per targeted division+city. (@Snarling)\n- ns.corporation.cancelExport no longer requires the exported amount (@Snarling)\n- Fix NaN bug that could impact Robot material in Robotics division (@Snarling, @kateract)\n- Can no longer commence product development in a city with no office (which would immediately error out the game loop) (@Snarling)\n- (Hotfix) Fix issue that could lead to SF3 research desync. (@Snarling)\n- (Hotfix) Fix SF3 \"Spring Water\" industry (@Snarling)\n\nSF4:\n\n- Fixed an issue that could cause singularity run-after-reset callback scripts to not launch correctly (@Snarling)\n\n## v2.3.0 - SF3 rework and performance improvements (25 May 2023)\n\nBREAKING CHANGES: These changes may require changes to your scripts.\n\n- Major changes to the SF3 mechanic. See the related section below for more detailed info on the changes.\n- The same script filename can now be ran multiple times with the same args. If running a script from another script (ns.run/ns.exec/etc), this limitation can be re-imposed with the preventDuplicates RunOption (see general section for info on RunOptions).\n- The same .js script will now be the same js module whether the script was ran directly or used as an import. This means top-level variables (variables defined outside of any function) are shared across all instances of the script.\n- The js module for a script will also be reused by any script that has the exact same compiled text, even if that script is on another server or has a different filename. This can lead to unexpected results when using top-level variables.\n- Some properties removed from ns.getPlayer and added to a separate function ns.getResetInfo. These are still accessible from getPlayer but will produce a warning message the first time they are accessed per game session.\n- hackAnalyzeThreads now returns -1, instead of 0, when no money can be hacked from the targeted server.\n- ns.iKnowWhatImDoing has been removed, replaced by ns.tprintRaw for printing custom react content to the terminal (limited support).\n\nPERFORMANCE:\n\n- Minimize impact of unavoidable memory leak when modules are created, by reusing modules as much as possible (@d0sboots)\n- Internal data structure changes (@d0sboots, @Snarling)\n- Fix memory leak when initializing large number of netscript ports (@Snarling)\n- Improve performance while on the Active Scripts page if many scripts are starting/ending. (@d0sboots)\n\nNETSCRIPT GENERAL:\n\n- Remove requirement for script args to be unique. This was also related to performance improvements. (@d0sboots)\n- ns.hackAnalyzeThreads no longer indicates infinity any time a single thread would hack less than $1 (@Snarling)\n- ns.renamePurchasedServer no longer crashes if player is connected to the server being renamed (@Snarling)\n- ns.hackAnalyzeThreads now return -1 (instead of 0) if no money can be hacked from the targeted server. (@d0sboots)\n- Fix a possible infinite atExit loop if a script killed itself. (@Snarling)\n- Static timestamps of last resets can be obtained via ns.getResetInfo, replacing playtimeSinceLastX from ns.getPlayer (@G4mingJon4s)\n- Improved support for printing react content directly to the terminal (ns.tprintRaw) or to a script log (ns.printRaw).\n- Added RunOptions, which can optionally replace the \"threads\" argument for ns.run/ns.exec/ns.spawn. (@d0sboots)\n - RunOptions.threads: Provide a thread count (since RunOptions can replace the threads argument)\n - RunOptions.temporary: Prevents the script execution from being included in the save file.\n - RunOptions.ramOverride: Provide a static ram cost for the script to override what is calculated by the game. Dynamic ram checking is still enforced.\n - RunOptions.preventDuplicates: Fail to launch the script if the args are identical to a script already running.\n\nGENERAL / MISC:\n\n- Fixed a bug that could cause the overview skill bars to become desynced (@d0sboots)\n- There is now an autoexec setting to specify a script on home to automatically run when loading the game. (@d0sboots)\n- Monaco script editor updated to a newer version and has more config options available now. (@Snarling)\n- Improve Electron's handling of external links (@Snarling)\n- Improved support for ANSI color codes (@d0sboots)\n- Improved consistency of file paths. Correct names for files no longer start with a / even if they are in a directory. (@Snarling)\n- All Math Expressions contract no longer accepts wrong answers (@Snarling)\n- Faction invites now trigger immediately when backdooring a server. (@Snarling)\n- Fixed issue where duplicate programs could be created. (@Minzenkatze)\n- UI improvements to create program page (@Minzenkatze)\n- Fix inconsistency in skill xp to skill level conversion (@hydroflame)\n- Updated blood donation counter to reflect number of confirmed blood donations. (@hydroflame)\n- Minor improvements to ram calculation process (@Snarling)\n- Improved terminal arguments detection (@Snarling)\n- Improved display for ls terminal command. (@Snarling)\n- Added more internal tests and improved test quality (@d0sboots)\n- Various codebase improvements (@Snarling, @d0sboots)\n- Documentation improvements (Many contributors)\n- Nerf noodle bar\n\nSPOILER SECTIONS:\n\nSF2:\n\n- Corrected the \"Next equipment unlock\" text for member upgrades. (@LiamGeorge1999)\n\nSF3:\n\n- Many Corporation API changes, due to functionality changes and due to property name changes. See documentation for correct usage.\n- Can now have multiple divisions within the same industry. (@Mughur)\n- Can now sell a division or sell the entire corporation. (@Mughur)\n- Product quality now depends on material quality (@Mughur)\n- Product price can be set separately per-city (@Mughur)\n- Exports can be set relative to inventory or production (@Mughur)\n- ns.corporation.getProduct is city-specific (@Mughur)\n- Bulk purchasing is available from the start (@Mughur)\n- Can buy multiple upgrades at a time, similar to hacknet node upgrades (@Mughur)\n- Various UI changes (@Mughur)\n- Removed happiness from employees (@Mughur)\n- Coffee renamed to tea (@Mughur)\n- Training position renamed to intern (@Mughur)\n- More options for SmartSupply (@Mughur)\n- Advertising nerf (@Mughur)\n- Nerfed investors and reduced effectiveness of \"fraud\" (@Mughur)\n- Fixed React errors, renamed most corp object properties (@Snarling)\n- Various other changes (@Mughur, @Snarling)\n\nSF4:\n\n- Faction invites trigger immediately when running ns.singularity.getFactionInvitations (@Snarling)\n- Added ns.singularity.getCompanyPositionInfo (@jeek)\n\nSF6:\n\n- Failing a contract or operation now consumes the action (@Zelow79)\n\nSF9:\n\n- The SF9.3 bonus is also given to the player when inside of BN9. (@Zelow79)\n- Adjusted the SF1 bonus for hacknet costs (slight nerf), and raised the SF9 bonus to compensate. (@d0sboots)\n- Added option to purchase company favor using hashes. (@jeek)\n\nSF10:\n\n- Sleeve shock recovery now scales with intelligence. (@Tyasuh)\n- Sleeve kills during crimes count towards numPeopleKilled (@Zelow79)\n- Fix a misspelled moneySourceTracker call for sleeves (@zerbosh)\n- ns.sleeve.getTask return value now includes cyclesNeeded where applicable (@Snarling)\n- Internal type refactoring on Sleeve Work. (@Snarling)\n\nSF12:\n\n- Fix inconsistency in how BN12 multipliers were calculated\n\nSF13:\n\n- Improve performance of Stanek's gift update cycle, and rework (buff) bonus time handling. (@Snarling)\n\n## v2.2.2 - 21 Feb 2023\n\nPLANNED 2.3 BREAKING CHANGES:\n\n- 2.3 will include a large planned rework to corporation. This may cause api breaks for any corporation scripts, and there will be large changes in how the corporation mechanic functions.\n\nNETSCRIPT API:\n\n- Added ns.formatNumber, ns.formatRam, and ns.formatPercent, which allow formatting these types of numbers the same way the game does (@Snarling, See UI section).\n- Deprecated ns.nFormat. Likely to be removed in 2.3. Now just directly wraps numeral.format (@Snarling)\n- EXPERIMENTAL CHANGE (may be reverted next patch): BasicHGWOptions now allows specifying a number of additionalMsec. This should allow easier and more reliable coordination\n of completion times for hack, grow, and weaken. Since this is an experimental change, be prepared for a possible API break next patch if you use this functionality. (@d0sboots)\n\n- Corporation API:\n\n - Fix bugs with ns.corporation.setAutoJobAssignment. (@zerbosh and @croy)\n\n- Formulas API:\n\n - Added ns.formulas.hacking.growThreads function (@d0sboots)\n\n- Sleeve API:\n\n - ns.sleeve.getTask now also includes cyclesWorked for the task types where this applies. (@Zelow79)\n - Added ns.sleeve.setToIdle function (@Zelow79)\n\n- Unsupported API:\n\n - Added ns.printRaw - allows printing custom React content to script logs. Use at your own risk, misuse is very likely to cause a crash. (@d0sboots)\n\nELECTRON (STEAM) VERSION:\n\n- Fix security issue where player scripts were allowed to access any part of the player's filesystem. Now access is limited to the game's 'dist' folder. (@Snarling)\n\nSCRIPTS:\n\n- Fix an issue where multiple copies of the same script could be launched with same args/same server (@Mughur)\n- Followup changes to API wrapping from 2.2.1 changes. (@d0sboots)\n\nUI:\n\n- Add new number formatting code to replace internal use of unmaintained package numeral.js. Added several Numeric Display options. (@Snarling)\n- Removed ingame donation section. (@hydroflame)\n- Improve some bladeburner number formatting (@Zelow79)\n- Added IronMan theme (@MattiYT)\n- Factions that have not been joined yet will show how many unowned augments they have available. (@Zelow79)\n- Added more features to dev menu (@Zelow79 and @Snarling)\n\nCORPORATION:\n\n- Reverted previous change to employee needs. Now they will trend up on their own again. (@d0sboots)\n- Improvements to how Market TA II works (@d0sboots)\n- ns.corporation.getOffice return value now includes a totalExperience property. (@Snarling)\n\nHACKNET:\n\n- Hacknet servers are now named hacknet-server-# instead of hacknet-node-#. (@Tyasuh)\n- Fix bug related to renaming hacknet servers (@Mughur)\n\nGRAFTING:\n\n- Bladeburner augs can be grafted if player is in Bladeburner faction (@Tyasuh)\n\nDOCUMENTATION\n\n- Many documentation updates (@Mughur, @d0sboots, @Snarling, @teauxfu).\n- Official non-markdown docs are at https://github.com/bitburner-official/bitburner-src/tree/dev/src/Documentation/doc\n- Official dev version markdown docs are at https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md\n- Official stable version markdown docs are at https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.ns.md\n- Dev version documentation is now kept up to date as changes are made. (@Snarling)\n\nCODEBASE:\n\n- Updated many dependencies (@d0sboots)\n- Updated lots of the build processes and GitHub workflows. (@Snarling)\n- Internal refactoring of how BitNode multipliers are stored (@d0sboots)\n- Added some extra helper function (useRerender hook, positiveInteger ns argument validator). (@Snarling)\n\nMISC:\n\n- Nerf noodle bar\n\n## v2.2.1 Hotfixes\n\nHotfix / bugfix:\n\n- (@d0sboots) Implemented a new API wrapping solution that prevents the need for binding functions to ns when placing them in a new variable, but maintains and perhaps improves upon the performance gains from the previous v2.2.0 changes.\n- Fixed some issues with savegames failing to load, or causing the main engine loop to stall after load.\n- Fixed an issue where .script files were not receiving the correct args when ran\n- Fixed an issue with sleeve HP calculation\n- Possible fix for MathJax \"Typesetting Failed\" errors\n- There was an issue with Corporations decaying their employees to 0 stats, even though the minimum was supposed to be 5. Moved the variable storing the min decay value to corporation constants, and raised it to 10.\n- Regenerated documentation at https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md due to corporation changes related to min decay stats.\n- Faction XP was unintentionally providing 20x the experience gain as it did prior to v2.0. This caused faction work to exceed gym/university as the optimal way to gain experience. Values have been reduced to only about 2x what they were prior to v2.0, and they are no longer better than gym/university.\n- Fixed an issue where the overview skill bars could be displayed inaccurately based on player multipliers.\n\n## v2.2.0 - Jan 2 2023 Development Reboot\n\nDev notes\n\n- The previous main developer, hydroflame, is stepping back from this project for the foreseeable future. To facilitate this, we've moved the repo to a new location at https://github.com/bitburner-official/bitburner-src.\n- Sorry for the large number of API breaks in this version. To ease the pain here, attempting to use any of the removed functions will provide an error guiding you to the new replacement function to use instead.\n\nBREAKING API CHANGES:\n\n- No longer applicable as of v2.2.1! (ns2 only) ns functions use the 'this' value from ns: if you move the function to its own variable off of ns, it needs to be bound to ns. The internal changes that make this necessary led to very large performance gains for running many scripts at once. e.g.:\n\n const tprint1 = ns.tprint; // This doesn't work and will error out when calling tprint1();\n\n const tprint = ns.tprint.bind(ns); // This works because the 'this' value is preserved.\n\n- ns.getPlayer no longer provides properties tor, inBladeburner, or hasCorporation. This information can be looked up using standlone functions: ns.hasTorRouter(), ns.bladeburner.inBladeburner(), ns.corporation.hasCorporation().\n- Removed many functions, with replacement ways to get the same info.\n\n - getServerRam: use getServerMaxRam and getServerUsedRam instead.\n - corporation.assignJob: use setAutoJobAssignment instead.\n - corporation.getEmployee: No longer available (employees are not individual objects).\n - corporation.getExpandCityCost: use ns.corporation.getConstants().officeInitialCost\n - corporation.getExpandIndustryCost: use getIndustryData instead.\n - corporation.getIndustryTypes: use ns.corporation.getConstants().industryNames\n - corporation.getMaterialNames: use ns.corporation.getConstants().materialNames\n - corporation.getPurchaseWarehouseCost: use ns.corporation.getConstants().warehouseInitialCost\n - corporation.getResearchNames: use ns.corporation.getConstants().researchNames\n - corporation.getUnlockables: use ns.corporation.getConstants().unlockNames\n - corporation.getUpgradeNames: use ns.corporation.getConstants().upgradeNames\n - formulas.work.classGains: split into universityGains and gymGains\n - singularity.getAugmentationCost: use getAugmentationPrice and getAugmentationRepReq instead\n - sleeve.getSleeveStats: use getSleeve instead\n - sleeve.getInformation: use getSleeve instead\n\n- An error dialog will inform the player of the above API changes if the player tries to use one of the removed functions above.\n- enums.toast was renamed ToastVariant to provide consistency with internal code.\n\n- codingcontract.attempt always returns a string (empty string for a failed attempt). This may break player code if a direct boolean comparison (e.g. 'attemptResult === true') was being made. The string can be used directly as the conditional, because empty string evaluates to false as a boolean.\n\n- corporation.getCorporation().divisions now returns an array of division names, instead of division objects. Use corporation.getDivision(name) to get the division info object.\n\nDEVELOPMENT\n\n- Development repo moved to https://github.com/bitburner-official/bitburner-src\n- Dev version available on web at https://bitburner-official.github.io/bitburner-src/\n- Development is active again for non-bugfix.\n- A bunch of fixes, setup, and assistance related to moving to a new repo (@hydroflame)\n\nTUTORIAL\n\n- Removed NS1/NS2 selection. Tutorial now only references .js files (NS1 is essentially deprecated) (@Mughur)\n- Fix Ram Text (by @jaculler)\n\nNETSCRIPT\n\n- Base NS API:\n - More enums and more types are exposed to the player instead of \"magic strings\", as type documentation and on ns.enums.\n - Added ns.pid property to access a script's PID without a function call. (@jeek)\n - Much faster API wrapping on script launch. (@d0sboots) To support this, ns functions need to keep their \"this\" value from their parent object.\n - tFormat: Fix display for negative time\n - ns.getPlayer: removed tor, inBladeburner, and hasCorporation properties\n - Added ns.hasTorRouter() function.\n- Coding Contract API\n - ns.codingcontract.attempt always returns a string. (@Snarling)\n- Corporation API\n - Removed ns.corporation.getEmployee and ns.corporation.assignJob, due to employees no longer being objects.\n - Added ns.corporation.hasCorporation()\n - Reworked how ram costs are applied for corporation.\n- Formulas API\n - ns.formulas.work.classGains removed, replaced with ns.formulas.work.universityGains and ns.formulas.work.gymGains (@Snarling)\n - Add ns.formulas.work.companyGains function (@AlexeyKozhemiakin)\n- Ports\n - added portHandle.nextWrite() (@LJNeon)\n - Make ns.writePort synchronous (@Snarling)\n- Sleeve API\n - ns.sleeve.getSleeve added. getPlayer and getSleeve can both be used for formulas. (@Snarling)\n - getSleeve also includes storedCycles (i.e. bonusTime) (@zerbosh)\n- Stock API\n - ns.stock.getOrganization added for getting org from stock symbol (@SamuraiNinjaGuy)\n\nSCRIPTS\n\n- Fixed bug where zombie scripts could be created after a soft reset (@Snarling)\n- Scripts now have a maximum ram cost of 1024GB per thread.\n\nSCRIPT LOGS\n\n- Add ctrl-a support for selecting all text in tail window (@Snarling)\n\nCORPORATION\n\n- Remove corp employees as objects (by @Kelenius)\n- API access is provided automatically if the player is in BN3. (@zerbosh)\n- Happiness/Energy/Morale trend down even for productive corps (by @Snarling)\n- Typo fixes in modals to sell materials and products (by @quacksouls)\n- Reworked MP formula validation to prevent possible save corruption on invalid entry (by @Snarling)\n- Internal reorganization of Industry data (by @Snarling)\n- Added check to material buy amount (by @G4mingJon4s)\n- Check there is room to make a new product before opening popup. (by @G4mingJon4s)\n- Fix typos in research descriptions (by @quacksouls)\n\nSLEEVE\n\n- Fixed inconsistencies in how sleeve work rewards are handled. (by @Snarling)\n- Fix bug that prevented selecting some crimes from UI. (by @Snarling)\n- Internally shock starts at 100 and lowers to 0. Previously this was backwards.\n\nSTOCKMARKET\n\n- Fix broken initializer when manually buying WSE access (by @Snarling)\n\nTERMINAL\n\n- Added changelog command to re-display the changelog dialog.\n- Connect command will connect to player owned servers from anywhere. (by @Snarling)\n\nUI\n\n- Improve UI performance of sidebar and character overview using memoization (@d0sboots)\n- Other UI additions / improvements (@Mughur, @d0sboots, probably others)\n- Fixed spacing of text in Trade for reputation button after Infiltration (by @PyroGenesis)\n- Fix spacing on ANSI background escape codes (by @Snarling)\n- Fix several instances where newlines were not being displayed properly (by @quacksouls)\n- SoftResetButton.tsx Tooltip changed to make more sense (by @rai68)\n- GANG: Fix Gang UI to correctly report the bonus time multiplier as 25x (by @TheMas3212)\n- Change formatting for skill levels to use localeStr (@G4mingJon4s)\n\nDOC\n\n- Fix incorrect examples for grow (by @quacksouls)\n- Updated limitMaterialProduction() and limitProductProduction() documentation to mention removing limits. (by @PyroGenesis)\n- Add ns documentation for possible sleeve tasks (by @Snarling)\n- Update documentation for workForFaction and workForCompany (by @quacksouls)\n- Improve CCT documentation for HammingCodes (by @quacksouls)\n- cleanup in doc of Netscript functions (by @quacksouls)\n- Various other doc fixes (by @quacksouls)\n- Update documentation for ns.args (by @Snarling)\n- De-uglify ns.print examples (by @LJNeon)\n\nSTATS\n\n- Fix logic for increasing HP based on defense skill levels (by @mattgarretson)\n- Fix a bug where HP could be something other than max after a bitnode reset.\n\nINFILTRATION\n\n- Fix SlashGame scaling. (by @Snarling)\n\nGANG\n\n- When starting a gang, any in progress work with that faction will end. (@G4mingJon4s)\n\nMISC\n\n- Lots of typesafety improvements with internal code\n- Remove google analytics (@hydroflame)\n- Some error handling streamlining (by @Snarling)\n- fix: check both ts and js source now (by @Tanimodori)\n- chore: sync version in package-lock.json (by @Tanimodori)\n- Better safety when loading game for multiple save corruption issues (by @Snarling)\n- Nerf Noodle bar\n\n## v2.1.0 - 2022-09-23 Remote File API\n\nDev note\n\n- The most important change about this update is the introduction of the Remote File API (RFA).\n With this we also deprecate the HTTP file API and the Visual Studio extension. Those things\n were made during the rush of Steam and aren't well thought out. This new process works with\n both the web and Steam version of the game and every text editor. Moving forward we also\n won't be doing much, if any, upgrades to the in-game editor. We think it's good enough for\n now and if you need more we recommend you hook up your favorite external editor.\n\n--- NEW FEATURES ---\n\n- New Remote File API for transmitting files to the game (by @Hoekstraa)\n- Added a new Augmentation, Z.O.Ë., which allows Sleeves to benefit from Stanek.\n\n--- FIXES ---\n\nAPI\n\n- Remove incorrectly placed 's' in ns.tFormat() (by @LJNeon)\n- More ports (previously max 20, now practically unlimited) (by @Hoekstraa)\n- Corp functions now return copy of constant arrays instead of the original (by @Mughur)\n- All the player sub-objects need to be copied for `getPlayer`. (by @MageKing17)\n- add corp get functions, UI (by @Mughur)\n- destroyW0r1dD43m0n now properly gives achievements\n- favor now properly syncs across pages and the Donate achievement is now given correctly (by @Aerophia)\n- getCrimeStats use bitnode multipliers in the output of crime stats (by @phyzical)\n- add singularity function for exporting game save back (by @phyzical)\n\nCODING CONTRACTS\n\n- inconsistent probability for generation between online and offline (by @quacksouls)\n- Don't stringify answer if already a string (by @alainbryden)\n- change input handling for contract attempts (by @Snarling)\n\nCORPORATION\n\n- Bunch of corporation fixes (by @Mughur)\n- Gave investors some economics classes (by @Mughur)\n- Limit shareholder priority on newly issued shares (by @Undeemiss)\n- dont take research points for something already researched via api (by @phyzical)\n\nCORPORATION API\n\n- Fix up param order for limitProductProduction to match docs (by @phyzical)\n- Expose exports from Material (by @Rasmoh)\n\nDOCUMENTATION\n\n- update docs a bit more, amending some BN and SF texts (by @Mughur)\n- Fixed Argument order for scp() (by @njalooo)\n- Some typo fixes in Netscript functions (by @quacksouls)\n- Why use Coding Contract API (by @quacksouls)\n- typo fix in description of Caesar cipher (by @quacksouls)\n- typo fix in terminal.rst (by @BugiDev)\n- Update bitburner.sleeve.settobladeburneraction.md (by @borisflagell)\n- Correct documentation for `run()` with 0 threads. (by @MageKing17)\n- Some doc updates (by @Mughur)\n- fix documentation for remote api (by @hydroflame)\n\nNETSCRIPT\n\n- Added functions to resize, move, and close tail windows\n- ns.exit now exits immediately (by @Snarling)\n- Fix dynamic ram check (by @Snarling)\n- ns1 wraps deeper layers correctly. (by @Snarling)\n- Prevent bladeburner.setActionLevel from setting invalid action levels (by @MPJ-K)\n- Typo fixes in CodingContract, Hacknet, Singularity APIs (by @quacksouls)\n- Fix a typo in doc of Singularity.travelToCity() (by @quacksouls)\n- Update netscript definition file for scp, write, read, and flags (by @Snarling)\n- Correct missing ! for boolean coercion in Corporation.createCorporation(). (by @Risenafis)\n- Normalized Stock API logging (by @Snarling)\n- allow null duration in toast ns function (by @RollerKnobster)\n- Correct missing `!` for boolean coercion in `singularity.workForCompany()`. (by @MageKing17)\n- ns.scp and ns.write are now synchronous + fix exec race condition (by @Snarling)\n- atExit now allows synchronous ns functions (by @Snarling)\n- Improve real life CPU and memory performance of scripts. (by @Snarling)\n- Prompt Add user friendly message to avoid throwing recovery screen for invalid choices (by @phyzical)\n- Rerunning a script from tail window recalculates ram usage (by @Snarling)\n- The correct script will be closed even if the player modifies args (v2.0) (by @Snarling)\n- Corrected ns formula for infiltration rewards (by @ezylot)\n- Add singularity check for finishing company work (by @Snarling)\n\nSLEEVES\n\n- Allow using the regeneration chamber with sleeves to heal them. (by @coderanger)\n- fix crash when player tries to assign more than 3 sleeves to Bladeburner contracts (by @Snarling)\n- Sleeves no longer crash when player quits company sleeve was working (by @Snarling)\n- Sleeve crime gain bitnode multiplier fix (by @Mughur)\n\nREMOTE FILE API\n\n- NetscriptDefinitions retains export strings (by @Hoekstraa)\n- Fix type of RFAMessages with non-String results (by @Hoekstraa)\n\nUI\n\n- add a setting to display middle time unit in Time Elapsed String (by @hydroflame)\n- fix incorrect experience display in Crime UI. (by @SilverNexus)\n- Bitnode stats now show if BB/Corporation are disabled (by @Kelenius)\n- Removed three empty lines from BB status screen (by @Kelenius)\n- Add missing space to BN7 description (by @hex7cd)\n- Improvements to crime work UI (by @Kelenius)\n- Script Editor more responsive on resize, and fix dirty file indicator (by @Snarling)\n\nMISC\n\n- Added weight to GangMemberTask construction call (by @ezylot)\n- Fix ANSI display bugs (by @Snarling)\n- Debounce updateRAM calls in script editor. (by @Snarling)\n- Allow characters & and ' in filenames (by @Snarling)\n- Corrected tutorial text (by @mihilt)\n- Fix infil definitions.d.ts (by @phyzical)\n- Modify PR template (by @Hoekstraa)\n- crime gains, sleeve gang augs and faq (by @Mughur)\n- Preventing server starting security level from going above 100 (by @Shiiyu)\n- Adds Shadows of Anarchy (by @Lagicrus)\n- Added intormation about hacking managers to hacking algorithms page (by @Kelenius)\n- Fix Jest CI Error (by @geggleto)\n- multiple hasAugmentation checks didn't check if the augment was installed (by @Mughur)\n- & (by @G4mingJon4s)\n- Adds info regarding augments and focus (by @Lagicrus)\n- Removed console.log line (by @dhosborne)\n- Update some doc (by @hydroflame)\n- trying to fix int problems (by @hydroflame)\n- Fix broken ns filesnames (by @hydroflame)\n- new formula functions (by @hydroflame)\n- test fixes/md updates (by @phyzical)\n- Remove \"based\" from positive adjectives in infiltrations (by @faangbait)\n- minor fix in instance calculation (by @hydroflame)\n- fix dynamic ram miscalc not triggering (by @hydroflame)\n- Refactor game options into separate components (by @hydroflame)\n- fix settings unfocusing on every key stroke (by @hydroflame)\n- fix some stuff with the timestamp settings (by @hydroflame)\n- Fix unique key problem with ascii elements (by @hydroflame)\n- Improve wrong arg user message and add ui.windowSize (by @hydroflame)\n- fix stack trace missing in some errors (by @hydroflame)\n- Fix scp and write in ns1 (by @hydroflame)\n- Did some changes of the remote api and added documentation (by @hydroflame)\n- Add dummy function to generate a mock server or player for formulas stuff (by @hydroflame)\n- fix compile error (by @hydroflame)\n- regen doc (by @hydroflame)\n- rm console log (by @hydroflame)\n- regen doc (by @hydroflame)\n- Added more info about blood program, change some aug descriptions (by @hydroflame)\n- use triple equal (by @hydroflame)\n- Minor improvements to Netscript Port loading and unloading (by @hydroflame)\n- Fix hostname generation being weird about dash 0 added (by @hydroflame)\n- upgrade version number. (by @hydroflame)\n- Nerf noodle bar.\n\n## v2.0.0 - 2022-07-19 Work rework\n\nAPI break rewards\n\n- Everyone is awarded 10 NFG.\n- All work in progress program is auto completed.\n- All work in progress crafting is auto completed without adding entropy.\n\n Work (Create program / Work for faction / Studying / etc ...)\n\n- Working has been rebuilt from the grounds up. The motivation for that change is that all\n different types of work all required different cached variables on the main Player object.\n This caused a lot of bugs and crashes. It's been reworked in such a way as to prevent bugs\n and make it nearly trivial to add new kinds of work. However, since this caused a few API break\n I've decided to mark this version following semver protocols and call it 2.0.0\n- Crime can be unfocused and auto loops, no more spam clicking.\n- All work type give their reward immediately. No need to stop work to bank rewards like reputation.\n- Faction and Company work no longer have a time limit.\n- Company work no longer reduces rep gain by half for quitting early.\n- Company faction require 400k rep to join (from 200k)\n- Backdooring company server reduces faction requirement to 300k.\n- All work generally no longer keep track of cumulative gains like exp and reputation since it's applied instantly.\n- getPlayer returns way less fields but does return the new 'currentWork' field, some fields are moved around.\n\nAPI breaks\n\n- workForCompany argument 'companyName' is now not-optional\n- commitCrime now has 'focus' optional parameter\n- using getScriptIncome to get total income has been separated to getTotalScriptIncome.\n- using getScriptExpGain to get total income has been separated to getTotalScriptExpGain.\n- scp has it's 2 last argument reversed, the signature is now (files, destination, optional_source)\n- ns.connect and other singularity function are no longer available at the top level.\n They were already hidden from documentation but now they're gone.\n- stock.buy and stock.sell were renamed to stock.buyStock and stock.sellStock because 'buy' and 'sell'\n are very common tokens.\n- corporation.bribe no longer allows to give shares as bribe.\n\n Netscript\n\n- Add singularity.getCurrentWork\n- Add singularity.getAugmentationBasePrice\n- Add sleeve.getSleeveAugmentationPrice\n- Add sleeve.getSleeveAugmentationRepReq\n- Fix infiltration.getInfiltrationLocations\n- Singularity.goToLocation support for non-city-specific locations (@Ansopedian)\n- All corporation functions are synchronous. Job assignment only works on the following cycle. (@stalefishies)\n- Add batch functionality to NS spendHashes API (@undeemiss)\n- Fix #3661 Add missing memory property to Sleeve API (@borisflagell)\n- FIX#3732 Cannot assign two sleeve on \"Take on contracts\" regardless of contract type. (@borisflagell)\n\n Corporation\n\n- Dividend fixes and exposing dividends info via scripts (@stalefishies)\n- Add big number format support in some Corporation's modal (@borisflagell)\n- Fix #3261 Industry overview number formatting (@nickofolas)\n\n Multipliers\n\n- The main player object was also plagues with a million fields all called '\\*\\_mult'. Representing the different multipliers\n- These have been refactored in a field called 'mults'.\n\n Misc.\n\n- #3596 Enhanced terminal command parsing (@RevanProdigalKnight)\n- Fix #3366 Sleeve UI would sometimes displays the wrong stat while working out. (@borisflagell)\n- Two new encryption themed contracts - caesar and vigenere (@Markus-D-M)\n- Fixes #3132 several Sleeve can no longer works concurrently in the same company (@borisflagell)\n- FIX #3514 Clear recently killed tab on BN end event (@Daniel-Barbera)\n- HammingCodes description and implementation fixes (@s2ks)\n- FIX #3794 Sleeve were getting less shocked when hospitalized (was positive, should have detrimental) (@borisflagell)\n- Fix #3803 Servers can no longer have duplicate IPs (@crimsonhawk47)\n- Fix #3854 ctrl+c does not clear terminal input (@evil-tim)\n- Nerf noodle bar, obviously.\n\n## v1.6.3 - 2022-04-01 Few stanek fixes\n\nStanek Gift\n\n- Has a minimum size of 2x3\n- Active Fragment property 'avgCharge' renamed to 'highestCharge'\n- Formula for fragment effect updated to make 561% more sense.\n Now you can charge to your heart content.\n- Logs for the 'chargeFragment' function updated.\n\n Misc.\n\n- Nerf noodle bar.\n\n## v1.6.0 - 2022-03-29 Grafting\n\n** Vitalife secret lab **\n\n- A new mechanic called Augmentation Grafting has been added. Resleeving has been removed.\n- Credit to @nickofolas for his incredible work.\n\n** Stanek **\n\n- BREAKING: Many functions in the stanek API were renamed in order to avoid name collision with things like Map.prototype.get\n\n** UI **\n\n- Major update to Sleeve, Gang UI, and Create Program (@nickofolas)\n- re-add pre tags to support slash n in prompt (@jacktose)\n- Tabelize linked output of 'ls' (@Master-Guy)\n- Add the ability to filter open scripts (@phyzical)\n- Add minHeight to editor tabs (@nickofolas)\n- Properly expand gang equipment cards to fill entire screen (@nickofolas)\n- Add shortcut to Faction augmentations page from FactionsRoot (@nickofolas)\n- Fix extra space on editor tabs (@nickofolas)\n- Present offline message as list (@DSteve595)\n- add box showing remaining augments per faction (@jjayeon)\n- Add tab switching support to vim mode (@JParisFerrer)\n- Show current task on gang management screen (@zeddrak)\n- Fix for ui of gang members current task when set via api (@phyzical)\n- Don't hide irrelevant materials if their stock is not empty and hide irrelevant divisions from Export (@SagePtr)\n- Fix regex to enable alpha transparency hex codes (8 digits) (@surdaft)\n\n** API **\n\n- Added dark web functions to ns api\n- BREAKING: purchaseTor() should returns true if player already has Tor. (@DavidGrinberg, @waffleattack)\n- Implement getBonusTime in Corporation API (@t-wolfeadam)\n- Added functions to purchase TIX and WSI (@incubusnb)\n- purchaseSleeveAug checks shock value (@incubusnb)\n- Fix bug with hacknet api\n- Fix spendHashes bug\n- Added 0 cost of asleep() (@Master-Guy)\n- Fix some misleading corporation errors (@TheRealMaxion)\n- expose the inBladeburner on the player object (@phyzical)\n- added ram charge for stanek width and height (@phyzical)\n- Fix sufficient player money check to buy back shares. (@ChrissiQ)\n- Fix Static Ram Circumventing for some NS functions (@CrafterKolyan)\n- added CorporationSoftCap to NetscriptDefinitions (@phyzical)\n- Added definition of autocomplete() 'data' argument. (@tigercat2000)\n- Adding support for text/select options in Prompt command (@PhilipArmstead)\n- Added the ability to exportGame via api (@phyzical)\n\n** Arcade **\n\n- Added an arcade to New Tokyo where you can play a 4 year old version of bitburner.\n\n** Misc. **\n\n- Add a warning triggered while auto-saves are off. (@MartinFournier)\n- Log info for field analysis now displays actual rank gained. (@ApamNapat)\n- Removed BladeburnerSkillCost from skill point cost description. (@ApamNapat)\n- Fix handling for UpArrow in bladeburner console. (@dowinter)\n- Add GitHub action to check PRs for generated files. (@MartinFournier)\n- Cap Staneks gift at 25x25 to prevent crashes. (@waffleattack)\n- Remove old & unused files from repository. (@MartinFournier)\n- Factions on the factions screens are sorted by story progress / type. (@phyzical)\n- Fix log manager not picking up new runs of scripts. (@phyzical)\n- Added prettier to cicd.\n- UI improvements (@phyzical)\n- Documentation / Typos (@nanogyth, @Master-Guy, @incubusnb, @ApamNapat, @phyzical, @SagePtr)\n- Give player code a copy of Division.upgrades instead of the live object (@Ornedan)\n- Fix bug with small town achievement.\n- Fix bug with purchaseSleeveAug (@phyzical)\n- Check before unlocking corp upgrade (@gianfun)\n- General codebase improvements. (@phyzical, @Master-Guy, @ApamNapat)\n- Waiting on promises in NS1 no longer freezes the script. (@Master-Guy)\n- Fix bug with missing ramcost for tFormat (@TheMas3212)\n- Fix crash with new prompt\n- Quick fix to prevent division by 0 in terminal (@Master-Guy)\n- removed ip references (@phyzical, @Master-Guy)\n- Terminal now supports 'ls -l'\n- Fix negative number formatting (@Master-Guy)\n- Fix unique ip generation (@InDieTasten)\n- remove terminal command theme from docs (@phyzical)\n- Fix 'Augmentations Left' with gang factions (@nickofolas)\n- Attempt to fix 'bladeburner.process()' early routing issue (@MartinFournier)\n- work in progress augment fix (@phyzical)\n- Fixes missing space in Smart Supply (@TheRealMaxion)\n- Change license to Apache 2 with Commons Clause\n- updated regex sanitization (@mbrannen)\n- Sleeve fix for when faction isnt found (@phyzical)\n- Fix editor \"close\" naming (@phyzical)\n- Fix bug with sleeves where some factions would be listed as workable. (@phyzical)\n- Fix research tree of product industries post-prestige (@pd)\n- Added a check for exisiting industry type before expanding (@phyzical)\n- fix hackAnalyzeThreads returning infinity (@chrisrabe)\n- Make growthAnalyze more accurate (@dwRchyngqxs)\n- Add 'Zoom -> Reset Zoom' command to Steam (@smolgumball)\n- Add hasOwnProperty check to GetServer (@SagePtr)\n- Speed up employee productivity calculation (@pd)\n- Field Work and Security Work benefit from 'share' (@SagePtr)\n- Nerf noodle bar.\n\n## v1.5.0 - Steam Cloud integration\n\n** Steam Cloud Saving **\n\n- Added support for steam cloud saving (@MartinFournier)\n\n** UI **\n\n- background now matches game primary color (@nickofolas)\n- page title contains version (@MartinFourier)\n- Major text editor improvements (@nickofolas)\n- Display bonus time on sleeve page (@MartinFourier)\n- Several UI improvements (@nickofolas, @smolgumball, @DrCuriosity, @phyzical)\n- Fix aug display in alpha (@Dominik Winter)\n- Fix display of corporation product equation (@SagePtr)\n- Make Bitverse more accessible (@ChrissiQ)\n- Make corporation warehouse more accessible (@ChrissiQ)\n- Make tab style more consistent (@nickofolas)\n\n** Netscript **\n\n- Fix bug with async.\n- Add 'printf' ns function (@Ninetailed)\n- Remove blob caching.\n- Fix formulas access check (@Ornedan)\n- Fix bug in exp calculation (@qcorradi)\n- Fix NaN comparison (@qcorradi)\n- Fix travelToCity with bad argument (@SlyCedix)\n- Fix bug where augs could not be purchased via sing (@reacocard)\n- Fix rounding error in donateToFaction (@Risenafis)\n- Fix bug with weakenAnalyze (@rhobes)\n- Prevent exploit with atExit (@Ornedan)\n- Double 'share' power\n\n** Corporations **\n\n- Fix bugs with corp API (@pigalot)\n- Add smart supply func to corp API (@pd)\n\n** Misc. **\n\n- The file API now allows GET and DELETE (@lordducky)\n- Force achievement calculation on BN completion (@SagePtr)\n- Cleanup in repository (@MartinFourier)\n- Several improvements to the electron version (@MartinFourier)\n- Fix bug with casino roulette (@jamie-mac)\n- Terminal history persists in savefile (@MartinFourier)\n- Fix tests (@jamie-mac)\n- Fix crash with electron windows tracker (@smolgumball)\n- Fix BN6/7 passive reputation gain (@BrianLDev)\n- Fix Sleeve not resetting on install (@waffleattack)\n- Sort joined factions (@jjayeon)\n- Update documentation / typo (@lethern, @Meowdoleon, @JohnnyUrosevic, @JosephDavidTalbot,\n @pd, @lethern, @lordducky, @zeddrak, @fearnlj01, @reasonablytall, @MatthewTh0,\n @SagePtr, @manniL, @Jedimaster4559, @loganville, @Arrow2thekn33, @wdpk, @fwolfst,\n @fschoenfeldt, @Waladil, @AdamTReineke, @citrusmunch, @factubsio, @ashtongreen,\n @ChrissiQ, @DJ-Laser, @waffleattack, @ApamNapat, @CrafterKolyan, @DSteve595)\n- Nerf noodle bar.\n\n## v1.4.0 - 2022-01-18 Sharing is caring\n\n** Computer sharing **\n\n- A new mechanic has been added, it's is invoked by calling the new function 'share'.\n This mechanic helps you farm reputation faster.\n\n** gang **\n\n- Installing augs means losing a little bit of ascension multipliers.\n\n** Misc. **\n\n- Prevent gang API from performing actions for the type of gang they are not. (@TheMas3212)\n- Fix donation to gang faction. (@TheMas3212)\n- Fix gang check crashing the game. (@TheMas3212)\n- Make time compression more robust.\n- Fix bug with scp.\n- Add zoom to steam version. (@MartinFourier)\n- Fix donateToFaction accepts donation of NaN. (@woody-lam-cwl)\n- Show correct hash capacity gain on cache level upgrade tooltip. (@woody-lam-cwl)\n- Fix tests (@woody-lam-cwl)\n- Fix cache tooltip (@woody-lam-cwl)\n- Added script to prettify save file for debugging (@MartinFourier)\n- Update documentation / typos (@theit8514, @thadguidry, @tigercat2000, @SlyCedix, @Spacejoker, @KenJohansson,\n @Ornedan, @JustAnOkapi, @nickofolas, @philarmstead, @TheMas3212, @dcragusa, @XxKingsxX-Pinu,\n @paiv, @smolgumball, @zeddrak, @stinky-lizard, @nickofolas, @Feodoric, @daanflore,\n @markusariliu, @mstruebing, @erplsf, @waffleattack, @Dexalt142, @AIT-OLPE, @deathly809, @BuckAMayzing,\n @MartinFourier, @pigalot, @lethern)\n- Fix BN3+ achievement (@SagePtr)\n- Fix reputation carry over bug (@TheMas3212)\n- Add button to exit infiltrations (@TheMas3212)\n- Add dev menu achievement check (@TheMas3212)\n- Add 'host' config for electron server (@MartinFourier)\n- Suppress save toast only works for autosave (@MartinFourier)\n- Fix some achievements not triggering with 'backdoor' (@SagePtr)\n- Update Neuroflux Governor description.\n- Fix bug with electron server.\n- Fix bug with corporation employee assignment function (@Ornedan)\n- Add detailed information to terminal 'mem' command (@MartinFourier)\n- Add savestamp to savefile (@MartinFourier)\n- Dev menu can apply export bonus (@MartinFourier)\n- Icarus message no longer applies on top of itself (@Feodoric)\n- purchase augment via API can no longer buy Neuroflux when it shouldn't (@Feodoric)\n- Syntax highlighter should be smarter (@neuralsim)\n- Fix some miscalculation when calculating money stolen (@zeddrak)\n- Fix max cache achievement working with 0 cache (@MartinFourier)\n- Add achievements in the game, not just steam (@MartinFourier)\n- Overflow hash converts to money automatically (@MartinFourier)\n- Make mathjax load locally (@MartinFourier)\n- Make favor calculation more efficient (@kittycat2002)\n- Fix some scripts crashing the game on startup (@MartinFourier)\n- Toasts will appear above tail window (@MartinFourier)\n- Fix issue that can cause terminal actions to start on one server and end on another (@MartinFourier)\n- Fix 'fileExists' not correctly matching file names (@TheMas3212)\n- Refactor some code to be more efficient (@TheMas3212)\n- Fix exp gain for terminal grow and weaken (@nickofolas)\n- Refactor script death code to reject waiting promises instead of resolving (@Ornedan)\n- HP recalculates on defense exp gain (@TheMas3212)\n- Fix log for ascendMember (@TheMas3212)\n- Netscript ports clear on reset (@TheMas3212)\n- Fix bug related to company (@TheMas3212)\n- Fix bug where corporation handbook would not be correctly added (@TheMas3212)\n- Servers in hash upgrades are sorted alpha (@MartinFourier)\n- Fix very old save not properly migrating augmentation renamed in 0.56 (@MartinFourier)\n- Add font height and line height in theme settings (@MartinFourier)\n- Fix crash when quitting job (@MartinFourier)\n- Added save file validation system (@TheMas3212)\n- React and ReactDOM are now global objects (@pigalot)\n- 'nano' supports globs (@smolgumball)\n- Character overview can be dragged (@MartinFourier)\n- Job page updates in real time (@nickofolas)\n- Company favor gain uses the same calculation as faction, this is just performance\n the value didn't change (@nickofolas)\n- ns2 files work with more import options (@theit8514)\n- Allow autocomplete for partial executables (@nickofolas)\n- Add support for contract completion (@nickofolas)\n- 'ls' link are clickable (@smolgumball)\n- Prevent steam from opening external LOCAL files (@MartinFourier)\n- Fix a bug with autocomplete (@Feodoric)\n- Optimise achievement checks (@Feodoric)\n- Hacknet server achievements grant associated hacknet node achievement (@Feodoric)\n- Fix display bug with hacknet (@Feodoric)\n- 'analyze' now says if the server is backdoored (@deathly809)\n- Add option to exclude running script from save (@MartinFourier)\n- Game now catches more errors and redirects to recovery page (@MartinFourier)\n- Fix bug with autocomplete (@nickofolas)\n- Add tooltip to unfocus work (@nickofolas)\n- Add detailst overview (@MartinFourier)\n- Fix focus bug (@deathly809)\n- Fix some NaN handling (@deathly809)\n- Added 'mv' ns function (@deathly809)\n- Add focus argument to some singularity functions (@nickofolas)\n- Fix some functions not disabling log correctly (@deathly809)\n- General UI improvements (@nickofolas)\n- Handle steamworks errors gravefully (@MartinFourier)\n- Fix some react component not unmounting correctly (@MartinFourier)\n- 'help' autocompletes (@nickofolas)\n- No longer push all achievements to steam (@Ornedan)\n- Recovery page has more information (@MartinFourier)\n- Added 'getGameInfo' ns function (@MartinFourier)\n- SF3.3 unlocks all corp API (@pigalot)\n- Major improvements to corp API (@pigalot)\n- Prevent seed money outside BN3 (@pigalot)\n- Fix bug where using keyboard shortcuts would crash if the feature is not available (@MartinFourier)\\\n- Sidebar remains opened/closed on save (@MartinFourier)\n- Added tooltip to sidebar when closed (@MartinFourier)\n- Fix bug where Formulas.exe is not available when starting BN5 (@TheMas3212)\n- Fix CI (@tvanderpol)\n- Change shortcuts to match sidebar (@MartinFourier)\n- Format gang respect (@attrib)\n- Add modal to text editor with ram details (@nickofolas)\n- Fix several bugs with singularity focus (@nickofolas)\n- Nerf noodle bar.\n\n## v1.3.0 - 2022-01-04 Cleaning up\n\n** External IDE integration **\n\n- The Steam version has a webserver that allows integration with external IDEs.\n A VSCode extension is available on the market place. (The documentation for the ext. isn't\n written yet)\n\n** Source-Files **\n\n- SF4 has been reworked.\n- New SF -1.\n\n** UI **\n\n- Fix some edge case with skill bat tooltips (@MartinFournier)\n- Made some background match theme color (@Kejikus)\n- Fix problem with script editor height not adjusting correctly (@billyvg)\n- Fix some formatting issues with Bladeburner (@MartinFournier, @nickofolas)\n- Fix some functions like 'alert' format messages better (@MageKing17)\n- Many community themes added.\n- New script editor theme (@Hedrauta, @Dexalt142)\n- Improvements to tail windows (@theit8514)\n- Training is more consise (@mikomyazaki)\n- Fix Investopedia not displaying properly (@JotaroS)\n- Remove alpha from theme editor (@MartinFournier)\n- Fix corporation tooltip not displaying properly (@MartinFournier)\n- Add tooltip on backdoored location names (@MartinFournier)\n- Allow toasts to be dismissed by clicking them (@nickofolas)\n- Darkweb item listing now shows what you own. (@hexnaught)\n\n** Bug fix **\n\n- Fix unit tests (@MartinFournier)\n- Fixed issue with 'cat' and 'read' not finding foldered files (@Nick-Colclasure)\n- Buying on the dark web will remove incomplete exe (@hexnaught)\n- Fix bug that would cause the game to crash trying to go to a job without a job (@hexnaught)\n- purchaseServer validation (@nickofolas)\n- Script Editor focuses code when changing tab (@MartinFournier)\n- Fix script editor for .txt files (@65-7a)\n- Fix 'buy' command not displaying correctly. (@hexnaught)\n- Fix hackAnalyzeThread returning NaN (@mikomyazaki)\n- Electron handles exceptions better (@MageKing17)\n- Electron will handle 'unresponsive' event and present the opportunity to reload the game with no scripts (@MartinFournier)\n- Fix 'cp' between folders (@theit8514)\n- Fix throwing null/undefined errors (@nickofolas)\n- Allow shortcuts to work when unfocused (@MageKing17)\n- Fix some dependency issue (@locriacyber)\n- Fix corporation state returning an object instead of a string (@antonvmironov)\n- Fix 'mv' overwriting files (@theit8514)\n- Fix joesguns not being influenced by hack/grow (@dou867, @MartinFournier)\n- Added warning when opening external links. (@MartinFournier)\n- Prevent applying for positions that aren't offered (@TheMas3212)\n- Import has validation (@MartinFournier)\n\n** Misc. **\n\n- Added vim mode to script editor (@billyvg)\n- Clean up script editor code (@Rez855)\n- 'cat' works on scripts (@65-7a)\n- Add wordWrap for Monaco (@MartinFournier)\n- Include map bundles in electron for easier debugging (@MartinFournier)\n- Fix importing very large files (@MartinFournier)\n- Cache program blob, reducing ram usage of the game (@theit8514)\n- Dev menu can set server to $0 (@mikomyazaki)\n- 'backdoor' allows direct connect (@mikomyazaki)\n- Github workflow work (@MartinFournier)\n- workForFaction / workForCompany have a new parameter (@theit8514)\n- Alias accept single quotes (@sporkwitch, @FaintSpeaker)\n- Add grep options to 'ps' (@maxtimum)\n- Added buy all option to 'buy' (@anthonydroberts)\n- Added more shortcuts to terminal input (@Frank-py)\n- Refactor some port code (@ErzengelLichtes)\n- Settings to control GiB vs GB (@ErzengelLichtes)\n- Add electron option to export save game (@MartinFournier)\n- Electron improvements (@MartinFournier)\n- Expose some notifications functions to electron (@MartinFournier)\n- Documentation (@MartinFournier, @cyn, @millennIumAMbiguity, @2PacIsAlive,\n @TheCoderJT, @hexnaught, @sschmidTU, @FOLLGAD, @Hedrauta, @Xynrati,\n @mikomyazaki, @Icehawk78, @aaronransley, @TheMas3212, @Hedrauta, @alkemann,\n @ReeseJones, @amclark42, @thadguidry, @jasonhaxstuff, @pan-kuleczka, @jhollowe,\n @ApatheticsAnonymous, @erplsf, @daanflore, @nickofolas, @Kebap, @smolgumball,\n @woody-lam-cwl)\n\n## v1.1.0 - 2021-12-18 You guys are awesome (community because they're god damn awesome)\n\n** Script Editor **\n\n- The text editor can open several files at once. (@Rez855 / @Shadow72)\n It's not perfect so keep the feedback coming.\n\n** Steam **\n\n- Windows has a new launch option that lets player start with killing all their scripts\n This is a safety net in case all the other safety nets fail.\n- Linux has several launch options that use different flags for different OS.\n- Debug and Fullscreen are available in the window utility bar.\n- Tried (and maybe failed) to make the game completely kill itself after closing.\n This one I still don't know wtf is going.\n- No longer has background throttling.\n- Default color should be pitch black when loading\n- Add BN13: Challenge achievement.\n\n** Tutorial **\n\n- I watched someone play bitburner on youtube and reworked part of\n the tutorial to try to make some parts of the game clearer.\n https://www.youtube.com/watch?v=-_JETXff4Zo\n- Add option to restart tutorial.\n\n** Netscript **\n\n- getGangInformation returns more information.\n- getAscensionResult added\n- getMemberInformation returns more info\n- Formulas API has new functions for gang.\n- Added documentation for corp API.\n- exec has clearer error message when you send invalid data.\n- getServer returns all defined field for hacknet servers.\n- Fix a bug with scp multiple files (@theit8514)\n- Stack traces should be smarter at replacing blobs with filenames\n- Fix a weird error message that would occur when throwing raw strings.\n- Fix shortcuts not working.\n- Re-added setFocus and isFocused (@theit8514)\n- new function getHashUpgrades (@MartinFournier)\n- enableLog accepts \"ALL\" like disableLog (@wynro)\n- toast() doesn't crash on invalid data (@ivanjermakov)\n- alert() doesn't crash on invalid data (@Siern)\n- Fixed an issue where scripts don't run where they should.\n- Sleeve getInformation now returns cha\n- getServer does work with no argument now\n- workForFaction returns false when it mistakenly returned null\n\n** Character Overview **\n\n- The character overview now shows the amount of exp needed to next level (@MartinFournier)\n\n** Misc. **\n\n- Add option to supress Game Saved! toasts (@MartinFournier)\n- Fix bug where ctrl+alt+j was eaten by the wrong process. (@billyvg)\n- Theme Editor lets you paste colors (@MartinFournier)\n- ctrl + u/k/w should work on terminal (@billyvg)\n- Game now shows commit number, this is mostly for me. (@MartinFourier)\n- running a bad script will give a clearer error message (@TheCoderJT)\n- Default terminal capacity is maximum (@SayntGarmo)\n- Fix problems with cp and mv (@theit8514)\n- Make monaco load fully offline for players behind firewalls.\n- change beginer guide to use n00dles instead of foodnstuff\n- BN13 is harder\n- nerf int gain from manualHack\n- Fix UI displaying wrong stats (@DJMatch3000)\n- Fix button not disabling as it should.\n- New location in Ishima.\n- Add setting to suppress stock market popups.\n- Typo fixes (@Hedrauta, @cvr-119, @Ationi, @millennIumAMbiguity\n @TealKoi, @TheCoderJT, @cblte, @2PacIsAlive, @MageKing17,\n @Xynrati, @Adraxas, @pobiega)\n- Fix 100% territory achievement.\n- Reword message on active scripts page.\n- Fix terminal not clearing after BN\n- Remove references to .fconf\n- Augmentation pages shows BN difficulty with SF5\n- Fix scripts saving on wrong server while 'connect'ing\n- Fix gym discount not working.\n- Fix scan-analyze not working with timestamps\n- Hash upgrades remember last choice.\n- Save files now sort by date\n- The covenant no longer supports negative memory purchases\n- Fix corp shares buyback triggering by pressing enter\n- Staneks gift display avg / num charges\n- Infiltration rewards no longer decay with better stats\n- terminal 'true' is parsed as boolean not string\n- tail and kill use autocomplete()\n- Fix focus for coding contract\n- massive boost to noodle bar.\n\n** Special Thanks **\n\n- Special thank you to everyone on Discord who can answer\n new player questions so I can focus on more important things.\n\n## v1.1.0 - 2021-12-03 BN13: They're Lunatics (hydroflame & community)\n\n** BN13: They're Lunatics **\n\n- BN13 added.\n\n** Steam **\n\n- Tested on all 3 major OS.\n- 94 achievements added\n- Release is 2021-12-10.\n\n** Corporation API **\n\n- Added corporation API. (Unstable)\n\n** Netscript **\n\n- tprintf crashes when not giving a format as first arg.\n- tprintf no longer prints filename (@BartKoppelmans)\n- TIX buy/sell/sellShort all return askprice/bidprice (@Insight)\n- getRunningScript now works.\n- Fix disableLog for gang and TIX API\n- getOwnedSourceFiles is not singularity anymore (makes it easier to share scripts.) (@theit8514)\n- true/false is a valid value to send to other scripts.\n- workForFaction no longer returns null when trying to work for gang.\n- Scripts logging no longer generates the string if logging is disabled.\n This should give performance boost for some scripts.\n\n** Gang **\n\n- Gang with 0 territory can no longer fight\n- Territory now caps at exactly 0 or 1.\n\n** Misc. **\n\n- Clicking \"previous\" on the browser will not pretend you had unsaved information\n allowing you to cancel if needs be.\n- Fixed some tail box coloring issue.\n- Fixed BladeBurner getCityCommunities ram cost\n- The download terminal command no longer duplicate extensions (@Insight)\n- Fix #000 on #000 text in blackjack. (@Insight)\n- Remove reference to .fconf\n- Tail boxes all die on soft reset.\n- Fix codign contract focus bug.\n- Megacorp factions simply re-invite you instead of auto added on reset. (@theit8514)\n- Tail window is bound to html body.\n- Infiltration reward is tied to your potential stats, not your actual stats\n So you won't lose reward for doing the same thing over and over.\n- intelligence lowers program creation requirements.\n- Terminal parses true as the boolean, not the string.\n- Tail and kill autocomplete using the ns2 autocomplete feature.\n- scan-analyze doesn't take up as many terminal entries.\n- GangOtherInfo documentation now renders correctly.\n- ActiveScripts search box also searches for script names.\n- Infinite money no longer allows for infinite hacknet server.\n- Blackjack doesn't make you lose money twice.\n- Recent Scripts is now from most to least recent.\n- Fix mathjax ascii art bug in NiteSec.\n- Remove warning that the theme editor is slow, it's only slow in dev mode.\n- In BN8 is it possible to reduce the money on a server without gaining any.\n- In the options, the timestamp feature has a placeholder explaining the expected format.\n- Bunch of doc typo fix. (hydroflame & @BartKoppelmans & @cvr-119)\n- nerf noodle bar\n\n## v1.0.2 - 2021-11-17 It's the little things (hydroflame)\n\n** Breaking (very small I promise!) **\n\n- buy / sell now return getAskPrice / getBidPrice instead of just price.\n This should help solve some inconsistencies.\n\n** Misc. **\n\n- scripts logs are colorized. Start your log with SUCCESS, ERROR, FAIL, WARN, INFO.\n- documentation for scp not say string | string[]\n- Donation link updated.\n- nerf noodle bar\n\n## v1.0.1 - 2021-11-17 New documentation (hydroflame)\n\n** Documentation **\n\n- The new documentation for the netscript API is available at\n https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md\n This documentation is used in-game to validate the code, in-editor to autocomplete, and\n for users to reference. This is a huge quality of life improvements for me.\n\n** Reputation **\n\n- Fixed favor not affecting faction work reputation gain (Yeah, I know right?)\n\n** Hacknet **\n\n- Servers are now considerd \"purchasedByPlayers\"\n\n** Script Editor **\n\n- solarized themes now work.\n\n** Corporation **\n\n- Dividends are now much more taxed.\n- The 2 upgrades that reduced taxes are now much stronger.\n\n** Misc. **\n\n- Starting / Stopping scripts on hashnet servers immediately updates their hash rate (instead of on the next tick)\n- Hacknet has tooltip showing what the result of the upgrade would be.\n- Augmentations page displayes current price multiplier as well as explains the mechanic.\n- Terminal now is 25x stronger.\n- Tail boxes use pre-wrap for it's lines.\n- Tail boxes allow you to rerun dead scripts.\n- Tail boxes can no longer open the same one twice.\n- Terminal now autocompletes through aliases.\n- Make alter reality harder.\n- Fix bladeburner cancelling actions when manually starting anything with Simulacrum.\n- Buying hash upgrade to increase uni class or gym training will apply to current class.\n- Internally the game no longer uses the decimal library.\n- Fix an issue where 'download \\*' would generate weird windows files.\n- Timestamps can be set to any format in the options.\n- Fix typo in documentation share popup.\n- Remove bunch of debug log.\n- Fix typo in corporation handbook literature.\n- Fix typo in documentation\n- Fix duplicate SF -1 exploit. (Yeah, an exploit of exploits, now were meta)\n- Fix offline hacking earning being attributed to hacknet.\n- nerf noodle bar\n\n## v1.0.0 - 2021-11-10 Breaking the API :( (blame hydroflame)\n\n** Announcement **\n\n- Several API breaks have been implemented.\n- See the v1.0.0 migration guide under Documentation\n- Everyone gets 10 free neuroflux level.\n\n** Netscript **\n\n- Fix a bug that would cause RAM to not get recalculated.\n- New function: hackAnalyzeSecurity\n- New function: growthAnalyzeSecurity\n- New function: weakenAnalyze\n\n** Script Editor **\n\n- Sometimes warn you about unawaited infinite loops.\n- ns1 functions are now correctly colors in Monokai.\n\n** Programs **\n\n- Formulas.exe is a new program that lets you use the formulas API.\n\n** Corporations **\n\n- Real Estate takes up a tiny bit of room.\n- Dividends are now taxes exponentially in certain bitnodes.\n- UI displays how many level of each corporation upgrade.\n- Fix exploit with going public.\n- Employee salary no longer increase.\n\n** Documentation **\n\n- The documentation is now autogenerated into .md files.\n It is usable but not yet linked to readthedocs. It's on github.\n\n** Misc. **\n\n- Favor is not internall floating point. Meaning I don't have to save an extra variable.\n- Manually starting a Bladeburner action cancels unfocused action.\n- Updated description of gang territory to be clearer.\n- Hacknet expenses and profit are in different categories.\n- Fixed favor equation.\n- Toast messages aren't hidden behind work in progress screen.\n- Fix bug that made infiltration checkmark look off by one.\n- Fix some inconsistency with running files that start or don't start with /\n- Can't tail the same window twice.\n- Added recovery mode. Hopefully no one will ever have to use it.\n- Fix readthedocs\n- Programs now give int exp based on time not program.\n- Many sing. functions now give int exp.\n- Active Scripts page now displays some arguments next to script name.\n- Fixed some invisible black text.\n- Button colors can be edited.\n- Added 2 new colors in the theme editor: background primary and background secondary.\n- infiltration uses key instead of keycode so it should work better on non-american keyboards.\n- buff noodle bar.\n\n## v0.58.0 - 2021-10-27 Road to Steam (hydroflame & community)\n\n** Announcement **\n\n- To prepare for Steam we will fix some inconsistencies in the Netscript API. Ideally we can also write a\n save file migration that will automatically convert all breaking changes in your scripts without any\n player input.\n\n** BREAKING (kindof) **\n\n- All stock market functions are now under the 'stock' namespace, like 'hacknet'\n However when you load your game with v0.58.0 for the first time it should automatically convert everything.\n\n** SF -1 **\n\n- new SF -1: Reality Alteration\n\n** Gang **\n\n- Ascension formula now better\n- Karma requirement now much lower in most nodes\n- Territory heavily penalizes gains\n- T.R.P. not available outside BN2.\n\n** Netscript **\n\n- It is no longer possible to send anything but strings or numbers to other scripts. (prevents exploits)\n- Improve code for some netscript functions (@omuretsu)\n\n** Script Editor **\n\n- Added Solarized light/dark as theme (@CalvinTrops)\n- Fixed sleeve namespace smart autocomplete.\n\n** Hacknet Servers **\n\n- Cores affect grow/weaken like they do on home computer\n\n** Infiltration **\n\n- Slash game modified to be easier.\n\n** Misc. **\n\n- Fix typo in corp (@Saynt_Garmo)\n- Fixed a bug where corp wouldn't let you buyback shares. (@Saynt_Garmo)\n- Fixed a bug where sleeves couldn't perform some crimes. (@Saynt_Garmo)\n- Hospitalization and Eating noodles are now toasts (@Saynt_Garmo)\n- Fixed some repeated code (@omuretsu)\n- Fixed Character Overview preventing clicks underneath it even when hidden. (@omuretsu)\n- Fixed typo in tutorial. (@omuretsu)\n- Create Programs and Factions invitation badges now dissapear when you open their respective pages.\n- Add killall script in character overview.\n- Fixed bug in corp that made last city production be the production for all cities for newly created product.\n- Fix bug that allowed reputation to transfer to new jobs.\n- Fixed memory leak with ns2.\n- nerf noodle bar\n\n## v0.57.0 - 2021-10-16 It was too cheap! (hydroflame & community)\n\n** BREAKING (kindof) **\n\n- purchased server cost now scales exponentially past 2^10.\n I'm going to actually explain this one: Currently the cost of a 2^20GB server is 57b\n Most players can get that before their first install. In an effort to nerf good players\n a softcap was added. This softcap is different for every BN.\n\n** Script Editor **\n\n- Added a theme that is close to monokai. Unfortunately a full monokai is impossible because\n Monaco doesn't have a very good tokenizer.\n- Opening a file and connecting to a new server will still save the file on the server that the file\n was opened.\n\n** Netscript **\n\n- New function: alert, which creates a textbox.\n- New function: toast, creates a notification in the bottom right.\n- New function: upgradeHomeCores (@Saynt_Garmo)\n- New function: atExit, allows you to set a callback for when the script closes.\n- New kindof function: autocomplete, this allows you to tell the game what it should\n autocomplete on the terminal.\n\n** Augmentation **\n\n- ENM Core (the Augmentation from The Black Hand with the highest rep cost) rep cost\n reduced from 250 to 175. This will help new players transition from TBH to BitRunners more easily.\n\n** Bladeburner **\n\n- New general action: Incite Violence. This action adds other action counts but increases chaos.\n\n** Misc. **\n\n- Current bladeburner action is shown on the character overview.\n- Fix blackop being #000 on #000.\n- The last clicked Tail Box goes in front of the others.\n- Fixed an issue where some values were loaded as 0 when they should be null.\n- Implemented toasts.\n- .msg are no longer saved in the text file.\n- Tail boxes no longer display all the args, they use \"...\" after 30 characters.\n- Fixed cancelation penalty bonus not being properly applied after the IP <-> hostname switch.\n- Fixed an exploit where you could send non-strings or numbers to other scripts.\n- Fixed issue when trying to work for a faction with a work type that doesn't exist while\n already working for that faction.\n- Fixed not being able to work for the CIA. (Don't ask)\n- nerf noodle bar\n\n## v0.56.0 - 2021-10-11 Trimming the backlog (hydroflame & community)\n\n** BREAKING **\n\n- The 'write' function is now async. This helps when making scripts that write scripts.\n\n** Terminal **\n\n- 'grow' and 'weaken' have been added as terminal command. This should help player transition\n from commands to scripts. The tutorial also talks about it.\n- 'cp' command added\n- Improved performance by rate limiting refresh.\n\n** IP vs Hostname **\n\n- The game now uses hostname as primary key for it's servers (yeah believe it or not IPs were\n used until then). This has caused some issues with purchased servers (they couldn't be sold).\n You might need to soft reset for the game to fully convert itself.\n\n** Sleeve **\n\n- Fixed bug where they couldn't train at Volhaven.\n- No longer consume all bonus time at once, making it look buggy.\n\n** SF9 **\n\n- Now boosts hacknet production by 8/12/14%\n\n** Hacknet Servers **\n\n- production nerfed by 10%\n- Max money increase gets weaker above 10t max money\n\n** Corporation **\n\n- Warehouse tooltip now also displays the amount of space taken by products.\n- Changed research box completely to avoid dependency on Treant (Treant is a pita)\n- All textbox should accept MAX/MP case insensitive.\n- Fixed export popup not refreshing dropdowns correctly.\n- Fixed product mku becoming zero\n- Increased scaling of Wilson to avoid feedback loop.\n- Can no longer get in debt by buying real estate\n- Bonus time is consumed faster.\n\n** Netscript **\n\n- isBusy takes bitverse and infiltration into account\n- hospitalize can't be called when in infiltration.\n- setToCommitCrime now accepts crime rough name instead of perfect name.\n- disableLog All now works for bladeburner functions.\n- Fixed netscript port for ns1.\n\n** Augmentation **\n\n- Added augmentation to Ti Di Hui that removes penalty for being unfocused.\n- Neuroflux no longer appears in special factions.\n\n** Script Editor **\n\n- Ram check is debounced instead of refreshed every second.\n- Added the vscode extension documentation to the game (it doesn't work well, thought)\n- Fixed issue where autocomplete list would grow forever\n- Added semi-monokai as theme.\n- Fixed issue where modifying filename would mess it up.\n- Font size can be changed now.\n\n** Infiltration **\n\n- Fixed issue where game controls would become unfocused.\n\n** Misc. **\n\n- Fixed loader incorrectly assuming some null values are incorrect.\n- installBackdoor trigger Bitverse sequence\n- Some improvements to the theme editor\n- Improved documentation about where to learn javascript.\n- Added some instructions for contributors.\n- Fixed typo in corporation sell shares modal (@Saynt_Garmo)\n- Fixed pagination being black on black in Active Scripts\n- Create Script tab renamed to Script Editor\n- Fixed an issue where corp some textbox wouldn't update when changing city.\n- Fixed an issue where hacknet online time was always 0.\n- Netscript function prompt fixed.\n- Fixed miscalculation in growth.\n- Script with syntax errors will try to be a tad more helpful.\n- Corporations can no longer bribe bladeburners.\n- Augmentation Graphene Branchiblade renamed to Brachi, like the rest of them.\n- All ram is displayed in GB/TB/PB now.\n- Game now saves when saving a file, this can be turned off.\n- Several improvement to log window.\n- Bladeburner current action returns General type instead of the name of the action.\n- Bladeburner travel and Sleeve travel respect disable ASCII.\n- Tutorial fits on small screens.\n- Import is much slower but more consistent now.\n- Fix intelligence not updating properly.\n- Added SF -1: Time Compression\n- ReadTheDoc theme now matches the game.\n- Logbox should wrap text better\n- Logbox behavior should feel better.\n- Fix font for AutoLink.exe\n- nerf noodle bar\n\n## v0.55.0 - 2021-09-20 Material UI (hydroflame & community)\n\n** Global **\n\n- The game is now 100% in typescript, react, and Material-UI\n\n** Misc. **\n\n- Corporations can no longer bribe special factions\n- Infiltration can no longer lose focus of the keyboard.\n- Fix terminal line limit\n- Added theme editor\n- Theme applies on game load (@Nolshine)\n- Sleeves no longer consume all bonus time for some actions\n- Fix a bug where the autocomlete list would get duplicates\n- Fix tutorial not scaling properly on small screens\n- Import should be more consistent\n- Typo with 'help' command\n- Fix infinite loop in casino\n- nerf noodle bar\n\n## v0.54.0 - 2021-09-20 One big react node (hydroflame & community)\n\n** UI **\n\n- The UI is now completely(ish) in react and I'm starting to implement\n Material-UI everywhere. This will help make the game feel more consistent.\n- Major help from (@threehams)\n- New Terminal\n- New Active Scripts page\n- New sidebar.\n- New Character overview\n- New tutorial\n- New options page\n- New create program page (@Nolshine)\n\n** Netscript **\n\n- Add companyName to getPlayer\n\n** Factions **\n\n- Megacorp factions are no longer removed when installing.\n\n** Corporation **\n\n- All research tooltips are always visible.\n- Smart supply is enabled by default if purchased (@Nolshine)\n\n** Misc. **\n\n- Fix \"Game saved\" animation. (@Nolshine)\n- Update commitCrime documentation (@Tryneus)\n- Fix logbox scrolling weird (@Nolshine)\n- Fix weird scrolling in corporations (@BartKoppelmans)\n- Fix typo (@BartKoppelmans & @Nolshine)\n- Delete game now has a confirmation modal (@Nolshine)\n- Fix issue where skills would not get properly updated when entering new\n BN. (@Nolshine)\n- Convert create gang to popup (@vmesecher)\n- Fixed a bug that prevented travel to Sector-12 and New Tokyo when not using\n ASCII art.\n- nerf noodle bar\n\n## v0.53.0 - 2021-09-09 Way too many things. (hydroflame & community)\n\n** Dev? **\n\n- The entire codebase has been run through a code prettifier, hurray for consistency. (@threehams)\n- Lots of test. (@threehams)\n- Massive improvements to build speed. (@threehams)\n- Dev notes: This won't affect any players but is immensely useful for me.\n\n** Hacknet **\n\n- Converted to ts/react\n\n** Resleeving **\n\n- Converted to ts/react\n\n** Sleeves **\n\n- Converted to ts/react. The ui should also have a better feel.\n- Fixed a bug that allowed players to recover shock much faster than intended.\n\n** BN10 **\n\n- You have access to Sleeves right away\n- In BN10 Sleeves start with 75 shock and 25 sync.\n\n** MathJax **\n\n- Several tooltips have been updated to display the relevant formula in Mathjax, e.g. Favor and reputation\n\n** Corporation **\n\n- Completely rewritten in React. Paving the way for bigger change.\n- Smart Supply is now smarter and won't deadlock the warehouse. It is also more configurable.\n- Several UI fixes.\n\n** Bladeburner **\n\n- Action count is no longer decided when joining the Bladeburners. Experiences for all players should be more similar.\n\n** Factions **\n\n- No factions have home computer ram requirement. This caused some confusion for new players.\n\n** Gang **\n\n- Made it clear when there's a new equipment coming up.\n\n** Netscript **\n\n- getActionCountRemaining now returns Infinity for bladeburner general actions. (@brubsy)\n- getActionEstimatedSuccessChance now returns 100% for Diplomacy and Hyperbolic Regeneration Chamber. (@brubsy)\n- disableLog('ALL') now disables all logs individually, meaning you can re-enable the ones you want after. (@Cass)\n- getPlayer returns numPeopleKilled.\n- Dynamic RAM calculation errors have a better error message.\n- Hide some functions from autocomplete.\n- Added getAugmentationPrice, getAugmentationRepReq, deprecated getAugmentationCost. (@TempFound)\n- Fixed bug where some crime API would return \"assassinate\" when that's not accepted in other functions.\n\n** Coding Contract **\n\n- Spiralize Matrix is easier to read.\n\n** Misc. **\n\n- The world map is now used in sleeve travel and bladeburner travel.\n- noselect a bunch of stuff.\n- Ascii maps letters are more contrasting\n- Updated documentation for infiltration.\n- Most money costs in the game will turn grey/cyan when you don't have enough money.\n- Donation textbox has better look & feel.\n- Tech vendors ram & cores buttons have better look and feels.\n- cores cost modified to be a formula instead of a semi-random array of numbers.\n- Tech vendors now give a hint about where to get bigger servers.\n- logboxes now displays whitespaces exactly. (@Cass)\n- nerf noodle bar\n\n## v0.52.9 - 2021-08-27 Less lag! (hydroflame & community)\n\n** Active Scripts page **\n\n- Now less laggy, has pagination.\n\n** File diagnostic **\n\n- Added a popup found under options that shows the files you own and how\n large they are. This help find bugs and leftover massive logs files.\n\n** Corporation **\n\n- Added safeguard against a very specific bug that causes NaN money. I'm\n still not sure what the root cause is but it should prevent corp from\n breaking.\n\n** Netscript **\n\n- tprintf is a new function that doesn't print the filename.\n\n** Misc. **\n\n- Infiltration kills you if you try to automate it. (@threehams)\n- Fix beautify button not working\n- Added bladeburner_analysis_mult to getPlayer() (@brubsby)\n- Fixed joining bladeburner via netscript functions. (@omuretsu)\n- All bladeburner actions are click-to-copy\n- nerf noodle bar\n\n## v0.52.8 - 2021-08-23 Fixing the previous patch tbh ROUND 2 (hydroflame)\n\n** Script editor **\n\n- Correctly reloads old script when clicking \"Script Editor\"\n- No longer jumps to the end of the text for no reason.\n\n** Hash upgrades **\n\n- Fixed an issue where the default option would say ecorp but was really\n foodnstuff\n\n** Misc. **\n\n- The \"Delete all active script\" button under the options has a clearer\n description.\n- Removed some debug console.log\n- nerf noodle bar\n\n## v0.52.7 - 2021-08-21 Fixing the previous patch tbh (hydroflame)\n\n** Netscript **\n\n- API BREAKING CHANGE: getActionEstimatedSuccessChance now returns a pair of\n value to reflect the UI changes. I'm very sorry.\n\n** Bladeburner **\n\n- General actions now display time required.\n- Recruitment now displays success chance.\n- All other success chance now display a range instead of a single value\n The real value is guaranteed to be within that range.\n\n** Misc. **\n\n- Fix tutorial not working after Monaco upate\n- Fix logbox logs not taking up the whole logbox\n- Fix script editor shortcut (ctrl+b)\n- Fix Corporation popup appearing in the wrong order, hiding one of them\n- Fix error when loading Corp\n- Fix logbox dragging (smoother now)\n- Fix logbox name collision\n- Fix logbox allowing to open the same box multiple times\n- Fix netscript write.\n- nerf noodle bar\n\n## v0.52.6 - 2021-08-21 Logboxes and VS-code (hydroflame)\n\n** Text Editor **\n\n- Ace and Codemirror have been removed in favor of monaco (web version of\n vs-code). The options are a bit lackluster but more will be added as\n feedback comes.\n\n** Log boxes **\n\n- Multiple log boxes can be opened at once. They can be moved around the\n screen. (but the movement behavior is a bit weird.)\n\n** Misc. **\n\n- Job promotion now correctly updates the UI.\n- Milestones now call the faction CyberSec instead of CSEC\n- Can no longer create file that break the filesystem.\n- Remove dollar sign in blade contract UI element\n- nerf noodle bar\n\n## v0.52.5 - 2021-08-19 CPU cores are useful!? (hydroflame)\n\n** Terminal **\n\n- When executing 'run SCRIPT' any script can now add '--tail' to\n automatically bring up the logs.\n\n** Netscript **\n\n- The 'flags' function now works with single letter flags but they only take\n one dash.\n- Fix several broken bladeburner netscript functions.\n- Fix gang.getMemberInformation returning inconsistent data after the gang\n rework.\n\n** CPU Cores **\n\n- CPU Cores on the home computer now provide a bonus to grow() money gain\n and makes weaken lower more security. Only for scripts running on 'home'\n\n** Misc. **\n\n- Fix weird scrolling in the new Bladeburner React console.\n- nerf noodle bar\n\n## v0.52.4 - 2021-08-19 Bladeburner in React (hydroflame)\n\n** Bladeburner **\n\n- The entire UI was rebuild in React. It should be more responsive\n\n** Hacknet **\n\n- Displays how many time each hash upgrade was bought.\n- Displays cummulative effect of the upgrade.\n- Removed \"Close\" button from hash upgrade menu.\n\n** Misc. **\n\n- More popup/modals have dark background, can be dismissed by clicking\n outside, or by pressing escape.\n- Small reword in the guide.\n- Fix several typos in the bladeburner documentation.\n- Linting (no one cares except the dev)\n- nerf noodle bar\n\n## v0.52.3 - 2021-08-15 Gangs were OP (hydroflame)\n\n** Gang **\n\n- Significant rework. Ascension is now based on exp gained.\n- All upgrades give exp bonuses.\n- Maximum gang members reduced to 12.\n- Respect required to recruit sharply increased.\n- Rewritten in React, the UI should be smoother and less laggy now.\n\n** Infiltration **\n\n- Now isTrusted protected.\n\n** Misc. **\n\n- Many UI element are now \"noselect\" protected.\n- Fixed an issue where you could join the same faction twice via script and\n UI simultaneously.\n- Factions list screen converted to React.\n- nerf noodle bar\n\n## v0.52.2 - 2021-08-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)\n\n** Source-Files **\n\n- Source-File 11 now also provides a small reduction to the price increase\n multiplier.\n\n** Augmentations **\n\n- New Augmentation offered by Aevum, themed around 777 and offers some basic\n programs.\n- Augmentation descriptions are now more concise and consistent.\n\n** Misc. **\n\n- nerf noodle bar\n\n## v0.52.1 - 2021-08-10 bugfixing (hydroflame & community)\n\n** Misc. **\n\n- Fix game crash/corruption when quitting a job while working for it unfocused.\n- Fix typo in corporation Market Data.\n- Fix typo in docs for hackPercent.\n- The tutorial encourages the players to connect to home before creating `n00dles.script`\n- The dark web `buy` command now accepts `-1` (one) and `--list` instead of just `-l`. Helps some confused players.\n- Character overview screen no longer hidden on the corporation screen.\n- Infiltration difficulty display is now more explicit (It's a big arrow instead of just one word.)\n- Fix wrong ram value in tutorial. (@MageKing17)\n- Plenty of augmentation description cleanup (@Kwazygloo)\n- Plenty of typo/description fixed (@MageKing17)\n- Cleanup description of singularity function on readthedocs (@PurePandemonium)\n- Fix bug when autolinking a server while backdooring (@schroederIT)\n- nerf noodle bar\n\n## v0.52.0 - 2021-06-13 Infiltration 2.0 (hydroflame & community)\n\n**Infiltration**\n\n- Completely reworked. Not the same mechanic at all.\n\n**Terminal**\n\n- tail is smarter. It automatically assume the only possible options in some\n cases.\n\n**Intelligence**\n\n- Now available when starting BN5 instead of after beating it for the first\n time.\n- Nerf the effect of intelligence on reputation gain.\n\n**Augmentation**\n\n- Added a new augmentation, the 'Unstable Circadian Modulator', whose\n gimmick is that its stats are randomized every hour.\n\n**Netscript**\n\n- 'getPlayer' is not a singularity function anymore.\n- 'hacknetNodes.constants' returns the correct values.\n- 'createGang' has been added.\n- 'inGang' has been added.\n\n**Tutorial**\n\n- Updated the tutorial. Made it look cleaner, fixed typos, etc.\n\n**Misc.**\n\n- Fix many typos in literature (@kwazygloo)\n- Fix being able to unfocus from gym and university.\n- Fix being able to do hacking missions while unfocused.\n- Fix many typos in Augmentation descriptions (@kwazygloo)\n- More numbers handle absurdly large values. (@Tesseract1234567890)\n- Fix many typos (@Tesseract1234567890)\n- Fixed an issue that caused a UI desync when sleeves were set to workout\n stats other than strength at the gym.\n- Fix weird alignment of donation text box and button. (@Tesseract1234567890)\n- Fixed an issue where reputation could be transfered to new jobs when unfocused.\n- Empty stack traces should no longer appear.\n- Purchasing anything with Infinity money doesn't result in NaN.\n- nerf noodle bar\n\n## v0.51.10 - 2021-05-31 Focus Mark, Focus! (hydroflame)\n\n**Focus**\n\n- You can now use the terminal and write scripts while working for factions\n but you will gain reputation at a slower rate.\n\n**SF -1**\n\n- Added a new SF -1: Bypass\n\n**Gang**\n\n- \"Vigilante justice\"/\"Ethical hacking\" now reduces wanted level by a very\n small percentage as well an absolute value.\n\n**Netscript**\n\n- 'tFormat' now has a second argument to display with millisecond precision.\n- 'purchaseSleeveAug' can no longer purchase the same aug over and over for\n the same sleeve.\n- fix typo in logging for 'getServerSecurityLevel'\n- Fixed some weird issue where very rarely you would get 0 exp from 'grow'\n- 'getActionTime' now returns correct values for Diplomacy and Regeneration.\n\n**Corporations**\n\n- Fixed an exploit where you could get nearly infinite corporation funds by\n entering negative numbers in textboxes.\n- Fixed an exploit where shares could be sold again by clicking the\n \"sell share\" button via scripts.\n\n**Documentation**\n\n- typo fix in purchaseTor\n- typo fix in basicgameplay/stats\n\n**Misc.**\n\n- Very large number will no longer appear as \"$NaNt\"\n- Hash capacity now displays in the \"big number\" format.\n- nerf noodle bar\n\n## v0.51.9 - 2021-05-17 offline progress and exports! (hydroflame & community)\n\n**Alias**\n\n- several commands can be included in 1 alias. Recursive alias now work to\n a depth of 10. (@Dawe)\n\n**Offline**\n\n- Offline money gain has been reworked (it is more generous)\n- If you're not working anywhere and go offline the game will work for you\n at all your factions evenly.\n\n**Export**\n\n- Exporting now gives +1 favor to all joined factions every 24h.\n\n**Corp**\n\n- Self-fund with an invalid name no longer takes away 150b anyway.\n- Can no longer export negative amount\n\n**Bladeburner**\n\n- No longer waste overflowing time.\n\n**Text Editors**\n\n- All settings will now be saved and loaded correctly.\n\n**Terminal**\n\n- 'scan' now works for servers that are more than 21 character long.\n\n**Misc.**\n\n- ls now correctly lists all files.\n- importing auto save+reloads (@Dawe)\n- Fix a bug where .fconf could not be created\n- Fix formatting inconsistencies for some logs of netscript functions.\n- Fix a bug where Cashroot starter kit would appear as [object Object] in\n confirmation dialog.\n- Fix some ram not displayed as 0.00GB\n- Fix error message throw undefined variable error\n- City hall now has some generic text if you can't create a corp yet.\n- Deleting a file without extension now returns an appropriate error message.\n- Fixed an issue where bladeburner would miscalculate the cost of hospitalization.\n- It is now possible to suppress bladeburner \"action stopped\" popup.\n- Updated several dependencies (big who cares, I know)\n- ls no longer prints lingering newline.\n- Money earned/spent by sleeves is now tracked under Character>Money\n- nerf noodle bar\n\n## v0.51.8 - 2021-05-07 It was there all along (hydroflame & community)\n\n**Servers**\n\n- Update n00dles metadata\n\n**Netscript**\n\n- 'hashGainRate' use the correct 'usedRam' and 'maxRam'\n- Fix 'setActionAutolevel' logging.\n- Fix 'setActionLevel' not working at all.\n- Add 'installBackdoor' singularity function.\n\n**Hacknet**\n\n- Fix Hacknet Servers total production always displaying 0\n\n**Documentation**\n\n- Updated guide to no longer recommend BN12.\n- Fix documentation for maxNumNodes (@ModdedGamers)\n- Fix typo in 'sourcefiles.rst'\n- Fix typo in 'recommendedbitnodeorder.rst'\n- Fix 'getServer' documentation missing 'server' argument.\n- Fix missing ram cost in 'getData.rst'\n- Fix basic formulas examples.\n- Fix typo in BN11 description.\n- Fix formatting issue in Bladeburner (@Pimgd)\n\n**Misc.**\n\n- Fix negative money being displayed in full.\n- Fix Hacking Missions not working.\n- Fix Corporation tree not rendering.\n- Fix script being needlessly recompiled. This should save real ram (not game ram)\n- w0r1d_d43m0n can be backdoored\n- Coding Contracts title is click-to-copy (@Rodeth)\n- Covenant memory upgrade works better.\n- Fix Neuroflux not being correctly calculated when entering BN with SF12.\n- Delete Active Script now delete all active scripts, not just home.\n- Now you can 'cd' in directories that only contain '.txt' files.\n- Fix 'analyze' always saying players had root access\n- Passive faction rep no longer builds for special factions.\n- Donation option no longer appears for special factions.\n- Rephrased some milestones.\n- donation textbox now accepts money in the format '1b' and the like (@Dawe)\n- Fix being able to join hated factions simultaneously. (@Dawe)\n- 'ls' now displays files in multiple column. (Helps players with many files)\n- Bladeburner multiplers now appear under Character>Stats and\n Character>Augmentation when they are relevant.\n- Fix missing functions syntax highlight in codemirror.\n- Fix infiltration number formatting.\n- script income transfers to parent on death. This helps keep track of\n income for scripts that spawn short lived scripts.\n- nerf noodle bar\n\n## v0.51.7 - 2021-04-28 n00dles (hydroflame & community)\n\n**Tutorial servers**\n\n- All the tutorial servers have been reverted to their original value\n- The new server n00dles has been added as tutorial server.\n\n**Terminal**\n\n- 'tail' now accepts Pid.\n- 'analyze' now handles Hacknet Servers correctly.\n- 'ServerProfiler.exe' now handles Hacknet Servers correctly.\n\n**SF12**\n\n- Now makes you start with Neuroflux Governor equal to the level of the SF.\n\n**Netscript**\n\n- Deprecated 'getServerRam'.\n- 'getServerMaxRam' added to replace 'getServerRam'\n- 'getServerUsedRam' added to replace 'getServerRam'\n- 'getBitnodeMultipliers' is available inside BN5\n- Time logged by hack/grow/weaken now displays in human time.\n- thread count logged by hack/grow/weaken now displays with commas every\n thousands place.\n\n**Donation**\n\n- Always visible but locked until favor requirements are reached.\n\n**Augmentations**\n\n- City factions has been rebalanced to give a reason to visit them all.\n\n**Sleeves**\n\n- Fix sleeves not being able to work at Volhavens gym.\n\n**Lint**\n\n- This shouldn't change anything but was like 10h of work. So I'm logging it.\n\n**Misc.**\n\n- Plethora of typo fixed (@Pimgd)\n- ps documentation fix (@Dawe)\n- The dev menu now has a quick bitflume option.\n- Fix SF -1 not being as powerful as intended.\n- Fix cashroot starter kit not displaying correctly.\n- Fix DOM element 'character-overview-text' being nested twice.\n- Hacknet documentation example fix.\n- Money amount under 1000 dont display 3 decimal anymore.\n- Fix nextSourceFile flag miscalculation on the bitverse (for Bn12)\n- Faction invite text says \"Decide later\"/\"Join!\" instead of \"No\"/\"Yes\"\n- nerf noodle bar\n\n## v0.51.6 - 2021-04-28 Backdoor! (hydroflame & community)\n\n**Backdoor**\n\n- a new terminal command, backdoor, has been added to help differentiate\n between the terminal hack command and the netscript hack function. (@dewint)\n\n**Servers**\n\n- foodnstuff, sigma-cosmetics, and joesguns have been rebalanced to help new players.\n\n**Milestones**\n\n- A new tab under the Help menu has been added to guide players through the\n game.\n\n**Casino**\n\n- Blackjack has been added (@BigD)\n\n**Netscript**\n\n- 'prompt' now converts input to JSON.\n- 'getRunningScript' is a new netscript function that returns a bunch of\n data related to a running script.\n\n**Coding contracts**\n\n- trivial puzzles should no longer appear.\n\n**Infiltration**\n\n- All numbers are formatted like the rest of the game.\n\n**Misc.**\n\n- Server security is capped at 100.\n- Added option to quit a job.\n- 'cd' no longer works on unexistent folders.\n- cd with no arguments brings you back to top level folder (@Andreas)\n- 'softReset' documentation udpated.\n- Money tracker now accounts for going to the hospital manually.\n- codemirror is now the default editor (for new save files)\n- fix typo in dark web help text (@Rodeth)\n- so many documentation and typos fixes (@Pimgd)\n- A corruption visual effect has been added to location with servers that\n have backdoor installed. (@dewint)\n- nerf noodle bar\n\n## v0.51.5 - 2021-04-20 Flags! (hydroflame)\n\n**Netscript**\n\n- 'flags' is a new function that helps script handle flags.\n This is subject to change if it doesn't meet the need of the players.\n- 'ps' now returns the pid.\n- 'tail' now works with pid as first argument.\n- 'tail' hostname defaults to current server. (like the documentation says)\n- 'isRunning' hostname defaults to current server.\n- 'isRunning' now works with pid as first argument.\n\n**Gang**\n\n- Nerfed ascension mechanic once again :(\n\n**Misc.**\n\n- Souce-File typo fix\n- Fix 'while you were away' screen.\n- Bladeburner team size can no longer be set to negative amounts.\n- nerf noodle bar\n\n## v0.51.4 - 2021-04-19 Manual hacking is fun (hydroflame)\n\n**Manual hacking**\n\n- These bonus require an install or a soft reset to take effect.\n- Manual hacking gyms and university gives you a 10% discount.\n- Manual hacking a corporation server decreases the penalty for leaving work\n early.\n\n**BladeBurner**\n\n- nerfed int exp gained.\n\n**Documentation**\n\n- purchaseServer specifies what happens on failure.\n- Fixed typo in recommended bitnode page.\n- Removed misleading ram requirements for hacking factions.\n\n**Netscript**\n\n- growthAnalyze handles Infinity correctly.\n\n**Misc.**\n\n- Faction Augmentation will list how much reputation is required even after\n that goal has been reached.\n- Removed dollar sign in travel agency confirmation dialog box.\n- Fixed typo in alpha-omega.lit\n- the 'Game saved!' text no longer blocks the save game/options button.\n- The text editor now remembers the location of your cursor and restores it.\n- skills are recalculated instantly.\n- Fix typo in Operation Zero description.\n- nerf noodle bar\n\n## v0.51.3 - 2021-04-16 Y'all broke it on the first day (hydroflame)\n\n**Passive faction reputation**\n\n- Reworked, from 1 rep / 2 minute. Now is a complicated percentage of the\n reputation you'd gain working for them. It's not op but it feels a bit\n more useful.\n\n**Netscript**\n\n- print/tprint now take any number of arguments.\n- print/tprint will now print object as json.\n- print/tprint now handle passing in an undefined argument properly.\n\n**Casino**\n\n- Cannot bet negative money anymore.\n- Roulette max bet is a bit higher.\n- Coin Flip has a small cooldown.\n- All buttons reject unstrusted mouse events.\n\n**Documentation**\n\n- Changed a message that said nsjs only works on Chrome.\n\n**Bugfix**\n\n- hacknet.maxNumNodes now works for both nodes and servers.\n- Fixed a bug where the popup boxes would contain data from previous popup boxes.\n- .js files will also have the 'export async function' boilerplate.\n\n**Misc.**\n\n- turned off web form autocomplete for the terminal text input.\n- Fixed an issue on Windows+Firefox where pressing up on the terminal would\n bring the cursor to the begining of the line. (Issue #836)\n- Hacknet node names is easier to handle for screen readers.\n- Money spent on classes is now tracked independently of work money.\n- running coding contract from the terminal will display its name.\n- nerf noodle bar\n\n## v0.51.2 - 2021-04-09 Vegas, Baby! (hydroflame)\n\n**New location: The Iker Molina Casino**\n\n- A casino opened in Aevum. However the house is rumored to cheat. If only\n we could give them a taste of their own medicine.\n\n**Misc.**\n\n- Link to discord added under options\n- 'getMemberInformation' doc updated, oops\n- tech vendor now handle max ram and cores.\n- nerf noodle bar\n\n## v0.51.1 - 2021-04-06 Bugfixes because the author of the last patch sucks (it's hydroflame)\n\n**Netscript**\n\n- 'getPlayer' returns players faction and tor\n- 'hospitalization' is a new singularity function.\n- 'gang.getMemberInformation' now returns more information.\n- 'hacknet.hashCapacity' is a new hacknet function that returns the maximum hash capacity.\n\n**Hospitalization**\n\n- Now only cost at most 10% of your money.\n\n**Bugfix**\n\n- confirmation dialog box no longer use previous text\n\n**Accessibility**\n\n- The game is a little easier to handle for screen readers (yes, there's an\n absolute legend playing this game with a screen reader)\n- Infiltration use buttons instead of a-links\n- New option to disable ASCII art. This will make the metro map and world\n map display as a list of buttons.\n\n**Misc.**\n\n- 'fl1ght.exe' will no longer suggest the combat path. Related faction\n requirements unchanged.\n- nerf noodle bar\n\n## v0.51.0 - 2021-03-31 Formulas (hydroflame)\n\n**Formulas API**\n\n- A new API is introduced, this gives players access to various formulas used in the game.\n It'll help you make more informed decisions.\n\n**Netscript**\n\n- 'getServer' is a new function meant to be used with the formulas API.\n- 'getPlayer' is a new function meant to be used with the formulas API.\n- 'getStats' and 'getCharacterInformation' are deprecated in favor of 'getPlayer'\n- 'getCurrentServer' is a new function that returns the server the player is currently connected.\n\n**Display**\n\n- All money should now consistently be orange.\n- All rep should now consistently be light-yellow.\n- Most numbers should display consistently now (aka all money is formatted the same).\n\n**Click to copy**\n\n- Certain UI elements are now 'click-to-copy'\n\n** Misc. **\n\n- nerf noodle bar\n\n## v0.50.2 - 2021-03-25 Everyone asked for this one. (hydroflame)\n\n**BitNodeMultipliers**\n\n- 'GangKarmaRequirements': a new multipler that influences how much karma is required to make a gang different bitnodes.\n\n**Netscript**\n\n- 'connect': a new singularity function that connects you to a server. (like the terminal command)\n- 'manualHack': a new singularity function that performs a manual hack on the players current server.\n- ns2 stack trace works on Firefox now.\n\n**Misc.**\n\n- New shortcut, Alt + b, brings you to bladeburner\n- New shortcut, Alt + g, brings you to gang\n- nerf noodle bar\n\n## v0.50.1 - 2021-03-22 (hydroflame)\n\n**Netscript**\n\n- getTaskStats works\n\n**Source-File -1**\n\n- Added a new Exploit\n\n**Factions**\n\n- Augmentations offered by a Faction but already bought are in a separate list at the bottom of the page.\n\n**Bug fixed**\n\n- Fixed a bug where completing a maxed non-repeatable BitNode would make its color on the BitVerse like level 1.\n\n**Misc.**\n\n- Minor spacing in stats tables.\n- nerf noodle bar\n\n## v0.50.0 - 2021-03-20 Intelligence (hydroflame)\n\n**Intelligence**\n\n- int exp gain and effect has been reworked. It is now much more easy to\n acquire and far more powerful. The goal here is to feel like players have\n another tool in their arsenal.\n\n**Factions**\n\n- Hacking factions no longer have hacking level requirements since their associated servers do.\n\n**Misc.**\n\n- Sleeve styling.\n- number formatting\n- remove wiki button in Hacking Missions.\n- Fix NaN displayed when very very large numbers are reached.\n- nerf noodle bar\n\n## v0.49.2 - 2021-03-13 (hydroflame)\n\n**BN8**\n\n- A new bitnode multipler has been added, it lets you reduce money from a\n server without gaining actually any money. This is important for BN8 where\n hack/grow can influence the stock market. No money can be gained from\n hacking but server money can still be reduced.\n\n**Documentation**\n\n- readthedocs should now be more consistent and many examples were added.\n\n**Netscript**\n\n- Ace editor will now correctly highlight all functions.\n- 'tFormat' is a new netscript function that returns a human readable\n representation of milliseconds. eg. \"2 hours 15 minute 43 seconds\"\n\n**Gang**\n\n- style improvements\n\n**Bladeburner**\n\n- style improvements\n- fix bug where 'skill list SKILL' would crash if skill is level 0.\n\n**Sleeve**\n\n- karma gain now scales with sync.\n\n**Misc.**\n\n- Fix issue where the effective stats under Character>Stats were being calculated.\n- nerf noodle bar\n\n## v0.49.0 - 2021-03-11 Source-File -1 (hydroflame)\n\n**Source-File -1**\n\n- For advanced players: The game now embraces exploits and will reward\n players for doing so.\n\n**Gang**\n\n- ascension is less effective as the ascension multiplier goes up.\n- territory gain scales with power difference.\n\n**Netscript**\n\n- 'gang.getEquipmentStats' returns the stats of the equipment.\n- 'gang.getTaskStats' returns the stats of a task.\n- 'getCrimeStats' returns the stats of a crime.\n- Crashes should now print the ns stack trace.\n- Log messages are now more consistent.\n- 'softReset' now accepts a callback script like 'installAugmentations'\n\n**Misc.**\n\n- Minor formatting under Hacking>Active Scripts\n- option menu colors now match the rest of the game, kinda.\n- nerf noodle bar\n\n## v0.48.0 - ASCII - 2021-03-07 (hydroflame)\n\n**ASCII**\n\n- Travel Agency now displays a world map\n- Cities are now top view of metro station maps\n\n**Netscript**\n\n- 'softReset' is a new netscript function that performs a soft reset\n regardless of if the player has bought augmentations or not.\n- 'getAugmentationStats' is a new netscript function that returns the stats of\n an augmentation.\n- getCharacterInformation now additionally returns exp\n- pid resets back to 1 when installing or destroying a BitNode.\n- New '.ns' scripts start with a main function.\n- 'hacknet.maxNumNodes' returns the maximum number of hacknet nodes.\n\n**Bladeburner**\n\n- Current stamina will scale as max stamina increases, this prevents players\n from having very high penalty when they gain huge amount of exp at the\n start of a reset.\n\n**Misc.**\n\n- Fixed an issue where SF3 was listed as infinitly repeatable and SF12 as\n having a limit of 3.\n- Fixed an issue where the gang equipment screen would freeze the game if a\n script installed augmentations while it is open.\n- All BonusTime now displays in the 'H M S' format.\n- Donation textbox style updated to match the rest of the game.\n- Corporation name style updated to match the rest of the game.\n- minor formatting under Hacking>Active Scripts\n- typo in BN12 description\n- BN12 now reduces contract money\n- Character>Stats percentages are aligned, server and hacknet limit are\n displayed, if the player has SF5 the reduces stats are shown.\n- Character>Augmentations now displays by how much the player stats will\n increase.\n- Character>Augmentations has a badge indicating how many augs the player\n has bought but not installed\n- Character>Factions has a badge indicating how many factions have pending\n invites.\n- nerf noodle bar\n\n## v0.47.2 - 7/15/2019\n\n**Netscript Changes**\n\n- Added tail() Netscript function\n- hacknet.getNodeStats() function now returns an additional property for Hacknet Servers: hashCapacity\n- When writing to a file, the write() function now casts the data being written to a string (using String())\n- BitNode-selection page now shows what Source-File level you have for each BitNode\n- Overloaded kill() function so that you can kill a script by its PID\n- spawn() now only takes 10 seconds to run (decreased from 20 seconds)\n- run() and exec() now return the PID of the newly-executed scripts, rather than a boolean\n - (A PID is just a positive integer)\n- run(), exec(), and spawn() no longer need to be await-ed in NetscriptJS\n- Script parsing and RAM calculations now support ES9\n- installAugmentations() no longer has a return value since it causes all scripts to die\n- isBusy() now returns true if you are in a Hacking Mission\n- Bug fix: workForFaction() function now properly accounts for disabled logs\n- Bug fix: RAM should now be properly calculated when running a callback script with installAugmentations()\n- Bug fix: Fixed bug that caused scripts killed by exit()/spawn() to \"clean up\" twice\n\n**Misc Changes**\n\n- The 'kill' Terminal command can now kill a script by its PID\n- Added 'Solarized Dark' theme to CodeMirror editor\n- After Infiltration, you will now return to the company page rather than the city page\n- Bug fix: Stock Market UI should no longer crash for certain locale settings\n- Bug fix: You can now properly remove unfinished programs (the `*.exe-N%-INC` files)\n- Bug fix: Fixed an issue that allowed you to increase money on servers with a 'maxMoney' of 0 (like CSEC)\n- Bug fix: Scripts no longer persist if they were started with syntax/import errors\n- Bug fix: 'hack' and 'analyze' Terminal commands are now blocking\n- Bug fix: Exp earned by duplicate sleeves at universities/gyms now takes hash upgrades into account\n\n## v0.47.1 - 6/27/2019\n\n- Stock Market changes:\n\n - Transactions no longer influence stock prices (but they still influence forecast)\n - Changed the way stocks behave, particularly with regard to how the stock forecast occasionally \"flips\"\n - Hacking & growing a server can potentially affect the way the corresponding stock's forecast changes\n - Working for a company positively affects the way the corresponding stock's forecast changes\n\n- Scripts now start/stop instantly\n- Improved performance when starting up many copies of a new NetscriptJS script (by Ornedan)\n- Improved performance when killing scripts\n- Dialog boxes can now be closed with the ESC key (by jaguilar)\n- NetscriptJS scripts should now be \"re-compiled\" if their dependencies change (by jaguilar)\n- write() function should now properly cause NetscriptJS scripts to \"re-compile\" (by jaguilar)\n\n## v0.47.0 - 5/17/2019\n\n- Stock Market changes:\n\n - Implemented spread. Stock's now have bid and ask prices at which transactions occur\n - Large transactions will now influence a stock's price and forecast\n - This \"influencing\" can take effect in the middle of a transaction\n - See documentation for more details on these changes\n - Added getStockAskPrice(), getStockBidPrice() Netscript functions to the TIX API\n - Added getStockPurchaseCost(), getStockSaleGain() Netscript functions to the TIX API\n\n- Re-sleeves can no longer have the NeuroFlux Governor augmentation\n\n - This is just a temporary patch until the mechanic gets re-worked\n\n- hack(), grow(), and weaken() functions now take optional arguments for number of threads to use (by MasonD)\n- codingcontract.attempt() now takes an optional argument that allows you to configure the function to return a contract's reward\n- Adjusted RAM costs of Netscript Singularity functions (mostly increased)\n- Adjusted RAM cost of codingcontract.getNumTriesRemaining() Netscript function\n- Netscript Singularity functions no longer cost extra RAM outside of BitNode-4\n- Corporation employees no longer have an \"age\" stat\n- Gang Wanted level gain rate capped at 100 (per employee)\n- Script startup/kill is now processed every 3 seconds, instead of 6 seconds\n- getHackTime(), getGrowTime(), and getWeakenTime() now return Infinity if called on a Hacknet Server\n- Money/Income tracker now displays money lost from hospitalizations\n- Exported saves now have a unique filename based on current BitNode and timestamp\n- Maximum number of Hacknet Servers decreased from 25 to 20\n- Bug Fix: Corporation employees stats should no longer become negative\n- Bug Fix: Fixed sleeve.getInformation() throwing error in certain scenarios\n- Bug Fix: Coding contracts should no longer generate on the w0r1d_d43m0n server\n- Bug Fix: Duplicate Sleeves now properly have access to all Augmentations if you have a gang\n- Bug Fix: getAugmentationsFromFaction() & purchaseAugmentation() functions should now work properly if you have a gang\n- Bug Fix: Fixed issue that caused messages (.msg) to be sent when refreshing/reloading the game\n- Bug Fix: Purchasing hash upgrades for Bladeburner/Corporation when you don't actually have access to those mechanics no longer gives hashes\n- Bug Fix: run(), exec(), and spawn() Netscript functions now throw if called with 0 threads\n- Bug Fix: Faction UI should now automatically update reputation\n- Bug Fix: Fixed purchase4SMarketData()\n- Bug Fix: Netscript1.0 now works properly for multiple 'namespace' imports (import \\* as namespace from \"script\")\n- Bug Fix: Terminal 'wget' command now correctly evaluates directory paths\n- Bug Fix: wget(), write(), and scp() Netscript functions now fail if an invalid filepath is passed in\n- Bug Fix: Having Corporation warehouses at full capacity should no longer freeze game in certain conditions\n- Bug Fix: Prevented an exploit that allows you to buy multiple copies of an Augmentation by holding the 'Enter' button\n- Bug Fix: gang.getOtherGangInformation() now properly returns a deep copy\n- Bug Fix: Fixed getScriptIncome() returning an undefined value\n- Bug Fix: Fixed an issue with Hacknet Server hash rate not always updating\n\n## v0.46.3 - 4/20/2019\n\n- Added a new Augmentation: The Shadow's Simulacrum\n- Improved tab autocompletion feature in Terminal so that it works better with directories\n- Bug Fix: Tech vendor location UI now properly refreshed when purchasing a TOR router\n- Bug Fix: Fixed UI issue with faction donations\n- Bug Fix: The money statistics & breakdown should now properly track money earned from Hacknet Server (hashes -> money)\n- Bug Fix: Fixed issue with changing input in 'Minimum Path Sum in a Triangle' coding contract problem\n- Fixed several typos in various places\n\n## v0.46.2 - 4/14/2019\n\n- Source-File 2 now allows you to form gangs in other BitNodes when your karma reaches a very large negative value\n\n - (Karma is a hidden stat and is lowered by committing crimes)\n\n- Gang changes:\n\n - Bug Fix: Gangs can no longer clash with themselve\n - Bug Fix: Winning against another gang should properly reduce their power\n\n- Bug Fix: Terminal 'wget' command now works properly\n- Bug Fix: Hacknet Server Hash upgrades now properly reset upon installing Augs/switching BitNodes\n- Bug Fix: Fixed button for creating Corporations\n\n## v0.46.1 - 4/12/2019\n\n- Added a very rudimentary directory system to the Terminal\n\n- Added numHashes(), hashCost(), and spendHashes() functions to the Netscript Hacknet Node API\n- 'Generate Coding Contract' hash upgrade is now more expensive\n- 'Generate Coding Contract' hash upgrade now generates the contract randomly on the server, rather than on home computer\n- The cost of selling hashes for money no longer increases each time\n- Selling hashes for money now costs 4 hashes (in exchange for $1m)\n- Bug Fix: Hacknet Node earnings should work properly when game is inactive/offline\n- Bug Fix: Duplicate Sleeve augmentations are now properly reset when switching to a new BitNode\n\n## v0.46.0 - 4/3/2019\n\n- Added BitNode-9: Hacktocracy\n- Changed BitNode-11's multipliers to make it slightly harder overall\n- Source-File 11 is now slightly stronger\n- Added several functions to Netscript Sleeve API for buying Sleeve augmentations (by hydroflame)\n- Added a new stat for Duplicate Sleeves: Memory\n- Increase baseline experience earned from Infiltration, but it now gives diminishing returns (on exp) as you get to higher difficulties/levels\n- In Bladeburner, stamina gained from Hyperbolic Regeneration Chamber is now a percentage of your max stamina\n\n- Corporation Changes:\n\n - 'Demand' value of products decreases more slowly\n - Bug Fix: Fixed a Corporation issue that broke the Market-TA2 Research\n - Bug Fix: Issuing New Shares now works properly\n\n- Bug Fix: Money Statistics tracker was incorrectly recording profits when selling stocks manually\n- Bug Fix: Fixed an issue with the job requirement tooltip for security jobs\n\n## v0.45.1 - 3/23/2019\n\n- Added two new Corporation Researches\n- General UI improvements (by hydroflame and koriar)\n- Bug Fix: Sleeve Netscript API should no longer cause Dynamic RAM errors\n- Bug Fix: sleeve.getSleeveStats() should now work properly\n\n## v0.45.0 - 3/22/2019\n\n- Corporation changes:\n\n - Decreased the time of a full market cycle from 15 seconds to 10 seconds.\n - This means that each Corporation 'state' will now only take 2 seconds, rather than 3\n - Increased initial salaries for newly-hired employees\n - Increased the cost multiplier for upgrading office size (the cost will increase faster)\n - The stats of your employees now has a slightly larger effect on production & sales\n - Added several new Research upgrades\n - Market-TA research now allows you to automatically set sale price at optimal values\n - Market-TA research now works for Products (not just Materials)\n - Reduced the amount of Scientific Research needed to unlock the Hi-Tech R&D Laboratory from 10k to 5k\n - Energy Material requirement of the Software industry reduced from 1 to 0.5\n - It is now slightly easier to increase the Software industry's production multiplier\n - Industries now have a maximum number of allowed products, starting at 3. This can be increased through research.\n - You can now see an approximation of how each material affects an industry's production multiplier by clicking the \"?\" help tip next to it\n - Significantly changed the effects of the different employee positions. See updated descriptions\n - Reduced the amount of money you gain from private investors\n - Training employees is now 3x more effective\n - Bug Fix: An industry's products are now properly separated between different cities\n\n- The QLink Augemntation is now significantly stronger, but also significantly more expensive (by hydroflame)\n- Added a Netscript API for Duplicate Sleeves (by hydroflame)\n- Modified the multipliers of BitNode-3 and BitNode-8 to make them slightly harder\n- After installing Augmentations, Duplicate Sleeves will now default to Synchronize if their Shock is 0\n- Bug Fix: Bladeburner's Hyperbolic Regeneration Chamber should no longer instantly refill all stamina\n- Bug Fix: growthAnalyze() function now properly accounts for BitNode multipliers\n- Bug Fix: The cost of purchasing Augmentations for Duplicate Sleeves no longer scales with how many Augs you've purchased for yourself\n\n## v0.44.1 - 3/4/2019\n\n- Duplicate Sleeve changes:\n\n - You can now purchase Augmentations for your Duplicate Sleeves\n - Sleeves are now assigned to Shock Recovery task by default\n - Shock Recovery and Synchronize tasks are now twice as effective\n\n- Changed documentation so that Netscript functions are own their own pages. Sorry if this is annoying, it was necessary for properly cross-referencing\n- Officially deprecated the Wiki (the fandom site). Use the 'readthedocs' Documentation instead\n- Bug Fix: 'rm' Terminal and Netscript commands now work on non-program files that have '.exe' in the name (by Github user MasonD)\n- Bug Fix: The 'Find All Valid Math Expressions' Coding Contract should now properly ignore whitespace in answers\n- Bug Fix: The 'Merge Overlapping Intervals' Coding Contract should now properly accept 2D arrays when being attempted through Netscript\n\n## v0.44.0 - 2/26/2019\n\n- Bladeburner Changes:\n - Reduced the amount of rank needed to earn a skill point\n - Reduced the effects of the \"Reaper\" and \"Evasive System\" skills\n - Increased the effect of the \"Hyperdrive\" and \"Hands of Midas\" skills\n - Slightly increased the rate which the skill point cost rises for almost all skills\n - The \"Overlock\" Skill now has a maximum level of 90 instead of 95\n - Money earned from Contracts increased by 400%\n - Changed the way population affects success rate. Extreme populations now have less dramatic effects\n - Added two new General Actions: Diplomacy and Hyperbolic Regeneration Chamber\n - Lowered the rep and money cost of the \"Blade's Simulacrum\" augmentation\n - Significantly decreased the initial amount of Contracts/Operations (the \"Contracts/Operations remaining\" value)\n - Decreased the rate at which the amount of Contracts/Operations increases over time\n - Decreased the number of successes you need to increase the max level of a Contract/Operation\n - Increased the average number of Synthoid communities each city has\n - Reduced the amount by which a successful raid will decrease the population of a city\n - The \"riots\" event will now increase the chaos of a city by a greater amount\n - Significantly increased the effect that Agility and Dexterity have on action time\n- Added new BitNode multipliers:\n - HomeComputerRamCost - Affects how much it costs to upgrade home computer's RAM\n - DaedalusAugsRequirement - Affects how many Augmentations you need in order to get invited to Daedalus\n - FourSigmaMarketDataCost - Affects how much it costs to unlock the stock market's 4S Market Data\n - FourSigmaMarketDataApiCost - Affects how much it costs to unlock the stock market's 4S Market Data API\n- A few minor changes to BitNode multipliers across the board (mostly for the new multipliers)\n- 'The Covenant' now requires 20 total Augmentations to get invited, rather than 30\n- You can now purchase permanent Duplicate Sleeves from 'The Covenant'. This requires Source-File 10, and you must be in BN-10 or after\n- You can now track where all of your money comes from in the 'Stats' page\n- Increased the money gained from Coding Contracts by 50%\n- getCharacterInformation() function now returns the player's HP and max HP\n- Bug Fix: You can no longer disconnect the enemy's connections in Hacking Missions\n- Bug Fix: Duplicate Sleeve faction reputation gain is now properly affected by faction favor\n- Bug Fix: After installing Augmentations, the Terminal display will now correctly show the current server as \"home\"\n- Bug Fix: Fixed an exploit where you could change the duration of timed functions (e.g. hack, weaken) in NetscriptJS\n- Bug Fix: You should now properly be able to use the ServerProfile.exe program\n- Bug Fix: Prevented exploit that allowed you to accept faction invites programmatically through NetscriptJS\n- Bug Fix: Faction invitations for megacorporations should now work properly\n\n## v0.43.1 - 2/11/2019\n\n- Terminal changes:\n\n - Quoted arguments are now properly parsed. (e.g. 'run f.script \"this is one argument\"' will be correctly parsed)\n - Errors are now shown in red text\n - 'unalias' command now has a different format and no longer needs the quotations\n - Bug Fix: Fixed several edge cases where autocomplete wasn't working properly\n\n- Added two new Bladeburner skills for increasing money and experience gain\n- Made some minor adjustments to Bladeburner UI\n- Corporation \"Smart Factories\" and \"Smart Storage\" upgrades have slightly lower price multipliers\n- Added nFormat Netscript function\n- Added 6 new Coding Contract problems\n- Updated documentation with list of all Coding Contract problems\n- Minor improvements for 'Active Scripts' UI\n- Implemented several optimizations for active scripts. The game should now use less memory and the savefile should be slightly smaller when there are many scripts running\n- Bug Fix: A Stock Forecast should no longer go above 1 (i.e. 100%)\n- Bug Fix: The cost of Resleeves should no longer be affected by buying Augs\n- Bug Fix: Duplicate Sleeves now use their own stats to determine crime success rate, instead of the host consciousness' stats\n- Bug Fix: You can now call the prompt() Netscript function from multiple scripts simultaneously\n\n## v0.43.0 - 2/4/2019\n\n- Added BitNode-10: Digital Carbon\n\n- Stock Market Changes:\n\n - Each stock now has a maximum number of shares you can purchase (both Long and Short positions combined)\n - Added getStockMaxShares() Netscript function to the TIX API\n - The cost of 4S Market Data TIX API Access increased from $20b to $25b\n\n- Job Changes:\n\n - You can now hold multiple jobs at once. This means you no longer lose reputation when leaving a company\n - Because of this change, the getCharacterInformation() Netscript function returns a slightly different value\n\n- Script Editor Changes:\n\n - Added new script editor: CodeMirror. You can choose between the old editor (Ace) or CodeMirror\n - Navigation keyboard shortcuts no longer work if the script editor is focused\n\n- Trying to programmatically run a script (run(), exec()) with a 'threads' argument of 0 will now cause the function to return false without running the script\n- Home Computer RAM is now capped at 2 ^ 30 GB (1073741824 GB)\n- The maximum amount, maximum RAM, and cost of purchasing servers can now vary between different BitNodes (new BitNode multipliers)\n- Pop-up dialog boxes are a little bit bigger\n- Bug Fix: When importing scripts, \"./\" will now be properly ignored (e.g. import { foo } from \"./lib.script\" )\n\n## v0.42.0 - 1/8/2019\n\n- Corporation Changes:\n\n - Corporation can now be self-funded with $150b or using seed money in exchange for 500m newly-issued shares\n - In BitNode-3, you no longer start with $150b\n - Changed initial market prices for many materials\n - Changed the way a material's demand, competition, and market price change over time\n - The sale price of materials can no longer be marked-up as high\n - Added a Research Tree mechanic. Spend Scientific Research on permanent upgrades for each industry\n - You can now redistribute earnings to shareholders (including yourself) as dividends\n - Cost of \"Smart Supply\" upgraded reduced from $50b to $25b\n - Now has offline progress, which works similarly to the Gang/Bladeburner mechanics\n - Slightly reduced the amount of money offered to you by investment firms\n - Employee salaries now slowly increase over time\n - Slightly reduced the effect \"Real Estate\" has on the Production Multiplier for the Agriculture industry\n - Changed the way your Corporation's value is calculated (this is what determines stock price)\n - After taking your corporation public, it is now possible to issue new shares to raise capital\n - Issuing new shares can only be done once every 12 hours\n - Buying back shares must now be done at a premium\n - Selling shares can now only be done once per hour\n - Selling large amounts of shares now immediately impacts stock price (during the transaction)\n - Reduced the initial cost of the DreamSense upgrade from $8b to $4b, but increased its price multiplier\n - Reduced the price multiplier for ABC SalesBots upgrade\n\n- Added getOrders() Netscript function to the TIX API\n- Added getAugmentationPrereq() Singularity function (by havocmayhem)\n- Added hackAnalyzePercent() and hackAnalyzeThreads() Netscript functions\n- Stock Market, Travel, and Corporation main menu links are now properly styled\n- Many pop-up/dialog boxes now support the 'Enter' and 'Esc' hotkeys. If you find a pop-up/dialog box that doesnt support this, let me know specifically which one ('Enter' for the default option, 'Esc' for cancelling and closing the pop-up box)\n- Added \"brace_style = preserve_inline\" configuration to Script Editor Beautifier\n- ServerProfiler.exe can now be purchased from the Dark Web\n- Added an option to copy save data to clipboard\n- Added total multiplier information on the \"Augmentations\" page\n- Bug Fix: gymWorkout() Singularity function should now work properly with Millenium Fitness Gym\n- Began migrating gameplay information to the ReadTheDocs documentation\n\n## v0.41.2 - 11/23/2018\n\n- IMPORTANT - Netscript Changes:\n\n - rm() now takes an optional parameter that lets you specify on which server to delete the file\n - Added growthAnalyze() Netscript function\n\n- Gang Changes:\n\n - UI now displays your chance to win a clash with other gangs\n - Added getChanceToWinClash() function to the Gang API\n - Added getEquipmentType() function to the Gang API\n - Added several new hacking-based equipment and Augmentations\n - Rebalanced several equipment/upgrades to give less defense\n - Wanted level gain rate is now be slightly higher for all tasks\n - Rebalanced parameters for \"hacking\" tasks\n\n- Added new Main Menu configuration in .fconf: \"compact\"\n- Added the terminal command 'expr', which can be used to evaluate simple mathematical expressions\n- Bug Fix: Can no longer purchase duplicate equipment/Augmentations through gang.purchaseEquipment()\n- Bug Fix: scp() should no longer throw errors when used with 2-arguments and an array of files\n- Bug Fix: Coding Contracts no longer give money in BitNode-8\n- Bug Fix: In Bladeburner, you can no longer start a BlackOp through the Netscript API if it has already been completed\n- Bug Fix: In Bladeburner, fixed a bug which caused the configured 'automate' actions to occasionally be switched to other actions\n- Bug Fix: 'Return to World' button at locations no longer accumulates event listeners\n- Bug Fix: Working & taking classes now continuously add/subtract money during the action, instead of doing it at completion\n- Bug Fix: Top-right overview panel now displays negative money using '-' instead of '()'\n- Bug Fix: Stock Market UI should no longer show 'NaN' profit immediately after buying a stock\n\n## v0.41.1 - 11/5/2018\n\n- IMPORTANT - Netscript Changes:\n\n - purchaseTor() now returns true if you already have a TOR router (it used to return false)\n - getPurchasedServerCost() now returns Infinity if the specified RAM is an invalid amount or is greater than the max amount of RAM (2 ^ 20 GB)\n - Added purchase4SMarketData() and purchase4SMarketDataTixApi() functions\n - getScriptLogs() now takes in optional arguments that let you get the logs of another script\n\n- Stock Market changes:\n\n - Stocks now have \"maximum prices\". These are hidden from the player\n - If a stock reaches its \"maximum price\", it will most likely drop in value (although it might still rise)\n - Each stock has its own, unique maximum price\n - Maximum price for each stock are randomly generated and change during each 'reset'\n - Stock Market cycles are now accumulated/stored, much like it is for Gangs and Bladeburners\n - Accumulated/stored cycles cause stock prices to update up to 50% faster (from every 6 seconds to 4 seconds)\n - This means that after coming back from being offline, stock prices will update faster to make up for offline time\n\n- Decreased the Hacking Level multiplier for BitNodes 6 and 7 to 0.4 (from 0.5)\n- Bladeburner console history is now saved and persists when switching screens or closing/reopening the game\n- In Bladeburner, if your stamina reaches 0 your current action will be cancelled\n- b1t_flum3.exe is no longer removed from your home computer upon reset\n- Added main menu link for the Stock Market (once you've purchased an account)\n- Job main menu link only appears if you actually have a job\n- Bug Fix: Netscript Gang API functions purchaseEquipment() and ascendMember() should now work properly\n- Bug Fix: After installing Augs, the \"Portfolio Mode\" button on the Stock Market page should be properly reset\n- Bug Fix: bladeburner.getActionCountRemaining()'s return value is now rounded down (by Kline-)\n\n## v0.41.0 - 10/29/2018\n\n- WARNING: In NetscriptJS, defining a function called print() is no longer possible\n- Gang Mechanic Changes (BitNode-2):\n - Added a Gang Netscript API\n - Added new 'ascension' mechanic for Gang Members\n - The first three gang members are now 'free' (can be recruited instantly)\n - Maximum number of increased Gang Members increased from 20 to 30\n - Changed the formula for calculating respect needed to recruit the next gang member\n - Added a new category of upgrades for Gang Members: Augmentations\n - Non-Augmentation Gang member upgrades are now significantly weaker\n - Reputation for your Gang faction can no longer be gained through Infiltration\n - Re-worked the territory 'warfare' mechanic so that player can choose when to engage in it\n - Gang Members can now be killed during territory 'warfare'\n - Changed BitNode-2 Multipliers to make hacking slightly less profitable\n - Gang Member Equipment + Upgrades now get cheaper as your gang grows in power and respect\n - The effects of Source-File 2 are now slightly more powerful\n- RAM Cost of accessing the global document object lowered from 100 GB to 25 GB\n- RAM Cost to use Singularity Functions outside of BitNode-4 lowered by 75%. They now only cost twice as much as they do in BitNode-4\n- b1t_flum3.exe now takes significantly less time to create\n- Crimes commited through Singularity function no longer give half money/exp (there is now no penalty)\n- Improved number formatting for Player 'work' actions (including crimes, etc.). These numbers should also adhere to locale settings now (by Kline-)\n- The order that Augmentations are listed in (when purchasing from Faction and viewing your Augmentations) is now saved and persists when choosing different orders\n- getCharacterInformation() Singularity function now returns multiplier information (from Augmentations/Source Files)\n- Bug Fix: Calling print() in NetscriptJS no longer brings up the print dialog\n- Bug Fix: Fixed a bug that sometimes caused a blank black screen when destroying/resetting/switching BitNodes\n- Bug Fix: Netscript calls that throw errors will now no longer cause the 'concurrent calls' error if they are caught in the script. i.e. try/catch should now work properly in scripts\n- Bug Fix: Fixed a bug where sometimes the NeuroFlux Governor Augmentation level would be incorrectly calculated when the game was loaded\n- Bug Fix: Fixed a bug where calling the scp() Netscript function with invalid hostname/ips would throw an unclear error message\n- Bug Fix: Bladeburner API function getActionCountRemaining() should now work properly for BlackOps\n- Bug Fix: Black Ops can no longer be attempted out-of-order or without the required rank via Bladeburner API\n- Bug Fix: Dynamic RAM Calculation now properly accounts for number of threads\n- RAM cost for basic Netscript functions added to documentation (by CBJamo)\n\n## v0.40.5 - 10/09/2018\n\n- Added codingcontract.getContractType() Netscript function\n- Bug Fix: codingcontract.getData() Netscript function now returns arrays by value rather than reference\n- Bug Fix: Decreased highest possible data value for 'Find Largest Prime Factor' Coding Contract (to avoid hangs when solving it)\n- Bug Fix: Fixed a bug that caused game to freeze during Coding Contract generation\n\n## v0.40.4 - 9/29/2018\n\n- Added new Coding Contracts mechanic. Solve programming problems to earn rewards\n- The write() and read() Netscript functions now work on scripts\n- Added getStockSymbols() Netscript function to the TIX API (by InfraK)\n- Added wget() Netscript function\n- Added bladeburner.getActionRepGain() function to the Netscript Bladeburner API\n- The getLevelUpgradeCost(), getRamUpgradeCost(), and getCoreUpgradeCost() functions in the Hacknet API now return Infinity if the node is at max level. See documentation\n- It is now possible to use freely use angled bracket (<, >) and create DOM elements using tprint()\n- The game's theme colors can now be set through the Terminal configuration (.fconf).\n- You can now switch to the old left-hand main menu bar through the Terminal configuration (.fconf)\n- Bug Fix: grow() percentage is no longer reported as Infinity when a server's money is grown from 0 to X\n- Bug Fix: Infiltration popup now displays the correct amount of exp gained\n\n## v0.40.3 - 9/15/2018\n\n- Bladeburner Changes:\n - Increased the effect that agi and dexterity have on action time\n - Starting number of contracts/operations available will be slightly lower\n - Random events will now happen slightly more often\n - Slightly increased the rate at which the Overclock skill point cost increases\n- The maximum volatility of stocks is now randomized (randomly generated within a certain range every time the game resets)\n- Increased the range of possible values for initial stock prices\n- b1t_flum3.exe program can now be created immediately at Hacking level 1 (rather than hacking level 5)\n- UI improvements for the character overview panel and the left-hand menu (by mat-jaworski)\n- General UI improvements for displays and Terminal (by mat-jaworski)\n- Added optional parameters to the getHackTime(), getGrowTime(), and getWeakenTime() Netscript functions\n- Added isLogEnabled() and getScriptLogs() Netscript functions\n- Added donateToFaction() Singularity function\n- Updated documentation to reflect the fact that Netscript port handles (getPortHandle()) only works in NetscriptJS (2.0), NOT Netscript 1.0\n- Added tryWrite() Netscript function\n- When working (for a company/faction), experience is gained immediately/continuously rather than all at once when the work is finished\n- Added a setting in .fconf for enabling line-wrap in the Terminal input\n- Adding a game option for changing the locale that most numbers are displayed in (this mostly applies for whenever money is displayed)\n- The randomized parameters of many high-level servers can now take on a higher range of values\n- Many 'foreign' servers (hackable servers that you don't own) now have a randomized amount of RAM\n- Added 'wget' Terminal command\n- Improved the introductory tutorial\n\n## v0.40.2 - 8/27/2018\n\n- Bladeburner Changes:\n - Added getBonusTime(), getSkillUpgradeCost(), and getCity() Netscript functions to the API\n - Buffed the effects of many Bladeburner Augmentations\n - The Blade's Simulacrum Augmentation requires significantly less reputation but slightly more money\n - Slightly increased the amount of successes needed for a Contract/Operation in order to increase its max level\n - Increased the amount of money gained from Contracts by ~25%\n - Increased the base amount of rank gained from Operations by 10%\n - Significantly increased the 'randomness' in determining a Contract/Operation's initial count and rate of count increase\n - The number (count) of Operations should now increase significantly faster\n - There are now, on average, more Synthoid communities in a city\n - If automation is enabled (the feature in Bladeburner console), then switching to another action such as working for a company will now disable the automation\n- Stock Market Changes:\n - Added a watchlist filter feature to the UI that allows you to specify which stocks to show\n - Added the Four Sigma (4S) Market Data feed, which provides volatility and price forecast information about stocks\n - Added the 4S Market Data TIX API, which lets you access the aforementioned data through Netscript\n- There is now a setting for enabling/disabling the popup that appears when you are hospitalized\n- Bug Fix: Stock market should now be correctly initialized in BitNode-8 (by Kline-)\n- Bug Fix: bladeburner.getCurrentAction() should now properly an 'Idle' object rather than null (by Kline-)\n- Bug Fix: Bladeburner skill cost multiplier should now properly increase in BitNode-12 (by hydroflame)\n- Bug Fix: 'document', 'hacknet', and 'window' keywords should no longer be counted multiple times in RAM calculations\n- Bug Fix: Joining factions through Singularity functions should now prevent you from joining opposing factions\n- Bug Fix: Four Sigma should no longer have two 'Speech Enhancement' Augmentations (by Kline-)\n\n## v0.40.1 - 8/5/2018 - Community Update\n\n- Added getPurchasedServerCost() Netscript function (by kopelli)\n- Added getFavorToDonate() Netscript function (by hydroflame)\n- Added getFactionFavorGain() and getCompanyFavorGain() Singularity functions (by hydroflame)\n- Accumulated 'bonus' time in Bladeburner is now displayed in the UI (by hydroflame)\n- The Red Pill can now be purchased with negative money (since its supposed to be free) (by hydroflame)\n- Cranial Signal Processor Augmentations now have the previous generation as a prerequisite. i.e. Cranial Signal Processor - Gen II requires Gen I (by Kline-)\n- Terminal now supports semicolon usage (end of command). This allows chaining multiple Terminal commands (by hydroflame)\n- Bladeburner Raid operations can no longer be performed if your estimate of Synthoid communities is zero (by hydroflame)\n- The difficulty of BN-12 now scales faster (by hydroflame)\n- Active Scripts UI now shows a RAM Usage bar for each server (by kopelli)\n- Bug Fix: Corrected terminal timestamp format (by kopelli)\n- Bug Fix: NetscriptJS scripts should now die properly if they don't have a 'main' function (by hydroflame)\n- Bug Fix: write(), read(), and tryWrite() Netscript functions should now work properly for writing Arrays/objects to Netscript Ports\n- Various minor UI/QOL fixes by hydroflame, kopelli, and Kline-\n\n## v0.40.0 - 7/28/2018\n\n- **WARNING: This update makes some significant changes to Netscript and therefore you may need to make some changes to your scripts. See** `this post `\\_ **this post for details**\n- Netscript 1.0 (NS1) now uses a fully-fledged ES5 JavaScript Interpreter. This means many new features are now available in NS1, and this also fixes several bugs.\n However this also means any ES6+ features are no longer supported in NS1\n- When a server is hacked with a very large number of threads and left with no money, the server's security level\n now only increases by however many threads were needed to drain the server. For example, if you hack a server with\n 5000 threads but it only needed 2000 threads to deplete the server's money, then the server's security will only increase\n as if you had hacked it with 2000 threads (change by hydroflame)\n- Added getCurrentAction() to Bladeburner API\n- Added a variety of functions to Bladeburner API that deal with action levels (change by hydroflame)\n- Added getPurchasedServerLimit() and getPurchasedServerMaxRam() functions to Netscript (change by hydroflame & kopelli)\n- Added getOwnedSourceFiles() Singularity function (by hydroflame)\n- Completely re-designed the Hacknet Node API\n- getSkillLevel() in Bladeburner API now returns an error if no argument is passed in (as opposed to an object with all skill levels). This may break scripts\n- Minimum Netscript execution time reduced from 15ms to 10ms (configurable in Options)\n- Company reputation needed to get invited to Megacorporation factions decreased from 250k to 200k\n- HP is now reset (restored) when Augmenting\n- Source-File 6 now increases both the level and experience gain of all combat stats (it was only experience gain previously)\n- Reverted a previous change for Source-File 12. It's benefits are now multiplicative rather than additive\n- Starting Infiltration security level for almost every location decreased by ~10%\n- Changed 'fl1ght.exe' message when its listed conditions are fulfilled (by hydroflame)\n- The 'Save Game' button in the top-right overview panel now flashes red if autosave is disabled\n- Bug Fix: Infiltration buttons can no longer be clicked through NetscriptJS\n- Bug Fix: Bladeburner 'Overclock' skill can no longer be leveled above max level through the API (by hydroflame)\n- Bug Fix: Healthcare division in Bladeburner should no longer cause game to crash\n\n## v0.39.1 - 7/4/2018\n\n- Bladeburner Rank gain in BN-7 is now reduced by 40% instead of 50%\n- Quadrupled the amount of money gained from Bladeburner contracts\n- Added joinBladeburnerDivision() Netscript function to Bladeburner API\n- Doubled the effects of Source-File 5. Now gives 8%, 12%, and 14% increase to all hacking multipliers at levels 1, 2, and 3, respectively (increased from 4%/6%, 7%)\n- Increased the effect of Source-File 8. It now gives a 12%, 18% and 21% to your hacking growth multiplier at levels 1, 2, and 3, respectively (increased from 8%, 12%, 14%)\n- The effect of Source-File 12 is now additive with itself, rather than multiplicative. This means that level N of Source-File 12 now increases all multipliers by N%\n- The setting to suppress the confirmation box when purchasing Augmentations was moved into the main Options menu (by Github user hydroflame)\n- Bug Fix: Crime Success rates were being calculated incorrectly (by Github user hydroflame)\n- When an Infiltration is finished, you will now return back to the company's page, rather than the city\n- Infiltration faction reputation selector now remembers your last choice\n- Significantly increased the amount of money gained from Infiltration\n- Bug Fix: Copying a NetscriptJS script to another server using scp now properly takes into account the script's changes.\n- Bug Fix: Fixed an issue where game would not load in Edge due to incompatible features\n- travelToCity() Singularity function no longer grants Intelligence exp\"\n\n## v0.39.0 - 6/25/2018\n\n- Added BitNode-7: Bladeburner 2079\n- Infiltration base difficulty decreased by 10% for most locations\n- Experience gains from Infiltration slightly increased\n- Money gained from Infiltration increased by 20%\n- Added 'var' declarations in Netscript 1.0 (only works with 'var', not 'let' or 'const')\n- Script base RAM cost is now 1.6 GB (increased from 1.4 GB)\n- While/for loops and if statements no longer cost RAM in scripts\n- Made short-circuit evaluation logic more consistent in Netscript 1.0\n- Changelog button in the Options menu now links to the new Changelog URL (by Github user thePalindrome)\n- Skill level calculation is now 'smoother' (by Github user hydroflame)\n- Added a button to 'beautify' scripts in the text editor (by Github user hydroflame)\n- Added favicon (by Github user kopelli)\n\n## v0.38.1 - 6/15/2018\n\n- Bug Fix: Using 'Object.prototype' functions like toLocaleString() or toString() should no longer cause errors in NetscriptJS\n- Implemented by Github user hydroflame:\n - Accessing the 'window' and 'document' objects in Netscript JS now requires a large amount of RAM (100 GB)\n - Added game option to suppress travel confirmation\n - Text on buttons can no longer be highlighted\n - Bug Fix: Fixed an issue that caused NaN values when exporting Real Estate in Corporations\n - Bug Fix: Competition and Demand displays in Corporation are now correct (were reversed before)\n - Added ps() Netscript function\n - Bug Fix: grow() should no longer return/log a negative value when it runs on a server that's already at max money\n - Bug Fix: serverExists() Netscript function should now properly return false for non-existent hostname/ips\n - Bug Fix: Sever's security level should now properly increase when its money is grown to max value\n\n## v0.38.0 - 6/12/2018\n\n- New BitNode: BN-12 The Recursion - Implemented by Github user hydroflame\n- Bladeburner Changes:\n - Bladeburner progress is no longer reset when installing Augmentations\n - The number of successess needed to increase a Contract/Operation's max level now scales with the current max level (gradually gets harder)\n - All Bladeburner Augmentations are now slightly more expensive and require more reputation\n - Black Operations now give higher rank rewards\n - Doubled the base amount of money gained from Contracts\n - Increased the amount of experience gained from Contracts/Actions\n - Added a new Augmentation: The Blade's Simulacrum\n - Bladeburner faction reputation gain is now properly affected by favor\n- Hacking is now slightly less profitable in BitNode-3\n- Updated Hacknet Nodes UI - Implemented by Github user kopelli\n- Bug Fix: Fixed an exploit that allowed calling any Netscript function without incurring any RAM Cost in NetscriptJS\n\n## v0.37.2 - 6/2/2018\n\n- After joining the Bladeburners division, there is now a button to go to the Bladeburner content\n in the 'City' page\n- You now start with $250m in BitNode-8 (increased from $100m)\n- Bug Fix: You can now no longer directly edit Hacknet Node values through NetscriptJS (hopefully)\n- Bug Fix: Bladeburners is no longer accessible in BN-8\n- Bug Fix: getBitNodeMultipliers() Netscript function now returns a copy rather than the original object\n\n## v0.37.1 - 5/22/2018\n\n- You now earn money from successfully completing Bladeburner contracts. The amount you earn is based\n on the difficulty of the contract.\n- Completing Field Analysis in Bladeburner now grants 0.1 rank\n- The maximum RAM you can get on a purchased server is now 1,048,576 GB (2^20)\n- Bug Fix: Fixed Netscript syntax highlighting issues with the new NetscriptJS\n- Bug Fix: Netscript Functions now properly incur RAM costs in NetscriptJS\n- Bug Fix: deleteServer() now fails if its called on the server you are currently connected to\n- Removed in-game Netscript documentation, since it was outdated and difficult to maintain.\n- Bug Fix: Updated the gymWorkout() Singularity function with the new exp/cost values for gyms\n\n## v0.37.0 - 5/20/2018\n\n- NetscriptJS (Netscript 2.0) released\n- Running the game with the '?noScripts' query will start the game without loading any of your scripts. This should be used if you accidentally write a script that crashes your game\n\n## v0.36.1 - 5/11/2018\n\n- Bladeburner Changes:\n - Bug Fix: You can no longer get Bladeburner faction reputation through Infiltration\n - Initial difficulty of Tracking contracts reduced\n - Datamancer skill effect increased from 4% per level to 5%\n - Slightly decreased the base stamina cost of contracts/operations\n - Slightly increased the effects of the Tracer, Digital Observer, Short Circuit, Cloak, and Blade's Intuition skills\n - Overclock skill capped at level 95, rather than 99\n - Training gives significantly more exp/s\n- Crime, Infiltration, and Hacking are now slightly more profitable in BN-6\n- Gyms are now more expensive, but give slightly more exp\n- Added getScriptName() and getHacknetMultipliers() Netscript functions (added by Github user hydroflame)\n- getScriptRam() Netscript function now has default value for the second argument, which is hostname/ip (implemented by Github user hydroflame)\n- There is now a soft-cap on stock price, which means it's no longer possible for the price of a stock to reach insanely-high values\n- The ctrl+b hotkey in the text editor should now also be triggered by command+b on OSX (I don't have OSX so I can't confirm if this works)\n- Many servers now have additional RAM\n- Added an option to disable hotkeys/keyboard shortcuts\n- Refactored 'Active Scripts' UI page to optimize its performance\n- Added a new .fconf Terminal setting: ENABLE_TIMESTAMP\n- 'Netscript Execution Time', which can be found in the Options, now has a minimum value of 15ms rather than 25ms\n- Bug Fix: Fixed a typo in the Fulcrum Technologies company name (Technolgies -> Technologies)\n- Bug Fix: hacknetnodes keyword should no longer incur RAM cost if its in a comment\n- Bug Fix: disableLog() now works for the commitCrime() Netscript function (fixed by Github user hydroflame)\n\n## v0.36.0 - 5/2/2018\n\n- Added BN-6: Bladeburners\n- Rebalanced many combat Augmentations so that they are slightly less powerful\n- Bug Fix: When faction invites are suppressed, an invitation will no longer load the Faction page\n\n## v0.35.2 - 3/26/2018\n\n- Corporation Changes:\n - Fixed an issue with Warehouse upgrade cost. Should now be significantly cheaper than before.\n - Scientific Research now has a slightly more significant effect on Product quality\n - The Energy and Water Utilities industries are now slightly more profitable\n - The Robotics and Computer Hardware industries are now less profitable\n - The Software industry is slightly less profitable\n - When selling Materials and Products, the 'PROD' qualifier can now be used to set dynamic sell amounts based on your production\n - Exporting MAX should now work properly\n - You can no longer export past storage limits\n - Scientific Research production reduced\n - Effects of AdVert. Inc upgrade were reduced, but the effect that popularity and awareness have on sales was increased to compensate (popularity/awareness numbers were getting too big with Advert. Inc)\n - Bug Fix: Products from Computer Hardware division should now properly have ratings\n- Improved Augmentation UI/UX. Now contains collapsible headers and sort buttons\n- Improved Faction Augmentations display UI/UX. Now contains sort buttons. There is also an option to disable confirmation when purchasing Augmentations\n\n## v0.35.1 - 3/12/2018\n\n- You can now easily download all of your scripts/text files as zip folders. Use the 'help download' Terminal command for details\n- Scripts are now downloaded with the .script.js extension at the end of their filename\n- Corporation Management Changes:\n - Implemented Smart Supply unlock\n - Changed the way a division's Production Multiplier is calculated. It is now the sum of the individual Production Multiplier for every city. Therefore, it is now beneficial to open offices in different cities\n - Several small UI/UX improvements\n - Numerous balance changes. The significant ones are listed below.\n - Product descriptions will now display their estimated market price\n - The sale price of Products can no longer be marked up as high as before\n - Scientific Research now affects the rating of Products\n - In general, the maximum amount of product you are able to sell is reduced\n - Sale bonus from advertising (popularity/awareness) now has diminishing returns rather than scaling linearly\n- Experience gained during Infiltration now scales linearly based on the clearance level you reach. Compared to before, the experience gained will be much less at lower clearance levels, but much more at higher clearance levels\n- The editor can now be used to edit both scripts and text files\n- New Terminal config file that can be edited using the command 'nano .fconf'. Right now there is only one option, but there will be more in the future.\n- You can now enable Bash-style Terminal hotkeys using the .fconf file referenced above\n- Bug Fix: Fixed an issue with the UI elements of Gang Management persisting across different instances of BitNode-2\n\n## v0.35.0 - 3/3/2018\n\n- Minor rebalancing of BitNodes due to the fact that Corporations provide a (relatively) new method of progressing\n- Corporation Management Changes:\n - Once your Corporation gets big/powerful enough, you can now bribe Factions for reputation using company funds an/or stock shares\n - You can now only create one Division for every Industry type\n - Added several new UI/UX elements\n - Wilson Analytics multiplier was significantly reduced to 1% per level (additive).\n - Reduced the effect of Advert Inc upgrade. Advert Inc. upgrade price increases faster\n - Materials can now be marked up at higher prices\n- Added Javascript's built-in Number object to Netscript\n- Added getCharacterInformation(), getCompanyFavor(), and getFactionFavor() Netscript Singularity functions\n- Rebalanced Singularity Function RAM Costs. They now cost x8 as much when outside of BN-4 (rather than x10). Also, many of the functions now use significantly less RAM\n- Refactored Netscript Ports. You can now get a handle for a Netscript port using the getPortHandle() Netscript function. This allows you to access a port's underlying queue (which is just an array) and also makes several new functions available such as tryWrite(), full(), and empty().\n- Number of Netscript Ports increased from 10 to 20\n- Netscript assignments should now return proper values. i.e. i = 5 should return 5.\n- Added throw statements to Netscript. It's not super useful since 'catch' isn't implemented, but it can be used to generate custom runtime error messages.\n- Added import declaration to Netscript. With this, you are able to import functions (and only functions) from other files. Using export declarations is not necessary\n- Most Netscript Runtime errors (the ones that cause your script to crash) should now include the line number where the error occured\n- When working for a company, your current company reputation is now displayed\n- Whenever you get a Faction Invite it will be immediately appended to your 'invited factions' list. Therefore the checkFactionInvitations() Singularity Function should now be properly useable since you no longer need to decline a Faction Invitation before it shows up in the result.\n- Bug Fix: When purchasing servers, whitespace should now automatically be removed from the hostname\n- Bug Fix: Can no longer have whitespace in the filename of text files created using write()\n- Bug Fix: In Netscript, you can no longer assign a Hacknet Node handle (hacknetnodes[i]) to another value\n- Bug Fix: If you are in the Factions tab when you accept an invitation from a Faction, the page will now properly 'refresh'\n- Bug Fix: Scripts that run recursive functions should now be killed properly\n\n## v0.34.5 - 2/24/2018\n\n- Corporation Management Changes:\n - Market Research unlocks are now cheaper\n - New 'VeChain' upgrade: displays useful statistics about Corporation\n - Corporation cycles are processed 25% faster\n - Corporation valuation was lowered by ~10% (this affects stock price and investments)\n - Rebalanced the effects of advertising. Should now be more effective for every Industry\n - Fixed several bugs/exploits involving selling and buying back stock shares\n - You will now receive a Corporation Handbook (.lit file) when starting out BitNode-3. It contains a brief guide to help you get started. This same handbook can be viewed from the Corporation management screen\n - Slightly decreased the amount by which a Product's sell price can be marked up\n - Employees can now be assigned to a 'Training' task, during which they will slowly increase several of their stats\n- Hopefully fixed an exploit with Array.forEach(). If there are any issues with using forEach, let me know\n- Arguments passed into a script are now passed by value. This means modifying the 'args' array in a script should no longer cause issues\n- Scripts executed programatically (via run(), exec(), etc.) will now fail if null/undefined is passed in as an argument\n- Added peek() Netscript function\n- killall() Netscript function now returns true if any scripts were killed, and false otherwise.\n- hack() Netscript function now returns the amount of money gained for successful hacks, and 0 for failed hacks\n- scp Terminal command and Netscript function now work for txt files\n- Changes courtesy of Wraithan:\n - Text files are now displayed using 'pre' rather than 'p' elements when using the 'cat' Terminal command. This means tabs are retained and lines don't automatically wrap\n - ls() Netscript function now returns text files as well\n- Removed round() Netscript function, since you can just use Math.round() instead\n- Added disableLog() and enableLog() Netscript functions\n- Removed the 'log' argument from sleep(), since you can now use the new disableLog function\n- 'Netscript Documentation' button on script editor now points to new readthedocs documentation rather than wiki\n- When working for a faction, your current faction reputation is now displayed\n- Bug Fix: Hacking Missions should no longer break when dragging an existing connection to another Node\n- Bug Fix: Fixed RAM usage of getNextHacknetNodeCost() (is not 1.5GB instead of 4GB)\n\n## v0.34.4 - 2/14/2018\n\n- Added several new features to Gang UI to make it easier to manage your Gang.\n- Changed the Gang Member upgrade mechanic. Now, rather than only being able to have one weapon/armor/vehicle/etc., you can purchase all the upgrades for each Gang member and their multipliers will stack. To balance this out, the effects (AKA multipliers) of each Gang member upgrade were reduced.\n- Added a new script editor option: Max Error Count. This affects how many approximate lines the script editor will process (JSHint) for common errors. Increasing this option can affect negatively affect performance\n- Game theme colors (set using 'theme' Terminal command) are now saved when re-opening the game\n- 'download' Terminal command now works on scripts\n- Added stopAction() Singularity function and the spawn() Netscript function\n- The 'Purchase Augmentations' UI screen will now tell you if you need a certain prerequisite for Augmentations.\n- Augmentations with prerequisites can now be purchased as long as their prerequisites are puchased (before, you had to actually install the prerequisites before being able to purchase)\n\n## v0.34.3 - 1/31/2018\n\n- Minor balance changes to Corporations:\n - Upgrades are generally cheaper and/or have more powerful effects.\n - You will receive more funding while your are a private company.\n - Product demand decreases at a slower rate.\n - Production multiplier for Industries (receives for owning real estate/hardware/robots/etc.) is slightly higher\n- Accessing the hacknetnodes array in Netscript now costs 4.0GB of RAM (only counts against RAM usage once)\n- Bug Fix: Corporation oustanding shares should now be numeric rather than a string\n- Bug Fix: Corporation production now properly calculated for industries that dont produce materials.\n- Bug Fix: Gangs should now properly reset when switching BitNodes\n- Bug Fix: Corporation UI should now properly reset when you go public\n\n## v0.34.2 - 1/27/2018\n\n- Corporation Management Changes:\n - Added advertising mechanics\n - Added Industry-specific purchases\n - Re-designed employee management UI\n - Rebalancing: Made many upgrades/purchases cheaper. Receive more money from investors in early stage. Company valuation is higher after going public\n - Multiple bug fixes\n- Added rm() Netscript function\n- Updated the way script RAM usage is calculated. Now, a function only increases RAM usage the first time it is called. i.e. even if you call hack() multiple times in a script, it only counts against RAM usage once. The same change applies for while/for loops and if conditionals.\n- The RAM cost of the following were increased:\n - If statements: increased by 0.05GB\n - run() and exec(): increased by 0.2GB\n - scp(): increased by 0.1GB\n - purchaseServer(): increased by 0.25GB\n- Note: You may need to re-save all of your scripts in order to re-calculate their RAM usages. Otherwise, it should automatically be re-calculated when you reset/prestige\n- The cost to upgrade your home computer's RAM has been increased (both the base cost and the exponential upgrade multiplier)\n- The cost of purchasing a server was increased by 10% (it is now $55k per RAM)\n- Bug fix: (Hopefully) removed an exploit where you could avoid RAM usage for Netscript function calls by assigning functions to a variable (foo = hack(); foo('helios');)\n- Bug fix: (Hopefully) removed an exploit where you could run arbitrary Javascript code using the constructor() method\n- Thanks to Github user mateon1 and Reddit users havoc_mayhem and spaceglace for notifying me of the above exploits\n- The fileExists() Netscript function now works on text files (.txt). Thanks to Github user devoidfury for this\n\n## v0.34.1 - 1/19/2018\n\n- Updates to Corporation Management:\n - Added a number of upgrades to various aspects of your Corporation\n - Rebalanced the properties of Materials and the formula for determining the valuation of the Corporation\n - Fixed a number of bugs\n- 'Stats' page now shows information about current BitNode\n- You should now be able to create Corporations in other BitNodes if you have Source-File 3\n- Added a new create-able program called b1t_flum3.exe. This program can be used to reset and switch BitNodes\n- Added an option to adjust autosave interval\n- Line feeds, newlines, and tabs will now work with the tprint() Netscript function\n- Bug fix: 'check' Terminal command was broken\n- Bug fix: 'theme' Terminal command was broken when manually specifying hex codes\n- Bug fix: Incorrect promotion requirement for 'Business'-type jobs\n- Bug fix: Settings input bars were incorrectly formatted when loading game\n\n## v0.34.0 - 12/6/2017\n\n- Added clear() and exit() Netscript functions\n- When starting out or prestiging, you will now receive a 'Hacking Starter Guide'. It provides tips/pointers for new players\n- Doubled the amount of RAM on low-level servers (up to required hacking level 150)\n- Slightly increased experience gain from Infiltration\n- buyStock(), sellStock(), shortStock(), and sellShort() Netscript function now return the stock price at which the transaction occurred, rather than a boolean. If the function fails for some reason, 0 will be returned.\n- Hacking Mission Changes:\n - You can now select multiple Nodes of the same type by double clicking. This allows you to set the action of all of selected nodes at once (e.g. set all Transfer Nodes to Fortify). Creating connections does not work with this multi-select functionality yet\n - Shield and Firewall Nodes can now fortify\n - The effects of Fortifying are now ~5% lower\n - Conquering a Spam Node now increases your time limit by 25 seconds instead of 15\n - Damage dealt by Attacking was slightly reduced\n - The effect of Scanning was slightly reduced\n - Enemy CPU Core Nodes start with slightly more attack. Misc Nodes start with slightly less defense\n- Corporation Management changes:\n - Added several upgrades that unlock new features\n - Implemented Exporting mechanic\n - Fixed many bugs\n\n## v0.33.0 - 12/1/2017\n\n- Added BitNode-3: Corporatocracy. In this BitNode you can start and manage your own corporation. This feature is incomplete. Much more will be added to it in the near future\n- Minor bug fixes\n\n## v0.32.1 - 11/2/2017\n\n- Updated Netscript's 'interpreter/engine' to use the Bluebird promise library instead of native promises. It should now be faster and more memory-efficient. If this has broken any Netscript features please report it through Github or the subreddit (reddit.com/r/bitburner)\n- Rebalanced stock market (adjusted parameters such as the volatility/trends/starting price of certain stocks)\n- Added prompt() Netscript function\n- Added 'Buy Max' and 'Sell All' functions to Stock Market UI\n- Added 'Portfolio' Mode to Stock Market UI so you can only view stocks you have a position/order in\n- Added a button to kill a script from its log display box\n\n## v0.32.0 - 10/25/2017\n\n- Added BitNode-8: Ghost of Wall Street\n- Re-designed Stock Market UI\n- Minor bug fixes\n\n## v0.31.0 - 10/15/2017\n\n- Game now saves to IndexedDb (if your browser supports it). This means you should no longer have trouble saving the game when your save file gets too big (from running too many scripts). The game will still be saved to localStorage as well\n- New file type: text files (.txt). You can read or write to text files using the read()/write() Netscript commands. You can view text files in Terminal using 'cat'. Eventually I will make it so you can edit them in the editor but that's not available yet. You can also download files to your real computer using the 'download' Terminal command\n- Added a new Crime: Bond Forgery. This crime takes 5 minutes to attempt and gives $4,500,000 if successful. It is meant for mid game.\n- Added commitCrime(), getCrimeChance(), isBusy(), and getStats() Singularity Functions.\n- Removed getIntelligence() Netscript function\n- Added sprintf and vsprintf to Netscript. See [https://github.com/alexei/sprintf.js this Github page for details]\n- Increased the amount of money gained from Infiltration by 20%, and the amount of faction reputation by 12%\n- Rebalanced BitNode-2 so that Crime and Infiltration are more profitable but hacking is less profitable. Infiltration also gives more faction rep\n- Rebalanced BitNode-4 so that hacking is slightly less profitable\n- Rebalanced BitNode-5 so that Infiltration is more profitable and gives more faction rep\n- Rebalanced BitNode-11 so that Crime and Infiltration are more profitable. Infiltration also gives more faction rep.\n- Fixed an annoying issue in Hacking Missions where sometimes you would click a Node but it wouldnt actually get selected\n- Made the Hacking Mission gameplay a bit slower by lowering the effect of Scan and reducing Attack damage\n- Slightly increased the base reputation gain rate for factions when doing Field Work and Security Work\n\n## v0.30.0 - 10/9/2017\n\n- Added getAugmentations() and getAugmentationsFromFaction() Netscript Singularity Functions\n- Increased the rate of Intelligence exp gain\n- Added a new upgrade for home computers: CPU Cores. Each CPU core on the home computer grants an additional starting Core Node in Hacking Missions. I may add in other benefits later. Like RAM upgrades, upgrading the CPU Core on your home computer persists until you enter a new BitNode.\n- Added lscpu Terminal command to check number of CPU Cores\n- Changed the effect of Source-File 11 and made BitNode-11 a little bit harder\n- Fixed a bug with Netscript functions (the ones you create yourself)\n- Hacking Missions officially released (they give reputation now). Notable changes in the last few updates:\n - Misc Nodes slowly gain hp/defense over time\n - Conquering a Misc Node will increase the defense of all remaining Misc Nodes that are not being targeted by a certain percentage\n - Reputation reward for winning a Mission is now affected by faction favor and Player's faction rep multiplier\n - Whenever a Node is conquered, its stats are reduced\n\n## v0.29.3 - 10/3/2017\n\n- Fixed bug for killing scripts and showing error messages when there are errors in a player-defined function\n- Added function name autocompletion in Script Editor. Press Ctrl+space on a prefix to show autocompletion options.\n- Minor rebalancing and bug fixes for Infiltration and Hacking Missions\n\n## v0.29.2 - 10/1/2017\n\n- installAugmentations() Singularity Function now takes a callback script as an argument. This is a script that gets ran automatically after Augmentations are installed. The script is run with no arguments and only a single thread, and must be found on your home computer.\n- Added the ability to create your own functions in Netscript. See [[Netscript Functions|this link]] for details\n- Added :q, :x, and :wq Vim Ex Commands when using the Vim script editor keybindings. :w, :x, and :wq will all save the script and return to Terminal. :q will quit (return to Terminal) WITHOUT saving. If anyone thinks theres an issue with this please let me know, I don't use Vim\n- Added a new Augmentation: ADR-V2 Pheromone Gene\n- In Hacking Missions, enemy nodes will now automatically target Nodes and perform actions.\n- Re-balanced Hacking Missions through minor tweaking of many numbers\n- The faction reputation reward for Hacking Missions was slightly increased\n\n## v0.29.1 - 9/27/2017\n\n- New gameplay feature that is currently in BETA: Hacking Missions. Hacking Missions is an active gameplay mechanic (its a minigame) that is meant to be used to earn faction reputation. However, since this is currently in beta, hacking missions will NOT grant reputation for the time being, since the feature likely has many bugs, balance problems, and other issues. If you have any feedback regarding the new feature, feel free to let me know\n- CHANGED THE RETURN VALUE OF getScriptIncome() WHEN RAN WITH NO ARGUMENTS. It will now return an array of two values rather than a single value. This may break your scripts, so make sure to update them!\n- Added continue statement for for/while loops\n- Added getServerMinSecurityLevel(), getPurchasedServers(), and getTimeSinceLastAug() Netscript functions\n- Netscript scp() function can now take an array as the first argument, and will try to copy every file specified in the array (it will just call scp() normally for every element in the array). If an array is passed in, then the scp() function returns true if at least one element from the array is successfully copied\n- Added Javascript's Date module to Netscript. Since 'new' is not supported in Netscript yet, only the Date module's static methods will work (now(), UTC(), parse(), etc.).\n- Failing a crime now gives half the experience it did before\n- The forced repeated 'Find The-Cave' message after installing The Red Pill Augmentation now only happens if you've never destroyed a BitNode before, and will only popup every 15 minutes. If you have already destroyed a BitNode, the message will not pop up if you have messages suppressed (if you don't have messages suppressed it WILL still repeatedly popup)\n- fileExists() function now works on literature files\n\n## v0.29.0 - 9/19/2017\n\n- Added BitNode-5: Artificial Intelligence\n- Added getIp(), getIntelligence(), getHackingMultipliers(), and getBitNodeMultipliers() Netscript functions (requires Source-File 5)\n- Updated scan() Netscript function so that you can choose to have it print IPs rather than hostnames\n- Refactored scp() Netscript function so that it takes an optional 'source server' argument\n- For Infiltration, decreased the percentage by which the security level increases by about 10% for every location\n- Using :w in the script editor's Vim keybinding mode should now save and quit to Terminal\n- Some minor optimizations that should reduce the size of the save file\n- scan-analyze Terminal command will no longer show your purchased servers, unless you pass a '-a' flag into the command\n- After installing the Red Pill augmentation from Daedalus, the message telling you to find 'The-Cave' will now repeatedly pop up regardless of whether or not you have messages suppressed\n- Various bugfixes\n\n## v0.28.6 - 9/15/2017\n\n- Time required to create programs now scales better with hacking level, and should generally be much faster\n- Added serverExists(hostname/ip) and getScriptExpGain(scriptname, ip, args...) Netscript functions\n- Short circuiting && and || logical operators should now work\n- Assigning to multidimensional arrays should now work\n- Scripts will no longer wait for hack/grow/weaken functions to finish if they are killed. They will die immediately\n- The script loop that checks whether any scripts need to be started/stopped now runs every 6 seconds rather than 10 (resulting in less delays when stopping/starting scripts)\n- Fixed several bugs/exploits\n- Added some description for BitNode-5 (not implemented yet, should be soon though)\n\n## v0.28.5 - 9/13/2017\n\n- The fl1ght.exe program that is received from jump3r is now sent very early on in the game, rather than at hacking level 1000\n- Hostname is now displayed in Terminal\n- Syntax highlighting now works for all Netscript functions\n- Export should now work on Edge/IE\n\n## v0.28.4 - 9/11/2017\n\n- Added getScriptIncome() Netscript function\n- Added Javascript's math module to Netscript. See [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math this link for details]\n- Added several member variables for the Hacknet Node API that allow you to access info about their income\n- All valid Netscript functions are now syntax highlighted as keywords in the editor. This means they will a different color than invalid netscript functions. The color will depend on your theme. Note that right now, this only applies for normal Netscript functions, not functions in the TIX API, Hacknet Node API, or Singularity Functions.\n- Comments and operators no longer count towards RAM usage in scripts.\n- Variety of bug fixes and updates to informational text in the game\n\n## v0.28.3 - 9/7/2017\n\n- Added ls() Netscript function\n- Increased company wages by about ~10% across the board\n- The scp() Netsction function and Terminal command now works for .lit files\n- Increased the amount of RAM on many lower level servers (up to level 200 hacking level required).\n\n## v0.28.2 - 9/4/2017\n\n- Added several configuration options for script editor (key bindings, themes, etc.)\n- Certain menu options will now be hidden until their relevant gameplay is unlocked. This includes the Factions, Augmentations, Create Program, Travel, and Job tabs. This will only affect newer players.\n- Most unrecognize or un-implemented syntax errors in Netscript will now include the line number in the error message\n\n## v0.28.1 - 9/1/2017\n\n- The script editor now uses the open-source Ace editor, which provides a much better experience when coding!\n- Added tprint() Netscript function\n\n## v0.28.0 - 8/30/2017\n\n- Added BitNode-4: The Singularity\n- Added BitNode-11: The Big Crash\n- Migrated the codebase to use webpack (doesn't affect any in game content, except maybe some slight performance improvements and there may be bugs that result from dependency errors\n\n## v0.27.3 - 8/19/2017\n\n- You can now purchase upgrades for Gang Members (BitNode 2 only)\n- Decreased Gang respect gains and slightly increased wanted gains (BitNode 2 only)\n- Other gangs will increase in power faster (BitNode 2 only)\n- Added getHackTime(), getGrowTime(), and getWeakenTime() Netscript functions\n\n## v0.27.2 - 8/18/2017\n\n- Added getServerGrowth() Netscript function\n- Added getNextHacknetNodeCost() Netscript function\n- Added new 'literature' files (.lit extension) that are used to build lore for the game. These .lit files can be found in certain servers throughout the game. They can be viewed with the 'cat' Terminal command and copied over to other servers using the 'scp' command. These .lit files won't be found until you reset by installing Augmentations\n- Fixed some bugs with Gang Territory(BitNode 2 only)\n\n## v0.27.1 - 8/15/2017\n\n- Changed the way Gang power was calculated to make it scale better late game (BitNode 2 only)\n- Lowered the respect gain rate in Gangs (Bitnode 2 only)\n- Added '| grep pattern' option for ls Terminal command. This allows you to only list files that contain a certain pattern\n- Added break statement in Netscript\n- Display for some numerical values is now done in shorthand (e.g 1.000m instead of 1,000,000)\n\n## v0.27.0 - 8/13/2017\n\n- Added secondary 'prestige' system - featuring Source Files and BitNodes\n- MILD SPOILERS HERE: Installing 'The Red Pill' Augmentation from Daedalus will unlock a special server called w0r1d_d43m0n. Finding and manually hacking this server through Terminal will destroy the Player's current BitNode, and allow the player to enter a new one. When destroying a BitNode, the player loses everything except the scripts on his/her home computer. The player will then gain a powerful second-tier persistent upgrade called a Source File. The player can then enter a new BitNode to start the game over. Each BitNode has different characteristics, and many will have new content/mechanics as well. Right now there are only 2 BitNodes. Each BitNode grants its own unique Source File. Restarting and destroying a BitNode you already have a Source File for will upgrade your Source File up to a maximum level of 3.\n\n- Reputation gain with factions and companies is no longer a linear conversion, but an exponential one. It will be much easier to gain faction favor at first, but much harder later on.\n- Significantly increased Infiltration exp gains\n- Fixed a bug with company job requirement tooltips\n- Added scriptRunning(), scriptKill(), and getScriptRam() Netscript functions. See documentation for details\n- Fixed a bug with deleteServer() Netscript function\n\n## v0.26.4 - 8/1/2017\n\n- All of the 'low-level servers' in early game that have a required hacking level now have 8GB of RAM instead of 4GB\n- Increased the amount of experience given at university\n- Slightly increased the production of Hacknet Nodes and made them cheaper to upgrade\n- Infiltration now gives slightly more EXP and faction reputation\n- Added two new crimes. These crimes are viable to attempt early on in the game and are relatively passive (each take 60+ seconds to complete)\n- Crimes give more exp and more money\n- Max money available on a server decreased from 50x the server's starting money to 25x\n- Significantly increased wages for all jobs\n\n## v0.26.3\n\n- Added support for large numbers using Decimal.js. Right now it only applies for the player's money\n- Purchasing servers with the Netscript function purchaseServer() is no longer 2x as expensive as doing manually it now costs the same\n- Early game servers have more starting money\n\n## v0.26.2\n\n- Major rebalancing and randomization of the amount of money that servers start with\n- Significantly lowered hacking exp gain from hacking servers. The exp gain for higher-level servers was lowered more than that of low level servers. (~16% for lower level servers, up to ~25% for higher-level servers)\n- Added deleteServer() Netscript function\n- You can now purchase a maximum of 25 servers each run (Deleting a server will allow you to purchase a new one)\n- Added autocompletion for './' Terminal command\n- Darkweb prices now displayed properly using toLocaleString()\n- Added NOT operator (!) and negation operator(-) in Netscript, so negative numbers should be functional now\n- Rejected faction invitations will now show up as 'Outstanding Faction Invites' in the Factions page. These can be accepted at any point in the future\n- Added a few more configurable game settings for suppressing messages and faction invitations\n- Added tooltips for company job requirements\n\n## v0.26.1\n\n- Added autocompletion for aliases\n- Added getServerRam() Netscript function()\n- Added getLevelUpgradeCost(n), getRamUpgradeCost(), getCoreUpgradeCost() functions for Netscript Hacknet Node API\n- Added some configurable settings (See Game Options menu)\n\n## v0.26.0\n\n- Game now has a real ending, although it's not very interesting/satisfying right now. It sets up the framework for the secondary prestige system in the future\n- Forgot to mention that since last update, comments now work in Netscript. Use // for single line comments or /\\* and \\*/ for multiline comments just like in Javascript\n- Added ports to Netscript. These ports are essentially serialized queues. You can use the write() Netscript function to write a value to a queue, and then you can use the read() Netscript function to read the value from the queue. Once you read a value from the queue it will be removed. There are only 10 queues (1-10), and each has a maximum capacity of 50 entries. If you try to write to a queue that is full, the the first value is removed. See wiki/Netscript documentation for more details\n- You can now use the 'help' Terminal command for specific commands\n- You can now use './' to run a script/program (./NUKE.exe). However, tab completion currently doesn't work for it (I'm working on it)\n- Decreased the base growth rate of servers by ~25%\n- Both the effect of weaken() and its time to execute were halved. In other words, calling weaken() on a server only lowers its security by 0.05 (was 0.1 before) but the time to execute the function is half of what it was before. Therefore, the effective rate of weaken() should be about the same\n- Increased all Infiltration rewards by ~10%, and increased infiltration rep gains by an additional 20% (~32% total for rep gains)\n- The rate at which the security level of a facility increases during Infiltration was decreased significantly (~33%)\n- Getting treated at the Hospital is now 33% more expensive\n- Slightly increased the amount of time it takes to hack a server\n- Slightly decreased the amount of money gained when hacking a server (~6%)\n- Slightly decreased the base cost for RAM on home computer, but increased the cost multiplier. This means that upgrading RAM on the home computer should be slightly cheaper at the start, but slightly more expensive later on\n- Increased the required hacking level for many late game servers\n- The sleep() Netscript function now takes an optional 'log' argument that specifies whether or not the 'Sleeping for N milliseconds' will be logged for the script\n- Added clearLog() Netscript function\n- Deleted a few stocks. Didn't see a reason for having so many, and it just affects performance. Won't take effect until you reset by installing Augmentations\n- There was a typo with Zeus Medical's server hostname. It is now 'zeus-med' rather than 'zeud-med'\n- Added keyboard shortcuts to quickly navigate between different menus. See wiki link (http://bitburner.wikia.com/wiki/Shortcuts)\n- Changed the Navigation Menu UI\n\n## v0.25.0\n\n- Refactored Netscript to use the open-source Acorns Parser. This re-implementation was done by [https://github.com/MrNuggelz Github user MrNuggelz]. This has resulted in several changes in the Netscript language. Some scripts might break because of these changes. Changes listed below:\n- Arrays are now fully functional Javascript arrays. You no longer need to use the 'Array' keyword to declare them.\n- The length(), clear/clear(), insert(), and remove() functions no longer work for arrays.\n- All Javascript array methods are available (splice(), push(), pop(), join(), shift(), indexOf(), etc. See documentation)\n- Variables assigned to arrays are now passed by value rather than reference\n\n- Incrementing/Decrementing are now available (i++, ++i)\n\n- You no longer need semicolons at the end of block statements\n\n- Elif is no longer valid. Use 'else if' instead\n\n- Netscript's Hacknet Node API functions no longer log anything\n- Stock prices now update every ~6 seconds when the game is active (was 10 seconds before)\n- Added a new mechanic that affects how stock prices change\n- Script editor now has dynamic indicators for RAM Usage and Line number\n- Augmentation Rebalancing - Many late game augmentations are now slightly more expensive. Several early game augmentations had their effects slightly decreased\n- Increased the amount of rewards (both money and rep) you get from infiltration\n- Purchasing servers is now slightly more expensive\n- Calling the Netscript function getServerMoneyAvailable('home') now return's the player's money\n- Added round(n) Netscript function - Rounds a number\n- Added purchaseServer(hostname, ram) Netscript function\n- Added the TIX API. This must be purchased in the WSE. It persists through resets. Access to the TIX API allows you to write scripts that perform automated algorithmic trading. See Netscript documentation\n- Minor rebalancing in a lot of different areas\n- Changed the format of IP Addresses so that they are smaller (will consist mostly of single digit numbers now). This will reduce the size of the game's save file.\n\n## v0.24.1\n\n- Adjusted cost of upgrading home computer RAM. Should be a little cheaper for the first few upgrades (up to ~64GB), and then will start being more expensive than before. High RAM upgrades should now be significantly more expensive than before.\n- Slightly lowered the starting money available on most mid-game and end-game servers (servers with required hacking level greater than 200) by about 10-15%\n- Rebalanced company/company position reputation gains and requirements\n- Studying at a university now gives slightly more EXP and early jobs give slightly less EXP\n- Studying at a university is now considerably more expensive\n- Rebalanced stock market\n- Significantly increased cost multiplier for purchasing additional Hacknet Nodes\n- The rate at which facility security level increases during infiltration for each clearance level was lowered slightly for all companies\n- Updated Faction descriptions\n- Changed the way alias works. Normal aliases now only work at the start of a Terminal command (they will only replace the first word in the Terminal command). You can also create global aliases that work on any part of the command, like before. Declare global aliases by entering the optional -g flag: alias -g name=\"value\" - [https://github.com/MrNuggelz Courtesy of Github user MrNuggelz]\n- 'top' Terminal command implemented courtesy of [https://github.com/LTCNugget Github user LTCNugget]. Currently, the formatting gets screwed up if your script names are really long.\n\n## v0.24.0\n\n- Players now have HP, which is displayed in the top right. To regain HP, visit the hospital. Currently the only way to lose HP is through infiltration\n- Infiltration - Attempt to infiltrate a company and steal their classified secrets. See 'Companies' documentation for more details\n- Stock Market - Added the World Stock Exchange (WSE), a brokerage that lets you buy/sell stocks. To begin trading you must first purchase an account. A WSE account will persist even after resetting by installing Augmentations. How the stock market works should hopefully be self explanatory. There is no documentation about it currently, I will add some later. NOTE: Stock prices only change when the game is open. The Stock Market is reset when installing Augmentations, which means you will lose all your stocks\n- Decreased money gained from hacking by ~12%\n- Increased reputation required for all Augmentations by ~40%\n- Cost increase when purchasing multiple augmentations increased from 75% to 90%\n- Added basic variable runtime to Netscript operations. Basic commands run in 100ms. Any function incurs another 100ms in runtime (200ms total). Any function that starts with getServer incurs another 100ms runtime (300ms total). exec() and scp() require 400ms total.\n- Slightly reduced the amount of experience gained from hacking\n\n## v0.23.1\n\n- scan() Netscript function now takes a single argument representing the server from which to scan.\n\n## v0.23.0\n\n- You can now purchase multiple Augmentations in a run. When you purchase an Augmentation you will lose money equal to the price and then the cost of purchasing another Augmentation during this run will be increased by 75%. You do not gain the benefits of your purchased Augmentations until you install them. This installation can be done through the 'Augmentation' tab. When you install your Augmentations, your game will reset like before.\n- Reputation needed to gain a favor from faction decreased from 7500 to 6500\n- Reputation needed to gain a favor from company increased from 5000 to 6000\n- Reputation cost of all Augmentations increased by 16%\n- Higher positions at companies now grant slightly more reputation for working\n- Added getServerMaxMoney() Netscript function\n- Added scan() Netscript function\n- Added getServerNumPortsRequired() Netscript function\n- There is now no additional RAM cost incurred when multithreading a script\n\n## v0.22.1\n\n- You no longer lose progress on creating programs when cancelling your work. Your progress will be saved and you will pick up where you left off when you start working on it again\n- Added two new programs: AutoLink.exe and ServerProfiler.exe\n- Fixed bug with Faction Field work reputation gain\n\n## v0.22.0 - Major rebalancing, optimization, and favor system\n\n- Significantly nerfed most augmentations\n- Almost every server with a required hacking level of 200 or more now has slightly randomized server parameters. This means that after every Augmentation purchase, the required hacking level, base security level, and growth factor of these servers will all be slightly different\n- The hacking speed multiplier now increases rather than decreases. The hacking time is now divided by your hacking speed multiplier rather than multiplied. In other words, a higher hacking speed multiplier is better\n- Servers now have a minimum server security, which is approximately one third of their starting ('base') server security\n- If you do not steal any money from a server, then you gain hacking experience equal to the amount you would have gained had you failed the hack\n- The effects of grow() were increased by 50%\n- grow() and weaken() now give hacking experience based on the server's base security level, rather than a flat exp amount\n- Slightly reduced amount of exp gained from hack(), weaken(), and grow()\n- Rebalanced formulas that determine crime success\n- Reduced RAM cost for multithreading a script. The RAM multiplier for each thread was reduced from 1.02 to 1.005\n- Optimized Script objects so they take less space in the save file\n- Added getServerBaseSecurityLevel() Netscript function\n- New favor system for companies and factions. Earning reputation at a company/faction will give you favor for that entity when you reset after installing an Augmentation. This favor persists through the rest of the game. The more favor you have, the faster you will earn reputation with that faction/company\n- You can no longer donate to a faction for reputation until you have 150 favor with that faction\n- Added unalias Terminal command\n- Changed requirements for endgame Factions\n\n## v0.21.1\n\n- IF YOUR GAME BREAKS, DO THE FOLLOWING: Options -> Soft Reset -> Save Game -> Reload Page. Sorry about that!\n- Autocompletion for aliases - courtesy of [https://github.com/LTCNugget Github user LTCNugget]\n\n## v0.21.0\n\n- Added dynamic arrays. See Netscript documentation\n- Added ability to pass arguments into scripts. See documentation\n- The implementation/function signature of functions that deal with scripts have changed. Therefore, some old scripts might not work anymore. Some of these functions include run(), exec(), isRunning(), kill(), and some others I may have forgot about. Please check the updated Netscript documentation if you run into issues.-Note that scripts are now uniquely identified by the script name and their arguments. For example, you can run a script using::\n\n run foodnstuff.script 1\n\nand you can also run the same script with a different argument::\n\n run foodnstuff.script 2\n\nThese will be considered two different scripts. To kill the first script you must run::\n\n kill foodnstuff.script 1\n\nand to kill the second you must run::\n\n kill foodnstuff.script 2\n\nSimilar concepts apply for Terminal Commands such as tail, and Netscript commands such as run(), exec(), kill(), isRunning(), etc.\n\n- Added basic theme functionality using the 'theme' Terminal command - All credit goes to /u/0x726564646974 who implemented the awesome feature\n- Optimized Script objects, which were causing save errors when the player had too many scripts\n- Formula for determining exp gained from hacking was changed\n- Fixed bug where you could purchase Darkweb items without TOR router\n- Slightly increased cost multiplier for Home Computer RAM\n- Fixed bug where you could hack too much money from a server (and bring its money available below zero)\n- Changed tail command so that it brings up a display box with dynamic log contents. To get old functionality where the logs are printed to the Terminal, use the new 'check' command\n- As a result of the change above, you can no longer call tail/check on scripts that are not running\n- Added autocompletion for buying Programs in Darkweb\n\n## v0.20.2\n\n- Fixed several small bugs\n- Added basic array functionality to Netscript\n- Added ability to run scripts with multiple threads. Running a script with n threads will multiply the effects of all hack(), grow(), and weaken() commands by n. However, running a script with multiple threads has drawbacks in terms of RAM usage. A script's ram usage when it is 'multithreaded' is calculated as: base cost _ numThreads _ (1.02 ^ numThreads). A script can be run multithreaded using the 'run [script] -t n' Terminal command or by passing in an argument to the run() and exec() Netscript commands. See documentation.\n- RAM is slightly (~10%) more expensive (affects purchasing server and upgrading RAM on home computer)\n- NeuroFlux Governor augmentation cost multiplier decreased\n- Netscript default operation runtime lowered to 200ms (was 500ms previously)\n\n## v0.20.1\n\n- Fixed bug where sometimes scripts would crash without showing the error\n- Added Deepscan programs to Dark Web\n- Declining a faction invite will stop you from receiving invitations from that faction for the rest of the run\n- (BETA) Added functionality to export/import saves. WARNING This is only lightly tested. You cannot choose where to save your file it just goes to the default save location. Also I have no idea what will happen if you try to import a file that is not a valid save. I will address these in later updates\n\n## v0.20.0\n\n- Refactored Netscript Interpreter code. Operations in Netscript should now run significantly faster (Every operation such as a variable assignment, a function call, a binary operator, getting a variable's value, etc. used to take up to several seconds, now each one should only take ~500 milliseconds).\n- Percentage money stolen when hacking lowered to compensate for faster script speeds\n- Hacking experience granted by grow() halved\n- Weaken() is now ~11% faster, but only grants 3 base hacking exp upon completion instead of 5\n- Rebalancing of script RAM costs. Base RAM Cost for a script increased from 1GB to 1.5GB. Loops, hack(), grow() and weaken() all cost slightly less RAM than before\n- Added getServerRequiredHackingLevel(server) Netscript command.\n- Added fileExists(file, [server]) Netscript command, which is used to check if a script/program exists on a specified server\n- Added isRunning(script, [server]) Netscript command, which is used to check if a script is running on the specified server\n- Added killall Terminal command. Kills all running scripts on the current machine\n- Added kill() and killall() Netscript commands. Used to kill scripts on specified machines. See Netscript documentation\n- Re-designed 'Active Scripts' tab\n- Hacknet Node base production rate lowered from 1.6 to 1.55 ($/second)\n- Increased monetary cost of RAM (Upgrading home computer and purchasing servers will now be more expensive)\n- NEW GROWTH MECHANICS - The rate of growth on a server now depends on a server's security level. A higher security level will result in lower growth on a server when using the grow() command. Furthermore, calling grow() on a server raises that server's security level by 0.004. For reference, if a server has a security level of 10 it will have approximately the same growth rate as before.\n- Server growth no longer happens naturally\n- Servers now have a maximum limit to their money. This limit is 50 times it's starting money\n- Hacking now grants 10% less hacking experience\n- You can now edit scripts that are running\n- Augmentations cost ~11% more money and 25% more faction reputation\n\n## v0.19.7\n\n- Added changelog to Options menu\n- Bug fix with autocompletion (wasn't working properly for capitalized filenames/programs\n\n## v0.19.6\n\n- Script editor now saves its state even when you change tabs\n- scp() command in Terminal/script will now overwrite files at the destination\n- Terminal commands are no longer case-sensitive (only the commands themselves such as 'run' or 'nano'. Filenames are still case sensitive\n- Tab automcompletion will now work on commands\n\n## v0.19.0\n\n- Hacknet Nodes have slightly higher base production, and slightly increased RAM multiplier. But they are also a bit more expensive at higher levels\n- Calling grow() and weaken() in a script will now work offline, at slower rates than while online (The script now keeps track of the rate at which grow() and weaken() are called when the game is open. These calculated rates are used to determine how many times the calls would be made while the game is offline)\n- Augmentations now cost 20% more reputation and 50% more money\n- Changed the mechanic for getting invited to the hacking factions (CyberSec, NiteSec, The Black Hand, BitRunners) Now when you get to the required level to join these factions you will get a message giving you instructions on what to do in order to get invited.\n- Added a bit of backstory/plot into the game. It's not fully fleshed out yet but it will be used in the future\n- Made the effects of many Augmentations slightly more powerful\n- Slightly increased company job wages across the board (~5-10% for each position)\n- Gyms and classes are now significantly more expensive\n- Doubled the amount by which a server's security increases when it is hacked. Now, it will increase by 0.002. Calling weaken() on a server will lower the security by 0.1.\n\n## v0.18.0\n\n- Major rebalancing (sorry didn't record specifics. But in general hacking gives more money and hacknet nodes give less)\n- Server growth rate (both natural and manual using grow()) doubled\n- Added option to Soft Reset\n- Cancelling a full time job early now only results in halved gains for reputation. Exp and money earnings are gained in full\n- Added exec() Netscript command, used to run scripts on other servers.\n- NEW HACKING MECHANICS: Whenever a server is hacked, its 'security level' is increased by a very small amount. The security level is denoted by a number between 1-100. A higher security level makes it harder to hack a server and also decreases the amount of money you steal from it. Two Netscript functions, weaken() and getServerSecurityLevel() level, were added. The weaken(server) function lowers a server's security level. See the Netscript documentation for more details\n- When donating to factions, the base rate is now $1,000,000 for 1 reputation point. Before, it was $1,000 for 1 reputation point.\n- Monetary costs for all Augmentations increased. They are now about ~3.3 - 3.75 times more expensive than before\n\n## v0.17.1\n\n- Fixed issue with purchasing Augmentations that are 'upgrades' and require previous Augmentations to be installed\n- Increased the percentage of money stolen from servers when hacking\n\n## v0.17.0\n\n- Greatly increased amount of money gained for crimes (by about 400% for most crimes)\n- Criminal factions require slightly less negative karma to get invited to\n- Increased the percentage of money stolen from servers when hacking\n- Increased the starting amount of money available on beginning servers (servers with <50 required hacking))\n- Increased the growth rate of servers (both naturally and manually when using the grow() command in a script)\n- Added getHostname() command in Netscript that returns the hostname of the server a script is running on\n- jQuery preventDefault() called when pressing ctrl+b in script editor\n- The Neuroflux Governor augmentation (the one that can be repeatedly leveled up) now increases ALL multipliers by 1%. To balance it out, it's price multiplier when it levels up was increased\n- Hacknet Node base production decreased from $1.75/s to $1.65/s\n- Fixed issue with nested for loops in Netscript (stupid Javascript references)\n- Added 'scp' command to Terminal and Netscript\n- Slightly nerfed Hacknet Node Kernel DNI and Hacknet Node Core DNI Augmentations\n- Increased TOR Router cost to $200k\n\n## v0.16.0\n\n- New Script Editor interface\n- Rebalanced hacknet node - Increased base production but halved the multiplier from additional cores. This should boost its early-game production but nerf its late-game production\n- Player now starts with 8GB of RAM on home computer\n- 'scan-analyze' terminal command displays RAM on servers\n- Slightly buffed the amount of money the player steals when hacking servers (by about ~8%)\n- Time to execute grow() now depends on hacking skill and server security, rather than taking a flat 2 minutes.\n- Clicking outside of a pop-up dialog box will now close it\n- BruteSSH.exe takes 33% less time to create\n- 'iron-gym' and 'max-hardware' servers now have 2GB of RAM\n- Buffed job salaries across the board\n- Updated Tutorial\n- Created a Hacknet Node API for Netscript that allows you to access and upgrade your Hacknet Nodes. See the Netscript documentation for more details. WARNING The old upgradeHacknetNode() and getNumHacknetNodes() functions waere removed so any script that has these will no longer work\n\n## v0.15.0\n\n- Slightly reduced production multiplier for Hacknet Node RAM\n- Faction pages now scroll\n- Slightly increased amount of money gained from hacking\n- Added 'alias' command\n- Added 'scan-analyze' terminal command - used to get basic hacking info about all immediate network connections\n- Fixed bugs with upgradeHacknetNode() and purchaseHacknetNode() commands\n- Added getNumHacknetNodes() and hasRootAccess(hostname/ip) commands to Netscript\n- Increased Cost of university classes/gym\n- You can now see what an Augmentation does and its price even while its locked\n"},95143:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# What BitNode should I do?\n\nAfter destroying their first [BitNode](../advanced/bitnodes.md), many players wonder which [BitNode](../advanced/bitnodes.md) they should tackle next.\nThis guide hopefully helps answer that question.\n\n## Recommended BitNodes\n\nAs a player, you are not forced to tackle the [BitNodes](../advanced/bitnodes.md) in any particular order.\nYou are free to choose whichever ones you want.\nThe \"best\" order can vary between players, depending on what you like to do any what kind of player you are.\nIn general, here are the recommended [BitNodes](../advanced/bitnodes.md) for different things:\n\n## For fast progression\n\nThese paths do not recommend the absolute fastest path, since speed of progression is highly dependant on playing style.\n\n1. Repeat BN-1 until you max out its [Source-File](../advanced/sourcefiles.md).\n Its [Source-File](../advanced/sourcefiles.md) is extremely powerful, as it raises all multipliers by a significant amount.\n This also allows you to get used to augments and other features resetting.\n\n2. Do BN-3 at least once to unlock the [Corporation](../advanced/corporations.md) mechanic, finishing all 3 levels unlocks the full API for free, allowing fully scripted corp.\n This mechanic has the highest profit potential in the game.\n\n3. Do BN-10 once to unlock [Sleeves](../advanced/sleeves.md) and [Grafting](../advanced/grafting.md).\n [Sleeves](../advanced/sleeves.md) are useful in all nodes and grafting can be useful in future [BitNodes](../advanced/bitnodes.md), especially BN-8.\n It's recommended to buy all purchasable [Sleeves](../advanced/sleeves.md) and their memory during the first run.\n\n The ordering of the next three is dependant on playing style and wants/needs.\n\n4. Do BN-5 once or twice.\n The [Intelligence](../advanced/intelligence.md) stat it unlocks will gradually build up as you continue to play the game, and will be helpful in the future.\n The [Source-File](../advanced/sourcefiles.md) also provides [hacking](../basic/hacking.md) multipliers, which are strong because [hacking](../basic/hacking.md) is typically one of the best ways of earning money.\n\n5. Do BN-4. Its [Source-File](../advanced/sourcefiles.md) does not directly make you more powerful in any way, but unlocks the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md).\n This API allows you to automate significantly more aspects of the game.\n Consider repeating until Level 3, since each level decreases the [RAM](../basic/ram.md) cost of the functions.\n\n6. Do BN-2 once to unlock the [Gang](../advanced/gang.md) mechanic.\n This mechanic has high profit potential and offers large amounts of [Augmentations](../basic/augmentations.md) in a single faction.\n Having sleeves ([Source-File](../advanced/sourcefiles.md) 10) greatly reduces the time it takes to get access to [Gangs](../advanced/gang.md) outside this [BitNode](../advanced/bitnodes.md).\n\n7. Do BN-9 to unlock the [Hacknet Server](../advanced/hacknetservers.md) mechanic.\n You can consider repeating it as well, as its Level 2 and 3 effects are pretty helpful as well.\n\n## For the strongest Source-Files\n\nNote that the strongest [Source-Files](../advanced/sourcefiles.md) are typically rewarded by the hardest [BitNodes](../advanced/bitnodes.md).\n\nThe strongest [Source-File](../advanced/sourcefiles.md) is that from BN-1, as it raises all multipliers by a significant amount.\n\nThe [Source-File](../advanced/sourcefiles.md) from BN-9 is good because it unlocks the Hacknet Server mechanic.\nThe [Hacknet Server](../advanced/hacknetservers.md) mechanic causes [Hacknet Nodes](../basic/hacknet_nodes.md) to produce a new currency called `hashes`, rather than money.\n`Hashes` can be spent on powerful upgrades that benefit your [hacking](../basic/hacking.md), [Corporation](../advanced/corporations.md), [Bladeburner](../advanced/bladeburners.md), etc.\n\nThe [Sleeves](../advanced/sleeves.md) granted by the [Source-File](../advanced/sourcefiles.md) from BN-10 are strong, but only after you have several of them and have spent some time/money upgrading them.\n\n## For more scripting/hacking\n\nBN-4 unlocks the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md), which can be used to automate many different aspects of the game, including working for [Factions](../basic/factions.md) / [Companies](../basic/companies.md), purchasing & installing [Augmentations](../basic/augmentations.md), and creating programs\n\nBN-6 and BN-7 unlock [Bladeburner](../advanced/bladeburners.md) and its corresponding [Bladeburner API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.bladeburner.md).\nThis allows you to automate an entire new mechanic.\n\nBN-2 also unlocks a new mechanic and API for automating the [Gang](../advanced/gang.md) mechanic.\nHowever, it is not as interesting as [Bladeburner](../advanced/bladeburners.md)\n\nBN-9 unlocks the [Hacknet Server](../advanced/hacknetservers.md) mechanic and several new functions in the [Hacknet Node API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.hacknet.md) for using it.\n\n## For new mechanics\n\nBN-2 unlocks a new mechanic in which you can manage a [Gang](../advanced/gang.md).\n[Gangs](../advanced/gang.md) earn you money and can be very profitable once they get large and powerful.\nThe biggest benefit of [Gangs](../advanced/gang.md), however, is that they make all [Augmentations](../basic/augmentations.md) available to you through their corresponding [Faction](../basic/factions.md).\n\nBN-3 unlocks a new mechanic in which you can manage a [Corporation](../advanced/corporations.md).\nYou can earn money through [Corporations](../advanced/corporations.md) by selling your stocks, or by configuring your [Corporation](../advanced/corporations.md) to pay dividends to shareholders.\nIf your [Corporation](../advanced/corporations.md) gets big enough, it can also bribe [Factions](../basic/factions.md) in exchange for [Faction](../basic/factions.md) [Reputation](../basic/reputation.md).\n\nBN-6 unlocks a new mechanic that centers around combat rather than hacking.\nThe main benefit of the [Bladeburner](../advanced/bladeburners.md) mechanic is that it offers a new method of destroying a [BitNode](../advanced/bitnodes.md).\n\nBN-9 unlocks the [Hacknet Server](../advanced/hacknetservers.md), which is an upgraded version of a [Hacknet Node](../basic/hacknet_nodes.md).\nThe [Hacknet Server](../advanced/hacknetservers.md) generates a computational unit called a `hash`.\n`Hashes` can be spent on a variety of different upgrades that can benefit your hacking, [Corporation](../advanced/corporations.md), [Bladeburner](../advanced/bladeburners.md) progress, and more.\nIt transforms the [Hacknet Node](../basic/hacknet_nodes.md) from a simple money-generator to a more interesting mechanic.\n\nBN-10 unlocks two new mechanics: [Sleeves](../advanced/sleeves.md) and [Grafting](../advanced/grafting.md)\n\nBN-13 unlocks [Stanek's Gift](../advanced/stanek.md). This gift can improve skills, [hacknet](../basic/hacknet_nodes.md) production and costs, working and [crime](../basic/crimes.md) gains, and [hacking](../basic/hacking.md) power and speed.\n\n## For a Challenge\n\nIn general, the higher [BitNodes](../advanced/bitnodes.md) are more difficult than the lower ones.\nBN-12 is an obvious exception as it gets progressively harder.\n\nBN-8 provides a unique challenge, as the only method of earning money in that [BitNode](../advanced/bitnodes.md) is through trading at the stock market.\n"},98751:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Getting Started Guide for Beginner Programmers\n\n_Note_: The [Scripts](../basic/scripts.md) and strategies in this guide aren't necessarily optimal or comperhensive.\nThis guide is tailored to help those with minimal programming knowledge experience Bitburner during early stages of the game.\n\nIf you are confused or overwhelmed by the game, especially the coding and scripting aspects, this guide is perfect for you!\n\n## Introduction\n\nBitburner is a cyberpunk-themed incremental RPG.\nYou will progress by raising your [Stats](../basic/stats.md), earning money, and with practice, advancing your real-world coding skills.\nAfter reaching certain criteria, you will receive invitations from in-game [Factions](../basic/factions.md).\nJoining [Factions](../basic/factions.md) and working for them will unlock various [Augmentations](../basic/augmentations.md),\nwhich are purchased and \"installed,\" adding a persistent bonus to [stats](../basic/stats.md) and other abilities. Working with Factions and installing Augmentations is a basic step for progressing in Bitburner.\n\nThe game has an open, minimalistic storyline that can be played in multiple ways to reach your goals.\nSince this guide is written as a basic introduction to Bitburner, it will not expose the entire scope or storyline available.\n\n## First Steps\n\nI'm going to assume you followed the introductory tutorial when you first began the game.\nIn this introductory tutorial, you created a [Script](../basic/scripts.md) called `n00dles.js` and ran it on the `n00dles` server.\nNow, we'll kill this [Script](../basic/scripts.md). There are two ways to do this:\n\n- You can go to the Terminal and enter: `$ kill n00dles.js`\n- You can go to the `Active Scripts` page (Alt + s) and press the `Kill Script` button for `n00dles.js`.\n\nIf you skipped the introductory tutorial, then ignore the part above.\nInstead, go to the `Hacknet Nodes` page (Alt + h) and purchase a [Hacknet Node](../basic/hacknet_nodes.md) to start generating some passive income.\n\n## Creating our First Script\n\nNow, we'll create a generic [hacking](../basic/hacking.md) [Script](../basic/scripts.md) that can be used early on in the game (or throughout the entire game, if you want).\n\nBefore we write the [Script](../basic/scripts.md), here are some things you'll want to familiarize yourself with:\n\n- `hacking`\n- `security`\n- `hack`\n- `grow`\n- `weaken`\n- `brutessh`\n- `nuke`\n\nTo briefly summarize: Each [Server](../basic/servers.md) has a security level that affects how difficult it is to hack.\nEach [Server](../basic/servers.md) also has a certain amount of money, as well as a maximum amount of money it can hold.\n[Hacking](../basic/hacking.md) a [Server](../basic/servers.md) steals a percentage of that [Server](../basic/servers.md)'s money.\nThe `hack()` function is used to hack a [Server](../basic/servers.md).\nThe `grow()` function is used to increase the amount of money available on a [Server](../basic/servers.md).\nThe `weaken()` function is used to decrease a [Server](../basic/servers.md)'s security level.\n\nNow let's move on to actually creating the [Script](../basic/scripts.md).\nGo to your home computer and then create a [Script](../basic/scripts.md) called `early-hack-template.js` by going to [Terminal](../basic/terminal.md) and entering the following two commands:\n\n $ home\n $ nano early-hack-template.js\n\nThis will take you to the [Script](../basic/scripts.md) editor, which you can use to code and create [Scripts](../basic/scripts.md).\n\nEnter the following code in the [Script](../basic/scripts.md) editor:\n\n /** @param {NS} ns */\n export async function main(ns) {\n // Defines the \"target server\", which is the server\n // that we're going to hack. In this case, it's \"n00dles\"\n const target = \"n00dles\";\n\n // Defines how much money a server should have before we hack it\n // In this case, it is set to the maximum amount of money.\n const moneyThresh = ns.getServerMaxMoney(target);\n\n // Defines the maximum security level the target server can\n // have. If the target's security level is higher than this,\n // we'll weaken it before doing anything else\n const securityThresh = ns.getServerMinSecurityLevel(target);\n\n // If we have the BruteSSH.exe program, use it to open the SSH Port\n // on the target server\n if (ns.fileExists(\"BruteSSH.exe\", \"home\")) {\n ns.brutessh(target);\n }\n\n // Get root access to target server\n ns.nuke(target);\n\n // Infinite loop that continously hacks/grows/weakens the target server\n while(true) {\n if (ns.getServerSecurityLevel(target) > securityThresh) {\n // If the server's security level is above our threshold, weaken it\n await ns.weaken(target);\n } else if (ns.getServerMoneyAvailable(target) < moneyThresh) {\n // If the server's money is less than our threshold, grow it\n await ns.grow(target);\n } else {\n // Otherwise, hack it\n await ns.hack(target);\n }\n }\n }\n\nThe [Script](../basic/scripts.md) above contains comments that document what it does, but let's go through it step-by-step anyway.\n\n const target = \"n00dles\";\n\nThis first command defines a string which contains our target [Server](../basic/servers.md).\nThat's the [Server](../basic/servers.md) that we're going to [hack](../basic/hacking.md).\nFor now, it's set to `\"n00dles\"` because that's the only [Server](../basic/servers.md) with a required hacking level of `1`.\nIf you want to [hack](../basic/hacking.md) a different [Server](../basic/servers.md), simply change this variable to be the hostname of another [Server](../basic/servers.md).\n\n const moneyThresh = ns.getServerMaxMoney(target);\n\nThis second command defines a numerical value representing the minimum amount of money that must be available on the target [Server](../basic/servers.md) in order for our [Script](../basic/scripts.md) to [hack](../basic/hacking.md) it.\nIf the money available on the target [Server](../basic/servers.md) is less than this value, then our [Script](../basic/scripts.md) will `grow()` the [Server](../basic/servers.md) rather than [hacking](../basic/hacking.md) it.\nIt is set to the maximum amount of money that can be available on the [Server](../basic/servers.md).\nThe `getServerMaxMoney()` function is used to find this value\n\n const securityThresh = ns.getServerMinSecurityLevel(target);\n\nThis third command defines a numerical value representing the minimum security level the target [Server](../basic/servers.md) can have.\nIf the target [Server](../basic/servers.md)'s security level is higher than this value, then our [Script](../basic/scripts.md) will `weaken()` the [Script](../basic/scripts.md) before doing anything else.\n\n if (ns.fileExists(\"BruteSSH.exe\", \"home\")) {\n ns.brutessh(target);\n }\n\n ns.nuke(target);\n\nThis section of code is used to gain root access on the target [Server](../basic/servers.md).\nThis is necessary for [hacking](../basic/hacking.md).\n\n while (true) {\n if (ns.getServerSecurityLevel(target) > securityThresh) {\n // If the server's security level is above our threshold, weaken it\n await ns.weaken(target);\n } else if (ns.getServerMoneyAvailable(target) < moneyThresh) {\n // Otherwise, if the server's money is less than our threshold, grow it\n await ns.grow(target);\n } else {\n // Otherwise, hack it\n await ns.hack(target);\n }\n }\n\nThis is the main section that drives our [Script](../basic/scripts.md).\nIt dictates the [Script](../basic/scripts.md)'s logic and carries out the [hacking](../basic/hacking.md) operations.\nThe `while (true)` creates an infinite loop that will continuously run the [hacking](../basic/hacking.md) logic until the the [Script](../basic/scripts.md) is killed.\n\nThe await keyword is needed for `hack()` / `grow()` / `weaken()` because these commands take time to execute, unlike the others.\nIf you forget to await these commands, you will get an exception saying you tried to do multiple things at once, because your code will immediately finish the function call without waiting for the operation to be done.\nAlso important is that await can only be used in functions marked `async` (note that `main()` is marked `async`).\n\n## Running our Scripts\n\nNow we want to start running our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) so that it can start earning us money and experience.\nOur home computer only has 8GB of [RAM](../basic/ram.md), and we'll be using it for something else later.\nInstead, we'll take advantage of the [RAM](../basic/ram.md) on other machines.\n\nGo to `Terminal` and enter the following command:\n\n $ scan-analyze 2\n\nThis will show detailed information about some [Servers](../basic/servers.md) on the network.\nThe **network is randomized so it will be different for every person**.\nHere's what mine showed at the time I made this:\n\n [home ~]> scan-analyze 2\n ┕ home\n ┃ Root Access: YES, Required hacking skill: 1\n ┃ Number of open ports required to NUKE: 5\n ┃ RAM: 8.00GB\n ┣ n00dles\n ┃ ┃ Root Access: YES, Required hacking skill: 1\n ┃ ┃ Number of open ports required to NUKE: 0\n ┃ ┃ RAM: 4.00GB\n ┃ ┕ nectar-net\n ┃ Root Access: NO, Required hacking skill: 20\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┣ foodnstuff\n ┃ ┃ Root Access: NO, Required hacking skill: 1\n ┃ ┃ Number of open ports required to NUKE: 0\n ┃ ┃ RAM: 16.00GB\n ┃ ┕ zer0\n ┃ Root Access: NO, Required hacking skill: 75\n ┃ Number of open ports required to NUKE: 1\n ┃ RAM: 32.00GB\n ┣ sigma-cosmetics\n ┃ ┃ Root Access: NO, Required hacking skill: 5\n ┃ ┃ Number of open ports required to NUKE: 0\n ┃ ┃ RAM: 16.00GB\n ┃ ┕ max-hardware\n ┃ Root Access: NO, Required hacking skill: 80\n ┃ Number of open ports required to NUKE: 1\n ┃ RAM: 32.00GB\n ┣ joesguns\n ┃ Root Access: NO, Required hacking skill: 10\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┣ hong-fang-tea\n ┃ Root Access: NO, Required hacking skill: 30\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┣ harakiri-sushi\n ┃ Root Access: NO, Required hacking skill: 40\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┕ iron-gym\n ┃ Root Access: NO, Required hacking skill: 100\n ┃ Number of open ports required to NUKE: 1\n ┃ RAM: 32.00GB\n ┕ CSEC\n Root Access: NO, Required hacking skill: 55\n Number of open ports required to NUKE: 1\n RAM: 8.00GB\n\nTake note of the following servers:\n\n- `sigma-cosmetics`\n- `joesguns`\n- `nectar-net`\n- `hong-fang-tea`\n- `harakiri-sushi`\n\nAll of these servers have 16GB of [RAM](../basic/ram.md).\nFurthermore, all of these servers do not require any open ports in order to NUKE.\nIn other words, we can gain root access to all of these servers and then run [Scripts](../basic/scripts.md) on them.\n\nFirst, let's determine how many threads of our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) we can run.\n(See the page on [scripts](../basic/scripts.md) for more information on multithreading.)\n\nThe [Script](../basic/scripts.md) we wrote uses 2.6GB of [RAM](../basic/ram.md).\nYou can check this using the following `Terminal` command:\n\n $ mem early-hack-template.js\n\nThis means we can run 6 threads on a 16GB server.\nNow, to run our [Scripts](../basic/scripts.md) on all of these servers, we have to do the following:\n\n1. Use the `scp` command to copy our [Script](../basic/scripts.md) to each server.\n2. Use the `connect` command to connect to a server.\n3. Use the `run` command to run the `NUKE.exe` program and gain root access.\n4. Use the `run` command again to run our [Script](../basic/scripts.md).\n5. Repeat steps 2-4 for each server.\n\nHere's the sequence of `Terminal` commands I used in order to achieve this:\n\n $ home\n $ scp early-hack-template.js n00dles\n $ scp early-hack-template.js sigma-cosmetics\n $ scp early-hack-template.js joesguns\n $ scp early-hack-template.js nectar-net\n $ scp early-hack-template.js hong-fang-tea\n $ scp early-hack-template.js harakiri-sushi\n $ connect n00dles\n $ run NUKE.exe\n $ run early-hack-template.js -t 1\n $ home\n $ connect sigma-cosmetics\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n $ home\n $ connect joesguns\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n $ home\n $ connect hong-fang-tea\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n $ home\n $ connect harakiri-sushi\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n $ home\n $ connect hong-fang-tea\n $ connect nectar-net\n $ run NUKE.exe\n $ run early-hack-template.js -t 6\n\nPressing the `Tab` key in the middle of a Terminal command will attempt to auto-complete the command.\nFor example, if you type in `scp ea` and then hit `Tab`, the rest of the [Script](../basic/scripts.md)'s name should automatically be filled in.\nThis works for most commands in the game!\n\nThe `home` command is used to connect to the home computer. When running our [Scripts](../basic/scripts.md) with the `run early-hack-template.js -t 6` command, the `-t 6` specifies that the [Script](../basic/scripts.md) should be run with 6 threads.\n\nNote that the `nectar-net` [Server](../basic/servers.md) isn't in the home computer's immediate network.\nThis means you can't directly connect to it from home. You will have to search for it inside the network.\nThe results of the `scan-analyze 2` command we ran before will show where it is.\nIn my case, I could connect to it by going from `hong-fang-tea` -> `nectar-net`.\nHowever, this will probably be different for you.\n\nAfter running all of these `Terminal` commands, our [Scripts](../basic/scripts.md) are now up and running.\nThese will earn money and hacking experience over time.\nThese gains will be really slow right now, but they will increase once our hacking skill rises and we start running more [Scripts](../basic/scripts.md).\n\n## Increasing Hacking Level\n\nThere are many [Servers](../basic/servers.md) besides `n00dles` that can be hacked, but they have higher required hacking levels.\nTherefore, we should raise our hacking level.\nNot only will this let us hack more [Servers](../basic/servers.md), but it will also increase the effectiveness of our [hacking](../basic/hacking.md) against `n00dles`.\n\nThe easiest way to train your hacking level is to visit Rothman University.\nYou can do this from the `City` tab (Alt + w) on the left-hand navigation menu.\nRothman University should be the \"U\" near the bottom-right.\nClick the \"U\" to go to the location.\n\nOnce you go to Rothman University, you should see a screen with several options.\nThese options describe different courses you can take.\nYou should click the first button, which says: `Study Computer Science (free)`.\n\nAfter you click the button, you will start studying and earning hacking experience.\nWhile you are doing this, you cannot interact with any other part of the game until you click either `Stop taking course` or `Do something else simultaneously`.\n\nRight now, we want a hacking level of 10.\nYou need approximately 174 hacking experience to reach level 10.\nYou can check how much hacking experience you have by going to the `Stats` tab (Alt + c) on the left-hand navigation menu.\nSince studying at Rothman University earns you 1 experience per second, this will take 174 seconds, or approximately 3 minutes.\nFeel free to do something in the meantime!\n\n## Editing our Hacking Script\n\nNow that we have a hacking level of 10, we can hack the `joesguns` [Server](../basic/servers.md).\nThis [Server](../basic/servers.md) will be slightly more profitable than `n00dles`.\nTherefore, we want to change our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) to target `joesguns` instead of `n00dles`.\n\nGo to `Terminal` and edit the [hacking](../basic/hacking.md) [Script](../basic/scripts.md) by entering:\n\n $ home\n $ nano early-hack-template.js\n\nAt the top of the [Script](../basic/scripts.md), change the `target` variable to be `\"joesguns\"`:\n\n const target = \"joesguns\";\n\nNote that this will **NOT** affect any instances of the [Script](../basic/scripts.md) that are already running.\nThis will only affect instances of the [Script](../basic/scripts.md) that are run from this point forward.\n\n## Creating a New Script to Purchase New Servers\n\nNext, we're going to create a [Script](../basic/scripts.md) that automatically purchases additional [Servers](../basic/servers.md).\nThese [Servers](../basic/servers.md) will be used to run many [Scripts](../basic/scripts.md).\nRunning this [Script](../basic/scripts.md) will initially be very expensive since purchasing a [Server](../basic/servers.md) costs money, but it will pay off in the long run.\n\nIn order to create this [Script](../basic/scripts.md), you should familiarize yourself with the following functions:\n\n- `purchaseServer()`\n- `getPurchasedServerCost()`\n- `getPurchasedServerLimit()`\n- `getServerMoneyAvailable()`\n- `scp()`\n- `exec()`\n\nCreate the [Script](../basic/scripts.md) by going to `Terminal` and typing:\n\n $ home\n $ nano purchase-server-8gb.js\n\nPaste the following code into the [Script](../basic/scripts.md) editor:\n\n /** @param {NS} ns */\n export async function main(ns) {\n // How much RAM each purchased server will have. In this case, it'll\n // be 8GB.\n const ram = 8;\n\n // Iterator we'll use for our loop\n let i = 0;\n\n // Continuously try to purchase servers until we've reached the maximum\n // amount of servers\n while (i < ns.getPurchasedServerLimit()) {\n // Check if we have enough money to purchase a server\n if (ns.getServerMoneyAvailable(\"home\") > ns.getPurchasedServerCost(ram)) {\n // If we have enough money, then:\n // 1. Purchase the server\n // 2. Copy our hacking script onto the newly-purchased server\n // 3. Run our hacking script on the newly-purchased server with 3 threads\n // 4. Increment our iterator to indicate that we've bought a new server\n let hostname = ns.purchaseServer(\"pserv-\" + i, ram);\n ns.scp(\"early-hack-template.js\", hostname);\n ns.exec(\"early-hack-template.js\", hostname, 3);\n ++i;\n }\n //Make the script wait for a second before looping again.\n //Removing this line will cause an infinite loop and crash the game.\n await ns.sleep(1000);\n }\n }\n\nThis code uses a while loop to purchase the maximum amount of [Servers](../basic/servers.md) using the `purchaseServer()` function.\nEach of these [Servers](../basic/servers.md) will have 8GB of [RAM](../basic/ram.md), as defined in the `ram` variable.\nNote that the [Script](../basic/scripts.md) uses the command `getServerMoneyAvailable(\"home\")` to get the amount of money you currently have.\nThis is then used to check if you can afford to purchase a [Server](../basic/servers.md).\n\nWhenever the script purchases a new [Server](../basic/servers.md), it uses the `scp()` function to copy our [Script](../basic/scripts.md) onto that new [Server](../basic/servers.md), and then it uses the `exec()` function to execute it on that [Server](../basic/servers.md).\n\nTo run this [Script](../basic/scripts.md), go to `Terminal` and type:\n\n $ run purchase-server-8gb.js\n\nThis purchase will continuously run until it has purchased the maximum number of [Servers](../basic/servers.md).\nWhen this happens, it'll mean that you have a bunch of new [Servers](../basic/servers.md) that are all running [hacking](../basic/hacking.md) [Scripts](../basic/scripts.md) against the `joesguns` [Server](../basic/servers.md)!\n\nThe reason we're using so many [Scripts](../basic/scripts.md) to hack `joesguns` instead of targeting other [Servers](../basic/servers.md) is because it's more effective.\nThis early in the game, we don't have enough [RAM](../basic/ram.md) to efficiently hack multiple targets, and trying to do so would be slow as we'd be spread too thin.\nYou should definitely do this later on, though!\n\nNote that purchasing a [Server](../basic/servers.md) is fairly expensive, and purchasing the maximum amount of [Servers](../basic/servers.md) even more so.\nAt the time of writing this guide, the [Script](../basic/scripts.md) above requires $11 million in order to finish purchasing all of the 8GB [Servers](../basic/servers.md).\nTherefore, we need to find additional ways to make money to speed up the process!\nThese are covered in the next section.\n\n## Additional Sources of Income\n\nThere are other ways to gain money in this game besides [Scripts](../basic/scripts.md) & [hacking](../basic/hacking.md).\n\n## Hacknet Nodes\n\nIf you completed the introductory tutorial, you were already introduced to this method: [Hacknet Nodes](../basic/hacknet_nodes.md).\nOnce you have enough money, you can start upgrading your [Hacknet Nodes](../basic/hacknet_nodes.md) in order to increase your passive income stream.\nThis is completely optional.\nSince each [Hacknet Node](../basic/hacknet_nodes.md) upgrade takes a certain amount of time to \"pay itself off\", it may not necessarily be in your best interest to use these.\n\nNonetheless, [Hacknet Nodes](../basic/hacknet_nodes.md) are a good source of income early in the game, although their effectiveness tapers off later on.\nIf you do wind up purchasing and upgrading [Hacknet Nodes](../basic/hacknet_nodes.md), I would suggest only upgrading their levels for now.\nI wouldn't bother with [RAM](../basic/ram.md) and Core upgrades until later on.\n\n## Crime\n\nThe best source of income right now is from [crimes](../basic/crimes.md).\nThis is because it not only gives you a large amount of money, but it also raises your hacking level.\nTo commit [crimes](../basic/crimes.md), go to the `City` tab (Alt + w).\nThen, click on the link that says `The Slums`.\n\nIn the Slums, you can attempt to commit a variety of [crimes](../basic/crimes.md), each of which gives certain types of experience and money if successful.\nSee [crimes](../basic/crimes.md) for more details.\n\nYou are not always successful when you attempt to commit a crime.\nNothing bad happens if you fail a [crime](../basic/crimes.md), but you won't earn any money and the experience gained will be reduced.\nRaising your stats improves your chance of successfully committing a [crime](../basic/crimes.md).\n\nRight now, the best option is the `Rob Store` [crime](../basic/crimes.md).\nThis takes 60 seconds to attempt, gives $400k if successful, and gives hacking experience (which is very important right now).\n\nAlternatively, you can also use the `Shoplift` [crime](../basic/crimes.md).\nThis takes 2 seconds to attempt and gives $15k if successful.\nThis [crime](../basic/crimes.md) is slightly easier and more profitable than `Rob Store`, but doesn't give hacking experience.\n\n## Work for a Company\n\nIf you don't want to commit [crimes](../basic/crimes.md), there's another option - working for a [company](../basic/companies.md).\nThis will not be nearly as profitable as [crimes](../basic/crimes.md), but will provide [company](../basic/companies.md) [reputation](../basic/reputation.md).\n\nGo to the `City` tab on the left-hand navigation menu and then go to `Joe's Guns`.\nAt `Joe's Guns`, there will be an option that says `Apply to be an Employee`.\nClick this to get the job.\nThen, a new option will appear that simply says `Work`.\nClick this to start working.\nWorking at `Joe's Guns` earns $110 per second and also grants some experience for every stat except hacking.\n\nWorking for a [company](../basic/companies.md), like [crime](../basic/crimes.md), is completely passive.\nYou can choose to focus on your work, do something else simultaneously, or switch between those two.\nWhile you focus on work, you will not be able to do anything else in the game.\nIf you do something else simultaneously, you will not gain [reputation](../basic/reputation.md) at the same speed.\nYou can cancel working at any time.\n\nOnce your hacking hits level 75, you can visit `Carmichael Security` in the city and get a software job there.\nThis job offers higher pay and also earns you hacking experience.\n\nThere are many more companies in the `City` tab that offer more pay and also more gameplay features.\nFeel free to explore!\n\n## After you Purchase your New Servers\n\nAfter you've made a total of $11 million, your automatic [Server](../basic/servers.md)-purchasing [Script](../basic/scripts.md) should finish running.\nThis will free up some [RAM](../basic/ram.md) on your home computer.\nWe don't want this [RAM](../basic/ram.md) to go to waste, so we'll make use of it.\nGo to `Terminal` and enter the following commands:\n\n $ home\n $ run early-hack-template.js -t 3\n\n## Reaching a Hacking Level of 50\n\nOnce you reach a hacking level of 50, two new important parts of the game open up.\n\n## Creating your first program: BruteSSH.exe\n\nOn the left-hand navigation menu you will notice a `Create Program` tab (Alt + p) with a red notification icon.\nThis indicates that there are programs available to be created.\nGo to that tab, and you'll see a list of all the programs you can currently create.\nHovering over a program will give a brief description of its function.\nSimply click on a program to start creating it.\n\nRight now, the program we want to create is `BruteSSH.exe`.\nThis program is used to open up SSH ports on [Servers](../basic/servers.md).\nThis will allow you to hack more [Servers](../basic/servers.md), as many [Servers](../basic/servers.md) in the game require a certain number of opened ports in order for `NUKE.exe` to gain root access.\n\nFeel free to cancel your work on creating a program at any time, as your progress will be saved and can be picked back up later.\n`BruteSSH.exe` takes about 10 minutes to complete.\n\n## Optional: Create AutoLink.exe\n\nOn the `Create Programs` page, you will notice another program you can create called `AutoLink.exe`.\nIf you don't mind waiting another 10-15 minutes, you should go ahead and create this program.\nIt makes it much less tedious to connect to other [Servers](../basic/servers.md), but it's not necessary for progression.\n\n## Joining your first faction: CyberSec\n\nShortly after you reached level 50 hacking, you should have received a message that said this:\n\n Message received from unknown sender:\n\n We've been watching you. Your skills are very impressive. But you're wasting your talents.\n If you join us, you can put your skills to good use and change the world for the better.\n If you join us, we can unlock your full potential.\n\n But first, you must pass our test. Find and install the backdoor on our server.\n\n -CyberSec\n\n This message was saved as csec-test.msg onto your home computer.\n\nIf you didn't, or if you accidentally closed it, that's okay!\nMessages get saved onto your home computer.\nEnter the following `Terminal` commands to view the message:\n\n $ home\n $ cat csec-test.msg\n\nThis message is part of the game's main \"quest-line\".\nIt is a message from the `CyberSec` [faction](../basic/factions.md) that is asking you to pass their test.\nPassing their test is simple, you just have to find their [Server](../basic/servers.md), hack it, and install a backdoor through the `Terminal`.\nTheir [Server](../basic/servers.md) is called `CSEC`.\nTo do this, we'll use the `scan-analyze` Terminal command, just like we did before:\n\n $ home\n $ scan-analyze 2\n\nThis will show you the network for all [Servers](../basic/servers.md) that are up to 2 \"nodes\" away from your home computer.\nRemember that the network is randomly generated so it'll look different for everyone.\nHere's the relevant part of my `scan-analyze` results:\n\n ┕ home\n ┃ Root Access: YES, Required hacking skill: 1\n ┃ Number of open ports required to NUKE: 5\n ┃ RAM: 8.00GB\n ┣ harakiri-sushi\n ┃ Root Access: NO, Required hacking skill: 40\n ┃ Number of open ports required to NUKE: 0\n ┃ RAM: 16.00GB\n ┕ iron-gym\n ┃ Root Access: NO, Required hacking skill: 100\n ┃ Number of open ports required to NUKE: 1\n ┃ RAM: 32.00GB\n ┕ CSEC\n Root Access: NO, Required hacking skill: 55\n Number of open ports required to NUKE: 1\n RAM: 8.00GB\n\nThis tells me that I can reach `CSEC` by going through `iron-gym`:\n\n $ connect iron-gym\n $ connect CSEC\n\nIf you created the `AutoLink.exe` program earlier, then there is an easier method of connecting to `CSEC`.\nYou'll notice that in the `scan-analyze` results, all of the [Server](../basic/servers.md) hostnames are white and underlined.\nYou can simply click one of the [Server](../basic/servers.md) hostnames in order to connect to it.\nSo, simply click `CSEC`!\n\nMake sure you notice the required hacking skill for the `CSEC` [Server](../basic/servers.md).\nThis is a random value between 51 and 60.\nAlthough you receive the message from CSEC once you hit 50 hacking, you cannot actually pass their test until your hacking is high enough to install a backdoor on their [Server](../basic/servers.md).\n\nAfter you are connected to the `CSEC` [Server](../basic/servers.md), you can backdoor it.\nNote that this [Server](../basic/servers.md) requires one open port in order to gain root access.\nWe can open the SSH port using the `BruteSSH.exe` program we created earlier.\nIn `Terminal`:\n\n $ run BruteSSH.exe\n $ run NUKE.exe\n $ backdoor\n\nAfter you successfully install the backdoor, you should receive a [faction](../basic/factions.md) invitation from `CyberSec` shortly afterwards.\nAccept it.\nIf you accidentally reject the invitation, that's okay.\nJust go to the `Factions` tab (Alt + f) and you should see an option that lets you accept the invitation.\n\nCongrats!\nYou just joined your first [faction](../basic/factions.md).\nDon't worry about doing anything with this [faction](../basic/factions.md) yet, we can come back to it later.\n\n## Using Additional Servers to Hack Joesguns\n\nOnce you have the `BruteSSH` program, you will be able to gain root access to several additional [Servers](../basic/servers.md).\nThese [Servers](../basic/servers.md) have more [RAM](../basic/ram.md) that you can use to run [Scripts](../basic/scripts.md).\nWe'll use the [RAM](../basic/ram.md) on these [Servers](../basic/servers.md) to run more [Scripts](../basic/scripts.md) that target `joesguns`.\n\n## Copying our Scripts\n\nThe [Servers](../basic/servers.md) we'll be using to run our [Scripts](../basic/scripts.md) are:\n\n- `neo-net`\n- `zer0`\n- `max-hardware`\n- `iron-gym`\n\nAll of these [Servers](../basic/servers.md) have 32GB of [RAM](../basic/ram.md).\nYou can use the `Terminal` command `scan-analyze 3` to see for yourself.\nTo copy our [hacking](../basic/hacking.md) [Scripts](../basic/scripts.md) onto these [Servers](../basic/servers.md), go to `Terminal` and run:\n\n $ home\n $ scp early-hack-template.js neo-net\n $ scp early-hack-template.js zer0\n $ scp early-hack-template.js max-hardware\n $ scp early-hack-template.js iron-gym\n\nSince each of these [Servers](../basic/servers.md) has 32GB of [RAM](../basic/ram.md), we can run our [hacking](../basic/hacking.md) script with 12 threads on each [Server](../basic/servers.md).\nBy now, you should know how to connect to [Servers](../basic/servers.md).\nSo find and connect to each of the [Servers](../basic/servers.md) above using the `scan-analyze 3` `Terminal` command.\nThen, use following `Terminal` command to run our [hacking](../basic/hacking.md) script with 12 threads:\n\n $ run early-hack-template.js -t 12\n\nRemember that if you have the `AutoLink` program, you can simply click on the hostname of a [Server](../basic/servers.md) after running `scan-analyze` to connect to it.\n\n## Profiting from Scripts & Gaining Reputation with CyberSec\n\nNow it's time to play the waiting game.\nIt will take some time for your [Scripts](../basic/scripts.md) to start earning money.\nRemember that most of your [Scripts](../basic/scripts.md) are targeting `joesguns`.\nIt will take a bit for them to `grow()` and `weaken()` the [Server](../basic/servers.md) to the appropriate values before they start [hacking](../basic/hacking.md) it.\nOnce they do, however, the [Scripts](../basic/scripts.md) will be very profitable.\n\nFor reference, in about two hours after starting my first [Script](../basic/scripts.md), my [Scripts](../basic/scripts.md) had a production rate of $20k per second and had earned a total of $70 million.\n(You can see these stats on the `Active Scripts` tab).\n\nAfter another 15 minutes, the production rate had increased to $25k per second and the [Scripts](../basic/scripts.md) had made an additional $55 million.\n\nYour results will vary based on how fast you earned money from [crime](../basic/crimes.md)/[working](../basic/companies.md)/[hacknet nodes](../basic/hacknet_nodes.md), but this will hopefully give you a good indication of how much the [Scripts](../basic/scripts.md) can earn.\n\nIn the meantime, we are going to be gaining reputation with the `CyberSec` [faction](../basic/factions.md).\nGo to the `Factions` tab (Alt + f) on the left-hand navigation menu, and from there select `CyberSec`.\nIn the middle of the page there should be a button for `Hacking Contracts`.\nClick it to start earning [reputation](../basic/reputation.md) for the `CyberSec` [faction](../basic/factions.md) (as well as some hacking experience).\nThe higher your hacking level, the more [reputation](../basic/reputation.md) you will gain.\nNote that while you are working for a [faction](../basic/factions.md), you can choose to not interact with the rest of the game in any way to gain [reputation](../basic/reputation.md) at full speed.\nYou can also select to do something else simultaneously, gaining [reputation](../basic/reputation.md) a bit more slowly, until you focus again.\nYou can cancel your [faction](../basic/factions.md) work at any time with no penalty to your [reputation](../basic/reputation.md) gained so far.\n\n## Purchasing Upgrades and Augmentations\n\nAs I mentioned before, within 1-2 hours I had earned over $200 million.\nNow, it's time to spend all of this money on some persistent upgrades to help progress!\n\n## Upgrading RAM on Home computer\n\nThe most important thing to upgrade right now is the [RAM](../basic/ram.md) on your home computer.\nThis will allow you to run more [Scripts](../basic/scripts.md).\n\nTo upgrade your [RAM](../basic/ram.md), go to the `City` tab and visit the company `Alpha Enterprises`.\nThere will be a button that says `Upgrade 'home' RAM (8.00GB -> 16.00GB) - $1.010m`.\nClick it to upgrade your [RAM](../basic/ram.md).\n\nI recommend getting your home computer's [RAM](../basic/ram.md) to **at least** 128GB.\nGetting it even higher would be better.\n\n## Purchasing your First Augmentations\n\nOnce you get ~1000 [reputation](../basic/reputation.md) with the `CyberSec` [faction](../basic/factions.md), you can purchase your first [Augmentation](../basic/augmentations.md) from them.\n\nTo do this, go to the `Factions` tab on the left-hand navigation menu (Alt + f) and select `CyberSec`.\nThere is a button near the bottom that says `Purchase Augmentations`.\nThis will bring up a page that displays all of the [Augmentations](../basic/augmentations.md) available from `CyberSec`.\nSome of them may be locked right now.\nTo unlock these, you will need to earn more [reputation](../basic/reputation.md) with `CyberSec`.\n\n[Augmentations](../basic/augmentations.md) give persistent upgrades in the form of multipliers.\nThese aren't very powerful early in the game because the multipliers are small.\nHowever, the effects of [Augmentations](../basic/augmentations.md) stack multiplicatively **with each other**, so as you continue to install many [Augmentations](../basic/augmentations.md), their effects will increase significantly.\n\nBecause of this, I would recommend investing more in [RAM](../basic/ram.md) upgrades for your home computer rather than [Augmentations](../basic/augmentations.md) early on.\nHaving enough [RAM](../basic/ram.md) to run many [Scripts](../basic/scripts.md) will allow you to make much more money, and then you can come back later on and get all these [Augmentations](../basic/augmentations.md).\n\nRight now, I suggest purchasing at the very least the `Neurotrainer I` [Augmentation](../basic/augmentations.md) from `CyberSec`.\nIf you have the money to spare, I would also suggest getting `BitWire` and several levels of the `NeuroFlux Governor` (`NFG`) [Augmentations](../basic/augmentations.md).\nNote that each time you purchase an [Augmentation](../basic/augmentations.md), **the price of purchasing another increases by 90%**, so make sure you buy the most expensive [Augmentation](../basic/augmentations.md) first.\nDon't worry, once you choose to install [Augmentations](../basic/augmentations.md), their prices will reset back to their original values.\n\n## Next Steps\n\nThat's the end of the walkthrough portion of this guide!\nYou should continue to explore what the game has to offer.\nThere's quite a few features that aren't covered or mentioned in this guide, and even more that get unlocked as you continue to play!\n\nAlso, check out the api documentation to see what it has to offer.\nWriting [Scripts](../basic/scripts.md) to perform and automate various tasks is where most of the fun in the game comes from (in my opinion)!\n\nThe following are a few things you may want to consider doing in the near future.\n\n## Installing Augmentations (and Resetting)\n\nIf you've purchased any [Augmentations](../basic/augmentations.md), you'll need to install them before you actually gain their effects.\nInstalling [Augmentations](../basic/augmentations.md) is the game's \"soft-reset\" or \"prestige\" mechanic.\n\nTo install your [Augmentations](../basic/augmentations.md), go to the `Augmentations` tab (Alt + a) on the left-hand navigation menu.\nYou will see a list of all of the [Augmentations](../basic/augmentations.md) you have purchased.\nBelow that, you will see a button that says `Install Augmentations`.\nBe warned, after clicking this there is no way to undo it (unless you load an earlier save).\n\n## Automating the Script Startup Process\n\nWhenever you install [Augmentations](../basic/augmentations.md), all of your [Scripts](../basic/scripts.md) are killed and you'll have to re-run them.\nDoing this every time you install [Augmentations](../basic/augmentations.md) would be very tedious and annoying, so you should write a [Script](../basic/scripts.md) to automate the process.\nHere's a simple example for a startup [Script](../basic/scripts.md).\nFeel free to adjust it to your liking.\n\n /** @param {NS} ns */\n export async function main(ns) {\n // Array of all servers that don't need any ports opened\n // to gain root access. These have 16 GB of RAM\n const servers0Port = [\"sigma-cosmetics\",\n \"joesguns\",\n \"nectar-net\",\n \"hong-fang-tea\",\n \"harakiri-sushi\"];\n\n // Array of all servers that only need 1 port opened\n // to gain root access. These have 32 GB of RAM\n const servers1Port = [\"neo-net\",\n \"zer0\",\n \"max-hardware\",\n \"iron-gym\"];\n\n // Copy our scripts onto each server that requires 0 ports\n // to gain root access. Then use nuke() to gain admin access and\n // run the scripts.\n for (let i = 0; i < servers0Port.length; ++i) {\n const serv = servers0Port[i];\n\n ns.scp(\"early-hack-template.js\", serv);\n ns.nuke(serv);\n ns.exec(\"early-hack-template.js\", serv, 6);\n }\n\n // Wait until we acquire the \"BruteSSH.exe\" program\n while (!ns.fileExists(\"BruteSSH.exe\")) {\n await ns.sleep(60000);\n }\n\n // Copy our scripts onto each server that requires 1 port\n // to gain root access. Then use brutessh() and nuke()\n // to gain admin access and run the scripts.\n for (let i = 0; i < servers1Port.length; ++i) {\n const serv = servers1Port[i];\n\n ns.scp(\"early-hack-template.js\", serv);\n ns.brutessh(serv);\n ns.nuke(serv);\n ns.exec(\"early-hack-template.js\", serv, 12);\n }\n }\n\n## Random Tips\n\n- Early on in the game, it's better to spend your money on upgrading [RAM](../basic/ram.md) and purchasing new [Servers](../basic/servers.md) rather than spending it on [Augmentations](../basic/augmentations.md)\n- The more money available on a [Server](../basic/servers.md), the more effective the `hack()` and `grow()` functions will be.\n This is because both of these functions use percentages rather than flat values.\n `hack()` steals a percentage of a [Server](../basic/servers.md)'s total available money, and `grow()` increases a [Server](../basic/servers.md)'s money by X%.\n- There is a limit to how much money can exist on a [Server](../basic/servers.md).\n This value is different for each [Server](../basic/servers.md).\n The `getServerMaxMoney()` function will tell you this maximum value.\n- At this stage in the game, your combat stats (strength, defense, etc.) are not nearly as useful as your hacking stat.\n Do not invest too much time or money into gaining combat stat exp.\n- As a rule of thumb, your hacking target should be the [Server](../basic/servers.md) with highest max money that's required hacking level is under 1/2 of your hacking level.\n"},90988:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Tools & Resource\n\n## Official Script Repository\n\nThere are plans to create an official repository of Bitburner scripts.\nAs of right now, this is not a priority and has not been started.\nHowever, if you'd like to contribute scripts now, you can find the repository [here](https://github.com/bitburner-official/bitburner-scripts) and submit pull requests.\n\n## Visual Studio Code Extension\n\nOne user created a Bitburner extension for the Visual Studio Code (VSCode) editor.\n\nThis extension includes several features such as:\n\n- Dynamic RAM calculation\n- RAM Usage breakdown\n- Typescript definition files with jsdoc comments\n- Syntax highlighting\n\nYou can find more information and download links [on this reddit post](https://www.reddit.com/r/Bitburner/comments/bh48y2/visual_studio_code_ram_calculator_extra/).\n"},96687:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Documentation\n\n## [Beginners guide](help/getting_started.md)\n\n## Basic Mechanics\n\n- [stats](basic/stats.md)\n- [terminal](basic/terminal.md)\n- [hacking](basic/hacking.md)\n- [scripts](basic/scripts.md)\n- [servers](basic/servers.md)\n- [ram](basic/ram.md)\n- [hacknet_nodes](basic/hacknet_nodes.md)\n- [augmentations](basic/augmentations.md)\n- [companies](basic/companies.md)\n- [factions](basic/factions.md)\n- [crimes](basic/crimes.md)\n- [infiltration](basic/infiltration.md)\n- [programs](basic/programs.md)\n- [reputation](basic/reputation.md)\n- [stockmarket](basic/stockmarket.md)\n- [world](basic/world.md)\n- [codingcontracts](basic/codingcontracts.md)\n\n## Advanced Mechanics\n\n- [BitNodes](advanced/bitnodes.md)\n- [BladeBurners](advanced/bladeburners.md)\n- [Corporations](advanced/corporations.md)\n- [Gang](advanced/gang.md)\n- [Grafting](advanced/grafting.md)\n- [Hacknet Servers](advanced/hacknetservers.md)\n- [Intelligence](advanced/intelligence.md)\n- [Offline Scripts and Bonus Time](advanced/offlineandbonustime.md)\n- [Sleeves](advanced/sleeves.md)\n- [Source-Files](advanced/sourcefiles.md)\n- [Stanek's Gift](advanced/stanek.md)\n\n## Resources\n\n- [Learn to program](programming/learn.md)\n- [Remote API](programming/remote_api.md)\n- [Game Frozen or Stuck?](programming/game_frozen.md)\n- [Tools & Resources](help/tools_and_resources.md)\n- [Changelog](changelog.md)\n\n## Migration\n\n- [v1.0.0 script migration guide](migrations/v1.md)\n- [v2.0.0 script migration guide](migrations/v2.md)\n"},92611:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# v1.0.0 Migration Guide\n\nIn v1.0.0 a few API have been broken.\n\nmigrated (only for ns2):\n\n- bladeburner.getActionTime will return milliseconds instead of seconds.\n- getHackTime will return milliseconds instead of seconds.\n- getGrowTime will return milliseconds instead of seconds.\n- getWeakenTime will return milliseconds instead of seconds.\n- hackAnalyzePercent renamed to hackAnalyze\n- hackAnalyzePercent will return decimal instead of percentage\n- hackChance (not formulas.basic.hackChance) renamed to hackAnalyzeChance\n- formulas.basic is split into formulas.skills and formulas.hacking\n\nnot migrated (require manual changes sometimes):\n\n- getPlayer().hacking_skill renamed `hacking`\n- same thing in sleeves\n- getPurchasedServers won't let you query for ips instead of hostnames.\n- getStats is deprecated in favor getPlayer\n- getCharacterInformation is deprecated in favor getPlayer\n- getServerRam deprecated in favor of getServerMaxRam and getServerUsedRam\n- getServerBaseSecurityLevel will be deprecated in favor of nothing, it's not really used.\n- sleep can no longer be called simultaneously, a new function called asleep will let you.\n- write returns promise (needs to be await ed).\n- scp returns a promise (needs to be await ed).\n- free port, write, read\n- write, read does not support port anymore, writePort and readPort does.\n\nUpon loading v1.0.0 the game will apply some rules to change everything.\nThe game never changes a file before making a backup called `BACKUP_filename.ext`, then,\nin the script it will change whatever it thinks it should change.\nBut will prefix the modified line with the original line.\n\nA file called `v1_DETECTED_CHANGES.txt` will point out every file with some possible problem.\n"},45925:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# v2.0.0 Migration Guide\n\nIn v2.0.0 a few more APIs have been broken.\n\n## Working\n\nWorking has been rebuilt from the ground up. The motivation for this change is that all\ndifferent types of work all required different cached variables on the main Player object.\nThis caused a lot of bugs and crashes. It's been reworked in such a way as to prevent bugs\nand make it nearly trivial to add new kinds of work.\nAll work types give their reward immediately. No need to stop work to bank rewards like reputation.\nFaction and Company work no longer have a time limit.\nCompany work no longer reduces rep gain by half for quitting early.\nCompany factions now require 400k rep to join (up from 200k).\nBackdooring a company server reduces faction requirement to 300k.\nAll types of work generally no longer keep track of cumulative gains like exp and reputation since it's applied instantly.\n\n## commitCrime\n\nCrime now loops, meaning after finishing one shoplift you start the next one with no input. While the signature\nhas not changed, its behavior has. It also has a new 'focus' parameter.\n\n## getPlayer\n\nThe following work-related fields are no longer included:\n\n- workChaExpGained\n- currentWorkFactionName\n- workDexExpGained\n- workHackExpGained\n- createProgramReqLvl\n- workStrExpGained\n- companyName\n- crimeType\n- workRepGained\n- workChaExpGainRate\n- workType\n- workStrExpGainRate\n- isWorking\n- workRepGainRate\n- workDefExpGained\n- currentWorkFactionDescription\n- workHackExpGainRate\n- workAgiExpGainRate\n- workDexExpGainRate\n- workMoneyGained\n- workMoneyLossRate\n- workMoneyGainRate\n- createProgramName\n- workDefExpGainRate\n- workAgiExpGained\n- className\n\nThe reason for this, is that these fields are all, in one way or another, included in the new work field `currentWork`.\nSome of these values are also irrelevant.\nTake a look at the new singularity.getCurrentWork function:\n\nAll fields ending in `_mult` have been moved to the `mults` struct.\nFor example: `getPlayer().hacking_skill_mult` => `getPlayer().mults.hacking_skill`\n\nskills has been moved to the skills struct\nFor example: `getPlayer().hacking` => `getPlayer().skills.hacking`\n\nexp has been moved to the exp struct\nFor example: `getPlayer().hacking_exp` => `getPlayer().exp.hacking`\n\nhp has been moved to the hp struct\nFor example: `getPlayer().max_hp` => `getPlayer().hp.max` or `hp.current`\n\n`hasWseAccount`, `hasTixApiAccess`, `has4SData`, `has4SDataTixApi` have been removed and replaced with similar stock functions.\n\n## workForCompany\n\nThe argument 'companyName' is now required.\n\n## getScriptIncome & getScriptExpGain\n\nThese two functions used to have a call where, if no arguments were provided, it would return the total for all scripts. This caused weird signature.\nIf you want to get the total income/exp for all scripts, use the new getTotalScriptIncome / getTotalScriptExpGain instead.\n\n## scp\n\nThe last two arguments of spc have been reversed. The signature is now scp(files, destination, optional_source)\n\n## Singularity\n\nThe top level singularity functions were deprecated a while ago in favor of the singularity namespace.\nThis means calls like 'ns.connect' need to be changed to 'ns.singularity.connect'\n\n## stock.buy, stock.sell, stock.short\n\nThese functions were renamed to stock.buyStock, stock.sellStock, and stock.buyShort because 'buy', 'sell', and 'short'\nare very common tokens that would trick the ram calculation.\n\n## corporation.bribe\n\nThe ability to give shares as a bribe has been removed. The signature is now bribe(faction, money)\n"},69939:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a='# Game Frozen or Stuck?\n\n## Infinite Loop in Scripts\n\nIf your game is frozen or stuck in any way, then the most likely culprit is an infinitely running loop in your script.\nTo get past the freezing, run the game with `?noScripts` in the URL:\n\n[Link to no freeze](https://bitburner-official.github.io?noScripts)\n\nThen, to fix your script, make sure you have a `sleep()` or any other timed function like `hack()` or `grow()` in any infinite loops:\n\n while(true) {\n // This is an infinite loop that does something\n ...\n await ns.sleep(1000); // Add a 1s sleep to prevent freezing\n }\n\nAlso make sure that each while loop gets to the `await`ed function or `break`, for example the next snippet has a `sleep()` function, but it nor any possible conditional breaks are never reached and therefore will crash the game:\n\n while(true) {\n let currentMoney = ns.getServerMoneyAvailable("n00dles");\n let maxMoney = ns.getServerMaxMoney("n00dles");\n if (currentMoney < maxMoney/2){\n await ns.grow("n00dles");\n }\n if (currentMoney === maxMoney){\n break;\n }\n }\n\nIf `n00dles` current money is, for example, 75% of the maximum money, the script will reach neither `grow()` nor `break` and the game will crash.\nAdding a sleep like in the first example, or changing the code so that the `awaited` function or `break` is always reached, would prevent the crash.\n\nCommon infinite loop when translating the server purchasing script in starting guide to scripts is to have a while loop, where the condition\'s change is conditional:\n\n var ram = 8;\n var i = 0;\n\n while (i < ns.getPurchasedServerLimit()) {\n if (ns.getServerMoneyAvailable("home") > ns.getPurchasedServerCost(ram)) {\n var hostname = ns.purchaseServer("pserv-" + i, ram);\n ns.scp("early-hack-template.script", hostname);\n ns.exec("early-hack-template.script", hostname, 3);\n ++i;\n }\n }\n\nIf the player does not currently have enough money to purchase a server, the `if`\'s condition will be false and `++i` will not be reached.\nSince the script doesn\'t have `sleep()` and value `i` will not change without the `if` being true, this will crash the game.\nAdding a `sleep()` that is always reached would prevent the crash.\n\n## Blackscreen\n\nIf the game window becomes a black screen without the game itself crashing, this is caused by the game running too many concurrent scripts (the game runs on a browser and each tab can only use so much ram until it crashes).\nDepending on which scripts are running and your hardware, this number can vary between 50000 to 100000 instances (in version 2.0.2. In prior versions this number was about 1/5th of that).\nTo prevent this from happening make sure to multithread the scripts as much as possible.\n\n## Bug\n\nOtherwise, the game is probably frozen/stuck due to a bug.\nTo report a bug, follow the guidelines [here](https://github.com/bitburner-official/bitburner-src/blob/master/doc/CONTRIBUTING.md#reporting-bugs).\n'},8734:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Hacking algorithms\n\nThere are three primary families of hacking algorithms.\nThis guide will go over each of them and advise on how they can be implemented.\n\n## Self-contained algorithms\n\n**Difficulty**: Easy\n\nPros:\n\n- Easy to implement\n- Does not require other scripts to work\n- Works at any stage of the game\n\nCons:\n\n- Limits income generation\n- Extremely [RAM](../basic/ram.md) inefficient\n- Utilizes script online time poorly\n- Risk of over hacking\n\nSelf-contained algorithms are the simplest family of hacking algorithms to implement.\nEach script is tasked with choosing which function to execute based on the status of the target server.\nBecause of this, they guarantee a consistent, but relatively small, flow of money.\n\nThe general logic goes like this:\n\n loop forever {\n if security is not minimum {\n await ns.weaken(target)\n } else if money is not maximum {\n await ns.grow(target)\n } else {\n await ns.hack(target)\n }\n }\n\nThis algorithm is perfectly capable of paving the way through the majority of the game, but it has a few significant issues.\n\n- It tends to make all your scripts on every server do the same thing.\n (e.g. If the target is 0.01 security above the minimum, all scripts will decide to weaken, when only a handful of threads should be devoted to the task)\n- At higher thread counts, these scripts have the potential to hack the server to $0, or maximum security, requiring a long setup time while the scripts return the server to the best stats.\n- Requires function calls such as `getServerSecurityLevel` and `getServerMoneyAvailable`, as well as calling all three hacking functions, increasing RAM cost which is multiplied by the number of allocated threads\n\n## Loop algorithms\n\n**Difficulty**: Easy to Medium\n\nPros:\n\n- Simple to understand\n- Works at any stage of the game\n- Maximize RAM usage\n\nCons:\n\n- Requires a script that handles deployment\n\nBy splitting our hack, weaken, and grow functions into three separate scripts, we can both remove our reliance on functions such as `getServerSecurityLevel` as well as removing functions that cannot work concurrently, reducing RAM requirements, and thus increasing our thread limits.\nLoop scripts are formatted like this:\n\n loop forever {\n await ns.hack(target) // or grow, or weaken\n }\n\nNow we can take the total amount of threads available and split it and allocate, for example:\n\n- 1 part to the hack scripts\n- 10 parts to the grow scripts\n- 2 parts to the weaken scripts\n\nMeaning if we have space for 100 threads across the entire network 7 threads will go to the hack scripts, 76 threads will go to the grow scripts and 15 threads will go to the weaken scripts.\nThe ratios described here are arbitrary and can be greatly improved through the use of the analyze functions, and later, through the use of Formulas.exe.\n\nWhen utilizing this strategy, monitor the amount of money and security on the target server, if the money is not hovering around maximum and the security around the minimum, the ratios should be tweaked until that is the case.\n\nUtilizing `sleep` or `asleep` to ensure that your scripts do not all start at the same time can decrease the chance of issues associated with overhacking occurring.\nBoth functions have a ram cost of zero.\n\n## Batch algorithms (HGW, HWGW, or Cycles)\n\n**Difficulty**: Hard\n\nPros:\n\n- Maximum potential income\n\nCons:\n\n- Very difficult to implement without prior programming knowledge\n- Very difficult to make work on servers with less than 1TB of RAM\n\nBatch algorithms utilize a master script that uses `exec` many scripts which utilize a relevant hacking function in batches.\n\nThe scripts used to execute the hacking functions are even simpler than the previous algorithms but a complex controller is required to calculate the effect, time taken, and the necessary delay.\n\n await ns.sleep(a bit)\n await ns.hack(target) // or grow, or weaken\n\nA few things need to be known before this algorithm can be implemented:\n\n- The effects of hack and grow depend on the server security level, a higher security level results in a reduced effect.\n You only want these effects to occur when the security level is minimized.\n- The time taken to execute hack, grow, or weaken is determined when the function is called and is based on the security level of the target server and your hacking level.\n You only want these effects to start when the security level is minimized.\n- The effects of hack, grow, and weaken, are determined when the time is completed, rather than at the beginning.\n Hack should finish when security is minimum and money is maximum.\n Grow should finish when security is minimum, shortly after a hack occurred.\n Weaken should occur when security is not at a minimum due to a hack or grow increasing it.\n\nA single batch consists of four actions:\n\n1. A hack script removes a predefined, precalculated amount of money from the target server.\n2. A weaken script counters the security increase of the hack script.\n3. A grow script counters the money decrease caused by the hack script.\n4. A weaken script counters the security increase caused by the grow script.\n\nIt is also important that these 4 scripts finish in the order specified above, and all of their effects be precalculated to optimize the ratios between them.\nThis is the reason for the delay in the scripts.\n\n |= hack ====================|\n |=weaken 1======================================|\n |= grow ==========================|\n |=weaken 2======================================|\n\nBatches only function predictably when the target server is at minimum security and maximum money, so your script must also handle preparing a server for your batches.\nYou can utilize batches to prepare a server by using no hack threads during preparation.\n\nDepending on your computer's performance as well as a few other factors, the necessary delay between script execution times may range between 20ms and 200ms, you want to fine-tune this value to be as low as possible while also avoiding your scripts finishing out of order.\nAnything lower than 20ms will not work due to JavaScript limitations.\n"},19530:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a="# Learn to Program in JavaScript\n\n## For Beginner Programmers\n\nIf you have little to no programming experience, that's okay!\nYou don't need to be a great programmer in order to enjoy or play this game.\nIn fact, this game could help you learn some basic programming concepts.\n\nHere are some good tutorials for learning programming/JavaScript as a beginner:\n\n- [Learn-JS](http://www.learn-js.org/en/Welcome)\n- [programiz](https://www.programiz.com/javascript/get-started)\n- [Speaking JavaScript](https://exploringjs.com/es5/)\n This is a bit on the longer side.\n You can skip all of the historical background stuff.\n Recommended chapters: 1, 7-18\n\n## For Experienced Programmers\n\nThe following section lists several good tutorials/resources for those who have experience programming but who have not worked extensively with JavaScript before.\n\nBefore that, however, it's important to clarify some terminology about the different versions of JavaScript.\nThese are summarized in this article:\n\n[WTF is ES6, ES8, ES2017, ECMAScript...](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)\n\nAn important takeaway from this article is that ES6, also known as ES2015, introduced many major features that are commonly seen in modern JavaScript programming.\nHowever, this means that ES5 engines and interpreters will fail if they encounters these ES6 features.\nYou'll see why this is important further down.\n\n- [MDN Introduction to JS](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript)\n- [Eloquent JavaScript (ES6+)](http://eloquentjavascript.net/)\n Recommended Chapters: Introduction, 1-6\n- [Modern JavaScript Tutorial (ES6+)](https://javascript.info/)\n Recommended Chapters: 2, 4-6\n"},18006:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a='# Remote API\n\nAll versions of Bitburner can use websockets to connect to a server.\nThat server can then perform a number of actions.\nMost commonly this is used in conjunction with an external text editor or API\nin order to make writing scripts easier, or even use typescript.\n\nTo make use of this Remote API through the official server, look [here](https://github.com/bitburner-official/typescript-template).\nIf you want to make your own server, see below for API details.\n\nThis API uses the JSON RPC 2.0 protocol. Inputs are in the following form:\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": string,\n "params": any\n }\n\nOutputs:\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": any,\n "error": any\n }\n\n## Methods\n\n## `pushFile`\n\nCreate or update a file.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "pushFile",\n "params": {\n filename: string;\n content: string;\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": "OK"\n }\n\n## `getFile`\n\nRead a file and its content.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "getFile",\n "params": {\n filename: string;\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": string\n }\n\n## `deleteFile`\n\nDelete a file.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "deleteFile",\n "params": {\n filename: string;\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": "OK"\n }\n\n## `getFileNames`\n\nList all file names on a server.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "getFileNames",\n "params": {\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": string[]\n }\n\n## `getAllFiles`\n\nGet the content of all files on a server.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "getAllFiles",\n "params": {\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": {\n filename: string,\n content: string\n }[]\n }\n\n## `calculateRam`\n\nCalculate the in-game ram cost of a script.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "calculateRam",\n "params": {\n filename: string;\n server: string;\n }\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": number\n }\n\n## `getDefinitionFile`\n\nGet the definition file of the API.\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "method": "getDefinitionFile"\n }\n\n\n {\n "jsonrpc": "2.0",\n "id": number,\n "result": string\n }\n'},42923:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a='/** All netscript definitions */\n\n/** @public */\ninterface HP {\n current: number;\n max: number;\n}\n\n/** @public */\ninterface Skills {\n hacking: number;\n strength: number;\n defense: number;\n dexterity: number;\n agility: number;\n charisma: number;\n intelligence: number;\n}\n\n// TODO: provide same treatment to CodingContractData as for SleeveTask (actual types)\n/**\n * Coding contract data will differ depending on coding contract.\n * @public\n */\ntype CodingContractData = any;\n\n/** @public */\ntype PortData = string | number;\n\n/** @public */\ntype ScriptArg = string | number | boolean;\n\n/** @public */\ntype FilenameOrPID = number | string;\n\n/** @public */\ninterface Person {\n hp: HP;\n skills: Skills;\n exp: Skills;\n mults: Multipliers;\n city: CityName;\n}\n\n/** @public */\ninterface Player extends Person {\n money: number;\n numPeopleKilled: number;\n entropy: number;\n jobs: Partial>;\n factions: string[];\n totalPlaytime: number;\n location: string;\n}\n\n/** @public */\ninterface SleevePerson extends Person {\n /** Number 0-100 Experience earned and shared is multiplied with shock% before sync% */\n shock: number;\n /** Number 1-100 Experience earned by this sleeve and shared with the player is multiplied with sync% after shock% */\n sync: number;\n /** Number 1-100 initial Value of sync on BN start */\n memory: number;\n /** Number of 200ms cycles which are stored as bonus time */\n storedCycles: number;\n}\n\n/** Various info about resets\n * @public */\ninterface ResetInfo {\n /** Numeric timestamp (from Date.now()) of last augmentation reset */\n lastAugReset: number;\n /** Numeric timestamp (from Date.now()) of last bitnode reset */\n lastNodeReset: number;\n /** The current bitnode */\n currentNode: number;\n /** A map of owned augmentations to their levels. Keyed by the augmentation name. Map values are the augmentation level (e.g. for NeuroFlux governor). */\n ownedAugs: Map;\n /** A map of owned SF to their levels. Keyed by the SF number. Map values are the SF level. */\n ownedSF: Map;\n}\n\n/** @public */\ninterface MoneySource {\n bladeburner: number;\n casino: number;\n class: number;\n codingcontract: number;\n corporation: number;\n crime: number;\n gang: number;\n hacking: number;\n hacknet: number;\n hacknet_expenses: number;\n hospitalization: number;\n infiltration: number;\n sleeves: number;\n stock: number;\n total: number;\n work: number;\n servers: number;\n other: number;\n augmentations: number;\n}\n\n/** @public */\ninterface MoneySources {\n sinceInstall: MoneySource;\n sinceStart: MoneySource;\n}\n\n/** @public */\ninterface Multipliers {\n /** Multiplier to hacking skill */\n hacking: number;\n /** Multiplier to strength skill */\n strength: number;\n /** Multiplier to defense skill */\n defense: number;\n /** Multiplier to dexterity skill */\n dexterity: number;\n /** Multiplier to agility skill */\n agility: number;\n /** Multiplier to charisma skill */\n charisma: number;\n /** Multiplier to hacking experience gain rate */\n hacking_exp: number;\n /** Multiplier to strength experience gain rate */\n strength_exp: number;\n /** Multiplier to defense experience gain rate */\n defense_exp: number;\n /** Multiplier to dexterity experience gain rate */\n dexterity_exp: number;\n /** Multiplier to agility experience gain rate */\n agility_exp: number;\n /** Multiplier to charisma experience gain rate */\n charisma_exp: number;\n /** Multiplier to chance of successfully performing a hack */\n hacking_chance: number;\n /** Multiplier to hacking speed */\n hacking_speed: number;\n /** Multiplier to amount of money the player gains from hacking */\n hacking_money: number;\n /** Multiplier to amount of money injected into servers using grow */\n hacking_grow: number;\n /** Multiplier to amount of reputation gained when working */\n company_rep: number;\n /** Multiplier to amount of reputation gained when working */\n faction_rep: number;\n /** Multiplier to amount of money gained from crimes */\n crime_money: number;\n /** Multiplier to crime success rate */\n crime_success: number;\n /** Multiplier to amount of money gained from working */\n work_money: number;\n /** Multiplier to amount of money produced by Hacknet Nodes */\n hacknet_node_money: number;\n /** Multiplier to cost of purchasing a Hacknet Node */\n hacknet_node_purchase_cost: number;\n /** Multiplier to cost of ram for a Hacknet Node */\n hacknet_node_ram_cost: number;\n /** Multiplier to cost of core for a Hacknet Node */\n hacknet_node_core_cost: number;\n /** Multiplier to cost of leveling up a Hacknet Node */\n hacknet_node_level_cost: number;\n /** Multiplier to Bladeburner max stamina */\n bladeburner_max_stamina: number;\n /** Multiplier to Bladeburner stamina gain rate */\n bladeburner_stamina_gain: number;\n /** Multiplier to effectiveness in Bladeburner Field Analysis */\n bladeburner_analysis: number;\n /** Multiplier to success chance in Bladeburner contracts/operations */\n bladeburner_success_chance: number;\n}\n\n/** @public */\ninterface TailProperties {\n /** X-coordinate of the log window */\n x: number;\n /** Y-coordinate of the log window */\n y: number;\n /** Width of the log window content area */\n width: number;\n /** Height of the log window content area */\n height: number;\n}\n\n/**\n * @public\n * A stand-in for the real React.ReactNode.\n * A {@link ReactElement} is rendered dynamically with React.\n * number and string are displayed directly.\n * boolean, null, and undefined are ignored and not rendered.\n * An array of ReactNodes will display all members of that array sequentially.\n *\n * Use React.createElement to make the ReactElement type, see {@link https://react.dev/reference/react/createElement#creating-an-element-without-jsx | creating an element without jsx} from the official React documentation.\n */\ntype ReactNode = ReactElement | string | number | null | undefined | boolean | ReactNode[];\n\n/**\n * @public\n * A stand-in for the real React.ReactElement.\n * Use React.createElement to make these.\n * See {@link https://react.dev/reference/react/createElement#creating-an-element-without-jsx | creating an element without jsx} from the official React documentation.\n */\ninterface ReactElement {\n type: string | ((props: any) => ReactElement | null) | (new (props: any) => object);\n props: any;\n key: string | number | null;\n}\n\n/** @public */\ninterface RunningScript {\n /** Arguments the script was called with */\n args: (string | number | boolean)[];\n /** Filename of the script */\n filename: string;\n /**\n * Script logs as an array. The newest log entries are at the bottom.\n * Timestamps, if enabled, are placed inside `[brackets]` at the start of each line.\n **/\n logs: string[];\n /** Total amount of hacking experience earned from this script when offline */\n offlineExpGained: number;\n /** Total amount of money made by this script when offline */\n offlineMoneyMade: number;\n /** Number of seconds that the script has been running offline */\n offlineRunningTime: number;\n /** Total amount of hacking experience earned from this script when online */\n onlineExpGained: number;\n /** Total amount of money made by this script when online */\n onlineMoneyMade: number;\n /** Number of seconds that this script has been running online */\n onlineRunningTime: number;\n /** Process ID. Must be an integer */\n pid: number;\n /** How much RAM this script uses for ONE thread */\n ramUsage: number;\n /** Hostname of the server on which this script runs */\n server: string;\n /** Properties of the tail window, or null if it is not shown */\n tailProperties: TailProperties | null;\n /**\n * The title, as shown in the script\'s log box. Defaults to the name + args,\n * but can be changed by the user. If it is set to a React element (only by\n * the user), that will not be persisted, and will be restored to default on\n * load.\n */\n title: string | ReactElement;\n /** Number of threads that this script runs with */\n threads: number;\n /** Whether this RunningScript is excluded from saves */\n temporary: boolean;\n}\n\n/** @public */\ninterface RunOptions {\n /** Number of threads that the script will run with, defaults to 1 */\n threads?: number;\n /** Whether this script is excluded from saves, defaults to false */\n temporary?: boolean;\n /**\n * The RAM allocation to launch each thread of the script with.\n *\n * Lowering this will not automatically let you get away with using less RAM:\n * the dynamic RAM check enforces that all {@link NS} functions actually called incur their cost.\n * However, if you know that certain functions that are statically present (and thus included\n * in the static RAM cost) will never be called in a particular circumstance, you can use\n * this to avoid paying for them.\n *\n * You can also use this to increase the RAM if the static RAM checker has missed functions\n * that you need to call.\n *\n * Must be greater-or-equal to the base RAM cost. Defaults to the statically calculated cost.\n */\n ramOverride?: number;\n /**\n * Should we fail to run if another instance is running with the exact same arguments?\n * This used to be the default behavior, now defaults to false.\n */\n preventDuplicates?: boolean;\n}\n\n/** @public */\ninterface SpawnOptions extends RunOptions {\n /** Number of milliseconds to delay before spawning script, defaults to 10000 (10s). Must be a positive integer. */\n spawnDelay?: number;\n}\n\n/** @public */\ninterface RecentScript extends RunningScript {\n /** Timestamp of when the script was killed */\n timeOfDeath: Date;\n}\n\n/**\n * Data representing the internal values of a crime.\n * @public\n */\ninterface CrimeStats {\n /** Number representing the difficulty of the crime. Used for success chance calculations */\n difficulty: number;\n /** Amount of karma lost for successfully committing this crime */\n karma: number;\n /** How many people die as a result of this crime */\n kills: number;\n /** How much money is given */\n money: number;\n /** Milliseconds it takes to attempt the crime */\n time: number;\n /** Description of the crime activity */\n type: string;\n /** hacking level impact on success change of the crime */\n hacking_success_weight: number;\n /** strength level impact on success change of the crime */\n strength_success_weight: number;\n /** defense level impact on success change of the crime */\n defense_success_weight: number;\n /** dexterity level impact on success change of the crime */\n dexterity_success_weight: number;\n /** agility level impact on success change of the crime */\n agility_success_weight: number;\n /** charisma level impact on success change of the crime */\n charisma_success_weight: number;\n /** hacking exp gained from crime */\n hacking_exp: number;\n /** strength exp gained from crime */\n strength_exp: number;\n /** defense exp gained from crime */\n defense_exp: number;\n /** dexterity exp gained from crime */\n dexterity_exp: number;\n /** agility exp gained from crime */\n agility_exp: number;\n /** charisma exp gained from crime */\n charisma_exp: number;\n /** intelligence exp gained from crime */\n intelligence_exp: number;\n}\n\n/**\n * Options to affect the behavior of {@link NS.hack | hack}, {@link NS.grow | grow}, and {@link NS.weaken | weaken}.\n * @public\n */\ninterface BasicHGWOptions {\n /** Number of threads to use for this function.\n * Must be less than or equal to the number of threads the script is running with. */\n threads?: number;\n /** Set to true this action will affect the stock market. */\n stock?: boolean;\n /** Number of additional milliseconds that will be spent waiting between the start of the function and when it\n * completes. */\n additionalMsec?: number;\n}\n\n/**\n * Return value of {@link Sleeve.getSleevePurchasableAugs | getSleevePurchasableAugs}\n * @public\n */\ninterface AugmentPair {\n /** augmentation name */\n name: string;\n /** augmentation cost */\n cost: number;\n}\n\n/** @public */\ndeclare enum PositionType {\n Long = "L",\n Short = "S",\n}\n\n/** @public */\ndeclare enum OrderType {\n LimitBuy = "Limit Buy Order",\n LimitSell = "Limit Sell Order",\n StopBuy = "Stop Buy Order",\n StopSell = "Stop Sell Order",\n}\n\n/**\n * Value in map of {@link StockOrder}\n * @public\n */\ninterface StockOrderObject {\n /** Number of shares */\n shares: number;\n /** Price per share */\n price: number;\n /** Order type */\n type: OrderType;\n /** Order position */\n position: PositionType;\n}\n\n/**\n * Return value of {@link TIX.getOrders | getOrders}\n *\n * Keys are stock symbols, properties are arrays of {@link StockOrderObject}\n * @public\n */\ninterface StockOrder {\n [key: string]: StockOrderObject[];\n}\n\n/** Constants used for the stockmarket game mechanic.\n * @public */\ninterface StockMarketConstants {\n /** Normal time in ms between stock market updates */\n msPerStockUpdate: number;\n /** Minimum time in ms between stock market updates if there is stored offline/bonus time */\n msPerStockUpdateMin: number;\n /** An internal constant used while determining when to flip a stock\'s forecast */\n TicksPerCycle: number;\n /** Cost of the WSE account */\n WSEAccountCost: number;\n /** Cost of the TIX API */\n TIXAPICost: number;\n /** Cost of the 4S Market Data */\n MarketData4SCost: number;\n /** Cost of the 4S Market Data TIX API integration */\n MarketDataTixApi4SCost: number;\n /** Commission fee for transactions */\n StockMarketCommission: number;\n}\n\n/**\n * A single process on a server.\n * @public\n */\ninterface ProcessInfo {\n /** Script name. */\n filename: string;\n /** Number of threads script is running with */\n threads: number;\n /** Script\'s arguments */\n args: (string | number | boolean)[];\n /** Process ID */\n pid: number;\n /** Whether this process is excluded from saves */\n temporary: boolean;\n}\n\n/**\n * Hack related multipliers.\n * @public\n */\ninterface HackingMultipliers {\n /** Player\'s hacking chance multiplier. */\n chance: number;\n /** Player\'s hacking speed multiplier. */\n speed: number;\n /** Player\'s hacking money stolen multiplier. */\n money: number;\n /** Player\'s hacking growth multiplier */\n growth: number;\n}\n\n/**\n * Hacknet related multipliers.\n * @public\n */\ninterface HacknetMultipliers {\n /** Player\'s hacknet production multiplier */\n production: number;\n /** Player\'s hacknet purchase cost multiplier */\n purchaseCost: number;\n /** Player\'s hacknet ram cost multiplier */\n ramCost: number;\n /** Player\'s hacknet core cost multiplier */\n coreCost: number;\n /** Player\'s hacknet level cost multiplier */\n levelCost: number;\n}\n\n/**\n * Hacknet node related constants\n * @public\n */\ninterface HacknetNodeConstants {\n /** Amount of money gained per level */\n MoneyGainPerLevel: number;\n /** Base cost for a new node */\n BaseCost: number;\n /** Base cost per level */\n LevelBaseCost: number;\n /** Base cost to increase RAM */\n RamBaseCost: number;\n /** Base cost to increase cores */\n CoreBaseCost: number;\n /** Multiplier to purchase new node */\n PurchaseNextMult: number;\n /** Multiplier to increase node level */\n UpgradeLevelMult: number;\n /** Multiplier to increase RAM */\n UpgradeRamMult: number;\n /** Multiplier to increase cores */\n UpgradeCoreMult: number;\n /** Max node level */\n MaxLevel: number;\n /** Max amount of RAM in GB */\n MaxRam: number;\n /** Max number of cores */\n MaxCores: number;\n}\n\n/**\n * Hacknet server related constants\n * @public\n */\ninterface HacknetServerConstants {\n /** Number of hashes calculated per level */\n HashesPerLevel: number;\n /** Base cost for a new server */\n BaseCost: number;\n /** Base cost to increase RAM */\n RamBaseCost: number;\n /** Base cost to increase cores */\n CoreBaseCost: number;\n /** Base cost to upgrade cache */\n CacheBaseCost: number;\n /** Multiplier to purchase a new server */\n PurchaseMult: number;\n /** Multiplier to increase server level */\n UpgradeLevelMult: number;\n /** Multiplier to increase RAM */\n UpgradeRamMult: number;\n /** Multiplier to increase cores */\n UpgradeCoreMult: number;\n /** Multiplier to upgrade cache */\n UpgradeCacheMult: number;\n /** Max number of servers */\n MaxServers: number;\n /** Max level for a server */\n MaxLevel: number;\n /** Max amount of RAM in GB */\n MaxRam: number;\n /** Max number of cores */\n MaxCores: number;\n /** Max cache size */\n MaxCache: number;\n}\n\n/**\n * A server. Not all servers have all of these properties - optional properties are missing on certain servers.\n * @public\n */\nexport interface Server {\n /** Hostname. Must be unique */\n hostname: string;\n /** IP Address. Must be unique */\n ip: string;\n\n /** Whether or not the SSH Port is open */\n sshPortOpen: boolean;\n /** Whether or not the FTP port is open */\n ftpPortOpen: boolean;\n /** Whether or not the SMTP Port is open */\n smtpPortOpen: boolean;\n /** Whether or not the HTTP Port is open */\n httpPortOpen: boolean;\n /** Whether or not the SQL Port is open */\n sqlPortOpen: boolean;\n\n /** Flag indicating whether player has admin/root access to this server */\n hasAdminRights: boolean;\n\n /** How many CPU cores this server has. Affects magnitude of grow and weaken ran from this server. */\n cpuCores: number;\n\n /** Flag indicating whether player is currently connected to this server */\n isConnectedTo: boolean;\n\n /** RAM (GB) used. i.e. unavailable RAM */\n ramUsed: number;\n /** RAM (GB) available on this server */\n maxRam: number;\n\n /** Name of company/faction/etc. that this server belongs to, not applicable to all Servers */\n organizationName: string;\n\n /** Flag indicating whether this is a purchased server */\n purchasedByPlayer: boolean;\n\n /** Flag indicating whether this server has a backdoor installed by a player */\n backdoorInstalled?: boolean;\n\n /** Server\'s initial server security level at creation. */\n baseDifficulty?: number;\n\n /** Server Security Level */\n hackDifficulty?: number;\n\n /** Minimum server security level that this server can be weakened to */\n minDifficulty?: number;\n\n /** How much money currently resides on the server and can be hacked */\n moneyAvailable?: number;\n\n /** Maximum amount of money that this server can hold */\n moneyMax?: number;\n\n /** Number of open ports required in order to gain admin/root access */\n numOpenPortsRequired?: number;\n\n /** How many ports are currently opened on the server */\n openPortCount?: number;\n\n /** Hacking level required to hack this server */\n requiredHackingSkill?: number;\n\n /** Growth effectiveness statistic. Higher values produce more growth with ns.grow() */\n serverGrowth?: number;\n}\n\n/**\n * All multipliers affecting the difficulty of the current challenge.\n * @public\n */\ninterface BitNodeMultipliers {\n /** Influences how quickly the player\'s agility level (not exp) scales */\n AgilityLevelMultiplier: number;\n /** Influences the base cost to purchase an augmentation. */\n AugmentationMoneyCost: number;\n /** Influences the base rep the player must have with a faction to purchase an augmentation. */\n AugmentationRepCost: number;\n /** Influences how quickly the player can gain rank within Bladeburner. */\n BladeburnerRank: number;\n /** Influences the cost of skill levels from Bladeburner. */\n BladeburnerSkillCost: number;\n /** Influences how quickly the player\'s charisma level (not exp) scales */\n CharismaLevelMultiplier: number;\n /** Influences the experience gained for each ability when a player completes a class. */\n ClassGymExpGain: number;\n /** Influences the amount of money gained from completing Coding Contracts */\n CodingContractMoney: number;\n /** Influences the experience gained for each ability when the player completes working their job. */\n CompanyWorkExpGain: number;\n /** Influences how much money the player earns when completing working their job. */\n CompanyWorkMoney: number;\n /** Influences the amount of divisions a corporation can have have at the same time*/\n CorporationDivisions: number;\n /** Influences the money gain from dividends of corporations created by the player. */\n CorporationSoftcap: number;\n /** Influences the valuation of corporations created by the player. */\n CorporationValuation: number;\n /** Influences the base experience gained for each ability when the player commits a crime. */\n CrimeExpGain: number;\n /** Influences the base money gained when the player commits a crime. */\n CrimeMoney: number;\n /** Influences how many Augmentations you need in order to get invited to the Daedalus faction */\n DaedalusAugsRequirement: number;\n /** Influences how quickly the player\'s defense level (not exp) scales */\n DefenseLevelMultiplier: number;\n /** Influences how quickly the player\'s dexterity level (not exp) scales */\n DexterityLevelMultiplier: number;\n /** Influences how much rep the player gains in each faction simply by being a member. */\n FactionPassiveRepGain: number;\n /** Influences the experience gained for each ability when the player completes work for a Faction. */\n FactionWorkExpGain: number;\n /** Influences how much rep the player gains when performing work for a faction. */\n FactionWorkRepGain: number;\n /** Influences how much it costs to unlock the stock market\'s 4S Market Data API */\n FourSigmaMarketDataApiCost: number;\n /** Influences how much it costs to unlock the stock market\'s 4S Market Data (NOT API) */\n FourSigmaMarketDataCost: number;\n /** Influences the respect gain and money gain of your gang. */\n GangSoftcap: number;\n /** Influences the experienced gained when hacking a server. */\n HackExpGain: number;\n /** Influences how quickly the player\'s hacking level (not experience) scales */\n HackingLevelMultiplier: number;\n /** Influences how much money is produced by Hacknet Nodes\n * and the hash rate of Hacknet Servers (unlocked in BitNode-9) */\n HacknetNodeMoney: number;\n /** Influences how much money it costs to upgrade your home computer\'s RAM */\n HomeComputerRamCost: number;\n /** Influences how much money is gained when the player infiltrates a company. */\n InfiltrationMoney: number;\n /** Influences how much rep the player can gain from factions when selling stolen documents and secrets */\n InfiltrationRep: number;\n /** Influences how much money can be stolen from a server when the player\n * performs a hack against it through the Terminal. */\n ManualHackMoney: number;\n /** Influence how much it costs to purchase a server */\n PurchasedServerCost: number;\n /** Influences the maximum number of purchased servers you can have */\n PurchasedServerLimit: number;\n /** Influences the maximum allowed RAM for a purchased server */\n PurchasedServerMaxRam: number;\n /** Influences cost of any purchased server at or above 128GB */\n PurchasedServerSoftcap: number;\n /** Influences the minimum favor the player must have with a faction before they can donate to gain rep. */\n RepToDonateToFaction: number;\n /** Influences how much the money on a server can be reduced when a script performs a hack against it. */\n ScriptHackMoney: number;\n /** Influences how much of the money stolen by a scripted hack will be added to the player\'s money. */\n ScriptHackMoneyGain: number;\n /** Influences the growth percentage per cycle against a server. */\n ServerGrowthRate: number;\n /** Influences the maximum money that a server can grow to. */\n ServerMaxMoney: number;\n /** Influences the initial money that a server starts with. */\n ServerStartingMoney: number;\n /** Influences the initial security level (hackDifficulty) of a server. */\n ServerStartingSecurity: number;\n /** Influences the weaken amount per invocation against a server. */\n ServerWeakenRate: number;\n /** Influences how quickly the player\'s strength level (not exp) scales */\n StrengthLevelMultiplier: number;\n /** Influences the power of the gift */\n StaneksGiftPowerMultiplier: number;\n /** Influences the size of the gift */\n StaneksGiftExtraSize: number;\n /** Influences the hacking skill required to backdoor the world daemon. */\n WorldDaemonDifficulty: number;\n}\n\n/**\n * Object representing all the values related to a hacknet node.\n * @public\n */\ninterface NodeStats {\n /** Node\'s name */\n name: string;\n /** Node\'s level */\n level: number;\n /** Node\'s RAM (GB) */\n ram: number;\n /** Node\'s used RAM (GB) */\n ramUsed?: number;\n /** Node\'s number of cores */\n cores: number;\n /** Cache level. Only applicable for Hacknet Servers */\n cache?: number;\n /** Hash Capacity provided by this Node. Only applicable for Hacknet Servers */\n hashCapacity?: number;\n /** Node\'s production per second */\n production: number;\n /** Number of seconds since Node has been purchased */\n timeOnline: number;\n /** Total number of money Node has produced */\n totalProduction: number;\n}\n\n/** @public */\ninterface SourceFileLvl {\n /** The number of the source file */\n n: number;\n /** The level of the source file */\n lvl: number;\n}\n\n/**\n * Bladeburner current action.\n * @public\n */\ninterface BladeburnerCurAction {\n /** Type of Action */\n type: string;\n /** Name of Action */\n name: string;\n}\n\n/**\n * Gang general info.\n * @public\n */\ninterface GangGenInfo {\n /** Name of faction that the gang belongs to ("Slum Snakes", etc.) */\n faction: string;\n /** Indicating whether or not it\'s a hacking gang */\n isHacking: boolean;\n /** Money earned per game cycle */\n moneyGainRate: number;\n /** Gang\'s power for territory warfare */\n power: number;\n /** Gang\'s respect */\n respect: number;\n /** Respect earned per game cycle */\n respectGainRate: number;\n /** Amount of Respect needed for next gang recruit, if possible */\n respectForNextRecruit: number;\n /** Amount of territory held */\n territory: number;\n /** Clash chance */\n territoryClashChance: number;\n /** Gang\'s wanted level */\n wantedLevel: number;\n /** Wanted level gained/lost per game cycle (negative for losses) */\n wantedLevelGainRate: number;\n /** Indicating if territory clashes are enabled */\n territoryWarfareEngaged: boolean;\n /** Number indicating the current wanted penalty */\n wantedPenalty: number;\n}\n\n/** @public */\ninterface GangOtherInfoObject {\n /** Gang power */\n power: number;\n /** Gang territory, in decimal form */\n territory: number;\n}\n\n/** @public */\ninterface GangOtherInfo {\n [key: string]: GangOtherInfoObject;\n}\n\n/**\n * Object representing data representing a gang member task.\n * @public\n */\ninterface GangTaskStats {\n /** Task name */\n name: string;\n /** Task Description */\n desc: string;\n /** Is a task of a hacking gang */\n isHacking: boolean;\n /** Is a task of a combat gang */\n isCombat: boolean;\n /** Base respect earned */\n baseRespect: number;\n /** Base wanted earned */\n baseWanted: number;\n /** Base money earned */\n baseMoney: number;\n /** Hacking skill impact on task scaling */\n hackWeight: number;\n /** Strength skill impact on task scaling */\n strWeight: number;\n /** Defense skill impact on task scaling */\n defWeight: number;\n /** Dexterity skill impact on task scaling */\n dexWeight: number;\n /** Agility skill impact on task scaling */\n agiWeight: number;\n /** Charisma skill impact on task scaling */\n chaWeight: number;\n /** Number representing the difficulty of the task */\n difficulty: number;\n /** Territory impact on task scaling */\n territory: GangTerritory;\n}\n\n/**\n * Object representing data representing a gang member equipment.\n * @public\n */\ninterface EquipmentStats {\n /** Strength multiplier */\n str?: number;\n /** Defense multiplier */\n def?: number;\n /** Dexterity multiplier */\n dex?: number;\n /** Agility multiplier */\n agi?: number;\n /** Charisma multiplier */\n cha?: number;\n /** Hacking multiplier */\n hack?: number;\n}\n\n/** @public */\ninterface GangTerritory {\n /** Money gain impact on task scaling */\n money: number;\n /** Respect gain impact on task scaling */\n respect: number;\n /** Wanted gain impact on task scaling */\n wanted: number;\n}\n\n/** @public */\ninterface GangMemberInfo {\n /** Name of the gang member */\n name: string;\n /** Currently assigned task */\n task: string;\n /** Amount of Respect earned by member since they last Ascended */\n earnedRespect: number;\n\n /** Hack skill level */\n hack: number;\n /** Strength skill level */\n str: number;\n /** Defense skill level */\n def: number;\n /** Dexterity skill level */\n dex: number;\n /** Agility skill level */\n agi: number;\n /** Charisma skill level */\n cha: number;\n\n /** Current hack experience */\n hack_exp: number;\n /** Current strength experience */\n str_exp: number;\n /** Current defense experience */\n def_exp: number;\n /** Current dexterity experience */\n dex_exp: number;\n /** Current agility experience */\n agi_exp: number;\n /** Current charisma experience */\n cha_exp: number;\n\n /** Hack multiplier from equipment */\n hack_mult: number;\n /** Strength multiplier from equipment */\n str_mult: number;\n /** Defense multiplier from equipment */\n def_mult: number;\n /** Dexterity multiplier from equipment */\n dex_mult: number;\n /** Agility multiplier from equipment */\n agi_mult: number;\n /** Charisma multiplier from equipment */\n cha_mult: number;\n\n /** Hack multiplier from ascensions */\n hack_asc_mult: number;\n /** Strength multiplier from ascensions */\n str_asc_mult: number;\n /** Defense multiplier from ascensions */\n def_asc_mult: number;\n /** Dexterity multiplier from ascensions */\n dex_asc_mult: number;\n /** Agility multiplier from ascensions */\n agi_asc_mult: number;\n /** Charisma multiplier from ascensions */\n cha_asc_mult: number;\n\n /** Total Hack Ascension points accumulated */\n hack_asc_points: number;\n /** Total Strength Ascension points accumulated */\n str_asc_points: number;\n /** Total Defense Ascension points accumulated */\n def_asc_points: number;\n /** Total Dexterity Ascension points accumulated */\n dex_asc_points: number;\n /** Total Agility Ascension points accumulated */\n agi_asc_points: number;\n /** Total Charisma Ascension points accumulated */\n cha_asc_points: number;\n\n /** List of all non-Augmentation Equipment owned by gang member */\n upgrades: string[];\n /** List of all Augmentations currently installed on gang member */\n augmentations: string[];\n\n /** Per Cycle Rate this member is currently gaining Respect */\n respectGain: number;\n /** Per Cycle Rate by which this member is affecting your gang\'s Wanted Level */\n wantedLevelGain: number;\n /** Per Cycle Income for this gang member */\n moneyGain: number;\n}\n\n/** @public */\ninterface GangMemberAscension {\n /** Amount of respect lost from ascending */\n respect: number;\n /** Factor by which the hacking ascension multiplier was increased (newMult / oldMult) */\n hack: number;\n /** Factor by which the strength ascension multiplier was increased (newMult / oldMult) */\n str: number;\n /** Factor by which the defense ascension multiplier was increased (newMult / oldMult) */\n def: number;\n /** Factor by which the dexterity ascension multiplier was increased (newMult / oldMult) */\n dex: number;\n /** Factor by which the agility ascension multiplier was increased (newMult / oldMult) */\n agi: number;\n /** Factor by which the charisma ascension multiplier was increased (newMult / oldMult) */\n cha: number;\n}\n\n/** @public */\ntype SleeveBladeburnerTask = {\n type: "BLADEBURNER";\n actionType: "General" | "Contracts";\n actionName: string;\n cyclesWorked: number;\n cyclesNeeded: number;\n};\n\n/** @public */\ntype SleeveClassTask = {\n type: "CLASS";\n classType: UniversityClassType | GymType | `${UniversityClassType}` | `${GymType}`;\n location: LocationName | `${LocationName}`;\n};\n\n/** @public */\ntype SleeveCompanyTask = { type: "COMPANY"; companyName: CompanyName };\n\n/** @public */\ntype SleeveCrimeTask = {\n type: "CRIME";\n crimeType: CrimeType | `${CrimeType}`;\n cyclesWorked: number;\n cyclesNeeded: number;\n};\n\n/** @public */\ntype SleeveFactionTask = {\n type: "FACTION";\n factionWorkType: FactionWorkType | `${FactionWorkType}`;\n factionName: string;\n};\n\n/** @public */\ntype SleeveInfiltrateTask = { type: "INFILTRATE"; cyclesWorked: number; cyclesNeeded: number };\n\n/** @public */\ntype SleeveRecoveryTask = { type: "RECOVERY" };\n\n/** @public */\ntype SleeveSupportTask = { type: "SUPPORT" };\n\n/** @public */\ntype SleeveSynchroTask = { type: "SYNCHRO" };\n\n/** Object representing a sleeve current task.\n * @public */\nexport type SleeveTask =\n | SleeveBladeburnerTask\n | SleeveClassTask\n | SleeveCompanyTask\n | SleeveCrimeTask\n | SleeveFactionTask\n | SleeveInfiltrateTask\n | SleeveRecoveryTask\n | SleeveSupportTask\n | SleeveSynchroTask;\n\n/** Object representing a port. A port is a serialized queue.\n * @public */\nexport interface NetscriptPort {\n /** Write data to a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns The data popped off the queue if it was full. */\n write(value: string | number): PortData | null;\n\n /**\n * Attempt to write data to the port.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns True if the data was added to the port, false if the port was full\n */\n tryWrite(value: string | number): boolean;\n\n /**\n * Sleeps until the port is written to.\n * @remarks\n * RAM cost: 0 GB\n */\n nextWrite(): Promise;\n\n /**\n * Shift an element out of the port.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function will remove the first element from the port and return it.\n * If the port is empty, then the string “NULL PORT DATA” will be returned.\n * @returns the data read.\n */\n read(): PortData;\n\n /**\n * Retrieve the first element from the port without removing it.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is used to peek at the data from a port. It returns the\n * first element in the specified port without removing that element. If\n * the port is empty, the string “NULL PORT DATA” will be returned.\n * @returns the data read\n */\n peek(): PortData;\n\n /**\n * Check if the port is full.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns true if the port is full, otherwise false\n */\n full(): boolean;\n\n /**\n * Check if the port is empty.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns true if the port is empty, otherwise false\n */\n empty(): boolean;\n\n /**\n * Empties all data from the port.\n * @remarks\n * RAM cost: 0 GB\n */\n clear(): void;\n}\n\n/**\n * Stock market API\n * @public\n */\nexport interface TIX {\n /** Get game constants for the stock market mechanic.\n * @remarks RAM cost: 0 GB */\n getConstants(): StockMarketConstants;\n /**\n * Returns true if the player has access to a WSE Account\n * @remarks RAM cost: 0.05 GB\n */\n hasWSEAccount(): boolean;\n /**\n * Returns true if the player has access to the TIX API\n * @remarks RAM cost: 0.05 GB\n */\n hasTIXAPIAccess(): boolean;\n /**\n * Returns true if the player has access to the 4S Data\n * @remarks RAM cost: 0.05 GB\n */\n has4SData(): boolean;\n /**\n * Returns true if the player has access to the 4SData TIX API\n * @remarks RAM cost: 0.05 GB\n */\n has4SDataTIXAPI(): boolean;\n /**\n * Returns an array of the symbols of the tradable stocks\n *\n * @remarks RAM cost: 2 GB\n * @returns Array of the symbols of the tradable stocks.\n */\n getSymbols(): string[];\n\n /**\n * Returns the price of a stock.\n *\n * @remarks\n * RAM cost: 2 GB\n *\n * The stock’s price is the average of its bid and ask prices. This function requires\n * that you have the following:\n *\n * 1. WSE Account\n *\n * 1. TIX API Access\n *\n * @example\n * ```js\n * const fourSigmaStockPrice = ns.stock.getPrice("FSIG");\n *\n * // Choose the first stock symbol from the array of stock symbols. Get the price\n * // of the corresponding stock.\n * const sym = ns.stock.getSymbols()[0];\n * ns.tprint("Stock symbol: " + sym);\n * ns.tprint("Stock price: " + ns.stock.getPrice(sym));\n * ```\n * @param sym - Stock symbol.\n * @returns The price of a stock.\n */\n getPrice(sym: string): number;\n\n /**\n * Returns the organization associated with a stock symbol.\n *\n * @remarks\n * RAM cost: 2 GB\n *\n * The organization associated with the corresponding stock symbol. This function\n * requires that you have the following:\n *\n * 1. WSE Account\n *\n * 1. TIX API Access\n *\n * @example\n * ```js\n * ns.stock.getOrganization("FSIG");\n *\n * // Choose the first stock symbol from the array of stock symbols. Get the\n * // organization associated with the corresponding stock symbol.\n * const sym = ns.stock.getSymbols()[0];\n * ns.tprint("Stock symbol: " + sym);\n * ns.tprint("Stock organization: " + ns.stock.getOrganization(sym));\n * ```\n * @param sym - Stock symbol.\n * @returns The organization assicated with the stock symbol.\n */\n getOrganization(sym: string): string;\n\n /**\n * Returns the ask price of that stock.\n * @remarks RAM cost: 2 GB\n *\n * @param sym - Stock symbol.\n * @returns The ask price of a stock.\n */\n getAskPrice(sym: string): number;\n\n /**\n * Returns the bid price of that stock.\n * @remarks RAM cost: 2 GB\n *\n * @param sym - Stock symbol.\n * @returns The bid price of a stock.\n */\n getBidPrice(sym: string): number;\n\n /**\n * Returns the player’s position in a stock.\n * @remarks\n * RAM cost: 2 GB\n * Returns an array of four elements that represents the player’s position in a stock.\n *\n * The first element in the returned array is the number of shares the player owns of\n * the stock in the Long position. The second element in the array is the average price\n * of the player’s shares in the Long position.\n *\n * The third element in the array is the number of shares the player owns of the stock\n * in the Short position. The fourth element in the array is the average price of the\n * player’s Short position.\n *\n * All elements in the returned array are numeric.\n *\n * @example\n * ```js\n * const [sharesLong, avgLongPrice, sharesShort, avgShortPrice] = ns.stock.getPosition("ECP");\n * ```\n * @param sym - Stock symbol.\n * @returns Array of four elements that represents the player’s position in a stock.\n */\n getPosition(sym: string): [number, number, number, number];\n\n /**\n * Returns the maximum number of shares of a stock.\n * @remarks\n * RAM cost: 2 GB\n * This is the maximum amount of the stock that can be purchased\n * in both the Long and Short positions combined.\n *\n * @param sym - Stock symbol.\n * @returns Maximum number of shares that the stock has.\n */\n getMaxShares(sym: string): number;\n\n /**\n * Calculates cost of buying stocks.\n * @remarks\n * RAM cost: 2 GB\n * Calculates and returns how much it would cost to buy a given number of shares of a stock.\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to purchase.\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\n * @returns Cost to buy a given number of shares of a stock.\n */\n getPurchaseCost(sym: string, shares: number, posType: string): number;\n\n /**\n * Calculate profit of selling stocks.\n * @remarks\n * RAM cost: 2 GB\n * Calculates and returns how much you would gain from selling a given number of shares of a stock.\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to sell.\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\n * @returns Gain from selling a given number of shares of a stock.\n */\n getSaleGain(sym: string, shares: number, posType: string): number;\n\n /**\n * Buy stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to purchase shares of a stock using a Market Order.\n *\n * If the player does not have enough money to purchase the specified number of shares,\n * then no shares will be purchased. Remember that every transaction on the stock exchange\n * costs a certain commission fee.\n *\n * If this function successfully purchases the shares, it will return the stock price at which\n * each share was purchased. Otherwise, it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to purchased. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren\'t purchased.\n */\n buyStock(sym: string, shares: number): number;\n\n /**\n * Sell stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to sell shares of a stock using a Market Order.\n *\n * If the specified number of shares in the function exceeds the amount that the player\n * actually owns, then this function will sell all owned shares. Remember that every\n * transaction on the stock exchange costs a certain commission fee.\n *\n * The net profit made from selling stocks with this function is reflected in the script’s\n * statistics. This net profit is calculated as:\n *\n * shares * (sell_price - average_price_of_purchased_shares)\n *\n * If the sale is successful, this function will return the stock price at\n * which each share was sold. Otherwise, it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren\'t sold.\n */\n sellStock(sym: string, shares: number): number;\n\n /**\n * Short stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to purchase a short position of a stock using a Market Order.\n *\n * The ability to short a stock is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * If the player does not have enough money to purchase the specified number of shares,\n * then no shares will be purchased. Remember that every transaction on the stock exchange\n * costs a certain commission fee.\n *\n * If the purchase is successful, this function will return the stock price at which each\n * share was purchased. Otherwise, it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to short. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren\'t purchased.\n */\n buyShort(sym: string, shares: number): number;\n\n /**\n * Sell short stock.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to sell a short position of a stock using a Market Order.\n *\n * The ability to short a stock is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * If the specified number of shares exceeds the amount that the player actually owns,\n * then this function will sell all owned shares. Remember that every transaction on\n * the stock exchange costs a certain commission fee.\n *\n * If the sale is successful, this function will return the stock price at which each\n * share was sold. Otherwise it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren\'t sold.\n */\n sellShort(sym: string, shares: number): number;\n\n /**\n * Place order for stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Places an order on the stock market. This function only works for Limit and Stop Orders.\n *\n * The ability to place limit and stop orders is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * Returns true if the order is successfully placed, and false otherwise.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\n * @param price - Execution price for the order.\n * @param type - Type of order.\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\n * @returns True if the order is successfully placed, and false otherwise.\n */\n placeOrder(sym: string, shares: number, price: number, type: string, pos: string): boolean;\n\n /**\n * Cancel order for stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Cancels an outstanding Limit or Stop order on the stock market.\n *\n * The ability to use limit and stop orders is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\n * @param price - Execution price for the order.\n * @param type - Type of order.\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\n */\n cancelOrder(sym: string, shares: number, price: number, type: string, pos: string): void;\n\n /**\n * Returns your order book for the stock market.\n * @remarks\n * RAM cost: 2.5 GB\n * This is an object containing information for all the Limit and Stop Orders you have in the stock market.\n * For each symbol you have a position in, the returned object will have a key with that symbol\'s name.\n * The object\'s properties are each an array of {@link StockOrderObject}\n * The object has the following structure:\n *\n * ```ts\n * {\n * string1: [ // Array of orders for this stock\n * {\n * shares: Order quantity\n * price: Order price\n * type: Order type\n * position: Either "L" or "S" for Long or Short position\n * },\n * {\n * ...\n * },\n * ...\n * ],\n * string2: [ // Array of orders for this stock\n * ...\n * ],\n * ...\n * }\n * ```\n * The “Order type” property can have one of the following four values: "Limit Buy Order", "Limit Sell Order",\n * "Stop Buy Order", "Stop Sell Order".\n * Note that the order book will only contain information for stocks that you actually have orders in.\n *\n * @example\n * ```ts\n * "If you do not have orders in Nova Medical (NVMD), then the returned object will not have a “NVMD” property."\n * {\n * ECP: [\n * {\n * shares: 5,\n * price: 100,000\n * type: "Stop Buy Order",\n * position: "S",\n * },\n * {\n * shares: 25,\n * price: 125,000\n * type: "Limit Sell Order",\n * position: "L",\n * },\n * ],\n * SYSC: [\n * {\n * shares: 100,\n * price: 10,000\n * type: "Limit Buy Order",\n * position: "L",\n * },\n * ],\n * }\n * ```\n * @returns Object containing information for all the Limit and Stop Orders you have in the stock market.\n */\n getOrders(): StockOrder;\n\n /**\n * Returns the volatility of the specified stock.\n * @remarks\n * RAM cost: 2.5 GB\n * Volatility represents the maximum percentage by which a stock’s price can change every tick.\n * The volatility is returned as a decimal value, NOT a percentage\n * (e.g. if a stock has a volatility of 3%, then this function will return 0.03, NOT 3).\n *\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\n *\n * @param sym - Stock symbol.\n * @returns Volatility of the specified stock.\n */\n getVolatility(sym: string): number;\n\n /**\n * Returns the probability that the specified stock’s price will increase (as opposed to decrease) during the next\n * tick.\n * @remarks\n * RAM cost: 2.5 GB\n * The probability is returned as a decimal value, NOT a percentage\n * (e.g. if a stock has a 60% chance of increasing, then this function will return 0.6, NOT 60).\n *\n * In other words, if this function returned 0.30 for a stock, then this means that the stock’s price has a\n * 30% chance of increasing and a 70% chance of decreasing during the next tick.\n *\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\n *\n * @param sym - Stock symbol.\n * @returns Probability that the specified stock’s price will increase (as opposed to decrease) during the next tick.\n */\n getForecast(sym: string): number;\n\n /**\n * Purchase 4S Market Data Access.\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchase4SMarketData(): boolean;\n\n /**\n * Purchase 4S Market Data TIX API Access.\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchase4SMarketDataTixApi(): boolean;\n\n /**\n * Purchase WSE Account.\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchaseWseAccount(): boolean;\n\n /**\n * Purchase TIX API Access\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchaseTixApi(): boolean;\n}\n\n/**\n * Singularity API\n * @remarks\n * This API requires Source-File 4 to use. The RAM cost of all these functions is multiplied by 16/4/1 based on\n * Source-File 4 levels.\n * @public\n */\nexport interface Singularity {\n /**\n * Backup game save.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function will automatically opens the backup save prompt and claim the free faction favour if available.\n *\n */\n exportGame(): void;\n\n /**\n * Returns Backup save bonus availability.\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n *\n * This function will check if there is a bonus for backing up your save.\n *\n */\n exportGameBonus(): boolean;\n\n /**\n * Take university class.\n *\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function will automatically set you to start taking a course at a university.\n * If you are already in the middle of some “working” action (such as working at a\n * company, for a faction, or on a program), then running this function will automatically\n * cancel that action and give you your earnings.\n *\n * The cost and experience gains for all of these universities and classes are the same as\n * if you were to manually visit and take these classes.\n *\n * @param universityName - Name of university. You must be in the correct city for whatever university you specify.\n * @param courseName - Name of course.\n * @param focus - Acquire player focus on this class. Optional. Defaults to true.\n * @returns True if action is successfully started, false otherwise.\n */\n universityCourse(universityName: string, courseName: string, focus?: boolean): boolean;\n\n /**\n * Workout at the gym.\n *\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n\n * This function will automatically set you to start working out at a gym to train\n * a particular stat. If you are already in the middle of some “working” action\n * (such as working at a company, for a faction, or on a program), then running\n * this function will automatically cancel that action and give you your earnings.\n *\n * The cost and experience gains for all of these gyms are the same as if you were\n * to manually visit these gyms and train\n *\n * @param gymName - Name of gym. You must be in the correct city for whatever gym you specify.\n * @param stat - The stat you want to train.\n * @param focus - Acquire player focus on this gym workout. Optional. Defaults to true.\n * @returns True if actions is successfully started, false otherwise.\n */\n gymWorkout(gymName: string, stat: string, focus?: boolean): boolean;\n\n /**\n * Travel to another city.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function allows the player to travel to any city. The cost for using this\n * function is the same as the cost for traveling through the Travel Agency.\n *\n * @param city - City to travel to.\n * @returns True if action is successful, false otherwise.\n */\n travelToCity(city: CityName | `${CityName}`): boolean;\n\n /**\n * Purchase the TOR router.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function allows you to automatically purchase a TOR router. The cost for\n * purchasing a TOR router using this function is the same as if you were to\n * manually purchase one.\n *\n * @returns True if actions is successful or you already own TOR router, false otherwise.\n */\n purchaseTor(): boolean;\n\n /**\n * Purchase a program from the dark web.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function allows you to automatically purchase programs. You MUST have a\n * TOR router in order to use this function. The cost of purchasing programs\n * using this function is the same as if you were purchasing them through the Dark\n * Web using the Terminal buy command.\n *\n * @example\n * ```js\n * const programName = "BruteSSH.exe"\n * const success = ns.purchaseProgram(programName);\n * if (!success) ns.tprint("ERROR: Failed to purchase ${programName}")\n * ```\n * @param programName - Name of program to purchase.\n * @returns True if the specified program is purchased, and false otherwise.\n */\n purchaseProgram(programName: string): boolean;\n\n /**\n * Check if the player is busy.\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n *\n * Returns a boolean indicating whether or not the player is currently performing an\n * ‘action’. These actions include working for a company/faction, studying at a university,\n * working out at a gym, creating a program, committing a crime, or carrying out a Hacking Mission.\n *\n * @returns True if the player is currently performing an ‘action’, false otherwise.\n */\n isBusy(): boolean;\n\n /**\n * Stop the current action.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function is used to end whatever ‘action’ the player is currently performing.\n * The player will receive whatever money/experience/etc. he has earned from that action.\n *\n * The actions that can be stopped with this function are:\n *\n * * Studying at a university\n * * Working out at a gym\n * * Working for a company/faction\n * * Creating a program\n * * Committing a crime\n *\n * This function will return true if the player’s action was ended.\n * It will return false if the player was not performing an action when this function was called.\n *\n * @returns True if the player’s action was ended, false if the player was not performing an action.\n */\n stopAction(): boolean;\n\n /**\n * Upgrade home computer RAM.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will upgrade amount of RAM on the player’s home computer. The cost is\n * the same as if you were to do it manually.\n *\n * This function will return true if the player’s home computer RAM is successfully upgraded, and false otherwise.\n *\n * @returns True if the player’s home computer RAM is successfully upgraded, and false otherwise.\n */\n upgradeHomeRam(): boolean;\n\n /**\n * Upgrade home computer cores.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will upgrade amount of cores on the player’s home computer. The cost is\n * the same as if you were to do it manually.\n *\n * This function will return true if the player’s home computer cores is successfully upgraded, and false otherwise.\n *\n * @returns True if the player’s home computer cores is successfully upgraded, and false otherwise.\n */\n upgradeHomeCores(): boolean;\n\n /**\n * Get the price of upgrading home RAM.\n * @remarks\n * RAM cost: 1.5 GB * 16/4/1\n *\n *\n * Returns the cost of upgrading the player’s home computer RAM.\n *\n * @returns Cost of upgrading the player’s home computer RAM.\n */\n getUpgradeHomeRamCost(): number;\n\n /**\n * Get the price of upgrading home cores.\n * @remarks\n * RAM cost: 1.5 GB * 16/4/1\n *\n *\n * Returns the cost of upgrading the player’s home computer cores.\n *\n * @returns Cost of upgrading the player’s home computer cores.\n */\n getUpgradeHomeCoresCost(): number;\n\n /**\n * Get Requirements for Company Position.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function will return an object that contains the requirements for\n * a specific position at a specific country.\n *\n * @example\n * ```js\n * const companyName = "ECorp";\n * const position = "Chief Executive Officer";\n *\n * let requirements = ns.singularity.getCompanyPositionInfo(companyName, position);\n * ```\n * @param companyName - Name of company to get the requirements for. Must be an exact match.\n * @param positionName - Name of position to get the requirements for. Must be an exact match.\n * @returns CompanyPositionInfo object.\n */\n getCompanyPositionInfo(\n companyName: CompanyName | `${CompanyName}`,\n positionName: JobName | `${JobName}`,\n ): CompanyPositionInfo;\n\n /**\n * Get List of Company Positions.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function will return a list of positions at a specific company.\n *\n * This function will return the position list if the company name is valid.\n *\n * @example\n * ```js\n * const companyName = "Noodle Bar";\n * const jobList = ns.singularity.getCompanyPositions(companyName);\n * ```\n * @param companyName - Name of company to get the position list for. Must be an exact match.\n * @returns The position list if the company name is valid.\n */\n getCompanyPositions(companyName: CompanyName | `${CompanyName}`): JobName[];\n\n /**\n * Work for a company.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will set you to start working at your current job at a specified company at which you are employed.\n * If you are already in the middle of some “working” action (such as working for a faction, training at a gym, or\n * creating a program), then running this function will cancel that action.\n *\n * This function will return true if the player starts working, and false otherwise.\n *\n * @example\n * ```js\n * const companyName = "Noodle Bar";\n * const success = ns.singularity.workForCompany(companyName);\n * if (!success) ns.tprint(`ERROR: Failed to start work at ${companyName}.`);\n * ```\n * @param companyName - Name of company to work for. Must be an exact match. Optional. If not specified, this\n * argument defaults to the last job that you worked.\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\n * @returns True if the player starts working, and false otherwise.\n */\n workForCompany(companyName: CompanyName, focus?: boolean): boolean;\n\n /**\n * Quit jobs by company.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will finish work with the company provided and quit any jobs.\n *\n * @param companyName - Name of the company.\n */\n quitJob(companyName?: CompanyName | `${CompanyName}`): void;\n\n /**\n * Apply for a job at a company.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will automatically try to apply to the specified company\n * for a position in the specified field. This function can also be used to\n * apply for promotions by specifying the company and field you are already\n * employed at.\n *\n * This function will return true if you successfully get a job/promotion,\n * and false otherwise. Note that if you are trying to use this function to\n * apply for a promotion and you don’t get one, it will return false.\n *\n * @param companyName - Name of company to apply to.\n * @param field - Field to which you want to apply.\n * @returns True if the player successfully get a job/promotion, and false otherwise.\n */\n applyToCompany(companyName: CompanyName | `${CompanyName}`, field: string): boolean;\n\n /**\n * Get company reputation.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function will return the amount of reputation you have at the specified company.\n * If the company passed in as an argument is invalid, -1 will be returned.\n *\n * @param companyName - Name of the company.\n * @returns Amount of reputation you have at the specified company.\n */\n getCompanyRep(companyName: CompanyName | `${CompanyName}`): number;\n\n /**\n * Get company favor.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function will return the amount of favor you have at the specified company.\n * If the company passed in as an argument is invalid, -1 will be returned.\n *\n * @param companyName - Name of the company.\n * @returns Amount of favor you have at the specified company.\n */\n getCompanyFavor(companyName: CompanyName | `${CompanyName}`): number;\n\n /**\n * Get company favor gain.\n * @remarks\n * RAM cost: 0.75 GB * 16/4/1\n *\n *\n * This function will return the amount of favor you will gain for the specified\n * company when you reset by installing Augmentations.\n *\n * @param companyName - Name of the company.\n * @returns Amount of favor you gain at the specified company when you reset by installing Augmentations.\n */\n getCompanyFavorGain(companyName: CompanyName | `${CompanyName}`): number;\n\n /**\n * List all current faction invitations.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * Performs an immediate check for which factions you qualify for invites from, then returns an array with the name\n * of all Factions you have outstanding invitations from.\n *\n * @returns Array with the name of all Factions you currently have outstanding invitations from.\n */\n checkFactionInvitations(): string[];\n\n /**\n * Join a faction.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will automatically accept an invitation from a faction and join it.\n *\n * @param faction - Name of faction to join.\n * @returns True if player joined the faction, and false otherwise.\n */\n joinFaction(faction: string): boolean;\n\n /**\n * Work for a faction.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will set you to start working for the specified faction. You must be a member of the faction and\n * that faction must have the specified work type, or else this function will fail. If you are already in the\n * middle of some “working” action (such as working for a company, training at a gym, or creating a program), then\n * running this function will cancel that action.\n *\n * This function will return true if you successfully start working for the specified faction, and false otherwise.\n *\n * @example\n * ```js\n * const factionName = "CyberSec";\n * const workType = "hacking";\n *\n * let success = ns.singularity.workForFaction(factionName, workType);\n * if (!success) ns.tprint(`ERROR: Failed to start work for ${factionName} with work type ${workType}.`)\n * ```\n * @param faction - Name of faction to work for.\n * @param workType - Type of work to perform for the faction.\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\n * @returns True if the player starts working, and false otherwise.\n */\n workForFaction(faction: string, workType: FactionWorkType | `${FactionWorkType}`, focus?: boolean): boolean;\n\n /**\n * Get faction reputation.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function returns the amount of reputation you have for the specified faction.\n *\n * @param faction - Name of faction to work for.\n * @returns Amount of reputation you have for the specified faction.\n */\n getFactionRep(faction: string): number;\n\n /**\n * Get faction favor.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function returns the amount of favor you have for the specified faction.\n *\n * @param faction - Name of faction.\n * @returns Amount of favor you have for the specified faction.\n */\n getFactionFavor(faction: string): number;\n\n /**\n * Get faction favor gain.\n * @remarks\n * RAM cost: 0.75 GB * 16/4/1\n *\n *\n * This function returns the amount of favor you will gain for the specified\n * faction when you reset by installing Augmentations.\n *\n * @param faction - Name of faction.\n * @returns Amount of favor you will gain for the specified faction when you reset by installing Augmentations.\n */\n getFactionFavorGain(faction: string): number;\n\n /**\n * Donate to a faction.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Attempts to donate money to the specified faction in exchange for reputation.\n * Returns true if you successfully donate the money, and false otherwise.\n *\n * @param faction - Name of faction to donate to.\n * @param amount - Amount of money to donate.\n * @returns True if the money was donated, and false otherwise.\n */\n donateToFaction(faction: string, amount: number): boolean;\n\n /**\n * Create a program.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will automatically set you to start working on creating the\n * specified program. If you are already in the middle of some “working” action\n * (such as working for a company, training at a gym, or taking a course), then\n * running this function will automatically cancel that action and give you your\n * earnings.\n *\n * This function returns true if you successfully start working on the specified program, and false otherwise.\n *\n * Note that creating a program using this function has the same hacking level requirements as it normally would.\n * These level requirements are:\n * * BruteSSH.exe: 50\n * * FTPCrack.exe: 100\n * * relaySMTP.exe: 250\n * * HTTPWorm.exe: 500\n * * SQLInject.exe: 750\n * * DeepscanV1.exe: 75\n * * DeepscanV2.exe: 400\n * * ServerProfiler.exe: 75\n * * AutoLink.exe: 25\n *\n * @example\n * ```js\n * const programName = "BruteSSH.exe";\n * const success = ns.createProgram(programName);\n * if (!success) ns.tprint("ERROR: Failed to start working on ${programName}")\n * ```\n * @param program - Name of program to create.\n * @param focus - Acquire player focus on this program creation. Optional. Defaults to true.\n * @returns True if you successfully start working on the specified program, and false otherwise.\n */\n createProgram(program: string, focus?: boolean): boolean;\n\n /**\n * Commit a crime.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function is used to automatically attempt to commit crimes.\n * If you are already in the middle of some ‘working’ action (such\n * as working for a company or training at a gym), then running this\n * function will automatically cancel that action and give you your\n * earnings.\n *\n * This function returns the number of milliseconds it takes to attempt the\n * specified crime (e.g It takes 60 seconds to attempt the ‘Rob Store’ crime,\n * so running `commitCrime(\'Rob Store\')` will return 60,000).\n *\n * @param crime - Name of crime to attempt.\n * @param focus - Acquire player focus on this crime. Optional. Defaults to true.\n * @returns The number of milliseconds it takes to attempt the specified crime.\n */\n commitCrime(crime: CrimeType | `${CrimeType}`, focus?: boolean): number;\n\n /**\n * Get chance to successfully commit a crime.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns your chance of success at committing the specified crime.\n *\n * @param crime - Name of crime.\n * @returns Chance of success at committing the specified crime.\n */\n getCrimeChance(crime: CrimeType | `${CrimeType}`): number;\n\n /**\n * Get stats related to a crime.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Returns the stats of the crime.\n *\n * @param crime - Name of crime.\n * @returns The stats of the crime.\n */\n getCrimeStats(crime: CrimeType | `${CrimeType}`): CrimeStats;\n\n /**\n * Get a list of owned augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns an array containing the names (as strings) of all Augmentations you have.\n *\n * @param purchased - Specifies whether the returned array should include Augmentations you have purchased but not\n * yet installed. By default, this argument is false which means that the return value will NOT have the purchased\n * Augmentations.\n * @returns Array containing the names (as strings) of all Augmentations you have.\n */\n getOwnedAugmentations(purchased?: boolean): string[];\n\n /**\n * Get a list of acquired Source-Files.\n * @remarks\n * RAM cost: 5 GB\n *\n *\n * Returns an array of source files\n *\n * @returns Array containing an object with number and level of the source file.\n */\n getOwnedSourceFiles(): SourceFileLvl[];\n\n /**\n * Get a list of faction(s) that have a specific Augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Returns an array containing the names (as strings) of all factions\n * that offer the specified Augmentation.\n * If no factions offer the Augmentation, a blank array is returned.\n *\n * @param augName - Name of Augmentation.\n * @returns Array containing the names of all factions.\n */\n getAugmentationFactions(augName: string): string[];\n\n /**\n * Get a list of augmentation available from a faction.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Returns an array containing the names (as strings) of all Augmentations\n * that are available from the specified faction.\n *\n * @param faction - Name of faction.\n * @returns Array containing the names of all Augmentations.\n */\n getAugmentationsFromFaction(faction: string): string[];\n\n /**\n * Get the pre-requisite of an augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns an array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\n * If there are no prerequisites, a blank array is returned.\n *\n * @param augName - Name of Augmentation.\n * @returns Array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\n */\n getAugmentationPrereq(augName: string): string[];\n\n /**\n * Get price of an augmentation.\n * @remarks\n * RAM cost: 2.5 GB * 16/4/1\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Price of the augmentation.\n */\n getAugmentationPrice(augName: string): number;\n\n /**\n * Get base price of an augmentation.\n * @remarks\n * RAM cost: 2.5 GB * 16/4/1\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Base price of the augmentation, before price multiplier.\n */\n getAugmentationBasePrice(augName: string): number;\n\n /**\n * Get reputation requirement of an augmentation.\n * @remarks\n * RAM cost: 2.5 GB * 16/4/1\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Reputation requirement of the augmentation.\n */\n getAugmentationRepReq(augName: string): number;\n\n /**\n * Purchase an augmentation\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will try to purchase the specified Augmentation through the given Faction.\n *\n * This function will return true if the Augmentation is successfully purchased, and false otherwise.\n *\n * @param faction - Name of faction to purchase Augmentation from.\n * @param augmentation - Name of Augmentation to purchase.\n * @returns True if the Augmentation is successfully purchased, and false otherwise.\n */\n purchaseAugmentation(faction: string, augmentation: string): boolean;\n\n /**\n * Get the stats of an augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns augmentation stats.\n *\n * @param name - Name of Augmentation. CASE-SENSITIVE.\n * @returns Augmentation stats.\n */\n getAugmentationStats(name: string): Multipliers;\n\n /**\n * Install your purchased augmentations.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will automatically install your Augmentations, resetting the game as usual. If you do not own uninstalled Augmentations then the game will not reset.\n *\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\n */\n installAugmentations(cbScript?: string): void;\n\n /**\n * Hospitalize the player.\n * @remarks\n * RAM cost: 0.25 GB * 16/4/1\n */\n hospitalize(): void;\n\n /**\n * Soft reset the game.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will perform a reset even if you don’t have any augmentation installed.\n *\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\n */\n softReset(cbScript: string): void;\n\n /**\n * Go to a location.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Move the player to a specific location.\n *\n * @param locationName - Name of the location.\n * @returns True if the player was moved there, false otherwise.\n */\n goToLocation(locationName: string): boolean;\n\n /**\n * Get the current server.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * @returns Name of the current server.\n */\n getCurrentServer(): string;\n\n /**\n * Connect to a server.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * Run the connect HOSTNAME command in the terminal. Can only connect to neighbors.\n *\n * @returns True if the connect command was successful, false otherwise.\n */\n connect(hostname: string): boolean;\n\n /**\n * Run the hack command in the terminal.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * @returns Amount of money stolen by manual hacking.\n */\n manualHack(): Promise;\n\n /**\n * Run the backdoor command in the terminal.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * @returns Promise waiting for the installation to finish.\n */\n installBackdoor(): Promise;\n\n /**\n * Check if the player is focused.\n * @remarks\n * RAM cost: 0.1 GB * 16/4/1\n *\n *\n * @returns True if the player is focused.\n */\n isFocused(): boolean;\n\n /**\n * Set the players focus.\n * @remarks\n * RAM cost: 0.1 GB * 16/4/1\n *\n * @returns True if the focus was changed.\n */\n setFocus(focus: boolean): boolean;\n\n /**\n * Get a list of programs offered on the dark web.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function allows the player to get a list of programs available for purchase\n * on the dark web. Players MUST have purchased Tor to get the list of programs\n * available. If Tor has not been purchased yet, this function will return an\n * empty list.\n *\n * @example\n * ```js\n * const programs = ns.getDarkwebPrograms();\n * ns.tprint(`Available programs are: ${programs.split(", ")}`);\n * ```\n * @returns - a list of programs available for purchase on the dark web, or [] if Tor has not\n * been purchased\n */\n getDarkwebPrograms(): string[];\n\n /**\n * Check the price of an exploit on the dark web\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n *\n * This function allows you to check the price of a darkweb exploit/program.\n * You MUST have a TOR router in order to use this function. The price returned\n * by this function is the same price you would see with buy -l from the terminal.\n * Returns the cost of the program if it has not been purchased yet, 0 if it\n * has already been purchased, or -1 if Tor has not been purchased (and thus\n * the program/exploit is not available for purchase).\n *\n * If the program does not exist, an error is thrown.\n *\n *\n * @example\n * ```js\n * const programName = "BruteSSH.exe";\n * const cost = ns.getDarkwebProgramCost(programName);\n * if (cost > 0) ns.tprint(`${programName} costs ${ns.formatMoney(cost)}`);\n * ```\n * @param programName - Name of program to check the price of\n * @returns Price of the specified darkweb program\n * (if not yet purchased), 0 if it has already been purchased, or -1 if Tor has not been\n * purchased. Throws an error if the specified program/exploit does not exist\n */\n getDarkwebProgramCost(programName: string): number;\n\n /**\n * b1t_flum3 into a different BN.\n * @remarks\n * RAM cost: 16 GB * 16/4/1\n *\n * @param nextBN - BN number to jump to\n * @param callbackScript - Name of the script to launch in the next BN.\n */\n b1tflum3(nextBN: number, callbackScript?: string): void;\n\n /**\n * Destroy the w0r1d_d43m0n and move on to the next BN.\n * @remarks\n * RAM cost: 32 GB * 16/4/1\n *\n * You must have the special augment installed and the required hacking level\n * OR\n * Completed the final black op.\n *\n * @param nextBN - BN number to jump to\n * @param callbackScript - Name of the script to launch in the next BN.\n */\n destroyW0r1dD43m0n(nextBN: number, callbackScript?: string): void;\n\n /**\n * Get the current work the player is doing.\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n * @returns - An object representing the current work. Fields depend on the kind of work.\n */\n getCurrentWork(): any | null;\n}\n\n/**\n * Company position requirements and salary.\n * @public\n * @returns - An object representing the requirements and salary for a company/position combination.\n */\nexport interface CompanyPositionInfo {\n name: JobName;\n nextPosition: JobName | null;\n salary: number;\n requiredReputation: number;\n requiredSkills: Skills;\n}\n\n/**\n * Hacknet API\n * @remarks\n * Not all these functions are immediately available.\n * @public\n */\nexport interface Hacknet {\n /**\n * Get the number of hacknet nodes you own.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the number of Hacknet Nodes you own.\n *\n * @returns Number of hacknet nodes.\n */\n numNodes(): number;\n\n /**\n * Get the maximum number of hacknet nodes.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns Maximum number of hacknet nodes.\n */\n maxNumNodes(): number;\n\n /**\n * Purchase a new hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Purchases a new Hacknet Node. Returns a number with the index of the\n * Hacknet Node. This index is equivalent to the number at the end of\n * the Hacknet Node’s name (e.g The Hacknet Node named `hacknet-node-4`\n * will have an index of 4).\n *\n * If the player cannot afford to purchase a new Hacknet Node then the function will return -1.\n *\n * @returns The index of the Hacknet Node or if the player cannot afford to purchase a new Hacknet Node the function will return -1.\n */\n purchaseNode(): number;\n\n /**\n * Get the price of the next hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of purchasing a new Hacknet Node.\n *\n * @returns Cost of purchasing a new Hacknet Node.\n */\n getPurchaseNodeCost(): number;\n\n /**\n * Get the stats of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns an object containing a variety of stats about the specified Hacknet Node.\n *\n * Note that for Hacknet Nodes, production refers to the amount of money the node generates.\n * For Hacknet Servers (the upgraded version of Hacknet Nodes), production refers to the\n * amount of hashes the node generates.\n *\n * @param index - Index/Identifier of Hacknet Node\n * @returns Object containing a variety of stats about the specified Hacknet Node.\n */\n getNodeStats(index: number): NodeStats;\n\n /**\n * Upgrade the level of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Tries to upgrade the level of the specified Hacknet Node by n.\n *\n * Returns true if the Hacknet Node’s level is successfully upgraded by n\n * or if it is upgraded by some positive amount and the Node reaches its max level.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of levels to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns True if the Hacknet Node’s level is successfully upgraded, false otherwise.\n */\n upgradeLevel(index: number, n?: number): boolean;\n\n /**\n * Upgrade the RAM of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Tries to upgrade the specified Hacknet Node’s RAM n times.\n * Note that each upgrade doubles the Node’s RAM.\n * So this is equivalent to multiplying the Node’s RAM by 2 n.\n *\n * Returns true if the Hacknet Node’s RAM is successfully upgraded n times\n * or if it is upgraded some positive number of times and the Node reaches its max RAM.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns True if the Hacknet Node’s RAM is successfully upgraded, false otherwise.\n */\n upgradeRam(index: number, n?: number): boolean;\n\n /**\n * Upgrade the core of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Tries to purchase n cores for the specified Hacknet Node.\n *\n * Returns true if it successfully purchases n cores for the Hacknet Node\n * or if it purchases some positive amount and the Node reaches its max number of cores.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of cores to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns True if the Hacknet Node’s cores are successfully purchased, false otherwise.\n */\n upgradeCore(index: number, n?: number): boolean;\n\n /**\n * Upgrade the cache of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Tries to upgrade the specified Hacknet Server’s cache n times.\n *\n * Returns true if it successfully upgrades the Server’s cache n times,\n * or if it purchases some positive amount and the Server reaches its max cache level.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of cache levels to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns True if the Hacknet Node’s cache level is successfully upgraded, false otherwise.\n */\n upgradeCache(index: number, n?: number): boolean;\n\n /**\n * Calculate the cost of upgrading hacknet node levels.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of upgrading the specified Hacknet Node by n levels.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of levels to upgrade. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns Cost of upgrading the specified Hacknet Node.\n */\n getLevelUpgradeCost(index: number, n?: number): number;\n\n /**\n * Calculate the cost of upgrading hacknet node RAM.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of upgrading the RAM of the specified Hacknet Node n times.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node already has max RAM, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns Cost of upgrading the specified Hacknet Node\'s RAM.\n */\n getRamUpgradeCost(index: number, n?: number): number;\n\n /**\n * Calculate the cost of upgrading hacknet node cores.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of upgrading the number of cores of the specified Hacknet Node by n.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade cores. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns Cost of upgrading the specified Hacknet Node\'s number of cores.\n */\n getCoreUpgradeCost(index: number, n?: number): number;\n\n /**\n * Calculate the cost of upgrading hacknet node cache.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the cost of upgrading the cache level of the specified Hacknet Server by n.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade cache. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\n * @returns Cost of upgrading the specified Hacknet Node\'s cache.\n */\n getCacheUpgradeCost(index: number, n?: number): number;\n\n /**\n * Get the total number of hashes stored.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the number of hashes you have.\n *\n * @returns Number of hashes you have.\n */\n numHashes(): number;\n\n /**\n * Get the maximum number of hashes you can store.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the number of hashes you can store.\n *\n * @returns Number of hashes you can store.\n */\n hashCapacity(): number;\n\n /**\n * Get the cost of a hash upgrade.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the number of hashes required for the specified upgrade. The name of the upgrade must be an exact match.\n *\n * @example\n * ```js\n * const upgradeName = "Sell for Corporation Funds";\n * if (ns.hacknet.numHashes() > ns.hacknet.hashCost(upgradeName)) {\n * ns.hacknet.spendHashes(upgradeName);\n * }\n * ```\n * @param upgName - Name of the upgrade of Hacknet Node.\n * @param count - Number of upgrades to buy at once. Defaults to 1 if not specified.\n * @returns Number of hashes required for the specified upgrade.\n */\n hashCost(upgName: string, count?: number): number;\n\n /**\n * Purchase a hash upgrade.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Spend the hashes generated by your Hacknet Servers on an upgrade.\n * Returns a boolean value - true if the upgrade is successfully purchased, and false otherwise.\n *\n * The name of the upgrade must be an exact match.\n * The `upgTarget` argument is used for upgrades such as `Reduce Minimum Security`, which applies to a specific server.\n * In this case, the `upgTarget` argument must be the hostname of the server.\n *\n * @example\n * ```js\n * // For upgrades where no target is required\n * ns.hacknet.spendHashes("Sell for Corporation Funds");\n * // For upgrades requiring a target\n * ns.hacknet.spendHashes("Increase Maximum Money", "foodnstuff");\n * ```\n * @param upgName - Name of the upgrade of Hacknet Node.\n * @param upgTarget - Object to which upgrade applies. Required for certain upgrades.\n * @param count - Number of upgrades to buy at once. Defaults to 1 if not specified.\n * For compatibility reasons, upgTarget must be specified, even if it is not used, in order to specify count.\n * @returns True if the upgrade is successfully purchased, and false otherwise.\n */\n spendHashes(upgName: string, upgTarget?: string, count?: number): boolean;\n\n /**\n * Get the list of hash upgrades\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the list of all available hash upgrades that can be used in the spendHashes function.\n * @example\n * ```js\n * const upgrades = ns.hacknet.getHashUpgrades(); // ["Sell for Money","Sell for Corporation Funds",...]\n * ```\n * @returns An array containing the available upgrades\n */\n getHashUpgrades(): string[];\n\n /**\n * Get the level of a hash upgrade.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * @returns Level of the upgrade.\n */\n getHashUpgradeLevel(upgName: string): number;\n\n /**\n * Get the multiplier to study.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * @returns Multiplier.\n */\n getStudyMult(): number;\n\n /**\n * Get the multiplier to training.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * @returns Multiplier.\n */\n getTrainingMult(): number;\n}\n\n/**\n * Bladeburner API\n * @remarks\n * You have to be employed in the Bladeburner division and be in BitNode-7\n * or have Source-File 7 in order to use this API.\n * @public\n */\nexport interface Bladeburner {\n /**\n * List all contracts.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all Bladeburner contracts.\n *\n * @returns Array of strings containing the names of all Bladeburner contracts.\n */\n getContractNames(): string[];\n\n /**\n * List all operations.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all Bladeburner operations.\n *\n * @returns Array of strings containing the names of all Bladeburner operations.\n */\n getOperationNames(): string[];\n\n /**\n * List all black ops.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all Bladeburner Black Ops.\n *\n * @returns Array of strings containing the names of all Bladeburner Black Ops.\n */\n getBlackOpNames(): string[];\n\n /**\n * List all general actions.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all general Bladeburner actions.\n *\n * @returns Array of strings containing the names of all general Bladeburner actions.\n */\n getGeneralActionNames(): string[];\n\n /**\n * List all skills.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all general Bladeburner skills.\n *\n * @returns Array of strings containing the names of all general Bladeburner skills.\n */\n getSkillNames(): string[];\n\n /**\n * Start an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempts to start the specified Bladeburner action.\n * Returns true if the action was started successfully, and false otherwise.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match\n * @returns True if the action was started successfully, and false otherwise.\n */\n startAction(type: string, name: string): boolean;\n\n /**\n * Stop current action.\n * @remarks\n * RAM cost: 2 GB\n *\n * Stops the current Bladeburner action.\n *\n */\n stopBladeburnerAction(): void;\n\n /**\n * Get current action.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns an object that represents the player’s current Bladeburner action.\n * If the player is not performing an action, the function will return an object with the ‘type’ property set to “Idle”.\n *\n * @returns Object that represents the player’s current Bladeburner action.\n */\n getCurrentAction(): BladeburnerCurAction;\n\n /**\n * Get the time to complete an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of milliseconds it takes to complete the specified action\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Number of milliseconds it takes to complete the specified action.\n */\n getActionTime(type: string, name: string): number;\n\n /**\n * Get the time elapsed on current action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of milliseconds already spent on the current action.\n *\n * @returns Number of milliseconds already spent on the current action.\n */\n getActionCurrentTime(): number;\n\n /**\n * Get estimate success chance of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the estimated success chance for the specified action.\n * This chance is returned as a decimal value, NOT a percentage\n * (e.g. if you have an estimated success chance of 80%, then this function will return 0.80, NOT 80).\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Estimated success chance for the specified action.\n */\n getActionEstimatedSuccessChance(type: string, name: string): [number, number];\n\n /**\n * Get the reputation gain of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the average Bladeburner reputation gain for successfully\n * completing the specified action.\n * Note that this value is an ‘average’ and the real reputation gain may vary slightly from this value.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param level - Optional number. Action level at which to calculate the gain. Will be the action\'s current level if not given.\n * @returns Average Bladeburner reputation gain for successfully completing the specified action.\n */\n getActionRepGain(type: string, name: string, level: number): number;\n\n /**\n * Get action count remaining.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the remaining count of the specified action.\n *\n * Note that this is meant to be used for Contracts and Operations.\n * This function will return ‘Infinity’ for actions such as Training and Field Analysis.\n * This function will return 1 for BlackOps not yet completed regardless of whether\n * the player has the required rank to attempt the mission or not.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Remaining count of the specified action.\n */\n getActionCountRemaining(type: string, name: string): number;\n\n /**\n * Get the maximum level of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the maximum level for this action.\n *\n * Returns -1 if an invalid action is specified.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Maximum level of the specified action.\n */\n getActionMaxLevel(type: string, name: string): number;\n\n /**\n * Get the current level of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the current level of this action.\n *\n * Returns -1 if an invalid action is specified.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Current level of the specified action.\n */\n getActionCurrentLevel(type: string, name: string): number;\n\n /**\n * Get whether an action is set to autolevel.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action is currently set to autolevel.\n *\n * Returns false if an invalid action is specified.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns True if the action is set to autolevel, and false otherwise.\n */\n getActionAutolevel(type: string, name: string): boolean;\n\n /**\n * Get action successes.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a number with how many successes you have with action.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns a number with how many successes you have with action.\n */\n getActionSuccesses(type: string, name: string): number;\n\n /**\n * Set an action autolevel.\n * @remarks\n * RAM cost: 4 GB\n *\n * Enable/disable autoleveling for the specified action.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param autoLevel - Whether or not to autolevel this action\n */\n setActionAutolevel(type: string, name: string, autoLevel: boolean): void;\n\n /**\n * Set the level of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Set the level for the specified action.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param level - Level to set this action to.\n */\n setActionLevel(type: string, name: string, level: number): void;\n\n /**\n * Get player bladeburner rank.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the player’s Bladeburner Rank.\n *\n * @returns Player’s Bladeburner Rank.\n */\n getRank(): number;\n\n /**\n * Get black op required rank.\n * @remarks\n * RAM cost: 2 GB\n *\n * Returns the rank required to complete this BlackOp.\n *\n * Returns -1 if an invalid action is specified.\n *\n * @param name - Name of BlackOp. Must be an exact match.\n * @returns Rank required to complete this BlackOp.\n */\n getBlackOpRank(name: string): number;\n\n /**\n * Get bladeburner skill points.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of Bladeburner skill points you have.\n *\n * @returns Number of Bladeburner skill points you have.\n */\n getSkillPoints(): number;\n\n /**\n * Get skill level.\n * @remarks\n * RAM cost: 4 GB\n *\n * This function returns your level in the specified skill.\n *\n * The function returns -1 if an invalid skill name is passed in.\n *\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\n * @returns Level in the specified skill.\n */\n getSkillLevel(name: string): number;\n\n /**\n * Get cost to upgrade skill.\n * @remarks\n * RAM cost: 4 GB\n *\n * This function returns the number of skill points needed to upgrade the specified skill the specified number of times.\n *\n * The function returns -1 if an invalid skill name is passed in.\n *\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\n * @param count - Number of times to upgrade the skill. Defaults to 1 if not specified.\n * @returns Number of skill points needed to upgrade the specified skill.\n */\n getSkillUpgradeCost(name: string, count?: number): number;\n\n /**\n * Upgrade skill.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempts to upgrade the specified Bladeburner skill the specified number of times.\n *\n * Returns true if the skill is successfully upgraded, and false otherwise.\n *\n * @param skillName - Name of skill to be upgraded. Case-sensitive and must be an exact match\n * @param count - Number of times to upgrade the skill. Defaults to 1 if not specified.\n * @returns true if the skill is successfully upgraded, and false otherwise.\n */\n upgradeSkill(name: string, count?: number): boolean;\n\n /**\n * Get team size.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of Bladeburner team members you have assigned to the specified action.\n *\n * Setting a team is only applicable for Operations and BlackOps. This function will return 0 for other action types.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Number of Bladeburner team members that were assigned to the specified action.\n */\n getTeamSize(type: string, name: string): number;\n\n /**\n * Set team size.\n * @remarks\n * RAM cost: 4 GB\n *\n * Set the team size for the specified Bladeburner action.\n *\n * Returns the team size that was set, or -1 if the function failed.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param size - Number of team members to set. Will be converted using Math.round().\n * @returns Number of Bladeburner team members you assigned to the specified action.\n */\n setTeamSize(type: string, name: string, size: number): number;\n\n /**\n * Get estimated population in city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the estimated number of Synthoids in the specified city,\n * or -1 if an invalid city was specified.\n *\n * @param city - Name of city. Case-sensitive\n * @returns Estimated number of Synthoids in the specified city.\n */\n getCityEstimatedPopulation(city: CityName | `${CityName}`): number;\n\n /**\n * Get number of communities in a city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the estimated number of Synthoid communities in the specified city,\n * or -1 if an invalid city was specified.\n *\n * @param city - Name of city. Case-sensitive\n * @returns Number of Synthoids communities in the specified city.\n */\n getCityCommunities(city: CityName | `${CityName}`): number;\n\n /**\n * Get chaos of a city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the chaos in the specified city,\n * or -1 if an invalid city was specified.\n *\n * @param city - Name of city. Case-sensitive\n * @returns Chaos in the specified city.\n */\n getCityChaos(city: CityName | `${CityName}`): number;\n\n /**\n * Get current city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the city that the player is currently in (for Bladeburner).\n *\n * @returns City that the player is currently in (for Bladeburner).\n */\n getCity(): CityName;\n\n /**\n * Travel to another city in bladeburner.\n * @remarks\n * RAM cost: 4 GB\n * Attempts to switch to the specified city (for Bladeburner only).\n *\n * Returns true if successful, and false otherwise\n *\n * @param city - Name of city. Case-sensitive\n * @returns true if successful, and false otherwise\n */\n switchCity(city: CityName | `${CityName}`): boolean;\n\n /**\n * Get bladeburner stamina.\n * @remarks\n * RAM cost: 4 GB\n * Returns an array with two elements:\n * * [Current stamina, Max stamina]\n * @example\n * ```js\n * function getStaminaPercentage() {\n * const [current, max] = ns.bladeburner.getStamina();\n * return current / max;\n * }\n * ```\n * @returns Array containing current stamina and max stamina.\n */\n getStamina(): [number, number];\n\n /**\n * Join the bladeburner faction.\n * @remarks\n * RAM cost: 4 GB\n * Attempts to join the Bladeburner faction.\n *\n * Returns true if you successfully join the Bladeburner faction, or if you are already a member.\n *\n * Returns false otherwise.\n *\n * @returns True if you successfully join the Bladeburner faction, or if you are already a member, false otherwise.\n */\n joinBladeburnerFaction(): boolean;\n\n /**\n * Join the bladeburner division.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempts to join the Bladeburner division.\n *\n * Returns true if you successfully join the Bladeburner division, or if you are already a member.\n *\n * Returns false otherwise.\n *\n * @returns True if you successfully join the Bladeburner division, or if you are already a member, false otherwise.\n */\n joinBladeburnerDivision(): boolean;\n\n /**\n * Get bladeburner bonus time.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the amount of accumulated “bonus time” (milliseconds) for the Bladeburner mechanic.\n *\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\n *\n * “Bonus time” makes the game progress faster, up to 5x the normal speed.\n * For example, if an action takes 30 seconds to complete but you’ve accumulated over\n * 30 seconds in bonus time, then the action will only take 6 seconds in real life to complete.\n *\n * @returns Amount of accumulated “bonus time” (milliseconds) for the Bladeburner mechanic.\n */\n getBonusTime(): number;\n\n /** Returns whether player is a member of bladeburner division. Does not require API access.\n * @remarks\n * RAM cost: 1 GB\n *\n * @returns whether player is a member of bladeburner division. */\n inBladeburner(): boolean;\n}\n\n/**\n * Coding Contract API\n * @public\n */\nexport interface CodingContract {\n /**\n * Attempts a coding contract, returning a reward string on success or empty string on failure.\n * @remarks\n * RAM cost: 10 GB\n *\n * Attempts to solve the Coding Contract with the provided solution.\n *\n * @example\n * ```js\n * const reward = codingcontract.attempt(yourSolution, filename, hostname);\n * if (reward) {\n * ns.tprint(`Contract solved successfully! Reward: ${reward}`)\n * } else ns.tprint("Failed to solve contract.")\n * ```\n *\n * @param answer - Attempted solution for the contract.\n * @param filename - Filename of the contract.\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not\n * provided.\n * @returns A reward description string on success, or an empty string on failure.\n */\n attempt(answer: string | number | any[], filename: string, host?: string): string;\n\n /**\n * Get the type of a coding contract.\n * @remarks\n * RAM cost: 5 GB\n *\n * Returns a name describing the type of problem posed by the Coding Contract.\n * (e.g. Find Largest Prime Factor, Total Ways to Sum, etc.)\n *\n * @param filename - Filename of the contract.\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns Name describing the type of problem posed by the Coding Contract.\n */\n getContractType(filename: string, host?: string): string;\n\n /**\n * Get the description.\n * @remarks\n * RAM cost: 5 GB\n *\n * Get the full text description for the problem posed by the Coding Contract.\n *\n * @param filename - Filename of the contract.\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns Contract’s text description.\n */\n getDescription(filename: string, host?: string): string;\n\n /**\n * Get the input data.\n * @remarks\n * RAM cost: 5 GB\n *\n * Get the data associated with the specific Coding Contract.\n * Note that this is not the same as the contract’s description.\n * This is just the data that the contract wants you to act on in order to solve the contract.\n *\n * @param filename - Filename of the contract.\n * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns The specified contract’s data, data type depends on contract type.\n */\n getData(filename: string, host?: string): CodingContractData;\n\n /**\n * Get the number of attempts remaining.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the number of tries remaining on the contract before it self-destructs.\n *\n * @param filename - Filename of the contract.\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns How many attempts are remaining for the contract.\n */\n getNumTriesRemaining(filename: string, host?: string): number;\n\n /**\n * Generate a dummy contract.\n * @remarks\n * RAM cost: 2 GB\n *\n * Generate a dummy contract on the home computer with no reward. Used to test various algorithms.\n *\n * @param type - Type of contract to generate\n */\n createDummyContract(type: string): void;\n\n /**\n * List all contract types.\n * @remarks\n * RAM cost: 2 GB\n */\n getContractTypes(): string[];\n}\n\n/**\n * Gang API\n * @remarks\n * If you are not in BitNode-2, then you must have Source-File 2 in order to use this API.\n * @public\n */\nexport interface Gang {\n /**\n * Create a gang.\n * @remarks\n * RAM cost: 1GB\n *\n * Create a gang with the specified faction.\n * @returns True if the gang was created, false otherwise.\n */\n createGang(faction: string): boolean;\n\n /**\n * Check if you\'re in a gang.\n * @remarks\n * RAM cost: 1GB\n * @returns True if you\'re in a gang, false otherwise.\n */\n inGang(): boolean;\n\n /**\n * List all gang members.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the names of all Gang members\n *\n * @returns Names of all Gang members.\n */\n getMemberNames(): string[];\n\n /**\n * Rename a Gang member to a new unique name.\n * @remarks\n * RAM cost: 0 GB\n *\n * Rename a Gang Member if none already has the new name.\n * @param memberName - Name of the member to change.\n * @param newName - New name for that gang member.\n * @returns True if successful, and false if not.\n */\n renameMember(memberName: string, newName: string): boolean;\n\n /**\n * Get information about your gang.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get general information about the gang.\n *\n * @returns Object containing general information about the gang.\n */\n getGangInformation(): GangGenInfo;\n\n /**\n * Get information about the other gangs.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get territory and power information about all gangs.\n *\n * @returns Object containing territory and power information about all gangs.\n */\n getOtherGangInformation(): GangOtherInfo;\n\n /**\n * Get information about a specific gang member.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get stat and equipment-related information about a Gang Member\n *\n * @param name - Name of member.\n * @returns Object containing stat and equipment-related information about a Gang Member.\n */\n getMemberInformation(name: string): GangMemberInfo;\n\n /**\n * Check if you can recruit a new gang member.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns a boolean indicating whether a member can currently be recruited.\n *\n * Once you have successfully created a gang by using the function\n * {@link Gang.createGang | createGang}, you can immediately recruit a small\n * number of members to your gang. After you have recruited the founding\n * members, to recruit another member you must increase your respect. The\n * more members you want to recruit, the more respect you require. If your\n * gang has the maximum number of members, then this function would return\n * false.\n *\n * @returns True if a member can currently be recruited, false otherwise.\n */\n canRecruitMember(): boolean;\n\n /**\n * Check how many gang members you can currently recruit.\n * @remarks\n * RAM cost: 1 GB\n *\n * @returns Number indicating how many members can be recruited,\n * considering current reputation and gang size.\n */\n getRecruitsAvailable(): number;\n\n /**\n * Check the amount of Respect needed for your next gang recruit.\n * @remarks\n * RAM cost: 1 GB\n *\n * @returns The static number value of Respect needed for the next\n * recruit, with consideration to your current gang size.\n * Returns `Infinity` if you have reached the gang size limit.\n */\n respectForNextRecruit(): number;\n /**\n * Recruit a new gang member.\n * @remarks\n * RAM cost: 2 GB\n *\n * Attempt to recruit a new gang member.\n *\n * Possible reasons for failure:\n * * Cannot currently recruit a new member\n * * There already exists a member with the specified name\n *\n * @param name - Name of member to recruit.\n * @returns True if the member was successfully recruited, false otherwise.\n */\n recruitMember(name: string): boolean;\n\n /**\n * List member task names.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the name of all valid tasks that Gang members can be assigned to.\n *\n * @returns All valid tasks that Gang members can be assigned to.\n */\n getTaskNames(): string[];\n\n /**\n * Set gang member to task.\n * @remarks\n * RAM cost: 2 GB\n *\n * Attempts to assign the specified Gang Member to the specified task.\n * If an invalid task is specified, the Gang member will be set to idle (“Unassigned”).\n *\n * @param memberName - Name of Gang member to assign.\n * @param taskName - Task to assign.\n * @returns True if the Gang Member was successfully assigned to the task, false otherwise.\n */\n setMemberTask(memberName: string, taskName: string): boolean;\n\n /**\n * Get stats of a task.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the stats of a gang task stats. This is typically used to evaluate which action should be executed next.\n *\n * @param name - Name of the task.\n * @returns Detailed stats of a task.\n */\n getTaskStats(name: string): GangTaskStats;\n\n /**\n * List equipment names.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the name of all possible equipment/upgrades you can purchase for your Gang Members.\n * This includes Augmentations.\n *\n * @returns Names of all Equipments/Augmentations.\n */\n getEquipmentNames(): string[];\n\n /**\n * Get cost of equipment.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the amount of money it takes to purchase a piece of Equipment or an Augmentation.\n * If an invalid Equipment/Augmentation is specified, this function will return Infinity.\n *\n * @param equipName - Name of equipment.\n * @returns Cost to purchase the specified Equipment/Augmentation (number). Infinity for invalid arguments\n */\n getEquipmentCost(equipName: string): number;\n\n /**\n * Get type of an equipment.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the specified equipment type.\n *\n * @param equipName - Name of equipment.\n * @returns Type of the equipment.\n */\n getEquipmentType(equipName: string): string;\n\n /**\n * Get stats of an equipment.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the specified equipment stats.\n *\n * @param equipName - Name of equipment.\n * @returns A dictionary containing the stats of the equipment.\n */\n getEquipmentStats(equipName: string): EquipmentStats;\n\n /**\n * Purchase an equipment for a gang member.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempt to purchase the specified Equipment/Augmentation for the specified Gang member.\n *\n * @param memberName - Name of Gang member to purchase the equipment for.\n * @param equipName - Name of Equipment/Augmentation to purchase.\n * @returns True if the equipment was successfully purchased. False otherwise\n */\n purchaseEquipment(memberName: string, equipName: string): boolean;\n\n /**\n * Ascend a gang member.\n * @remarks\n * RAM cost: 4 GB\n *\n * Ascend the specified Gang Member.\n *\n * @param memberName - Name of member to ascend.\n * @returns Object with info about the ascension results, or undefined if ascension did not occur.\n */\n ascendMember(memberName: string): GangMemberAscension | undefined;\n\n /**\n * Get the result of an ascension without ascending.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get a {@link GangMemberAscension} result for ascending a gang member without performing the ascension.\n *\n * @param memberName - Name of member.\n * @returns Object with info about the ascension results, or undefined if ascension is not possible.\n */\n getAscensionResult(memberName: string): GangMemberAscension | undefined;\n\n /**\n * Enable/Disable territory clashes.\n * @remarks\n * RAM cost: 2 GB\n *\n * Set whether or not the gang should engage in territory clashes\n *\n * @param engage - Whether or not to engage in territory clashes.\n */\n setTerritoryWarfare(engage: boolean): void;\n\n /**\n * Get chance to win clash with other gang.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the chance you have to win a clash with the specified gang. The chance is returned in decimal form, not percentage\n *\n * @param gangName - Target gang\n * @returns Chance you have to win a clash with the specified gang.\n */\n getChanceToWinClash(gangName: string): number;\n\n /**\n * Get bonus time.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the amount of accumulated “bonus time” (milliseconds) for the Gang mechanic.\n *\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\n *\n * “Bonus time” makes the game progress faster, up to 25x the normal speed.\n *\n * @returns Bonus time for the Gang mechanic in milliseconds.\n */\n getBonusTime(): number;\n}\n\n/**\n * Sleeve API\n * @remarks\n * If you are not in BitNode-10, then you must have Source-File 10 in order to use this API.\n * @public\n */\nexport interface Sleeve {\n /**\n * Get the number of sleeves you own.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return the number of duplicate sleeves the player has.\n *\n * @returns Number of duplicate sleeves the player has.\n */\n getNumSleeves(): number;\n\n /**\n * Get information about a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a person object for this sleeve\n *\n * storedCycles is the amount of Bonus Time in cycles, each translates to 200ms\n *\n * @param sleeveNumber - Index of the sleeve to retrieve information.\n * @returns Object containing information about this sleeve.\n */\n getSleeve(sleeveNumber: number): SleevePerson;\n\n /**\n * Get task of a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return the current task that the sleeve is performing, or null if the sleeve is idle. All tasks have a "type"\n * property, and other available properties depend on the type of task.\n *\n * @param sleeveNumber - Index of the sleeve to retrieve task from.\n * @returns Object containing information for the current task that the sleeve is performing.\n */\n getTask(sleeveNumber: number): SleeveTask | null;\n\n /**\n * Set a sleeve to idle.\n * @remarks\n * RAM cost: 4 GB\n *\n * @param sleeveNumber - Index of the sleeve to idle.\n */\n setToIdle(sleeveNumber: number): void;\n\n /**\n * Set a sleeve to shock recovery.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * @param sleeveNumber - Index of the sleeve to start recovery.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToShockRecovery(sleeveNumber: number): boolean;\n\n /**\n * Set a sleeve to synchronize.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * @param sleeveNumber - Index of the sleeve to start synchronizing.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToSynchronize(sleeveNumber: number): boolean;\n\n /**\n * Set a sleeve to commit crime.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully (false if an invalid action is specified).\n *\n * @example\n * ```ts\n * // Assigns the first sleeve to Homicide.\n * ns.sleeve.setToCommitCrime(0, "Homicide");\n *\n * // Assigns the second sleeve to Grand Theft Auto, using enum\n * const crimes = ns.enums.CrimeType;\n * ns.sleeve.setToCommitCrime(1, crimes.grandTheftAuto)\n * ```\n *\n * @param sleeveNumber - Index of the sleeve to start committing crime. Sleeves are numbered starting from 0.\n * @param name - Name of the crime.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToCommitCrime(sleeveNumber: number, crimeType: CrimeType | `${CrimeType}`): boolean;\n\n /**\n * Set a sleeve to work for a faction.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started working for a faction.\n *\n * @param sleeveNumber - Index of the sleeve to work for the faction.\n * @param factionName - Name of the faction to work for.\n * @param factionWorkType - Name of the action to perform for this faction.\n * @returns True if the sleeve started working for this faction, false otherwise. Can also throw on errors.\n */\n setToFactionWork(\n sleeveNumber: number,\n factionName: string,\n factionWorkType: FactionWorkType | `${FactionWorkType}`,\n ): boolean | undefined;\n\n /**\n * Set a sleeve to work for a company.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started working for a company.\n *\n * @param sleeveNumber - Index of the sleeve to work for the company.\n * @param companyName - Name of the company to work for.\n * @returns True if the sleeve started working for this company, false otherwise.\n */\n setToCompanyWork(sleeveNumber: number, companyName: CompanyName | `${CompanyName}`): boolean;\n\n /**\n * Set a sleeve to take a class at a university.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * @param sleeveNumber - Index of the sleeve to start taking class.\n * @param university - Name of the university to attend.\n * @param className - Name of the class to follow.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToUniversityCourse(sleeveNumber: number, university: string, className: string): boolean;\n\n /**\n * Set a sleeve to workout at the gym.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started working out.\n *\n * @param sleeveNumber - Index of the sleeve to workout at the gym.\n * @param gymName - Name of the gym.\n * @param stat - Name of the stat to train.\n * @returns True if the sleeve started working out, false otherwise.\n */\n setToGymWorkout(sleeveNumber: number, gymName: string, stat: string): boolean;\n\n /**\n * Make a sleeve travel to another city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve reached destination.\n *\n * @param sleeveNumber - Index of the sleeve to travel.\n * @param city - Name of the destination city.\n * @returns True if the sleeve reached destination, false otherwise.\n */\n travel(sleeveNumber: number, city: CityName | `${CityName}`): boolean;\n\n /**\n * Get augmentations installed on a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a list of augmentation names that this sleeve has installed.\n *\n * @param sleeveNumber - Index of the sleeve to retrieve augmentations from.\n * @returns List of augmentation names that this sleeve has installed.\n */\n getSleeveAugmentations(sleeveNumber: number): string[];\n\n /**\n * Get price of an augmentation.\n * @remarks\n * RAM cost: 4 GB\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Price of the augmentation.\n */\n getSleeveAugmentationPrice(augName: string): number;\n\n /**\n * Get reputation requirement of an augmentation.\n * @remarks\n * RAM cost: 4 GB\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Reputation requirement of the augmentation.\n */\n getSleeveAugmentationRepReq(augName: string): number;\n\n /**\n * List purchasable augs for a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a list of augmentations that the player can buy for this sleeve.\n *\n * @param sleeveNumber - Index of the sleeve to retrieve purchasable augmentations from.\n * @returns List of augmentations that the player can buy for this sleeve.\n */\n getSleevePurchasableAugs(sleeveNumber: number): AugmentPair[];\n\n /**\n * Purchase an aug for a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return true if the aug was purchased and installed on the sleeve.\n *\n * @param sleeveNumber - Index of the sleeve to buy an aug for.\n * @param augName - Name of the aug to buy. Must be an exact match.\n * @returns True if the aug was purchased and installed on the sleeve, false otherwise.\n */\n purchaseSleeveAug(sleeveNumber: number, augName: string): boolean;\n\n /**\n * Set a sleeve to perform Bladeburner actions.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started a Bladeburner action.\n *\n * @param sleeveNumber - Index of the sleeve to perform a Bladeburner action.\n * @param action - Name of the action to be performed.\n * @param contract - Name of the contract if applicable.\n * @returns True if the sleeve started the given Bladeburner action, false otherwise.\n */\n setToBladeburnerAction(sleeveNumber: number, action: string, contract?: string): boolean;\n}\n\n/**\n * Grafting API\n * @remarks\n * This API requires Source-File 10 to use.\n * @public\n */\nexport interface Grafting {\n /**\n * Retrieve the grafting cost of an aug.\n * @remarks\n * RAM cost: 3.75 GB\n *\n * @param augName - Name of the aug to check the price of. Must be an exact match.\n * @returns The cost required to graft the named augmentation.\n * @throws Will error if an invalid Augmentation name is provided.\n */\n getAugmentationGraftPrice(augName: string): number;\n\n /**\n * Retrieves the time required to graft an aug.\n * @remarks\n * RAM cost: 3.75 GB\n *\n * @param augName - Name of the aug to check the grafting time of. Must be an exact match.\n * @returns The time required, in millis, to graft the named augmentation.\n * @throws Will error if an invalid Augmentation name is provided.\n */\n getAugmentationGraftTime(augName: string): number;\n\n /**\n * Retrieves a list of Augmentations that can be grafted.\n * @remarks\n * RAM cost: 5 GB\n *\n * Note that this function returns a list of currently graftable Augmentations,\n * based off of the Augmentations that you already own.\n *\n * @returns An array of graftable Augmentations.\n */\n getGraftableAugmentations(): string[];\n\n /**\n * Begins grafting the named aug. You must be in New Tokyo to use this.\n * @remarks\n * RAM cost: 7.5 GB\n *\n * @param augName - The name of the aug to begin grafting. Must be an exact match.\n * @param focus - Acquire player focus on this Augmentation grafting. Optional. Defaults to true.\n * @returns True if the aug successfully began grafting, false otherwise (e.g. not enough money, or\n * invalid Augmentation name provided).\n * @throws Will error if called while you are not in New Tokyo.\n */\n graftAugmentation(augName: string, focus?: boolean): boolean;\n}\n\n/**\n * Skills formulas\n * @public\n */\ninterface SkillsFormulas {\n /**\n * Calculate skill level.\n * @param exp - experience for that skill\n * @param skillMult - Multiplier for that skill, defaults to 1.\n * @returns The calculated skill level.\n */\n calculateSkill(exp: number, skillMult?: number): number;\n /**\n * Calculate exp for skill level.\n * @param skill - target skill level\n * @param skillMult - Multiplier for that skill, defaults to 1.\n * @returns The calculated exp required.\n */\n calculateExp(skill: number, skillMult?: number): number;\n}\n\n/** @public */\ninterface WorkStats {\n money: number;\n reputation: number;\n hackExp: number;\n strExp: number;\n defExp: number;\n dexExp: number;\n agiExp: number;\n chaExp: number;\n intExp: number;\n}\n\n/**\n * Work formulas\n * @public\n */\ninterface WorkFormulas {\n crimeSuccessChance(person: Person, crimeType: CrimeType | `${CrimeType}`): number;\n /** @returns The WorkStats gained when completing one instance of the specified crime. */\n crimeGains(person: Person, crimeType: CrimeType | `${CrimeType}`): WorkStats;\n /** @returns The WorkStats applied every game cycle (200ms) by taking the specified gym class. */\n gymGains(person: Person, gymType: GymType | `${GymType}`, locationName: string): WorkStats;\n /** @returns The WorkStats applied every game cycle (200ms) by taking the specified university class. */\n universityGains(\n person: Person,\n classType: UniversityClassType | `${UniversityClassType}`,\n locationName: string,\n ): WorkStats;\n /** @returns The WorkStats applied every game cycle (200ms) by performing the specified faction work. */\n factionGains(person: Person, workType: FactionWorkType | `${FactionWorkType}`, favor: number): WorkStats;\n /** @returns The WorkStats applied every game cycle (200ms) by performing the specified company work. */\n companyGains(\n person: Person,\n companyName: CompanyName | `${CompanyName}`,\n workType: JobName | `${JobName}`,\n favor: number,\n ): WorkStats;\n}\n\n/**\n * Reputation formulas\n * @public\n */\ninterface ReputationFormulas {\n /**\n * Calculate the total required amount of faction reputation to reach a target favor.\n * @param favor - target faction favor.\n * @returns The calculated faction reputation required.\n */\n calculateFavorToRep(favor: number): number;\n /**\n * Calculate the resulting faction favor of a total amount of reputation.\n * (Faction favor is gained whenever you install an Augmentation.)\n * @param rep - amount of reputation.\n * @returns The calculated faction favor.\n */\n calculateRepToFavor(rep: number): number;\n\n /**\n * Calculate how much rep would be gained.\n * @param amount - Amount of money donated\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n */\n repFromDonation(amount: number, player: Person): number;\n}\n\n/**\n * Hacking formulas\n * @public\n */\ninterface HackingFormulas {\n /**\n * Calculate hack chance.\n * (Ex: 0.25 would indicate a 25% chance of success.)\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack chance.\n */\n hackChance(server: Server, player: Person): number;\n /**\n * Calculate hack exp for one thread.\n * @remarks\n * Multiply by thread to get total exp\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack exp.\n */\n hackExp(server: Server, player: Person): number;\n /**\n * Calculate hack percent for one thread.\n * (Ex: 0.25 would steal 25% of the server\'s current value.)\n * @remarks\n * Multiply by thread to get total percent hacked.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack percent.\n */\n hackPercent(server: Server, player: Person): number;\n /**\n * Calculate the percent a server would grow to.\n * Not exact due to limitations of mathematics.\n * (Ex: 3.0 would would grow the server to 300% of its current value.)\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param threads - Amount of thread.\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @param cores - Number of cores on the computer that will execute grow.\n * @returns The calculated grow percent.\n */\n growPercent(server: Server, threads: number, player: Person, cores?: number): number;\n /**\n * Calculate how many threads it will take to grow server to targetMoney. Starting money is server.moneyAvailable.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @param targetMoney - Desired final money, capped to server\'s moneyMax\n * @param cores - Number of cores on the computer that will execute grow.\n * @returns The calculated grow threads as an integer, rounded up.\n */\n growThreads(server: Server, player: Person, targetMoney: number, cores?: number): number;\n /**\n * Calculate hack time.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack time.\n */\n hackTime(server: Server, player: Person): number;\n /**\n * Calculate grow time.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated grow time.\n */\n growTime(server: Server, player: Person): number;\n /**\n * Calculate weaken time.\n * @param server - Server info, typically from {@link NS.getServer | getServer}\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\n * @returns The calculated weaken time.\n */\n weakenTime(server: Server, player: Person): number;\n}\n\n/**\n * Hacknet Node formulas\n * @public\n */\ninterface HacknetNodesFormulas {\n /**\n * Calculate money gain rate.\n * @param level - level of the node.\n * @param ram - ram of the node.\n * @param cores - cores of the node.\n * @param mult - player production mult (default to 1)\n * @returns The calculated money gain rate.\n */\n moneyGainRate(level: number, ram: number, cores: number, mult?: number): number;\n /**\n * Calculate cost of upgrading hacknet node level.\n * @param startingLevel - starting level\n * @param extraLevels - amount of level to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet node ram.\n * @param startingRam - starting ram\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet node cores.\n * @param startingCore - starting cores\n * @param extraCores - amount of cores to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\n /**\n * Calculate the cost of a hacknet node.\n * @param n - number of the hacknet node\n * @param mult - player cost reduction (defaults to 1)\n * @returns The calculated cost.\n */\n hacknetNodeCost(n: number, mult: number): number;\n /**\n * All constants used by the game.\n * @returns An object with all hacknet node constants used by the game.\n */\n constants(): HacknetNodeConstants;\n}\n\n/**\n * Hacknet Server formulas\n * @public\n */\ninterface HacknetServersFormulas {\n /**\n * Calculate hash gain rate.\n * @param level - level of the server.\n * @param ramUsed - ramUsed of the server.\n * @param maxRam - maxRam of the server.\n * @param cores - cores of the server.\n * @param mult - player production mult (default to 1)\n * @returns The calculated hash gain rate.\n */\n hashGainRate(level: number, ramUsed: number, maxRam: number, cores: number, mult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server level.\n * @param startingLevel - starting level\n * @param extraLevels - amount of level to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server ram.\n * @param startingRam - starting ram\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server cores.\n * @param startingCore - starting cores\n * @param extraCores - amount of cores to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server cache.\n * @param startingCache - starting cache level\n * @param extraCache - amount of levels of cache to purchase (defaults to 1)\n * @returns The calculated cost.\n */\n cacheUpgradeCost(startingCache: number, extraCache?: number): number;\n /**\n * Calculate hash cost of an upgrade.\n * @param upgName - name of the upgrade\n * @param level - level of the upgrade\n * @returns The calculated hash cost.\n */\n hashUpgradeCost(upgName: number, level: number): number;\n /**\n * Calculate the cost of a hacknet server.\n * @param n - number of the hacknet server\n * @param mult - player cost reduction (defaults to 1)\n * @returns The calculated cost.\n */\n hacknetServerCost(n: number, mult?: number): number;\n /**\n * All constants used by the game.\n * @returns An object with all hacknet server constants used by the game.\n */\n constants(): HacknetServerConstants;\n}\n\n/**\n * Gang formulas\n * @public\n */\ninterface GangFormulas {\n /**\n * Calculate the wanted penalty.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @returns The calculated wanted penalty.\n */\n wantedPenalty(gang: GangGenInfo): number;\n /**\n * Calculate respect gain per tick.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @param member - Gang info from {@link Gang.getMemberInformation | getMemberInformation}\n * @param task - Gang info from {@link Gang.getTaskStats | getTaskStats}\n * @returns The calculated respect gain.\n */\n respectGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\n /**\n * Calculate wanted gain per tick.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\n * @returns The calculated wanted gain.\n */\n wantedLevelGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\n /**\n * Calculate money gain per tick.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\n * @returns The calculated money gain.\n */\n moneyGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\n\n /**\n * Calculate ascension point gain.\n * @param exp - Experience point before ascension.\n * @returns The calculated ascension point gain.\n */\n ascensionPointsGain(exp: number): number;\n\n /**\n * Calculate ascension mult.\n * @param points - Amount of ascension points.\n * @returns The calculated ascension mult.\n */\n ascensionMultiplier(points: number): number;\n}\n\n/**\n * Formulas API\n * @remarks\n * You need Formulas.exe on your home computer to use this API.\n * @public\n */\nexport interface Formulas {\n mockServer(): Server;\n mockPlayer(): Player;\n mockPerson(): Person;\n /** Reputation formulas */\n reputation: ReputationFormulas;\n /** Skills formulas */\n skills: SkillsFormulas;\n /** Hacking formulas */\n hacking: HackingFormulas;\n /** Hacknet Nodes formulas */\n hacknetNodes: HacknetNodesFormulas;\n /** Hacknet Servers formulas */\n hacknetServers: HacknetServersFormulas;\n /** Gang formulas */\n gang: GangFormulas;\n /** Work formulas */\n work: WorkFormulas;\n}\n\n/** @public */\ninterface Fragment {\n id: number;\n shape: boolean[][];\n type: number;\n power: number;\n limit: number;\n}\n\n/** @public */\ninterface ActiveFragment {\n id: number;\n highestCharge: number;\n numCharge: number;\n rotation: number;\n x: number;\n y: number;\n}\n\n/**\n * Stanek\'s Gift API.\n * @public\n */\ninterface Stanek {\n /**\n * Stanek\'s Gift width.\n * @remarks\n * RAM cost: 0.4 GB\n * @returns The width of the gift.\n */\n giftWidth(): number;\n /**\n * Stanek\'s Gift height.\n * @remarks\n * RAM cost: 0.4 GB\n * @returns The height of the gift.\n */\n giftHeight(): number;\n\n /**\n * Charge a fragment, increasing its power.\n * @remarks\n * RAM cost: 0.4 GB\n * @param rootX - rootX Root X against which to align the top left of the fragment.\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\n * @returns Promise that lasts until the charge action is over.\n */\n chargeFragment(rootX: number, rootY: number): Promise;\n\n /**\n * List possible fragments.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns List of possible fragments.\n */\n fragmentDefinitions(): Fragment[];\n\n /**\n * List of fragments in Stanek\'s Gift.\n * @remarks\n * RAM cost: 5 GB\n *\n * @returns List of active fragments placed on Stanek\'s Gift.\n */\n activeFragments(): ActiveFragment[];\n\n /**\n * Clear the board of all fragments.\n * @remarks\n * RAM cost: 0 GB\n */\n clearGift(): void;\n\n /**\n * Check if fragment can be placed at specified location.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * @param rootX - rootX Root X against which to align the top left of the fragment.\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\n * @param rotation - rotation A number from 0 to 3, the mount of 90 degree turn to take.\n * @param fragmentId - fragmentId ID of the fragment to place.\n * @returns true if the fragment can be placed at that position. false otherwise.\n */\n canPlaceFragment(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\n /**\n * Place fragment on Stanek\'s Gift.\n * @remarks\n * RAM cost: 5 GB\n *\n * @param rootX - X against which to align the top left of the fragment.\n * @param rootY - Y against which to align the top left of the fragment.\n * @param rotation - A number from 0 to 3, the mount of 90 degree turn to take.\n * @param fragmentId - ID of the fragment to place.\n * @returns true if the fragment can be placed at that position. false otherwise.\n */\n placeFragment(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\n /**\n * Get placed fragment at location.\n * @remarks\n * RAM cost: 5 GB\n *\n * @param rootX - X against which to align the top left of the fragment.\n * @param rootY - Y against which to align the top left of the fragment.\n * @returns The fragment at [rootX, rootY], if any.\n */\n getFragment(rootX: number, rootY: number): ActiveFragment | undefined;\n\n /**\n * Remove fragment at location.\n * @remarks\n * RAM cost: 0.15 GB\n *\n * @param rootX - X against which to align the top left of the fragment.\n * @param rootY - Y against which to align the top left of the fragment.\n * @returns The fragment at [rootX, rootY], if any.\n */\n removeFragment(rootX: number, rootY: number): boolean;\n\n /**\n * Accept Stanek\'s Gift by joining the Church of the Machine God\n * @remarks\n * RAM cost: 2 GB\n *\n * @returns true if the player is a member of the church and has the gift installed,\n * false otherwise.\n */\n acceptGift(): boolean;\n}\n\n/** @public */\ninterface InfiltrationReward {\n tradeRep: number;\n sellCash: number;\n SoARep: number;\n}\n\n/** @public */\ninterface ILocation {\n city: CityName;\n name: LocationName;\n}\n\n/** @public */\ninterface InfiltrationLocation {\n location: ILocation;\n reward: InfiltrationReward;\n difficulty: number;\n}\n\n/**\n * Infiltration API.\n * @public\n */\ninterface Infiltration {\n /**\n * Get all locations that can be infiltrated.\n * @remarks\n * RAM cost: 5 GB\n *\n * @returns all locations that can be infiltrated.\n */\n getPossibleLocations(): ILocation[];\n /**\n * Get all infiltrations with difficulty, location and rewards.\n * @remarks\n * RAM cost: 15 GB\n *\n * @returns Infiltration data for given location.\n */\n getInfiltration(location: string): InfiltrationLocation;\n}\n\n/**\n * User Interface API.\n * @public\n */\ninterface UserInterface {\n /**\n * Get the current window size\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns An array of 2 value containing the window width and height.\n */\n windowSize(): [number, number];\n\n /**\n * Get the current theme\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns An object containing the theme\'s colors\n */\n getTheme(): UserInterfaceTheme;\n\n /**\n * Sets the current theme\n * @remarks\n * RAM cost: 0 GB\n * @example\n * Usage example (NS2)\n * ```ts\n * const theme = ns.ui.getTheme();\n * theme.primary = \'#ff5500\';\n * ns.ui.setTheme(theme);\n * ```\n */\n setTheme(newTheme: UserInterfaceTheme): void;\n\n /**\n * Resets the player\'s theme to the default values\n * @remarks\n * RAM cost: 0 GB\n */\n resetTheme(): void;\n\n /**\n * Get the current styles\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns An object containing the player\'s styles\n */\n getStyles(): IStyleSettings;\n\n /**\n * Sets the current styles\n * @remarks\n * RAM cost: 0 GB\n * @example\n * Usage example (NS2)\n * ```ts\n * const styles = ns.ui.getStyles();\n * styles.fontFamily = \'Comic Sans Ms\';\n * ns.ui.setStyles(styles);\n * ```\n */\n setStyles(newStyles: IStyleSettings): void;\n\n /**\n * Resets the player\'s styles to the default values\n * @remarks\n * RAM cost: 0 GB\n */\n resetStyles(): void;\n\n /**\n * Gets the current game information (version, commit, ...)\n * @remarks\n * RAM cost: 0 GB\n */\n getGameInfo(): GameInfo;\n\n /**\n * Clear the Terminal window, as if the player ran `clear` in the terminal\n * @remarks\n * RAM cost: 0.2 GB\n */\n clearTerminal(): void;\n}\n\n/**\n * Collection of all functions passed to scripts\n * @public\n * @remarks\n * Basic usage example:\n * ```js\n * export async function main(ns) {\n * // Basic ns functions can be accessed on the ns object\n * ns.getHostname();\n * // Some related functions are gathered under a sub-property of the ns object\n * ns.stock.getPrice();\n * // Most functions that return a promise need to be awaited.\n * await ns.hack(\'n00dles\');\n * }\n * ```\n */\nexport interface NS {\n /**\n * Namespace for hacknet functions. Some of this API contains spoilers.\n * @remarks RAM cost: 4 GB.\n */\n readonly hacknet: Hacknet;\n\n /**\n * Namespace for bladeburner functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly bladeburner: Bladeburner;\n\n /**\n * Namespace for codingcontract functions.\n * @remarks RAM cost: 0 GB\n */\n readonly codingcontract: CodingContract;\n\n /**\n * Namespace for gang functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly gang: Gang;\n\n /**\n * Namespace for sleeve functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly sleeve: Sleeve;\n\n /**\n * Namespace for stock functions.\n * @remarks RAM cost: 0 GB\n */\n readonly stock: TIX;\n\n /**\n * Namespace for formulas functions.\n * @remarks RAM cost: 0 GB\n */\n readonly formulas: Formulas;\n\n /**\n * Namespace for stanek functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly stanek: Stanek;\n\n /**\n * Namespace for infiltration functions.\n * @remarks RAM cost: 0 GB\n */\n readonly infiltration: Infiltration;\n\n /**\n * Namespace for corporation functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly corporation: Corporation;\n\n /**\n * Namespace for user interface functions.\n * @remarks RAM cost: 0 GB\n */\n readonly ui: UserInterface;\n\n /**\n * Namespace for singularity functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly singularity: Singularity;\n\n /**\n * Namespace for grafting functions. Contains spoilers.\n * @remarks RAM cost: 0 GB\n */\n readonly grafting: Grafting;\n\n /**\n * Arguments passed into the script.\n *\n * @remarks\n * RAM cost: 0 GB\n *\n * Arguments passed into a script can be accessed as a normal array by using the `[]` operator\n * (`args[0]`, `args[1]`, etc...).\n * Arguments can be string, number, or boolean.\n * Use `args.length` to get the number of arguments that were passed into a script.\n *\n * @example\n * `run example.js 7 text true`\n *\n * ```js\n * // example.js\n * export async function main(ns) {\n * ns.tprint(ns.args.length) // 3\n * ns.tprint(ns.args[0]); // 7 (number)\n * ns.tprint(ns.args[1]); // "text" (string)\n * ns.tprint(ns.args[2]); // true (boolean)\n * ns.tprint(ns.args[3]); // undefined, because only 3 arguments were provided\n * }\n * ```\n */\n readonly args: (string | number | boolean)[];\n\n /** The current script\'s PID */\n readonly pid: number;\n\n /**\n * Steal a server\'s money.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Function that is used to try and hack servers to steal money and gain hacking experience.\n * The runtime for this command depends on your hacking level and the target server’s\n * security level when this function is called. In order to hack a server you must first gain root access to that server\n * and also have the required hacking level.\n *\n * A script can hack a server from anywhere. It does not need to be running on the same\n * server to hack that server. For example, you can create a script that hacks the `foodnstuff`\n * server and run that script on any server in the game.\n *\n * A successful `hack()` on a server will raise that server’s security level by 0.002.\n *\n * @example\n * ```js\n * let earnedMoney = await ns.hack("foodnstuff");\n * ```\n * @param host - Hostname of the target server to hack.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns A promise that resolves to the amount of money stolen (which is zero if the hack is unsuccessful).\n */\n hack(host: string, opts?: BasicHGWOptions): Promise;\n\n /**\n * Spoof money in a server\'s bank account, increasing the amount available.\n * @remarks\n * RAM cost: 0.15 GB\n *\n * Use your hacking skills to increase the amount of money available on a server.\n *\n * Once the grow is complete, $1 is added to the server\'s available money for every script thread. This additive\n * growth allows for rescuing a server even after it is emptied.\n *\n * After this addition, the thread count is also used to determine a multiplier, which the server\'s money is then\n * multiplied by.\n *\n * The multiplier scales exponentially with thread count, and its base depends on the server\'s security\n * level and in inherent "growth" statistic that varies between different servers.\n *\n * {@link NS.getServerGrowth | getServerGrowth} can be used to check the inherent growth statistic of a server.\n *\n * {@link NS.growthAnalyze | growthAnalyze} can be used to determine the number of threads needed for a specified\n * multiplicative portion of server growth.\n *\n * To determine the effect of a single grow, obtain access to the Formulas API and use\n * {@link HackingFormulas.growPercent | formulas.hacking.growPercent}, or invert {@link NS.growthAnalyze | growthAnalyze}.\n *\n * Like {@link NS.hack | hack}, `grow` can be called on any hackable server, regardless of where the script is\n * running. Hackable servers are any servers not owned by the player.\n *\n * The grow() command requires root access to the target server, but there is no required hacking\n * level to run the command. It also raises the security level of the target server based on the number of threads.\n * The security increase can be determined using {@link NS.growthAnalyzeSecurity | growthAnalyzeSecurity}.\n *\n * @example\n * ```js\n * let currentMoney = ns.getServerMoneyAvailable("n00dles");\n * currentMoney *= await ns.grow("foodnstuff");\n * ```\n * @param host - Hostname of the target server to grow.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns The total effective multiplier that was applied to the server\'s money (after both additive and multiplicative growth).\n */\n grow(host: string, opts?: BasicHGWOptions): Promise;\n\n /**\n * Reduce a server\'s security level.\n * @remarks\n * RAM cost: 0.15 GB\n *\n * Use your hacking skills to attack a server’s security, lowering the server’s security level.\n * The runtime for this function depends on your hacking level and the target server’s security\n * level when this function is called. This function lowers the security level of the target server by 0.05.\n *\n * Like {@link NS.hack | hack} and {@link NS.grow| grow}, `weaken` can be called on any server, regardless of\n * where the script is running. This function requires root access to the target server, but\n * there is no required hacking level to run the function.\n *\n * @example\n * ```js\n * let currentSecurity = ns.getServerSecurityLevel("foodnstuff");\n * currentSecurity -= await ns.weaken("foodnstuff");\n * ```\n * @param host - Hostname of the target server to weaken.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns A promise that resolves to the value by which security was reduced.\n */\n weaken(host: string, opts?: BasicHGWOptions): Promise;\n\n /**\n * Predict the effect of weaken.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the security decrease that would occur if a weaken with this many threads happened.\n *\n * @param threads - Amount of threads that will be used.\n * @param cores - Optional. The number of cores of the server that would run weaken.\n * @returns The security decrease.\n */\n weakenAnalyze(threads: number, cores?: number): number;\n\n /**\n * Calculate the decimal number of threads needed to hack a specified amount of money from a target host.\n * @remarks\n * RAM cost: 1 GB\n *\n * This function returns the decimal number of script threads you need when running the hack command\n * to steal the specified amount of money from the target server.\n * If hackAmount is less than zero or greater than the amount of money available on the server,\n * then this function returns -1.\n *\n *\n * @example\n * ```ts\n * // Calculate threadcount of a single hack that would take $100k from n00dles\n * const hackThreads = hackAnalyzeThreads("n00dles", 1e5);\n *\n * // Launching a script requires an integer thread count. The below would take less than the targeted $100k.\n * ns.run("noodleHack.js", Math.floor(hackThreads))\n *\n * ```\n * @param host - Hostname of the target server to analyze.\n * @param hackAmount - Amount of money you want to hack from the server.\n * @returns The number of threads needed to hack the server for hackAmount money.\n */\n hackAnalyzeThreads(host: string, hackAmount: number): number;\n\n /**\n * Get the part of money stolen with a single thread.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the part of the specified server’s money you will steal with a single thread hack.\n *\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.hackPercent | formulas.hacking.hackPercent}.\n *\n * @example\n * ```js\n * //For example, assume the following returns 0.01:\n * const hackAmount = ns.hackAnalyze("foodnstuff");\n * //This means that if hack the foodnstuff server using a single thread, then you will steal 1%, or 0.01 of its total money. If you hack using N threads, then you will steal N*0.01 times its total money.\n * ```\n * @param host - Hostname of the target server.\n * @returns The part of money you will steal from the target server with a single thread hack.\n */\n hackAnalyze(host: string): number;\n\n /**\n * Get the security increase for a number of threads.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the security increase that would occur if a hack with this many threads happened.\n *\n * @param threads - Amount of threads that will be used.\n * @param hostname - Hostname of the target server. The number of threads is limited to the number needed to hack the server\'s maximum amount of money.\n * @returns The security increase.\n */\n hackAnalyzeSecurity(threads: number, hostname?: string): number;\n\n /**\n * Get the chance of successfully hacking a server.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the chance you have of successfully hacking the specified server.\n *\n * This returned value is in decimal form, not percentage.\n *\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.hackChance | formulas.hacking.hackChance}.\n *\n * @param host - Hostname of the target server.\n * @returns The chance you have of successfully hacking the target server.\n */\n hackAnalyzeChance(host: string): number;\n\n /**\n * Calculate the number of grow threads needed for a given multiplicative growth factor.\n * @remarks\n * RAM cost: 1 GB\n *\n * This function returns the total decimal number of {@link NS.grow | grow} threads needed in order to multiply the\n * money available on the specified server by a given multiplier, if all threads are executed at the server\'s current\n * security level, regardless of how many threads are assigned to each call.\n *\n * Note that there is also an additive factor that is applied before the multiplier. Each {@link NS.grow | grow} call\n * will add $1 to the host\'s money for each thread before applying the multiplier for its thread count. This means\n * that at extremely low starting money, fewer threads would be needed to apply the same effective multiplier than\n * what is calculated by growthAnalyze.\n *\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.growThreads | formulas.hacking.growThreads}.\n *\n * @example\n * ```js\n * // calculate number of grow threads to apply 2x growth multiplier on n00dles (does not include the additive growth).\n * const growThreads = ns.growthAnalyze("n00dles", 2);\n *\n * // When using the thread count to launch a script, it needs to be converted to an integer.\n * ns.run("noodleGrow.js", Math.ceil(growThreads));\n * ```\n * @param host - Hostname of the target server.\n * @param multiplier - Multiplier that will be applied to a server\'s money after applying additive growth. Decimal form.\n * @param cores - Number of cores on the host running the grow function. Optional, defaults to 1.\n * @returns Decimal number of grow threads needed for the specified multiplicative growth factor (does not include additive growth).\n */\n growthAnalyze(host: string, multiplier: number, cores?: number): number;\n\n /**\n * Calculate the security increase for a number of grow threads.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the security increase that would occur if a grow with this many threads happened.\n *\n * @param threads - Amount of threads that will be used.\n * @param hostname - Optional. Hostname of the target server. If provided, security increase is limited by the number of threads needed to reach maximum money.\n * @param cores - Optional. The number of cores of the server that would run grow.\n * @returns The security increase.\n */\n growthAnalyzeSecurity(threads: number, hostname?: string, cores?: number): number;\n\n /**\n * Suspends the script for n milliseconds.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param millis - Number of milliseconds to sleep.\n * @example\n * ```js\n * // This will count from 1 to 10 in your terminal, with one number every 5 seconds\n * for (var i = 1; i <= 10; i++) {\n * ns.tprint(i);\n * await ns.sleep(5000);\n * }\n * ```\n * @returns A promise that resolves to true when the sleep is completed.\n */\n sleep(millis: number): Promise;\n\n /**\n * Suspends the script for n milliseconds. Doesn\'t block with concurrent calls.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param millis - Number of milliseconds to sleep.\n * @returns A promise that resolves to true when the sleep is completed.\n */\n asleep(millis: number): Promise;\n\n /**\n * Prints one or more values or variables to the script’s logs.\n * @remarks\n * RAM cost: 0 GB\n *\n * If the argument is a string, you can color code your message by prefixing your\n * string with one of these strings:\n *\n * - `"ERROR"`: The whole string will be printed in red. Use this prefix to indicate\n * that an error has occurred.\n *\n * - `"SUCCESS"`: The whole string will be printed in green, similar to the default\n * theme of the Terminal. Use this prefix to indicate that something is correct.\n *\n * - `"WARN"`: The whole string will be printed in yellow. Use this prefix to\n * indicate that you or a user of your script should be careful of something.\n *\n * - `"INFO"`: The whole string will be printed in purplish blue. Use this prefix to\n * remind yourself or a user of your script of something. Think of this prefix as\n * indicating an FYI (for your information).\n *\n * For custom coloring, use ANSI escape sequences. The examples below use the Unicode\n * escape code `\\u001b`. The color coding also works if `\\u001b` is replaced with\n * the hexadecimal escape code `\\x1b`. The Bash escape code `\\e` is not supported.\n * The octal escape code `\\033` is not allowed because the game runs JavaScript in\n * strict mode.\n *\n * @example\n * ```js\n * // Default color coding.\n * ns.print("ERROR means something\'s wrong.");\n * ns.print("SUCCESS means everything\'s OK.");\n * ns.print("WARN Tread with caution!");\n * ns.print("WARNING, warning, danger, danger!");\n * ns.print("WARNing! Here be dragons.");\n * ns.print("INFO for your I\'s only (FYI).");\n * ns.print("INFOrmation overload!");\n * // Custom color coding.\n * const cyan = "\\u001b[36m";\n * const green = "\\u001b[32m";\n * const red = "\\u001b[31m";\n * const reset = "\\u001b[0m";\n * ns.print(`${red}Ugh! What a mess.${reset}`);\n * ns.print(`${green}Well done!${reset}`);\n * ns.print(`${cyan}ERROR Should this be in red?${reset}`);\n * ns.tail();\n * ```\n *\n * @param args - Value(s) to be printed.\n */\n print(...args: any[]): void;\n\n /** Prints a ReactNode to the script logs.\n * @remarks\n * RAM cost: 0 GB\n *\n * See {@link ReactNode} type for the acceptable values.\n *\n * @param node - The react node to be printed. */\n printRaw(node: ReactNode): void;\n\n /**\n * Prints a formatted string to the script’s logs.\n * @remarks\n * RAM cost: 0 GB\n *\n * - See {@link NS.print | print} for how to add color to your printed strings.\n *\n * - For more detail, see: https://github.com/alexei/sprintf.js\n *\n * @example\n * ```js\n * const name = "Bit";\n * const age = 4;\n * ns.printf("My name is %s.", name);\n * ns.printf("I\'m %d seconds old.", age);\n * ns.printf("My age in binary is %b.", age);\n * ns.printf("My age in scientific notation is %e.", age);\n * ns.printf("In %d seconds, I\'ll be %s.", 6, "Byte");\n * ns.printf("Am I a nibble? %t", (4 == age));\n * ns.tail();\n * ```\n *\n * @param format - Format of the message.\n * @param args - Value(s) to be printed.\n */\n printf(format: string, ...args: any[]): void;\n\n /**\n * Prints one or more values or variables to the Terminal.\n * @remarks\n * RAM cost: 0 GB\n *\n * See {@link NS.print | print} for how to add color to your printed strings.\n *\n * @param args - Value(s) to be printed.\n */\n tprint(...args: any[]): void;\n\n /** Prints a ReactNode to the terminal.\n * @remarks\n * RAM cost: 0 GB\n *\n * See {@link ReactNode} type for the acceptable values.\n *\n * @param node - The react node to be printed. */\n tprintRaw(node: ReactNode): void;\n\n /**\n * Prints a raw value or a variable to the Terminal.\n * @remarks\n * RAM cost: 0 GB\n *\n * - See {@link NS.print | print} for how to add color to your printed strings.\n *\n * - See {@link NS.printf | printf} for examples on formatted strings.\n *\n * - For more detail, see: https://github.com/alexei/sprintf.js\n *\n * @param format - Format of the message.\n * @param values - Value(s) to be printed.\n */\n tprintf(format: string, ...values: any[]): void;\n\n /**\n * Clears the script’s logs.\n * @remarks\n * RAM cost: 0 GB\n */\n clearLog(): void;\n\n /**\n * Disables logging for the given function.\n * @remarks\n * RAM cost: 0 GB\n *\n * Logging can be disabled for all functions by passing `ALL` as the argument.\n *\n * @param fn - Name of function for which to disable logging.\n */\n disableLog(fn: string): void;\n\n /**\n * Enable logging for a certain function.\n * @remarks\n * RAM cost: 0 GB\n *\n * Re-enables logging for the given function. If `ALL` is passed into this\n * function as an argument, then it will revert the effects of disableLog(`ALL`).\n *\n * @param fn - Name of function for which to enable logging.\n */\n enableLog(fn: string): void;\n\n /**\n * Checks the status of the logging for the given function.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param fn - Name of function to check.\n * @returns Returns a boolean indicating whether or not logging is enabled for that function (or `ALL`).\n */\n isLogEnabled(fn: string): boolean;\n\n /**\n * Get all the logs of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns a script’s logs. The logs are returned as an array, where each line is an element in the array.\n * The most recently logged line is at the end of the array.\n * Note that there is a maximum number of lines that a script stores in its logs. This is configurable in the game’s options.\n * If the function is called with no arguments, it will return the current script’s logs.\n *\n * Otherwise, the PID or filename, hostname/ip, and args… arguments can be used to get logs from another script.\n * Remember that scripts are uniquely identified by both their names and arguments.\n *\n * @example\n * ```js\n * //Get logs from foo.js on the current server that was run with no args\n * ns.getScriptLogs("foo.js");\n *\n * //Open logs from foo.js on the foodnstuff server that was run with no args\n * ns.getScriptLogs("foo.js", "foodnstuff");\n *\n * //Open logs from foo.js on the foodnstuff server that was run with the arguments [1, "test"]\n * ns.getScriptLogs("foo.js", "foodnstuff", 1, "test");\n * ```\n * @param fn - Optional. Filename or PID of script to get logs from.\n * @param host - Optional. Hostname of the server that the script is on.\n * @param args - Arguments to identify which scripts to get logs for.\n * @returns Returns a string array, where each line is an element in the array. The most recently logged line is at the end of the array.\n */\n getScriptLogs(fn?: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): string[];\n\n /**\n * Get an array of recently killed scripts across all servers.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * The most recently killed script is the first element in the array.\n * Note that there is a maximum number of recently killed scripts which are tracked.\n * This is configurable in the game\'s options as `Recently killed scripts size`.\n *\n * @example\n * ```ts\n * let recentScripts = ns.getRecentScripts();\n * let mostRecent = recentScripts.shift()\n * if (mostRecent)\n * ns.tprint(mostRecent.logs.join(\'\\n\'))\n * ```\n *\n * @returns Array with information about previously killed scripts.\n */\n getRecentScripts(): RecentScript[];\n\n /**\n * Open the tail window of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * Opens a script’s logs. This is functionally the same as the tail Terminal command.\n *\n * If the function is called with no arguments, it will open the current script’s logs.\n *\n * Otherwise, the PID or filename, hostname/ip, and args… arguments can be used to get the logs from another script.\n * Remember that scripts are uniquely identified by both their names and arguments.\n *\n * @example\n * ```js\n * //Open logs from foo.js on the current server that was run with no args\n * ns.tail("foo.js");\n *\n * //Get logs from foo.js on the foodnstuff server that was run with no args\n * ns.tail("foo.js", "foodnstuff");\n *\n * //Get logs from foo.js on the foodnstuff server that was run with the arguments [1, "test"]\n * ns.tail("foo.js", "foodnstuff", 1, "test");\n * ```\n * @param fn - Optional. Filename or PID of the script being tailed. If omitted, the current script is tailed.\n * @param host - Optional. Hostname of the script being tailed. Defaults to the server this script is running on. If args are specified, this is not optional.\n * @param args - Arguments for the script being tailed.\n */\n tail(fn?: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): void;\n\n /**\n * Move a tail window.\n * @remarks\n * RAM cost: 0 GB\n *\n * Moves a tail window. Coordinates are in screenspace pixels (top left is 0,0).\n *\n * @param x - x coordinate.\n * @param y - y coordinate.\n * @param pid - Optional. PID of the script having its tail moved. If omitted, the current script is used.\n */\n moveTail(x: number, y: number, pid?: number): void;\n\n /**\n * Resize a tail window.\n * @remarks\n * RAM cost: 0 GB\n *\n * Resize a tail window. Size are in pixel.\n *\n * @param width - Width of the window.\n * @param height - Height of the window.\n * @param pid - Optional. PID of the script having its tail resized. If omitted, the current script is used.\n */\n resizeTail(width: number, height: number, pid?: number): void;\n\n /**\n * Close the tail window of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * Closes a script’s logs. This is functionally the same as pressing the "Close" button on the tail window.\n *\n * If the function is called with no arguments, it will close the current script’s logs.\n *\n * Otherwise, the pid argument can be used to close the logs from another script.\n *\n * @param pid - Optional. PID of the script having its tail closed. If omitted, the current script is used.\n */\n closeTail(pid?: number): void;\n\n /**\n * Set the title of the tail window of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * This sets the title to the given string, and also forces an update of the\n * tail window\'s contents.\n *\n * The title is saved across restarts, but only if it is a simple string.\n *\n * If the pid is unspecified, it will modify the current script’s logs.\n *\n * Otherwise, the pid argument can be used to change the logs from another script.\n *\n * It is possible to pass any React Node instead of a string.\n * See {@link ReactElement} and {@link ReactNode} types for additional info.\n *\n * @param pid - Optional. PID of the script having its tail closed. If omitted, the current script is used.\n */\n setTitle(title: string | ReactNode, pid?: number): void;\n\n /**\n * Get the list of servers connected to a server.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * Returns an array containing the hostnames of all servers that are one\n * node way from the specified target server. The hostnames in the returned\n * array are strings.\n *\n * @example\n * ```js\n * // All servers that are one hop from the current server.\n * ns.tprint("Neighbors of current server.");\n * let neighbor = ns.scan();\n * for (let i = 0; i < neighbor.length; i++) {\n * ns.tprint(neighbor[i]);\n * }\n * // All neighbors of n00dles.\n * const target = "n00dles";\n * neighbor = ns.scan(target);\n * ns.tprintf("Neighbors of %s.", target);\n * for (let i = 0; i < neighbor.length; i++) {\n * ns.tprint(neighbor[i]);\n * }\n * ```\n *\n * @param host - Optional. Hostname of the server to scan, default to current server.\n * @returns Returns an array of hostnames.\n */\n scan(host?: string): string[];\n\n /** Returns whether the player has access to the darkweb.\n * @remarks\n * RAM cost: 0.05GB\n *\n * @example\n * ```js\n * if (ns.hasTorRouter()) ns.tprint("TOR router detected.");\n * ```\n *\n * @returns Whether player has access to the dark web. */\n hasTorRouter(): boolean;\n\n /**\n * Runs NUKE.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Running NUKE.exe on a target server gives you root access which means you can execute scripts on said server. NUKE.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.nuke("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n nuke(host: string): void;\n\n /**\n * Runs BruteSSH.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the BruteSSH.exe program on the target server. BruteSSH.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.brutessh("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n brutessh(host: string): void;\n\n /**\n * Runs FTPCrack.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the FTPCrack.exe program on the target server. FTPCrack.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.ftpcrack("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n ftpcrack(host: string): void;\n\n /**\n * Runs relaySMTP.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the relaySMTP.exe program on the target server. relaySMTP.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.relaysmtp("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n relaysmtp(host: string): void;\n\n /**\n * Runs HTTPWorm.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the HTTPWorm.exe program on the target server. HTTPWorm.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.httpworm("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n httpworm(host: string): void;\n\n /**\n * Runs SQLInject.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the SQLInject.exe program on the target server. SQLInject.exe must exist on your home computer.\n *\n * @example\n * ```js\n * ns.sqlinject("foodnstuff");\n * ```\n * @remarks RAM cost: 0.05 GB\n * @param host - Hostname of the target server.\n */\n sqlinject(host: string): void;\n\n /**\n * Start another script on the current server.\n * @remarks\n * RAM cost: 1 GB\n *\n * Run a script as a separate process. This function can only be used to run scripts located on the\n * current server (the server running the script that calls this function). Requires a significant\n * amount of RAM to run this command.\n *\n * The second argument is either a thread count, or a {@link RunOptions} object that can also\n * specify the number of threads (among other things).\n *\n * If the script was successfully started, then this functions returns the PID of that script.\n * Otherwise, it returns 0.\n *\n * PID stands for Process ID. The PID is a unique identifier for each script.\n * The PID will always be a positive integer.\n *\n * Running this function with 0 or fewer threads will cause a runtime error.\n *\n * @example\n * ```js\n * //The simplest way to use the run command is to call it with just the script name. The following example will run ‘foo.js’ single-threaded with no arguments:\n * ns.run("foo.js");\n *\n * //The following example will run ‘foo.js’ but with 5 threads instead of single-threaded:\n * ns.run("foo.js", {threads: 5});\n *\n * //This next example will run ‘foo.js’ single-threaded, and will pass the string ‘foodnstuff’ into the script as an argument:\n * ns.run("foo.js", 1, \'foodnstuff\');\n * ```\n * @param script - Filename of script to run.\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the second argument threadOrOptions must be filled in with a value.\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\n */\n run(script: string, threadOrOptions?: number | RunOptions, ...args: (string | number | boolean)[]): number;\n\n /**\n * Start another script on any server.\n * @remarks\n * RAM cost: 1.3 GB\n *\n * Run a script as a separate process on a specified server. This is similar to the function {@link NS.run | run}\n * except that it can be used to run a script that already exists on any server, instead of just the current server.\n *\n * If the script was successfully started, then this function returns the PID of that script.\n * Otherwise, it returns 0.\n *\n * PID stands for Process ID. The PID is a unique identifier for each script.\n * The PID will always be a positive integer.\n *\n * Running this function with 0 or fewer threads will cause a runtime error.\n *\n * @example\n * ```js\n * // The simplest way to use the exec command is to call it with just the script name\n * // and the target server. The following example will try to run generic-hack.js\n * // on the foodnstuff server.\n * ns.exec("generic-hack.js", "foodnstuff");\n *\n * // The following example will try to run the script generic-hack.js on the\n * // joesguns server with 10 threads.\n * ns.exec("generic-hack.js", "joesguns", {threads: 10});\n *\n * // This last example will try to run the script foo.js on the foodnstuff server\n * // with 5 threads. It will also pass the number 1 and the string “test” in as\n * // arguments to the script.\n * ns.exec("foo.js", "foodnstuff", 5, 1, "test");\n * ```\n * @param script - Filename of script to execute. This file must already exist on the target server.\n * @param hostname - Hostname of the `target server` on which to execute the script.\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the third argument threadOrOptions must be filled in with a value.\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\n */\n exec(\n script: string,\n hostname: string,\n threadOrOptions?: number | RunOptions,\n ...args: (string | number | boolean)[]\n ): number;\n\n /**\n * Terminate current script and start another in a defined number of milliseconds.\n * @remarks\n * RAM cost: 2 GB\n *\n * Terminates the current script, and then after a defined delay it will execute the\n * newly-specified script. The purpose of this function is to execute a new script without being\n * constrained by the RAM usage of the current one. This function can only be used to run scripts\n * on the local server.\n *\n * Because this function immediately terminates the script, it does not have a return value.\n *\n * Running this function with 0 or fewer threads will cause a runtime error.\n *\n * @example\n * ```js\n * //The following example will execute the script ‘foo.js’ with 10 threads, in 500 milliseconds and the arguments ‘foodnstuff’ and 90:\n * ns.spawn(\'foo.js\', 10, 500, \'foodnstuff\', 90);\n * ```\n * @param script - Filename of script to execute.\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link SpawnOptions} object. Threads defaults to 1.\n * @param args - Additional arguments to pass into the new script that is being run.\n */\n spawn(script: string, threadOrOptions?: number | SpawnOptions, ...args: (string | number | boolean)[]): void;\n /**\n * Terminate the script with the provided PID.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Kills the script with the provided PID.\n * To instead kill a script using its filename, hostname, and args, see {@link NS.(kill:2) | the other ns.kill entry}.\n *\n * @example\n * ```js\n * // kills the script with PID 20:\n * ns.kill(20);\n * ```\n *\n * @param pid - The PID of the script to kill.\n * @returns True if the script is successfully killed, and false otherwise.\n */\n kill(pid: number): boolean;\n\n /**\n * Terminate the script(s) with the provided filename, hostname, and script arguments.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Kills the script(s) with the provided filename, running on the specified host with the specified args.\n * To instead kill a script using its PID, see {@link NS.(kill:1) | the other ns.kill entry}.\n *\n * @example\n * ```js\n * // kill the script "foo.js" on the same server the current script is running from, with no arguments\n * ns.kill("foo.js");\n *\n * // kill the script "foo.js" on the "n00dles" server with no arguments.\n * ns.kill("foo.js", "n00dles");\n *\n * // kill the script foo.js on the current server that was ran with the arguments [1, “foodnstuff”, false]:\n * ns.kill("foo.js", ns.getHostname(), 1, "foodnstuff", false);\n * ```\n * @param filename - Filename of the script to kill.\n * @param hostname - Hostname where the script to kill is running. Defaults to the current server.\n * @param args - Arguments of the script to kill.\n * @returns True if the scripts were successfully killed, and false otherwise.\n */\n kill(filename: string, hostname?: string, ...args: ScriptArg[]): boolean;\n\n /**\n * Terminate all scripts on a server.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Kills all running scripts on the specified server. This function returns true\n * if any scripts were killed, and false otherwise. In other words, it will return\n * true if there are any scripts running on the target server.\n * If no host is defined, it will kill all scripts, where the script is running.\n *\n * @param host - IP or hostname of the server on which to kill all scripts.\n * @param safetyguard - Skips the script that calls this function\n * @returns True if any scripts were killed, and false otherwise.\n */\n killall(host?: string, safetyguard?: boolean): boolean;\n\n /**\n * Terminates the current script immediately.\n * @remarks\n * RAM cost: 0 GB\n */\n exit(): never;\n\n /**\n * Copy file between servers.\n * @remarks\n * RAM cost: 0.6 GB\n *\n * Copies a script or literature (.lit) file(s) to another server. The files argument can be either a string\n * specifying a single file to copy, or an array of strings specifying multiple files to copy.\n *\n * @example\n * ```js\n * //Copies foo.lit from the helios server to the home computer:\n * ns.scp("foo.lit", "home", "helios" );\n *\n * //Tries to copy three files from rothman-uni to home computer:\n * const files = ["foo1.lit", "foo2.txt", "foo3.js"];\n * ns.scp(files, "home", "rothman-uni");\n * ```\n * @example\n * ```js\n * const server = ns.args[0];\n * const files = ["hack.js", "weaken.js", "grow.js"];\n * ns.scp(files, server, "home");\n * ```\n * @param files - Filename or an array of filenames of script/literature files to copy. Note that if a file is located in a subdirectory, the filename must include the leading `/`.\n * @param destination - Hostname of the destination server, which is the server to which the file will be copied.\n * @param source - Hostname of the source server, which is the server from which the file will be copied. This argument is optional and if it’s omitted the source will be the current server.\n * @returns True if the file is successfully copied over and false otherwise. If the files argument is an array then this function will return false if any of the operations failed.\n */\n scp(files: string | string[], destination: string, source?: string): boolean;\n\n /**\n * List files on a server.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * Returns an array with the filenames of all files on the specified server\n * (as strings). The returned array is sorted in alphabetic order.\n *\n * @param host - Hostname of the target server.\n * @param substring - A substring to search for in the filename.\n * @returns Array with the filenames of all files on the specified server.\n */\n ls(host: string, substring?: string): string[];\n\n /**\n * List running scripts on a server.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * Returns an array with general information about all scripts running on the specified target server.\n *\n * @example\n * ```js\n * const ps = ns.ps("home");\n * for (let script of ps) {\n * ns.tprint(`${script.filename} ${script.threads}`);\n * ns.tprint(script.args);\n * }\n * ```\n * @param host - Host address of the target server. If not specified, it will be the current server’s IP by default.\n * @returns Array with general information about all scripts running on the specified target server.\n */\n ps(host?: string): ProcessInfo[];\n\n /**\n * Check if you have root access on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Returns a boolean indicating whether or not the player has root access to the specified target server.\n *\n * @example\n * ```js\n * if (!ns.hasRootAccess("foodnstuff")) {\n * ns.nuke("foodnstuff");\n * }\n * ```\n * @param host - Hostname of the target server.\n * @returns True if player has root access to the specified target server, and false otherwise.\n */\n hasRootAccess(host: string): boolean;\n\n /**\n * Returns a string with the hostname of the server that the script is running on.\n *\n * @remarks\n * RAM cost: 0.05 GB\n * @returns Hostname of the server that the script runs on.\n */\n getHostname(): string;\n\n /**\n * Returns the player’s current hacking level.\n *\n * @remarks\n * RAM cost: 0.05 GB\n * @returns Player’s current hacking level\n */\n getHackingLevel(): number;\n\n /**\n * Get hacking related multipliers.\n * @remarks\n * RAM cost: 0.25 GB\n *\n * Returns an object containing the Player’s hacking related multipliers.\n * These multipliers are returned in fractional forms, not percentages\n * (e.g. 1.5 instead of 150%).\n *\n * @example\n * ```js\n * const mults = ns.getHackingMultipliers();\n * print(`chance: ${mults.chance}`);\n * print(`growthL ${mults.growth}`);\n * ```\n * @returns Object containing the Player’s hacking related multipliers.\n */\n getHackingMultipliers(): HackingMultipliers;\n\n /**\n * Get hacknet related multipliers.\n * @remarks\n * RAM cost: 0.25 GB\n *\n * Returns an object containing the Player’s hacknet related multipliers.\n * These multipliers are returned in fractional forms, not percentages\n * (e.g. 1.5 instead of 150%).\n *\n * @example\n * ```js\n * const mults = ns.getHacknetMultipliers();\n * ns.tprint(`production: ${mults.production}`);\n * ns.tprint(`purchaseCost: ${mults.purchaseCost}`);\n * ```\n * @returns Object containing the Player’s hacknet related multipliers.\n */\n getHacknetMultipliers(): HacknetMultipliers;\n\n /**\n * Returns a server object for the given server. Defaults to the running script\'s server if host is not specified.\n *\n * @remarks\n * RAM cost: 2 GB\n * @param host - Optional. Hostname for the requested server object.\n * @returns The requested server object.\n */\n getServer(host?: string): Server;\n\n /**\n * Get money available on a server.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of money available on a server.\n * Running this function on the home computer will return the player’s money.\n *\n * @example\n * ```js\n * ns.getServerMoneyAvailable("foodnstuff");\n * ns.getServerMoneyAvailable("home"); // Returns player\'s money\n * ```\n * @param host - Hostname of target server.\n * @returns Amount of money available on the server.\n */\n getServerMoneyAvailable(host: string): number;\n\n /**\n * Get the maximum money available on a server.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the maximum amount of money that can be available on a server.\n *\n * @param host - Hostname of target server.\n * @returns Maximum amount of money available on the server.\n */\n getServerMaxMoney(host: string): number;\n\n /**\n * Get a server growth parameter.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the server’s intrinsic “growth parameter”. This growth\n * parameter is a number typically between 0 and 100 that represents\n * how quickly the server’s money grows. This parameter affects the\n * percentage by which the server’s money is increased when using the\n * grow function. A higher growth parameter will result in a\n * higher percentage increase from grow.\n *\n * @param host - Hostname of target server.\n * @returns Parameter that affects the percentage by which the server’s money is increased when using the grow function.\n */\n getServerGrowth(host: string): number;\n\n /**\n * Get server security level.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the security level of the target server. A server’s security\n * level is denoted by a number, typically between 1 and 100\n * (but it can go above 100).\n *\n * @param host - Hostname of target server.\n * @returns Security level of the target server.\n */\n getServerSecurityLevel(host: string): number;\n\n /**\n * Returns the minimum security level of the target server.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Hostname of target server.\n * @returns Minimum security level of the target server.\n */\n getServerMinSecurityLevel(host: string): number;\n\n /**\n * Get the base security level of a server.\n * @remarks\n * RAM cost: 0.1 GB\n * Returns the base security level of the target server.\n * For the server\'s actual security level, use {@link NS.getServerSecurityLevel | ns.getServerSecurityLevel}.\n *\n * @param host - Host of target server.\n * @returns Base security level of the target server.\n */\n getServerBaseSecurityLevel(host: string): number;\n\n /**\n * Get the maximum amount of RAM on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * @param host - Hostname of the target server.\n * @returns The maximum amount of RAM (GB) a server can have.\n */\n getServerMaxRam(host: string): number;\n /**\n * Get the used RAM on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * @param host - Hostname of the target server.\n * @returns The amount of used RAM (GB) on the specified server.\n */\n getServerUsedRam(host: string): number;\n\n /**\n * Returns the required hacking level of the target server.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Hostname of target server.\n * @returns The required hacking level of the target server.\n */\n getServerRequiredHackingLevel(host: string): number;\n\n /**\n * Returns the number of open ports required to successfully run NUKE.exe on the specified server.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Hostname of target server.\n * @returns The number of open ports required to successfully run NUKE.exe on the specified server.\n */\n getServerNumPortsRequired(host: string): number;\n\n /**\n * Returns a boolean denoting whether or not the specified server exists.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Hostname of target server.\n * @returns True if the specified server exists, and false otherwise.\n */\n serverExists(host: string): boolean;\n\n /**\n * Check if a file exists.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns a boolean indicating whether the specified file exists on the target server.\n * The filename for programs is case insensitive, other file types are case sensitive.\n * For example, fileExists(“brutessh.exe”) will work fine, even though the actual program\n * is named \'BruteSSH.exe\'.\n *\n * @example\n * ```js\n * // The function call will return true if the script named foo.js exists on the foodnstuff server, and false otherwise.\n * ns.fileExists("foo.js", "foodnstuff");\n *\n * // The function call will return true if the current server contains the FTPCrack.exe program, and false otherwise.\n * ns.fileExists("ftpcrack.exe");\n * ```\n * @param filename - Filename of file to check.\n * @param host - Host of target server. Optional, defaults to the server the script is running on.\n * @returns True if specified file exists, and false otherwise.\n */\n fileExists(filename: string, host?: string): boolean;\n\n /**\n * Check if a script is running.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns a boolean indicating whether the specified script is running on the target server.\n * If you use a PID instead of a filename, the hostname and args parameters are unnecessary.\n * If hostname is omitted while filename is used as the first parameter, hostname defaults to the server the calling script is running on.\n * Remember that a script is semi-uniquely identified by both its name and its arguments.\n * (You can run multiple copies of scripts with the same arguments, but for the purposes of\n * functions like this that check based on filename, the filename plus arguments forms the key.)\n *\n * @example\n * ```js\n * //The function call will return true if there is a script named foo.js with no arguments running on the foodnstuff server, and false otherwise:\n * ns.isRunning("foo.js", "foodnstuff");\n *\n * //The function call will return true if there is a script named foo.js with no arguments running on the current server, and false otherwise:\n * ns.isRunning("foo.js", ns.getHostname());\n *\n * //The function call will return true if there is a script named foo.js running with the arguments 1, 5, and “test” (in that order) on the joesguns server, and false otherwise:\n * ns.isRunning("foo.js", "joesguns", 1, 5, "test");\n * ```\n * @param script - Filename or PID of script to check. This is case-sensitive.\n * @param host - Hostname of target server. Optional, defaults to the server the calling script is running on.\n * @param args - Arguments to specify/identify the script. Optional, when looking for scripts run without arguments.\n * @returns True if the specified script is running on the target server, and false otherwise.\n */\n isRunning(script: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): boolean;\n\n /**\n * Get general info about a running script.\n * @remarks\n * RAM cost: 0.3 GB\n *\n * Running with no args returns current script.\n * If you use a PID as the first parameter, the hostname and args parameters are unnecessary.\n * If hostname is omitted while filename is used as the first parameter, hostname defaults to the server the calling script is running on.\n * Remember that a script is semi-uniquely identified by both its name and its arguments.\n * (You can run multiple copies of scripts with the same arguments, but for the purposes of\n * functions like this that check based on filename, the filename plus arguments forms the key.)\n *\n * @param filename - Optional. Filename or PID of the script.\n * @param hostname - Hostname of target server. Optional, defaults to the server the calling script is running on.\n * @param args - Arguments to specify/identify the script. Optional, when looking for scripts run without arguments.\n * @returns The info about the running script if found, and null otherwise.\n */\n getRunningScript(\n filename?: FilenameOrPID,\n hostname?: string,\n ...args: (string | number | boolean)[]\n ): RunningScript | null;\n\n /**\n * Get cost of purchasing a server.\n * @remarks\n * RAM cost: 0.25 GB\n *\n * Returns the cost to purchase a server with the specified amount of ram.\n *\n * @example\n * ```js\n * const ram = 2 ** 20;\n * const cost = ns.getPurchasedServerCost(ram);\n * ns.tprint(`A purchased server with ${ns.formatRam(ram)} costs ${ns.formatMoney(cost)}`);\n * ```\n * @param ram - Amount of RAM of a potential purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns The cost to purchase a server with the specified amount of ram.\n */\n getPurchasedServerCost(ram: number): number;\n\n /**\n * Purchase a server.\n * @remarks\n * 2.25 GB\n *\n * Purchase a server with the specified hostname and amount of RAM.\n *\n * The hostname argument can be any data type, but it will be converted to a string\n * and have whitespace removed. Anything that resolves to an empty string will cause\n * the function to fail. If there is already a server with the specified hostname,\n * then the function will automatically append a number at the end of the hostname\n * argument value until it finds a unique hostname. For example, if the script calls\n * `purchaseServer(“foo”, 4)` but a server named “foo” already exists, then it will\n * automatically change the hostname to `foo-0`. If there is already a server with the\n * hostname `foo-0`, then it will change the hostname to `foo-1`, and so on.\n *\n * Note that there is a maximum limit to the amount of servers you can purchase.\n *\n * Returns the hostname of the newly purchased server as a string. If the function\n * fails to purchase a server, then it will return an empty string. The function will\n * fail if the arguments passed in are invalid, if the player does not have enough\n * money to purchase the specified server, or if the player has exceeded the maximum\n * amount of servers.\n *\n * @example\n * ```js\n * // Attempt to purchase 5 servers with 64GB of ram each\n * const ram = 64;\n * const prefix = "pserv-";\n * for (i = 0; i < 5; ++i) {\n * ns.purchaseServer(prefix + i, ram);\n * }\n * ```\n * @param hostname - Hostname of the purchased server.\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns The hostname of the newly purchased server.\n */\n purchaseServer(hostname: string, ram: number): string;\n\n /**\n * Get cost of upgrading a purchased server to the given ram.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * @param hostname - Hostname of the server to upgrade.\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns The price to upgrade.\n */\n getPurchasedServerUpgradeCost(hostname: string, ram: number): number;\n\n /**\n * Upgrade a purchased server\'s RAM.\n * @remarks\n * RAM cost: 0.25 GB\n *\n * @param hostname - Hostname of the server to upgrade.\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns True if the upgrade succeeded, and false otherwise.\n */\n upgradePurchasedServer(hostname: string, ram: number): boolean;\n\n /**\n * Rename a purchased server.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param hostname - Current server hostname.\n * @param newName - New server hostname.\n * @returns True if successful, and false otherwise.\n */\n renamePurchasedServer(hostname: string, newName: string): boolean;\n\n /**\n * Delete a purchased server.\n * @remarks\n * 2.25 GB\n *\n * Deletes one of your purchased servers, which is specified by its hostname.\n *\n * The hostname argument can be any data type, but it will be converted to a string.\n * Whitespace is automatically removed from the string. This function will not delete a\n * server that still has scripts running on it.\n *\n * @param host - Hostname of the server to delete.\n * @returns True if successful, and false otherwise.\n */\n deleteServer(host: string): boolean;\n\n /**\n * Returns an array with the hostnames of all of the servers you have purchased.\n *\n * @remarks 2.25 GB\n * @returns Returns an array with the hostnames of all of the servers you have purchased.\n */\n getPurchasedServers(): string[];\n\n /**\n * Returns the maximum number of servers you can purchase.\n *\n * @remarks RAM cost: 0.05 GB\n * @returns Returns the maximum number of servers you can purchase.\n */\n getPurchasedServerLimit(): number;\n\n /**\n * Returns the maximum RAM that a purchased server can have.\n *\n * @remarks RAM cost: 0.05 GB\n * @returns Returns the maximum RAM (in GB) that a purchased server can have.\n */\n getPurchasedServerMaxRam(): number;\n\n /**\n * Write data to a file.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function can be used to write data to a text file (.txt) or a script (.js or .script).\n *\n * This function will write data to that file. If the specified file does not exist,\n * then it will be created. The third argument mode defines how the data will be written to\n * the file. If mode is set to “w”, then the data is written in “write” mode which means\n * that it will overwrite all existing data on the file. If mode is set to any other value\n * then the data will be written in “append” mode which means that the data will be added at the\n * end of the file.\n *\n * @param filename - Name of the file to be written to.\n * @param data - Data to write.\n * @param mode - Defines the write mode.\n */\n write(filename: string, data?: string, mode?: "w" | "a"): void;\n\n /**\n * Attempt to write to a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Attempts to write data to the specified Netscript port.\n * If the port is full, the data will not be written.\n * Otherwise, the data will be written normally.\n *\n * @param portNumber - Port to attempt to write to to. Must be a positive integer.\n * @param data - Data to write.\n * @returns True if the data is successfully written to the port, and false otherwise.\n */\n tryWritePort(portNumber: number, data: string | number): boolean;\n\n /**\n * Read content of a file.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is used to read data from a text file (.txt) or script (.js or .script).\n *\n * This function will return the data in the specified file.\n * If the file does not exist, an empty string will be returned.\n *\n * @param filename - Name of the file to be read.\n * @returns Data in the specified text file.\n */\n read(filename: string): string;\n\n /**\n * Get a copy of the data from a port without popping it.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is used to peek at the data from a port. It returns the\n * first element in the specified port without removing that element. If\n * the port is empty, the string “NULL PORT DATA” will be returned.\n *\n * @param portNumber - Port to peek. Must be a positive integer.\n * @returns Data in the specified port.\n */\n peek(portNumber: number): PortData;\n\n /**\n * Clear data from a file.\n * @remarks\n * RAM cost: 0 GB\n *\n * Delete all data from that text file.\n *\n * @param handle - Text file to clear.\n */\n clear(handle: string): void;\n\n /**\n * Clear data from a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Delete all data from the underlying queue.\n *\n * @param portNumber - Port to clear data from. Must be a positive integer.\n */\n clearPort(portNumber: number): void;\n\n /**\n * Write data to a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Write data to the given Netscript port.\n * @param portNumber - Port to write to. Must be a positive integer.\n * @returns The data popped off the queue if it was full, or null if it was not full.\n */\n writePort(portNumber: number, data: string | number): PortData | null;\n /**\n * Read data from a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Read data from that port. A port is a serialized queue.\n * This function will remove the first element from that queue and return it.\n * If the queue is empty, then the string “NULL PORT DATA” will be returned.\n * @param portNumber - Port to read from. Must be a positive integer.\n * @returns The data read.\n */\n readPort(portNumber: number): PortData;\n\n /**\n * Get all data on a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Get a handle to a Netscript Port.\n *\n * WARNING: Port Handles only work in NetscriptJS (Netscript 2.0). They will not work in Netscript 1.0.\n *\n * @param portNumber - Port number. Must be a positive integer.\n */\n getPortHandle(portNumber: number): NetscriptPort;\n\n /**\n * Delete a file.\n * @remarks\n * RAM cost: 1 GB\n *\n * Removes the specified file from the current server. This function works for every file\n * type except message (.msg) files.\n *\n * @param name - Filename of file to remove. Must include the extension.\n * @param host - Hostname of the server on which to delete the file. Optional. Defaults to current server.\n * @returns True if it successfully deletes the file, and false otherwise.\n */\n rm(name: string, host?: string): boolean;\n\n /**\n * Check if any script with a filename is running.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns a boolean indicating whether any instance of the specified script is running\n * on the target server, regardless of its arguments.\n *\n * This is different than the {@link NS.isRunning | isRunning} function because it does not try to\n * identify a specific instance of a running script by its arguments.\n *\n * @example\n * ```js\n * //The function call will return true if there is any script named foo.js running on the foodnstuff server, and false otherwise:\n * ns.scriptRunning("foo.js", "foodnstuff");\n *\n * //The function call will return true if there is any script named “foo.js” running on the current server, and false otherwise:\n * ns.scriptRunning("foo.js", ns.getHostname());\n * ```\n * @param script - Filename of script to check. This is case-sensitive.\n * @param host - Hostname of target server.\n * @returns True if the specified script is running, and false otherwise.\n */\n scriptRunning(script: string, host: string): boolean;\n\n /**\n * Kill all scripts with a filename.\n * @remarks\n * RAM cost: 1 GB\n *\n * Kills all scripts with the specified filename on the target server specified by hostname,\n * regardless of arguments.\n *\n * @param script - Filename of script to kill. This is case-sensitive.\n * @param host - Hostname of target server.\n * @returns True if one or more scripts were successfully killed, and false if none were.\n */\n scriptKill(script: string, host: string): boolean;\n\n /**\n * Returns the current script name.\n *\n * @remarks RAM cost: 0 GB\n * @returns Current script name.\n */\n getScriptName(): string;\n\n /**\n * Get the ram cost of a script.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of RAM required to run the specified script on the target server.\n * Returns 0 if the script does not exist.\n *\n * @param script - Filename of script. This is case-sensitive.\n * @param host - Hostname of target server the script is located on. This is optional. If it is not specified then the function will use the current server as the target server.\n * @returns Amount of RAM (in GB) required to run the specified script on the target server, and 0 if the script does not exist.\n */\n getScriptRam(script: string, host?: string): number;\n\n /**\n * Get the execution time of a hack() call.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * When `hack` completes an amount of money is stolen depending on the player\'s skills.\n * Returns the amount of time in milliseconds it takes to execute the {@link NS.hack | hack} Netscript function on the target server.\n * The required time is increased by the security level of the target server and decreased by the player\'s hacking level.\n *\n * @param host - Hostname of target server.\n * @returns Returns the amount of time in milliseconds it takes to execute the {@link NS.hack | hack} Netscript function.\n */\n getHackTime(host: string): number;\n\n /**\n * Get the execution time of a grow() call.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Returns the amount of time in milliseconds it takes to execute the grow Netscript function on the target server.\n * The required time is increased by the security level of the target server and decreased by the player\'s hacking level.\n *\n * @param host - Hostname of target server.\n * @returns Returns the amount of time in milliseconds it takes to execute the grow Netscript function.\n */\n getGrowTime(host: string): number;\n\n /**\n * Get the execution time of a weaken() call.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Returns the amount of time in milliseconds it takes to execute the {@link NS.weaken | weaken} Netscript function on the target server.\n * The required time is increased by the security level of the target server and decreased by the player\'s hacking level.\n *\n * @param host - Hostname of target server.\n * @returns Returns the amount of time in milliseconds it takes to execute the {@link NS.weaken | weaken} Netscript function.\n */\n getWeakenTime(host: string): number;\n\n /**\n * Get the income of all scripts.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * @returns An array of two values.\n * The first value is the total income (dollar / second) of all of your active scripts\n * (scripts that are currently running on any server).\n * The second value is the total income (dollar / second) that you’ve earned from scripts\n * since you last installed Augmentations.\n */\n getTotalScriptIncome(): [number, number];\n\n /**\n * Get the income of a script.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of income the specified script generates while online\n * (when the game is open, does not apply for offline income). Remember that\n * a script is uniquely identified by both its name and its arguments. So for\n * example if you ran a script with the arguments “foodnstuff” and “5” then\n * in order to use this function to get that script’s income you must specify\n * those same arguments in the same order in this function call.\n *\n * @param script - Filename of script.\n * @param host - Server on which script is running.\n * @param args - Arguments that the script is running with.\n * @returns Amount of income the specified script generates while online.\n */\n getScriptIncome(script: string, host: string, ...args: (string | number | boolean)[]): number;\n\n /**\n * Get the exp gain of all scripts.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * @returns Total experience gain rate of all of your active scripts.\n */\n getTotalScriptExpGain(): number;\n\n /**\n * Get the exp gain of a script.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of hacking experience the specified script generates while online\n * (when the game is open, does not apply for offline experience gains). Remember that a\n * script is uniquely identified by both its name and its arguments.\n *\n * This function can also return the total experience gain rate of all of your active\n * scripts by running the function with no arguments.\n *\n * @param script - Filename of script.\n * @param host - Server on which script is running.\n * @param args - Arguments that the script is running with.\n * @returns Amount of hacking experience the specified script generates while online.\n */\n getScriptExpGain(script: string, host: string, ...args: (string | number | boolean)[]): number;\n\n /**\n * Returns the amount of time in milliseconds that have passed since you last installed Augmentations.\n *\n * @remarks RAM cost: 0.05 GB\n * @returns Time in milliseconds that have passed since you last installed Augmentations.\n */\n getTimeSinceLastAug(): number;\n\n /**\n * Format a string.\n *\n * @remarks\n * RAM cost: 0 GB\n *\n * see: https://github.com/alexei/sprintf.js\n * @param format - String to format.\n * @param args - Formatting arguments.\n * @returns Formatted text.\n */\n sprintf(format: string, ...args: any[]): string;\n\n /**\n * Format a string with an array of arguments.\n * @remarks\n * RAM cost: 0 GB\n *\n * see: https://github.com/alexei/sprintf.js\n * @param format - String to format.\n * @param args - Formatting arguments.\n * @returns Formatted text.\n */\n vsprintf(format: string, args: any[]): string;\n\n /**\n * Format a number.\n * @remarks\n * RAM cost: 0 GB\n *\n * Converts a number into a numeric string with the specified format options.\n * This is the same function that the game itself uses to display numbers. The format also depends on the Numeric\n * Display settings (all options on the "Numeric Display" options page)\n * To format ram or percentages, see {@link NS.formatRam | formatRam} and {@link NS.formatPercent | formatPercent}\n *\n * @param n - Number to format.\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 3.\n * @param suffixStart - How high a number must be before a suffix will be added. Optional, defaults to 1000.\n * @param isInteger - Whether the number represents an integer. Integers do not display fractional digits until a suffix is present. Optional, defaults to false.\n * @returns Formatted number.\n */\n formatNumber(n: number, fractionalDigits?: number, suffixStart?: number, isInteger?: boolean): string;\n\n /**\n * Format a number as an amount of ram.\n * @remarks\n * RAM cost: 0 GB\n *\n * Converts a number into a ram string with the specified number of fractional digits.\n * This is the same function that the game itself uses to display ram. The format also depends on the Numeric Display\n * settings (all options on the "Numeric Display" options page)\n * To format plain numbers or percentages, see {@link NS.formatNumber | formatNumber} and {@link NS.formatPercent | formatPercent}\n *\n * @param n - Number to format as an amount of ram, in base units of GB (or GiB if that Numeric Display option is set).\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 2.\n * @returns Formatted ram amount.\n */\n formatRam(n: number, fractionalDigits?: number): string;\n\n /**\n * Format a number as a percentage.\n * @remarks\n * RAM cost: 0 GB\n *\n * Converts a number into a percentage string with the specified number of fractional digits.\n * This is the same function that the game itself uses to display percentages. The format also depends on the Numeric\n * Display settings (all options on the "Numeric Display" options page)\n * To format plain numbers or ram, see {@link NS.formatNumber | formatNumber} and {@link NS.formatRam | formatRam}\n *\n * @param n - Number to format as a percentage.\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 2.\n * @param suffixStart - When to switch the percentage to a multiplier. Default is 1e6 or x1.00m.\n * @returns Formatted percentage.\n */\n formatPercent(n: number, fractionalDigits?: number, multStart?: number): string;\n\n /**\n * Format a number using the numeral library. This function is deprecated and will be removed in 2.4.\n * @deprecated Use ns.formatNumber, formatRam, or formatPercent instead. Will be removed in 2.4.\n * @remarks\n * RAM cost: 0 GB\n *\n * Converts a number into a string with the specified format options.\n * See http://numeraljs.com/#format for documentation on format strings supported.\n *\n * This function is deprecated and will be removed in 2.3.\n *\n * @param n - Number to format.\n * @param format - Formatting options. See http://numeraljs.com/#format for valid formats.\n * @returns Formatted number.\n */\n nFormat(n: number, format: string): string;\n\n /**\n * Format time to a readable string.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param milliseconds - Number of millisecond to format.\n * @param milliPrecision - Format time with subsecond precision. Defaults to false.\n * @returns The formatted time.\n */\n tFormat(milliseconds: number, milliPrecision?: boolean): string;\n\n /**\n * Prompt the player with an input modal.\n * @remarks\n * RAM cost: 0 GB\n *\n * Prompts the player with a dialog box. Here is an explanation of the various options.\n *\n * - `options.type` is not provided to the function. If `options.type` is left out and\n * only a string is passed to the function, then the default behavior is to create a\n * boolean dialog box.\n *\n * - `options.type` has value `undefined` or `"boolean"`. A boolean dialog box is\n * created. The player is shown "Yes" and "No" prompts, which return true and false\n * respectively. The script\'s execution is halted until the player presses either the\n * "Yes" or "No" button.\n *\n * - `options.type` has value `"text"`. The player is given a text field to enter\n * free-form text. The script\'s execution is halted until the player enters some text\n * and/or presses the "Confirm" button.\n *\n * - `options.type` has value `"select"`. The player is shown a drop-down field.\n * Choosing type `"select"` will require an array to be passed via the\n * `options.choices` property. The array can be an array of strings, an array of\n * numbers (not BigInt numbers), or a mixture of both numbers and strings. Any other\n * types of array elements will result in an error or an undefined/unexpected\n * behavior. The `options.choices` property will be ignored if `options.type` has a\n * value other than `"select"`. The script\'s execution is halted until the player\n * chooses one of the provided options and presses the "Confirm" button.\n *\n * @example\n * ```js\n * // A Yes/No question. The default is to create a boolean dialog box.\n * const queryA = "Do you enjoy Bitburner?";\n * const resultA = await ns.prompt(queryA);\n * ns.tprint(`${queryA} ${resultA}`);\n *\n * // Another Yes/No question. Can also create a boolean dialog box by explicitly\n * // passing the option {"type": "boolean"}.\n * const queryB = "Is programming fun?";\n * const resultB = await ns.prompt(queryB, { type: "boolean" });\n * ns.tprint(`${queryB} ${resultB}`);\n *\n * // Free-form text box.\n * const resultC = await ns.prompt("Please enter your name.", { type: "text" });\n * ns.tprint(`Hello, ${resultC}.`);\n *\n * // A drop-down list.\n * const resultD = await ns.prompt("Please select your favorite fruit.", {\n * type: "select",\n * choices: ["Apple", "Banana", "Orange", "Pear", "Strawberry"]\n * });\n * ns.tprint(`Your favorite fruit is ${resultD.toLowerCase()}.`);\n * ```\n *\n * @param txt - Text to appear in the prompt dialog box.\n * @param options - Options to modify the prompt the player is shown.\n * @returns True if the player clicks “Yes”; false if the player clicks “No”; or the value entered by the player.\n */\n prompt(\n txt: string,\n options?: { type?: "boolean" | "text" | "select"; choices?: string[] },\n ): Promise;\n\n /**\n * Open up a message box.\n * @param msg - Message to alert.\n */\n alert(msg: string): void;\n\n /**\n * Queue a toast (bottom-right notification).\n * @param msg - Message in the toast.\n * @param variant - Type of toast. Must be one of success, info, warning, error. Defaults to success.\n * @param duration - Duration of toast in ms. Can also be `null` to create a persistent toast. Defaults to 2000.\n */\n toast(msg: string, variant?: ToastVariant | `${ToastVariant}`, duration?: number | null): void;\n\n /**\n * Download a file from the internet.\n * @remarks\n * RAM cost: 0 GB\n *\n * Retrieves data from a URL and downloads it to a file on the specified server.\n * The data can only be downloaded to a script (.js or .script) or a text file (.txt).\n * If the file already exists, it will be overwritten by this command.\n * Note that it will not be possible to download data from many websites because they\n * do not allow cross-origin resource sharing (CORS).\n *\n * IMPORTANT: This is an asynchronous function that returns a Promise.\n * The Promise’s resolved value will be a boolean indicating whether or not the data was\n * successfully retrieved from the URL. Because the function is async and returns a Promise,\n * it is recommended you use wget in NetscriptJS (Netscript 2.0).\n *\n * In NetscriptJS, you must preface any call to wget with the await keyword (like you would {@link NS.hack | hack} or {@link NS.sleep | sleep}).\n * wget will still work in Netscript 1.0, but the function\'s execution will not be synchronous\n * (i.e. it may not execute when you expect/want it to).\n * Furthermore, since Promises are not supported in ES5,\n * you will not be able to process the returned value of wget in Netscript 1.0.\n *\n * @example\n * ```js\n * await ns.wget("https://raw.githubusercontent.com/bitburner-official/bitburner-src/master/README.md", "game_readme.txt");\n * ```\n * @param url - URL to pull data from.\n * @param target - Filename to write data to. Must be script or text file.\n * @param host - Optional hostname/ip of server for target file.\n * @returns True if the data was successfully retrieved from the URL, false otherwise.\n */\n wget(url: string, target: string, host?: string): Promise;\n\n /**\n * Returns the amount of Faction favor required to be able to donate to a faction.\n *\n * @remarks RAM cost: 0.1 GB\n * @returns Amount of Faction favor required to be able to donate to a faction.\n */\n getFavorToDonate(): number;\n\n /**\n * Get the current Bitnode multipliers.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns an object containing the current (or supplied) BitNode multipliers.\n * This function requires you to be in Bitnode 5 or have Source-File 5 in order to run.\n * The multipliers are returned in decimal forms (e.g. 1.5 instead of 150%).\n * The multipliers represent the difference between the current BitNode and\n * the original BitNode (BitNode-1).\n *\n * For example, if the CrimeMoney multiplier has a value of 0.1, then that means\n * that committing crimes in the current BitNode will only give 10% of the money\n * you would have received in BitNode-1.\n *\n * @example\n * ```js\n * const mults = ns.getBitNodeMultipliers();\n * ns.tprint(`ServerMaxMoney: ${mults.ServerMaxMoney}`);\n * ns.tprint(`HackExpGain: ${mults.HackExpGain}`);\n * ```\n * @returns Object containing the current BitNode multipliers.\n */\n getBitNodeMultipliers(n?: number, lvl?: number): BitNodeMultipliers;\n\n /**\n * Get information about the player.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Returns an object with information on the current player.\n *\n * @returns Player info\n */\n getPlayer(): Player;\n\n /**\n * Get information about the sources of income for this run.\n * @remarks\n * RAM cost: 1.0 GB\n *\n * Returns an object with information on the income sources for this run\n *\n * @returns Money sources\n */\n getMoneySources(): MoneySources;\n\n /**\n * Add callback function when the script dies\n * @remarks\n * RAM cost: 0 GB\n *\n * NS2 exclusive\n *\n * Add callback to be executed when the script dies.\n */\n atExit(f: () => void): void;\n\n /**\n * Move a file on the target server.\n * @remarks\n * RAM cost: 0 GB\n *\n * Move the source file to the specified destination on the target server.\n *\n * This command only works for scripts and text files (.txt). It cannot, however, be used\n * to convert from script to text file, or vice versa.\n *\n * This function can also be used to rename files.\n *\n * @param host - Hostname of target server.\n * @param source - Filename of the source file.\n * @param destination - Filename of the destination file.\n */\n mv(host: string, source: string, destination: string): void;\n\n /** Get information about resets.\n * @remarks\n * RAM cost: 1 GB\n *\n * @example\n * ```js\n * const resetInfo = ns.getResetInfo();\n * const lastAugReset = resetInfo.lastAugReset;\n * ns.tprint(`The last augmentation reset was: ${new Date(lastAugReset)}`);\n * ns.tprint(`It has been ${Date.now() - lastAugReset}ms since the last augmentation reset.`);\n * ```\n * */\n getResetInfo(): ResetInfo;\n\n /**\n * Get the ram cost of a netscript function.\n *\n * @remarks\n * RAM cost: 0 GB\n *\n * @param name - The fully-qualified function name, without the leading `ns`. Example inputs: `hack`, `tprint`, `stock.getPosition`.\n */\n getFunctionRamCost(name: string): number;\n\n /**\n * Parse command line flags.\n * @remarks\n * RAM cost: 0 GB\n *\n * Allows Unix-like flag parsing.\n * @example\n * ```js\n * export async function main(ns) {\n * const data = ns.flags([\n * [\'delay\', 0], // a default number means this flag is a number\n * [\'server\', \'foodnstuff\'], // a default string means this flag is a string\n * [\'exclude\', []], // a default array means this flag is a default array of string\n * [\'help\', false], // a default boolean means this flag is a boolean\n * ]);\n * ns.tprint(data);\n * }\n *\n * // [home ~/]> run example.js\n * // {"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":false}\n * // [home ~/]> run example.js --delay 3000\n * // {"_":[],"server":"foodnstuff","exclude":[],"help":false,"delay":3000}\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi\n * // {"_":[],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi hello world\n * // {"_":["hello","world"],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b\n * // {"_":["hello","world"],"help":false,"delay":3000,"server":"harakiri-sushi","exclude":["a","b"]}\n * // [home ~/]> run example.script --help\n * // {"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":true}\n * ```\n */\n flags(schema: [string, string | number | boolean | string[]][]): { [key: string]: ScriptArg | string[] };\n\n /**\n * Share the server\'s ram with your factions.\n * @remarks\n * RAM cost: 2.4 GB\n *\n * Increases rep/second for all faction work while share is running. Each cycle of ns.share() is 10 seconds.\n * Scales with thread count, but at a sharply decreasing rate.\n */\n share(): Promise;\n\n /**\n * Share Power has a multiplicative effect on rep/second while doing work for a faction.\n * Share Power increases incrementally for every thread of share running on your server network, but at a sharply decreasing rate.\n * @remarks\n * RAM cost: 0.2 GB\n */\n getSharePower(): number;\n\n enums: NSEnums;\n}\n\n// BASE ENUMS\n/** @public */\ndeclare enum ToastVariant {\n SUCCESS = "success",\n WARNING = "warning",\n ERROR = "error",\n INFO = "info",\n}\n\n/** @public */\ndeclare enum CrimeType {\n shoplift = "Shoplift",\n robStore = "Rob Store",\n mug = "Mug",\n larceny = "Larceny",\n dealDrugs = "Deal Drugs",\n bondForgery = "Bond Forgery",\n traffickArms = "Traffick Arms",\n homicide = "Homicide",\n grandTheftAuto = "Grand Theft Auto",\n kidnap = "Kidnap",\n assassination = "Assassination",\n heist = "Heist",\n}\n\n/** @public */\ndeclare enum FactionWorkType {\n hacking = "hacking",\n field = "field",\n security = "security",\n}\n\n/** @public */\ndeclare enum UniversityClassType {\n computerScience = "Computer Science",\n dataStructures = "Data Structures",\n networks = "Networks",\n algorithms = "Algorithms",\n management = "Management",\n leadership = "Leadership",\n}\n\n/** @public */\ndeclare enum GymType {\n strength = "str",\n defense = "def",\n dexterity = "dex",\n agility = "agi",\n}\n\n/** @public */\ndeclare enum JobName {\n software0 = "Software Engineering Intern",\n software1 = "Junior Software Engineer",\n software2 = "Senior Software Engineer",\n software3 = "Lead Software Developer",\n software4 = "Head of Software",\n software5 = "Head of Engineering",\n software6 = "Vice President of Technology",\n software7 = "Chief Technology Officer",\n IT0 = "IT Intern",\n IT1 = "IT Analyst",\n IT2 = "IT Manager",\n IT3 = "Systems Administrator",\n securityEng = "Security Engineer",\n networkEng0 = "Network Engineer",\n networkEng1 = "Network Administrator",\n business0 = "Business Intern",\n business1 = "Business Analyst",\n business2 = "Business Manager",\n business3 = "Operations Manager",\n business4 = "Chief Financial Officer",\n business5 = "Chief Executive Officer",\n security0 = "Security Guard",\n security1 = "Security Officer",\n security2 = "Security Supervisor",\n security3 = "Head of Security",\n agent0 = "Field Agent",\n agent1 = "Secret Agent",\n agent2 = "Special Operative",\n waiter = "Waiter",\n employee = "Employee",\n softwareConsult0 = "Software Consultant",\n softwareConsult1 = "Senior Software Consultant",\n businessConsult0 = "Business Consultant",\n businessConsult1 = "Senior Business Consultant",\n waiterPT = "Part-time Waiter",\n employeePT = "Part-time Employee",\n}\n\n// CORP ENUMS - Changed to types\n/** @public */\ntype CorpEmployeePosition =\n | "Operations"\n | "Engineer"\n | "Business"\n | "Management"\n | "Research & Development"\n | "Intern"\n | "Unassigned";\n\n/** @public */\ntype CorpIndustryName =\n | "Spring Water"\n | "Water Utilities"\n | "Agriculture"\n | "Fishing"\n | "Mining"\n | "Refinery"\n | "Restaurant"\n | "Tobacco"\n | "Chemical"\n | "Pharmaceutical"\n | "Computer Hardware"\n | "Robotics"\n | "Software"\n | "Healthcare"\n | "Real Estate";\n\n/** @public */\ntype CorpSmartSupplyOption = "leftovers" | "imports" | "none";\n\n/** Names of all cities\n * @public */\ndeclare enum CityName {\n Aevum = "Aevum",\n Chongqing = "Chongqing",\n Sector12 = "Sector-12",\n NewTokyo = "New Tokyo",\n Ishima = "Ishima",\n Volhaven = "Volhaven",\n}\n\n/** Names of all locations\n * @public */\ndeclare enum LocationName {\n AevumAeroCorp = "AeroCorp",\n AevumBachmanAndAssociates = "Bachman & Associates",\n AevumClarkeIncorporated = "Clarke Incorporated",\n AevumCrushFitnessGym = "Crush Fitness Gym",\n AevumECorp = "ECorp",\n AevumFulcrumTechnologies = "Fulcrum Technologies",\n AevumGalacticCybersystems = "Galactic Cybersystems",\n AevumNetLinkTechnologies = "NetLink Technologies",\n AevumPolice = "Aevum Police Headquarters",\n AevumRhoConstruction = "Rho Construction",\n AevumSnapFitnessGym = "Snap Fitness Gym",\n AevumSummitUniversity = "Summit University",\n AevumWatchdogSecurity = "Watchdog Security",\n AevumCasino = "Iker Molina Casino",\n\n ChongqingKuaiGongInternational = "KuaiGong International",\n ChongqingSolarisSpaceSystems = "Solaris Space Systems",\n ChongqingChurchOfTheMachineGod = "Church of the Machine God",\n\n Sector12AlphaEnterprises = "Alpha Enterprises",\n Sector12BladeIndustries = "Blade Industries",\n Sector12CIA = "Central Intelligence Agency",\n Sector12CarmichaelSecurity = "Carmichael Security",\n Sector12CityHall = "Sector-12 City Hall",\n Sector12DeltaOne = "DeltaOne",\n Sector12FoodNStuff = "FoodNStuff",\n Sector12FourSigma = "Four Sigma",\n Sector12IcarusMicrosystems = "Icarus Microsystems",\n Sector12IronGym = "Iron Gym",\n Sector12JoesGuns = "Joe\'s Guns",\n Sector12MegaCorp = "MegaCorp",\n Sector12NSA = "National Security Agency",\n Sector12PowerhouseGym = "Powerhouse Gym",\n Sector12RothmanUniversity = "Rothman University",\n Sector12UniversalEnergy = "Universal Energy",\n\n NewTokyoDefComm = "DefComm",\n NewTokyoGlobalPharmaceuticals = "Global Pharmaceuticals",\n NewTokyoNoodleBar = "Noodle Bar",\n NewTokyoVitaLife = "VitaLife",\n NewTokyoArcade = "Arcade",\n\n IshimaNovaMedical = "Nova Medical",\n IshimaOmegaSoftware = "Omega Software",\n IshimaStormTechnologies = "Storm Technologies",\n IshimaGlitch = "0x6C1",\n\n VolhavenCompuTek = "CompuTek",\n VolhavenHeliosLabs = "Helios Labs",\n VolhavenLexoCorp = "LexoCorp",\n VolhavenMilleniumFitnessGym = "Millenium Fitness Gym",\n VolhavenNWO = "NWO",\n VolhavenOmniTekIncorporated = "OmniTek Incorporated",\n VolhavenOmniaCybersystems = "Omnia Cybersystems",\n VolhavenSysCoreSecurities = "SysCore Securities",\n VolhavenZBInstituteOfTechnology = "ZB Institute of Technology",\n\n Hospital = "Hospital",\n Slums = "The Slums",\n TravelAgency = "Travel Agency",\n WorldStockExchange = "World Stock Exchange",\n\n Void = "The Void",\n}\n\n/** Names of all companies\n * @public */\ndeclare enum CompanyName {\n ECorp = "ECorp",\n MegaCorp = "MegaCorp",\n BachmanAndAssociates = "Bachman & Associates",\n BladeIndustries = "Blade Industries",\n NWO = "NWO",\n ClarkeIncorporated = "Clarke Incorporated",\n OmniTekIncorporated = "OmniTek Incorporated",\n FourSigma = "Four Sigma",\n KuaiGongInternational = "KuaiGong International",\n FulcrumTechnologies = "Fulcrum Technologies",\n StormTechnologies = "Storm Technologies",\n DefComm = "DefComm",\n HeliosLabs = "Helios Labs",\n VitaLife = "VitaLife",\n IcarusMicrosystems = "Icarus Microsystems",\n UniversalEnergy = "Universal Energy",\n GalacticCybersystems = "Galactic Cybersystems",\n AeroCorp = "AeroCorp",\n OmniaCybersystems = "Omnia Cybersystems",\n SolarisSpaceSystems = "Solaris Space Systems",\n DeltaOne = "DeltaOne",\n GlobalPharmaceuticals = "Global Pharmaceuticals",\n NovaMedical = "Nova Medical",\n CIA = "Central Intelligence Agency",\n NSA = "National Security Agency",\n WatchdogSecurity = "Watchdog Security",\n LexoCorp = "LexoCorp",\n RhoConstruction = "Rho Construction",\n AlphaEnterprises = "Alpha Enterprises",\n Police = "Aevum Police Headquarters",\n SysCoreSecurities = "SysCore Securities",\n CompuTek = "CompuTek",\n NetLinkTechnologies = "NetLink Technologies",\n CarmichaelSecurity = "Carmichael Security",\n FoodNStuff = "FoodNStuff",\n JoesGuns = "Joe\'s Guns",\n OmegaSoftware = "Omega Software",\n NoodleBar = "Noodle Bar",\n}\n\n/** @public */\nexport type NSEnums = {\n CityName: typeof CityName;\n CrimeType: typeof CrimeType;\n FactionWorkType: typeof FactionWorkType;\n GymType: typeof GymType;\n JobName: typeof JobName;\n LocationName: typeof LocationName;\n ToastVariant: typeof ToastVariant;\n UniversityClassType: typeof UniversityClassType;\n CompanyName: typeof CompanyName;\n};\n\n/**\n * Corporation Office API\n * @remarks\n * requires the Office API upgrade from your corporation.\n * @public\n */\n\nexport interface OfficeAPI {\n /**\n * Hire an employee.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param employeePosition - Position to place into. Defaults to "Unassigned".\n * @returns True if an employee was hired, false otherwise\n */\n hireEmployee(divisionName: string, city: CityName | `${CityName}`, employeePosition?: CorpEmployeePosition): boolean;\n /**\n * Upgrade office size.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param size - Amount of positions to open\n */\n upgradeOfficeSize(divisionName: string, city: CityName | `${CityName}`, size: number): void;\n /**\n * Throw a party for your employees\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param costPerEmployee - Amount to spend per employee.\n * @returns Multiplier for morale, or zero on failure\n */\n throwParty(divisionName: string, city: CityName | `${CityName}`, costPerEmployee: number): number;\n /**\n * Buy tea for your employees\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @returns true if buying tea was successful, false otherwise\n */\n buyTea(divisionName: string, city: CityName | `${CityName}`): boolean;\n /**\n * Hire AdVert.\n * @param divisionName - Name of the division\n */\n hireAdVert(divisionName: string): void;\n /**\n * Purchase a research\n * @param divisionName - Name of the division\n * @param researchName - Name of the research\n */\n research(divisionName: string, researchName: string): void;\n /**\n * Get data about an office\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @returns Office data\n */\n getOffice(divisionName: string, city: CityName | `${CityName}`): Office;\n /**\n * Get the cost to hire AdVert.\n * @param divisionName - Name of the division.\n * @returns The cost to hire AdVert.\n */\n getHireAdVertCost(divisionName: string): number;\n /**\n * Get the number of times you have hired AdVert.\n * @param divisionName - Name of the division.\n * @returns Number of times you have hired AdVert.\n */\n getHireAdVertCount(divisionName: string): number;\n /**\n * Get the cost to unlock research\n * @param divisionName - Name of the division\n * @param researchName - Name of the research\n * @returns cost\n */\n getResearchCost(divisionName: string, researchName: string): number;\n /**\n * Gets if you have unlocked a research\n * @param divisionName - Name of the division\n * @param researchName - Name of the research\n * @returns true is unlocked, false if not\n */\n hasResearched(divisionName: string, researchName: string): boolean;\n /**\n * Set the auto job assignment for a job\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param job - Name of the job\n * @param amount - Number of employees to assign to that job\n * @returns true if the employee count reached the target amount, false if not\n */\n setAutoJobAssignment(divisionName: string, city: CityName | `${CityName}`, job: string, amount: number): boolean;\n /**\n * Cost to Upgrade office size.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param size - Amount of positions to open\n * @returns Cost of upgrading the office\n */\n getOfficeSizeUpgradeCost(divisionName: string, city: CityName | `${CityName}`, asize: number): number;\n}\n\n/**\n * Corporation Warehouse API\n * @remarks\n * Requires the Warehouse API upgrade from your corporation.\n * @public\n */\nexport interface WarehouseAPI {\n /**\n * Set material sell data.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param amt - Amount to sell, can be "MAX"\n * @param price - Price to sell, can be "MP"\n */\n sellMaterial(\n divisionName: string,\n city: CityName | `${CityName}`,\n materialName: string,\n amt: string,\n price: string,\n ): void;\n /**\n * Set product sell data.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param productName - Name of the product\n * @param amt - Amount to sell, can be "MAX"\n * @param price - Price to sell, can be "MP"\n * @param all - Set sell amount and price in all cities\n */\n sellProduct(\n divisionName: string,\n city: CityName | `${CityName}`,\n productName: string,\n amt: string,\n price: string,\n all: boolean,\n ): void;\n /**\n * Discontinue a product.\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n */\n discontinueProduct(divisionName: string, productName: string): void;\n /**\n * Set smart supply\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param enabled - smart supply enabled\n */\n setSmartSupply(divisionName: string, city: CityName | `${CityName}`, enabled: boolean): void;\n /**\n * Set whether smart supply uses leftovers before buying\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param option - smart supply option, "leftovers" to use leftovers, "imports" to use only imported materials, "none" to not use materials from store\n */\n setSmartSupplyOption(\n divisionName: string,\n city: CityName | `${CityName}`,\n materialName: string,\n option: CorpSmartSupplyOption,\n ): void;\n /**\n * Set material buy data\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param amt - Amount of material to buy\n */\n buyMaterial(divisionName: string, city: CityName | `${CityName}`, materialName: string, amt: number): void;\n /**\n * Set material to bulk buy\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param amt - Amount of material to buy\n */\n bulkPurchase(divisionName: string, city: CityName | `${CityName}`, materialName: string, amt: number): void;\n\n /** Get warehouse data\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @returns warehouse data */\n getWarehouse(divisionName: string, city: CityName | `${CityName}`): Warehouse;\n\n /** Get product data\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param productName - Name of the product\n * @returns product data */\n getProduct(divisionName: string, cityName: CityName | `${CityName}`, productName: string): Product;\n /**\n * Get material data\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @returns material data\n */\n getMaterial(divisionName: string, city: CityName | `${CityName}`, materialName: string): Material;\n /**\n * Set market TA 1 for a material.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param on - market ta enabled\n */\n setMaterialMarketTA1(divisionName: string, city: CityName | `${CityName}`, materialName: string, on: boolean): void;\n /**\n * Set market TA 2 for a material.\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param materialName - Name of the material\n * @param on - market ta enabled\n */\n setMaterialMarketTA2(divisionName: string, city: CityName | `${CityName}`, materialName: string, on: boolean): void;\n\n /** * Set market TA 1 for a product.\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n * @param on - market ta enabled */\n setProductMarketTA1(divisionName: string, productName: string, on: boolean): void;\n\n /** Set market TA 2 for a product.\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n * @param on - market ta enabled */\n setProductMarketTA2(divisionName: string, productName: string, on: boolean): void;\n /**\n * Set material export data\n * @param sourceDivision - Source division\n * @param sourceCity - Source city\n * @param targetDivision - Target division\n * @param targetCity - Target city\n * @param materialName - Name of the material\n * @param amt - Amount of material to export.\n */\n exportMaterial(\n sourceDivision: string,\n sourceCity: CityName | `${CityName}`,\n targetDivision: string,\n targetCity: CityName | `${CityName}`,\n materialName: string,\n amt: number | string,\n ): void;\n /**\n * Cancel material export\n * @param sourceDivision - Source division\n * @param sourceCity - Source city\n * @param targetDivision - Target division\n * @param targetCity - Target city\n * @param materialName - Name of the material\n */\n cancelExportMaterial(\n sourceDivision: string,\n sourceCity: CityName | `${CityName}`,\n targetDivision: string,\n targetCity: CityName | `${CityName}`,\n materialName: string,\n ): void;\n /**\n * Purchase warehouse for a new city\n * @param divisionName - Name of the division\n * @param city - Name of the city\n */\n purchaseWarehouse(divisionName: string, city: CityName | `${CityName}`): void;\n /**\n * Upgrade warehouse\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param amt - amount of upgrades defaults to 1\n */\n upgradeWarehouse(divisionName: string, city: CityName | `${CityName}`, amt?: number): void;\n /**\n * Create a new product\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param productName - Name of the product\n * @param designInvest - Amount to invest for the design of the product.\n * @param marketingInvest - Amount to invest for the marketing of the product.\n */\n makeProduct(\n divisionName: string,\n city: CityName | `${CityName}`,\n productName: string,\n designInvest: number,\n marketingInvest: number,\n ): void;\n /**\n * Limit Material Production.\n * @param divisionName - Name of the division.\n * @param city - Name of the city.\n * @param materialName - Name of the material.\n * @param qty - Amount to limit to. Pass a negative value to remove the limit instead.\n */\n limitMaterialProduction(\n divisionName: string,\n city: CityName | `${CityName}`,\n materialName: string,\n qty: number,\n ): void;\n /**\n * Limit Product Production.\n * @param divisionName - Name of the division.\n * @param city - Name of the city.\n * @param productName - Name of the product.\n * @param qty - Amount to limit to. Pass a negative value to remove the limit instead.\n */\n limitProductProduction(divisionName: string, city: CityName | `${CityName}`, productName: string, qty: number): void;\n /**\n * Gets the cost to upgrade a warehouse to the next level\n * @param divisionName - Name of the division\n * @param city - Name of the city\n * @param amt - amount of upgrades. Optional, defaults to 1\n * @returns cost to upgrade\n */\n getUpgradeWarehouseCost(divisionName: string, city: CityName | `${CityName}`, amt?: number): number;\n /**\n * Check if you have a warehouse in city\n * @returns true if warehouse is present, false if not\n */\n hasWarehouse(divisionName: string, city: CityName | `${CityName}`): boolean;\n}\n\n/**\n * Corporation API\n * @public\n */\nexport interface Corporation extends WarehouseAPI, OfficeAPI {\n /** Returns whether the player has a corporation. Does not require API access.\n * @returns whether the player has a corporation */\n hasCorporation(): boolean;\n\n /** Create a Corporation\n * @param corporationName - Name of the corporation\n * @param selfFund - If you should self fund, defaults to true, false will only work on Bitnode 3\n * @returns true if created and false if not */\n createCorporation(corporationName: string, selfFund: boolean): boolean;\n\n /** Check if you have a one time unlockable upgrade\n * @param upgradeName - Name of the upgrade\n * @returns true if unlocked and false if not */\n hasUnlock(upgradeName: string): boolean;\n\n /** Gets the cost to unlock a one time unlockable upgrade\n * @param upgradeName - Name of the upgrade\n * @returns cost of the upgrade */\n getUnlockCost(upgradeName: string): number;\n\n /** Get the level of a levelable upgrade\n * @param upgradeName - Name of the upgrade\n * @returns the level of the upgrade */\n getUpgradeLevel(upgradeName: string): number;\n\n /** Gets the cost to unlock the next level of a levelable upgrade\n * @param upgradeName - Name of the upgrade\n * @returns cost of the upgrade */\n getUpgradeLevelCost(upgradeName: string): number;\n\n /** Get an offer for investment based on you companies current valuation\n * @returns An offer of investment */\n getInvestmentOffer(): InvestmentOffer;\n\n /** Get corporation related constants\n * @returns corporation related constants */\n getConstants(): CorpConstants;\n\n /** Get constant industry definition data for a specific industry */\n getIndustryData(industryName: CorpIndustryName): CorpIndustryData;\n\n /** Get constant data for a specific material */\n getMaterialData(materialName: CorpMaterialName): CorpMaterialConstantData;\n\n /** Accept investment based on you companies current valuation\n * @remarks\n * Is based on current valuation and will not honer a specific Offer\n * @returns An offer of investment */\n acceptInvestmentOffer(): boolean;\n\n /** Go public\n * @param numShares - number of shares you would like to issue for your IPO\n * @returns true if you successfully go public, false if not */\n goPublic(numShares: number): boolean;\n\n /** Bribe a faction\n * @param factionName - Faction name\n * @param amountCash - Amount of money to bribe\n * @returns True if successful, false if not */\n bribe(factionName: string, amountCash: number): boolean;\n\n /** Get corporation data\n * @returns Corporation data */\n getCorporation(): CorporationInfo;\n\n /** Get division data\n * @param divisionName - Name of the division\n * @returns Division data */\n getDivision(divisionName: string): Division;\n\n /** Expand to a new industry\n * @param industryType - Name of the industry\n * @param divisionName - Name of the division */\n expandIndustry(industryType: CorpIndustryName, divisionName: string): void;\n\n /** Expand to a new city\n * @param divisionName - Name of the division\n * @param city - Name of the city */\n expandCity(divisionName: string, city: CityName | `${CityName}`): void;\n\n /** Unlock an upgrade\n * @param upgradeName - Name of the upgrade */\n purchaseUnlock(upgradeName: string): void;\n\n /** Level an upgrade.\n * @param upgradeName - Name of the upgrade */\n levelUpgrade(upgradeName: string): void;\n\n /** Issue dividends\n * @param rate - Fraction of profit to issue as dividends. */\n issueDividends(rate: number): void;\n\n /** Issue new shares\n * @param amount - Number of new shares to issue, will be rounded to nearest 10m. Defaults to max amount.\n * @returns Amount of funds generated for the corporation. */\n issueNewShares(amount?: number): number;\n\n /** Buyback Shares.\n * Spend money from the player\'s wallet to transfer shares from public traders to the CEO.\n * @param amount - Amount of shares to buy back, must be integer and larger than 0 */\n buyBackShares(amount: number): void;\n\n /** Sell Shares.\n * Transfer shares from the CEO to public traders to receive money in the player\'s wallet.\n * @param amount - Amount of shares to sell, must be integer between 1 and 100t */\n sellShares(amount: number): void;\n\n /** Get bonus time.\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\n * “Bonus time” makes the game progress faster.\n * @returns Bonus time for the Corporation mechanic in milliseconds. */\n getBonusTime(): number;\n}\n\n/** Product rating information\n * @public */\ninterface CorpProductData {\n /** Name of the product */\n name: string;\n /** Verb used to describe creation of the product */\n verb: string;\n /** Description of product creation */\n desc: string;\n /** Weighting factors for product */\n ratingWeights: {\n aesthetics?: number;\n durability?: number;\n features?: number;\n quality?: number;\n performance?: number;\n reliability?: number;\n };\n}\n\n/** Data for an individual industry\n * @public */\ninterface CorpIndustryData {\n startingCost: number;\n description: string;\n product?: CorpProductData;\n recommendStarting: boolean;\n requiredMaterials: Partial>;\n /** Real estate factor */\n realEstateFactor?: number;\n /** Scientific research factor (affects quality) */\n scienceFactor?: number;\n /** Hardware factor */\n hardwareFactor?: number;\n /** Robots factor */\n robotFactor?: number;\n /** AI Cores factor */\n aiCoreFactor?: number;\n /** Advertising factor (affects sales) */\n advertisingFactor?: number;\n /** Array of Materials produced */\n producedMaterials?: CorpMaterialName[];\n /** Whether the industry of this division is capable of producing materials */\n makesMaterials: boolean;\n /** Whether the industry of this division is capable of developing and producing products */\n makesProducts: boolean;\n}\n\n/**\n * General info about a corporation\n * @public\n */\ninterface CorporationInfo {\n /** Name of the corporation */\n name: string;\n /** Funds available */\n funds: number;\n /** Revenue per second this cycle */\n revenue: number;\n /** Expenses per second this cycle */\n expenses: number;\n /** Indicating if the company is public */\n public: boolean;\n /** Total number of shares issued by this corporation. */\n totalShares: number;\n /** Amount of shares owned by the CEO. */\n numShares: number;\n /** Cooldown until shares can be sold again */\n shareSaleCooldown: number;\n /** Amount of shares owned by private investors. Not available for public sale or CEO buyback. */\n investorShares: number;\n /** Amount of shares owned by public traders. Available for CEO buyback. */\n issuedShares: number;\n /** Cooldown until new shares can be issued */\n issueNewSharesCooldown: number;\n /** Price of the shares */\n sharePrice: number;\n /** Fraction of profits issued as dividends */\n dividendRate: number;\n /** Tax applied on your earnings as a shareholder */\n dividendTax: number;\n /** Your earnings as a shareholder per second this cycle */\n dividendEarnings: number;\n /** The next state to be processed.\n *\n * I.e. when the state is PURCHASE, it means purchasing will occur during the next state transition.\n *\n * Possible states are START, PURCHASE, PRODUCTION, EXPORT, SALE. */\n state: string;\n /** Array of all division names */\n divisions: string[];\n}\n\n/**\n * Corporation related constants\n * @public\n */\ninterface CorpConstants {\n /** Names of all corporation game states */\n stateNames: CorpStateName[];\n /** Names of all employee positions */\n employeePositions: CorpEmployeePosition[];\n /** Names of all industries */\n industryNames: CorpIndustryName[];\n /** Names of all materials */\n materialNames: CorpMaterialName[];\n /** Names of all one-time corporation-wide unlocks */\n unlockNames: CorpUnlockName[];\n /** Names of all corporation-wide upgrades */\n upgradeNames: CorpUpgradeName[];\n /** Names of all researches common to all industries */\n researchNamesBase: CorpResearchName[];\n /** Names of all researches only available to product industries */\n researchNamesProductOnly: CorpResearchName[];\n /** Names of all researches */\n researchNames: CorpResearchName[];\n initialShares: number;\n /** When selling large number of shares, price is dynamically updated for every batch of this amount */\n sharesPerPriceUpdate: number;\n /** Cooldown for issue new shares cooldown in game cycles (1 game cycle = 200ms) */\n issueNewSharesCooldown: number;\n /** Cooldown for selling shares in game cycles (1 game cycle = 200ms) */\n sellSharesCooldown: number;\n teaCostPerEmployee: number;\n gameCyclesPerMarketCycle: number;\n gameCyclesPerCorpStateCycle: number;\n secondsPerMarketCycle: number;\n warehouseInitialCost: number;\n warehouseInitialSize: number;\n warehouseSizeUpgradeCostBase: number;\n officeInitialCost: number;\n officeInitialSize: number;\n officeSizeUpgradeCostBase: number;\n bribeThreshold: number;\n bribeAmountPerReputation: number;\n baseProductProfitMult: number;\n dividendMaxRate: number;\n /** Conversion factor for employee stats to initial salary */\n employeeSalaryMultiplier: number;\n marketCyclesPerEmployeeRaise: number;\n employeeRaiseAmount: number;\n /** Max products for a division without upgrades */\n maxProductsBase: number;\n /** The minimum decay value for morale/energy */\n minEmployeeDecay: number;\n smartSupplyOptions: CorpSmartSupplyOption[];\n}\n/** @public */\ntype CorpStateName = "START" | "PURCHASE" | "PRODUCTION" | "EXPORT" | "SALE";\n\n/** @public */\ntype CorpMaterialName =\n | "Minerals"\n | "Ore"\n | "Water"\n | "Food"\n | "Plants"\n | "Metal"\n | "Hardware"\n | "Chemicals"\n | "Drugs"\n | "Robots"\n | "AI Cores"\n | "Real Estate";\n\n/** @public */\ntype CorpUnlockName =\n | "Export"\n | "Smart Supply"\n | "Market Research - Demand"\n | "Market Data - Competition"\n | "VeChain"\n | "Shady Accounting"\n | "Government Partnership"\n | "Warehouse API"\n | "Office API";\n\n/** @public */\ntype CorpUpgradeName =\n | "Smart Factories"\n | "Smart Storage"\n | "DreamSense"\n | "Wilson Analytics"\n | "Nuoptimal Nootropic Injector Implants"\n | "Speech Processor Implants"\n | "Neural Accelerators"\n | "FocusWires"\n | "ABC SalesBots"\n | "Project Insight";\n\n/** @public */\ntype CorpResearchName =\n | "Hi-Tech R&D Laboratory"\n | "AutoBrew"\n | "AutoPartyManager"\n | "Automatic Drug Administration"\n | "CPH4 Injections"\n | "Drones"\n | "Drones - Assembly"\n | "Drones - Transport"\n | "Go-Juice"\n | "HRBuddy-Recruitment"\n | "HRBuddy-Training"\n | "Market-TA.I"\n | "Market-TA.II"\n | "Overclock"\n | "Self-Correcting Assemblers"\n | "Sti.mu"\n | "uPgrade: Capacity.I"\n | "uPgrade: Capacity.II"\n | "uPgrade: Dashboard"\n | "uPgrade: Fulcrum"\n | "sudo.Assist";\n\n/**\n * Corporation material information\n * @public\n */\ninterface CorpMaterialConstantData {\n /** Name of the material */\n name: string;\n /** Size of the material */\n size: number;\n demandBase: number;\n /** Min and max demand */\n demandRange: [min: number, max: number];\n competitionBase: number;\n competitionRange: [min: number, max: number];\n baseCost: number;\n maxVolatility: number;\n baseMarkup: number;\n}\n\n/**\n * Corporation industry information\n * @public\n */\ninterface IndustryData {\n /** Industry type */\n type: CorpIndustryName;\n /** Cost to make a new division of this industry type */\n cost: number;\n /** Materials required for production and their amounts */\n requiredMaterials: Record;\n /** Materials produced */\n producedMaterials?: string[];\n /** Whether the division makes materials */\n makesMaterials: boolean;\n /** Whether the division makes products */\n makesProducts: boolean;\n /** Product type */\n productType?: string;\n}\n\n/**\n * Product in a warehouse\n * @public\n */\ninterface Product {\n /** Name of the product */\n name: string;\n /** Demand for the product, only present if "Market Research - Demand" unlocked */\n demand: number | undefined;\n /** Competition for the product, only present if "Market Research - Competition" unlocked */\n competition: number | undefined;\n /** Rating based on stats */\n rating: number;\n /** Effective rating in the specific city */\n effectiveRating: number;\n /** Product stats */\n stats: {\n quality: number;\n performance: number;\n durability: number;\n reliability: number;\n aesthetics: number;\n features: number;\n };\n /** Production cost */\n productionCost: number;\n /** Desired sell price, can be "MP+5" */\n desiredSellPrice: string | number;\n /** Desired sell amount, e.g. "PROD/2" */\n desiredSellAmount: string | number;\n /** Amount of product stored in warehouse*/\n stored: number;\n /** Amount of product produced last cycle */\n productionAmount: number;\n /** Amount of product sold last cycle */\n actualSellAmount: number;\n /** A number between 0-100 representing percentage completion */\n developmentProgress: number;\n /** Funds that were spent on advertising the product */\n advertisingInvestment: number;\n /** Funds that were spent on designing the product */\n designInvestment: number;\n}\n\n/**\n * Material in a warehouse\n * @public\n */\ninterface Material {\n /** Name of the material */\n name: CorpMaterialName;\n /** Amount of material */\n stored: number;\n /** Quality of the material */\n quality: number;\n /** Demand for the material, only present if "Market Research - Demand" unlocked */\n demand: number | undefined;\n /** Competition for the material, only present if "Market Research - Competition" unlocked */\n competition: number | undefined;\n /** Amount of material produced last cycle */\n productionAmount: number;\n /** Amount of material sold last cycle */\n actualSellAmount: number;\n /** Cost to buy material */\n marketPrice: number;\n /** Sell cost, can be "MP+5" */\n desiredSellPrice: string | number;\n /** Sell amount, can be "PROD/2" */\n desiredSellAmount: string | number;\n /** Export orders */\n exports: Export[];\n}\n\n/**\n * Export order for a material\n * @public\n */\ninterface Export {\n /** Division the material is being exported to */\n division: string;\n /** City the material is being exported to */\n city: CityName;\n /** Amount of material exported */\n amount: string;\n}\n\n/**\n * Warehouse for a division in a city\n * @public\n */\ninterface Warehouse {\n /** Amount of size upgrade bought */\n level: number;\n /** City in which the warehouse is located */\n city: CityName;\n /** Total space in the warehouse */\n size: number;\n /** Used space in the warehouse */\n sizeUsed: number;\n /** Smart Supply status in the warehouse */\n smartSupplyEnabled: boolean;\n}\n\n/**\n * Office for a division in a city.\n * @public\n */\nexport interface Office {\n /** City of the office */\n city: CityName;\n /** Maximum number of employee */\n size: number;\n /** Maximum amount of energy of the employees */\n maxEnergy: number;\n /** Maximum morale of the employees */\n maxMorale: number;\n /** Amount of employees */\n numEmployees: number;\n /** Average energy of the employees */\n avgEnergy: number;\n /** Average morale of the employees */\n avgMorale: number;\n /** Total experience of all employees */\n totalExperience: number;\n /** Production of the employees */\n employeeProductionByJob: Record;\n /** Positions of the employees */\n employeeJobs: Record;\n}\n\n/**\n * Corporation division\n * @public\n */\ninterface Division {\n /** Name of the division */\n name: string;\n /** Type of division, like Agriculture */\n type: CorpIndustryName;\n /** Awareness of the division */\n awareness: number;\n /** Popularity of the division */\n popularity: number;\n /** Production multiplier */\n productionMult: number;\n /** Amount of research in that division */\n researchPoints: number;\n /** Revenue last cycle */\n lastCycleRevenue: number;\n /** Expenses last cycle */\n lastCycleExpenses: number;\n /** Revenue this cycle */\n thisCycleRevenue: number;\n /** Expenses this cycle */\n thisCycleExpenses: number;\n /** Number of times AdVert has been bought */\n numAdVerts: number;\n /** Cities in which this division has expanded */\n cities: CityName[];\n /** Names of Products developed by this division */\n products: string[];\n /** Whether the industry of this division is capable of developing and producing products */\n makesProducts: boolean;\n /** How many products this division can support */\n maxProducts: number;\n}\n\n/**\n * Corporation investment offer\n * @public\n */\ninterface InvestmentOffer {\n /** Amount of funds you will get from this investment */\n funds: number;\n /** Amount of share you will give in exchange for this investment */\n shares: number;\n /** Current round of funding (max 4) */\n round: number;\n}\n\n/**\n * Interface Theme\n * @public\n */\ninterface UserInterfaceTheme {\n [key: string]: string | undefined;\n primarylight: string;\n primary: string;\n primarydark: string;\n successlight: string;\n success: string;\n successdark: string;\n errorlight: string;\n error: string;\n errordark: string;\n secondarylight: string;\n secondary: string;\n secondarydark: string;\n warninglight: string;\n warning: string;\n warningdark: string;\n infolight: string;\n info: string;\n infodark: string;\n welllight: string;\n well: string;\n white: string;\n black: string;\n hp: string;\n money: string;\n hack: string;\n combat: string;\n cha: string;\n int: string;\n rep: string;\n disabled: string;\n backgroundprimary: string;\n backgroundsecondary: string;\n button: string;\n}\n\n/**\n * Interface Styles\n * @public\n */\ninterface IStyleSettings {\n fontFamily: string;\n lineHeight: number;\n}\n\n/**\n * Game Information\n * @public\n */\ninterface GameInfo {\n version: string;\n commit: string;\n platform: string;\n}\n\n/**\n * Used for autocompletion\n * @public\n */\ninterface AutocompleteData {\n servers: string[];\n scripts: string[];\n txts: string[];\n flags(schema: [string, string | number | boolean | string[]][]): { [key: string]: ScriptArg | string[] };\n}\n'},94748:e=>{"use strict";e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII="},6161:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjNDI0MjQyIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg=="},51096:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjQzVDNUM1Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg=="},58233:(e,t,n)=>{"use strict";e.exports=n.p+"assets/66f4b86d86164fc117bd.png"},82345:(e,t,n)=>{"use strict";e.exports=n.p+"assets/e97de4daa946331c7e99.png"},97565:(e,t,n)=>{"use strict";e.exports=n.p+"assets/6caf35202b10b52e1fc2.png"},55653:(e,t,n)=>{"use strict";e.exports=n.p+"assets/83b2443ab7e7d346766c.png"},21246:(e,t,n)=>{"use strict";e.exports=n.p+"assets/a1110d6c8d16a14c4570.png"},67456:(e,t,n)=>{"use strict";e.exports=n.p+"assets/c7164b072d62c91c27c6.png"},89204:(e,t,n)=>{"use strict";e.exports=n.p+"assets/cf143be1969d8e602f48.png"},9657:(e,t,n)=>{"use strict";e.exports=n.p+"assets/e66b0c327f97d08e4253.png"},6683:(e,t,n)=>{"use strict";e.exports=n.p+"assets/9f96a5084f4e5f1a6c00.png"},99425:(e,t,n)=>{"use strict";e.exports=n.p+"assets/cb88977ea837bccb9cce.png"},95519:(e,t,n)=>{"use strict";e.exports=n.p+"assets/297df8c0e47764ea1139.png"},90407:(e,t,n)=>{"use strict";e.exports=n.p+"assets/447bc31e61f55e7eff87.png"},37581:(e,t,n)=>{"use strict";e.exports=n.p+"assets/85a7b2896acb62be76f3.png"},76525:(e,t,n)=>{"use strict";e.exports=n.p+"assets/5aa87b7de67a77c91408.png"},33855:(e,t,n)=>{"use strict";e.exports=n.p+"assets/4e0e750f2f09de582197.png"},41458:(e,t,n)=>{"use strict";e.exports=n.p+"assets/8abdb9fe6e1612633be2.png"},65995:()=>{},69966:e=>{"use strict";e.exports=JSON.parse('{"EF":{"CYBERSEC":{"ID":"CYBERSEC","Name":"CyberSec","Description":"Join CyberSec."},"NITESEC":{"ID":"NITESEC","Name":"avmnite-02h","Description":"Join NiteSec."},"THE_BLACK_HAND":{"ID":"THE_BLACK_HAND","Name":"I.I.I.I","Description":"Join The Black Hand."},"BITRUNNERS":{"ID":"BITRUNNERS","Name":"run4theh111z","Description":"Join the BitRunners."},"DAEDALUS":{"ID":"DAEDALUS","Name":"fl1ght.exe","Description":"Join Daedalus."},"THE_COVENANT":{"ID":"THE_COVENANT","Name":"The Covenant","Description":"Join The Covenant."},"ILLUMINATI":{"ID":"ILLUMINATI","Name":"Illuminati","Description":"Join the Illuminati."},"BRUTESSH.EXE":{"ID":"BRUTESSH.EXE","Name":"BruteSSH.exe","Description":"Acquire BruteSSH.exe"},"FTPCRACK.EXE":{"ID":"FTPCRACK.EXE","Name":"FTPCrack.exe","Description":"Acquire FTPCrack.exe"},"RELAYSMTP.EXE":{"ID":"RELAYSMTP.EXE","Name":"relaySMTP.exe","Description":"Acquire relaySMTP.exe"},"HTTPWORM.EXE":{"ID":"HTTPWORM.EXE","Name":"HTTPWorm.exe","Description":"Acquire HTTPWorm.exe"},"SQLINJECT.EXE":{"ID":"SQLINJECT.EXE","Name":"SQLInject.exe","Description":"Acquire SQLInject.exe"},"FORMULAS.EXE":{"ID":"FORMULAS.EXE","Name":"Formulas.exe","Description":"Acquire Formulas.exe"},"SF1.1":{"ID":"SF1.1","Name":"Source Genesis","Description":"Acquire SF1.1"},"SF2.1":{"ID":"SF2.1","Name":"Rise of the Underworld","Description":"Acquire SF2.1"},"SF3.1":{"ID":"SF3.1","Name":"Corporatocracy","Description":"Acquire SF3.1"},"SF4.1":{"ID":"SF4.1","Name":"The Singularity","Description":"Acquire SF4.1"},"SF5.1":{"ID":"SF5.1","Name":"Artificial Intelligence","Description":"Acquire SF5.1"},"SF6.1":{"ID":"SF6.1","Name":"Bladeburners","Description":"Acquire SF6.1"},"SF7.1":{"ID":"SF7.1","Name":"Bladeburners 2079","Description":"Acquire SF7.1"},"SF8.1":{"ID":"SF8.1","Name":"Ghost of Wall Street","Description":"Acquire SF8.1"},"SF9.1":{"ID":"SF9.1","Name":"Hacktocracy","Description":"Acquire SF9.1"},"SF10.1":{"ID":"SF10.1","Name":"Digital Carbon","Description":"Acquire SF10.1"},"SF11.1":{"ID":"SF11.1","Name":"The Big Crash","Description":"Acquire SF11.1"},"SF12.1":{"ID":"SF12.1","Name":"The Recursion","Description":"Acquire SF12.1"},"MONEY_1Q":{"ID":"MONEY_1Q","Name":"Here comes the money!","Description":"Have $1Q on your home computer."},"MONEY_M1B":{"ID":"MONEY_M1B","Name":"Massive debt","Description":"Be $1b in debt."},"INSTALL_1":{"ID":"INSTALL_1","Name":"I never asked for this.","Description":"Install your first augmentation."},"INSTALL_100":{"ID":"INSTALL_100","Name":"I asked for this.","Description":"Have 100 augmentation installed at once."},"QUEUE_40":{"ID":"QUEUE_40","Name":"It\'s time to install","Description":"Have 40 augmentation queued at once."},"HACKING_100000":{"ID":"HACKING_100000","Name":"Power Overwhelming","Description":"Achieve 100 000 hacking skill."},"COMBAT_3000":{"ID":"COMBAT_3000","Name":"One punch man","Description":"Achieve 3000 in all combat stats."},"NEUROFLUX_255":{"ID":"NEUROFLUX_255","Name":"Neuroflux is love, Neuroflux is live","Description":"Install Neuroflux Governor level 255"},"NS2":{"ID":"NS2","Name":"Maximum speed!","Description":"Write an ns2 script."},"FROZE":{"ID":"FROZE","Name":"while(true);","Description":"Restart the game using the reload & kill all option because you froze it with an infinite loop."},"RUNNING_SCRIPTS_1000":{"ID":"RUNNING_SCRIPTS_1000","Name":"Need more real life ram","Description":"Run 1000 scripts simultaneously."},"DRAIN_SERVER":{"ID":"DRAIN_SERVER","Name":"Big trouble","Description":"Drain a server of all its money."},"MAX_RAM":{"ID":"MAX_RAM","Name":"Download more ram","Description":"Maximize your home computer ram."},"MAX_CORES":{"ID":"MAX_CORES","Name":"Download more cores?","Description":"Maximize your home computer cores."},"SCRIPTS_30":{"ID":"SCRIPTS_30","Name":"Thank you folders!","Description":"Have 30 scripts on your home computer."},"KARMA_1000000":{"ID":"KARMA_1000000","Name":"Wretched hive of scum and vilany","Description":"Reach -1m karma."},"STOCK_1q":{"ID":"STOCK_1q","Name":"Wolf of wall street.","Description":"Make 1q on the stock market."},"DISCOUNT":{"ID":"DISCOUNT","Name":"Discount!","Description":"Get a discount at Powerhouse Gym by backdooring their server."},"SCRIPT_32GB":{"ID":"SCRIPT_32GB","Name":"You\'ll need upgrade for this one.","Description":"Write a script that costs 32GB per thread."},"FIRST_HACKNET_NODE":{"ID":"FIRST_HACKNET_NODE","Name":"Free money!","Description":"Purchase your first hacknet node."},"30_HACKNET_NODE":{"ID":"30_HACKNET_NODE","Name":"Big network","Description":"Have 30 hacknet nodes."},"MAX_HACKNET_NODE":{"ID":"MAX_HACKNET_NODE","Name":"That\'s the limit","Description":"Maximize a hacknet node."},"HACKNET_NODE_10M":{"ID":"HACKNET_NODE_10M","Name":"The original hacker","Description":"Make 10m from hacknet nodes."},"REPUTATION_10M":{"ID":"REPUTATION_10M","Name":"Well liked","Description":"Reach 10m reputation with a faction."},"DONATION":{"ID":"DONATION","Name":"Donate!","Description":"Unlock donations with a faction."},"TRAVEL":{"ID":"TRAVEL","Name":"World explorer","Description":"Travel anywhere."},"WORKOUT":{"ID":"WORKOUT","Name":"Gains!","Description":"Workout at a gym."},"TOR":{"ID":"TOR","Name":"The Onion Network","Description":"Purchase the TOR router."},"HOSPITALIZED":{"ID":"HOSPITALIZED","Name":"Ouch!","Description":"Go to the hospital."},"GANG":{"ID":"GANG","Name":"Gangster","Description":"Form a gang."},"FULL_GANG":{"ID":"FULL_GANG","Name":"Don","Description":"Recruit all gang members."},"GANG_TERRITORY":{"ID":"GANG_TERRITORY","Name":"Stay out of my territory","Description":"Have 100% of the territory."},"GANG_MEMBER_POWER":{"ID":"GANG_MEMBER_POWER","Name":"One punch guy","Description":"Have a gang member with 10 000 in 1 skill."},"CORPORATION":{"ID":"CORPORATION","Name":"A small 150b loan.","Description":"Create a corporation."},"CORPORATION_BRIBE":{"ID":"CORPORATION_BRIBE","Name":"Lobbying is great!","Description":"Lower your taxes through lobbying."},"CORPORATION_PROD_1000":{"ID":"CORPORATION_PROD_1000","Name":"Streamlined manufacturing","Description":"Have a division with a production multiplier of 1000."},"CORPORATION_EMPLOYEE_3000":{"ID":"CORPORATION_EMPLOYEE_3000","Name":"Small town","Description":"Have a division with 3000 employee."},"CORPORATION_REAL_ESTATE":{"ID":"CORPORATION_REAL_ESTATE","Name":"Own the land","Description":"Expand to the Real Estate division."},"INTELLIGENCE_255":{"ID":"INTELLIGENCE_255","Name":"Smart!","Description":"Reach intelligence 255"},"BLADEBURNER_DIVISION":{"ID":"BLADEBURNER_DIVISION","Name":"Bladeburners","Description":"Join the Bladeburner division."},"BLADEBURNER_OVERCLOCK":{"ID":"BLADEBURNER_OVERCLOCK","Name":"Overclock!","Description":"Reach maximum level of Overclock"},"BLADEBURNER_UNSPENT_100000":{"ID":"BLADEBURNER_UNSPENT_100000","Name":"You should really spend those.","Description":"Have 100 000 unspent bladeburner skill points."},"4S":{"ID":"4S","Name":"4S","Description":"Purchase the 4S market data."},"FIRST_HACKNET_SERVER":{"ID":"FIRST_HACKNET_SERVER","Name":"The improved hacker.","Description":"Purchase your first hacknet server."},"ALL_HACKNET_SERVER":{"ID":"ALL_HACKNET_SERVER","Name":"Full network","Description":"Buy all hacknet servers."},"MAX_HACKNET_SERVER":{"ID":"MAX_HACKNET_SERVER","Name":"That\'s the new limit.","Description":"Maximize a hacknet server."},"HACKNET_SERVER_1B":{"ID":"HACKNET_SERVER_1B","Name":"Not passive anymore","Description":"Make $1b with hacknet servers."},"MAX_CACHE":{"ID":"MAX_CACHE","Name":"What a waste.","Description":"Cap your hashes."},"SLEEVE_8":{"ID":"SLEEVE_8","Name":"You and what army?","Description":"Purchase all duplicate sleeves from The Covenant."},"INDECISIVE":{"ID":"INDECISIVE","Name":"Too many options.","Description":"Spend 1h straight on the bitverse."},"FAST_BN":{"ID":"FAST_BN","Name":"Speed demon.","Description":"Destroy a bitnode in under 2 days."},"CHALLENGE_BN1":{"ID":"CHALLENGE_BN1","Name":"BN1: Challenge","Description":"Destroy BN1 with at most 128GB and 1 core."},"CHALLENGE_BN2":{"ID":"CHALLENGE_BN2","Name":"BN2: Challenge","Description":"Destroy BN2 without forming a gang."},"CHALLENGE_BN3":{"ID":"CHALLENGE_BN3","Name":"BN3: Challenge","Description":"Destroy BN3 without creating corporation."},"CHALLENGE_BN6":{"ID":"CHALLENGE_BN6","Name":"BN6: Challenge","Description":"Destroy BN6 without joining the bladeburner division."},"CHALLENGE_BN7":{"ID":"CHALLENGE_BN7","Name":"BN7: Challenge","Description":"Destroy BN7 without joining the bladeburner division."},"CHALLENGE_BN8":{"ID":"CHALLENGE_BN8","Name":"BN8: Challenge","Description":"Destroy BN8 without purchasing the 4s market data."},"CHALLENGE_BN9":{"ID":"CHALLENGE_BN9","Name":"BN9: Challenge","Description":"Destroy BN9 without using hacknet servers."},"CHALLENGE_BN10":{"ID":"CHALLENGE_BN10","Name":"BN10: Challenge","Description":"Destroy BN10 without using sleeves."},"CHALLENGE_BN12":{"ID":"CHALLENGE_BN12","Name":"BN12: Challenge","Description":"Destroy BN12 50 times."},"BYPASS":{"ID":"BYPASS","Name":"Exploit: bypass","Description":"Circumventing the ram cost of document."},"PROTOTYPETAMPERING":{"ID":"PROTOTYPETAMPERING","Name":"Exploit: prototype tampering","Description":"Tamper with the Numbers prototype."},"UNCLICKABLE":{"ID":"UNCLICKABLE","Name":"Exploit: unclickable","Description":"Click the unclickable."},"UNDOCUMENTEDFUNCTIONCALL":{"ID":"UNDOCUMENTEDFUNCTIONCALL","Name":"Exploit: undocumented","Description":"Call the undocumented function."},"TIMECOMPRESSION":{"ID":"TIMECOMPRESSION","Name":"Exploit: time compression","Description":"Compress time."},"REALITYALTERATION":{"ID":"REALITYALTERATION","Name":"Exploit: reality alteration","Description":"Alter reality."},"N00DLES":{"ID":"N00DLES","Name":"Exploit: noodles","Description":"Harness the power of the noodles."},"EDITSAVEFILE":{"ID":"EDITSAVEFILE","Name":"Exploit: edit","Description":"Acquire the EditSaveFile Source-File -1"},"UNACHIEVABLE":{"ID":"UNACHIEVABLE","Name":"UNACHIEVABLE","Description":"This achievement cannot be unlocked."},"CHALLENGE_BN13":{"ID":"CHALLENGE_BN13","Name":"BN13: Challenge","Description":"Complete BN13 without Stanek\'s Gift."},"DEVMENU":{"ID":"DEVMENU","Name":"Exploit: you\'re not meant to access this","Description":"Open the dev menu."},"RAINBOW":{"ID":"RAINBOW","Name":"Exploit: rainbow","Description":"Make good use of the rainbow."},"TRUE_RECURSION":{"ID":"TRUE_RECURSION","Name":"Exploit: true recursion","Description":"Beat BN1 in megabyteburner 2000."}}}')}},__webpack_module_cache__={},deferred,leafPrototypes,getProto;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.loaded=!0,n.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.amdO={},deferred=[],__webpack_require__.O=(e,t,n,a)=>{if(!t){var r=1/0;for(l=0;l=a)&&Object.keys(__webpack_require__.O).every((e=>__webpack_require__.O[e](t[i])))?t.splice(i--,1):(o=!1,a0&&deferred[l-1][2]>a;l--)deferred[l]=deferred[l-1];deferred[l]=[t,n,a]},__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},getProto=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,__webpack_require__.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var n=Object.create(null);__webpack_require__.r(n);var a={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var r=2&t&&e;"object"==typeof r&&!~leafPrototypes.indexOf(r);r=getProto(r))Object.getOwnPropertyNames(r).forEach((t=>a[t]=()=>e[t]));return a.default=()=>e,__webpack_require__.d(n,a),n},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.e=()=>Promise.resolve(),__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var t=__webpack_require__.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");n.length&&(e=n[n.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e})(),(()=>{__webpack_require__.b=document.baseURI||self.location.href;var e={179:0};__webpack_require__.O.j=t=>0===e[t];var t=(t,n)=>{var a,r,[o,i,s]=n,l=0;if(o.some((t=>0!==e[t]))){for(a in i)__webpack_require__.o(i,a)&&(__webpack_require__.m[a]=i[a]);if(s)var c=s(__webpack_require__)}for(t&&t(n);l__webpack_require__(73681)));__webpack_exports__=__webpack_require__.O(__webpack_exports__)})(); //# sourceMappingURL=main.bundle.js.map \ No newline at end of file diff --git a/dist/main.bundle.js.map b/dist/main.bundle.js.map index a0b666d..366c83d 100644 --- a/dist/main.bundle.js.map +++ b/dist/main.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"main.bundle.js","mappings":"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,QAKzB,CAaA,MAAM6rE,EAAQ,CACZ,YACA,SACA,MACA,cACA,QACA,SACA,YACA,SACA,MACA,OACA,SACA,OACA,UACA,WACA,OACA,YACA,UACA,SACA,MACA,MACA,OACA,QACA,YACA,UACA,KACA,SACA,SACA,YACA,QACA,YACA,UACA,UACA,WACA,WACA,YACA,SACA,OACA,MACA,aACA,aACA,YACA,OACA,SACA,WACA,QACA,aACA,SACA,UACA,cACA,UACA,OACA,MACA,WACA,SACA,cACA,MACA,aACA,WACA,OACA,MACA,UACA,QACA,WACA,UACA,aACA,QACA,UACA,MACA,OACA,SACA,WACA,WACA,UACA,QACA,cACA,cACA,YACA,SACA,OACA,SACA,QACA,WACA,WACA,WACA,OACA,SACA,WACA,YACA,OACA,OACA,YACA,YACA,OACA,QACA,UACA,YACA,WACA,aACA,YACA,OACA,WACA,WACA,SACA,MACA,WACA,UACA,SACA,gBACA,OACA,QACA,UACA,QACA,QACA,UACA,YACA,QACA,YACA,UACA,QACA,SACA,SACA,QACA,UACA,cACA,QACA,aACA,MACA,UACA,OACA,WACA,WACA,UACA,SACA,aACA,YACA,SACA,SACA,SACA,OACA,WACA,QACA,OACA,WACA,SACA,SACA,WACA,SACA,UACA,QACA,SACA,QACA,UACA,UACA,UACA,UACA,aACA,WACA,QACA,SACA,MACA,WACA,SACA,aACA,UACA,MACA,OACA,SACA,UACA,OACA,OACA,UACA,SACA,aACA,SACA,SACA,SACA,SACA,SACA,WACA,SACA,YACA,QACA,QACA,YACA,WACA,oBACA,WACA,OACA,UACA,cACA,UACA,SACA,UACA,gBACA,OACA,SACA,QACA,MACA,WACA,WACA,WACA,cACA,SACA,UACA,QACA,eACA,WACA,OACA,OACA,SACA,MACA,OACA,iBACA,WACA,UACA,UACA,UACA,iBACA,QACA,MACA,YACA,UACA,SACA,OACA,SACA,UACA,WACA,YACA,cACA,MACA,OACA,MACA,MACA,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oBACrDm1K,GAGFF,IACAz2K,EAAAA,GAAAA,0BACAA,EAAAA,GAAAA,uBACF,CAEA,GAAIm2K,EAAM,MAEGv2K,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,SACZ,CACP,MAAMirH,GAAU+wB,EAAAA,EAAAA,IAAyB,CACvCjuC,IAAIkuC,EAAAA,EAAAA,MACJhrG,SAAUjxC,EAAAA,EAAAA,QACVwzH,iBAAkB,GAClBD,eAAe,EACf2oB,aAAa,EACblrG,mBAAmB,EACnBluC,OAAQ,KAEVq5I,EAAAA,EAAAA,IAAgBlxB,EAClB,CAEF,GAAIqrD,EAAM,GAAI,EAEZG,EAAAA,EAAAA,GAAS,IACT,MAAM5oJ,EAAS0oJ,EAAUS,kBACrBnpJ,GAAQ1tB,EAAAA,GAAAA,kBAAyBg+E,YAAYtwD,GACjD,MAAMopJ,EAAQV,EAAUW,sBACpBD,GAAO92K,EAAAA,GAAAA,cAAAA,KAA0B,CAAEuB,KAAMu1K,EAAOr1K,MAAO,GAC7D,CAQA,GAPI00K,EAAM,KACRM,KACAO,EAAAA,EAAAA,MAEEb,EAAM,KACRC,EAAUvhJ,YAAc,MAEtBshJ,EAAM,GAAI,CACZ,MAAMc,EAAqB,CACzB,sBACA,qBACA,qBACA,oBACA,eACA,gBACA,eACA,iBACA,eACA,gBACA,mBACA,oBACA,mBACA,qBACA,mBACA,oBACA,mBACA,mBACA,mBACA,qBACA,kBACA,0BACA,kCACA,6BACA,8BACA,+BACA,+BACA,gCACA,4BACA,kCACA,cACA,eACA,cACA,gBACA,cACA,eACA,mBACA,cACA,YACA,WACA,eACA,cACA,yBACA,gCACA,sBACA,qBACA,qBACA,qBACA,qBACA,qBACA,kBACA,oBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,mBACA,gBACA,kBACA,oBACA,sBACA,wBACA,8BACA,YACA,YACA,aACA,0BACA,2BACA,kBACA,4BACA,0BACA,UACA,SACA,WACA,UACA,YACA,UACA,WACA,gBAEIC,EAAqB,CACzB,cACA,WACA,aACA,UACA,WACA,UACA,YACA,UACA,WACA,eACA,SACA,cACA,eACA,cA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IV,gBAAC,IAAO,CAAC/vD,MAAO,gBAAC,IAAU,KAAE+vD,IAC3B,gBAAC,IAAM,CAAC53D,QAASsH,EAAMqsL,mBAAoBrwG,GAGjD,CAEO,SAAS0wG,EAAmB1sL,GACjC,OACE,gCACE,gBAACwsL,EAAsBxsL,GACvB,2BACA,gBAAC,IAAS,CACR5Z,GAAI,CAAEsB,MAAO,QACb0iC,SAAUpqB,EAAMssL,sBAChB18J,YAAY,iDACZx+B,KAAK,SAIb,EAvCC,SAHW46L,GAAAA,EAAAA,EAAiB,yBAAjBA,EAAAA,EAAiB,yBAG5B,CAHWA,IAAAA,EAAiB,oDCXtB,MAAMr1L,EAAW,aAAIg2L,0DCDrB,MAAMC,EAA6B,CACxC,oDACA,IACA,8EACA,sFACA,sFACA,mFACA,8EACA,qEACA,6EACA,2EACA,gEACA,uEACA,uDACA,4FACA,8EACA,kFACA,mHACA,oEACA,kGACA,wEACA,oEACA,gFACA,6FACA,4FACA,6EACA,2FACA,iGACA,6EACA,4GACA,0FACA,yEACA,uEACA,gGACA,0FACA,iFACA,+FACA,0FACA,4FACA,uEACA,wHACA,sFACA,iFACA,KAGIC,EACW9wK,GACN,CACJ,UAASA,wBACT,IACA,4GACA,4FACA,IACA,4CAA2CA,kDAC3C,kBAAiBA,yEACjB,IACA,YACA,IACA,OAAMA,YACN,OAAMA,qBACN,IACA,OAAMA,WACN,OAAMA,iBACN,KAKM+wK,EAAsC,CACjDx2L,MAAO,CACL,oCACA,IACA,4FACA,uGACA,yHACA,kGACA,IACA,gCACA,IACA,mHACA,yHACA,4CACA,IACA,gCACA,IACA,6DACA,IACA,eACA,IACA,2HACA,4HACA,IACA,mCACA,IACA,8GACA,IACA,uHACA,uCACA,IACA,uDACA,KAEFy2L,QAAS,CACP,iBACA,IACA,0GACA,mHACA,kHACA,gCACA,KAEFC,SAAU,CACR,kBACA,IACA,6FACA,IACA,+BACA,KAEFt2H,IAAK,CACH,iCACA,IACA,yEACA,IACA,oHACA,oDACA,IACA,+FACA,IACA,wGACA,KAEFu2H,IAAK,CACH,oBACA,IACA,6EACA,IACA,iBACA,IACA,kBACA,IACA,sBACA,KAEFh4I,GAAI,CACF,kBACA,IACA,yGACA,iFACA,IACA,yBACA,IACA,eACA,IACA,aACA,KAEFi4I,MAAO,CACL,uCACA,IACA,+HACA,uDACA,kIACA,IACA,oCACA,IACA,gGACA,IACA,sCACA,KAEFh3L,MAAO,CACL,eACA,IACA,mIACA,uIACA,KAEFmyB,IAAK,CACH,aACA,IACA,mIACA,yIACA,KAEFqgG,QAAS,CACP,4BACA,IACA,+FACA,oIACA,8GACA,KAEFykE,GAAI,CAAC,wBAAyB,IAAK,wEAAyE,KAC5GztB,SAAU,CACR,qCACA,IACA,mFACA,IACA,4GACA,IACA,kDACA,IACA,0CACA,IACA,0CACA,KAEF0tB,KAAM,CACJ,wCACA,IACA,oFACA,IACA,oBACA,IACA,WACA,IACA,wBACA,IACA,qFACA,KAEFC,KAAM,CACJ,cACA,IACA,gIACA,gCACA,KAEFv3D,KAAM,CACJ,cACA,IACA,6GACA,2CACA,KAEF5lI,KAAM,CACJ,cACA,IACA,uHACA,KAEFo4B,KAAM,CACJ,wBACA,IACA,yHACA,0HACA,mEACA,IACA,iBACA,IACA,wBACA,KAEFmtD,QAAS,CACP,sBACA,IACA,6GACA,KAEFU,KAAM,CACJ,cACA,IACA,sGACA,KAEFz6C,SAAU,CAAC,kBAAmB,IAAK,4CAA6C,KAChF27F,KAAM,CACJ,oDACA,IACA,4EACA,IACA,6EACA,4EACA,iFACA,4DACA,IACA,uCACA,IACA,qEACA,IACA,wCACA,IACA,qFACA,KAEFC,QAAS,CACP,iBACA,IACA,4CACA,2HACA,uHACA,2EACA,KAEFI,GAAI,CACF,wCACA,IACA,iIACA,sDACA,IACA,8FACA,IACA,gFACA,IACA,yHACA,IACA,YACA,IACA,wEACA,IACA,2BACA,IACA,iEACA,IACA,yBACA,IACA,uFACA,IACA,oCACA,KAEF41D,MAAO,CAAC,eAAgB,IAAK,wDAAyD,KAEtFC,IAAK,CACH,4CACA,IACA,6HACA,2HACA,gFACA,IACA,qBACA,IACA,2BACA,IACA,4HACA,iFACA,KAEFryD,GAAI,CACF,yBACA,IACA,6FACA,6FACA,kCACA,IACA,kFACA,kBACA,aACA,IACA,qEACA,IACA,oCACA,KAEFsyD,KAAMX,EAAgC,QACtCl1D,GAAI,CAAC,YAAa,IAAK,4DAA6D,KACpFkC,GAAI,CACF,mBACA,IACA,6GACA,IACA,kDACA,KAEF1C,IAAK,CACH,sDACA,IACA,gDACA,IACA,sHACA,2GACA,gEACA,2DACA,2FACA,IACA,kHACA,iFACA,KAEF9B,KAAM,CACJ,cACA,IACA,6HACA,2CACA,KAEF,eAAgB,CACd,mCACA,IACA,kGACA,wGACA,4EACA,IACA,uGACA,qGACA,0BACA,IACA,iHACA,yGACA,UACA,IACA,2GACA,sEACA,KAEFoC,IAAK,CACH,4CACA,IACA,8EACA,2GACA,oCACA,2FACA,IACA,6BACA,IACA,wCACA,KAEFg2D,MAAO,CAAC,eAAgB,IAAK,oEAAqE,KAElGpyD,KAAM,CACJ,sCACA,IACA,oHACA,uHACA,oEACA,IACA,8BACA,IACA,gFACA,IACA,+BACA,KAEFqyD,IAAK,CACH,aACA,IACA,yGACA,+BACA,KAEFC,QAAS,CACP,8BACA,IACA,mFACA,IACA,iDACA,IACA,oBACA,IACA,kCACA,IACA,gBACA,IACA,kGACA,KAEFjkB,IAAKmjB,EAAgC,OACrC52D,OAAQ,CACN,gBACA,IACA,oHACA,iEACA,KAEF6E,KAAM,CACJ,kCACA,IACA,iGACA,iGACA,0CACA,IACA,mGACA,iDACA,IACA,+GACA,sHCzdG,MAAM8yD,EAGXxzL,YAAY+3D,EAAcnrE,GACpBhB,EAAAA,EAAAA,mBAA2BmsE,EAAO,KAAM4zB,EAAAA,EAAAA,GAAW//F,EAAAA,EAAAA,kBAA6B,KAAOmsE,GAC3F73D,KAAK63D,KAAOA,EACZ73D,KAAKtT,MAAQA,CACf,EAGK,MAAM6mM,EAEXzzL,YAAYyV,GACN7pB,EAAAA,EAAAA,mBACF6pB,EACE,gCAAE,KACEk2E,EAAAA,EAAAA,GAAW//F,EAAAA,EAAAA,kBAA2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IA,mDACA,8CACA,+BACA,wFACA,wBACA,4BACA,gBACA,+DACA,kCACA,gBACA,kBACA,mDACA,IACA,IACA,cACA,IACA,MAKA,+BACA,mDACA,+BACA,sBACA,0DACA,IACA,wBACA,4BACA,yCACA,uDACA,IACA,8BACA,aACA,oBACA,qBACA,+CACA,iBACA,IACA,OACA,IACA,oBACA,KACA,sBACA,iBACA,MACA,IAKA,oCACA,wDACA,+BACA,sBACA,0DACA,IACA,wBACA,4BACA,yCACA,uDACA,IACA,8BACA,aACA,oBACA,qBACA,+CACA,YACA,IACA,OACA,IACA,aACA,KACA,sBACA,iBACA,MACA,IAIA,oDACA,8CACA,gCACA,kEACA,YACA,wBACA,4BACA,yCACA,SACA,oBACA,4CACA,OACA,IACA,IACA,MAIA,uDACA,8CACA,sBACA,0DACA,IACA,yCACA,wBACA,mDACA,4BACA,mCACA,mBACA,gBACA,IACA,yCACA,qEACA,yBACA,uBACA,qBACA,oBACA,2BACA,+BACA,uDACA,iCACA,8FACA,IACA,8BACA,oBACA,+DACA,wEACA,4CACA,eACA,IACA,0BACA,OACA,IACA,qBACA,gBACA,IACA,MAIA,gDACA,8CACA,gCACA,8DACA,eACA,wBACA,4BACA,yCACA,sBACA,SACA,oBACA,mDACA,OACA,IACA,YACA,IACA,MAIA,mDACA,8CACA,0CACA,kEACA,4DACA,gCACA,wBACA,WACA,oCACA,kBACA,kEACA,IACA,kBACA,IACA,yBACA,mDACA,IACA,gBACA,IACA,MAIA,wDACA,8CACA,0CACA,yGACA,kEACA,+BACA,wBACA,WACA,mCACA,eACA,kEACA,IACA,kBACA,IACA,wBACA,mDACA,IACA,gBACA,IACA,MAIA,iDACA,8CACA,+BACA,6DACA,wBACA,4BACA,+DACA,kCACA,iDACA,eACA,IACA,IACA,gBACA,IACA,MAEA,gBACA,oCACA,8CAEA,wCACA,2BACA,IAEA,0CACA,mBACA,kDACA,4CACA,sBACA,yBACA,sBACA,aACA,IACA,IACA,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gB,IAGpCpT,KAAM,8BACN6vC,SAAU,GACVD,OAAQ,CAACkrG,EAAgB8wE,KACvB,IAAK3oK,MAAM6J,QAAQguF,GAAQ,MAAM,IAAIv7H,MAAM,kCAC3C,MAAMhjB,EAAOu+I,EAMb,MAHe,IAAIv+I,EAAK,IACrBC,KAAKK,GAAa,MAANA,EAAYA,EAAIklB,OAAO+7L,cAAejhN,EAAE4tC,WAAW,GAAK,GAAKluC,EAAK,GAAK,IAAM,GAAM,MAC/FqP,KAAK,MACUggN,CAAG,GAGzB,CACE78M,KAAO+rI,IACL,IAAK73F,MAAM6J,QAAQguF,GAAQ,MAAM,IAAIv7H,MAAM,kCAC3C,MAAMhjB,EAAOu+I,EACb,MAAO,CACL,qEACA,2EACA,iCACA,+GACA,+FACA,sFACA,sFACA,qFACA,qFACA,qFACA,wGACA,qFACA,uFACA,8GACA,8EACA,sCACA,qDACA,6GACA,iHACA,8CACC,iBAAgBv+I,EAAK,SAASA,EAAK,SACpC,6EACA,8CACAqP,KAAK,IAAI,EAEbsP,WAAY,EACZy0B,IAAK,IAqHI,CAnHO,CACZ,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SA4FG/yC,MAAK,IAAMmG,KAAKqQ,SAAW,KAC3BkV,MAAM,EAAG,GACT1c,KAAK,IA5FG,CACX,YACA,YACA,UACA,WACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,UACA,YACA,WACA,YACA,WACA,WACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,UACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,UACA,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","sources":["webpack:///./src/Achievements/AchievementEntry.tsx","webpack:///./src/Achievements/AchievementIcon.tsx","webpack:///./src/Achievements/AchievementList.tsx","webpack:///./src/Achievements/Achievements.ts","webpack:///./src/Achievements/AchievementsRoot.tsx","webpack:///./src/Alias.ts","webpack:///./src/Arcade/ui/ArcadeRoot.tsx","webpack:///./src/Arcade/ui/BBCabinet.tsx","webpack:///./src/Augmentation/Augmentation.ts","webpack:///./src/Augmentation/AugmentationHelpers.ts","webpack:///./src/Augmentation/Augmentations.ts","webpack:///./src/Augmentation/CircadianModulator.ts","webpack:///./src/Augmentation/Enums.ts","webpack:///./src/Augmentation/PlayerOwnedAugmentation.ts","webpack:///./src/Augmentation/ui/AugmentationsRoot.tsx","webpack:///./src/Augmentation/ui/InstalledAugmentations.tsx","webpack:///./src/Augmentation/ui/PlayerMultipliers.tsx","webpack:///./src/Augmentation/ui/PurchasableAugmentations.tsx","webpack:///./src/Augmentation/ui/PurchaseAugmentationModal.tsx","webpack:///./src/Augmentation/ui/PurchasedAugmentations.tsx","webpack:///./src/Augmentation/ui/SourceFiles.tsx","webpack:///./src/BitNode/BitNode.tsx","webpack:///./src/BitNode/BitNodeMultipliers.ts","webpack:///./src/BitNode/ui/BitFlumeModal.tsx","webpack:///./src/BitNode/ui/BitnodeMultipliersDescription.tsx","webpack:///./src/BitNode/ui/BitverseRoot.tsx","webpack:///./src/BitNode/ui/PortalModal.tsx","webpack:///./src/Bladeburner/Action.tsx","webpack:///./src/Bladeburner/ActionIdentifier.ts","webpack:///./src/Bladeburner/BlackOperation.ts","webpack:///./src/Bladeburner/BlackOperations.tsx","webpack:///./src/Bladeburner/Bladeburner.tsx","webpack:///./src/Bladeburner/City.ts","webpack:///./src/Bladeburner/Contract.ts","webpack:///./src/Bladeburner/Enums.ts","webpack:///./src/Bladeburner/GeneralActions.tsx","webpack:///./src/Bladeburner/Operation.ts","webpack:///./src/Bladeburner/Skill.ts","webpack:///./src/Bladeburner/Skills.ts","webpack:///./src/Bladeburner/data/ActionTypes.ts","webpack:///./src/Bladeburner/data/BlackOperations.tsx","webpack:///./src/Bladeburner/data/Constants.ts","webpack:///./src/Bladeburner/data/Contracts.tsx","webpack:///./src/Bladeburner/data/GeneralActions.tsx","webpack:///./src/Bladeburner/data/Growths.ts","webpack:///./src/Bladeburner/data/Help.ts","webpack:///./src/Bladeburner/data/Icons.tsx","webpack:///./src/Bladeburner/data/Operations.tsx","webpack:///./src/Bladeburner/data/SkillNames.ts","webpack:///./src/Bladeburner/ui/ActionLevel.tsx","webpack:///./src/Bladeburner/ui/AllPages.tsx","webpack:///./src/Bladeburner/ui/Autolevel.tsx","webpack:///./src/Bladeburner/ui/BlackOpElem.tsx","webpack:///./src/Bladeburner/ui/BlackOpList.tsx","webpack:///./src/Bladeburner/ui/BlackOpPage.tsx","webpack:///./src/Bladeburner/ui/BladeburnerCinematic.tsx","webpack:///./src/Bladeburner/ui/BladeburnerRoot.tsx","webpack:///./src/Bladeburner/ui/Console.tsx","webpack:///./src/Bladeburner/ui/ContractElem.tsx","webpack:///./src/Bladeburner/ui/ContractList.tsx","webpack:///./src/Bladeburner/ui/ContractPage.tsx","webpack:///./src/Bladeburner/ui/GeneralActionElem.tsx","webpack:///./src/Bladeburner/ui/GeneralActionList.tsx","webpack:///./src/Bladeburner/ui/GeneralActionPage.tsx","webpack:///./src/Bladeburner/ui/KillIcon.tsx","webpack:///./src/Bladeburner/ui/OperationElem.tsx","webpack:///./src/Bladeburner/ui/OperationList.tsx","webpack:///./src/Bladeburner/ui/OperationPage.tsx","webpack:///./src/Bladeburner/ui/SkillElem.tsx","webpack:///./src/Bladeburner/ui/SkillList.tsx","webpack:///./src/Bladeburner/ui/SkillPage.tsx","webpack:///./src/Bladeburner/ui/StartButton.tsx","webpack:///./src/Bladeburner/ui/Stats.tsx","webpack:///./src/Bladeburner/ui/StealthIcon.tsx","webpack:///./src/Bladeburner/ui/SuccessChance.tsx","webpack:///./src/Bladeburner/ui/TeamSizeButton.tsx","webpack:///./src/Bladeburner/ui/TeamSizeModal.tsx","webpack:///./src/Bladeburner/ui/TravelModal.tsx","webpack:///./src/Casino/Blackjack.tsx","webpack:///./src/Casino/CardDeck/Card.ts","webpack:///./src/Casino/CardDeck/Deck.ts","webpack:///./src/Casino/CardDeck/Hand.ts","webpack:///./src/Casino/CardDeck/ReactCard.tsx","webpack:///./src/Casino/CoinFlip.tsx","webpack:///./src/Casino/Game.ts","webpack:///./src/Casino/RNG.ts","webpack:///./src/Casino/Roulette.tsx","webpack:///./src/Casino/SlotMachine.tsx","webpack:///./src/Casino/utils.ts","webpack:///./src/CodingContractGenerator.ts","webpack:///./src/CodingContracts.ts","webpack:///./src/Company/Companies.ts","webpack:///./src/Company/Company.ts","webpack:///./src/Company/CompanyPosition.ts","webpack:///./src/Company/CompanyPositions.ts","webpack:///./src/Company/Enums.ts","webpack:///./src/Company/GetJobRequirementText.ts","webpack:///./src/Company/GetNextCompanyPosition.ts","webpack:///./src/Company/data/CompaniesMetadata.ts","webpack:///./src/Company/data/CompanyPositionsMetadata.ts","webpack:///./src/Company/data/JobTracks.ts","webpack:///./src/Company/ui/QuitJobModal.tsx","webpack:///./src/Company/utils.ts","webpack:///./src/Constants.ts","webpack:///./src/Corporation/Actions.ts","webpack:///./src/Corporation/Corporation.ts","webpack:///./src/Corporation/CorporationState.ts","webpack:///./src/Corporation/Division.ts","webpack:///./src/Corporation/Enums.ts","webpack:///./src/Corporation/Material.ts","webpack:///./src/Corporation/MaterialInfo.ts","webpack:///./src/Corporation/OfficeSpace.ts","webpack:///./src/Corporation/Product.ts","webpack:///./src/Corporation/Research.ts","webpack:///./src/Corporation/ResearchMap.ts","webpack:///./src/Corporation/ResearchTree.ts","webpack:///./src/Corporation/Warehouse.ts","webpack:///./src/Corporation/data/BaseResearchTree.ts","webpack:///./src/Corporation/data/Constants.ts","webpack:///./src/Corporation/data/CorporationUnlocks.ts","webpack:///./src/Corporation/data/CorporationUpgrades.ts","webpack:///./src/Corporation/data/IndustryData.ts","webpack:///./src/Corporation/helpers.ts","webpack:///./src/Corporation/ui/CityTabs.tsx","webpack:///./src/Corporation/ui/Context.ts","webpack:///./src/Corporation/ui/CorporationRoot.tsx","webpack:///./src/Corporation/ui/Division.tsx","webpack:///./src/Corporation/ui/DivisionOffice.tsx","webpack:///./src/Corporation/ui/DivisionOverview.tsx","webpack:///./src/Corporation/ui/DivisionWarehouse.tsx","webpack:///./src/Corporation/ui/ExpandNewCity.tsx","webpack:///./src/Corporation/ui/Helpers.tsx","webpack:///./src/Corporation/ui/IndustryDescription.tsx","webpack:///./src/Corporation/ui/IndustryProductEquation.tsx","webpack:///./src/Corporation/ui/LevelableUpgrade.tsx","webpack:///./src/Corporation/ui/MainPanel.tsx","webpack:///./src/Corporation/ui/MaterialElem.tsx","webpack:///./src/Corporation/ui/MoneyCost.tsx","webpack:///./src/Corporation/ui/MultiplierButtons.tsx","webpack:///./src/Corporation/ui/NewDivisionTab.tsx","webpack:///./src/Corporation/ui/Overview.tsx","webpack:///./src/Corporation/ui/ProductElem.tsx","webpack:///./src/Corporation/ui/Unlock.tsx","webpack:///./src/Corporation/ui/modals/BribeFactionModal.tsx","webpack:///./src/Corporation/ui/modals/BuybackSharesModal.tsx","webpack:///./src/Corporation/ui/modals/CancelProductModal.tsx","webpack:///./src/Corporation/ui/modals/CreateCorporationModal.tsx","webpack:///./src/Corporation/ui/modals/DiscontinueProductModal.tsx","webpack:///./src/Corporation/ui/modals/ExportModal.tsx","webpack:///./src/Corporation/ui/modals/FindInvestorsModal.tsx","webpack:///./src/Corporation/ui/modals/GoPublicModal.tsx","webpack:///./src/Corporation/ui/modals/IssueDividendsModal.tsx","webpack:///./src/Corporation/ui/modals/IssueNewSharesModal.tsx","webpack:///./src/Corporation/ui/modals/LimitMaterialProductionModal.tsx","webpack:///./src/Corporation/ui/modals/LimitProductProductionModal.tsx","webpack:///./src/Corporation/ui/modals/MakeProductModal.tsx","webpack:///./src/Corporation/ui/modals/MaterialMarketTaModal.tsx","webpack:///./src/Corporation/ui/modals/ProductMarketTaModal.tsx","webpack:///./src/Corporation/ui/modals/PurchaseMaterialModal.tsx","webpack:///./src/Corporation/ui/modals/ResearchModal.tsx","webpack:///./src/Corporation/ui/modals/SellCorporationModal.tsx","webpack:///./src/Corporation/ui/modals/SellDivisionModal.tsx","webpack:///./src/Corporation/ui/modals/SellMaterialModal.tsx","webpack:///./src/Corporation/ui/modals/SellProductModal.tsx","webpack:///./src/Corporation/ui/modals/SellSharesModal.tsx","webpack:///./src/Corporation/ui/modals/SmartSupplyModal.tsx","webpack:///./src/Corporation/ui/modals/ThrowPartyModal.tsx","webpack:///./src/Corporation/ui/modals/UpgradeOfficeSizeModal.tsx","webpack:///./src/CotMG/ActiveFragment.ts","webpack:///./src/CotMG/BaseGift.ts","webpack:///./src/CotMG/Fragment.ts","webpack:///./src/CotMG/FragmentType.ts","webpack:///./src/CotMG/Helper.tsx","webpack:///./src/CotMG/StaneksGift.ts","webpack:///./src/CotMG/StaneksGiftEvents.ts","webpack:///./src/CotMG/data/Constants.ts","webpack:///./src/CotMG/data/Shapes.ts","webpack:///./src/CotMG/formulas/effect.ts","webpack:///./src/CotMG/ui/ActiveFragmentSummary.tsx","webpack:///./src/CotMG/ui/Cell.tsx","webpack:///./src/CotMG/ui/DummyGrid.tsx","webpack:///./src/CotMG/ui/FragmentInspector.tsx","webpack:///./src/CotMG/ui/FragmentPreview.tsx","webpack:///./src/CotMG/ui/FragmentSelector.tsx","webpack:///./src/CotMG/ui/Grid.tsx","webpack:///./src/CotMG/ui/MainBoard.tsx","webpack:///./src/CotMG/ui/StaneksGiftRoot.tsx","webpack:///./src/Crime/Crime.ts","webpack:///./src/Crime/CrimeHelpers.ts","webpack:///./src/Crime/Crimes.ts","webpack:///./src/Crime/Enums.ts","webpack:///./src/DarkWeb/DarkWeb.tsx","webpack:///./src/DarkWeb/DarkWebItem.ts","webpack:///./src/DarkWeb/DarkWebItems.ts","webpack:///./src/DevMenu.tsx","webpack:///./src/DevMenu/ui/AchievementsDev.tsx","webpack:///./src/DevMenu/ui/Adjuster.tsx","webpack:///./src/DevMenu/ui/AugmentationsDev.tsx","webpack:///./src/DevMenu/ui/BladeburnerDev.tsx","webpack:///./src/DevMenu/ui/CodingContractsDev.tsx","webpack:///./src/DevMenu/ui/CompaniesDev.tsx","webpack:///./src/DevMenu/ui/CorporationDev.tsx","webpack:///./src/DevMenu/ui/EntropyDev.tsx","webpack:///./src/DevMenu/ui/FactionsDev.tsx","webpack:///./src/DevMenu/ui/GangDev.tsx","webpack:///./src/DevMenu/ui/General.tsx","webpack:///./src/DevMenu/ui/ProgramsDev.tsx","webpack:///./src/DevMenu/ui/SaveFileDev.tsx","webpack:///./src/DevMenu/ui/ServersDev.tsx","webpack:///./src/DevMenu/ui/SleevesDev.tsx","webpack:///./src/DevMenu/ui/SourceFilesDev.tsx","webpack:///./src/DevMenu/ui/StanekDev.tsx","webpack:///./src/DevMenu/ui/StatsDev.tsx","webpack:///./src/DevMenu/ui/StockMarketDev.tsx","webpack:///./src/DevMenu/ui/TimeSkip.tsx","webpack:///./src/Diagnostic/FileDiagnosticModal.tsx","webpack:///./src/Documentation/pages.ts","webpack:///./src/Documentation/root.ts","webpack:///./src/Documentation/ui/DocumentationRoot.tsx","webpack:///./src/Electron.tsx","webpack:///./src/Exploits/Exploit.ts","webpack:///./src/Exploits/Unclickable.tsx","webpack:///./src/Exploits/applyExploits.ts","webpack:///./src/Exploits/loops.ts","webpack:///./src/ExportBonus.tsx","webpack:///./src/Faction/Enums.ts","webpack:///./src/Faction/Faction.ts","webpack:///./src/Faction/FactionHelpers.tsx","webpack:///./src/Faction/FactionInfo.tsx","webpack:///./src/Faction/Factions.ts","webpack:///./src/Faction/formulas/donation.ts","webpack:///./src/Faction/formulas/favor.ts","webpack:///./src/Faction/ui/AugmentationsPage.tsx","webpack:///./src/Faction/ui/CreateGangModal.tsx","webpack:///./src/Faction/ui/DonateOption.tsx","webpack:///./src/Faction/ui/FactionRoot.tsx","webpack:///./src/Faction/ui/FactionsRoot.tsx","webpack:///./src/Faction/ui/GangButton.tsx","webpack:///./src/Faction/ui/Info.tsx","webpack:///./src/Faction/ui/InvitationModal.tsx","webpack:///./src/Faction/ui/Option.tsx","webpack:///./src/GameOptions/ui/AutoexecInput.tsx","webpack:///./src/GameOptions/ui/ConnectionBauble.tsx","webpack:///./src/GameOptions/ui/GameOptionsPage.tsx","webpack:///./src/GameOptions/ui/GameOptionsRoot.tsx","webpack:///./src/GameOptions/ui/GameOptionsSidebar.tsx","webpack:///./src/GameOptions/ui/GameplayPage.tsx","webpack:///./src/GameOptions/ui/InterfacePage.tsx","webpack:///./src/GameOptions/ui/MiscPage.tsx","webpack:///./src/GameOptions/ui/NumericDisplayOptions.tsx","webpack:///./src/GameOptions/ui/OptionsSlider.tsx","webpack:///./src/GameOptions/ui/RemoteAPIPage.tsx","webpack:///./src/GameOptions/ui/SystemPage.tsx","webpack:///./src/Gang/AllGangs.ts","webpack:///./src/Gang/Gang.ts","webpack:///./src/Gang/GangMember.ts","webpack:///./src/Gang/GangMemberTask.ts","webpack:///./src/Gang/GangMemberTasks.ts","webpack:///./src/Gang/GangMemberUpgrade.ts","webpack:///./src/Gang/GangMemberUpgrades.ts","webpack:///./src/Gang/data/Constants.ts","webpack:///./src/Gang/data/power.ts","webpack:///./src/Gang/data/tasks.ts","webpack:///./src/Gang/data/upgrades.ts","webpack:///./src/Gang/formulas/formulas.ts","webpack:///./src/Gang/ui/AscensionModal.tsx","webpack:///./src/Gang/ui/BonusTime.tsx","webpack:///./src/Gang/ui/Context.ts","webpack:///./src/Gang/ui/EquipmentsSubpage.tsx","webpack:///./src/Gang/ui/GangMemberCard.tsx","webpack:///./src/Gang/ui/GangMemberCardContent.tsx","webpack:///./src/Gang/ui/GangMemberList.tsx","webpack:///./src/Gang/ui/GangMemberStats.tsx","webpack:///./src/Gang/ui/GangRoot.tsx","webpack:///./src/Gang/ui/GangStats.tsx","webpack:///./src/Gang/ui/ManagementSubpage.tsx","webpack:///./src/Gang/ui/RecruitButton.tsx","webpack:///./src/Gang/ui/RecruitModal.tsx","webpack:///./src/Gang/ui/TaskDescription.tsx","webpack:///./src/Gang/ui/TaskSelector.tsx","webpack:///./src/Gang/ui/TerritoryInfoModal.tsx","webpack:///./src/Gang/ui/TerritorySubpage.tsx","webpack:///./src/Hacking.ts","webpack:///./src/Hacking/netscriptCanHack.ts","webpack:///./src/Hacknet/HacknetHelpers.tsx","webpack:///./src/Hacknet/HacknetNode.ts","webpack:///./src/Hacknet/HacknetServer.ts","webpack:///./src/Hacknet/HashManager.ts","webpack:///./src/Hacknet/HashUpgrade.ts","webpack:///./src/Hacknet/HashUpgrades.ts","webpack:///./src/Hacknet/data/Constants.ts","webpack:///./src/Hacknet/data/HashUpgradesMetadata.tsx","webpack:///./src/Hacknet/formulas/HacknetNodes.ts","webpack:///./src/Hacknet/formulas/HacknetServers.ts","webpack:///./src/Hacknet/ui/GeneralInfo.tsx","webpack:///./src/Hacknet/ui/HacknetNodeElem.tsx","webpack:///./src/Hacknet/ui/HacknetRoot.tsx","webpack:///./src/Hacknet/ui/HacknetServerElem.tsx","webpack:///./src/Hacknet/ui/HacknetUpgradeElem.tsx","webpack:///./src/Hacknet/ui/HashUpgradeModal.tsx","webpack:///./src/Hacknet/ui/MultiplierButtons.tsx","webpack:///./src/Hacknet/ui/PlayerInfo.tsx","webpack:///./src/Hacknet/ui/PurchaseButton.tsx","webpack:///./src/Hospital/Hospital.ts","webpack:///./src/Infiltration/formulas/game.ts","webpack:///./src/Infiltration/formulas/victory.ts","webpack:///./src/Infiltration/ui/BackwardGame.tsx","webpack:///./src/Infiltration/ui/BlinkingCursor.tsx","webpack:///./src/Infiltration/ui/BracketGame.tsx","webpack:///./src/Infiltration/ui/BribeGame.tsx","webpack:///./src/Infiltration/ui/CheatCodeGame.tsx","webpack:///./src/Infiltration/ui/Countdown.tsx","webpack:///./src/Infiltration/ui/Cyberpunk2077Game.tsx","webpack:///./src/Infiltration/ui/Difficulty.ts","webpack:///./src/Infiltration/ui/Game.tsx","webpack:///./src/Infiltration/ui/GameTimer.tsx","webpack:///./src/Infiltration/ui/InfiltrationRoot.tsx","webpack:///./src/Infiltration/ui/Intro.tsx","webpack:///./src/Infiltration/ui/KeyHandler.tsx","webpack:///./src/Infiltration/ui/MinesweeperGame.tsx","webpack:///./src/Infiltration/ui/SlashGame.tsx","webpack:///./src/Infiltration/ui/Victory.tsx","webpack:///./src/Infiltration/ui/WireCuttingGame.tsx","webpack:///./src/Infiltration/utils.ts","webpack:///./src/InteractiveTutorial.ts","webpack:///./src/Literature/Enums.ts","webpack:///./src/Literature/Literature.ts","webpack:///./src/Literature/LiteratureHelpers.ts","webpack:///./src/Literature/Literatures.ts","webpack:///./src/Locations/Cities.ts","webpack:///./src/Locations/City.ts","webpack:///./src/Locations/Enums.ts","webpack:///./src/Locations/Location.ts","webpack:///./src/Locations/Locations.ts","webpack:///./src/Locations/data/LocationsMetadata.ts","webpack:///./src/Locations/ui/ApplyToJobButton.tsx","webpack:///./src/Locations/ui/CasinoLocation.tsx","webpack:///./src/Locations/ui/City.tsx","webpack:///./src/Locations/ui/CompanyLocation.tsx","webpack:///./src/Locations/ui/CoresButton.tsx","webpack:///./src/Locations/ui/GenericLocation.tsx","webpack:///./src/Locations/ui/GymLocation.tsx","webpack:///./src/Locations/ui/HospitalLocation.tsx","webpack:///./src/Locations/ui/PurchaseServerModal.tsx","webpack:///./src/Locations/ui/RamButton.tsx","webpack:///./src/Locations/ui/SlumsLocation.tsx","webpack:///./src/Locations/ui/SpecialLocation.tsx","webpack:///./src/Locations/ui/TechVendorLocation.tsx","webpack:///./src/Locations/ui/TorButton.tsx","webpack:///./src/Locations/ui/TravelAgencyRoot.tsx","webpack:///./src/Locations/ui/TravelConfirmationModal.tsx","webpack:///./src/Locations/ui/UniversityLocation.tsx","webpack:///./src/Message/Enums.ts","webpack:///./src/Message/Message.ts","webpack:///./src/Message/MessageHelpers.tsx","webpack:///./src/Milestones/Milestones.ts","webpack:///./src/Milestones/ui/MilestonesRoot.tsx","webpack:///./src/Netscript/APIWrapper.ts","webpack:///./src/Netscript/Environment.ts","webpack:///./src/Netscript/NetscriptHelpers.tsx","webpack:///./src/Netscript/Pid.ts","webpack:///./src/Netscript/RamCostGenerator.ts","webpack:///./src/Netscript/RecentScripts.ts","webpack:///./src/Netscript/ScriptDeath.ts","webpack:///./src/Netscript/WorkerScript.ts","webpack:///./src/Netscript/WorkerScripts.ts","webpack:///./src/Netscript/killWorkerScript.ts","webpack:///./src/NetscriptFunctions.ts","webpack:///./src/NetscriptFunctions/Bladeburner.ts","webpack:///./src/NetscriptFunctions/CodingContract.ts","webpack:///./src/NetscriptFunctions/Corporation.ts","webpack:///./src/NetscriptFunctions/Extra.ts","webpack:///./src/NetscriptFunctions/Flags.ts","webpack:///./src/NetscriptFunctions/Formulas.ts","webpack:///./src/NetscriptFunctions/Gang.ts","webpack:///./src/NetscriptFunctions/Grafting.ts","webpack:///./src/NetscriptFunctions/Hacknet.ts","webpack:///./src/NetscriptFunctions/Infiltration.ts","webpack:///./src/NetscriptFunctions/Singularity.ts","webpack:///./src/NetscriptFunctions/Sleeve.ts","webpack:///./src/NetscriptFunctions/Stanek.ts","webpack:///./src/NetscriptFunctions/StockMarket.ts","webpack:///./src/NetscriptFunctions/UserInterface.ts","webpack:///./src/NetscriptFunctions/toNative.ts","webpack:///./src/NetscriptJSEvaluator.ts","webpack:///./src/NetscriptPort.ts","webpack:///./src/NetscriptWorker.ts","webpack:///./src/NetworkShare/Share.tsx","webpack:///./src/NetworkShare/formulas/share.tsx","webpack:///./src/Paths/ContentFile.ts","webpack:///./src/Paths/ContractFilePath.ts","webpack:///./src/Paths/Directory.ts","webpack:///./src/Paths/FilePath.ts","webpack:///./src/Paths/GlobbedFiles.ts","webpack:///./src/Paths/ProgramFilePath.ts","webpack:///./src/Paths/ScriptFilePath.ts","webpack:///./src/Paths/TextFilePath.ts","webpack:///./src/PersonObjects/Grafting/EntropyAccumulation.ts","webpack:///./src/PersonObjects/Grafting/GraftableAugmentation.ts","webpack:///./src/PersonObjects/Grafting/GraftingHelpers.ts","webpack:///./src/PersonObjects/Grafting/ui/GraftingRoot.tsx","webpack:///./src/PersonObjects/Multipliers.ts","webpack:///./src/PersonObjects/Person.ts","webpack:///./src/PersonObjects/PersonMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObject.ts","webpack:///./src/PersonObjects/Player/PlayerObjectAugmentationMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectBladeburnerMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectCorporationMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectGangMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectGeneralMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectServerMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectWorkMethods.ts","webpack:///./src/PersonObjects/Sleeve/Sleeve.ts","webpack:///./src/PersonObjects/Sleeve/SleeveCovenantPurchases.tsx","webpack:///./src/PersonObjects/Sleeve/SleeveMethods.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveBladeburnerWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveClassWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveCompanyWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveCrimeWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveFactionWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveInfiltrateWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveRecoveryWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveSupportWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveSynchroWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/Work.ts","webpack:///./src/PersonObjects/Sleeve/ui/CovenantPurchasesRoot.tsx","webpack:///./src/PersonObjects/Sleeve/ui/CovenantSleeveMemoryUpgrade.tsx","webpack:///./src/PersonObjects/Sleeve/ui/FAQModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/MoreStatsModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/SleeveAugmentationsModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/SleeveElem.tsx","webpack:///./src/PersonObjects/Sleeve/ui/SleeveRoot.tsx","webpack:///./src/PersonObjects/Sleeve/ui/StatsElement.tsx","webpack:///./src/PersonObjects/Sleeve/ui/TaskSelector.tsx","webpack:///./src/PersonObjects/Sleeve/ui/TravelModal.tsx","webpack:///./src/PersonObjects/formulas/intelligence.ts","webpack:///./src/PersonObjects/formulas/reputation.ts","webpack:///./src/PersonObjects/formulas/skill.ts","webpack:///./src/Player.ts","webpack:///./src/Prestige.ts","webpack:///./src/Programs/Enums.ts","webpack:///./src/Programs/Program.ts","webpack:///./src/Programs/ProgramHelpers.ts","webpack:///./src/Programs/Programs.ts","webpack:///./src/Programs/ui/ProgramsRoot.tsx","webpack:///./src/RedPill.tsx","webpack:///./src/RemoteFileAPI/MessageDefinitions.ts","webpack:///./src/RemoteFileAPI/MessageHandlers.ts","webpack:///./src/RemoteFileAPI/Remote.ts","webpack:///./src/RemoteFileAPI/RemoteFileAPI.ts","webpack:///./src/SaveObject.ts","webpack:///./src/Script/LoadedModule.ts","webpack:///./src/Script/RamCalculationErrorCodes.ts","webpack:///./src/Script/RamCalculations.ts","webpack:///./src/Script/RunningScript.ts","webpack:///./src/Script/Script.ts","webpack:///./src/Script/ScriptHelpers.ts","webpack:///./src/ScriptEditor/CursorPositions.ts","webpack:///./src/ScriptEditor/ui/Editor.tsx","webpack:///./src/ScriptEditor/ui/NoOpenScripts.tsx","webpack:///./src/ScriptEditor/ui/OpenScript.ts","webpack:///./src/ScriptEditor/ui/OptionsModal.tsx","webpack:///./src/ScriptEditor/ui/ScriptEditorContext.tsx","webpack:///./src/ScriptEditor/ui/ScriptEditorRoot.tsx","webpack:///./src/ScriptEditor/ui/Tab.tsx","webpack:///./src/ScriptEditor/ui/Tabs.tsx","webpack:///./src/ScriptEditor/ui/ThemeEditorModal.tsx","webpack:///./src/ScriptEditor/ui/Toolbar.tsx","webpack:///./src/ScriptEditor/ui/themes.ts","webpack:///./src/ScriptEditor/ui/useVimEditor.tsx","webpack:///./src/ScriptEditor/ui/utils.ts","webpack:///./src/Server/AllServers.ts","webpack:///./src/Server/BaseServer.ts","webpack:///./src/Server/Server.ts","webpack:///./src/Server/ServerHelpers.ts","webpack:///./src/Server/ServerPurchases.ts","webpack:///./src/Server/data/SpecialServers.ts","webpack:///./src/Server/data/servers.ts","webpack:///./src/Server/formulas/grow.ts","webpack:///./src/Settings/SettingEnums.ts","webpack:///./src/Settings/Settings.ts","webpack:///./src/Sidebar/ui/SidebarAccordion.tsx","webpack:///./src/Sidebar/ui/SidebarItem.tsx","webpack:///./src/Sidebar/ui/SidebarRoot.tsx","webpack:///./src/SourceFile/SourceFile.ts","webpack:///./src/SourceFile/SourceFiles.tsx","webpack:///./src/SourceFile/applySourceFile.ts","webpack:///./src/StockMarket/BuyingAndSelling.tsx","webpack:///./src/StockMarket/Enums.ts","webpack:///./src/StockMarket/Order.ts","webpack:///./src/StockMarket/OrderProcessing.tsx","webpack:///./src/StockMarket/PlayerInfluencing.ts","webpack:///./src/StockMarket/Stock.ts","webpack:///./src/StockMarket/StockMarket.tsx","webpack:///./src/StockMarket/StockMarketCosts.ts","webpack:///./src/StockMarket/StockMarketHelpers.ts","webpack:///./src/StockMarket/data/Constants.ts","webpack:///./src/StockMarket/data/InitStockMetadata.ts","webpack:///./src/StockMarket/data/TickerHeaderFormatData.ts","webpack:///./src/StockMarket/ui/InfoAndPurchases.tsx","webpack:///./src/StockMarket/ui/PlaceOrderModal.tsx","webpack:///./src/StockMarket/ui/StockMarketRoot.tsx","webpack:///./src/StockMarket/ui/StockTicker.tsx","webpack:///./src/StockMarket/ui/StockTickerHeaderText.tsx","webpack:///./src/StockMarket/ui/StockTickerOrder.tsx","webpack:///./src/StockMarket/ui/StockTickerOrderList.tsx","webpack:///./src/StockMarket/ui/StockTickerPositionText.tsx","webpack:///./src/StockMarket/ui/StockTickerTxButton.tsx","webpack:///./src/StockMarket/ui/StockTickers.tsx","webpack:///./src/StockMarket/ui/StockTickersConfig.tsx","webpack:///./src/Terminal.ts","webpack:///./src/Terminal/HelpText.ts","webpack:///./src/Terminal/OutputTypes.tsx","webpack:///./src/Terminal/Parser.ts","webpack:///./src/Terminal/Terminal.ts","webpack:///./src/Terminal/TerminalEvents.ts","webpack:///./src/Terminal/commands/alias.ts","webpack:///./src/Terminal/commands/analyze.ts","webpack:///./src/Terminal/commands/apr1.ts","webpack:///./src/Terminal/commands/backdoor.ts","webpack:///./src/Terminal/commands/buy.ts","webpack:///./src/Terminal/commands/cat.ts","webpack:///./src/Terminal/commands/cd.ts","webpack:///./src/Terminal/commands/changelog.ts","webpack:///./src/Terminal/commands/check.ts","webpack:///./src/Terminal/commands/common/editor.ts","webpack:///./src/Terminal/commands/connect.ts","webpack:///./src/Terminal/commands/cp.ts","webpack:///./src/Terminal/commands/download.ts","webpack:///./src/Terminal/commands/expr.ts","webpack:///./src/Terminal/commands/free.ts","webpack:///./src/Terminal/commands/grow.ts","webpack:///./src/Terminal/commands/hack.ts","webpack:///./src/Terminal/commands/help.ts","webpack:///./src/Terminal/commands/history.ts","webpack:///./src/Terminal/commands/home.ts","webpack:///./src/Terminal/commands/hostname.ts","webpack:///./src/Terminal/commands/kill.ts","webpack:///./src/Terminal/commands/killall.ts","webpack:///./src/Terminal/commands/ls.tsx","webpack:///./src/Terminal/commands/lscpu.ts","webpack:///./src/Terminal/commands/mem.ts","webpack:///./src/Terminal/commands/mv.ts","webpack:///./src/Terminal/commands/nano.ts","webpack:///./src/Terminal/commands/ps.ts","webpack:///./src/Terminal/commands/rm.ts","webpack:///./src/Terminal/commands/run.ts","webpack:///./src/Terminal/commands/runProgram.ts","webpack:///./src/Terminal/commands/runScript.ts","webpack:///./src/Terminal/commands/scan.ts","webpack:///./src/Terminal/commands/scananalyze.ts","webpack:///./src/Terminal/commands/scp.ts","webpack:///./src/Terminal/commands/sudov.ts","webpack:///./src/Terminal/commands/tail.ts","webpack:///./src/Terminal/commands/top.ts","webpack:///./src/Terminal/commands/unalias.ts","webpack:///./src/Terminal/commands/vim.ts","webpack:///./src/Terminal/commands/weaken.ts","webpack:///./src/Terminal/commands/wget.ts","webpack:///./src/Terminal/getTabCompletionPossibilities.ts","webpack:///./src/Terminal/ui/TerminalActionTimer.tsx","webpack:///./src/Terminal/ui/TerminalInput.tsx","webpack:///./src/Terminal/ui/TerminalRoot.tsx","webpack:///./src/TextFile.ts","webpack:///./src/Themes/Styles.ts","webpack:///./src/Themes/Themes.ts","webpack:///./src/Themes/data/dark-blue/index.ts","webpack:///./src/Themes/data/dark-plus/index.ts","webpack:///./src/Themes/data/default-lite/index.ts","webpack:///./src/Themes/data/default/index.ts","webpack:///./src/Themes/data/discord-like/index.ts","webpack:///./src/Themes/data/dracula/index.ts","webpack:///./src/Themes/data/iron-man/index.ts","webpack:///./src/Themes/data/light/index.ts","webpack:///./src/Themes/data/mayukai-dark/index.ts","webpack:///./src/Themes/data/monokai-ish/index.ts","webpack:///./src/Themes/data/muted-gold-blue/index.ts","webpack:///./src/Themes/data/one-dark/index.ts","webpack:///./src/Themes/data/purple/index.ts","webpack:///./src/Themes/data/smooth-green/index.ts","webpack:///./src/Themes/data/warmer/index.ts","webpack:///./src/Themes/data/zerenity/index.ts","webpack:///./src/Themes/ui/StyleEditorButton.tsx","webpack:///./src/Themes/ui/StyleEditorModal.tsx","webpack:///./src/Themes/ui/Theme.tsx","webpack:///./src/Themes/ui/ThemeBrowser.tsx","webpack:///./src/Themes/ui/ThemeCollaborate.tsx","webpack:///./src/Themes/ui/ThemeEditorButton.tsx","webpack:///./src/Themes/ui/ThemeEditorModal.tsx","webpack:///./src/Themes/ui/ThemeEntry.tsx","webpack:///./src/ThirdParty/JSInterpreter.js","webpack:///./src/ThirdParty/colorUtils.ts","webpack:///./src/Types/Jsonable.ts","webpack:///./src/Types/Record.ts","webpack:///./src/Types/strings.ts","webpack:///./src/UncaughtPromiseHandler.ts","webpack:///./src/Work/ClassWork.tsx","webpack:///./src/Work/CompanyWork.tsx","webpack:///./src/Work/CreateProgramWork.ts","webpack:///./src/Work/CrimeWork.ts","webpack:///./src/Work/Enums.ts","webpack:///./src/Work/FactionWork.tsx","webpack:///./src/Work/Formulas.ts","webpack:///./src/Work/GraftingWork.tsx","webpack:///./src/Work/InvalidWork.ts","webpack:///./src/Work/Work.ts","webpack:///./src/Work/WorkStats.ts","webpack:///./src/data/codingcontracttypes.ts","webpack:///./src/db.tsx","webpack:///./src/engine.tsx","webpack:///./src/hash/hash.ts","webpack:///./src/index.tsx","webpack:///./src/types.ts","webpack:///./src/ui/ActiveScripts/ActiveScriptsPage.tsx","webpack:///./src/ui/ActiveScripts/ActiveScriptsRoot.tsx","webpack:///./src/ui/ActiveScripts/RecentScriptAccordion.tsx","webpack:///./src/ui/ActiveScripts/RecentScriptsPage.tsx","webpack:///./src/ui/ActiveScripts/ScriptProduction.tsx","webpack:///./src/ui/ActiveScripts/ServerAccordion.tsx","webpack:///./src/ui/ActiveScripts/ServerAccordionContent.tsx","webpack:///./src/ui/ActiveScripts/ServerAccordions.tsx","webpack:///./src/ui/ActiveScripts/WorkerScriptAccordion.tsx","webpack:///./src/ui/Apr1.tsx","webpack:///./src/ui/CharacterStats.tsx","webpack:///./src/ui/Components/ButtonWithTooltip.tsx","webpack:///./src/ui/Components/CustomBoundary.tsx","webpack:///./src/ui/Enums.ts","webpack:///./src/ui/ErrorBoundary.tsx","webpack:///./src/ui/GameRoot.tsx","webpack:///./src/ui/InteractiveTutorial/ITutorialEvents.ts","webpack:///./src/ui/InteractiveTutorial/InteractiveTutorialRoot.tsx","webpack:///./src/ui/LoadingScreen.tsx","webpack:///./src/ui/MD/MD.tsx","webpack:///./src/ui/MD/a.tsx","webpack:///./src/ui/MD/code.tsx","webpack:///./src/ui/MD/components.tsx","webpack:///./src/ui/React/ANSIITypography.tsx","webpack:///./src/ui/React/AlertManager.tsx","webpack:///./src/ui/React/BypassWrapper.tsx","webpack:///./src/ui/React/CharacterOverview.tsx","webpack:///./src/ui/React/CinematicLine.tsx","webpack:///./src/ui/React/CinematicText.tsx","webpack:///./src/ui/React/CodingContractModal.tsx","webpack:///./src/ui/React/CompanyDropdown.tsx","webpack:///./src/ui/React/ConfirmationModal.tsx","webpack:///./src/ui/React/CopyableText.tsx","webpack:///./src/ui/React/CorruptableText.tsx","webpack:///./src/ui/React/DeleteGameButton.tsx","webpack:///./src/ui/React/DialogBox.tsx","webpack:///./src/ui/React/Documentation.tsx","webpack:///./src/ui/React/Favor.tsx","webpack:///./src/ui/React/HashRate.tsx","webpack:///./src/ui/React/Hashes.tsx","webpack:///./src/ui/React/ImportSave/ComparisonIcon.tsx","webpack:///./src/ui/React/ImportSave/ImportSave.tsx","webpack:///./src/ui/React/KillScriptsModal.tsx","webpack:///./src/ui/React/LogBoxManager.tsx","webpack:///./src/ui/React/Modal.tsx","webpack:///./src/ui/React/Money.tsx","webpack:///./src/ui/React/MoneyRate.tsx","webpack:///./src/ui/React/NumberInput.tsx","webpack:///./src/ui/React/OptionSwitch.tsx","webpack:///./src/ui/React/Overview.tsx","webpack:///./src/ui/React/Progress.tsx","webpack:///./src/ui/React/PromptManager.tsx","webpack:///./src/ui/React/RecoveryRoot.tsx","webpack:///./src/ui/React/Reputation.tsx","webpack:///./src/ui/React/ReputationRate.tsx","webpack:///./src/ui/React/ServerDropdown.tsx","webpack:///./src/ui/React/Snackbar.tsx","webpack:///./src/ui/React/SoftResetButton.tsx","webpack:///./src/ui/React/StaticModal.tsx","webpack:///./src/ui/React/StatsProgressBar.tsx","webpack:///./src/ui/React/StatsRow.tsx","webpack:///./src/ui/React/StatsTable.tsx","webpack:///./src/ui/React/Table.tsx","webpack:///./src/ui/React/TablePaginationActionsAll.tsx","webpack:///./src/ui/React/WorldMap.tsx","webpack:///./src/ui/React/hooks.ts","webpack:///./src/ui/Router.ts","webpack:///./src/ui/WorkInProgressRoot.tsx","webpack:///./src/ui/formatNumber.ts","webpack:///./src/utils/CompressionContracts.ts","webpack:///./src/utils/EnumHelper.ts","webpack:///./src/utils/ErrorHelper.ts","webpack:///./src/utils/EventEmitter.ts","webpack:///./src/utils/HammingCodeTools.ts","webpack:///./src/utils/Heap.ts","webpack:///./src/utils/IPAddress.ts","webpack:///./src/utils/JSONReviver.ts","webpack:///./src/utils/MoneySourceTracker.ts","webpack:///./src/utils/StringHelperFunctions.ts","webpack:///./src/utils/V2Modal.tsx","webpack:///./src/utils/Validator.ts","webpack:///./src/utils/calculateEffectWithFactors.ts","webpack:///./src/utils/helpers/ArrayHelpers.ts","webpack:///./src/utils/helpers/N00dles.ts","webpack:///./src/utils/helpers/addOffset.ts","webpack:///./src/utils/helpers/createProgressBarText.ts","webpack:///./src/utils/helpers/createRandomString.ts","webpack:///./src/utils/helpers/enum.ts","webpack:///./src/utils/helpers/exceptionAlert.ts","webpack:///./src/utils/helpers/formatTime.ts","webpack:///./src/utils/helpers/getKeyList.ts","webpack:///./src/utils/helpers/getRandomByte.ts","webpack:///./src/utils/helpers/getRandomInt.ts","webpack:///./src/utils/helpers/getTimestamp.ts","webpack:///./src/utils/helpers/isPowerOfTwo.ts","webpack:///./src/utils/helpers/isValidNumber.ts","webpack:///./src/utils/helpers/keyCodes.ts","webpack:///./src/utils/helpers/roundToTwo.ts","webpack:///./src/utils/helpers/scriptKey.ts","webpack:///./src/utils/helpers/string.ts","webpack:///./src/utils/helpers/typeAssertion.ts","webpack:///./src/utils/v1APIBreak.ts","webpack:///./src/utils/v2APIBreak.ts","webpack:///./src/Documentation/doc/advanced/bitnodes.md","webpack:///./src/Documentation/doc/advanced/bladeburners.md","webpack:///./src/Documentation/doc/advanced/corporations.md","webpack:///./src/Documentation/doc/advanced/gang.md","webpack:///./src/Documentation/doc/advanced/grafting.md","webpack:///./src/Documentation/doc/advanced/hacknetservers.md","webpack:///./src/Documentation/doc/advanced/intelligence.md","webpack:///./src/Documentation/doc/advanced/sleeves.md","webpack:///./src/Documentation/doc/advanced/sourcefiles.md","webpack:///./src/Documentation/doc/advanced/stanek.md","webpack:///./src/Documentation/doc/basic/augmentations.md","webpack:///./src/Documentation/doc/basic/codingcontracts.md","webpack:///./src/Documentation/doc/basic/companies.md","webpack:///./src/Documentation/doc/basic/crimes.md","webpack:///./src/Documentation/doc/basic/factions.md","webpack:///./src/Documentation/doc/basic/hacking.md","webpack:///./src/Documentation/doc/basic/hacknet_nodes.md","webpack:///./src/Documentation/doc/basic/infiltration.md","webpack:///./src/Documentation/doc/basic/ram.md","webpack:///./src/Documentation/doc/basic/reputation.md","webpack:///./src/Documentation/doc/basic/scripts.md","webpack:///./src/Documentation/doc/basic/servers.md","webpack:///./src/Documentation/doc/basic/stats.md","webpack:///./src/Documentation/doc/basic/stockmarket.md","webpack:///./src/Documentation/doc/basic/terminal.md","webpack:///./src/Documentation/doc/basic/world.md","webpack:///./src/Documentation/doc/changelog.md","webpack:///./src/Documentation/doc/help/bitnode_order.md","webpack:///./src/Documentation/doc/help/getting_started.md","webpack:///./src/Documentation/doc/help/tools_and_resources.md","webpack:///./src/Documentation/doc/index.md","webpack:///./src/Documentation/doc/migrations/v1.md","webpack:///./src/Documentation/doc/migrations/v2.md","webpack:///./src/Documentation/doc/programming/game_frozen.md","webpack:///./src/Documentation/doc/programming/hackingalgorithms.md","webpack:///./src/Documentation/doc/programming/learn.md","webpack:///./src/Documentation/doc/programming/remote_api.md","webpack:///./src/ScriptEditor/NetscriptDefinitions.d.ts","webpack:///webpack/bootstrap","webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/amd options","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce","webpack:///webpack/startup"],"sourcesContent":["import React from \"react\";\n\nimport { Box, Typography } from \"@mui/material\";\n\nimport { Achievement } from \"./Achievements\";\nimport { Settings } from \"../Settings/Settings\";\nimport { AchievementIcon } from \"./AchievementIcon\";\n\ninterface IProps {\n achievement: Achievement;\n unlockedOn?: number;\n cssFiltersUnlocked: string;\n cssFiltersLocked: string;\n}\n\nexport function AchievementEntry({\n achievement,\n unlockedOn,\n cssFiltersUnlocked,\n cssFiltersLocked,\n}: IProps): JSX.Element {\n if (!achievement) return <>;\n const isUnlocked = !!unlockedOn;\n\n const mainColor = isUnlocked ? Settings.theme.primary : Settings.theme.secondarylight;\n\n let achievedOn = \"\";\n if (unlockedOn) {\n achievedOn = new Date(unlockedOn).toLocaleString();\n }\n\n return (\n \n \n \n \n \n {achievement.Name}\n \n \n {achievement.Description}\n \n {isUnlocked && (\n \n Acquired on {achievedOn}\n \n )}\n \n \n \n );\n}\n","import React, { useState } from \"react\";\n\nimport { Box } from \"@mui/material\";\n\nimport { Achievement } from \"./Achievements\";\nimport { Settings } from \"../Settings/Settings\";\n\ninterface IProps {\n achievement: Achievement;\n unlocked: boolean;\n colorFilters: string;\n size: string;\n}\n\nexport function AchievementIcon({ achievement, unlocked, colorFilters, size }: IProps): JSX.Element {\n const [imgLoaded, setImgLoaded] = useState(false);\n const mainColor = unlocked ? Settings.theme.primarydark : Settings.theme.secondarydark;\n\n if (!achievement.Icon) return <>;\n return (\n \n setImgLoaded(true)}\n alt={achievement.Name}\n />\n \n );\n}\n","import React from \"react\";\n\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography } from \"@mui/material\";\n\nimport { AchievementEntry } from \"./AchievementEntry\";\nimport { Achievement, PlayerAchievement } from \"./Achievements\";\nimport { Settings } from \"../Settings/Settings\";\nimport { getFiltersFromHex } from \"../ThirdParty/colorUtils\";\nimport { CorruptableText } from \"../ui/React/CorruptableText\";\n\ninterface IProps {\n achievements: Achievement[];\n playerAchievements: PlayerAchievement[];\n}\n\nexport function AchievementList({ achievements, playerAchievements }: IProps): JSX.Element {\n // Need to transform the primary color into css filters to change the color of the SVG.\n const cssPrimary = getFiltersFromHex(Settings.theme.primary);\n const cssSecondary = getFiltersFromHex(Settings.theme.secondary);\n\n const data = achievements\n .map((achievement) => ({\n achievement,\n unlockedOn: playerAchievements.find((playerAchievement) => playerAchievement.ID === achievement.ID)?.unlockedOn,\n }))\n .sort((a, b) => (b.unlockedOn ?? 0) - (a.unlockedOn ?? 0));\n\n const unlocked = data.filter((entry) => entry.unlockedOn);\n\n // Hidden achievements\n const secret = data.filter((entry) => !entry.unlockedOn && entry.achievement.Secret);\n\n // Locked behind locked content (bitnode x)\n const unavailable = data.filter(\n (entry) =>\n !entry.unlockedOn && !entry.achievement.Secret && entry.achievement.Visible && !entry.achievement.Visible(),\n );\n\n // Remaining achievements\n const locked = data\n .filter((entry) => !unlocked.map((u) => u.achievement.ID).includes(entry.achievement.ID))\n .filter((entry) => !secret.map((u) => u.achievement.ID).includes(entry.achievement.ID))\n .filter((entry) => !unavailable.map((u) => u.achievement.ID).includes(entry.achievement.ID));\n\n return (\n \n \n {unlocked.length > 0 && (\n \n \n \n Acquired ({unlocked.length}/{data.length})\n \n \n \n {unlocked.map((item) => (\n \n ))}\n \n \n )}\n\n {locked.length > 0 && (\n \n \n \n Locked ({locked.length} remaining)\n \n \n \n {locked.map((item) => (\n \n ))}\n \n \n )}\n\n {unavailable.length > 0 && (\n \n \n \n Unavailable ({unavailable.length} remaining)\n \n \n \n \n {unavailable.length} additional achievements hidden behind content you don't have access to.\n \n \n \n )}\n\n {secret.length > 0 && (\n \n \n \n Secret ({secret.length} remaining)\n \n \n \n \n {secret.map((item) => (\n \n \n
\n
\n ))}\n
\n
\n
\n )}\n
\n \n );\n}\n","import {\n AugmentationName,\n BlackOperationName,\n CityName,\n CompletedProgramName,\n CorpUnlockName,\n FactionName,\n IndustryType,\n} from \"@enums\";\nimport { SkillNames } from \"../Bladeburner/data/SkillNames\";\nimport { Skills } from \"../Bladeburner/Skills\";\nimport { CONSTANTS } from \"../Constants\";\nimport { Exploit } from \"../Exploits/Exploit\";\nimport { Factions } from \"../Faction/Factions\";\nimport { AllGangs } from \"../Gang/AllGangs\";\nimport { GangConstants } from \"../Gang/data/Constants\";\nimport { HacknetNodeConstants, HacknetServerConstants } from \"../Hacknet/data/Constants\";\nimport { hasHacknetServers } from \"../Hacknet/HacknetHelpers\";\nimport { HacknetNode } from \"../Hacknet/HacknetNode\";\nimport { HacknetServer } from \"../Hacknet/HacknetServer\";\nimport { Player } from \"@player\";\nimport { GetAllServers, GetServer } from \"../Server/AllServers\";\nimport { SpecialServers } from \"../Server/data/SpecialServers\";\nimport { Server } from \"../Server/Server\";\nimport { Router } from \"../ui/GameRoot\";\nimport { Page } from \"../ui/Router\";\nimport data from \"./AchievementData.json\";\nimport { isClassWork } from \"../Work/ClassWork\";\nimport { currentNodeMults } from \"../BitNode/BitNodeMultipliers\";\nimport { workerScripts } from \"../Netscript/WorkerScripts\";\n\nimport { getRecordValues } from \"../Types/Record\";\n\n// Unable to correctly cast the JSON data into AchievementDataJson type otherwise...\nconst achievementData = ((data)).achievements;\n\nexport interface Achievement {\n ID: string;\n Icon?: string;\n Name?: string;\n Description?: string;\n Secret?: boolean;\n Condition: () => boolean;\n Visible?: () => boolean;\n AdditionalUnlock?: string[]; // IDs of achievements that should be awarded when awarding this one\n}\n\nexport interface PlayerAchievement {\n ID: string;\n unlockedOn?: number;\n}\n\nexport interface AchievementDataJson {\n achievements: Record;\n}\n\nexport interface AchievementData {\n ID: string;\n Name: string;\n Description: string;\n}\n\nfunction bitNodeFinishedState(): boolean {\n const wd = GetServer(SpecialServers.WorldDaemon);\n if (!(wd instanceof Server)) return false;\n if (wd.backdoorInstalled) return true;\n return Player.bladeburner !== null && BlackOperationName.OperationDaedalus in Player.bladeburner.blackops;\n}\n\nfunction hasAccessToSF(bn: number): boolean {\n return Player.bitNodeN === bn || Player.sourceFileLvl(bn) > 0;\n}\n\nfunction knowsAboutBitverse(): boolean {\n return Player.sourceFiles.size > 0;\n}\n\nfunction sfAchievements(): Record {\n const achs: Record = {};\n for (let i = 1; i <= 12; i++) {\n const ID = `SF${i}.1`;\n achs[ID] = {\n ...achievementData[ID],\n Icon: ID,\n Visible: knowsAboutBitverse,\n Condition: () => Player.sourceFileLvl(i) >= 1,\n };\n }\n return achs;\n}\n\nexport const achievements: Record = {\n [FactionName.CyberSec.toUpperCase()]: {\n ...achievementData[FactionName.CyberSec.toUpperCase()],\n Icon: \"CSEC\",\n Condition: () => Player.factions.includes(FactionName.CyberSec),\n },\n [FactionName.NiteSec.toUpperCase()]: {\n ...achievementData[FactionName.NiteSec.toUpperCase()],\n Icon: FactionName.NiteSec,\n Condition: () => Player.factions.includes(FactionName.NiteSec),\n },\n THE_BLACK_HAND: {\n ...achievementData.THE_BLACK_HAND,\n Icon: \"TBH\",\n Condition: () => Player.factions.includes(FactionName.TheBlackHand),\n },\n [FactionName.BitRunners.toUpperCase()]: {\n ...achievementData[FactionName.BitRunners.toUpperCase()],\n Icon: FactionName.BitRunners.toLowerCase(),\n Condition: () => Player.factions.includes(FactionName.BitRunners),\n },\n [FactionName.Daedalus.toUpperCase()]: {\n ...achievementData[FactionName.Daedalus.toUpperCase()],\n Icon: FactionName.Daedalus.toLowerCase(),\n Condition: () => Player.factions.includes(FactionName.Daedalus),\n },\n THE_COVENANT: {\n ...achievementData.THE_COVENANT,\n Icon: FactionName.TheCovenant.toLowerCase().replace(/ /g, \"\"),\n Condition: () => Player.factions.includes(FactionName.TheCovenant),\n },\n [FactionName.Illuminati.toUpperCase()]: {\n ...achievementData[FactionName.Illuminati.toUpperCase()],\n Icon: FactionName.Illuminati.toLowerCase(),\n Condition: () => Player.factions.includes(FactionName.Illuminati),\n },\n \"BRUTESSH.EXE\": {\n ...achievementData[\"BRUTESSH.EXE\"],\n Icon: \"p0\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.bruteSsh),\n },\n \"FTPCRACK.EXE\": {\n ...achievementData[\"FTPCRACK.EXE\"],\n Icon: \"p1\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.ftpCrack),\n },\n //-----------------------------------------------------\n \"RELAYSMTP.EXE\": {\n ...achievementData[\"RELAYSMTP.EXE\"],\n Icon: \"p2\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.relaySmtp),\n },\n \"HTTPWORM.EXE\": {\n ...achievementData[\"HTTPWORM.EXE\"],\n Icon: \"p3\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.httpWorm),\n },\n \"SQLINJECT.EXE\": {\n ...achievementData[\"SQLINJECT.EXE\"],\n Icon: \"p4\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.sqlInject),\n },\n \"FORMULAS.EXE\": {\n ...achievementData[\"FORMULAS.EXE\"],\n Icon: \"formulas\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.formulas),\n },\n ...sfAchievements(),\n MONEY_1Q: {\n ...achievementData.MONEY_1Q,\n Icon: \"$1Q\",\n Condition: () => Player.money >= 1e18,\n },\n MONEY_M1B: {\n ...achievementData.MONEY_M1B,\n Icon: \"-1b\",\n Secret: true,\n Condition: () => Player.money <= -1e9,\n },\n INSTALL_1: {\n ...achievementData.INSTALL_1,\n Icon: \"install\",\n Condition: () => Player.augmentations.length >= 1,\n },\n INSTALL_100: {\n ...achievementData.INSTALL_100,\n Icon: \"install_100\",\n Condition: () => Player.augmentations.length >= 100,\n },\n QUEUE_40: {\n ...achievementData.QUEUE_40,\n Icon: \"queue40\",\n Condition: () => Player.queuedAugmentations.length >= 40,\n },\n HACKING_100000: {\n ...achievementData.HACKING_100000,\n Icon: \"hack100000\",\n Condition: () => Player.skills.hacking >= 100000,\n },\n COMBAT_3000: {\n ...achievementData.COMBAT_3000,\n Icon: \"combat3000\",\n Condition: () =>\n Player.skills.strength >= 3000 &&\n Player.skills.defense >= 3000 &&\n Player.skills.dexterity >= 3000 &&\n Player.skills.agility >= 3000,\n },\n NEUROFLUX_255: {\n ...achievementData.NEUROFLUX_255,\n Icon: \"nf255\",\n Condition: () => Player.augmentations.some((a) => a.name === AugmentationName.NeuroFluxGovernor && a.level >= 255),\n },\n NS2: {\n ...achievementData.NS2,\n Icon: \"ns2\",\n Condition: () => [...Player.getHomeComputer().scripts.values()].some((s) => s.filename.endsWith(\".js\")),\n },\n FROZE: {\n ...achievementData.FROZE,\n Icon: \"forze\",\n Condition: () => location.href.includes(\"noScripts\"),\n },\n RUNNING_SCRIPTS_1000: {\n ...achievementData.RUNNING_SCRIPTS_1000,\n Icon: \"run1000\",\n Condition: (): boolean => workerScripts.size >= 1000,\n },\n DRAIN_SERVER: {\n ...achievementData.DRAIN_SERVER,\n Icon: \"drain\",\n Condition: (): boolean => {\n for (const s of GetAllServers()) {\n if (s instanceof Server) {\n if (s.moneyMax > 0 && s.moneyAvailable === 0) return true;\n }\n }\n return false;\n },\n },\n MAX_RAM: {\n ...achievementData.MAX_RAM,\n Icon: \"maxram\",\n Condition: () => Player.getHomeComputer().maxRam === CONSTANTS.HomeComputerMaxRam,\n },\n MAX_CORES: {\n ...achievementData.MAX_CORES,\n Icon: \"maxcores\",\n Condition: () => Player.getHomeComputer().cpuCores === 8,\n },\n SCRIPTS_30: {\n ...achievementData.SCRIPTS_30,\n Icon: \"folders\",\n Condition: () => Player.getHomeComputer().scripts.size >= 30,\n },\n KARMA_1000000: {\n ...achievementData.KARMA_1000000,\n Icon: \"karma\",\n Secret: true,\n Condition: () => Player.karma <= -1e6,\n },\n STOCK_1q: {\n ...achievementData.STOCK_1q,\n Icon: \"$1Q\",\n Condition: () => Player.moneySourceB.stock >= 1e15,\n },\n DISCOUNT: {\n ...achievementData.DISCOUNT,\n Icon: \"discount\",\n Condition: (): boolean => {\n const p = GetServer(\"powerhouse-fitness\");\n if (!(p instanceof Server)) return false;\n return p.backdoorInstalled;\n },\n },\n SCRIPT_32GB: {\n ...achievementData.SCRIPT_32GB,\n Icon: \"bigcost\",\n Condition: () => [...Player.getHomeComputer().scripts.values()].some((s) => (s.ramUsage ?? 0) >= 32),\n },\n FIRST_HACKNET_NODE: {\n ...achievementData.FIRST_HACKNET_NODE,\n Icon: \"node\",\n Condition: () => !hasHacknetServers() && Player.hacknetNodes.length > 0,\n },\n \"30_HACKNET_NODE\": {\n ...achievementData[\"30_HACKNET_NODE\"],\n Icon: \"hacknet-all\",\n Condition: () => !hasHacknetServers() && Player.hacknetNodes.length >= 30,\n },\n MAX_HACKNET_NODE: {\n ...achievementData.MAX_HACKNET_NODE,\n Icon: \"hacknet-max\",\n Condition: (): boolean => {\n if (hasHacknetServers()) return false;\n for (const h of Player.hacknetNodes) {\n if (!(h instanceof HacknetNode)) return false;\n if (\n h.ram === HacknetNodeConstants.MaxRam &&\n h.cores === HacknetNodeConstants.MaxCores &&\n h.level === HacknetNodeConstants.MaxLevel\n )\n return true;\n }\n return false;\n },\n },\n HACKNET_NODE_10M: {\n ...achievementData.HACKNET_NODE_10M,\n Icon: \"hacknet-10m\",\n Condition: () => !hasHacknetServers() && Player.moneySourceB.hacknet >= 10e6,\n },\n REPUTATION_10M: {\n ...achievementData.REPUTATION_10M,\n Icon: \"reputation\",\n Condition: () => Object.values(Factions).some((f) => f.playerReputation >= 10e6),\n },\n DONATION: {\n ...achievementData.DONATION,\n Icon: \"donation\",\n Condition: () =>\n Object.values(Factions).some(\n (f) => f.favor >= Math.floor(CONSTANTS.BaseFavorToDonate * currentNodeMults.RepToDonateToFaction),\n ),\n },\n TRAVEL: {\n ...achievementData.TRAVEL,\n Icon: \"TRAVEL\",\n Condition: () => Player.city !== CityName.Sector12,\n },\n WORKOUT: {\n ...achievementData.WORKOUT,\n Icon: \"WORKOUT\",\n Condition: () => isClassWork(Player.currentWork),\n },\n TOR: {\n ...achievementData.TOR,\n Icon: \"TOR\",\n Condition: () => Player.hasTorRouter(),\n },\n HOSPITALIZED: {\n ...achievementData.HOSPITALIZED,\n Icon: \"OUCH\",\n Condition: () => Player.moneySourceB.hospitalization !== 0,\n },\n GANG: {\n ...achievementData.GANG,\n Icon: \"GANG\",\n Visible: () => hasAccessToSF(2),\n Condition: () => Player.gang !== null,\n },\n FULL_GANG: {\n ...achievementData.FULL_GANG,\n Icon: \"GANGMAX\",\n Visible: () => hasAccessToSF(2),\n Condition: () => Player.gang !== null && Player.gang.members.length === GangConstants.MaximumGangMembers,\n },\n GANG_TERRITORY: {\n ...achievementData.GANG_TERRITORY,\n Icon: \"GANG100%\",\n Visible: () => hasAccessToSF(2),\n Condition: () => Player.gang !== null && AllGangs[Player.gang.facName].territory >= 0.999,\n },\n GANG_MEMBER_POWER: {\n ...achievementData.GANG_MEMBER_POWER,\n Icon: \"GANG10000\",\n Visible: () => hasAccessToSF(2),\n Condition: () =>\n Player.gang !== null &&\n Player.gang.members.some(\n (m) =>\n m.hack >= 10000 || m.str >= 10000 || m.def >= 10000 || m.dex >= 10000 || m.agi >= 10000 || m.cha >= 10000,\n ),\n },\n CORPORATION: {\n ...achievementData.CORPORATION,\n Icon: \"CORP\",\n Visible: () => hasAccessToSF(3),\n Condition: () => Player.corporation !== null,\n },\n CORPORATION_BRIBE: {\n ...achievementData.CORPORATION_BRIBE,\n Icon: \"CORPLOBBY\",\n Visible: () => hasAccessToSF(3),\n Condition: () => !!Player.corporation && Player.corporation.unlocks.has(CorpUnlockName.GovernmentPartnership),\n },\n CORPORATION_PROD_1000: {\n ...achievementData.CORPORATION_PROD_1000,\n Icon: \"CORP1000\",\n Visible: () => hasAccessToSF(3),\n Condition: () => {\n if (!Player.corporation) return false;\n for (const division of Player.corporation.divisions.values()) {\n if (division.productionMult >= 1000) return true;\n }\n return false;\n },\n },\n CORPORATION_EMPLOYEE_3000: {\n ...achievementData.CORPORATION_EMPLOYEE_3000,\n Icon: \"CORPCITY\",\n Visible: () => hasAccessToSF(3),\n Condition: (): boolean => {\n if (!Player.corporation) return false;\n for (const division of Player.corporation.divisions.values()) {\n const totalEmployees = getRecordValues(division.offices).reduce((a, b) => a + b.numEmployees, 0);\n if (totalEmployees >= 3000) return true;\n }\n return false;\n },\n },\n CORPORATION_REAL_ESTATE: {\n ...achievementData.CORPORATION_REAL_ESTATE,\n Icon: \"CORPRE\",\n Name: \"Own the land\",\n Description: \"Expand to the Real Estate division.\",\n Visible: () => hasAccessToSF(3),\n Condition: () => {\n if (!Player.corporation) return false;\n for (const division of Player.corporation.divisions.values()) {\n if (division.type === IndustryType.RealEstate) return true;\n }\n return false;\n },\n },\n INTELLIGENCE_255: {\n ...achievementData.INTELLIGENCE_255,\n Icon: \"INT255\",\n Visible: () => hasAccessToSF(5),\n Condition: () => Player.skills.intelligence >= 255,\n },\n BLADEBURNER_DIVISION: {\n ...achievementData.BLADEBURNER_DIVISION,\n Icon: \"BLADE\",\n Visible: () => hasAccessToSF(6),\n Condition: () => Player.bladeburner !== null,\n },\n BLADEBURNER_OVERCLOCK: {\n ...achievementData.BLADEBURNER_OVERCLOCK,\n Icon: \"BLADEOVERCLOCK\",\n Visible: () => hasAccessToSF(6),\n Condition: () =>\n Player.bladeburner !== null &&\n Player.bladeburner.skills[SkillNames.Overclock] === Skills[SkillNames.Overclock].maxLvl,\n },\n BLADEBURNER_UNSPENT_100000: {\n ...achievementData.BLADEBURNER_UNSPENT_100000,\n Icon: \"BLADE100K\",\n Visible: () => hasAccessToSF(6),\n Condition: () => Player.bladeburner !== null && Player.bladeburner.skillPoints >= 100000,\n },\n \"4S\": {\n ...achievementData[\"4S\"],\n Icon: \"4S\",\n Condition: () => Player.has4SData,\n },\n FIRST_HACKNET_SERVER: {\n ...achievementData.FIRST_HACKNET_SERVER,\n Icon: \"HASHNET\",\n Visible: () => hasAccessToSF(9),\n Condition: () => hasHacknetServers() && Player.hacknetNodes.length > 0,\n AdditionalUnlock: [achievementData.FIRST_HACKNET_NODE.ID],\n },\n ALL_HACKNET_SERVER: {\n ...achievementData.ALL_HACKNET_SERVER,\n Icon: \"HASHNETALL\",\n Visible: () => hasAccessToSF(9),\n Condition: () => hasHacknetServers() && Player.hacknetNodes.length === HacknetServerConstants.MaxServers,\n AdditionalUnlock: [achievementData[\"30_HACKNET_NODE\"].ID],\n },\n MAX_HACKNET_SERVER: {\n ...achievementData.MAX_HACKNET_SERVER,\n Icon: \"HASHNETALL\",\n Visible: () => hasAccessToSF(9),\n Condition: (): boolean => {\n if (!hasHacknetServers()) return false;\n for (const h of Player.hacknetNodes) {\n if (typeof h !== \"string\") return false;\n const hs = GetServer(h);\n if (!(hs instanceof HacknetServer)) return false;\n if (\n hs.maxRam === HacknetServerConstants.MaxRam &&\n hs.cores === HacknetServerConstants.MaxCores &&\n hs.level === HacknetServerConstants.MaxLevel &&\n hs.cache === HacknetServerConstants.MaxCache\n )\n return true;\n }\n return false;\n },\n AdditionalUnlock: [achievementData.MAX_HACKNET_NODE.ID],\n },\n HACKNET_SERVER_1B: {\n ...achievementData.HACKNET_SERVER_1B,\n Icon: \"HASHNETMONEY\",\n Visible: () => hasAccessToSF(9),\n Condition: () => hasHacknetServers() && Player.moneySourceB.hacknet >= 1e9,\n AdditionalUnlock: [achievementData.HACKNET_NODE_10M.ID],\n },\n MAX_CACHE: {\n ...achievementData.MAX_CACHE,\n Icon: \"HASHNETCAP\",\n Visible: () => hasAccessToSF(9),\n Condition: () =>\n hasHacknetServers() &&\n Player.hashManager.hashes === Player.hashManager.capacity &&\n Player.hashManager.capacity > 0,\n },\n SLEEVE_8: {\n ...achievementData.SLEEVE_8,\n Icon: \"SLEEVE8\",\n Visible: () => hasAccessToSF(10),\n Condition: () => Player.sleeves.length === 8 && Player.sourceFileLvl(10) === 3,\n },\n INDECISIVE: {\n ...achievementData.INDECISIVE,\n Icon: \"1H\",\n Visible: knowsAboutBitverse,\n Condition: (function () {\n let c = 0;\n setInterval(() => {\n if (Router.page() === Page.BitVerse) {\n c++;\n } else {\n c = 0;\n }\n }, 60 * 1000);\n return () => c > 60;\n })(),\n },\n FAST_BN: {\n ...achievementData.FAST_BN,\n Icon: \"2DAYS\",\n Visible: knowsAboutBitverse,\n Condition: () => bitNodeFinishedState() && Player.playtimeSinceLastBitnode < 1000 * 60 * 60 * 24 * 2,\n },\n CHALLENGE_BN1: {\n ...achievementData.CHALLENGE_BN1,\n Icon: \"BN1+\",\n Visible: knowsAboutBitverse,\n Condition: () =>\n Player.bitNodeN === 1 &&\n bitNodeFinishedState() &&\n Player.getHomeComputer().maxRam <= 128 &&\n Player.getHomeComputer().cpuCores === 1,\n },\n CHALLENGE_BN2: {\n ...achievementData.CHALLENGE_BN2,\n Icon: \"BN2+\",\n Visible: () => hasAccessToSF(2),\n Condition: () => Player.bitNodeN === 2 && bitNodeFinishedState() && Player.gang === null,\n },\n CHALLENGE_BN3: {\n ...achievementData.CHALLENGE_BN3,\n Icon: \"BN3+\",\n Visible: () => hasAccessToSF(3),\n Condition: () => Player.bitNodeN === 3 && bitNodeFinishedState() && Player.corporation === null,\n },\n CHALLENGE_BN6: {\n ...achievementData.CHALLENGE_BN6,\n Icon: \"BN6+\",\n Visible: () => hasAccessToSF(6),\n Condition: () => Player.bitNodeN === 6 && bitNodeFinishedState() && Player.bladeburner === null,\n },\n CHALLENGE_BN7: {\n ...achievementData.CHALLENGE_BN7,\n Icon: \"BN7+\",\n Visible: () => hasAccessToSF(7),\n Condition: () => Player.bitNodeN === 7 && bitNodeFinishedState() && Player.bladeburner === null,\n },\n CHALLENGE_BN8: {\n ...achievementData.CHALLENGE_BN8,\n Icon: \"BN8+\",\n Visible: () => hasAccessToSF(8),\n Condition: () => Player.bitNodeN === 8 && bitNodeFinishedState() && !Player.has4SData && !Player.has4SDataTixApi,\n },\n CHALLENGE_BN9: {\n ...achievementData.CHALLENGE_BN9,\n Icon: \"BN9+\",\n Visible: () => hasAccessToSF(9),\n Condition: () =>\n Player.bitNodeN === 9 &&\n bitNodeFinishedState() &&\n Player.moneySourceB.hacknet === 0 &&\n Player.moneySourceB.hacknet_expenses === 0,\n },\n CHALLENGE_BN10: {\n ...achievementData.CHALLENGE_BN10,\n Icon: \"BN10+\",\n Visible: () => hasAccessToSF(10),\n Condition: () =>\n Player.bitNodeN === 10 &&\n bitNodeFinishedState() &&\n !Player.sleeves.some(\n (s) =>\n s.augmentations.length > 0 ||\n s.exp.hacking > 0 ||\n s.exp.strength > 0 ||\n s.exp.defense > 0 ||\n s.exp.agility > 0 ||\n s.exp.dexterity > 0 ||\n s.exp.charisma > 0,\n ),\n },\n CHALLENGE_BN12: {\n ...achievementData.CHALLENGE_BN12,\n Icon: \"BN12+\",\n Visible: () => hasAccessToSF(12),\n Condition: () => Player.sourceFileLvl(12) >= 50,\n },\n BYPASS: {\n ...achievementData.BYPASS,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.Bypass),\n },\n PROTOTYPETAMPERING: {\n ...achievementData.PROTOTYPETAMPERING,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.PrototypeTampering),\n },\n UNCLICKABLE: {\n ...achievementData.UNCLICKABLE,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.Unclickable),\n },\n UNDOCUMENTEDFUNCTIONCALL: {\n ...achievementData.UNDOCUMENTEDFUNCTIONCALL,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.UndocumentedFunctionCall),\n },\n TIMECOMPRESSION: {\n ...achievementData.TIMECOMPRESSION,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.TimeCompression),\n },\n REALITYALTERATION: {\n ...achievementData.REALITYALTERATION,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.RealityAlteration),\n },\n N00DLES: {\n ...achievementData.N00DLES,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.N00dles),\n },\n EDITSAVEFILE: {\n ...achievementData.EDITSAVEFILE,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.EditSaveFile),\n },\n UNACHIEVABLE: {\n ...achievementData.UNACHIEVABLE,\n Icon: \"SF-1\",\n Secret: true,\n // Hey Players! Yes, you're supposed to modify this to get the achievement!\n Condition: () => false,\n },\n CHALLENGE_BN13: {\n ...achievementData.CHALLENGE_BN13,\n Icon: \"BN13+\",\n Visible: () => hasAccessToSF(13),\n Condition: () =>\n Player.bitNodeN === 13 &&\n bitNodeFinishedState() &&\n !Player.augmentations.some((a) => a.name === AugmentationName.StaneksGift1),\n },\n DEVMENU: {\n ...achievementData.DEVMENU,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.YoureNotMeantToAccessThis),\n },\n RAINBOW: {\n ...achievementData.RAINBOW,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.INeedARainbow),\n },\n TRUE_RECURSION: {\n ...achievementData.TRUE_RECURSION,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.TrueRecursion),\n },\n};\n\n// Steam has a limit of 100 achievement. So these were planned but commented for now.\n// { ID: FactionNames.ECorp.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.ECorp) },\n// { ID: FactionNames.MegaCorp.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.MegaCorp) },\n// { ID: \"BACHMAN_&_ASSOCIATES\", Condition: () => Player.factions.includes(FactionNames.BachmanAssociates) },\n// { ID: \"BLADE_INDUSTRIES\", Condition: () => Player.factions.includes(FactionNames.BladeIndustries) },\n// { ID: FactionNames.NWO.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.NWO) },\n// { ID: \"CLARKE_INCORPORATED\", Condition: () => Player.factions.includes(FactionNames.ClarkeIncorporated) },\n// { ID: \"OMNITEK_INCORPORATED\", Condition: () => Player.factions.includes(FactionNames.OmniTekIncorporated) },\n// { ID: \"FOUR_SIGMA\", Condition: () => Player.factions.includes(FactionNames.FourSigma) },\n// { ID: \"KUAIGONG_INTERNATIONAL\", Condition: () => Player.factions.includes(FactionNames.KuaiGongInternational) },\n// { ID: \"FULCRUM_SECRET_TECHNOLOGIES\", Condition: () => Player.factions.includes(FactionNames.FulcrumSecretTechnologies) },\n// { ID: FactionNames.Aevum.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Aevum) },\n// { ID: FactionNames.Chongqing.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Chongqing) },\n// { ID: FactionNames.Ishima.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Ishima) },\n// { ID: \"NEW_TOKYO\", Condition: () => Player.factions.includes(FactionNames.NewTokyo) },\n// { ID: \"SECTOR-12\", Condition: () => Player.factions.includes(FactionNames.Sector12) },\n// { ID: FactionNames.Volhaven.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Volhaven) },\n// { ID: \"SPEAKERS_FOR_THE_DEAD\", Condition: () => Player.factions.includes(FactionNames.SpeakersForTheDead) },\n// { ID: \"THE_DARK_ARMY\", Condition: () => Player.factions.includes(FactionNames.TheDarkArmy) },\n// { ID: \"THE_SYNDICATE\", Condition: () => Player.factions.includes(FactionNames.TheSyndicate) },\n// { ID: FactionNames.Silhouette.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Silhouette) },\n// { ID: FactionNames.Tetrads.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Tetrads) },\n// { ID: \"SLUM_SNAKES\", Condition: () => Player.factions.includes(FactionNames.SlumSnakes) },\n// { ID: FactionNames.Netburners.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Netburners) },\n// { ID: \"TIAN_DI_HUI\", Condition: () => Player.factions.includes(FactionNames.TianDiHui) },\n// { ID: FactionNames.Bladeburners.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Bladeburners) },\n// { ID: \"DEEPSCANV1.EXE\", Condition: () => Player.getHomeComputer().programs.includes(Programs.DeepscanV1.name) },\n// { ID: \"DEEPSCANV2.EXE\", Condition: () => Player.getHomeComputer().programs.includes(Programs.DeepscanV2.name) },\n// { ID: \"INFILTRATORS\", Condition: () => Player.factions.includes(FactionNames.Infiltrators) },\n// {\n// ID: \"SERVERPROFILER.EXE\",\n// Condition: () => Player.getHomeComputer().programs.includes(Programs.ServerProfiler.name),\n// },\n// { ID: \"AUTOLINK.EXE\", Condition: () => Player.getHomeComputer().programs.includes(Programs.AutoLink.name) },\n// { ID: \"FLIGHT.EXE\", Condition: () => Player.getHomeComputer().programs.includes(Programs.Flight.name) },\n\nexport function calculateAchievements(): void {\n const playerAchievements = Player.achievements.map((a) => a.ID);\n\n const missingAchievements = Object.values(achievements)\n .filter((a) => !playerAchievements.includes(a.ID) && a.Condition())\n // callback returns array of achievement id and id of any in the additional list, flatmap means we have only a 1D array\n .flatMap((a) => [a.ID, ...(a.AdditionalUnlock || [])]);\n\n for (const id of missingAchievements) {\n Player.giveAchievement(id);\n }\n\n // Write all player's achievements to document for Steam/Electron\n // This could be replaced by \"availableAchievements\"\n // if we don't want to grant the save game achievements to steam but only currently available\n document.achievements = [...Player.achievements.map((a) => a.ID)];\n}\n","import React from \"react\";\n\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport { AchievementList } from \"./AchievementList\";\nimport { achievements } from \"./Achievements\";\nimport { Typography } from \"@mui/material\";\nimport { Player } from \"@player\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n width: 50,\n padding: theme.spacing(2),\n userSelect: \"none\",\n },\n }),\n);\n\nexport function AchievementsRoot(): JSX.Element {\n const classes = useStyles();\n return (\n
\n Achievements\n \n
\n );\n}\n","import { Terminal } from \"./Terminal\";\nimport { trimQuotes } from \"./utils/helpers/string\";\n\nexport const Aliases = new Map();\nexport const GlobalAliases = new Map();\n\nexport function loadAliases(saveString: string): void {\n Aliases.clear();\n const parsedAliases: unknown = JSON.parse(saveString);\n if (!parsedAliases || typeof parsedAliases !== \"object\") return;\n for (const [name, alias] of Object.entries(parsedAliases)) {\n if (typeof name === \"string\" && typeof alias === \"string\") Aliases.set(name, alias);\n }\n}\n\nexport function loadGlobalAliases(saveString: string): void {\n GlobalAliases.clear();\n const parsedAliases: unknown = JSON.parse(saveString);\n if (!parsedAliases || typeof parsedAliases !== \"object\") return;\n for (const [name, alias] of Object.entries(parsedAliases)) {\n if (typeof name === \"string\" && typeof alias === \"string\") GlobalAliases.set(name, alias);\n }\n}\n\n// Prints all aliases to terminal\nexport function printAliases(): void {\n for (const [name, alias] of Aliases) Terminal.print(\"alias \" + name + \"=\" + alias);\n for (const [name, alias] of GlobalAliases) Terminal.print(\"global alias \" + name + \"=\" + alias);\n}\n\n// Returns true if successful, false otherwise\nexport function parseAliasDeclaration(dec: string, global = false): boolean {\n const re = /^([\\w|!%,@-]+)=(.+)$/;\n const matches = dec.match(re);\n if (matches == null || matches.length != 3) {\n return false;\n }\n matches[2] = trimQuotes(matches[2]);\n\n if (global) {\n addGlobalAlias(matches[1], matches[2]);\n } else {\n addAlias(matches[1], matches[2]);\n }\n return true;\n}\n\nfunction addAlias(name: string, value: string): void {\n GlobalAliases.delete(name);\n Aliases.set(name, value.trim());\n}\n\nfunction addGlobalAlias(name: string, value: string): void {\n Aliases.delete(name);\n GlobalAliases.set(name, value.trim());\n}\n\nexport function removeAlias(name: string): boolean {\n const hadAlias = Aliases.has(name) || GlobalAliases.has(name);\n Aliases.delete(name);\n GlobalAliases.delete(name);\n return hadAlias;\n}\n\n/**\n * Returns the original string with any aliases substituted in.\n * Aliases are only applied to \"whole words\", one level deep\n */\nexport function substituteAliases(origCommand: string): string {\n const commandArray = origCommand.split(\" \");\n if (commandArray.length > 0) {\n // For the alias and unalias commands, don't substitute\n if (commandArray[0] === \"unalias\" || commandArray[0] === \"alias\") {\n return commandArray.join(\" \");\n }\n\n let somethingSubstituted = true;\n let depth = 0;\n let lastAlias;\n\n while (somethingSubstituted && depth < 10) {\n depth++;\n somethingSubstituted = false;\n const alias = Aliases.get(commandArray[0])?.split(\" \");\n if (alias !== undefined) {\n somethingSubstituted = true;\n commandArray.splice(0, 1, ...alias);\n //commandArray[0] = alias;\n }\n for (let i = 0; i < commandArray.length; ++i) {\n const alias = GlobalAliases.get(commandArray[i])?.split(\" \");\n if (alias !== undefined && (commandArray[i] != lastAlias || somethingSubstituted)) {\n somethingSubstituted = true;\n lastAlias = commandArray[i];\n commandArray.splice(i, 1, ...alias);\n i += alias.length - 1;\n //commandArray[i] = alias;\n }\n }\n }\n }\n return commandArray.join(\" \");\n}\n","import React, { useState } from \"react\";\nimport { BBCabinetRoot } from \"./BBCabinet\";\n\nimport Button from \"@mui/material/Button\";\nimport { Player } from \"@player\";\nimport { AlertEvents } from \"../../ui/React/AlertManager\";\n\nenum Page {\n None,\n Megabyteburner2000,\n}\n\nexport function ArcadeRoot(): React.ReactElement {\n const [page, setPage] = useState(Page.None);\n\n function mbBurner2000(): void {\n if (Player.sourceFileLvl(1) === 0) {\n AlertEvents.emit(\"This machine is broken.\");\n } else {\n setPage(Page.Megabyteburner2000);\n }\n }\n\n if (page === Page.None) {\n return (\n <>\n \n \n );\n }\n let currentGame = <>;\n switch (page) {\n case Page.Megabyteburner2000:\n currentGame = ;\n }\n return (\n <>\n \n {currentGame}\n \n );\n}\n","import React, { useEffect } from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Player } from \"@player\";\nimport { Exploit } from \"../../Exploits/Exploit\";\n\nconst metaBB = \"https://bitburner-official.github.io/bitburner-legacy/\";\n\nconst style = {\n width: \"1060px\",\n height: \"800px\",\n border: \"0px\",\n};\n\nexport function BBCabinetRoot(): React.ReactElement {\n useEffect(() => {\n window.addEventListener(\"message\", function (this: Window, ev: MessageEvent) {\n if (ev.isTrusted && ev.origin == \"https://bitburner-official.github.io\" && ev.data) {\n Player.giveExploit(Exploit.TrueRecursion);\n }\n });\n });\n // prettier-ignore\n const joystick =\n <>\n \n ,'\" \"', .-. \n / \\ ( ) \n | | .-. '-' .-. \n \\ / ( ) ( )\n '.___.' '-' .-. '-'\n ||| ( ) \n ||| '-' \n ;\n return (\n <>\n \n \n \n \n );\n}\n","import { Paper, Table, TableBody, Box, IconButton, Typography, Container, Tooltip } from \"@mui/material\";\nimport { MoreHoriz, Info } from \"@mui/icons-material\";\nimport React, { useState } from \"react\";\nimport { BitNodes } from \"../BitNode/BitNode\";\nimport { currentNodeMults } from \"../BitNode/BitNodeMultipliers\";\nimport { BitNodeMultipliersDisplay } from \"../BitNode/ui/BitnodeMultipliersDescription\";\nimport { HacknetServerConstants } from \"../Hacknet/data/Constants\";\nimport { getPurchaseServerLimit } from \"../Server/ServerPurchases\";\nimport { Settings } from \"../Settings/Settings\";\nimport { MoneySourceTracker } from \"../utils/MoneySourceTracker\";\nimport { convertTimeMsToTimeElapsedString } from \"../utils/StringHelperFunctions\";\nimport { Player } from \"@player\";\nimport { formatPercent } from \"./formatNumber\";\nimport { Modal } from \"./React/Modal\";\nimport { Money } from \"./React/Money\";\nimport { StatsRow } from \"./React/StatsRow\";\nimport { StatsTable } from \"./React/StatsTable\";\nimport { useRerender } from \"./React/hooks\";\n\ninterface EmployersModalProps {\n open: boolean;\n onClose: () => void;\n}\n\nconst EmployersModal = ({ open, onClose }: EmployersModalProps): React.ReactElement => {\n return (\n \n <>\n All Employers\n
    \n {Object.keys(Player.jobs).map((j) => (\n * {j}\n ))}\n
\n \n
\n );\n};\n\ninterface IMultRow {\n // The name of the multiplier\n mult: string;\n\n // The player's raw multiplier value\n value: number;\n\n // The player's effective multiplier value, affected by BitNode mults\n effValue?: number;\n\n // The text color for the row\n color?: string;\n}\n\ninterface MultTableProps {\n rows: IMultRow[];\n color: string;\n noMargin?: boolean;\n}\n\nfunction MultiplierTable(props: MultTableProps): React.ReactElement {\n return (\n \n \n {props.rows.map((data) => {\n const { mult, value, effValue = null, color = props.color } = data;\n\n if (effValue !== null && effValue !== value && Player.sourceFileLvl(5) > 0) {\n return (\n \n <>\n \n {formatPercent(value)} {formatPercent(effValue)}\n \n \n \n );\n }\n return ;\n })}\n \n
\n );\n}\n\nfunction CurrentBitNode(): React.ReactElement {\n if (Player.sourceFiles.size > 0) {\n const index = \"BitNode\" + Player.bitNodeN;\n const lvl = Math.min(Player.sourceFileLvl(Player.bitNodeN) + 1, Player.bitNodeN === 12 ? Infinity : 3);\n return (\n \n \n BitNode {Player.bitNodeN}: {BitNodes[index].name} (Level {lvl})\n \n {BitNodes[index].info}\n \n );\n }\n\n return <>;\n}\n\ninterface IMoneyModalProps {\n open: boolean;\n onClose: () => void;\n}\n\nfunction MoneyModal({ open, onClose }: IMoneyModalProps): React.ReactElement {\n function convertMoneySourceTrackerToString(src: MoneySourceTracker): React.ReactElement {\n const parts: [string, JSX.Element][] = [[`Total:`, ]];\n if (src.augmentations) {\n parts.push([`Augmentations:`, ]);\n }\n if (src.bladeburner) {\n parts.push([`Bladeburner:`, ]);\n }\n if (src.casino) {\n parts.push([`Casino:`, ]);\n }\n if (src.codingcontract) {\n parts.push([`Coding Contracts:`, ]);\n }\n if (src.work) {\n parts.push([`Company Work:`, ]);\n }\n if (src.class) {\n parts.push([`Class:`, ]);\n }\n if (src.corporation) {\n parts.push([`Corporation:`, ]);\n }\n if (src.crime) {\n parts.push([`Crimes:`, ]);\n }\n if (src.gang) {\n parts.push([`Gang:`, ]);\n }\n if (src.hacking) {\n parts.push([`Hacking:`, ]);\n }\n if (src.hacknet) {\n parts.push([`Hacknet Nodes:`, ]);\n }\n if (src.hacknet_expenses) {\n parts.push([`Hacknet Nodes Expenses:`, ]);\n }\n if (src.hospitalization) {\n parts.push([`Hospitalization:`, ]);\n }\n if (src.infiltration) {\n parts.push([`Infiltration:`, ]);\n }\n if (src.servers) {\n parts.push([`Servers:`, ]);\n }\n if (src.stock) {\n parts.push([`Stock Market:`, ]);\n }\n if (src.sleeves) {\n parts.push([`Sleeves:`, ]);\n }\n if (src.other) {\n parts.push([`Other:`, ]);\n }\n\n return ;\n }\n\n let content = (\n <>\n \n Money earned since you last installed Augmentations\n \n
\n {convertMoneySourceTrackerToString(Player.moneySourceA)}\n \n );\n if (Player.sourceFiles.size > 0) {\n content = (\n <>\n {content}\n
\n
\n \n Money earned in this BitNode\n \n
\n {convertMoneySourceTrackerToString(Player.moneySourceB)}\n \n );\n }\n\n return (\n \n {content}\n \n );\n}\n\nexport function CharacterStats(): React.ReactElement {\n const [moneyOpen, setMoneyOpen] = useState(false);\n const [employersOpen, setEmployersOpen] = useState(false);\n useRerender(200);\n\n const timeRows = [\n [\"Since last Augmentation installation\", convertTimeMsToTimeElapsedString(Player.playtimeSinceLastAug)],\n ];\n if (Player.sourceFiles.size > 0) {\n timeRows.push([\"Since last Bitnode destroyed\", convertTimeMsToTimeElapsedString(Player.playtimeSinceLastBitnode)]);\n }\n timeRows.push([\"Total\", convertTimeMsToTimeElapsedString(Player.totalPlaytime)]);\n\n let showBitNodeMults = false;\n if (Player.sourceFileLvl(5) > 0) showBitNodeMults = true;\n return (\n \n Stats\n \n \n General\n \n \n \n \n <>\n \n setMoneyOpen(true)} sx={{ p: 0 }}>\n \n \n \n \n\n {Player.jobs && Object.keys(Player.jobs).length !== 0 ? (\n \n <>\n {Object.keys(Player.jobs).length} total\n setEmployersOpen(true)} sx={{ p: 0 }}>\n \n \n \n \n ) : (\n <>\n )}\n \n 0 ? \"Servers\" : \"Nodes\"} owned`}\n color={Settings.theme.primary}\n data={{\n content: `${Player.hacknetNodes.length}${\n Player.bitNodeN === 9 || Player.sourceFileLvl(9) > 0\n ? ` / ${HacknetServerConstants.MaxServers}`\n : \"\"\n }`,\n }}\n />\n \n \n
\n
\n \n Skills\n \n \n \n \n \n \n \n \n {Player.skills.intelligence > 0 && (Player.bitNodeN === 5 || Player.sourceFileLvl(5) > 0) && (\n \n )}\n \n
\n
\n
\n\n \n \n Multipliers\n {Player.sourceFileLvl(5) > 0 && (\n \n Displays your current multipliers.\n
\n
\n When there is a dim number next to a multiplier, that means that the multiplier in question is being\n affected by BitNode multipliers.\n
\n
\n The dim number is the raw multiplier, and the undimmed number is the effective multiplier, as dictated\n by the BitNode.\n
\n }\n >\n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n {Player.canAccessBladeburner() && currentNodeMults.BladeburnerRank > 0 && (\n \n )}\n \n \n
\n\n \n Time Played\n \n \n {timeRows.map(([name, content]) => (\n \n ))}\n \n
\n
\n\n \n\n {showBitNodeMults && (\n \n BitNode Multipliers\n \n \n )}\n\n setMoneyOpen(false)} />\n setEmployersOpen(false)} />\n
\n );\n}\n","import React from \"react\";\nimport Tooltip, { TooltipProps } from \"@mui/material/Tooltip\";\nimport Button, { ButtonProps } from \"@mui/material/Button\";\n\ninterface ButtonWithTooltipProps {\n /** \"\" if the button is not disabled. If this is truthy, the button is disabled and this tooltip is displayed. */\n disabledTooltip?: TooltipProps[\"title\"];\n /** Text to display if button is enabled (if disabledTooltip is not provided or is \"\") */\n normalTooltip?: TooltipProps[\"title\"];\n /** The onClick function */\n onClick: ButtonProps[\"onClick\"];\n /** Button props other than \"disabled\" */\n buttonProps?: Omit;\n /** Tooltip props other than \"title\" */\n tooltipProps?: Omit;\n children: ButtonProps[\"children\"];\n}\n\n/** Displays a tooltip on a button when the button is disabled, to explain why it is disabled */\nexport function ButtonWithTooltip({\n disabledTooltip,\n normalTooltip,\n onClick,\n buttonProps,\n tooltipProps,\n children,\n}: ButtonWithTooltipProps) {\n buttonProps ??= {};\n tooltipProps ??= {};\n const tooltipText = (disabledTooltip || normalTooltip) ?? \"\";\n const disabled = !!disabledTooltip;\n return (\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface CustomBoundaryProps {\n children: React.ReactNode;\n}\ninterface CustomBoundaryState {\n error?: Error;\n}\n/** Error boundary for custom content printed by the player using printRaw-like functions.\n * Error boundaries are required to be class components due to no hook equivalent to componentDidCatch. */\nexport class CustomBoundary extends React.Component {\n state: CustomBoundaryState;\n constructor(props: CustomBoundaryProps) {\n super(props);\n this.state = { error: undefined };\n }\n componentDidCatch(error: Error): void {\n this.setState({ error });\n console.warn(\"Error in custom react content:\");\n console.error(error);\n }\n render(): React.ReactNode {\n if (this.state.error) {\n // Typography is used because there are no default page styles.\n // Span is used because it does not conflict with the DOM validation nesting (default Typography element of p is invalid at this location in dom tree)\n return Error in custom react content. See console for details.;\n }\n return {this.props.children};\n }\n}\n","export enum ToastVariant {\n SUCCESS = \"success\",\n WARNING = \"warning\",\n ERROR = \"error\",\n INFO = \"info\",\n}\n","import React, { ErrorInfo } from \"react\";\n\nimport { IErrorData, getErrorForDisplay } from \"../utils/ErrorHelper\";\nimport { RecoveryRoot } from \"./React/RecoveryRoot\";\nimport { Page } from \"./Router\";\nimport { Router } from \"./GameRoot\";\n\ntype ErrorBoundaryProps = {\n softReset: () => void;\n children: React.ReactNode;\n};\n\ntype ErrorBoundaryState = {\n error?: Error;\n errorInfo?: React.ErrorInfo;\n page?: Page;\n hasError: boolean;\n};\n\nexport class ErrorBoundary extends React.Component {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false };\n }\n\n reset(): void {\n this.setState({ hasError: false });\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n this.setState({\n errorInfo,\n page: Router.page(),\n });\n console.error(error, errorInfo);\n }\n\n render(): React.ReactNode {\n if (this.state.hasError) {\n let errorData: IErrorData | undefined;\n if (this.state.error) {\n try {\n // We don't want recursive errors, so in case this fails, it's in a try catch.\n errorData = getErrorForDisplay(this.state.error, this.state.errorInfo, this.state.page);\n } catch (ex) {\n console.error(ex);\n }\n }\n\n return this.reset()} />;\n }\n return this.props.children;\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n}\n","import React, { useState, useEffect } from \"react\";\nimport { createStyles, makeStyles } from \"@mui/styles\";\nimport { Box, Typography } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport { Player } from \"@player\";\nimport { installAugmentations } from \"../Augmentation/AugmentationHelpers\";\nimport { saveObject } from \"../SaveObject\";\nimport { onExport } from \"../ExportBonus\";\nimport { LocationName } from \"@enums\";\nimport { ITutorial, iTutorialStart } from \"../InteractiveTutorial\";\nimport { InteractiveTutorialRoot } from \"./InteractiveTutorial/InteractiveTutorialRoot\";\nimport { ITutorialEvents } from \"./InteractiveTutorial/ITutorialEvents\";\n\nimport { prestigeAugmentation } from \"../Prestige\";\nimport { dialogBoxCreate } from \"./React/DialogBox\";\nimport { GetAllServers } from \"../Server/AllServers\";\nimport { StockMarket } from \"../StockMarket/StockMarket\";\n\nimport { Page, PageWithContext, IRouter, ComplexPage, PageContext } from \"./Router\";\nimport { Overview } from \"./React/Overview\";\nimport { SidebarRoot } from \"../Sidebar/ui/SidebarRoot\";\nimport { AugmentationsRoot } from \"../Augmentation/ui/AugmentationsRoot\";\nimport { DevMenuRoot } from \"../DevMenu\";\nimport { BladeburnerRoot } from \"../Bladeburner/ui/BladeburnerRoot\";\nimport { GangRoot } from \"../Gang/ui/GangRoot\";\nimport { CorporationRoot } from \"../Corporation/ui/CorporationRoot\";\nimport { InfiltrationRoot } from \"../Infiltration/ui/InfiltrationRoot\";\nimport { GraftingRoot } from \"../PersonObjects/Grafting/ui/GraftingRoot\";\nimport { WorkInProgressRoot } from \"./WorkInProgressRoot\";\nimport { GameOptionsRoot } from \"../GameOptions/ui/GameOptionsRoot\";\nimport { SleeveRoot } from \"../PersonObjects/Sleeve/ui/SleeveRoot\";\nimport { HacknetRoot } from \"../Hacknet/ui/HacknetRoot\";\nimport { GenericLocation } from \"../Locations/ui/GenericLocation\";\nimport { LocationCity } from \"../Locations/ui/City\";\nimport { ProgramsRoot } from \"../Programs/ui/ProgramsRoot\";\nimport { ScriptEditorRoot } from \"../ScriptEditor/ui/ScriptEditorRoot\";\nimport { MilestonesRoot } from \"../Milestones/ui/MilestonesRoot\";\nimport { TerminalRoot } from \"../Terminal/ui/TerminalRoot\";\nimport { DocumentationRoot } from \"../Documentation/ui/DocumentationRoot\";\nimport { ActiveScriptsRoot } from \"./ActiveScripts/ActiveScriptsRoot\";\nimport { FactionsRoot } from \"../Faction/ui/FactionsRoot\";\nimport { FactionRoot } from \"../Faction/ui/FactionRoot\";\nimport { AugmentationsPage as FactionAugmentations } from \"../Faction/ui/AugmentationsPage\";\nimport { CharacterStats } from \"./CharacterStats\";\nimport { TravelAgencyRoot } from \"../Locations/ui/TravelAgencyRoot\";\nimport { StockMarketRoot } from \"../StockMarket/ui/StockMarketRoot\";\nimport { BitverseRoot } from \"../BitNode/ui/BitverseRoot\";\nimport { StaneksGiftRoot } from \"../CotMG/ui/StaneksGiftRoot\";\nimport { staneksGift } from \"../CotMG/Helper\";\nimport { CharacterOverview } from \"./React/CharacterOverview\";\nimport { BladeburnerCinematic } from \"../Bladeburner/ui/BladeburnerCinematic\";\nimport { workerScripts } from \"../Netscript/WorkerScripts\";\nimport { Unclickable } from \"../Exploits/Unclickable\";\nimport { Snackbar, SnackbarProvider } from \"./React/Snackbar\";\nimport { LogBoxManager } from \"./React/LogBoxManager\";\nimport { AlertManager } from \"./React/AlertManager\";\nimport { PromptManager } from \"./React/PromptManager\";\nimport { InvitationModal } from \"../Faction/ui/InvitationModal\";\nimport { calculateAchievements } from \"../Achievements/Achievements\";\n\nimport { RecoveryMode, RecoveryRoot } from \"./React/RecoveryRoot\";\nimport { AchievementsRoot } from \"../Achievements/AchievementsRoot\";\nimport { ErrorBoundary } from \"./ErrorBoundary\";\nimport { ThemeBrowser } from \"../Themes/ui/ThemeBrowser\";\nimport { ImportSave } from \"./React/ImportSave\";\nimport { BypassWrapper } from \"./React/BypassWrapper\";\n\nimport { Apr1 } from \"./Apr1\";\nimport { V2Modal } from \"../utils/V2Modal\";\nimport { MathJaxContext } from \"better-react-mathjax\";\nimport { useRerender } from \"./React/hooks\";\nimport { HistoryProvider } from \"./React/Documentation\";\n\nconst htmlLocation = location;\n\nconst useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n \"-ms-overflow-style\": \"none\" /* for Internet Explorer, Edge */,\n \"scrollbar-width\": \"none\" /* for Firefox */,\n margin: theme.spacing(0),\n flexGrow: 1,\n padding: \"8px\",\n minHeight: \"100vh\",\n boxSizing: \"border-box\",\n width: \"1px\",\n },\n }),\n { name: \"GameRoot\" },\n);\n\nconst uninitialized = (): void => {\n throw new Error(\"Router called before initialization\");\n};\n\nconst MAX_PAGES_IN_HISTORY = 10;\n\nexport let Router: IRouter = {\n isInitialized: false,\n page: () => {\n throw new Error(\"Router called before initialization\");\n },\n allowRouting: uninitialized,\n toPage: () => {\n throw new Error(\"Router called before initialization\");\n },\n back: () => {\n throw new Error(\"Router called before initialization\");\n },\n};\n\nfunction determineStartPage() {\n if (RecoveryMode) return Page.Recovery;\n if (Player.currentWork !== null) return Page.Work;\n return Page.Terminal;\n}\n\nexport function GameRoot(): React.ReactElement {\n const classes = useStyles();\n\n const [pages, setPages] = useState(() => [{ page: determineStartPage() }]);\n const pageWithContext = pages[0];\n\n const setNextPage = (pageWithContext: PageWithContext) =>\n setPages((prev) => {\n const next = [pageWithContext, ...prev];\n next.length = Math.min(next.length, MAX_PAGES_IN_HISTORY);\n return next;\n });\n\n const rerender = useRerender();\n\n const [errorBoundaryKey, setErrorBoundaryKey] = useState(0);\n\n const [allowRoutingCalls, setAllowRoutingCalls] = useState(true);\n\n function resetErrorBoundary(): void {\n setErrorBoundaryKey(errorBoundaryKey + 1);\n }\n\n useEffect(() => {\n return ITutorialEvents.subscribe(rerender);\n }, [rerender]);\n\n function killAllScripts(): void {\n for (const server of GetAllServers()) {\n server.runningScriptMap.clear();\n }\n saveObject.saveGame();\n setTimeout(() => htmlLocation.reload(), 2000);\n }\n\n function attemptedForbiddenRouting(name: string) {\n console.error(`Routing is currently disabled - Attempted router.${name}()`);\n }\n\n Router = {\n isInitialized: true,\n page: () => pageWithContext.page,\n allowRouting: (value: boolean) => setAllowRoutingCalls(value),\n toPage: (page: Page, context?: PageContext) => {\n if (!allowRoutingCalls) return attemptedForbiddenRouting(\"toPage\");\n switch (page) {\n case Page.Travel:\n Player.gotoLocation(LocationName.TravelAgency);\n break;\n case Page.BitVerse:\n calculateAchievements();\n break;\n }\n setNextPage({ page, ...context } as PageWithContext);\n },\n back: () => {\n if (!allowRoutingCalls) return attemptedForbiddenRouting(\"back\");\n setPages((pages) => pages.slice(1));\n },\n };\n\n useEffect(() => {\n if (pageWithContext.page !== Page.Terminal) window.scrollTo(0, 0);\n });\n\n function softReset(): void {\n dialogBoxCreate(\"Soft Reset!\");\n installAugmentations(true);\n resetErrorBoundary();\n Router.toPage(Page.Terminal);\n }\n\n let mainPage = Cannot load;\n let withSidebar = true;\n let withPopups = true;\n let bypassGame = false;\n switch (pageWithContext.page) {\n case Page.Recovery: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n bypassGame = true;\n break;\n }\n case Page.BitVerse: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n break;\n }\n case Page.Infiltration: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n break;\n }\n case Page.BladeburnerCinematic: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n break;\n }\n case Page.Work: {\n mainPage = ;\n withSidebar = false;\n break;\n }\n case Page.Terminal: {\n mainPage = ;\n break;\n }\n case Page.Sleeves: {\n mainPage = ;\n break;\n }\n case Page.StaneksGift: {\n mainPage = ;\n break;\n }\n case Page.Stats: {\n mainPage = ;\n break;\n }\n case Page.ScriptEditor: {\n mainPage = (\n \n );\n break;\n }\n case Page.ActiveScripts: {\n mainPage = ;\n break;\n }\n case Page.Hacknet: {\n mainPage = ;\n break;\n }\n case Page.CreateProgram: {\n mainPage = ;\n break;\n }\n case Page.Factions: {\n mainPage = ;\n break;\n }\n case Page.Faction: {\n mainPage = ;\n break;\n }\n case Page.FactionAugmentations: {\n mainPage = ;\n break;\n }\n case Page.Milestones: {\n mainPage = ;\n break;\n }\n case Page.Documentation: {\n mainPage = ;\n break;\n }\n case Page.DevMenu: {\n mainPage = ;\n break;\n }\n case Page.Gang: {\n mainPage = ;\n break;\n }\n case Page.Corporation: {\n mainPage = ;\n break;\n }\n case Page.Bladeburner: {\n mainPage = ;\n break;\n }\n case Page.Grafting: {\n mainPage = ;\n break;\n }\n case Page.Travel: {\n mainPage = ;\n break;\n }\n case Page.StockMarket: {\n mainPage = ;\n break;\n }\n case Page.City: {\n mainPage = ;\n break;\n }\n case Page.Job:\n case Page.Location: {\n mainPage = ;\n break;\n }\n case Page.Options: {\n mainPage = (\n saveObject.saveGame()}\n export={() => {\n // Apply the export bonus before saving the game\n onExport();\n saveObject.exportGame();\n }}\n forceKill={killAllScripts}\n softReset={softReset}\n reactivateTutorial={() => {\n prestigeAugmentation();\n Router.toPage(Page.Terminal);\n iTutorialStart();\n }}\n />\n );\n break;\n }\n case Page.Augmentations: {\n mainPage = (\n {\n // Apply the export bonus before saving the game\n onExport();\n saveObject.exportGame();\n }}\n installAugmentationsFn={() => {\n installAugmentations();\n }}\n />\n );\n break;\n }\n case Page.Achievements: {\n mainPage = ;\n break;\n }\n case Page.ThemeBrowser: {\n mainPage = ;\n break;\n }\n case Page.ImportSave: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n bypassGame = true;\n }\n }\n\n return (\n \n \n \n \n \n \n {(parentOpen) =>\n !ITutorial.isRunning ? (\n saveObject.saveGame()}\n killScripts={killAllScripts}\n />\n ) : (\n \n )\n }\n \n {withSidebar ? (\n \n \n {mainPage}\n \n ) : (\n {mainPage}\n )}\n \n {withPopups && (\n <>\n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n );\n}\n","import { EventEmitter } from \"../../utils/EventEmitter\";\nexport const ITutorialEvents = new EventEmitter<[]>();\n","import React, { useEffect } from \"react\";\n\nimport Paper from \"@mui/material/Paper\";\nimport Typography from \"@mui/material/Typography\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Button from \"@mui/material/Button\";\nimport ArrowForwardIos from \"@mui/icons-material/ArrowForwardIos\";\nimport ArrowBackIos from \"@mui/icons-material/ArrowBackIos\";\nimport { ITutorialEvents } from \"./ITutorialEvents\";\nimport { CopyableText } from \"../React/CopyableText\";\n\nimport ListItem from \"@mui/material/ListItem\";\nimport EqualizerIcon from \"@mui/icons-material/Equalizer\";\nimport LastPageIcon from \"@mui/icons-material/LastPage\";\nimport HelpIcon from \"@mui/icons-material/Help\";\nimport AccountTreeIcon from \"@mui/icons-material/AccountTree\";\nimport StorageIcon from \"@mui/icons-material/Storage\";\nimport LocationCityIcon from \"@mui/icons-material/LocationCity\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nimport {\n iTutorialPrevStep,\n iTutorialNextStep,\n ITutorial,\n iTutorialSteps,\n iTutorialEnd,\n} from \"../../InteractiveTutorial\";\nimport { useRerender } from \"../React/hooks\";\n\ninterface IContent {\n content: React.ReactElement;\n canNext: boolean;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n textfield: {\n borderBottom: \"1px solid \" + theme.palette.primary.main,\n },\n code: {\n whiteSpace: \"pre\",\n backgroundColor: theme.palette.background.paper,\n },\n }),\n);\n\nexport function InteractiveTutorialRoot(): React.ReactElement {\n const classes = useStyles();\n const rerender = useRerender();\n\n const tutorialScriptName = `n00dles.js`;\n\n const contents: Record = {\n [iTutorialSteps.Start as number]: {\n content: (\n <>\n \n Welcome to Bitburner, a cyberpunk-themed incremental RPG! The game takes place in a dark, dystopian\n future... The year is 2077...\n
\n
\n This tutorial will show you the basics of the game. You may skip the tutorial at any time.\n
\n
\n You can also collapse this panel to temporarily hide this tutorial.\n
\n \n ),\n canNext: true,\n },\n [iTutorialSteps.GoToCharacterPage as number]: {\n content: (\n <>\n Let's start by heading to the Stats page. Click\n \n \n Stats\n \n\n on the main navigation menu (left-hand side of the screen)\n \n ),\n canNext: false,\n },\n [iTutorialSteps.CharacterPage as number]: {\n content: (\n <>\n \n \n Stats\n \n \n shows a lot of important information about your progress, such as your skills, money, and bonuses.\n \n \n ),\n canNext: true,\n },\n [iTutorialSteps.CharacterGoToTerminalPage as number]: {\n content: (\n <>\n Let's head to your computer's terminal by clicking\n \n \n Terminal\n \n on the main navigation menu.\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalIntro as number]: {\n content: (\n <>\n \n \n Terminal\n \n \n is used to interface with your home computer as well as all of the other machines around the world.\n \n \n ),\n canNext: true,\n },\n [iTutorialSteps.TerminalHelp as number]: {\n content: (\n <>\n Let's try it out. Start by entering\n {\"[home ~/]> help\"}\n (Don't forget to press Enter after typing the command)\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalLs as number]: {\n content: (\n <>\n {\"[home ~/]> help\"}\n \n displays a list of all available Terminal commands, how to use them, and a description of what they do.{\" \"}\n
\n
\n Let's try another command. Enter\n
\n\n {\"[home ~/]> ls\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalScan as number]: {\n content: (\n <>\n {\"[home ~/]> ls\"}\n \n {\" \"}\n is a basic command that shows files on the computer. Right now, it shows that you have a program called{\" \"}\n NUKE.exe on your computer. We'll get to what this does later.
\n
\n Using your home computer's terminal, you can connect to other machines throughout the world. Let's do that\n now by first entering\n
\n {\"[home ~/]> scan\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalScanAnalyze1 as number]: {\n content: (\n <>\n {\"[home ~/]> scan\"}\n \n shows all available network connections. In other words, it displays a list of all servers that can be\n connected to from your current machine. A server is identified by its hostname.
\n
\n That's great and all, but there's so many servers. Which one should you go to?{\" \"}\n
\n\n {\"[home ~/]> scan-analyze\"}\n gives some more detailed information about servers on the network. Try it now!\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalScanAnalyze2 as number]: {\n content: (\n <>\n {\"[home ~/]> scan-analyze\"}\n \n shows more detailed information about each server that you can connect to (servers that are a distance of\n one node away).
\n
It is also possible to run scan-analyze with a higher depth. Let's try a depth of two with the\n following command:{\" \"}\n
\n\n {\"[home ~/]> scan-analyze 2\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalConnect as number]: {\n content: (\n <>\n \n Now you can see information about all servers that are up to two nodes away, as well as figure out how to\n navigate to those servers through the network. You can only connect to a server that is one node away. To\n connect to a machine, use\n \n {\"[home ~/]> connect hostname\"}\n\n From the results of \n {\"[home ~/]> scan-analyze 2\"}\n\n \n {\" \"}\n we can see that the n00dles server is only one node away. Let's connect to it now using:\n \n\n {\"[home ~/]> connect n00dles\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalAnalyze as number]: {\n content: (\n <>\n \n You are now connected to another machine! What can you do now? You can hack it!\n
\n
In the year 2077, currency has become digital and decentralized. People and corporations store their\n money on servers and computers. Using your hacking abilities, you can hack servers to steal money and gain\n experience.
\n
\n Before you try to hack a server, you should run diagnostics using{\" \"}\n
\n {\"[n00dles ~/]> analyze\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalNuke as number]: {\n content: (\n <>\n When \n {\"[n00dles ~/]> analyze\"}\n\n \n finishes running it will show useful information about hacking the server.
\n
For this server, the required hacking skill is only 1, which means you can hack it right now.\n However, in order to hack a server you must first gain root access. The NUKE.exe program that we saw earlier\n on your home computer is a virus that will grant you root access to a machine if there are enough open\n ports.\n
\n {\"[n00dles ~/]> analyze\"}\n\n \n {\" \"}\n shows that there do not need to be any open ports on this machine for the NUKE virus to work, so go ahead\n and run the virus using{\" \"}\n \n {\"[n00dles ~/]> run NUKE.exe\"}\n\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalManualHack as number]: {\n content: (\n <>\n You now have root access! You can hack the server using \n {\"[n00dles ~/]> hack\"}\n\n Try doing that now.\n \n ),\n canNext: true,\n },\n [iTutorialSteps.TerminalHackingMechanics as number]: {\n content: (\n \n You are now attempting to hack the server. Performing a hack takes time and only has a certain percentage\n chance of success. This time and success chance is determined by a variety of factors, including your hacking\n skill and the server's security level.\n
\n
\n If your attempt to hack the server is successful, you will steal a certain percentage of the server's total\n money. This percentage is affected by your hacking skill and the server's security level.\n
\n
\n The amount of money on a server is not limitless. So, if you constantly hack a server and deplete its money,\n then you will encounter diminishing returns in your hacking. You will need to use{\" \"}\n {\"[n00dles ~/]> grow\"}\n which tricks the company into adding money to their server and{\" \"}\n {\"[n00dles ~/]> weaken\"}\n which increases the speed of hack and grow.\n
\n ),\n canNext: true,\n },\n [iTutorialSteps.TerminalGoHome as number]: {\n content: (\n <>\n From any server you can get back home using\n {\"[n00dles ~/]> home\"}\n\n Let's head home before creating our first script!\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalCreateScript as number]: {\n content: (\n <>\n \n Hacking is the core mechanic of the game and is necessary for progressing. However, you don't want to be\n hacking manually the entire time. You can automate your hacking by writing scripts!\n
\n
\n To create a new script or edit an existing one, you can use{\" \"}\n
\n {\"[home ~/]> nano\"}\n\n Scripts must end with the .js extension. Let's make a script now by entering \n {`[home ~/]> nano ${tutorialScriptName}`}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalTypeScript as number]: {\n content: (\n <>\n \n This is the script editor. You can use it to program your scripts. Click this text to copy it and paste it\n into the text editor:
\n
\n\n \n {\n \n }\n \n \n For anyone with basic programming experience, this code should be straightforward. This script will\n continuously hack the n00dles server.\n
\n
\n To save and close the script editor, press the button at the bottom.\n
\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalFree as number]: {\n content: (\n <>\n \n Now we'll run the script. Scripts require a certain amount of RAM to run, and can be run on any machine\n which you have root access to. Different servers have different amounts of RAM. You can also purchase more\n RAM for your home server.\n
\n
\n To check how much RAM is available on this machine, enter\n
\n {\"[home ~/]> free\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalRunScript as number]: {\n content: (\n <>\n \n We have 8GB of free RAM on this machine, which is enough to run our script. Let's run our script using\n \n {`[home ~/]> run ${tutorialScriptName}`}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalGoToActiveScriptsPage as number]: {\n content: (\n <>\n \n Your script is now running! It will continuously run in the background and will automatically stop if the\n code ever completes (the {tutorialScriptName} will never complete because it runs an infinite loop).
\n
\n These scripts can passively earn you income and hacking experience. Your scripts will also earn money and\n experience while you are offline, although at a slightly slower rate.
\n
\n Let's check out some statistics for our running scripts by clicking{\" \"}\n
\n \n \n Active Scripts\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.ActiveScriptsPage as number]: {\n content: (\n <>\n \n This page displays information about all of your scripts that are running across every server. You can use\n this to gauge how well your scripts are doing.\n
\n
\n Click on Home to see the scripts running on it.\n
\n
\n Then click on n00dles.js to see the scripts information.\n
\n
\n Let's go back to\n
\n \n \n Terminal\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.ActiveScriptsToTerminal as number]: {\n content: (\n <>\n \n One last thing about scripts, each active script contains logs that detail what it's doing. We can check\n these logs using the tail command. Do that now for the script we just ran by typing{\" \"}\n \n {`[home ~/]> tail ${tutorialScriptName}`}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalTailScript as number]: {\n content: (\n <>\n \n The log for this script won't show much right now (it might show nothing at all) because it just started\n running...but check back again in a few minutes!
\n
\n This covers the basics of hacking. To learn more about writing scripts, select\n
\n \n \n Documentation\n \n \n in the main navigation menu to look at the documentation.\n
\n
\n For now, let's move on to something else!\n
\n \n ),\n canNext: true,\n },\n [iTutorialSteps.GoToHacknetNodesPage as number]: {\n content: (\n <>\n \n Hacking is not the only way to earn money. One other way to passively earn money is by purchasing and\n upgrading Hacknet Nodes. Let's go to\n \n \n \n Hacknet\n \n through the main navigation menu now.\n \n ),\n canNext: false,\n },\n [iTutorialSteps.HacknetNodesIntroduction as number]: {\n content: (\n \n Here you can purchase new Hacknet Nodes and upgrade your existing ones. Let's purchase a new one now.\n \n ),\n canNext: true,\n },\n [iTutorialSteps.HacknetNodesGoToWorldPage as number]: {\n content: (\n <>\n \n You just purchased a Hacknet Node! This Hacknet Node will passively earn you money over time, both online\n and offline. When you get enough money, you can upgrade your newly-purchased Hacknet Node below.\n
\n
\n Let's go to\n
\n \n \n City\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.WorldDescription as number]: {\n content: (\n <>\n \n This page lists all of the different locations you can currently travel to. Each location has something that\n you can do. There's a lot of content out in the world, make sure you explore and discover!\n
\n
\n Lastly, click on\n
\n \n \n Documentation\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.DocumentationPageInfo as number]: {\n content: (\n \n This page contains a lot of different documentation about the game's content and mechanics. I know it's a lot,\n but I highly suggest you read (or at least skim) through this before you start playing.\n
\n
\n The Beginner's Guide contains the guide for new players, navigating you through most of early game.\n
\n
\n That's the end of the tutorial. Hope you enjoy the game!\n
\n ),\n canNext: true,\n },\n [iTutorialSteps.End as number]: {\n content: ,\n canNext: true,\n },\n };\n\n useEffect(() => {\n return ITutorialEvents.subscribe(rerender);\n }, [rerender]);\n\n const step = ITutorial.currStep;\n const content = contents[step];\n if (content === undefined) throw new Error(\"error in the tutorial\");\n return (\n <>\n \n {content.content}\n {step !== iTutorialSteps.DocumentationPageInfo && (\n <>\n {step !== iTutorialSteps.Start && (\n \n \n \n )}\n {(content.canNext || ITutorial.stepIsDone[step]) && (\n \n \n \n )}\n \n )}\n
\n
\n \n
\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport Typography from \"@mui/material/Typography\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { load } from \"../db\";\nimport { Engine } from \"../engine\";\nimport { GameRoot } from \"./GameRoot\";\n\nimport { CONSTANTS } from \"../Constants\";\nimport { ActivateRecoveryMode } from \"./React/RecoveryRoot\";\nimport { hash } from \"../hash/hash\";\nimport { pushGameReady } from \"../Electron\";\n\nexport function LoadingScreen(): React.ReactElement {\n const [show, setShow] = useState(false);\n const [loaded, setLoaded] = useState(false);\n\n const version = `v${CONSTANTS.VersionString} (${hash()})`;\n if (process.env.NODE_ENV === \"development\") {\n document.title = `[dev] Bitburner ${version}`;\n } else {\n document.title = `Bitburner ${version}`;\n }\n\n useEffect(() => {\n const id = setTimeout(() => {\n if (!loaded) setShow(true);\n }, 2000);\n return () => clearTimeout(id);\n });\n\n useEffect(() => {\n async function doLoad(): Promise {\n await load()\n .then((saveString) => {\n try {\n Engine.load(saveString);\n } catch (err: unknown) {\n ActivateRecoveryMode();\n setLoaded(true);\n throw err;\n }\n\n pushGameReady();\n setLoaded(true);\n })\n .catch((reason) => {\n console.error(reason);\n Engine.load(\"\");\n setLoaded(true);\n });\n }\n doLoad();\n }, []);\n\n return loaded ? (\n \n ) : (\n \n \n \n \n \n Loading Bitburner {version}\n \n {show && (\n \n \n If the game fails to load, consider killing all scripts\n \n \n )}\n \n );\n}\n","import React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport { TableHead } from \"@mui/material\";\nimport remarkGfm from \"remark-gfm\";\nimport { h1, h2, h3, h4, h5, h6, li, Td, Th, table, tr, Blockquote, p } from \"./components\";\nimport { code, Pre } from \"./code\";\nimport { A } from \"./a\";\n\nexport function MD(props: { md: string }): React.ReactElement {\n return (\n \n {props.md}\n \n );\n}\n","import React from \"react\";\nimport { Link } from \"@mui/material\";\nimport { useNavigator } from \"../React/Documentation\";\nimport { CorruptableText } from \"../React/CorruptableText\";\nimport { Player } from \"@player\";\n\nexport const isSpoiler = (title: string): boolean => title.includes(\"advanced/\") && Player.sourceFileLvl(1) === 0;\n\nexport const A = (props: React.PropsWithChildren<{ href?: string }>): React.ReactElement => {\n const navigator = useNavigator();\n const ref = props.href ?? \"\";\n\n const onClick = (event: React.MouseEvent) => {\n navigator.navigate(ref, event.ctrlKey);\n };\n if (ref.startsWith(\"http\"))\n return (\n \n {props.children}\n \n );\n\n if (isSpoiler(ref))\n return (\n \n \n \n );\n return (\n \n {props.children}\n \n );\n};\n","import React from \"react\";\nimport SyntaxHighlighter from \"react-syntax-highlighter\";\nimport { monokaiSublime as theme } from \"react-syntax-highlighter/dist/esm/styles/hljs\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { CodeProps } from \"react-markdown/lib/ast-to-react\";\nimport { Typography } from \"@mui/material\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n pre: {\n borderRadius: \"6px\",\n },\n code: {\n paddingBottom: \"2.72px\",\n paddingLeft: \"5.44px\",\n paddingRight: \"5.44px\",\n paddingTop: \"2.72px\",\n borderRadius: \"6px\",\n display: \"inline\",\n backgroundColor: theme.palette.background.paper,\n },\n }),\n);\n\nexport const Pre = (props: React.PropsWithChildren): React.ReactElement => {\n const classes = useStyles();\n return (\n \n {props.children}\n \n );\n};\n\nconst InlineCode = (props: React.PropsWithChildren): React.ReactElement => (\n \n {props.children}\n \n);\n\nconst BigCode = (props: React.PropsWithChildren): React.ReactElement => (\n \n {String(props.children)}\n \n);\n\nexport const code = (props: React.PropsWithChildren): React.ReactElement =>\n props.inline ? : ;\n","import React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { ListItemText, Table, TableCell, TableCellProps, TableRow, Typography } from \"@mui/material\";\nimport { LiProps, TableDataCellProps, TableHeaderCellProps } from \"react-markdown/lib/ast-to-react\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n th: { whiteSpace: \"pre\", fontWeight: \"bold\" },\n td: { whiteSpace: \"pre\" },\n blockquote: {\n borderLeftColor: theme.palette.background.paper,\n borderLeftStyle: \"solid\",\n borderLeftWidth: \"4px\",\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n },\n }),\n);\n\nexport const h1 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h2 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h3 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h4 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h5 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h6 = (props: React.PropsWithChildren): React.ReactElement => (\n // Except for h6, that's going to stay h6. If there's complaints we'll figure it out.\n {props.children}\n);\n\nexport const p = (props: React.PropsWithChildren): React.ReactElement => (\n {props.children}\n);\n\nexport const li = (props: React.PropsWithChildren): React.ReactElement => {\n const prefix = props.ordered ? `${props.index + 1}. ` : \"· \";\n return (\n \n {prefix}\n {props.children}\n \n );\n};\n\n// This function is needed because native td have different values for `align` than Mui TableCell.\n// I really hate the implementation but I don't know how to get typescript to cooperate.\nconst fixAlign = (align: React.CSSProperties[\"textAlign\"]): TableCellProps[\"align\"] => {\n if (align === \"-moz-initial\") return \"inherit\";\n if (align === \"initial\") return \"inherit\";\n if (align === \"revert\") return \"inherit\";\n if (align === \"revert-layer\") return \"inherit\";\n if (align === \"unset\") return \"inherit\";\n if (align === \"end\") return \"inherit\";\n if (align === \"start\") return \"inherit\";\n if (align === \"match-parent\") return \"inherit\";\n return align;\n};\n\nexport const Td = (props: React.PropsWithChildren): React.ReactElement => {\n const classes = useStyles();\n const align = fixAlign(props.style?.textAlign);\n return (\n \n \n {props.children}\n \n \n );\n};\n\nexport const Th = (props: React.PropsWithChildren): React.ReactElement => {\n const classes = useStyles();\n const align = fixAlign(props.style?.textAlign);\n return (\n \n \n {props.children}\n \n \n );\n};\n\nexport const table = (props: React.PropsWithChildren): React.ReactElement => {\n return {props.children}
;\n};\n\nexport const tr = (props: React.PropsWithChildren): React.ReactElement => {\n return {props.children};\n};\n\nexport const Blockquote = (props: React.PropsWithChildren): React.ReactElement => {\n const classes = useStyles();\n return
{props.children}
;\n};\n","import { Typography } from \"@mui/material\";\nimport React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Settings } from \"../../Settings/Settings\";\n\n// This particular eslint-disable is correct.\n// In this super specific weird case we in fact do want a regex on an ANSII character.\n// eslint-disable-next-line no-control-regex\nconst ANSI_ESCAPE = new RegExp(\"\\u{001b}\\\\[(?.*?)m\", \"ug\");\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n success: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.colors.success,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n error: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.palette.error.main,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n primary: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.palette.primary.main,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n info: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.palette.info.main,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n warning: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.palette.warning.main,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n }),\n);\n\nconst lineClass = (classes: Record, s: string): string => {\n const lineClassMap: Record = {\n error: classes.error,\n success: classes.success,\n info: classes.info,\n warn: classes.warning,\n };\n return lineClassMap[s] || classes.primary;\n};\n\ntype ANSIITypographyProps = {\n text: unknown;\n color: \"primary\" | \"error\" | \"success\" | \"info\" | \"warn\";\n};\n\nexport const ANSIITypography = React.memo(function ANSIITypography(props: ANSIITypographyProps): React.ReactElement {\n const text = String(props.text);\n const classes = useStyles();\n const parts = [];\n\n // Build a look-alike regex match to place at the front of the matches list\n const INITIAL = {\n 0: \"\",\n index: 0,\n groups: { code: null },\n };\n const matches = [INITIAL, ...text.matchAll(ANSI_ESCAPE), null];\n if (matches.length > 2) {\n matches.slice(0, -1).forEach((m, i) => {\n const n = matches[i + 1];\n if (!m || m.index === undefined || m.groups === undefined) {\n return;\n }\n const startIndex = m.index + m[0].length;\n const stopIndex = n ? n.index : text.length;\n const partText = text.slice(startIndex, stopIndex);\n if (startIndex !== stopIndex) {\n // Don't generate \"empty\" spans\n parts.push({ code: m.groups.code, text: partText });\n }\n });\n }\n if (parts.length === 0) {\n // For example, if the string was empty or there were no escape sequence matches\n parts.push({ code: null, text: text });\n }\n return (\n \n {parts.map((part, i) => (\n \n {part.text}\n \n ))}\n \n );\n});\n\nfunction ansiCodeStyle(code: string | null): Record {\n // The ANSI colors actually have the dark color set as default and require extra work to get\n // bright colors. But these are rarely used or, if they are, are often re-mapped by the\n // terminal emulator to brighter colors. So for foreground colors we use the bright color set\n // and for background colors we use the dark color set. Of course, all colors are available\n // via the longer ESC[n8;5;c] sequence (n={3,4}, c=color). Ideally, these 8-bit maps could\n // be managed in the user preferences/theme.\n // Later note: The above justification is a bit suspect, and I doubt that the compatibility break\n // vs standard ANSI codes is worth it. But, it's the system that's been baked in to BB for years\n // now, so too late to change.\n const COLOR_MAP_BRIGHT: string[] = [\n \"#404040\",\n \"#ff0000\",\n \"#00ff00\",\n \"#ffff00\",\n \"#0000ff\",\n \"#ff00ff\",\n \"#00ffff\",\n \"#ffffff\",\n ];\n const COLOR_MAP_DARK: string[] = [\n \"#000000\",\n \"#800000\",\n \"#008000\",\n \"#808000\",\n \"#000080\",\n \"#800080\",\n \"#008080\",\n \"#c0c0c0\",\n ];\n\n // Returns [parts_consumed, style_string].\n // [-1, _] signals an error in parsing.\n const ansi2rgb = (codeParts: number[], startIdx: number): [number, string] => {\n if (codeParts[startIdx] === 5) {\n if (codeParts.length <= startIdx + 1) {\n // Don't have enough data, but we have to consume what we've seen so far\n return [codeParts.length - startIdx, \"inherit\"];\n }\n const code = codeParts[startIdx + 1];\n if (0 <= code && code < 8) {\n // x8 RGB\n return [2, COLOR_MAP_DARK[code]];\n }\n if (8 <= code && code < 16) {\n // x8 RGB - \"High Intensity\"\n return [2, COLOR_MAP_BRIGHT[code - 8]];\n }\n if (16 <= code && code < 232) {\n // x216 RGB\n const base = code - 16;\n const ir = Math.floor(base / 36);\n const ig = Math.floor((base % 36) / 6);\n const ib = Math.floor((base % 6) / 1);\n const r = ir <= 0 ? 0 : 55 + ir * 40;\n const g = ig <= 0 ? 0 : 55 + ig * 40;\n const b = ib <= 0 ? 0 : 55 + ib * 40;\n return [2, `rgb(${r}, ${g}, ${b})`];\n }\n if (232 <= code && code < 256) {\n // x32 greyscale\n const base = code - 232;\n const grey = base * 10 + 8;\n return [2, `rgb(${grey}, ${grey}, ${grey})`];\n }\n // Value out of range, but the escape sequence is still well-formed\n return [2, \"inherit\"];\n } else if (codeParts[startIdx] === 2) {\n if (codeParts.length <= startIdx + 3) {\n // Don't have enough data, but we have to consume what we've seen so far\n return [codeParts.length - startIdx, \"inherit\"];\n }\n return [4, `rgb(${codeParts[startIdx + 1]}, ${codeParts[startIdx + 2]}, ${codeParts[startIdx + 3]})`];\n }\n return [-1, \"\"];\n };\n\n const style: {\n fontWeight?: string;\n fontStyle?: string;\n textDecoration?: string;\n color?: string;\n backgroundColor?: string;\n padding?: string;\n } = {};\n\n if (code === null || code === \"0\") {\n return style;\n }\n\n const codeParts = code.split(\";\").map((p) => (p === \"\" ? 0 : parseInt(p)));\n\n for (let i = 0; i < codeParts.length; ++i) {\n const codePart = codeParts[i];\n // Decorations\n if (codePart === 1) {\n style.fontWeight = \"bold\";\n } else if (codePart === 3) {\n style.fontStyle = \"italic\";\n } else if (codePart === 4) {\n style.textDecoration = \"underline\";\n }\n // Foreground Color (x8)\n else if (30 <= codePart && codePart < 38) {\n style.color = COLOR_MAP_BRIGHT[codePart - 30];\n }\n // Background Color (x8)\n else if (40 <= codePart && codePart < 48) {\n style.backgroundColor = COLOR_MAP_DARK[codePart - 40];\n }\n // Foreground Color (x256)\n else if (codePart === 38 || codePart === 48) {\n const [extra, colorString] = ansi2rgb(codeParts, i + 1);\n // If it was an invalid code, we consume no extra parts\n if (extra > 0) {\n i += extra;\n style[codePart === 38 ? \"color\" : \"backgroundColor\"] = colorString;\n }\n }\n }\n // If a background color is set, add slight padding to increase the background fill area.\n // This was previously display:inline-block, but that has display errors when line breaks are used.\n if (style.backgroundColor) {\n style.padding = \"var(--padForFlushBg) 0px\";\n }\n return style;\n}\n","import React, { useState, useEffect } from \"react\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { Modal } from \"./Modal\";\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport { sha256 } from \"js-sha256\";\n\nexport const AlertEvents = new EventEmitter<[string | JSX.Element]>();\n\ninterface Alert {\n id: string;\n text: string | JSX.Element;\n hash: string;\n}\n\nlet i = 0;\nexport function AlertManager(): React.ReactElement {\n const [alerts, setAlerts] = useState([]);\n useEffect(\n () =>\n AlertEvents.subscribe((text: string | JSX.Element) => {\n const id = i + \"\";\n i++;\n setAlerts((old) => {\n const hash = getMessageHash(text);\n if (old.some((a) => a.hash === hash)) {\n return old;\n }\n return [\n ...old,\n {\n id: id,\n text: text,\n hash: hash,\n },\n ];\n });\n }),\n [],\n );\n\n useEffect(() => {\n function handle(this: Document, event: KeyboardEvent): void {\n if (event.code === \"Escape\") {\n setAlerts([]);\n }\n }\n document.addEventListener(\"keydown\", handle);\n return () => document.removeEventListener(\"keydown\", handle);\n }, []);\n\n function getMessageHash(text: string | JSX.Element): string {\n if (typeof text === \"string\") return sha256(text);\n return sha256(JSON.stringify(text.props));\n }\n\n function close(): void {\n setAlerts((old) => {\n return old.slice(1, 1e99);\n });\n }\n\n return (\n <>\n {alerts.length > 0 && (\n \n \n {alerts[0].text}\n \n \n )}\n \n );\n}\n","import React from \"react\";\n\ninterface IProps {\n children: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport function BypassWrapper(props: IProps): React.ReactElement {\n if (!props.content) return <>{props.children};\n return <>{props.content};\n}\n","// Root React Component for the Corporation UI\nimport React, { useMemo, useState, useEffect, ReactNode } from \"react\";\n\nimport { Theme, useTheme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { formatHp, formatMoney, formatSkill } from \"../formatNumber\";\nimport { Reputation } from \"./Reputation\";\nimport { KillScriptsModal } from \"./KillScriptsModal\";\nimport { convertTimeMsToTimeElapsedString } from \"../../utils/StringHelperFunctions\";\n\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\nimport IconButton from \"@mui/material/IconButton\";\nimport SaveIcon from \"@mui/icons-material/Save\";\nimport ClearAllIcon from \"@mui/icons-material/ClearAll\";\n\nimport { Settings } from \"../../Settings/Settings\";\nimport { Router } from \"../GameRoot\";\nimport { Page } from \"../Router\";\nimport { Player } from \"@player\";\nimport { StatsProgressOverviewCell } from \"./StatsProgressBar\";\nimport { currentNodeMults } from \"../../BitNode/BitNodeMultipliers\";\n\nimport { Box, Tooltip } from \"@mui/material\";\n\nimport { isClassWork } from \"../../Work/ClassWork\";\nimport { CONSTANTS } from \"../../Constants\";\nimport { isCreateProgramWork } from \"../../Work/CreateProgramWork\";\nimport { isGraftingWork } from \"../../Work/GraftingWork\";\nimport { isFactionWork } from \"../../Work/FactionWork\";\nimport { ReputationRate } from \"./ReputationRate\";\nimport { isCompanyWork } from \"../../Work/CompanyWork\";\nimport { isCrimeWork } from \"../../Work/CrimeWork\";\nimport { ActionIdentifier } from \"../../Bladeburner/ActionIdentifier\";\nimport { Skills } from \"../../PersonObjects/Skills\";\nimport { calculateSkillProgress } from \"../../PersonObjects/formulas/skill\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { useRerender } from \"./hooks\";\n\ntype SkillRowName = \"Hack\" | \"Str\" | \"Def\" | \"Dex\" | \"Agi\" | \"Cha\" | \"Int\";\ntype RowName = SkillRowName | \"HP\" | \"Money\";\nconst OverviewEventEmitter = new EventEmitter();\n\n// These values aren't displayed, they're just used for comparison to check if state has changed\nconst valUpdaters: Record any> = {\n HP: () => Player.hp.current + \"|\" + Player.hp.max, // This isn't displayed, it's just compared for updates.\n Money: () => Player.money,\n Hack: () => Player.skills.hacking,\n Str: () => Player.skills.strength,\n Def: () => Player.skills.defense,\n Dex: () => Player.skills.dexterity,\n Agi: () => Player.skills.agility,\n Cha: () => Player.skills.charisma,\n Int: () => Player.skills.intelligence,\n};\n\n//These formattedVals functions don't take in a value because of the weirdness around HP.\nconst formattedVals: Record string> = {\n HP: () => `${formatHp(Player.hp.current)} / ${formatHp(Player.hp.max)}`,\n Money: () => formatMoney(Player.money),\n Hack: () => formatSkill(Player.skills.hacking),\n Str: () => formatSkill(Player.skills.strength),\n Def: () => formatSkill(Player.skills.defense),\n Dex: () => formatSkill(Player.skills.dexterity),\n Agi: () => formatSkill(Player.skills.agility),\n Cha: () => formatSkill(Player.skills.charisma),\n Int: () => formatSkill(Player.skills.intelligence),\n};\n\nconst skillMultUpdaters: Record number> = {\n //Used by skill bars to calculate the mult\n Hack: () => Player.mults.hacking * currentNodeMults.HackingLevelMultiplier,\n Str: () => Player.mults.strength * currentNodeMults.StrengthLevelMultiplier,\n Def: () => Player.mults.defense * currentNodeMults.DefenseLevelMultiplier,\n Dex: () => Player.mults.dexterity * currentNodeMults.DexterityLevelMultiplier,\n Agi: () => Player.mults.agility * currentNodeMults.AgilityLevelMultiplier,\n Cha: () => Player.mults.charisma * currentNodeMults.CharismaLevelMultiplier,\n Int: () => 1,\n};\n\nconst skillNameMap: Record = {\n Hack: \"hacking\",\n Str: \"strength\",\n Def: \"defense\",\n Dex: \"dexterity\",\n Agi: \"agility\",\n Cha: \"charisma\",\n Int: \"intelligence\",\n};\n\ninterface SkillBarProps {\n name: SkillRowName;\n color?: string;\n}\nfunction SkillBar({ name, color }: SkillBarProps): React.ReactElement {\n const [progress, setProgress] = useState(calculateSkillProgress(0));\n useEffect(() => {\n const clearSubscription = OverviewEventEmitter.subscribe(() => {\n const mult = skillMultUpdaters[name]();\n setProgress(calculateSkillProgress(Player.exp[skillNameMap[name]], mult));\n });\n\n return clearSubscription;\n }, [name]);\n\n return (\n \n \n \n );\n}\n\ninterface ValProps {\n name: RowName;\n color?: string;\n}\nexport function Val({ name, color }: ValProps): React.ReactElement {\n //val isn't actually used here, the update of val just forces a refresh of the formattedVal that gets shown\n const [__, setVal] = useState(valUpdaters[name]());\n useEffect(() => {\n const clearSubscription = OverviewEventEmitter.subscribe(() => setVal(valUpdaters[name]()));\n return clearSubscription;\n }, [name]);\n\n return {formattedVals[name]()};\n}\n\ninterface DataRowProps {\n name: RowName; //name for UI display\n showBar: boolean;\n color?: string;\n cellType: \"cellNone\" | \"cell\";\n}\nexport function DataRow({ name, showBar, color, cellType }: DataRowProps): React.ReactElement {\n const classes = useStyles();\n const isSkill = name in skillNameMap;\n const skillBar = showBar && isSkill ? : <>;\n return (\n <>\n \n \n {name} \n \n \n \n \n \n \n {}\n \n \n \n {skillBar}\n \n );\n}\n\ninterface OverviewProps {\n parentOpen: boolean;\n save: () => void;\n killScripts: () => void;\n}\n\nexport function CharacterOverview({ parentOpen, save, killScripts }: OverviewProps): React.ReactElement {\n const [killOpen, setKillOpen] = useState(false);\n const [hasIntelligence, setHasIntelligence] = useState(Player.skills.intelligence > 0);\n const [showBars, setShowBars] = useState(!Settings.DisableOverviewProgressBars);\n useEffect(() => {\n if (!parentOpen) return; // No rerendering if overview is hidden, for performance\n const interval = setInterval(() => {\n setHasIntelligence(Player.skills.intelligence > 0);\n setShowBars(!Settings.DisableOverviewProgressBars);\n OverviewEventEmitter.emit(); // Tell every other updating component to update as well\n }, 600);\n return () => clearInterval(interval);\n }, [parentOpen]);\n const classes = useStyles();\n const theme = useTheme();\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n {hasIntelligence ? (\n \n ) : (\n <>\n )}\n \n \n \n {}\n \n \n \n \n {}\n \n \n \n \n {}\n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n setKillOpen(true)}>\n \n \n \n \n \n \n setKillOpen(false)} killScripts={killScripts} />\n \n );\n}\n\nfunction ActionText(props: { action: ActionIdentifier }): React.ReactElement {\n const bladeburner = Player.bladeburner;\n if (!bladeburner) return <>;\n const action = bladeburner.getTypeAndNameFromActionId(props.action);\n return (\n \n {action.type}: {action.name}\n \n );\n}\n\nfunction BladeburnerText(): React.ReactElement {\n const classes = useStyles();\n const rerender = useRerender();\n useEffect(() => {\n const clearSubscription = OverviewEventEmitter.subscribe(rerender);\n return clearSubscription;\n }, [rerender]);\n\n const action = Player.bladeburner?.action;\n return useMemo(\n () =>\n //Action type 1 is Idle, see ActionTypes.ts\n //TODO 2.3: Revamp typing in bladeburner\n !action || action.type === 1 ? (\n <>\n ) : (\n <>\n \n \n Bladeburner:\n \n \n \n \n \n \n \n \n ),\n [action, classes.cellNone],\n );\n}\n\ninterface WorkInProgressOverviewProps {\n tooltip: React.ReactNode;\n header: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst onClickFocusWork = (): void => {\n Player.startFocusing();\n Router.toPage(Page.Work);\n};\nfunction WorkInProgressOverview({ tooltip, children, header }: WorkInProgressOverviewProps): React.ReactElement {\n const classes = useStyles();\n return (\n <>\n \n \n {tooltip}}>\n \n {header}\n \n \n \n \n \n \n {children}\n \n \n {useMemo(\n () => (\n \n \n \n \n \n ),\n [classes.cellNone],\n )}\n \n );\n}\n\nfunction Work(): React.ReactElement {\n const rerender = useRerender();\n useEffect(() => {\n const clearSubscription = OverviewEventEmitter.subscribe(rerender);\n return clearSubscription;\n }, [rerender]);\n\n if (Player.currentWork === null || Player.focus) return <>;\n\n let details: ReactNode = \"\";\n let header: ReactNode = \"\";\n let innerText: ReactNode = \"\";\n if (isCrimeWork(Player.currentWork)) {\n const crime = Player.currentWork.getCrime();\n const perc = (Player.currentWork.unitCompleted / crime.time) * 100;\n\n details = <>{Player.currentWork.crimeType};\n header = <>You are attempting to {Player.currentWork.crimeType};\n innerText = <>{perc.toFixed(2)}%;\n }\n if (isClassWork(Player.currentWork)) {\n details = <>{Player.currentWork.getClass().youAreCurrently};\n header = <>You are {Player.currentWork.getClass().youAreCurrently};\n innerText = <>{convertTimeMsToTimeElapsedString(Player.currentWork.cyclesWorked * CONSTANTS.MilliPerCycle)};\n }\n if (isCreateProgramWork(Player.currentWork)) {\n const create = Player.currentWork;\n details = <>Coding {create.programName};\n header = <>Creating a program;\n innerText = (\n <>\n {create.programName} {((create.unitCompleted / create.unitNeeded()) * 100).toFixed(2)}%\n \n );\n }\n if (isGraftingWork(Player.currentWork)) {\n const graft = Player.currentWork;\n details = <>Grafting {graft.augmentation};\n header = <>Grafting an Augmentation;\n innerText = (\n <>\n {((graft.unitCompleted / graft.unitNeeded()) * 100).toFixed(2)}% done\n \n );\n }\n\n if (isFactionWork(Player.currentWork)) {\n const factionWork = Player.currentWork;\n header = (\n <>\n Working for {factionWork.factionName}\n \n );\n innerText = (\n <>\n rep\n
(\n )\n \n );\n }\n if (isCompanyWork(Player.currentWork)) {\n const companyWork = Player.currentWork;\n const job = Player.jobs[companyWork.companyName];\n if (!job) return <>;\n details = (\n <>\n {job} at {companyWork.companyName}\n \n );\n\n header = (\n <>\n Working at {companyWork.companyName}\n \n );\n innerText = (\n <>\n rep\n
(\n )\n \n );\n }\n\n return (\n \n {innerText}\n \n );\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n workCell: {\n textAlign: \"center\",\n maxWidth: \"200px\",\n borderBottom: \"none\",\n padding: 0,\n margin: 0,\n },\n\n workHeader: {\n fontSize: \"0.9rem\",\n },\n\n workSubtitles: {\n fontSize: \"0.8rem\",\n },\n\n cellNone: {\n borderBottom: \"none\",\n padding: 0,\n margin: 0,\n },\n cell: {\n padding: 0,\n margin: 0,\n },\n hp: {\n color: theme.colors.hp,\n },\n money: {\n color: theme.colors.money,\n },\n hack: {\n color: theme.colors.hack,\n },\n combat: {\n color: theme.colors.combat,\n },\n cha: {\n color: theme.colors.cha,\n },\n int: {\n color: theme.colors.int,\n },\n }),\n);\n\nexport { useStyles };\n","import React, { useState, useEffect } from \"react\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface IProps {\n text: string;\n onDone?: () => void;\n}\n\nfunction sleep(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function CinematicLine(props: IProps): React.ReactElement {\n const [length, setLength] = useState(0);\n const [done, setDone] = useState(false);\n\n function advance(): void {\n const newLength = length + 1;\n setLength(newLength);\n setDone(newLength >= props.text.length);\n }\n\n useEffect(() => {\n if (done && props.onDone) {\n props.onDone();\n return;\n }\n let cancel = false;\n (async () => {\n await sleep(10).then(() => !cancel && advance());\n })();\n return () => {\n cancel = true;\n };\n });\n return (\n <>\n \n {props.text.slice(0, length)}\n {!done && }\n \n \n );\n}\n","import React, { useState } from \"react\";\n\nimport { CinematicLine } from \"./CinematicLine\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\n\ninterface IProps {\n lines: string[];\n auto?: boolean;\n onDone?: () => void;\n}\n\nexport function CinematicText(props: IProps): React.ReactElement {\n const [i, setI] = useState(0);\n const [done, setDone] = useState(false);\n\n function advance(): void {\n const newI = i + 1;\n setI(newI);\n if (newI >= props.lines.length) {\n if (props.onDone && props.auto) props.onDone();\n setDone(true);\n }\n }\n\n return (\n <>\n {props.lines.slice(0, i).map((line, i) => (\n {line}\n ))}\n {props.lines.length > i && }\n {!props.auto && props.onDone && done && }\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { KEY } from \"../../utils/helpers/keyCodes\";\n\nimport { CodingContract, CodingContractTypes } from \"../../CodingContracts\";\nimport { CopyableText } from \"./CopyableText\";\nimport { Modal } from \"./Modal\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport Typography from \"@mui/material/Typography\";\nimport TextField from \"@mui/material/TextField\";\nimport Button from \"@mui/material/Button\";\n\ninterface CodingContractProps {\n c: CodingContract;\n onClose: () => void;\n onAttempt: (answer: string) => void;\n}\n\nexport const CodingContractEvent = new EventEmitter<[CodingContractProps]>();\n\nexport function CodingContractModal(): React.ReactElement {\n const [contract, setContract] = useState(null);\n const [answer, setAnswer] = useState(\"\");\n\n useEffect(() => {\n CodingContractEvent.subscribe((props) => setContract(props));\n });\n useEffect(() => {\n return () => {\n contract?.onClose();\n };\n }, [contract]);\n\n if (contract === null) return <>;\n\n function onChange(event: React.ChangeEvent): void {\n setAnswer(event.target.value);\n }\n\n function onKeyDown(event: React.KeyboardEvent): void {\n if (contract === null) return;\n const value = event.currentTarget.value;\n\n if (event.key === KEY.ENTER && value !== \"\") {\n event.preventDefault();\n contract.onAttempt(answer);\n setAnswer(\"\");\n close();\n }\n }\n\n function close(): void {\n if (contract === null) return;\n contract.onClose();\n setContract(null);\n }\n\n const contractType = CodingContractTypes[contract.c.type];\n const description = [];\n for (const [i, value] of contractType.desc(contract.c.data).split(\"\\n\").entries())\n description.push(\" }}>);\n return (\n \n \n \n You are attempting to solve a Coding Contract. You have {contract.c.getMaxNumTries() - contract.c.tries} tries\n remaining, after which the contract will self-destruct.\n \n
\n {description}\n
\n {\n contract.onAttempt(answer);\n setAnswer(\"\");\n close();\n }}\n >\n Solve\n \n ),\n }}\n />\n
\n );\n}\n","import type { CompanyName } from \"../../Enums\";\n\nimport React from \"react\";\n\nimport Select, { SelectChangeEvent } from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport Button from \"@mui/material/Button\";\nimport { Companies } from \"../../Company/Companies\";\nimport { getRecordKeys } from \"../../Types/Record\";\n\ninterface IProps {\n purchase: () => void;\n canPurchase: boolean;\n onChange: (event: SelectChangeEvent) => void;\n value: CompanyName;\n}\n\nconst sortedCompanies = getRecordKeys(Companies).sort((a, b) => a.localeCompare(b));\n\nexport function CompanyDropdown(props: IProps): React.ReactElement {\n const companies = [];\n for (const company of sortedCompanies) {\n companies.push(\n \n {company}\n ,\n );\n }\n\n return (\n \n Buy\n \n }\n sx={{ mx: 1 }}\n value={props.value}\n onChange={props.onChange}\n >\n {companies}\n \n );\n}\n","import React from \"react\";\nimport { Modal } from \"./Modal\";\n\nimport Button from \"@mui/material/Button\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n onConfirm: () => void;\n confirmationText: string | React.ReactNode;\n additionalButton?: React.ReactNode;\n}\n\nexport function ConfirmationModal(props: IProps): React.ReactElement {\n return (\n \n <>\n {props.confirmationText}\n {\n props.onConfirm();\n }}\n >\n Confirm\n \n {props.additionalButton && <>{props.additionalButton}}\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport Tooltip from \"@mui/material/Tooltip\";\n\ninterface IProps {\n value: string;\n color?: string;\n variant?:\n | \"button\"\n | \"caption\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"overline\"\n | \"inherit\"\n | undefined;\n}\n\nexport function CopyableText(props: IProps): React.ReactElement {\n const [open, setOpen] = useState(false);\n\n function copy(): void {\n const copyText = document.createElement(\"textarea\");\n copyText.value = props.value;\n document.body.appendChild(copyText);\n copyText.select();\n copyText.setSelectionRange(0, 1e10);\n document.execCommand(\"copy\");\n document.body.removeChild(copyText);\n setOpen(true);\n setTimeout(() => setOpen(false), 1000);\n }\n\n return (\n Copied!}>\n \n {props.value}\n \n \n );\n}\n","import React, { useEffect, useState } from \"react\";\n\nfunction replace(str: string, i: number, char: string): string {\n return str.substring(0, i) + char + str.substring(i + 1);\n}\n\ninterface CorruptableTextProps {\n content: string;\n}\n\nfunction randomize(char: string): string {\n const randFrom = (str: string): string => str[Math.floor(Math.random() * str.length)];\n const classes = [\"abcdefghijklmnopqrstuvwxyz\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\", \"1234567890\", \" _\", \"()[]{}<>\"];\n const other = `!@#$%^&*()_+|\\\\';\"/.,?\\`~`;\n\n for (const c of classes) {\n if (c.includes(char)) return randFrom(c);\n }\n\n return randFrom(other);\n}\n\nexport function CorruptableText(props: CorruptableTextProps): JSX.Element {\n const [content, setContent] = useState(props.content);\n\n useEffect(() => {\n let counter = 5;\n const timers: number[] = [];\n const intervalId = setInterval(() => {\n counter--;\n if (counter > 0) return;\n counter = Math.random() * 5;\n const index = Math.random() * props.content.length;\n const letter = props.content.charAt(index);\n setContent((content) => replace(content, index, randomize(letter)));\n timers.push(\n window.setTimeout(() => {\n setContent((content) => replace(content, index, letter));\n }, 500),\n );\n }, 20);\n\n return () => {\n clearInterval(intervalId);\n timers.forEach((timerId) => clearTimeout(timerId));\n };\n }, [props.content]);\n\n return {content};\n}\n","import React, { useState } from \"react\";\nimport { deleteGame } from \"../../db\";\nimport { ConfirmationModal } from \"./ConfirmationModal\";\nimport Button from \"@mui/material/Button\";\nimport { Tooltip } from \"@mui/material\";\n\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { pushDisableRestore } from \"../../Electron\";\n\ninterface IProps {\n color?: \"primary\" | \"warning\" | \"error\";\n}\n\nexport function DeleteGameButton({ color = \"primary\" }: IProps): React.ReactElement {\n const [modalOpened, setModalOpened] = useState(false);\n\n return (\n <>\n \n \n \n {\n setModalOpened(false);\n deleteGame()\n .then(() => {\n pushDisableRestore();\n setTimeout(() => location.reload(), 1000);\n })\n .catch((r) => console.error(`Could not delete game: ${r}`));\n }}\n open={modalOpened}\n onClose={() => setModalOpened(false)}\n confirmationText={\"Really delete your game? (It's permanent!)\"}\n />\n \n );\n}\n","import { AlertEvents } from \"./AlertManager\";\n\nimport React from \"react\";\nimport { Typography } from \"@mui/material\";\n\nexport function dialogBoxCreate(txt: string | JSX.Element, html = false): void {\n AlertEvents.emit(\n typeof txt !== \"string\" ? (\n txt\n ) : html ? (\n
\n ) : (\n \n {txt}\n \n ),\n );\n}\n","import React, { useContext, useState } from \"react\";\nimport { FilePath, asFilePath } from \"../../Paths/FilePath\";\n\ninterface Navigator {\n navigate: (s: string, external: boolean) => void;\n}\n\nexport const Navigator = React.createContext({ navigate: () => undefined });\n\nexport const useNavigator = (): Navigator => useContext(Navigator);\n\ninterface History {\n pages: FilePath[];\n page: FilePath;\n push(p: FilePath): void;\n pop(): void;\n home(): void;\n}\n\nconst defaultPage = asFilePath(\"index.md\");\n\nconst HistoryContext = React.createContext({\n page: defaultPage,\n pages: [],\n push: () => undefined,\n pop: () => undefined,\n home: () => undefined,\n});\n\nexport const Provider = HistoryContext.Provider;\nexport const useHistory = (): History => useContext(HistoryContext);\n\nconst onPush = (h: History, p: FilePath): History => {\n return {\n ...h,\n page: p,\n pages: [...h.pages, h.page],\n };\n};\n\nconst onPop = (h: History): History => {\n const page = h.pages.pop() ?? defaultPage;\n return {\n ...h,\n page: page,\n };\n};\n\nconst onHome = (h: History): History => {\n return {\n ...h,\n page: defaultPage,\n pages: [],\n };\n};\n\nexport const HistoryProvider = (props: React.PropsWithChildren): React.ReactElement => {\n const [history, setHistory] = useState({\n page: defaultPage,\n pages: [],\n push(p: FilePath) {\n setHistory((h) => onPush(h, p));\n },\n pop() {\n setHistory((h) => onPop(h));\n },\n home() {\n setHistory((h) => onHome(h));\n },\n });\n return {props.children};\n};\n","import * as React from \"react\";\nimport { formatFavor } from \"../formatNumber\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n favor: {\n color: theme.colors.rep,\n },\n }),\n);\n\nexport function Favor({ favor }: { favor: number | string }): React.ReactElement {\n const classes = useStyles();\n return {typeof favor === \"number\" ? formatFavor(favor) : favor};\n}\n","import React from \"react\";\nimport { formatHashes } from \"../formatNumber\";\nimport { Hashes } from \"./Hashes\";\n\nexport function HashRate({ hashes }: { hashes: number }): React.ReactElement {\n return ;\n}\n","import * as React from \"react\";\nimport { formatHashes } from \"../formatNumber\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n money: {\n color: theme.colors.money,\n },\n }),\n);\n\nexport function Hashes({ hashes }: { hashes: number | string }): React.ReactElement {\n const classes = useStyles();\n return {typeof hashes === \"number\" ? formatHashes(hashes) : hashes};\n}\n","import React from \"react\";\n\nimport { Tooltip } from \"@mui/material\";\n\nimport ThumbUpAlt from \"@mui/icons-material/ThumbUpAlt\";\nimport ThumbDownAlt from \"@mui/icons-material/ThumbDownAlt\";\n\nexport const ComparisonIcon = ({ isBetter }: { isBetter: boolean }): JSX.Element => {\n const title = isBetter ? \"Imported value is larger!\" : \"Imported value is smaller!\";\n const icon = isBetter ? : ;\n\n return {icon};\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport ButtonGroup from \"@mui/material/ButtonGroup\";\nimport Collapse from \"@mui/material/Collapse\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Paper from \"@mui/material/Paper\";\nimport Table from \"@mui/material/Table\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableCell from \"@mui/material/TableCell\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Typography from \"@mui/material/Typography\";\n\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport WarningIcon from \"@mui/icons-material/Warning\";\nimport DirectionsRunIcon from \"@mui/icons-material/DirectionsRun\";\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\n\nimport { Skills } from \"@nsdefs\";\n\nimport { ImportData, saveObject } from \"../../../SaveObject\";\nimport { Settings } from \"../../../Settings/Settings\";\nimport { convertTimeMsToTimeElapsedString } from \"../../../utils/StringHelperFunctions\";\nimport { formatMoney, formatNumberNoSuffix } from \"../../formatNumber\";\nimport { ConfirmationModal } from \"../ConfirmationModal\";\nimport { pushImportResult } from \"../../../Electron\";\nimport { Router } from \"../../GameRoot\";\nimport { Page } from \"../../Router\";\nimport { useBoolean } from \"../hooks\";\n\nimport { ComparisonIcon } from \"./ComparisonIcon\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n padding: theme.spacing(2),\n maxWidth: \"1000px\",\n\n \"& .MuiTable-root\": {\n \"& .MuiTableCell-root\": {\n borderBottom: `1px solid ${Settings.theme.welllight}`,\n },\n\n \"& .MuiTableHead-root .MuiTableRow-root\": {\n backgroundColor: Settings.theme.backgroundsecondary,\n\n \"& .MuiTableCell-root\": {\n color: Settings.theme.primary,\n fontWeight: \"bold\",\n },\n },\n\n \"& .MuiTableBody-root\": {\n \"& .MuiTableRow-root:nth-of-type(odd)\": {\n backgroundColor: Settings.theme.well,\n\n \"& .MuiTableCell-root\": {\n color: Settings.theme.primarylight,\n },\n },\n \"& .MuiTableRow-root:nth-of-type(even)\": {\n backgroundColor: Settings.theme.backgroundsecondary,\n\n \"& .MuiTableCell-root\": {\n color: Settings.theme.primarylight,\n },\n },\n },\n },\n },\n\n skillTitle: {\n textTransform: \"capitalize\",\n },\n }),\n);\n\n// TODO: move to game constants and/or extract as an enum\nconst playerSkills: (keyof Skills)[] = [\"hacking\", \"strength\", \"defense\", \"dexterity\", \"agility\", \"charisma\"];\n\nlet initialAutosave = 0;\n\nexport const ImportSave = (props: { importString: string; automatic: boolean }): JSX.Element => {\n const classes = useStyles();\n const [importData, setImportData] = useState();\n const [currentData, setCurrentData] = useState();\n const [isImportModalOpen, { on: openImportModal, off: closeImportModal }] = useBoolean(false);\n const [isSkillsExpanded, { toggle: toggleSkillsExpand }] = useBoolean(true);\n const [headback, setHeadback] = useState(false);\n\n const handleGoBack = (): void => {\n Settings.AutosaveInterval = initialAutosave;\n pushImportResult(false);\n Router.allowRouting(true);\n setHeadback(true);\n };\n\n const handleImport = async (): Promise => {\n await saveObject.importGame(props.importString, true);\n pushImportResult(true);\n };\n\n useEffect(() => {\n // We want to disable autosave while we're in this mode\n initialAutosave = Settings.AutosaveInterval;\n Settings.AutosaveInterval = 0;\n Router.allowRouting(false);\n }, []);\n\n useEffect(() => {\n if (headback) Router.toPage(Page.Terminal);\n }, [headback]);\n\n useEffect(() => {\n async function fetchData(): Promise {\n const dataBeingImported = await saveObject.getImportDataFromString(props.importString);\n const dataCurrentlyInGame = await saveObject.getImportDataFromString(saveObject.getSaveString(true));\n\n setImportData(dataBeingImported);\n setCurrentData(dataCurrentlyInGame);\n\n return Promise.resolve();\n }\n if (props.importString) fetchData();\n }, [props.importString]);\n\n if (!importData || !currentData) return <>;\n\n return (\n \n \n Import Save Comparison\n \n {props.automatic && (\n \n We've found a NEWER save that you may want to use instead.\n \n )}\n \n Your current game's data is on the left and the data that will be imported is on the right.\n
\n Please double check everything is fine before proceeding!\n
\n \n \n \n \n \n Current Game\n Being Imported\n \n \n \n\n \n \n Game Identifier\n {currentData.playerData?.identifier ?? \"n/a\"}\n {importData.playerData?.identifier ?? \"n/a\"}\n \n {importData.playerData?.identifier !== currentData.playerData?.identifier && (\n \n \n \n )}\n \n \n \n Playtime\n {convertTimeMsToTimeElapsedString(currentData.playerData?.totalPlaytime ?? 0)}\n {convertTimeMsToTimeElapsedString(importData.playerData?.totalPlaytime ?? 0)}\n \n {importData.playerData?.totalPlaytime !== currentData.playerData?.totalPlaytime && (\n (currentData.playerData?.totalPlaytime ?? 0)\n }\n />\n )}\n \n \n\n \n Saved On\n \n {(currentData.playerData?.lastSave ?? 0) > 0\n ? new Date(currentData.playerData?.lastSave ?? 0).toLocaleString()\n : \"n/a\"}\n \n \n {(importData.playerData?.lastSave ?? 0) > 0\n ? new Date(importData.playerData?.lastSave ?? 0).toLocaleString()\n : \"n/a\"}\n \n \n {importData.playerData?.lastSave !== currentData.playerData?.lastSave && (\n (currentData.playerData?.lastSave ?? 0)}\n />\n )}\n \n \n\n \n Money\n {formatMoney(currentData.playerData?.money ?? 0)}\n {formatMoney(importData.playerData?.money ?? 0)}\n \n {importData.playerData?.money !== currentData.playerData?.money && (\n (currentData.playerData?.money ?? 0)}\n />\n )}\n \n \n \n \n \n {isSkillsExpanded ? : }\n \n Skills\n \n \n \n \n \n
\n \n {/* empty row to keep even/odd coloring */}\n {playerSkills.map((skill) => {\n const currentSkill = currentData.playerData?.skills[skill] ?? 0;\n const importSkill = importData.playerData?.skills[skill] ?? 0;\n return (\n \n {skill}\n {formatNumberNoSuffix(currentSkill, 0)}\n {formatNumberNoSuffix(importSkill, 0)}\n \n {currentSkill !== importSkill && currentSkill} />}\n \n \n );\n })}\n {playerSkills.length % 2 === 1 && (\n {/* empty row to keep even/odd coloring */}\n )}\n \n
\n \n \n \n {/* empty row to keep even/odd coloring */}\n\n \n Augmentations\n {currentData.playerData?.augmentations}\n {importData.playerData?.augmentations}\n \n {importData.playerData?.augmentations !== currentData.playerData?.augmentations && (\n (currentData.playerData?.augmentations ?? 0)\n }\n />\n )}\n \n \n\n \n Factions\n {currentData.playerData?.factions}\n {importData.playerData?.factions}\n \n {importData.playerData?.factions !== currentData.playerData?.factions && (\n (currentData.playerData?.factions ?? 0)}\n />\n )}\n \n \n \n Achievements\n {currentData.playerData?.achievements}\n {importData.playerData?.achievements}\n \n {importData.playerData?.achievements !== currentData.playerData?.achievements && (\n (currentData.playerData?.achievements ?? 0)}\n />\n )}\n \n \n\n \n Source Files\n {currentData.playerData?.sourceFiles}\n {importData.playerData?.sourceFiles}\n \n {importData.playerData?.sourceFiles !== currentData.playerData?.sourceFiles && (\n (currentData.playerData?.sourceFiles ?? 0)}\n />\n )}\n \n \n\n \n BitNode\n \n {currentData.playerData?.bitNode}-{currentData.playerData?.bitNodeLevel}\n \n \n {importData.playerData?.bitNode}-{importData.playerData?.bitNodeLevel}\n \n \n \n \n \n
\n\n \n \n \n \n \n \n Importing new save game data will completely wipe the current game data!\n
\n \n }\n />\n
\n
\n );\n};\n","import React from \"react\";\nimport { Modal } from \"./Modal\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n killScripts: () => void;\n}\n\nexport function KillScriptsModal(props: IProps): React.ReactElement {\n function onClick(): void {\n props.killScripts();\n props.onClose();\n }\n\n return (\n \n Forcefully kill all running scripts? This will also save your game and reload the game.\n \n \n );\n}\n","import React, { useState, useEffect, useRef, useCallback, useMemo } from \"react\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { RunningScript } from \"../../Script/RunningScript\";\nimport { killWorkerScriptByPid } from \"../../Netscript/killWorkerScript\";\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport Paper from \"@mui/material/Paper\";\nimport Draggable, { DraggableEvent } from \"react-draggable\";\nimport { ResizableBox, ResizeCallbackData } from \"react-resizable\";\nimport IconButton from \"@mui/material/IconButton\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport ArrowForwardIosIcon from \"@mui/icons-material/ArrowForwardIos\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport ExpandLessIcon from \"@mui/icons-material/ExpandLess\";\nimport StopCircleIcon from \"@mui/icons-material/StopCircle\";\nimport PlayCircleIcon from \"@mui/icons-material/PlayCircle\";\nimport { workerScripts } from \"../../Netscript/WorkerScripts\";\nimport { startWorkerScript } from \"../../NetscriptWorker\";\nimport { GetServer } from \"../../Server/AllServers\";\nimport { findRunningScriptByPid } from \"../../Script/ScriptHelpers\";\nimport { debounce } from \"lodash\";\nimport { Settings } from \"../../Settings/Settings\";\nimport { ANSIITypography } from \"./ANSIITypography\";\nimport { useRerender } from \"./hooks\";\nimport { dialogBoxCreate } from \"./DialogBox\";\n\nlet layerCounter = 0;\n\nexport const LogBoxEvents = new EventEmitter<[RunningScript]>();\nexport const LogBoxCloserEvents = new EventEmitter<[number]>();\nexport const LogBoxClearEvents = new EventEmitter<[]>();\n\n// Dynamic properties (size, position) bound to a specific rendered instance of a LogBox\nexport class LogBoxProperties {\n x = window.innerWidth * 0.4;\n y = window.innerHeight * 0.3;\n width = 500;\n height = 500;\n\n rerender: () => void;\n rootRef: React.RefObject;\n\n constructor(rerender: () => void, rootRef: React.RefObject) {\n this.rerender = rerender;\n this.rootRef = rootRef;\n }\n\n updateDOM(): void {\n if (!this.rootRef.current) return;\n const state = this.rootRef.current.state as { x: number; y: number };\n state.x = this.x;\n state.y = this.y;\n }\n\n setPosition(x: number, y: number): void {\n this.x = x;\n this.y = y;\n this.updateDOM();\n }\n\n setSize(width: number, height: number): void {\n this.width = width;\n this.height = height;\n this.rerender();\n }\n\n isVisible(): boolean {\n return this.rootRef.current !== null;\n }\n}\n\ninterface Log {\n id: number; // The PID of the script *when the window was first opened*\n script: RunningScript;\n}\n\nlet logs: Log[] = [];\n\nexport function LogBoxManager(): React.ReactElement {\n const rerender = useRerender();\n\n //Close tail windows by their pid.\n const closePid = useCallback(\n (pid: number) => {\n logs = logs.filter((log) => log.script.pid !== pid);\n rerender();\n },\n [rerender],\n );\n\n useEffect(\n () =>\n LogBoxEvents.subscribe((script: RunningScript) => {\n if (logs.some((l) => l.script.pid === script.pid)) return;\n logs.push({\n id: script.pid,\n script: script,\n });\n rerender();\n }),\n [rerender],\n );\n\n //Event used by ns.closeTail to close tail windows\n useEffect(\n () =>\n LogBoxCloserEvents.subscribe((pid: number) => {\n closePid(pid);\n }),\n [closePid],\n );\n\n useEffect(\n () =>\n LogBoxClearEvents.subscribe(() => {\n logs = [];\n rerender();\n }),\n [rerender],\n );\n\n //Close tail windows by their id\n function close(id: number): void {\n logs = logs.filter((l) => l.id !== id);\n rerender();\n }\n\n return (\n <>\n {logs.map((log) => (\n close(log.id)} />\n ))}\n \n );\n}\n\ninterface LogWindowProps {\n script: RunningScript;\n onClose: () => void;\n}\n\nconst useStyles = makeStyles(() =>\n createStyles({\n logs: {\n overflowY: \"scroll\",\n overflowX: \"hidden\",\n scrollbarWidth: \"auto\",\n flexDirection: \"column-reverse\",\n whiteSpace: \"pre-wrap\",\n wordWrap: \"break-word\",\n },\n titleButton: {\n borderWidth: \"0 0 0 1px\",\n borderColor: Settings.theme.welllight,\n borderStyle: \"solid\",\n borderRadius: \"0\",\n padding: \"0\",\n height: \"100%\",\n },\n }),\n);\n\nexport const logBoxBaseZIndex = 1500;\n\nfunction LogWindow(props: LogWindowProps): React.ReactElement {\n const draggableRef = useRef(null);\n const rootRef = useRef(null);\n const script = props.script;\n const classes = useStyles();\n const container = useRef(null);\n const textArea = useRef(null);\n const rerender = useRerender(1000);\n const propsRef = useRef(new LogBoxProperties(rerender, rootRef));\n script.tailProps = propsRef.current;\n const [minimized, setMinimized] = useState(false);\n\n const textAreaKeyDown = (e: React.KeyboardEvent) => {\n if (e.ctrlKey && e.key === \"a\") {\n if (!textArea.current) return; //Should never happen\n const r = new Range();\n r.setStartBefore(textArea.current);\n r.setEndAfter(textArea.current);\n document.getSelection()?.removeAllRanges();\n document.getSelection()?.addRange(r);\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const onResize = (e: React.SyntheticEvent, { size }: ResizeCallbackData) => {\n propsRef.current.setSize(size.width, size.height);\n };\n\n const updateLayer = useCallback(() => {\n const c = container.current;\n if (c === null) return;\n c.style.zIndex = logBoxBaseZIndex + layerCounter + \"\";\n layerCounter++;\n rerender();\n }, [rerender]);\n\n useEffect(() => {\n propsRef.current.updateDOM();\n updateLayer();\n }, [updateLayer]);\n\n function kill(): void {\n killWorkerScriptByPid(script.pid);\n rerender();\n }\n\n function run(): void {\n const server = GetServer(script.server);\n if (server === null) return;\n const s = findRunningScriptByPid(script.pid, server);\n if (s === null) {\n const baseScript = server.scripts.get(script.filename);\n if (!baseScript) {\n return dialogBoxCreate(\n `Could not launch script. The script ${script.filename} no longer exists on the server ${server.hostname}.`,\n );\n }\n const ramUsage = baseScript.getRamUsage(server.scripts);\n if (!ramUsage) {\n return dialogBoxCreate(`Could not calculate ram usage for ${script.filename} on ${server.hostname}.`);\n }\n // Reset some things, because we're reusing the RunningScript instance\n script.ramUsage = ramUsage;\n script.dataMap = {};\n script.onlineExpGained = 0;\n script.onlineMoneyMade = 0;\n script.onlineRunningTime = 0.01;\n\n startWorkerScript(script, server);\n rerender();\n } else {\n console.warn(`Tried to rerun pid ${script.pid} that was already running!`);\n }\n }\n\n function title(): React.ReactElement {\n const title_str = script.title === \"string\" ? script.title : `${script.filename} ${script.args.join(\" \")}`;\n return (\n \n {script.title}\n \n );\n }\n\n function minimize(): void {\n setMinimized(!minimized);\n }\n\n function lineColor(s: string): \"error\" | \"success\" | \"warn\" | \"info\" | \"primary\" {\n if (s.match(/(^\\[[^\\]]+\\] )?ERROR/) || s.match(/(^\\[[^\\]]+\\] )?FAIL/)) {\n return \"error\";\n }\n if (s.match(/(^\\[[^\\]]+\\] )?SUCCESS/)) {\n return \"success\";\n }\n if (s.match(/(^\\[[^\\]]+\\] )?WARN/)) {\n return \"warn\";\n }\n if (s.match(/(^\\[[^\\]]+\\] )?INFO/)) {\n return \"info\";\n }\n return \"primary\";\n }\n\n const onWindowResize = useMemo(\n () =>\n debounce((): void => {\n const node = draggableRef.current;\n if (!node) return;\n\n if (!isOnScreen(node)) {\n propsRef.current.setPosition(0, 0);\n }\n }, 100),\n [],\n );\n\n // And trigger fakeDrag when the window is resized\n useEffect(() => {\n window.addEventListener(\"resize\", onWindowResize);\n return () => {\n window.removeEventListener(\"resize\", onWindowResize);\n };\n }, [onWindowResize]);\n\n const isOnScreen = (node: HTMLDivElement): boolean => {\n const bounds = node.getBoundingClientRect();\n\n return !(bounds.right < 0 || bounds.bottom < 0 || bounds.left > innerWidth || bounds.top > outerWidth);\n };\n\n const onDrag = (e: DraggableEvent): void | false => {\n e.preventDefault();\n // bound to body\n if (\n e instanceof MouseEvent &&\n (e.clientX < 0 || e.clientY < 0 || e.clientX > innerWidth || e.clientY > innerHeight)\n )\n return false;\n };\n\n // Max [width, height]\n const minConstraints: [number, number] = [150, 33];\n\n return (\n \n \n \n \n \n }\n >\n <>\n \n {title()}\n\n \n {!workerScripts.has(script.pid) ? (\n \n \n \n ) : (\n \n \n \n )}\n \n {minimized ? : }\n \n \n \n \n \n \n\n \n
\n {script.logs.map(\n (line: React.ReactNode, i: number): React.ReactNode =>\n typeof line !== \"string\" ? line : ,\n )}\n
\n \n \n \n \n
\n );\n}\n","import React from \"react\";\nimport { Theme } from \"@mui/material\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Fade from \"@mui/material/Fade\";\nimport M from \"@mui/material/Modal\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { SxProps } from \"@mui/system\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n modal: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n paper: {\n position: \"relative\",\n backgroundColor: theme.palette.background.default,\n border: \"2px solid \" + theme.palette.primary.main,\n boxShadow: `0px 3px 5px -1px ${theme.palette.primary.dark},0px 5px 8px 0px ${theme.palette.primary.dark},0px 1px 14px 0px ${theme.palette.primary.dark}`,\n padding: 2,\n maxWidth: \"80%\",\n maxHeight: \"80%\",\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n // webkit\n display: \"none\",\n },\n scrollbarWidth: \"none\", // firefox\n },\n closeButton: {\n position: \"absolute\",\n right: 3,\n top: 3,\n width: 20,\n height: 20,\n },\n }),\n);\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n sx?: SxProps;\n}\n\nexport const Modal = (props: IProps): React.ReactElement => {\n const classes = useStyles();\n return (\n \n \n
\n \n \n \n {props.children}\n
\n
\n \n );\n};\n","import * as React from \"react\";\nimport { formatMoney } from \"../formatNumber\";\nimport { Player } from \"@player\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n unbuyable: {\n color: theme.palette.action.disabled,\n },\n money: {\n color: theme.colors.money,\n },\n }),\n);\n\ninterface IProps {\n money: number | string;\n forPurchase?: boolean;\n}\nexport function Money(props: IProps): React.ReactElement {\n const classes = useStyles();\n if (props.forPurchase) {\n if (typeof props.money !== \"number\")\n throw new Error(\"if value is for a purchase, money should be number, contact dev\");\n if (!Player.canAfford(props.money)) return {formatMoney(props.money)};\n }\n return (\n {typeof props.money === \"number\" ? formatMoney(props.money) : props.money}\n );\n}\n","import React from \"react\";\nimport { formatMoney } from \"../formatNumber\";\nimport { Money } from \"./Money\";\n\nexport function MoneyRate({ money }: { money: number }): JSX.Element {\n return ;\n}\n","import { TextField, StandardTextFieldProps } from \"@mui/material\";\nimport React from \"react\";\nimport { parseBigNumber } from \"../formatNumber\";\n\ninterface IProps extends Omit {\n onChange: (v: number) => void;\n}\n\nexport function NumberInput(props: IProps): React.ReactElement {\n const textProps = {\n ...props,\n onChange: (event: React.ChangeEvent) => {\n const amt = parseBigNumber(event.target.value);\n if (event.target.value === \"\" || isNaN(amt)) props.onChange(NaN);\n else props.onChange(amt);\n },\n };\n return ;\n}\n","import { FormControlLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport React, { useState } from \"react\";\n\ntype OptionSwitchProps = {\n checked: boolean;\n onChange: (newValue: boolean, error?: string) => void;\n text: React.ReactNode;\n tooltip: React.ReactNode;\n};\n\nexport function OptionSwitch({ checked, onChange, text, tooltip }: OptionSwitchProps): React.ReactElement {\n const [value, setValue] = useState(checked);\n\n function handleSwitchChange(event: React.ChangeEvent): void {\n const newValue = event.target.checked;\n setValue(newValue);\n onChange(newValue);\n }\n\n return (\n <>\n }\n label={\n {tooltip}}>\n {text}\n \n }\n />\n
\n \n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from \"react\";\nimport Draggable, { DraggableEventHandler } from \"react-draggable\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Collapse from \"@mui/material/Collapse\";\nimport Paper from \"@mui/material/Paper\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\nimport EqualizerIcon from \"@mui/icons-material/Equalizer\";\nimport SchoolIcon from \"@mui/icons-material/School\";\nimport { Router } from \"../GameRoot\";\nimport { Page } from \"../Router\";\nimport { Settings } from \"../../Settings/Settings\";\nimport { Box, Button, Typography } from \"@mui/material\";\nimport { debounce } from \"lodash\";\n\nconst useStyles = makeStyles({\n overviewContainer: {\n position: \"fixed\",\n top: 0,\n right: 0,\n zIndex: 1500,\n display: \"flex\",\n justifyContent: \"flex-end\",\n flexDirection: \"column\",\n },\n\n header: {\n cursor: \"grab\",\n textAlign: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n\n visibilityToggle: {\n padding: \"2px\",\n minWidth: \"inherit\",\n backgroundColor: \"transparent\",\n border: \"none\",\n \"&:hover\": {\n backgroundColor: \"rgba(255, 255, 255, 0.1)\",\n },\n },\n\n collapse: {\n borderTop: `1px solid ${Settings.theme.welllight}`,\n margin: \"0 auto\",\n },\n\n icon: {\n fontSize: \"24px\",\n },\n});\n\ninterface IProps {\n children: (parentOpen: boolean) => JSX.Element[] | JSX.Element | React.ReactElement[] | React.ReactElement;\n mode: \"tutorial\" | \"overview\";\n}\n\nexport interface OverviewSettings {\n opened: boolean;\n x: number;\n y: number;\n}\n\nexport function Overview({ children, mode }: IProps): React.ReactElement {\n const draggableRef = useRef(null);\n const [open, setOpen] = useState(Settings.overview.opened);\n const [x, setX] = useState(Settings.overview.x);\n const [y, setY] = useState(Settings.overview.y);\n const classes = useStyles();\n\n const CurrentIcon = open ? KeyboardArrowUpIcon : KeyboardArrowDownIcon;\n const LeftIcon = mode === \"tutorial\" ? SchoolIcon : EqualizerIcon;\n const header = mode === \"tutorial\" ? \"Tutorial\" : \"Overview\";\n const handleStop: DraggableEventHandler = (e, data) => {\n setX(data.x);\n setY(data.y);\n };\n\n useEffect(() => {\n Settings.overview = { x, y, opened: open };\n }, [open, x, y]);\n\n const fakeDrag = useMemo(\n () =>\n debounce((): void => {\n const node = draggableRef.current;\n if (!node) return;\n\n // No official way to trigger an onChange to recompute the bounds\n // See: https://github.com/react-grid-layout/react-draggable/issues/363#issuecomment-947751127\n triggerMouseEvent(node, \"mouseover\");\n triggerMouseEvent(node, \"mousedown\");\n triggerMouseEvent(document, \"mousemove\");\n triggerMouseEvent(node, \"mouseup\");\n triggerMouseEvent(node, \"click\");\n }, 100),\n [],\n );\n\n // Trigger fakeDrag once to make sure loaded data is not outside bounds\n useEffect(() => fakeDrag(), [fakeDrag]);\n\n // And trigger fakeDrag when the window is resized\n useEffect(() => {\n window.addEventListener(\"resize\", fakeDrag);\n return () => {\n window.removeEventListener(\"resize\", fakeDrag);\n };\n }, [fakeDrag]);\n\n const triggerMouseEvent = (node: HTMLDivElement | Document, eventType: string): void => {\n const clickEvent = document.createEvent(\"MouseEvents\");\n clickEvent.initEvent(eventType, true, true);\n node.dispatchEvent(clickEvent);\n };\n\n if (Router.page() === Page.BitVerse || Router.page() === Page.Loading || Router.page() === Page.Recovery)\n return <>;\n return (\n \n \n setOpen((old) => !old)} ref={draggableRef}>\n \n \n \n {header}\n \n \n {\n setOpen((old) => !old)}\n onTouchEnd={() => setOpen((old) => !old)}\n />\n }\n \n \n \n \n {children(open)}\n \n \n \n );\n}\n","import LinearProgress from \"@mui/material/LinearProgress\";\nimport { Theme } from \"@mui/material/styles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nexport const ProgressBar = withStyles((theme: Theme) => ({\n root: {\n backgroundColor: theme.palette.background.paper,\n },\n bar: {\n transition: \"none\",\n backgroundColor: theme.palette.primary.main,\n },\n}))(LinearProgress);\n","import React, { useState, useEffect } from \"react\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { Modal } from \"./Modal\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\nimport Select, { SelectChangeEvent } from \"@mui/material/Select\";\nimport TextField from \"@mui/material/TextField\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport { KEY } from \"../../utils/helpers/keyCodes\";\n\nexport const PromptEvent = new EventEmitter<[Prompt]>();\n\ninterface Prompt {\n txt: string;\n options?: { type?: string; choices?: string[] };\n resolve: (result: boolean | string) => void;\n}\n\nexport function PromptManager(): React.ReactElement {\n const [prompt, setPrompt] = useState(null);\n useEffect(() => {\n return PromptEvent.subscribe((p: Prompt) => {\n setPrompt(p);\n });\n }, []);\n\n if (prompt === null) {\n return <>;\n }\n\n function close(): void {\n if (prompt === null) return;\n if ([\"text\", \"select\"].includes(prompt.options?.type ?? \"\")) {\n prompt.resolve(\"\");\n } else {\n prompt.resolve(false);\n }\n setPrompt(null);\n }\n\n const types: Record React.ReactElement> = {\n text: PromptMenuText,\n select: PromptMenuSelect,\n };\n\n let PromptContent = PromptMenuBoolean;\n if (prompt.options?.type && [\"text\", \"select\"].includes(prompt.options.type))\n PromptContent = types[prompt.options.type];\n const resolve = (value: boolean | string): void => {\n prompt.resolve(value);\n setPrompt(null);\n };\n\n return (\n \n
\n        {prompt.txt}\n      
\n \n
\n );\n}\n\ninterface IContentProps {\n prompt: Prompt;\n resolve: (value: boolean | string) => void;\n}\n\nfunction PromptMenuBoolean({ resolve }: IContentProps): React.ReactElement {\n const yes = (): void => resolve(true);\n const no = (): void => resolve(false);\n\n return (\n <>\n
\n \n \n
\n \n );\n}\n\nfunction PromptMenuText({ resolve }: IContentProps): React.ReactElement {\n const [value, setValue] = useState(\"\");\n\n const submit = (): void => resolve(value);\n\n const onInput = (event: React.ChangeEvent): void => {\n setValue(event.target.value);\n };\n\n const onKeyDown = (event: React.KeyboardEvent): void => {\n event.stopPropagation();\n\n if (event.key === KEY.ENTER) {\n event.preventDefault();\n submit();\n }\n };\n\n return (\n <>\n
\n Confirm,\n }}\n />\n
\n \n );\n}\n\nfunction PromptMenuSelect({ prompt, resolve }: IContentProps): React.ReactElement {\n const [value, setValue] = useState(\"\");\n\n const submit = (): void => resolve(value);\n\n const onChange = (event: SelectChangeEvent): void => {\n setValue(event.target.value);\n };\n\n const getItems = (choices: string[]): React.ReactElement[] => {\n const content: React.ReactElement[] = [];\n for (const i of choices) {\n content.push(\n \n {i}\n ,\n );\n }\n return content;\n };\n\n if (!Array.isArray(prompt.options?.choices)) {\n return Error: Please provide an array of string choices;\n }\n\n return (\n <>\n
\n \n \n
\n \n );\n}\n","import React, { useEffect } from \"react\";\n\nimport { Typography, Link, Button, ButtonGroup, Tooltip, Box, Paper, TextField } from \"@mui/material\";\nimport { Settings } from \"../../Settings/Settings\";\nimport { load } from \"../../db\";\nimport { Router } from \"../GameRoot\";\nimport { Page } from \"../Router\";\nimport { download } from \"../../SaveObject\";\nimport { IErrorData, newIssueUrl } from \"../../utils/ErrorHelper\";\nimport { DeleteGameButton } from \"./DeleteGameButton\";\nimport { SoftResetButton } from \"./SoftResetButton\";\n\nimport DirectionsRunIcon from \"@mui/icons-material/DirectionsRun\";\nimport GitHubIcon from \"@mui/icons-material/GitHub\";\n\nexport let RecoveryMode = false;\n\nexport function ActivateRecoveryMode(): void {\n RecoveryMode = true;\n}\n\ninterface IProps {\n softReset: () => void;\n errorData?: IErrorData;\n resetError?: () => void;\n}\n\nexport function RecoveryRoot({ softReset, errorData, resetError }: IProps): React.ReactElement {\n function recover(): void {\n if (resetError) resetError();\n RecoveryMode = false;\n Router.toPage(Page.Terminal);\n }\n Settings.AutosaveInterval = 0;\n\n useEffect(() => {\n load()\n .then((content) => {\n const epochTime = Math.round(Date.now() / 1000);\n const filename = `RECOVERY_BITBURNER_${epochTime}.json`;\n download(filename, content);\n })\n .catch((err) => console.error(err));\n }, []);\n\n return (\n \n RECOVERY MODE ACTIVATED\n \n There was an error with your save file and the game went into recovery mode. In this mode saving is disabled and\n the game will automatically export your save file (to prevent corruption).\n \n At this point it is recommended to alert a developer.\n \n \n File an issue on github\n \n \n \n \n Make a reddit post\n \n \n \n \n Post in the #bug-report channel on Discord.\n \n \n Please include your save file.\n
\n
\n You can disable recovery mode now. But chances are the game will not work correctly.\n \n \n \n \n \n \n \n\n {errorData && (\n \n {errorData.title}\n \n \n \n \n }\n color=\"info\"\n sx={{ px: 2 }}\n href={errorData.issueUrl ?? newIssueUrl}\n target={\"_blank\"}\n >\n Submit Issue to GitHub\n \n \n \n )}\n
\n );\n}\n","import * as React from \"react\";\nimport { formatReputation } from \"../formatNumber\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n reputation: {\n color: theme.colors.rep,\n },\n }),\n);\n\nexport function Reputation({ reputation }: { reputation: number | string }): React.ReactElement {\n const classes = useStyles();\n return (\n \n {typeof reputation === \"number\" ? formatReputation(reputation) : reputation}\n \n );\n}\n","import React from \"react\";\nimport { formatReputation } from \"../formatNumber\";\nimport { Reputation } from \"./Reputation\";\n\nexport function ReputationRate({ reputation }: { reputation: number }): React.ReactElement {\n return ;\n}\n","/**\n * Creates a dropdown (select HTML element) with server hostnames as options\n *\n * Configurable to only contain certain types of servers\n */\nimport React from \"react\";\nimport { GetAllServers } from \"../../Server/AllServers\";\nimport { Server } from \"../../Server/Server\";\nimport { BaseServer } from \"../../Server/BaseServer\";\n\nimport { HacknetServer } from \"../../Hacknet/HacknetServer\";\nimport Select, { SelectChangeEvent } from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport Button from \"@mui/material/Button\";\n\n// TODO make this an enum when this gets converted to TypeScript\nexport const ServerType = {\n All: 0,\n Foreign: 1, // Hackable, non-owned servers\n Owned: 2, // Home Computer, Purchased Servers, and Hacknet Servers\n Purchased: 3, // Everything from Owned except home computer\n};\n\ninterface IProps {\n purchase: () => void;\n canPurchase: boolean;\n serverType: number;\n onChange: (event: SelectChangeEvent) => void;\n value: string;\n}\n\nexport function ServerDropdown(props: IProps): React.ReactElement {\n /**\n * Checks if the server should be shown in the dropdown menu, based on the\n * 'serverType' property\n */\n function isValidServer(s: BaseServer): boolean {\n const purchased = s instanceof Server && s.purchasedByPlayer;\n const type = props.serverType;\n switch (type) {\n case ServerType.All:\n return true;\n case ServerType.Foreign:\n return s.hostname !== \"home\" && !purchased;\n case ServerType.Owned:\n return purchased || s instanceof HacknetServer || s.hostname === \"home\";\n case ServerType.Purchased:\n return purchased || s instanceof HacknetServer;\n default:\n console.warn(`Invalid ServerType specified for ServerDropdown component: ${type}`);\n return false;\n }\n }\n\n const servers = [];\n for (const server of GetAllServers().sort((a, b) => a.hostname.localeCompare(b.hostname))) {\n if (isValidServer(server)) {\n servers.push(\n \n {server.hostname}\n ,\n );\n }\n }\n\n return (\n \n Buy\n \n }\n sx={{ mx: 1 }}\n value={props.value}\n onChange={props.onChange}\n >\n {servers}\n \n );\n}\n","import type { ToastVariant } from \"@enums\";\n\nimport React, { useEffect } from \"react\";\nimport { useSnackbar, SnackbarProvider as SB } from \"notistack\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport Alert from \"@mui/material/Alert\";\nimport Paper from \"@mui/material/Paper\";\nimport { logBoxBaseZIndex } from \"./LogBoxManager\";\n\ninterface IProps {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst useStyles = makeStyles(() => ({\n snackbar: {\n // Log popup z-index increments, so let's add a padding to be well above them.\n zIndex: `${logBoxBaseZIndex + 1000} !important` as any,\n\n \"& .MuiAlert-icon\": {\n alignSelf: \"center\",\n },\n },\n}));\n\nexport function SnackbarProvider(props: IProps): React.ReactElement {\n const classes = useStyles();\n return (\n \n {props.children}\n \n );\n}\n\nexport const SnackbarEvents = new EventEmitter<[string | React.ReactNode, ToastVariant, number | null]>();\n\nexport function Snackbar(): React.ReactElement {\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n useEffect(() =>\n SnackbarEvents.subscribe((s, variant, duration) => {\n const id = enqueueSnackbar({s}, {\n content: (k, m) => {m},\n variant: variant,\n autoHideDuration: duration,\n onClick: () => closeSnackbar(id),\n });\n }),\n );\n return <>;\n}\n","import React, { useState } from \"react\";\n\nimport { ConfirmationModal } from \"./ConfirmationModal\";\nimport Button from \"@mui/material/Button\";\nimport { Tooltip } from \"@mui/material\";\nimport RestartAltIcon from \"@mui/icons-material/RestartAlt\";\n\ninterface IProps {\n color?: \"primary\" | \"warning\" | \"error\";\n noConfirmation?: boolean;\n onTriggered: () => void;\n}\n\nexport function SoftResetButton({\n color = \"primary\",\n noConfirmation = false,\n onTriggered,\n}: IProps): React.ReactElement {\n const [modalOpened, setModalOpened] = useState(false);\n\n function handleButtonClick(): void {\n if (noConfirmation) {\n onTriggered();\n } else {\n setModalOpened(true);\n }\n }\n\n return (\n <>\n \n \n \n setModalOpened(false)}\n confirmationText={\"This will perform the same action as installing Augmentations, are you sure?\"}\n />\n \n );\n}\n","import React from \"react\";\nimport { Modal } from \"./Modal\";\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n children: JSX.Element[] | JSX.Element | React.ReactElement[] | React.ReactElement;\n}\n\nexport function StaticModal(props: IProps): React.ReactElement {\n return (\n \n {props.children}\n \n );\n}\n","import * as React from \"react\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport { TableCell, Tooltip, Typography } from \"@mui/material\";\nimport { useStyles } from \"./CharacterOverview\";\nimport { ISkillProgress } from \"../../PersonObjects/formulas/skill\";\nimport { formatExp } from \"../formatNumber\";\n\ninterface IProgressProps {\n min: number;\n max: number;\n current: number;\n remaining: number;\n progress: number;\n color?: React.CSSProperties[\"color\"];\n}\n\ninterface IStatsOverviewCellProps {\n progress: ISkillProgress;\n color?: React.CSSProperties[\"color\"];\n}\n\nexport function StatsProgressBar({\n min,\n max,\n current,\n remaining,\n progress,\n color,\n}: IProgressProps): React.ReactElement {\n const tooltip = (\n \n Progress: \n {formatExp(current)} / {formatExp(max - min)}\n
\n Remaining: \n {formatExp(remaining)} ({progress.toFixed(2)}%)\n
\n );\n\n return (\n \n \n \n );\n}\n\nexport function StatsProgressOverviewCell({ progress: skill, color }: IStatsOverviewCellProps): React.ReactElement {\n const classes = useStyles();\n return (\n \n \n \n );\n}\n","import React from \"react\";\n\nimport { Typography, TableCell, TableRow } from \"@mui/material\";\n\nimport { formatExp, formatNumberNoSuffix } from \"../formatNumber\";\nimport { useStyles } from \"./CharacterOverview\";\n\ninterface ITableRowData {\n content?: string;\n level?: number;\n exp?: number;\n}\n\ninterface IProps {\n name: string;\n color: string;\n data?: ITableRowData;\n children?: React.ReactElement;\n}\n\nexport const StatsRow = ({ name, color, children, data }: IProps): React.ReactElement => {\n const classes = useStyles();\n\n let content = \"\";\n if (data) {\n if (data.content !== undefined) {\n content = data.content;\n } else if (data.level !== undefined && data.exp !== undefined) {\n content = `${formatNumberNoSuffix(data.level, 0)} (${formatExp(data.exp)} exp)`;\n } else if (data.level !== undefined && data.exp === undefined) {\n content = `${formatNumberNoSuffix(data.level, 0)}`;\n }\n }\n\n return (\n \n \n {name}\n \n \n {content && {content}}\n {children}\n \n \n );\n};\n","import React from \"react\";\n\nimport { Table, TableCell } from \"./Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport { Table as MuiTable } from \"@mui/material\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface IProps {\n rows: React.ReactNode[][];\n title?: string;\n wide?: boolean;\n}\n\nexport function StatsTable({ rows, title, wide }: IProps): React.ReactElement {\n const T = wide ? MuiTable : Table;\n return (\n <>\n {title && {title}}\n \n \n {rows.map((row: React.ReactNode[], i: number) => (\n \n {row.map((elem: React.ReactNode, i: number) => (\n \n {elem}\n \n ))}\n \n ))}\n \n \n \n );\n}\n","import React from \"react\";\nimport { TableCell as MuiTableCell, TableCellProps, Table as MuiTable, TableProps } from \"@mui/material\";\n\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst useStyles = makeStyles({\n root: {\n borderBottom: \"none\",\n },\n small: {\n width: \"1px\",\n },\n});\n\nexport const TableCell: React.FC = (props: TableCellProps) => {\n return (\n \n );\n};\n\nexport const Table: React.FC = (props: TableProps) => {\n return (\n \n );\n};\n","import * as React from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport FirstPageIcon from \"@mui/icons-material/FirstPage\";\nimport KeyboardArrowLeft from \"@mui/icons-material/KeyboardArrowLeft\";\nimport KeyboardArrowRight from \"@mui/icons-material/KeyboardArrowRight\";\nimport LastPageIcon from \"@mui/icons-material/LastPage\";\n\ninterface TablePaginationActionsProps {\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange: (event: React.MouseEvent, newPage: number) => void;\n}\n\nexport function TablePaginationActionsAll(props: TablePaginationActionsProps): React.ReactElement {\n const theme = useTheme();\n const { count, page, rowsPerPage, onPageChange } = props;\n\n const handleFirstPageButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, 0);\n };\n\n const handleBackButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, page - 1);\n };\n\n const handleNextButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, page + 1);\n };\n\n const handleLastPageButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));\n };\n\n return (\n \n \n {theme.direction === \"rtl\" ? : }\n \n \n {theme.direction === \"rtl\" ? : }\n \n = Math.ceil(count / rowsPerPage) - 1}>\n {theme.direction === \"rtl\" ? : }\n \n = Math.ceil(count / rowsPerPage) - 1}>\n {theme.direction === \"rtl\" ? : }\n \n \n );\n}\n","import React from \"react\";\nimport { createStyles, makeStyles } from \"@mui/styles\";\nimport { Tooltip, Typography } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport { CityName } from \"@enums\";\n\ninterface ICityProps {\n currentCity: CityName;\n city: CityName;\n onTravel: (city: CityName) => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n travel: {\n color: theme.colors.white,\n lineHeight: \"1em\",\n whiteSpace: \"pre\",\n cursor: \"pointer\",\n },\n }),\n);\n\nfunction City(props: ICityProps): React.ReactElement {\n const classes = useStyles();\n if (props.city !== props.currentCity) {\n return (\n {props.city}}>\n props.onTravel(props.city)} className={classes.travel}>\n {props.city[0]}\n \n \n );\n }\n return {props.city[0]};\n}\n\ninterface IProps {\n currentCity: CityName;\n onTravel: (city: CityName) => void;\n}\n\nexport function WorldMap(props: IProps): React.ReactElement {\n // prettier-ignore\n return (\n <>\n ,_ . ._. _. .\n , _-\\','|~\\~ ~/ ;-'_ _-' ,;_;_, ~~-\n /~~-\\_/-'~'--' \\~~| ', ,' / / ~|-_\\_/~/~ ~~--~~~~'--_\n / ,/'-/~ '\\ ,' _ , ','|~ ._/-, /~\n ~/-'~\\_, '-,| '|. ' ~ ,\\ /'~ / /_ /~\n .-~ '| '',\\~|\\ _\\~ ,_ , /,\n '\\ /'~ |_/~\\\\,-,~ \\ \" ,_,/ |\n | / ._-~'\\_ _~| \\ ) \n \\ __-\\ '/ ~ |\\ \\_ / ~\n ., '\\ |, ~-_ - | \\\\_' ~| /\\ \\~ ,\n ~-_' _; '\\ '-, \\,' /\\/ |\n '\\_,~'\\_ \\_ _, /' ' |, /|'\n / \\_ ~ | / \\ ~'; -,_.\n | ~\\ | | , '-_, ,; ~ ~\\\n \\, / \\ / /| ,-, , -,\n | ,/ | |' |/ ,- ~ \\ '.\n ,| ,/ \\ ,/ \\ |\n / | ~ -~~-, / _\n | ,-' ~ /\n / ,' ~\n ',| ~\n ~'\n \n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\n/** Hook that returns a function for the component. Optionally set an interval to rerender the component.\n * @param autoRerenderTime: Optional. If provided and nonzero, used as the ms interval to automatically call the rerender function.\n */\nexport function useRerender(autoRerenderTime?: number) {\n const [__, setRerender] = useState(false);\n\n const rerender = useCallback(() => setRerender((old) => !old), []);\n\n useEffect(() => {\n if (!autoRerenderTime) return;\n const intervalID = setInterval(rerender, autoRerenderTime);\n return () => clearInterval(intervalID);\n }, [rerender, autoRerenderTime]);\n\n return rerender;\n}\n\nexport function useBoolean(initialValue = false) {\n const [value, setValue] = useState(initialValue);\n\n const toggle = useCallback(() => {\n setValue((old) => !old);\n }, []);\n\n const on = useCallback(() => {\n setValue(true);\n }, []);\n\n const off = useCallback(() => {\n setValue(false);\n }, []);\n\n return [value, { toggle, on, off }] as const;\n}\n","import type { ScriptFilePath } from \"../Paths/ScriptFilePath\";\nimport type { TextFilePath } from \"../Paths/TextFilePath\";\nimport type { Faction } from \"../Faction/Faction\";\nimport type { Location } from \"../Locations/Location\";\n\n// This enum doesn't need enum helper support for now\n/**\n * The full-screen page the player is currently be on.\n * These are \"simple\" pages that don't require any extra parameters to\n * transition to. You can use setPage() with these.\n */\nexport enum SimplePage {\n ActiveScripts = \"Active Scripts\",\n Augmentations = \"Augmentations\",\n Bladeburner = \"Bladeburner\",\n City = \"City\",\n Corporation = \"Corporation\",\n CreateProgram = \"Create Program\",\n DevMenu = \"Dev\",\n Factions = \"Factions\",\n Gang = \"Gang\",\n Hacknet = \"Hacknet\",\n Milestones = \"Milestones\",\n Options = \"Options\",\n Grafting = \"Grafting\",\n Sleeves = \"Sleeves\",\n Stats = \"Stats\",\n StockMarket = \"Stock Market\",\n Terminal = \"Terminal\",\n Travel = \"Travel\",\n Documentation = \"Documentation\",\n Work = \"Work\",\n BladeburnerCinematic = \"Bladeburner Cinematic\",\n Loading = \"Loading\",\n StaneksGift = \"Staneks Gift\",\n Recovery = \"Recovery\",\n Achievements = \"Achievements\",\n ThemeBrowser = \"Theme Browser\",\n}\n\nexport enum ComplexPage {\n BitVerse = \"BitVerse\",\n Infiltration = \"Infiltration\",\n Job = \"Job\",\n Faction = \"Faction\",\n FactionAugmentations = \"Faction Augmentations\",\n ScriptEditor = \"Script Editor\",\n Location = \"Location\",\n ImportSave = \"Import Save\",\n}\n\n// Using the same name as both type and object to mimic enum-like behavior.\n// See https://stackoverflow.com/a/71255520/202091\nexport type Page = SimplePage | ComplexPage;\nexport const Page = { ...SimplePage, ...ComplexPage };\n\nexport type PageContext = T extends ComplexPage.BitVerse\n ? { flume: boolean; quick: boolean }\n : T extends ComplexPage.Infiltration\n ? { location: Location }\n : T extends ComplexPage.Job\n ? { location: Location }\n : T extends ComplexPage.Faction\n ? { faction: Faction }\n : T extends ComplexPage.FactionAugmentations\n ? { faction: Faction }\n : T extends ComplexPage.ScriptEditor\n ? { files?: Map; options?: ScriptEditorRouteOptions }\n : T extends ComplexPage.Location\n ? { location: Location }\n : T extends ComplexPage.ImportSave\n ? { base64Save: string; automatic?: boolean }\n : never;\n\nexport type PageWithContext =\n | ({ page: ComplexPage.BitVerse } & PageContext)\n | ({ page: ComplexPage.Infiltration } & PageContext)\n | ({ page: ComplexPage.Job } & PageContext)\n | ({ page: ComplexPage.Faction } & PageContext)\n | ({ page: ComplexPage.FactionAugmentations } & PageContext)\n | ({ page: ComplexPage.ScriptEditor } & PageContext)\n | ({ page: ComplexPage.Location } & PageContext)\n | ({ page: ComplexPage.ImportSave } & PageContext)\n | { page: SimplePage };\n\nexport interface ScriptEditorRouteOptions {\n vim: boolean;\n}\n\n/** The router keeps track of player navigation/routing within the game. */\nexport interface IRouter {\n isInitialized: boolean;\n page(): Page;\n allowRouting(value: boolean): void;\n toPage(page: SimplePage): void;\n toPage(page: T, context: PageContext): void;\n /** go to a preveious page (if any) */\n back(): void;\n}\n\nconst simplePages = Object.values(SimplePage);\nexport const isSimplePage = (page: Page): page is SimplePage => simplePages.includes(page as SimplePage);\n","import React from \"react\";\nimport { Box, Button, Container, Paper, Table, TableBody, Tooltip, Typography } from \"@mui/material\";\n\nimport { Player } from \"@player\";\nimport { FactionWorkType, LocationName } from \"@enums\";\n\nimport { Money } from \"./React/Money\";\nimport { MoneyRate } from \"./React/MoneyRate\";\nimport { ProgressBar } from \"./React/Progress\";\nimport { Reputation } from \"./React/Reputation\";\nimport { ReputationRate } from \"./React/ReputationRate\";\nimport { StatsRow } from \"./React/StatsRow\";\nimport { useRerender } from \"./React/hooks\";\n\nimport { Companies } from \"../Company/Companies\";\nimport { CONSTANTS } from \"../Constants\";\nimport { Locations } from \"../Locations/Locations\";\nimport { Settings } from \"../Settings/Settings\";\nimport { convertTimeMsToTimeElapsedString } from \"../utils/StringHelperFunctions\";\nimport { filterTruthy } from \"../utils/helpers/ArrayHelpers\";\n\nimport { isCrimeWork } from \"../Work/CrimeWork\";\nimport { isClassWork } from \"../Work/ClassWork\";\nimport { WorkStats } from \"../Work/WorkStats\";\nimport { isCreateProgramWork } from \"../Work/CreateProgramWork\";\nimport { isGraftingWork } from \"../Work/GraftingWork\";\nimport { isFactionWork } from \"../Work/FactionWork\";\nimport { isCompanyWork } from \"../Work/CompanyWork\";\nimport { Router } from \"./GameRoot\";\nimport { Page } from \"./Router\";\nimport { formatExp, formatPercent } from \"./formatNumber\";\n\nconst CYCLES_PER_SEC = 1000 / CONSTANTS.MilliPerCycle;\n\ninterface IWorkInfo {\n buttons: {\n cancel: () => void;\n unfocus?: () => void;\n };\n title: string | React.ReactElement;\n\n description?: string | React.ReactElement;\n gains?: React.ReactElement[];\n progress?: {\n elapsed?: number;\n remaining?: number;\n percentage?: number;\n };\n\n stopText: string;\n stopTooltip?: string | React.ReactElement;\n}\n\nfunction ExpRows(rate: WorkStats): React.ReactElement[] {\n return filterTruthy([\n rate.hackExp > 0 && (\n \n ),\n rate.strExp > 0 && (\n \n ),\n rate.defExp > 0 && (\n \n ),\n rate.dexExp > 0 && (\n \n ),\n rate.agiExp > 0 && (\n \n ),\n rate.chaExp > 0 && (\n \n ),\n ]);\n}\n\n/* Because crime exp is given all at once at the end, we don't care about the cycles per second. */\nfunction CrimeExpRows(rate: WorkStats): React.ReactElement[] {\n return filterTruthy([\n rate.hackExp > 0 && (\n \n ),\n rate.strExp > 0 && (\n \n ),\n rate.defExp > 0 && (\n \n ),\n rate.dexExp > 0 && (\n \n ),\n rate.agiExp > 0 && (\n \n ),\n rate.chaExp > 0 && (\n \n ),\n ]);\n}\n\nexport function WorkInProgressRoot(): React.ReactElement {\n useRerender(CONSTANTS.MilliPerCycle);\n\n let workInfo: IWorkInfo = {\n buttons: {\n cancel: () => undefined,\n },\n title: \"\",\n stopText: \"\",\n };\n\n if (Player.currentWork === null) {\n setTimeout(() => Router.toPage(Page.Terminal));\n return <>;\n }\n\n if (isCrimeWork(Player.currentWork)) {\n const crime = Player.currentWork.getCrime();\n const completion = (Player.currentWork.unitCompleted / crime.time) * 100;\n const gains = Player.currentWork.earnings();\n const successChance = crime.successRate(Player);\n workInfo = {\n buttons: {\n cancel: () => {\n Router.toPage(Page.Location, { location: Locations[LocationName.Slums] });\n Player.finishWork(true);\n },\n unfocus: () => {\n Router.toPage(Page.City);\n Player.stopFocusing();\n },\n },\n title: `You are attempting ${crime.workName}`,\n\n gains: [\n \n \n Success chance: {formatPercent(successChance)}\n Gains (on success)\n \n ,\n \n \n \n \n ,\n ...CrimeExpRows(gains),\n ],\n progress: {\n remaining: crime.time - Player.currentWork.unitCompleted,\n percentage: completion,\n },\n\n stopText: \"Stop committing crime\",\n };\n }\n\n if (isClassWork(Player.currentWork)) {\n const classWork = Player.currentWork;\n\n let stopText = \"\";\n if (classWork.isGym()) {\n stopText = \"Stop training at gym\";\n } else {\n stopText = \"Stop taking course\";\n }\n\n const rates = classWork.calculateRates();\n workInfo = {\n buttons: {\n cancel: () => {\n Player.finishWork(true);\n Router.toPage(Page.City);\n },\n unfocus: () => {\n Router.toPage(Page.City);\n Player.stopFocusing();\n },\n },\n title: (\n <>\n You are currently {classWork.getClass().youAreCurrently}\n \n ),\n\n gains: [\n \n \n ()\n \n ,\n ...ExpRows(rates),\n ],\n progress: {\n elapsed: classWork.cyclesWorked * CONSTANTS.MilliPerCycle,\n },\n\n stopText: stopText,\n };\n }\n\n if (isCreateProgramWork(Player.currentWork)) {\n const create = Player.currentWork;\n const completion = (create.unitCompleted / create.unitNeeded()) * 100;\n\n workInfo = {\n buttons: {\n cancel: () => {\n Player.finishWork(true);\n Router.toPage(Page.Terminal);\n },\n unfocus: () => {\n Router.toPage(Page.Terminal);\n Player.stopFocusing();\n },\n },\n title: (\n <>\n You are currently working on coding {create.programName}\n \n ),\n\n progress: {\n elapsed: create.cyclesWorked * CONSTANTS.MilliPerCycle,\n percentage: completion,\n },\n\n stopText: \"Stop creating program\",\n stopTooltip: \"Your work will be saved and you can return to complete the program later.\",\n };\n }\n\n if (isGraftingWork(Player.currentWork)) {\n const graftWork = Player.currentWork;\n\n workInfo = {\n buttons: {\n cancel: () => {\n Player.finishWork(true);\n Router.toPage(Page.Terminal);\n },\n unfocus: () => {\n Router.toPage(Page.Terminal);\n Player.stopFocusing();\n },\n },\n title: (\n <>\n You are currently working on grafting {graftWork.augmentation}\n \n ),\n\n progress: {\n elapsed: graftWork.cyclesWorked * CONSTANTS.MilliPerCycle,\n percentage: (graftWork.unitCompleted / graftWork.unitNeeded()) * 100,\n },\n\n stopText: \"Stop grafting\",\n stopTooltip: (\n <>\n If you cancel, your work will not be saved, and the money you spent will not be returned\n \n ),\n };\n }\n\n if (isFactionWork(Player.currentWork)) {\n const faction = Player.currentWork.getFaction();\n if (!faction) {\n workInfo = {\n buttons: {\n cancel: () => Router.toPage(Page.Factions),\n },\n title:\n `You have not joined ${Player.currentWork.factionName || \"(Faction not found)\"} at this time,` +\n \" please try again if you think this should have worked\",\n\n stopText: \"Back to Factions\",\n };\n }\n\n const description = {\n [FactionWorkType.hacking]: \"carrying out hacking contracts\",\n [FactionWorkType.field]: \"carrying out field missions\",\n [FactionWorkType.security]: \"performing security detail\",\n };\n\n const exp = Player.currentWork.getExpRates();\n\n workInfo = {\n buttons: {\n cancel: () => {\n Router.toPage(Page.Faction, { faction });\n Player.finishWork(true);\n },\n unfocus: () => {\n Router.toPage(Page.Faction, { faction });\n Player.stopFocusing();\n },\n },\n title: (\n <>\n You are currently {description[Player.currentWork.factionWorkType]} for {faction.name}\n \n ),\n\n description: (\n <>\n Current Faction Reputation: (\n )\n \n ),\n gains: ExpRows(exp),\n progress: {\n elapsed: Player.currentWork.cyclesWorked * CONSTANTS.MilliPerCycle,\n },\n\n stopText: \"Stop Faction work\",\n };\n }\n\n if (isCompanyWork(Player.currentWork)) {\n const comp = Companies[Player.currentWork.companyName];\n if (comp) {\n workInfo = {\n buttons: {\n cancel: () => Router.toPage(Page.Terminal),\n },\n title:\n `You cannot work for ${Player.currentWork.companyName} at this time,` +\n \" please try again if you think this should have worked\",\n\n stopText: \"Back to Terminal\",\n };\n }\n\n const companyRep = comp.playerReputation;\n\n const position = Player.jobs[Player.currentWork.companyName];\n if (!position) return <>;\n const gains = Player.currentWork.getGainRates(position);\n workInfo = {\n buttons: {\n cancel: () => {\n Player.finishWork(true);\n Router.toPage(Page.Job, { location: Locations[comp.name] });\n },\n unfocus: () => {\n Player.stopFocusing();\n Router.toPage(Page.Job, { location: Locations[comp.name] });\n },\n },\n title: (\n <>\n You are currently working as a {position} at {Player.currentWork.companyName}\n \n ),\n\n description: (\n <>\n Current Company Reputation: \n \n ),\n gains: [\n \n \n \n \n ,\n \n \n \n \n ,\n ...ExpRows(gains),\n ],\n progress: {\n elapsed: Player.currentWork.cyclesWorked * CONSTANTS.MilliPerCycle,\n },\n\n stopText: \"Stop working\",\n };\n }\n\n if (workInfo.title === \"\") {\n return <>;\n }\n\n const tooltipInfo =\n typeof workInfo.stopTooltip === \"string\" ? (\n {workInfo.stopTooltip}\n ) : (\n workInfo.stopTooltip || <>\n );\n\n return (\n \n \n {workInfo.title}\n {workInfo.description}\n {workInfo.gains && (\n \n {workInfo.gains}\n
\n )}\n
\n \n {workInfo.progress !== undefined && (\n \n \n {workInfo.progress.elapsed !== undefined && (\n {convertTimeMsToTimeElapsedString(workInfo.progress.elapsed)} elapsed\n )}\n {workInfo.progress.remaining !== undefined && (\n {convertTimeMsToTimeElapsedString(workInfo.progress.remaining)} remaining\n )}\n {workInfo.progress.percentage !== undefined && (\n {workInfo.progress.percentage.toFixed(2)}% done\n )}\n \n {workInfo.progress.percentage !== undefined && (\n \n )}\n \n )}\n\n \n {workInfo.stopTooltip ? (\n \n \n \n ) : (\n \n )}\n {workInfo.buttons.unfocus && (\n \n )}\n \n \n \n );\n}\n","import { ThemeEvents } from \"../Themes/ui/Theme\";\nimport { EventEmitter } from \"../utils/EventEmitter\";\nimport { Settings } from \"../Settings/Settings\";\n\nconst numberSuffixList = [\"\", \"k\", \"m\", \"b\", \"t\", \"q\", \"Q\", \"s\", \"S\", \"o\", \"n\"];\n// exponents associated with each suffix\nconst numberExpList = numberSuffixList.map((_, i) => parseFloat(`1e${i * 3}`));\n\n// Ram suffixes\nconst ramLog1000Suffixes = [\"GB\", \"TB\", \"PB\", \"EB\"];\nconst ramLog1024Suffixes = [\"GiB\", \"TiB\", \"PiB\", \"EiB\"];\n\n// Items that get initialized in the initializer function.\nlet digitFormats = {} as Record,\n percentFormats = {} as Record,\n basicFormatter: Intl.NumberFormat,\n exponentialFormatter: Intl.NumberFormat,\n ramSuffixList: string[],\n ramExpList: number[],\n ramLogFn: (n: number) => number,\n ramLogDivisor: number;\n\n/** Event to be emitted when changing number display settings. */\nexport const FormatsNeedToChange = new EventEmitter();\n\n/** Event to be emitted after the cached formatters are cleared. */\nexport const FormatsHaveChanged = new EventEmitter();\n\n// Initialization function\nFormatsNeedToChange.subscribe(() => {\n // Clear all cached formatters\n digitFormats = {};\n percentFormats = {};\n exponentialFormatter = makeFormatter(3, { notation: Settings.useEngineeringNotation ? \"engineering\" : \"scientific\" });\n basicFormatter = new Intl.NumberFormat([Settings.Locale, \"en\"], { useGrouping: !Settings.hideThousandsSeparator });\n [ramSuffixList, ramLogFn, ramLogDivisor] = Settings.UseIEC60027_2\n ? // log2 of 1024 is 10 as divisor for log base 1024\n [ramLog1024Suffixes, Math.log2, 10]\n : // log10 of 1000 is 3 as divisor for log base 1000\n [ramLog1000Suffixes, Math.log10, 3];\n ramExpList = ramSuffixList.map((_, i) => (Settings.UseIEC60027_2 ? 1024 : 1000) ** i);\n\n // Emit a FormatsHaveChanged event so any static content that uses formats can be regenerated.\n FormatsHaveChanged.emit();\n // Force a redraw of the entire UI\n ThemeEvents.emit();\n});\n\n/** Makes a new formatter */\nfunction makeFormatter(fractionalDigits: number, otherOptions: Intl.NumberFormatOptions = {}): Intl.NumberFormat {\n if (Settings.hideThousandsSeparator) otherOptions.useGrouping = false;\n return new Intl.NumberFormat([Settings.Locale, \"en\"], {\n minimumFractionDigits: Settings.hideTrailingDecimalZeros ? 0 : fractionalDigits,\n maximumFractionDigits: fractionalDigits,\n ...otherOptions,\n });\n}\n/** Returns a cached formatter if it already exists, otherwise makes and returns a new formatter */\nfunction getFormatter(\n fractionalDigits: number,\n formatList = digitFormats,\n options: Intl.NumberFormatOptions = {},\n): Intl.NumberFormat {\n if (formatList[fractionalDigits]) return formatList[fractionalDigits] as Intl.NumberFormat;\n return (formatList[fractionalDigits] = makeFormatter(fractionalDigits, options));\n}\n\n/** Display standard ram formatting. */\nexport function formatRam(n: number, fractionalDigits = 2) {\n // NaN does not get formatted\n if (Number.isNaN(n)) return `NaN${ramSuffixList[0]}`;\n const nAbs = Math.abs(n);\n\n // Special handling for Infinities\n if (nAbs === Infinity) return `${n < 0 ? \"-∞\" : \"\"}∞${ramSuffixList.at(-1)}`;\n\n // Early return if using first suffix.\n if (nAbs < 1000) return getFormatter(fractionalDigits).format(n) + ramSuffixList[0];\n\n // Ram always uses a suffix and never goes to exponential\n const suffixIndex = Math.min(Math.floor(ramLogFn(nAbs) / ramLogDivisor), ramSuffixList.length - 1);\n n /= ramExpList[suffixIndex];\n /* Not really concerned with 1000-rounding or 1024-rounding for ram due to the actual values ram gets displayed at.\n If display of e.g. 1,000.00GB instead of 1.00TB for 999.995GB, or 1,024.00GiB instead of 1.00TiB for 1,023.995GiB\n becomes an actual issue we can add smart rounding, but ram values like that really don't happen ingame so it's\n probably not worth the performance overhead to check and correct these. */\n return getFormatter(fractionalDigits).format(n) + ramSuffixList[suffixIndex];\n}\n\nfunction formatExponential(n: number) {\n return exponentialFormatter.format(n).toLocaleLowerCase();\n}\n\n// Default suffixing starts at 1e9 % which is 1e7.\nexport function formatPercent(n: number, fractionalDigits = 2, multStart = 1e6) {\n // NaN does not get formatted\n if (Number.isNaN(n)) return \"NaN%\";\n const nAbs = Math.abs(n);\n\n // Special handling for Infinities\n if (nAbs * 100 === Infinity) return n < 0 ? \"-∞%\" : \"∞%\";\n\n // Mult form. There are probably some areas in the game this wouldn't make sense, but they hopefully won't ever have huge %.\n if (nAbs >= multStart) return \"x\" + formatNumber(n, fractionalDigits, 0);\n\n return getFormatter(fractionalDigits, percentFormats, { style: \"percent\" }).format(n);\n}\n\nexport function formatNumber(n: number, fractionalDigits = 3, suffixStart = 1000, isInteger = false) {\n // NaN does not get formatted\n if (Number.isNaN(n)) return \"NaN\";\n const nAbs = Math.abs(n);\n\n // Special handling for Infinities\n if (nAbs === Infinity) return n < 0 ? \"-∞\" : \"∞\";\n\n // Early return for non-suffix\n if (nAbs < suffixStart) {\n if (isInteger) return basicFormatter.format(n);\n return getFormatter(fractionalDigits).format(n);\n }\n\n // Exponential form\n if (Settings.disableSuffixes || nAbs >= 1e33) return formatExponential(n);\n\n // Calculate suffix index. 1000 = 10^3\n let suffixIndex = Math.floor(Math.log10(nAbs) / 3);\n\n n /= numberExpList[suffixIndex];\n // Todo: Find a better way to detect if number is rounding to 1000${suffix}, or find a simple way to truncate to x digits instead of rounding\n // Detect if number rounds to 1000.000 (based on number of digits given)\n if (Math.abs(n).toFixed(fractionalDigits).length === fractionalDigits + 5 && numberSuffixList[suffixIndex + 1]) {\n suffixIndex += 1;\n n = n < 0 ? -1 : 1;\n }\n return getFormatter(fractionalDigits).format(n) + numberSuffixList[suffixIndex];\n}\n\n/** Format a number without suffixes. Still show exponential form if >= 1e33. */\nexport const formatNumberNoSuffix = (n: number, fractionalDigits = 0) => {\n return formatNumber(n, fractionalDigits, 1e33);\n};\nexport const formatFavor = formatNumberNoSuffix;\n\n/** Standard noninteger formatting with no options set. Collapses to suffix at 1000 and shows 3 fractional digits. */\nexport const formatBigNumber = (n: number) => formatNumber(n);\nexport const formatExp = formatBigNumber;\nexport const formatHashes = formatBigNumber;\nexport const formatReputation = formatBigNumber;\nexport const formatPopulation = formatBigNumber;\nexport const formatSecurity = formatBigNumber;\nexport const formatStamina = formatBigNumber;\nexport const formatStaneksGiftCharge = formatBigNumber;\n\n/** Format a number with suffixes starting at 1000 and 2 fractional digits */\nexport const formatQuality = (n: number) => formatNumber(n, 2);\n\n/** Format an integer that uses suffixed form at 1000 and 3 fractional digits. */\nexport const formatInt = (n: number) => formatNumber(n, 3, 1000, true);\nexport const formatSleeveMemory = formatInt;\nexport const formatShares = formatInt;\n\n/** Display an integer up to 999,999 before collapsing to suffixed form with 3 fractional digits */\nexport const formatHp = (n: number) => formatNumber(n, 3, 1e6, true);\nexport const formatThreads = formatHp;\n\n/** Display an integer up to 999,999,999 before collapsing to suffixed form with 3 fractional digits */\nexport const formatSkill = (n: number) => formatNumber(n, 3, 1e9, true);\n\n/** Display standard money formatting, including the preceding $. */\nexport const formatMoney = (n: number) => \"$\" + formatNumber(n);\n\n/** Display a decimal number with increased precision (5 fractional digits) */\nexport const formatRespect = (n: number) => formatNumber(n, 5);\nexport const formatWanted = formatRespect;\nexport const formatPreciseMultiplier = formatRespect;\n\n/** Format a number with no suffix and 1 fractional digit. */\nexport const formatMaterialSize = (n: number) => formatNumberNoSuffix(n, 1);\n\n/** Format a number with no suffix and 2 fractional digits. */\nexport const formatMultiplier = (n: number) => formatNumberNoSuffix(n, 2);\nexport const formatStaneksGiftPower = formatMultiplier;\nexport const formatMatPurchaseAmount = formatMultiplier;\n\n/** Format a number with no suffix and 3 fractional digits. */\nexport const formatSleeveShock = (n: number) => formatNumberNoSuffix(n, 3);\nexport const formatSleeveSynchro = formatSleeveShock;\nexport const formatCorpStat = formatSleeveShock;\n\n/** Parsing numbers does not use the locale as this causes complications. */\nexport function parseBigNumber(str: string): number {\n str = str.trim();\n // Remove all commas in case the player is typing a longform number\n str = str.replace(/,/g, \"\");\n // Handle special returns\n if ([\"infinity\", \"Infinity\", \"∞\"].includes(str)) return Infinity;\n if ([\"-infinity\", \"-Infinity\", \"-∞\"].includes(str)) return -Infinity;\n\n const suffixIndex = numberSuffixList.indexOf(str.substring(str.length - 1));\n // If there's no valid suffix at the end, just return parseFloated string\n if (suffixIndex === -1) return parseFloat(str);\n return parseFloat(str.substring(0, str.length - 1) + \"e\" + suffixIndex * 3);\n}\n","// choose random character for generating plaintexts to compress\nexport function comprGenChar(): string {\n const r = Math.random();\n if (r < 0.4) {\n return \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(26 * Math.random())];\n } else if (r < 0.8) {\n return \"abcdefghijklmnopqrstuvwxyz\"[Math.floor(26 * Math.random())];\n } else {\n return \"01234567689\"[Math.floor(10 * Math.random())];\n }\n}\n\n// generate plaintext which is amenable to LZ encoding\nexport function comprLZGenerate(): string {\n const length = 50 + Math.floor(25 * (Math.random() + Math.random()));\n let plain = \"\";\n\n while (plain.length < length) {\n if (Math.random() < 0.8) {\n plain += comprGenChar();\n } else {\n const length = 1 + Math.floor(9 * Math.random());\n const offset = 1 + Math.floor(9 * Math.random());\n if (offset > plain.length) {\n continue;\n }\n\n for (let i = 0; i < length; ++i) {\n plain += plain[plain.length - offset];\n }\n }\n }\n\n return plain.substring(0, length);\n}\n\n// compress plaintest string\nexport function comprLZEncode(plain: string): string {\n // for state[i][j]:\n // if i is 0, we're adding a literal of length j\n // else, we're adding a backreference of offset i and length j\n let cur_state: (string | null)[][] = Array.from(Array(10), () => Array(10).fill(null));\n let new_state: (string | null)[][] = Array.from(Array(10), () => Array(10));\n\n function set(state: (string | null)[][], i: number, j: number, str: string): void {\n const current = state[i][j];\n if (current == null || str.length < current.length) {\n state[i][j] = str;\n } else if (str.length === current.length && Math.random() < 0.5) {\n // if two strings are the same length, pick randomly so that\n // we generate more possible inputs to Compression II\n state[i][j] = str;\n }\n }\n\n // initial state is a literal of length 1\n cur_state[0][1] = \"\";\n\n for (let i = 1; i < plain.length; ++i) {\n for (const row of new_state) {\n row.fill(null);\n }\n const c = plain[i];\n\n // handle literals\n for (let length = 1; length <= 9; ++length) {\n const string = cur_state[0][length];\n if (string == null) {\n continue;\n }\n\n if (length < 9) {\n // extend current literal\n set(new_state, 0, length + 1, string);\n } else {\n // start new literal\n set(new_state, 0, 1, string + \"9\" + plain.substring(i - 9, i) + \"0\");\n }\n\n for (let offset = 1; offset <= Math.min(9, i); ++offset) {\n if (plain[i - offset] === c) {\n // start new backreference\n set(new_state, offset, 1, string + String(length) + plain.substring(i - length, i));\n }\n }\n }\n\n // handle backreferences\n for (let offset = 1; offset <= 9; ++offset) {\n for (let length = 1; length <= 9; ++length) {\n const string = cur_state[offset][length];\n if (string == null) {\n continue;\n }\n\n if (plain[i - offset] === c) {\n if (length < 9) {\n // extend current backreference\n set(new_state, offset, length + 1, string);\n } else {\n // start new backreference\n set(new_state, offset, 1, string + \"9\" + String(offset) + \"0\");\n }\n }\n\n // start new literal\n set(new_state, 0, 1, string + String(length) + String(offset));\n\n // end current backreference and start new backreference\n for (let new_offset = 1; new_offset <= Math.min(9, i); ++new_offset) {\n if (plain[i - new_offset] === c) {\n set(new_state, new_offset, 1, string + String(length) + String(offset) + \"0\");\n }\n }\n }\n }\n\n const tmp_state = new_state;\n new_state = cur_state;\n cur_state = tmp_state;\n }\n\n let result = null;\n\n for (let len = 1; len <= 9; ++len) {\n let string = cur_state[0][len];\n if (string == null) {\n continue;\n }\n\n string += String(len) + plain.substring(plain.length - len, plain.length);\n if (result == null || string.length < result.length) {\n result = string;\n } else if (string.length == result.length && Math.random() < 0.5) {\n result = string;\n }\n }\n\n for (let offset = 1; offset <= 9; ++offset) {\n for (let len = 1; len <= 9; ++len) {\n let string = cur_state[offset][len];\n if (string == null) {\n continue;\n }\n\n string += String(len) + \"\" + String(offset);\n if (result == null || string.length < result.length) {\n result = string;\n } else if (string.length == result.length && Math.random() < 0.5) {\n result = string;\n }\n }\n }\n\n return result ?? \"\";\n}\n\n// decompress LZ-compressed string, or return null if input is invalid\nexport function comprLZDecode(compr: string): string | null {\n let plain = \"\";\n\n for (let i = 0; i < compr.length; ) {\n const literal_length = compr.charCodeAt(i) - 0x30;\n\n if (literal_length < 0 || literal_length > 9 || i + 1 + literal_length > compr.length) {\n return null;\n }\n\n plain += compr.substring(i + 1, i + 1 + literal_length);\n i += 1 + literal_length;\n\n if (i >= compr.length) {\n break;\n }\n const backref_length = compr.charCodeAt(i) - 0x30;\n\n if (backref_length < 0 || backref_length > 9) {\n return null;\n } else if (backref_length === 0) {\n ++i;\n } else {\n if (i + 1 >= compr.length) {\n return null;\n }\n\n const backref_offset = compr.charCodeAt(i + 1) - 0x30;\n if ((backref_length > 0 && (backref_offset < 1 || backref_offset > 9)) || backref_offset > plain.length) {\n return null;\n }\n\n for (let j = 0; j < backref_length; ++j) {\n plain += plain[plain.length - backref_offset];\n }\n\n i += 2;\n }\n }\n\n return plain;\n}\n","import type { Member } from \"../types\";\nimport type { NetscriptContext } from \"../Netscript/APIWrapper\";\n\nimport * as allEnums from \"../Enums\";\nimport { assertString, helpers } from \"../Netscript/NetscriptHelpers\";\nimport { getRandomInt } from \"./helpers/getRandomInt\";\n\nclass EnumHelper & string> {\n name: string; // Name, for including in error text\n defaultArgName: string; // Used as default for for validating ns arg name\n valueArray: Array;\n valueSet: Set; // For quick isMember typecheck\n fuzzMap: Map; // For fuzzy lookup\n constructor(obj: EnumObj, name: string) {\n this.name = name;\n this.defaultArgName = name.charAt(0).toLowerCase() + name.slice(1);\n this.valueArray = Object.values(obj);\n this.valueSet = new Set(this.valueArray);\n this.fuzzMap = new Map(this.valueArray.map((val) => [val.toLowerCase().replace(/[ -]+/g, \"\"), val]));\n }\n /** Provide a boolean indication for whether a */\n isMember(toValidate: unknown): toValidate is EnumMember {\n // Asserting that Set.has actually takes in arbitrary values, which it does.\n return (this.valueSet.has as (value: unknown) => boolean)(toValidate);\n }\n /** Take an unknown input from a player script, either return an enum member or throw */\n nsGetMember(ctx: NetscriptContext, toValidate: unknown, argName = this.defaultArgName): EnumMember {\n if (this.isMember(toValidate)) return toValidate;\n // assertString is just called so if the user didn't even pass in a string, they get a different error message\n assertString(ctx, argName, toValidate);\n // Don't display all possibilities for large enums\n let allowableValues = `Allowable values: ${this.valueArray.map((val) => `\"${val}\"`).join(\", \")}`;\n if (this.valueArray.length > 10) {\n console.warn(\n `Provided value ${toValidate} was not a valid option for enum type ${this.name}.\\n${allowableValues}`,\n );\n allowableValues = `See the developer console for allowable values.`;\n }\n throw helpers.makeRuntimeErrorMsg(\n ctx,\n `Argument ${argName} should be a ${this.name} enum member.\\nProvided value: \"${toValidate}\".\\n${allowableValues}`,\n );\n }\n /** Provides case insensitivty and ignores spaces and dashes, and can always match the input */\n fuzzyGetMember(input: string): EnumMember | undefined;\n fuzzyGetMember(input: string, alwaysMatch: true): EnumMember;\n fuzzyGetMember(input: string, alwaysMatch = false) {\n const matchedValue = this.fuzzMap.get(input.toLowerCase().replace(/[ -]+/g, \"\"));\n if (matchedValue) {\n return matchedValue;\n }\n return alwaysMatch ? this.valueArray[0] : undefined;\n }\n /** Provide a case sensitive match, or undefined if */\n getMember(input: unknown): EnumMember | undefined {\n return this.isMember(input) ? input : undefined;\n }\n // Get a random enum member\n random() {\n const index = getRandomInt(0, this.valueArray.length - 1);\n return this.valueArray[index];\n }\n}\n\n// Creating and populating the enum helpers map\n\ntype EnumName = keyof typeof allEnums;\nconst enumHelpers = new Map();\n// Ensure all enums get helpers assigned to them.\nObject.entries(allEnums).forEach(([enumName, enumObj]) => {\n enumHelpers.set(enumName, new EnumHelper(enumObj, enumName));\n});\n\n// This function is just adding types to enumHelpers.get, and is all that gets exposed for use in other files.\nexport const getEnumHelper: (\n name: Name,\n) => EnumHelper> = enumHelpers.get.bind(enumHelpers);\n\nexport const isMember = (\n name: Name,\n value: unknown,\n): value is Member => getEnumHelper(name).isMember(value);\n","import React from \"react\";\n\nimport { Page } from \"../ui/Router\";\nimport { hash } from \"../hash/hash\";\nimport { CONSTANTS } from \"../Constants\";\n\nenum GameEnv {\n Production,\n Development,\n}\n\nenum Platform {\n Browser,\n Steam,\n}\n\ninterface GameVersion {\n version: string;\n hash: string;\n\n toDisplay: () => string;\n}\n\ninterface BrowserFeatures {\n userAgent: string;\n language: string;\n cookiesEnabled: boolean;\n doNotTrack: string | null;\n indexedDb: boolean;\n}\n\ninterface IErrorMetadata {\n error: Error;\n errorInfo?: React.ErrorInfo;\n page?: Page;\n\n environment: GameEnv;\n platform: Platform;\n version: GameVersion;\n features: BrowserFeatures;\n}\n\nexport interface IErrorData {\n metadata: IErrorMetadata;\n\n title: string;\n body: string;\n\n features: string;\n fileName?: string;\n\n issueUrl: string;\n}\n\nexport const newIssueUrl = `https://github.com/bitburner-official/bitburner-src/issues/new`;\n\nfunction getErrorMetadata(error: Error, errorInfo?: React.ErrorInfo, page?: Page): IErrorMetadata {\n const isElectron = navigator.userAgent.toLowerCase().includes(\" electron/\");\n const env = process.env.NODE_ENV === \"development\" ? GameEnv.Development : GameEnv.Production;\n const version: GameVersion = {\n version: CONSTANTS.VersionString,\n hash: hash(),\n toDisplay: () => `v${CONSTANTS.VersionString} (${hash()})`,\n };\n const features: BrowserFeatures = {\n userAgent: navigator.userAgent,\n\n language: navigator.language,\n cookiesEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack,\n indexedDb: !!window.indexedDB,\n };\n const metadata: IErrorMetadata = {\n platform: isElectron ? Platform.Steam : Platform.Browser,\n environment: env,\n version,\n features,\n error,\n errorInfo,\n page,\n };\n return metadata;\n}\n\nexport function getErrorForDisplay(error: Error, errorInfo?: React.ErrorInfo, page?: Page): IErrorData {\n const metadata = getErrorMetadata(error, errorInfo, page);\n const fileName = (metadata.error as any).fileName;\n const features =\n `lang=${metadata.features.language} cookiesEnabled=${metadata.features.cookiesEnabled.toString()}` +\n ` doNotTrack=${metadata.features.doNotTrack ?? \"null\"} indexedDb=${metadata.features.indexedDb.toString()}`;\n\n const title = `${metadata.error.name}: ${metadata.error.message} (at \"${metadata.page}\")`;\n const body = `\n## ${title}\n\n### How did this happen?\n\nPlease fill this information with details if relevant.\n\n- [ ] Save file\n- [ ] Minimal scripts to reproduce the issue\n- [ ] Steps to reproduce\n\n### Environment\n\n* Error: ${metadata.error.toString() ?? \"n/a\"}\n* Page: ${metadata.page ?? \"n/a\"}\n* Version: ${metadata.version.toDisplay()}\n* Environment: ${GameEnv[metadata.environment]}\n* Platform: ${Platform[metadata.platform]}\n* UserAgent: ${navigator.userAgent}\n* Features: ${features}\n* Source: ${fileName ?? \"n/a\"}\n\n${\n metadata.environment === GameEnv.Development\n ? `\n### Stack Trace\n\\`\\`\\`\n${metadata.errorInfo?.componentStack.toString().trim()}\n\\`\\`\\`\n`\n : \"\"\n}\n### Save\n\\`\\`\\`\nCopy your save here if possible\n\\`\\`\\`\n`.trim();\n\n const issueUrl = `${newIssueUrl}?title=${encodeURIComponent(title)}&body=${encodeURIComponent(body)}`;\n\n const data: IErrorData = {\n metadata,\n fileName,\n features,\n title,\n body,\n issueUrl,\n };\n return data;\n}\n","function uuidv4(): string {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/** Generic Event Emitter class following a subscribe/publish paradigm. */\nexport class EventEmitter {\n subscribers: Record void | undefined> = {};\n\n subscribe(s: (...args: [...T]) => void): () => void {\n let uuid = uuidv4();\n while (this.subscribers[uuid] !== undefined) uuid = uuidv4();\n this.subscribers[uuid] = s;\n\n return () => {\n delete this.subscribers[uuid];\n };\n }\n\n emit(...args: [...T]): void {\n for (const s in this.subscribers) {\n const sub = this.subscribers[s];\n if (sub === undefined) continue;\n\n sub(...args);\n }\n }\n}\n","export function HammingEncode(data: number): string {\n const enc: number[] = [0];\n const data_bits: any[] = data.toString(2).split(\"\").reverse();\n\n data_bits.forEach((e, i, a) => {\n a[i] = parseInt(e);\n });\n\n let k = data_bits.length;\n\n /* NOTE: writing the data like this flips the endianness, this is what the\n * original implementation by Hedrauta did so I'm keeping it like it was. */\n for (let i = 1; k > 0; i++) {\n if ((i & (i - 1)) != 0) {\n enc[i] = data_bits[--k];\n } else {\n enc[i] = 0;\n }\n }\n\n let parity: any = 0;\n\n /* Figure out the subsection parities */\n for (let i = 0; i < enc.length; i++) {\n if (enc[i]) {\n parity ^= i;\n }\n }\n\n parity = parity.toString(2).split(\"\").reverse();\n parity.forEach((e: any, i: any, a: any) => {\n a[i] = parseInt(e);\n });\n\n /* Set the parity bits accordingly */\n for (let i = 0; i < parity.length; i++) {\n enc[2 ** i] = parity[i] ? 1 : 0;\n }\n\n parity = 0;\n /* Figure out the overall parity for the entire block */\n for (let i = 0; i < enc.length; i++) {\n if (enc[i]) {\n parity++;\n }\n }\n\n /* Finally set the overall parity bit */\n enc[0] = parity % 2 == 0 ? 0 : 1;\n\n return enc.join(\"\");\n}\n\nexport function HammingEncodeProperly(data: number): string {\n /* How many bits do we need?\n * n = 2^m\n * k = 2^m - m - 1\n * where k is the number of data bits, m the number\n * of parity bits and n the number of total bits. */\n\n let m = 1;\n\n while (2 ** (2 ** m - m - 1) - 1 < data) {\n m++;\n }\n\n const n: number = 2 ** m;\n const k: number = 2 ** m - m - 1;\n\n const enc: number[] = [0];\n const data_bits: any[] = data.toString(2).split(\"\").reverse();\n\n data_bits.forEach((e, i, a) => {\n a[i] = parseInt(e);\n });\n\n /* Flip endianness as in the original implementation by Hedrauta\n * and write the data back to front\n * XXX why do we do this? */\n for (let i = 1, j = k; i < n; i++) {\n if ((i & (i - 1)) != 0) {\n enc[i] = data_bits[--j] ? data_bits[j] : 0;\n }\n }\n\n let parity: any = 0;\n\n /* Figure out the subsection parities */\n for (let i = 0; i < n; i++) {\n if (enc[i]) {\n parity ^= i;\n }\n }\n\n parity = parity.toString(2).split(\"\").reverse();\n parity.forEach((e: any, i: any, a: any) => {\n a[i] = parseInt(e);\n });\n\n /* Set the parity bits accordingly */\n for (let i = 0; i < m; i++) {\n enc[2 ** i] = parity[i] ? 1 : 0;\n }\n\n parity = 0;\n /* Figure out the overall parity for the entire block */\n for (let i = 0; i < n; i++) {\n if (enc[i]) {\n parity++;\n }\n }\n\n /* Finally set the overall parity bit */\n enc[0] = parity % 2 == 0 ? 0 : 1;\n\n return enc.join(\"\");\n}\n\nexport function HammingDecode(data: string): number {\n let err = 0;\n const bits: number[] = [];\n\n /* TODO why not just work with an array of digits from the start? */\n for (const i in data.split(\"\")) {\n const bit = parseInt(data[i]);\n bits[i] = bit;\n\n if (bit) {\n err ^= +i;\n }\n }\n\n /* If err != 0 then it spells out the index of the bit that was flipped */\n if (err) {\n /* Flip to correct */\n bits[err] = bits[err] ? 0 : 1;\n }\n\n /* Now we have to read the message, bit 0 is unused (it's the overall parity bit\n * which we don't care about). Each bit at an index that is a power of 2 is\n * a parity bit and not part of the actual message. */\n\n let ans = \"\";\n\n for (let i = 1; i < bits.length; i++) {\n /* i is not a power of two so it's not a parity bit */\n if ((i & (i - 1)) != 0) {\n ans += bits[i];\n }\n }\n\n /* TODO to avoid ambiguity about endianness why not let the player return the extracted (and corrected)\n * data bits, rather than guessing at how to convert it to a decimal string? */\n return parseInt(ans, 2);\n}\n","/** Binary heap. */\nabstract class BinHeap {\n /**\n * Heap data array consisting of [weight, payload] pairs, arranged by weight\n * to satisfy heap condition.\n *\n * Encodes the binary tree by storing tree root at index 0 and\n * left child of element i at `i * 2 + 1` and\n * right child of element i at `i * 2 + 2`.\n */\n protected data: [number, T][];\n\n constructor() {\n this.data = [];\n }\n\n /** Get number of elements in the heap. */\n public get size(): number {\n return this.data.length;\n }\n\n /** Add a new element to the heap. */\n public push(value: T, weight: number): void {\n const i = this.data.length;\n this.data[i] = [weight, value];\n this.heapifyUp(i);\n }\n\n /** Get the value of the root-most element of the heap, without changing the heap. */\n public peek(): T | undefined {\n if (this.data.length == 0) return undefined;\n\n return this.data[0][1];\n }\n\n /** Remove the root-most element of the heap and return the removed element's value. */\n public pop(): T | undefined {\n if (this.data.length == 0) return undefined;\n\n const value = this.data[0][1];\n\n this.data[0] = this.data[this.data.length - 1];\n this.data.length = this.data.length - 1;\n\n this.heapifyDown(0);\n\n return value;\n }\n\n /** Change the weight of an element in the heap. */\n public changeWeight(predicate: (value: T) => boolean, weight: number): void {\n // Find first element with matching value, if any\n const i = this.data.findIndex((e) => predicate(e[1]));\n if (i == -1) return;\n\n // Update that element's weight\n this.data[i][0] = weight;\n\n // And re-heapify if needed\n const p = Math.floor((i - 1) / 2);\n\n if (!this.heapOrderABeforeB(this.data[p][0], this.data[i][0]))\n // Needs to shift root-wards?\n this.heapifyUp(i);\n // Try shifting deeper\n else this.heapifyDown(i);\n }\n\n /** Restore heap condition, starting at index i and traveling towards root. */\n protected heapifyUp(i: number): void {\n // Swap the new element up towards root until it reaches root position or\n // settles under under a suitable parent\n while (i > 0) {\n const p = Math.floor((i - 1) / 2);\n\n // Reached heap-ordered state already?\n if (this.heapOrderABeforeB(this.data[p][0], this.data[i][0])) break;\n\n // Swap\n const tmp = this.data[p];\n this.data[p] = this.data[i];\n this.data[i] = tmp;\n\n // And repeat at parent index\n i = p;\n }\n }\n\n /** Restore heap condition, starting at index i and traveling away from root. */\n protected heapifyDown(i: number): void {\n // Swap the shifted element down in the heap until it either reaches the\n // bottom layer or is in correct order relative to it's children\n while (i < this.data.length) {\n const l = i * 2 + 1;\n const r = i * 2 + 2;\n let toSwap = i;\n\n // Find which one of element i and it's children should be closest to root\n if (l < this.data.length && this.heapOrderABeforeB(this.data[l][0], this.data[toSwap][0])) toSwap = l;\n if (r < this.data.length && this.heapOrderABeforeB(this.data[r][0], this.data[toSwap][0])) toSwap = r;\n\n // Already in order?\n if (i == toSwap) break;\n\n // Not in order. Swap child that should be closest to root up to 'i' and repeat\n const tmp = this.data[toSwap];\n this.data[toSwap] = this.data[i];\n this.data[i] = tmp;\n\n i = toSwap;\n }\n }\n\n /**\n * Should element with weight `weightA` be closer to root than element with\n * weight `weightB`?\n */\n protected abstract heapOrderABeforeB(weightA: number, weightB: number): boolean;\n}\n\n/** Binary max-heap. */\nexport class MaxHeap extends BinHeap {\n heapOrderABeforeB(weightA: number, weightB: number): boolean {\n return weightA > weightB;\n }\n}\n\n/** Binary min-heap. */\nexport class MinHeap extends BinHeap {\n heapOrderABeforeB(weightA: number, weightB: number): boolean {\n return weightA < weightB;\n }\n}\n","import type { IPAddress } from \"../Types/strings\";\nimport { getRandomByte } from \"./helpers/getRandomByte\";\n\n/**\n * Generate a random IP address\n * Does not check to see if the IP already exists in the game\n */\nexport const createRandomIp = (): IPAddress => {\n return `${getRandomByte(99)}.${getRandomByte(9)}.${getRandomByte(9)}.${getRandomByte(9)}` as IPAddress;\n};\n","/* Generic Reviver, toJSON, and fromJSON functions used for saving and loading objects */\nimport type { Unknownify } from \"../types\";\n\nimport { ObjectValidator, validateObject } from \"./Validator\";\nimport { JSONMap, JSONSet } from \"../Types/Jsonable\";\n\ntype JsonableClass = (new () => { toJSON: () => IReviverValue }) & {\n fromJSON: (value: IReviverValue) => any;\n validationData?: ObjectValidator;\n};\n\nexport interface IReviverValue {\n ctor: string;\n data: any;\n}\nfunction isReviverValue(value: unknown): value is IReviverValue {\n return (\n typeof value === \"object\" && value !== null && \"ctor\" in value && typeof value.ctor === \"string\" && \"data\" in value\n );\n}\n\n/**\n * A generic \"smart reviver\" function.\n * Looks for object values with a `ctor` property and a `data` property.\n * If it finds them, and finds a matching constructor, it hands\n * off to that `fromJSON` function, passing in the value. */\nexport function Reviver(_key: string, value: unknown): any {\n if (!isReviverValue(value)) return value;\n const ctor = constructorsForReviver[value.ctor];\n if (!ctor) {\n // Known missing constructors with special handling.\n switch (value.ctor) {\n case \"AllServersMap\":\n console.warn(\"Converting AllServersMap for v0.43.1\");\n return value.data;\n case \"Industry\":\n console.warn(\"Converting a corp from pre-2.3\");\n return value.data; // Will immediately be overwritten by v2.3 save migration code\n case \"Employee\":\n console.warn(\"Converting a corp from pre-2.2\");\n return value.data; // Will immediately be overwritten by v2.3 save migration code\n }\n // Missing constructor with no special handling. Throw error.\n throw new Error(`Could not locate constructor named ${value.ctor}. If the save data is valid, this is a bug.`);\n }\n\n const obj = ctor.fromJSON(value);\n if (ctor.validationData !== undefined) {\n validateObject(obj, ctor.validationData);\n }\n return obj;\n}\n\nexport const constructorsForReviver: Partial> = { JSONSet, JSONMap };\n\n/**\n * A generic \"toJSON\" function that creates the data expected by Reviver.\n *\n * @param ctorName String name of the constructor, part of the reviver JSON.\n * @param obj The object to convert to stringified data in the reviver JSON.\n * @param keys If provided, only these keys will be saved to the reviver JSON data. */\nexport function Generic_toJSON>(\n ctorName: string,\n obj: T,\n keys?: readonly (keyof T)[],\n): IReviverValue {\n const data = {} as T;\n // keys provided: only save data for the provided keys\n if (keys) {\n for (const key of keys) data[key] = obj[key];\n return { ctor: ctorName, data: data };\n }\n // no keys provided: save all own keys of the object\n for (const [key, val] of Object.entries(obj) as [keyof T, T[keyof T]][]) data[key] = val;\n return { ctor: ctorName, data: data };\n}\n\n/**\n * A generic \"fromJSON\" function for use with Reviver: Just calls the\n * constructor function with no arguments, then applies all of the\n * key/value pairs from the raw data to the instance. Only useful for\n * constructors that can be reasonably called without arguments!\n *\n * @param ctor The constructor to call\n * @param data The saved data to restore to the constructed object\n * @param keys If provided, only these keys will be restored from data.\n * @returns The object */\nexport function Generic_fromJSON>(\n ctor: new () => T,\n // data can actually be anything. We're just pretending it has the right keys for T. Save data is not type validated.\n data: Record,\n keys?: readonly (keyof T)[],\n): T {\n const obj = new ctor();\n // If keys were provided, just load the provided keys (if they are in the data)\n if (keys) {\n for (const key of keys) {\n const val = data[key];\n if (val !== undefined) obj[key] = val;\n }\n return obj;\n }\n // No keys provided: load every key in data\n for (const [key, val] of Object.entries(data) as [keyof T, T[keyof T]][]) obj[key] = val;\n return obj;\n}\n\n// This function is empty because Unknownify is a typesafe assertion on any object with no runtime checks needed.\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function assertLoadingType(val: object): asserts val is Unknownify {}\n","import type { TypedKeys } from \"../types\";\n\nimport { Generic_fromJSON, Generic_toJSON, constructorsForReviver, IReviverValue } from \"./JSONReviver\";\n\nexport type MoneySource = TypedKeys;\n\nexport class MoneySourceTracker {\n bladeburner = 0;\n casino = 0;\n class = 0;\n codingcontract = 0;\n corporation = 0;\n crime = 0;\n gang = 0;\n hacking = 0;\n hacknet = 0;\n hacknet_expenses = 0;\n hospitalization = 0;\n infiltration = 0;\n sleeves = 0;\n stock = 0;\n total = 0;\n work = 0;\n servers = 0;\n other = 0;\n augmentations = 0;\n\n // Record money earned\n record(amt: number, source: MoneySource): void {\n this[source] += amt;\n this.total += amt;\n }\n\n // Reset the money tracker by setting all stats to 0\n reset(): void {\n for (const prop in this) {\n if (typeof this[prop] === \"number\") {\n (this[prop] as number) = 0;\n }\n }\n }\n\n // Serialize the current object to a JSON save state.\n toJSON(): IReviverValue {\n return Generic_toJSON(\"MoneySourceTracker\", this);\n }\n\n // Initializes a MoneySourceTracker object from a JSON save state.\n static fromJSON(value: IReviverValue): MoneySourceTracker {\n return Generic_fromJSON(MoneySourceTracker, value.data);\n }\n}\n\nconstructorsForReviver.MoneySourceTracker = MoneySourceTracker;\n","import { Settings } from \"../Settings/Settings\";\nimport { isString } from \"./helpers/string\";\n\n/*\nConverts a date representing time in milliseconds to a string with the format H hours M minutes and S seconds\ne.g. 10000 -> \"10 seconds\"\n 120000 -> \"2 minutes and 0 seconds\"\n*/\nfunction convertTimeMsToTimeElapsedString(time: number, showMilli = false): string {\n const negFlag = time < 0;\n time = Math.abs(Math.floor(time));\n const millisecondsPerSecond = 1000;\n const secondPerMinute = 60;\n const minutesPerHours = 60;\n const secondPerHours: number = secondPerMinute * minutesPerHours;\n const hoursPerDays = 24;\n const secondPerDay: number = secondPerHours * hoursPerDays;\n\n // Convert ms to seconds, since we only have second-level precision\n const totalSeconds: number = Math.floor(time / millisecondsPerSecond);\n\n const days: number = Math.floor(totalSeconds / secondPerDay);\n const secTruncDays: number = totalSeconds % secondPerDay;\n\n const hours: number = Math.floor(secTruncDays / secondPerHours);\n const secTruncHours: number = secTruncDays % secondPerHours;\n\n const minutes: number = Math.floor(secTruncHours / secondPerMinute);\n const secTruncMinutes: number = secTruncHours % secondPerMinute;\n\n const milliTruncSec: string = (() => {\n let str = `${time % millisecondsPerSecond}`;\n while (str.length < 3) str = \"0\" + str;\n return str;\n })();\n\n const seconds: string = showMilli ? `${secTruncMinutes}.${milliTruncSec}` : `${secTruncMinutes}`;\n\n let res = \"\";\n if (days > 0) {\n res += `${days} day${days === 1 ? \"\" : \"s\"} `;\n }\n if (hours > 0 || (Settings.ShowMiddleNullTimeUnit && res != \"\")) {\n res += `${hours} hour${hours === 1 ? \"\" : \"s\"} `;\n }\n if (minutes > 0 || (Settings.ShowMiddleNullTimeUnit && res != \"\")) {\n res += `${minutes} minute${minutes === 1 ? \"\" : \"s\"} `;\n }\n res += `${seconds} second${!showMilli && secTruncMinutes === 1 ? \"\" : \"s\"}`;\n\n return negFlag ? `-(${res})` : res;\n}\n\n// Finds the longest common starting substring in a set of strings\nfunction longestCommonStart(strings: string[]): string {\n if (!containsAllStrings(strings)) {\n return \"\";\n }\n if (strings.length === 0) {\n return \"\";\n }\n\n const A: string[] = strings.concat().sort();\n const a1: string = A[0];\n const a2: string = A[A.length - 1];\n const L: number = a1.length;\n let i = 0;\n const areEqualCaseInsensitive = (a: string, b: string) => a.toUpperCase() === b.toUpperCase();\n while (i < L && areEqualCaseInsensitive(a1.charAt(i), a2.charAt(i))) {\n i++;\n }\n\n return a1.substring(0, i);\n}\n\n// Returns whether an array contains entirely of string objects\nfunction containsAllStrings(arr: string[]): boolean {\n return arr.every(isString);\n}\n\n// Generates a random alphanumeric string with N characters\nfunction generateRandomString(n: number): string {\n let str = \"\";\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (let i = 0; i < n; i++) {\n str += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return str;\n}\n\n/**\n * Hashes the input string. This is a fast hash, so NOT good for cryptography.\n * This has been ripped off here: https://stackoverflow.com/a/52171480\n * @param str The string that is to be hashed\n * @param seed A seed to randomize the result\n * @returns An hexadecimal string representation of the hashed input\n */\nfunction cyrb53(str: string, seed = 0): string {\n let h1 = 0xdeadbeef ^ seed;\n let h2 = 0x41c6ce57 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(16);\n}\n\nfunction capitalizeFirstLetter(s: string): string {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\nfunction capitalizeEachWord(s: string): string {\n return s\n .split(\" \")\n .map((word) => capitalizeFirstLetter(word))\n .join(\" \");\n}\n\nexport {\n convertTimeMsToTimeElapsedString,\n longestCommonStart,\n containsAllStrings,\n generateRandomString,\n cyrb53,\n capitalizeFirstLetter,\n capitalizeEachWord,\n};\n","import { Button, Typography } from \"@mui/material\";\nimport React, { useState } from \"react\";\nimport { Modal } from \"../ui/React/Modal\";\n\nlet v2ModalOpen = false;\n\nexport const openV2Modal = (): void => {\n v2ModalOpen = true;\n};\n\nexport const V2Modal = (): React.ReactElement => {\n const [open, setOpen] = useState(v2ModalOpen);\n return (\n undefined}>\n Welcome to bitburner v2.0.0!{\" \"}\n While this version does not change the game a lot, it does have quite a few API breaks.{\" \"}\n \n A file was added to your home computer called V2_0_0_API_BREAK.txt and it is highly recommended you take a look\n at this file. It explains where most of the API break have occurred.\n {\" \"}\n \n You should also take a look at{\" \"}\n \n {\" \"}\n the migration guide\n {\" \"}\n as well as{\" \"}\n \n the changelog\n \n \n \n \n );\n};\n","export type ObjectValidator = {\n [key in keyof T]?: ParameterValidator;\n};\n\ninterface ParameterValidatorObject {\n default?: unknown;\n min?: number;\n max?: number;\n func?: (obj: Type, validator: ObjectValidator, key: Key) => void;\n}\ntype ParameterValidatorFunction = (obj: Type, key: Key) => void;\ntype ParameterValidator =\n | ParameterValidatorObject\n | ParameterValidatorFunction;\n\nexport function validateObject, Key extends keyof Type>(\n obj: Type,\n validator: ObjectValidator,\n): void {\n for (const key of Object.keys(validator) as Key[]) {\n const paramValidator = validator[key];\n if (paramValidator !== undefined) {\n if (typeof paramValidator === \"function\") {\n paramValidator(obj, key);\n } else if (paramValidator.func !== undefined) {\n paramValidator.func(obj, validator, key);\n } else {\n if (typeof obj[key] !== typeof paramValidator.default) {\n obj[key] = paramValidator.default as Type[Key];\n }\n if (typeof obj[key] === \"number\" && paramValidator.min !== undefined) {\n if (obj[key] < paramValidator.min) obj[key] = paramValidator.min as Type[Key];\n }\n if (typeof obj[key] === \"number\" && paramValidator.max !== undefined) {\n if (obj[key] > paramValidator.max) obj[key] = paramValidator.max as Type[Key];\n }\n }\n }\n }\n}\n\nexport function minMax(\n def: number,\n min: number,\n max: number,\n): (obj: Type, key: Key & keyof Type) => void {\n return (obj, key) => {\n if (typeof obj[key] !== \"number\") {\n obj[key] = def as unknown as Type[Key];\n return;\n }\n if ((obj[key] as unknown as number) < min) {\n obj[key] = min as unknown as Type[Key];\n }\n if ((obj[key] as unknown as number) > max) {\n obj[key] = max as unknown as Type[Key];\n }\n };\n}\n\nexport function oneOf(\n def: Value,\n options: Value[],\n): (obj: Type, key: Key & keyof Type) => void {\n return (obj, key) => {\n if (typeof obj[key] !== typeof def) {\n obj[key] = def as unknown as Type[Key];\n return;\n }\n if (!options.includes(obj[key] as unknown as Value)) {\n obj[key] = def as unknown as Type[Key];\n }\n };\n}\n\nexport function subsetOf(\n options: Value[],\n): (obj: Type, key: Key & keyof Type) => void {\n return (obj, key) => {\n if (typeof obj[key] !== \"object\" || !Array.isArray(obj[key])) {\n obj[key] = [] as unknown as Type[Key];\n return;\n }\n const validValues: Value[] = [];\n for (const value of obj[key] as unknown as Value[]) {\n if (options.includes(value)) validValues.push(value);\n }\n obj[key] = validValues as unknown as Type[Key];\n };\n}\n","/**\n * This is a component that implements a mathematical formula used commonly throughout the\n * game. This formula is (typically) used to calculate the effect that various statistics\n * have on a game mechanic. It looks something like:\n *\n * (stat ^ exponential factor) + (stat / linear factor)\n *\n * where the exponential factor is a number between 0 and 1 and the linear factor\n * is typically a relatively larger number.\n *\n * This formula ensures that the effects of the statistic that is being processed\n * has diminishing returns, but never loses its effectiveness as you continue\n * to raise it.\n */\nexport function calculateEffectWithFactors(n: number, expFac: number, linearFac: number): number {\n if (expFac <= 0 || expFac >= 1) {\n console.warn(`Exponential factor is ${expFac}. This is not an intended value for it`);\n }\n if (linearFac < 1) {\n console.warn(`Linear factor is ${linearFac}. This is not an intended value for it`);\n }\n\n return Math.pow(n, expFac) + n / linearFac;\n}\n","import { Truthy } from \"lodash\";\n\n/**\n * Returns the input array as a comma separated string.\n *\n * Does several things that Array.toString() doesn't do\n * - Adds brackets around the array\n * - Adds quotation marks around strings\n */\nexport function arrayToString(a: unknown[]): string {\n const vals: unknown[] = [];\n for (let i = 0; i < a.length; ++i) {\n let elem: unknown = a[i];\n if (Array.isArray(elem)) {\n elem = arrayToString(elem);\n } else if (typeof elem === \"string\") {\n elem = `\"${elem}\"`;\n }\n vals.push(elem);\n }\n\n return `[${vals.join(\", \")}]`;\n}\n\nexport function filterTruthy(input: T[]): Truthy[] {\n return input.filter(Boolean) as Truthy[];\n}\n","const n00dlePower =\n \"[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[]\" +\n \")[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(\" +\n \"!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]\" +\n \"+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+\" +\n \"[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]\" +\n \"+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+\" +\n \"[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[\" +\n \"])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!\" +\n \"+[]]+([][[]]+[])[+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+\" +\n \"[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[\" +\n \"])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!\" +\n \"![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[\" +\n \"!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+\" +\n \"[]+[!+[]+!+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[\" +\n \"+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[\" +\n \"!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]\" +\n \"+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+\" +\n \"[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]\" +\n \"+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[]\" +\n \")[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[\" +\n \"+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]\" +\n \"+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+\" +\n \"([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!\" +\n \"+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]]\" +\n \")[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])\" +\n \"[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[\" +\n \"]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!\" +\n \"![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+\" +\n \"[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[\" +\n \"]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[\" +\n \"]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[\" +\n \"]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[\" +\n \"]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]\" +\n \"])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+\" +\n \"!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]\" +\n \"+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[\" +\n \"!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]\" +\n \"+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[\" +\n \"])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+\" +\n \"(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!\" +\n \"+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+\" +\n \"[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+\" +\n \"!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]\" +\n \"]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(!\" +\n \"[]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]\" +\n \"]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[]\" +\n \")[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[\" +\n \"]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!\" +\n \"+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!!\" +\n \"[]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[\" +\n \"+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(\" +\n \"![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]\" +\n \"+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[]\" +\n \")[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[+!+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+\" +\n \"[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][(\" +\n \"[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+\" +\n \"[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[\" +\n \"]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!!\" +\n \"[]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(\" +\n \"![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]\" +\n \"]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!\" +\n \"![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(\" +\n \"![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[\" +\n \"])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+\" +\n \"[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[\" +\n \"])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!\" +\n \"![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[]\" +\n \")[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[\" +\n \"]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[\" +\n \"][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[\" +\n \"]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[]\" +\n \")[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]\" +\n \"+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!\" +\n \"+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]\" +\n \"]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+\" +\n \"[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]\" +\n \"]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+(\" +\n \"[][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[\" +\n \"+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[\" +\n \"+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+\" +\n \"[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[\" +\n \"]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[\" +\n \"]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+\" +\n \"(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[]\" +\n \")[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]\" +\n \"])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]]\" +\n \"(!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+(!\" +\n \"[]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[(![]+[])[!+[]+!+[]+!+[]]+(![]\" +\n \"+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]\" +\n \"]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]]\" +\n \"((+((+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+[+[\" +\n \"]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+!+[]]])+[])[!+[]+!+[]]+[+!+[]])+(![]+[])[+!+[]\" +\n \"]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]])()())[!+[]+!+[]+!+[]+[+[]]]+(+[]+[][(\" +\n \"[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+\" +\n \"[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[\" +\n \"]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!!\" +\n \"[]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(\" +\n \"![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]\" +\n \"]])[+!+[]+[+[]]]+(+[]+[][(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(!![]+[])[\" +\n \"+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]\" +\n \"+[])[!+[]+!+[]+!+[]]]()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!\" +\n \"![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![\" +\n \"]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]\" +\n \"+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[\" +\n \"])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]\" +\n \"+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+\" +\n \"[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]\" +\n \"+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+!+[]]+([\" +\n \"![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[!+[]+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[\" +\n \"])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(+[![]]+[+(+!+[]+(\" +\n \"!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(!![]+[][(![]\" +\n \"+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][\" +\n \"[]]+[])[+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[\" +\n \"]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+\" +\n \"[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+\" +\n \"!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]\" +\n \"+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(+(!+[]\" +\n \"+!+[]+[+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])\" +\n \"[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(\" +\n \"![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+\" +\n \"[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([\" +\n \"][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[\" +\n \"]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]\" +\n \"]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!\" +\n \"+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]\" +\n \"]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]\" +\n \"+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]\" +\n \"+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]\" +\n \"]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(!\" +\n \"[]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!\" +\n \"![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]]\" +\n \")+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[\" +\n \"+!+[]+[+!+[]]]+(!![]+[])[+[]]+(+(+!+[]+[+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(\" +\n \"![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(\" +\n \"[]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])\" +\n \"[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![\" +\n \"]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[\" +\n \"+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![\" +\n \"]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[]\" +\n \")[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[\" +\n \"])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[\" +\n \"!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+\" +\n \"[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[\" +\n \"+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!\" +\n \"+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[]\" +\n \")[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![\" +\n \"]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!\" +\n \"[]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!!\" +\n \"[]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]\" +\n \"]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]\" +\n \"]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![\" +\n \"]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[\" +\n \"]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(\" +\n \"![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(\" +\n \"!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[\" +\n \"]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]\" +\n \"+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+\" +\n \"[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])\" +\n \"[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]\" +\n \"+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+\" +\n \"[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]\" +\n \"+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(\" +\n \"![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!\" +\n \"+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])\" +\n \"[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[\" +\n \"])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]\" +\n \"+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+\" +\n \"[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()\" +\n \"+[])[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[\" +\n \"+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[\" +\n \"!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]\" +\n \"+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+\" +\n \"[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]\" +\n \"+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[]\" +\n \")[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[\" +\n \"+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]\" +\n \"+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+\" +\n \"([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!\" +\n \"+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]]\" +\n \")[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])\" +\n \"[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[\" +\n \"]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!\" +\n \"![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+\" +\n \"[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[\" +\n \"]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[\" +\n \"]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[\" +\n \"]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[\" +\n \"]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]\" +\n \"])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(\" +\n \"![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(\" +\n \"[][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[\" +\n \"+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+\" +\n \"!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[]\" +\n \"[(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]\" +\n \"+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]])()\";\n\nexport function N00dles(): void {\n // TODO: Too powerful, needs a nerf.\n eval(n00dlePower);\n}\n","/**\n * Adds a random offset to a number within a certain percentage\n * @example\n * // Returns between 95-105\n * addOffset(100, 5);\n * @example\n * // Returns between 63-77\n * addOffSet(70, 10);\n * @param midpoint The number to be the midpoint of the offset range\n * @param percentage The percentage (in a range of 0-100) to offset\n */\nexport function addOffset(midpoint: number, percentage: number): number {\n const maxPercent = 100;\n if (percentage < 0 || percentage > maxPercent) {\n return midpoint;\n }\n\n const offset: number = midpoint * (percentage / maxPercent);\n\n // Double the range to account for both sides of the midpoint.\n return midpoint + (Math.random() * (offset * 2) - offset);\n}\n","/** Represents the possible configuration values that can be provided when creating the progress bar text. */\ninterface IProgressBarConfiguration {\n /** Current progress, taken as a decimal (i.e. '0.6' to represent '60%') */\n progress?: number;\n\n /** Total number of ticks in progress bar. Preferably a factor of 100. */\n totalTicks?: number;\n}\n\n/** Represents concrete configuration values when creating the progress bar text. */\ninterface IProgressBarConfigurationMaterialized extends IProgressBarConfiguration {\n progress: number;\n totalTicks: number;\n}\n\n/**\n * Creates a graphical \"progress bar\"\n * e.g.: [||||---------------]\n * @param params The configuration parameters for the progress bar\n */\nexport function createProgressBarText(params: IProgressBarConfiguration): string {\n // Default values\n const defaultParams: IProgressBarConfigurationMaterialized = {\n progress: 0,\n totalTicks: 20,\n };\n\n const derived: IProgressBarConfigurationMaterialized = Object.assign({}, defaultParams, params);\n // Ensure it is 0..1\n derived.progress = Math.max(Math.min(derived.progress, 1), 0);\n\n // This way there is always at least one bar filled in...\n const bars: number = Math.max(Math.floor(derived.progress / (1 / derived.totalTicks)), 1);\n const dashes: number = Math.max(derived.totalTicks - bars, 0);\n\n // String.prototype.repeat isn't completely supported, but good enough for our purposes\n return `[${\"|\".repeat(bars)}${\"-\".repeat(dashes)}]`;\n}\n","// Function that generates a random gibberish string of length n\nconst chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\nexport function createRandomString(n: number): string {\n let str = \"\";\n\n for (let i = 0; i < n; ++i) {\n str += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return str;\n}\n","export function findEnumMember>(obj: T, value: string): T[keyof T] | undefined {\n const lowerValue = value.toLowerCase().replace(/ /g, \"\");\n for (const member of Object.values(obj) as T[keyof T][]) {\n if (lowerValue.includes(member.toLowerCase().replace(/ /g, \"\"))) return member;\n }\n}\n","import { dialogBoxCreate } from \"../../ui/React/DialogBox\";\n\ninterface IError {\n fileName?: string;\n lineNumber?: number;\n}\n\nexport const isIError = (v: unknown): v is IError => {\n if (typeof v !== \"object\" || v == null) return false;\n return Object.hasOwn(v, \"fileName\") && Object.hasOwn(v, \"lineNumber\");\n};\n\nexport function exceptionAlert(e: unknown): void {\n console.error(e);\n let msg = \"\";\n let file = \"UNKNOWN FILE NAME\";\n let line = \"UNKNOWN LINE NUMBER\";\n if (isIError(e)) {\n file = e.fileName ?? file;\n line = e.lineNumber?.toString() ?? line;\n } else {\n msg = String(e);\n }\n dialogBoxCreate(\n \"Caught an exception: \" +\n msg +\n \"

\" +\n \"Filename: \" +\n file +\n \"

\" +\n \"Line Number: \" +\n line +\n \"

\" +\n \"This is a bug, please report to game developer with this \" +\n \"message as well as details about how to reproduce the bug.

\" +\n \"If you want to be safe, I suggest refreshing the game WITHOUT saving so that your \" +\n \"save doesn't get corrupted\",\n true,\n );\n}\n","import { format } from \"date-fns\";\n\nexport function formatTime(fmt: string): string {\n try {\n return format(new Date(), fmt);\n } catch (e: unknown) {\n return \"format error\";\n }\n}\n","/** Function for getting a list of keys to use for saving an object\n * @param ctor the class constructor\n *\n * @param removedKeys Keys that exist on a default constructed member, but should not be saved.\n * These keys will just revert to default values on load.\n *\n * @param addedKeys Optional keys that do not exist on a default constructed member, but should be saved when present.\n */\nexport function getKeyList(\n ctor: new () => T,\n modifications?: { removedKeys?: readonly (keyof T)[]; addedKeys?: readonly (keyof T)[] },\n): readonly (keyof T)[] {\n const newObj = new ctor();\n const keySet = new Set(Object.getOwnPropertyNames(newObj)) as Set;\n modifications?.removedKeys?.forEach((key) => keySet.delete(key));\n modifications?.addedKeys?.forEach((key) => keySet.add(key));\n return [...keySet];\n}\n","import { getRandomInt } from \"./getRandomInt\";\n\n/**\n * Gets a random value in the range of a byte (0 - 255), or up to the maximum.\n * @param max The maximum value (up to 255).\n */\nexport function getRandomByte(max: number): number {\n // Technically 2^8 is 256, but the values are 0-255, not 1-256.\n const byteMaximum = 255;\n const upper: number = Math.max(Math.min(max, byteMaximum), 0);\n\n return getRandomInt(0, upper);\n}\n","/**\n * Gets a random integer bounded by the values passed in.\n * @param min The minimum value in the range.\n * @param max The maximum value in the range.\n */\nexport function getRandomInt(min: number, max: number): number {\n const lower: number = Math.min(min, max);\n const upper: number = Math.max(min, max);\n\n return Math.floor(Math.random() * (upper - lower + 1)) + lower;\n}\n","/** Returns a MM/DD HH:MM timestamp for the current time */\nexport function getTimestamp(): string {\n const d: Date = new Date();\n // A negative slice value takes from the end of the string rather than the beginning.\n const stringWidth = -2;\n const formattedHours: string = `0${d.getHours()}`.slice(stringWidth);\n const formattedMinutes: string = `0${d.getMinutes()}`.slice(stringWidth);\n const formattedSeconds: string = `0${d.getSeconds()}`.slice(stringWidth);\n\n return `${d.getMonth() + 1}/${d.getDate()} ${formattedHours}:${formattedMinutes}:${formattedSeconds}`;\n}\n","/**\n * Determines if the number is a power of 2\n * @param n The number to check.\n */\nexport function isPowerOfTwo(n: number): boolean {\n if (isNaN(n)) {\n return false;\n }\n\n if (n === 0) {\n return false;\n }\n\n // Disabling the bitwise rule because it's honestly the most efficient way to check for this.\n return (n & (n - 1)) === 0;\n}\n","/**\n * Checks that a variable is a valid number. A valid number\n * must be a \"number\" type and cannot be NaN\n */\nexport function isValidNumber(n: number): boolean {\n return typeof n === \"number\" && !isNaN(n);\n}\n","/** Keyboard key codes as returned by event.key */\nexport enum KEY {\n //SHIFT: 16, // Check by `&& event.shiftKey`\n //CTRL: 17, // Check by `&& event.ctrlKey`\n //ALT: 18, // Check by `&& event.altKey`\n ENTER = \"Enter\",\n ESC = \"Escape\",\n TAB = \"Tab\",\n SPACE = \" \",\n BACKSPACE = \"Backspace\",\n UP_ARROW = \"ArrowUp\",\n DOWN_ARROW = \"ArrowDown\",\n LEFT_ARROW = \"ArrowLeft\",\n RIGHT_ARROW = \"ArrowRight\",\n\n QUOTE = \"'\",\n DOUBLE_QUOTE = '\"',\n OPEN_BRACKET = \"[\",\n CLOSE_BRACKET = \"]\",\n LESS_THAN = \"<\",\n GREATER_THAN = \">\",\n OPEN_PARENTHESIS = \"(\",\n CLOSE_PARENTHESIS = \")\",\n OPEN_BRACE = \"{\",\n CLOSE_BRACE = \"}\",\n EQUAL = \"=\",\n\n PIPE = \"|\",\n DOT = \".\",\n FORWARD_SLASH = \"/\",\n HYPHEN = \"-\",\n HASH = \"#\",\n\n k0 = \"0\",\n k1 = \"1\",\n k2 = \"2\",\n k3 = \"3\",\n k4 = \"4\",\n k5 = \"5\",\n k6 = \"6\",\n k7 = \"7\",\n k8 = \"8\",\n k9 = \"9\",\n\n A = \"a\",\n B = \"b\",\n C = \"c\",\n D = \"d\",\n E = \"e\",\n F = \"f\",\n G = \"g\",\n H = \"h\",\n I = \"i\",\n J = \"j\",\n K = \"k\",\n L = \"l\",\n M = \"m\",\n N = \"n\",\n O = \"o\",\n P = \"p\",\n Q = \"q\",\n R = \"r\",\n S = \"s\",\n T = \"t\",\n U = \"u\",\n V = \"v\",\n W = \"w\",\n X = \"x\",\n Y = \"y\",\n Z = \"z\",\n}\n\n/** Keyboard key codes as returned by event.code */\nexport enum KEYCODE {\n //SHIFT: 16, // Check by `&& event.shiftKey`\n //CTRL: 17, // Check by `&& event.ctrlKey`\n //ALT: 18, // Check by `&& event.altKey`\n ENTER = \"Enter\",\n ESC = \"Escape\",\n TAB = \"Tab\",\n SPACE = \"Space\",\n BACKSPACE = \"Backspace\",\n UP_ARROW = \"ArrowUp\",\n DOWN_ARROW = \"ArrowDown\",\n LEFT_ARROW = \"ArrowLeft\",\n RIGHT_ARROW = \"ArrowRight\",\n\n BACKWARD_SLASH = \"Backslash\",\n BACKQUOTE = \"Backquote\",\n COMMA = \"Comma\",\n DOT = \"Period\",\n EQUAL = \"Equal\",\n FORWARD_SLASH = \"Slash\",\n HYPHEN = \"Minus\",\n SEMICOLON = \"Semicolon\",\n QUOTE = \"Quote\",\n\n k0 = \"Digit0\",\n k1 = \"Digit1\",\n k2 = \"Digit2\",\n k3 = \"Digit3\",\n k4 = \"Digit4\",\n k5 = \"Digit5\",\n k6 = \"Digit6\",\n k7 = \"Digit7\",\n k8 = \"Digit8\",\n k9 = \"Digit9\",\n\n A = \"KeyA\",\n B = \"KeyB\",\n C = \"KeyC\",\n D = \"KeyD\",\n E = \"KeyE\",\n F = \"KeyF\",\n G = \"KeyG\",\n H = \"KeyH\",\n I = \"KeyI\",\n J = \"KeyJ\",\n K = \"KeyK\",\n L = \"KeyL\",\n M = \"KeyM\",\n N = \"KeyN\",\n O = \"KeyO\",\n P = \"KeyP\",\n Q = \"KeyQ\",\n R = \"KeyR\",\n S = \"KeyS\",\n T = \"KeyT\",\n U = \"KeyU\",\n V = \"KeyV\",\n W = \"KeyW\",\n X = \"KeyX\",\n Y = \"KeyY\",\n Z = \"KeyZ\",\n}\n","/**\n * Rounds a number to two decimal places.\n * @param decimal A decimal value to trim to two places.\n */\nexport function roundToTwo(decimal: number): number {\n return Math.round(decimal * 100) / 100;\n}\n","import type { ScriptArg } from \"../../Netscript/ScriptArg\";\nimport type { ScriptFilePath } from \"../../Paths/ScriptFilePath\";\n\n// This needs to be high in the dependency graph, with few/no dependencies of\n// its own, since many key modules depend on it.\n\nexport type ScriptKey = string & { __type: \"ScriptKey\" };\n\n// The key used to lookup worker scripts in their map.\nexport function scriptKey(path: ScriptFilePath, args: ScriptArg[]): ScriptKey {\n // Asterisk is used as a delimiter because it' not a valid character in paths.\n return (path + \"*\" + JSON.stringify(args)) as ScriptKey;\n}\n\n// Returns a RegExp that can be used to find scripts with a path that fully\n// matches \"pattern\" in the scriptKey.\nexport function matchScriptPathExact(pattern: string) {\n // Must fully match pattern, starting at the beginning and ending with the\n // asterisk delimiter, which can't appear in script paths.\n return new RegExp(\"^\" + pattern + \"\\\\*\");\n}\n\n// Returns a RegExp that can be used to find scripts with a path that\n// matches \"pattern\" somewhere in the scriptKey.\nexport function matchScriptPathUnanchored(pattern: string) {\n // Don't let the match extend into the arguments part (script paths can't\n // include \"[\").\n return matchScriptPathExact(\"[^[]*\" + pattern + \"[^[]*\");\n}\n","// We can probably get rid of isString in favor of just checking typeof value===\"string\".\n// We are not and should not ever be using `new String()` for anything. Will remove in 2.3.1\n/**\n * Checks whether the value passed in can be considered a string.\n * @param value The value to check if it is a string.\n */\nexport function isString(value: unknown): value is string {\n return typeof value === \"string\" || value instanceof String;\n}\n\n/** Removes a single layer of matching single or double quotes, if present. */\nexport function trimQuotes(value: string): string {\n if (value.length < 2) return value;\n if (value.at(0) !== value.at(-1)) return value;\n if (value.at(0) !== \"'\" && value.at(0) !== '\"') return value;\n return value.substring(1, value.length - 1);\n}\n","// Various functions for asserting types.\n\n/** Function for providing custom error message to throw for a type assertion.\n * @param v: Value to assert type of\n * @param assertFn: Typechecking function to use for asserting type of v.\n * @param msgFn: Function to use to generate an error message if an error is produced. */\nexport function assert(\n v: unknown,\n assertFn: (v: unknown) => asserts v is T,\n msgFn: (type: string) => string,\n): asserts v is T {\n try {\n assertFn(v);\n } catch (e) {\n const type = typeof e === \"string\" ? e : \"unknown\";\n throw msgFn(type);\n }\n}\n\n/** Returns the friendlyType of v. arrays are \"array\" and null is \"null\". */\nexport function getFriendlyType(v: unknown): string {\n return v === null ? \"null\" : Array.isArray(v) ? \"array\" : typeof v;\n}\n\n//All assertion functions used here should return the friendlyType of the input.\n\n/** For non-objects, and for array/null, throws the friendlyType of v. */\nexport function objectAssert(v: unknown): asserts v is Partial> {\n const type = getFriendlyType(v);\n if (type !== \"object\") throw type;\n}\n\n/** For non-string, throws the friendlyType of v. */\nexport function stringAssert(v: unknown): asserts v is string {\n const type = getFriendlyType(v);\n if (type !== \"string\") throw type;\n}\n\n/** For non-array, throws the friendlyType of v. */\nexport function arrayAssert(v: unknown): asserts v is unknown[] {\n if (!Array.isArray(v)) throw getFriendlyType(v);\n}\n","import { AugmentationName } from \"@enums\";\nimport { PlayerOwnedAugmentation } from \"../Augmentation/PlayerOwnedAugmentation\";\nimport { Player } from \"@player\";\nimport { GetAllServers } from \"../Server/AllServers\";\nimport { resolveTextFilePath } from \"../Paths/TextFilePath\";\nimport { resolveScriptFilePath } from \"../Paths/ScriptFilePath\";\n\nconst detect: [string, string][] = [\n [\"getHackTime\", \"returns milliseconds\"],\n [\"getGrowTime\", \"returns milliseconds\"],\n [\"getWeakenTime\", \"returns milliseconds\"],\n [\"getActionTime\", \"returns milliseconds\"],\n [\"hackAnalyzePercent\", \"renamed 'hackAnalyze' and returns decimal\"],\n [\"hackChance\", \"renamed 'hackAnalyzeChance'\"],\n [\"basic.calculateSkill\", \"renamed 'skills.calculateSkill'\"],\n [\"basic.calculateExp\", \"renamed 'skills.calculateExp'\"],\n [\"basic.hackChance\", \"renamed 'hacking.hackChance'\"],\n [\"basic.hackExp\", \"renamed 'hacking.hackExp'\"],\n [\"basic.hackPercent\", \"renamed 'hacking.hackPercent'\"],\n [\"basic.growPercent\", \"renamed 'hacking.growPercent'\"],\n [\"basic.hackTime\", \"renamed 'hacking.hackTime'\"],\n [\"basic.growTime\", \"renamed 'hacking.growTime'\"],\n [\"basic.weakenTime\", \"renamed 'hacking.weakenTime'\"],\n [\"write\", \"needs to be awaited\"],\n [\"scp\", \"needs to be awaited\"],\n [\"sleep\", \"Can no longer be called simultaneously.\"],\n [\"hacking_skill\", \"renamed 'hacking'\"],\n [\"tryWrite\", \"renamed 'tryWritePort'\"],\n];\n\nconst changes: [RegExp, string][] = [\n [/ns.getHackTime/g, \"((...a)=>ns.getHackTime(...a)/1000)\"],\n [/ns.getGrowTime/g, \"((...a)=>ns.getGrowTime(...a)/1000)\"],\n [/ns.getWeakenTime/g, \"((...a)=>ns.getWeakenTime(...a)/1000)\"],\n [/ns.bladeburner.getActionTime/g, \"((...a)=>ns.bladeburner.getActionTime(...a)/1000)\"],\n [/ns.hackAnalyzePercent/g, \"((...a)=>ns.hackAnalyze(...a)*100)\"],\n [/ns.hackChance/g, \"ns.hackAnalyzeChance\"],\n [/ns.tryWrite/g, \"ns.tryWritePort\"],\n [/formulas.basic.calculateSkill/g, \"formulas.skills.calculateSkill\"],\n [/formulas.basic.calculateExp/g, \"formulas.skills.calculateExp\"],\n [/formulas.basic.hackChance/g, \"formulas.hacking.hackChance\"],\n [/formulas.basic.hackExp/g, \"formulas.hacking.hackExp\"],\n [/formulas.basic.hackPercent/g, \"formulas.hacking.hackPercent\"],\n [/formulas.basic.growPercent/g, \"formulas.hacking.growPercent\"],\n [/formulas.basic.hackTime/g, \"formulas.hacking.hackTime\"],\n [/formulas.basic.growTime/g, \"formulas.hacking.growTime\"],\n [/formulas.basic.weakenTime/g, \"formulas.hacking.weakenTime\"],\n];\nfunction hasChanges(code: string): boolean {\n for (const change of changes) {\n if (code.match(change[0])) return true;\n }\n return false;\n}\n\nfunction convert(code: string): string {\n const lines = code.split(\"\\n\");\n const out: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n const orig = lines[i];\n let line = lines[i];\n for (const change of changes) {\n line = line.replace(change[0], change[1]);\n }\n if (line != orig) {\n out.push(`// =============================== original line ===============================`);\n out.push(`/**`);\n out.push(` * ${orig}`);\n out.push(\" */\");\n out.push(`// =============================================================================`);\n }\n out.push(line);\n }\n code = out.join(\"\\n\");\n return code;\n}\n\nexport function AwardNFG(n = 1): void {\n const nf = Player.augmentations.find((a) => a.name === AugmentationName.NeuroFluxGovernor);\n if (nf) {\n nf.level += n;\n } else {\n const nf = new PlayerOwnedAugmentation(AugmentationName.NeuroFluxGovernor);\n nf.level = n;\n Player.augmentations.push(nf);\n }\n}\n\nexport interface IFileLine {\n file: string;\n line: number;\n content: string;\n}\n\nexport function v1APIBreak(): void {\n let txt = \"\";\n for (const server of GetAllServers()) {\n for (const change of detect) {\n const s: IFileLine[] = [];\n\n for (const script of server.scripts.values()) {\n const lines = script.code.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].includes(change[0])) {\n s.push({\n file: script.filename,\n line: i + 1,\n content: \"\",\n });\n }\n }\n }\n\n if (s.length === 0) continue;\n\n txt += `// Detected change ${change[0]}, reason: ${change[1]}\\n`;\n for (const fl of s) {\n txt += `${fl.file}:${fl.line}\\n`;\n }\n }\n }\n if (txt !== \"\") {\n const home = Player.getHomeComputer();\n const textPath = resolveTextFilePath(\"v1_DETECTED_CHANGES.txt\");\n if (!textPath) return console.error(\"Filepath unexpectedly failed to parse\");\n home.writeToTextFile(textPath, txt);\n }\n\n for (const server of GetAllServers()) {\n for (const script of server.scripts.values()) {\n if (!hasChanges(script.code)) continue;\n // Sanitize first before combining\n const oldFilename = resolveScriptFilePath(script.filename);\n const filename = resolveScriptFilePath(\"BACKUP_\" + oldFilename);\n if (!filename) {\n console.error(`Unexpected error resolving backup path for ${script.filename}`);\n continue;\n }\n server.writeToScriptFile(filename, script.code);\n script.code = convert(script.code);\n }\n }\n}\n","import { TextFilePath } from \"../Paths/TextFilePath\";\nimport { saveObject } from \"../SaveObject\";\nimport { Script } from \"../Script/Script\";\nimport { GetAllServers, GetServer } from \"../Server/AllServers\";\nimport { IFileLine } from \"./v1APIBreak\";\nimport { openV2Modal } from \"./V2Modal\";\n\nconst singularity = [\n \"applyToCompany\",\n \"b1tflum3\",\n \"checkFactionInvitations\",\n \"commitCrime\",\n \"connect\",\n \"createProgram\",\n \"destroyW0r1dD43m0n\",\n \"donateToFaction\",\n \"getAugmentationBasePrice\",\n \"getAugmentationCost\",\n \"getAugmentationPrereq\",\n \"getAugmentationPrice\",\n \"getAugmentationRepReq\",\n \"getAugmentationsFromFaction\",\n \"getAugmentationStats\",\n \"getCompanyFavor\",\n \"getCompanyFavorGain\",\n \"getCompanyRep\",\n \"getCrimeChance\",\n \"getCrimeStats\",\n \"getCurrentServer\",\n \"getDarkwebProgramCost\",\n \"getDarkwebPrograms\",\n \"getFactionFavor\",\n \"getFactionFavorGain\",\n \"getFactionRep\",\n \"getOwnedAugmentations\",\n \"getOwnedSourceFiles\",\n \"getUpgradeHomeCoresCost\",\n \"getUpgradeHomeRamCost\",\n \"goToLocation\",\n \"gymWorkout\",\n \"hospitalize\",\n \"installAugmentations\",\n \"installBackdoor\",\n \"isBusy\",\n \"isFocused\",\n \"joinFaction\",\n \"manualHack\",\n \"purchaseAugmentation\",\n \"purchaseProgram\",\n \"purchaseTor\",\n \"quitJob\",\n \"setFocus\",\n \"softReset\",\n \"stopAction\",\n \"travelToCity\",\n \"universityCourse\",\n \"upgradeHomeCores\",\n \"upgradeHomeRam\",\n \"workForCompany\",\n \"workForFaction\",\n];\n\nconst getPlayerFields = [\n \"workChaExpGained\",\n \"currentWorkFactionName\",\n \"workDexExpGained\",\n \"workHackExpGained\",\n \"createProgramReqLvl\",\n \"workStrExpGained\",\n \"companyName\",\n \"crimeType\",\n \"workRepGained\",\n \"workChaExpGainRate\",\n \"workType\",\n \"workStrExpGainRate\",\n \"isWorking\",\n \"workRepGainRate\",\n \"workDefExpGained\",\n \"currentWorkFactionDescription\",\n \"workHackExpGainRate\",\n \"workAgiExpGainRate\",\n \"workDexExpGainRate\",\n \"workMoneyGained\",\n \"workMoneyLossRate\",\n \"workMoneyGainRate\",\n \"createProgramName\",\n \"workDefExpGainRate\",\n \"workAgiExpGained\",\n \"className\",\n \"hacking\",\n \"strength\",\n \"defense\",\n \"dexterity\",\n \"agility\",\n \"charisma\",\n \"intelligence\",\n \"hacking_exp\",\n \"strength_exp\",\n \"defense_exp\",\n \"dexterity_exp\",\n \"agility_exp\",\n \"charisma_exp\",\n \"intelligence_exp\",\n \"hp\",\n \"max_hp\",\n \"hasWseAccount\",\n \"hasTixApiAccess\",\n \"has4SData\",\n \"has4SDataTixApi\",\n];\n\nconst mults = [\n \"hacking_chance_mult\",\n \"hacking_speed_mult\",\n \"hacking_money_mult\",\n \"hacking_grow_mult\",\n \"hacking_mult\",\n \"hacking_exp_mult\",\n \"strength_mult\",\n \"strength_exp_mult\",\n \"defense_mult\",\n \"defense_exp_mult\",\n \"dexterity_mult\",\n \"dexterity_exp_mult\",\n \"agility_mult\",\n \"agility_exp_mult\",\n \"charisma_mult\",\n \"charisma_exp_mult\",\n \"hacknet_node_money_mult\",\n \"hacknet_node_purchase_cost_mult\",\n \"hacknet_node_ram_cost_mult\",\n \"hacknet_node_core_cost_mult\",\n \"hacknet_node_level_cost_mult\",\n \"company_rep_mult\",\n \"faction_rep_mult\",\n \"work_money_mult\",\n \"crime_success_mult\",\n \"crime_money_mult\",\n \"bladeburner_max_stamina_mult\",\n \"bladeburner_stamina_gain_mult\",\n \"bladeburner_analysis_mult\",\n \"bladeburner_success_chance_mult\",\n];\n\ninterface IRule {\n matchJS: RegExp;\n matchScript?: RegExp;\n reason: string;\n offenders: IFileLine[];\n}\n\nexport const v2APIBreak = () => {\n const home = GetServer(\"home\");\n if (!home) throw new Error(\"'home' server was not found.\");\n const rules: IRule[] = [\n {\n matchJS: /ns\\.workForCompany/g,\n matchScript: /workForCompany/g,\n reason: \"workForCompany argument companyName is now not-optional.\",\n offenders: [],\n },\n {\n matchJS: /ns\\.getScriptExpGain/g,\n matchScript: /getScriptExpGain/g,\n reason: \"getScriptExpGain with 0 argument no longer returns the sum of all scripts. Use getTotalScriptExpGain\",\n offenders: [],\n },\n {\n matchJS: /ns\\.getScriptExpGain/g,\n matchScript: /getScriptExpGain/g,\n reason: \"getScriptIncome with 0 argument no longer returns the sum of all scripts. Use getTotalScriptIncome\",\n offenders: [],\n },\n {\n matchJS: /ns\\.scp/g,\n matchScript: /scp/g,\n reason:\n \"scp arguments were switch, it is now scp(files, destination, optionally_source). If you were using 2 argument (not 3) this doesn't affect you.\",\n offenders: [],\n },\n {\n matchJS: /ns\\.stock\\.buy/g,\n matchScript: /stock\\.buy/g,\n reason: \"buy is a very common word so in order to avoid ram costs it was renamed ns.stock.buyStock\",\n offenders: [],\n },\n {\n matchJS: /ns\\.stock\\.sell/g,\n matchScript: /stock\\.sell/g,\n reason: \"sell is a very common word so in order to avoid ram costs it was renamed ns.stock.sellStock\",\n offenders: [],\n },\n {\n matchJS: /ns\\.stock\\.short/g,\n matchScript: /stock\\.short/g,\n reason: \"short is a very common word so in order to avoid ram costs it was renamed ns.stock.buyShort\",\n offenders: [],\n },\n {\n matchJS: /ns\\.corporation\\.bribe/g,\n matchScript: /corporation\\.bribe/g,\n reason: \"bribe no longer allows you to give shares of the corporation, only money\",\n offenders: [],\n },\n ];\n\n for (const fn of singularity) {\n rules.push({\n matchJS: new RegExp(`ns.${fn}`, \"g\"),\n reason: `ns.${fn} was moved to ns.singularity.${fn}`,\n offenders: [],\n });\n }\n\n for (const mult of mults) {\n rules.push({\n matchJS: new RegExp(mult, \"g\"),\n reason: `ns.getPlayer().${mult} was moved to ns.getPlayer().mults.${mult.slice(0, mult.length - 5)}`,\n offenders: [],\n });\n }\n\n for (const f of getPlayerFields) {\n rules.push({\n matchJS: new RegExp(f, \"g\"),\n reason: `The work system is completely reworked and ns.getPlayer().${f} no longer exists. This data is likely available inside ns.getPlayer().currentWork, skills, exp, or hp`,\n offenders: [],\n });\n }\n // V31/2.3.0 conversion of scripts to map has already occurred.\n for (const script of home.scripts.values()) {\n processScript(rules, script);\n }\n\n home.writeToTextFile(\"V2_0_0_API_BREAK.txt\" as TextFilePath, formatRules(rules));\n openV2Modal();\n\n for (const server of GetAllServers()) {\n server.runningScriptMap = new Map();\n }\n saveObject.exportGame();\n};\n\nconst formatOffenders = (offenders: IFileLine[]): string => {\n const files: Record = {};\n for (const off of offenders) {\n const current = files[off.file] ?? [];\n current.push(off);\n files[off.file] = current;\n }\n\n let txt = \"\";\n for (const file in files) {\n txt += \"\\t\" + file + \"\\n\";\n for (const fileline of files[file]) {\n txt += `\\t\\tLine ${fileline.line} ${fileline.content.trim()}\\n`;\n }\n }\n return txt;\n};\n\nconst formatRules = (rules: IRule[]): string => {\n let txt =\n \"This file contains the list of potential API break. A pattern was used to look through all your files and note the spots where you might have a problem. Not everything here is broken.\";\n for (const rule of rules) {\n if (rule.offenders.length === 0) continue;\n txt += String(rule.matchJS) + \"\\n\";\n txt += rule.reason + \"\\n\\n\";\n txt += formatOffenders(rule.offenders);\n txt += \"\\n\\n\";\n }\n return txt;\n};\n\nconst processScript = (rules: IRule[], script: Script) => {\n const lines = script.code.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n for (const rule of rules) {\n const line = lines[i];\n const match = script.filename.endsWith(\".script\") ? rule.matchScript ?? rule.matchJS : rule.matchJS;\n if (line.match(match)) {\n rule.offenders.push({\n file: script.filename,\n line: i + 1,\n content: line,\n });\n }\n }\n }\n};\n","export default \"# BitNodes\\n\\nA BitNode is an important part of the game's storyline.\\nIn the game, you discover what BitNodes are by following the trail of clues left by the mysterious `jump3r`.\\n\\n## What is a BitNode\\n\\nA BitNode is the complex simulated reality in which you reside.\\nBy following the messages from `jump3r`, you discover that humanity was enslaved by an advanced alien race, called the Enders, using virtual simulations that trapped the minds of humans.\\n\\nHowever, the Enders didn't just create a single virtual reality to enslave humans, but many different simulations.\\nIn other words, there are many different BitNodes that exist.\\nThese BitNodes are very different from each other.\\n\\njump3r tells you that the only hope for humanity is to destroy all of these BitNodes.\\nTherefore, the end goal for the player is to enter and then destroy each BitNode.\\n\\nDestroying a BitNode resets most of the player's progress but grants the player a powerful second-tier persistent upgrade called a [Source-File](sourcefiles.md).\\nDifferent BitNodes grant different [Source-Files](sourcefiles.md).\\n\\nEach BitNode has unique characteristics that are related to varying backstories.\\nFor example, in one BitNode the world is in the middle of a financial catastrophe with a collapsing market.\\nIn this BitNode, most forms of income such as working at a [Company](../basic/companies.md) or [Hacknet Nodes](../basic/hacknet_nodes.md) are significantly less profitable.\\n[Servers](../basic/servers.md) have less money on them and lowered growth rates, but it is easier to lower their security level using the `weaken` function.\\n\\nFurthermore, some BitNodes introduce new content and mechanics.\\nFor example, there is one BitNode that grants access to the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md).\\nThere is another BitNode in which you can manage a [Gang](gang.md) to earn money and [Reputation](../basic/reputation.md).\\n\\n## How to destroy a BitNode\\n\\nInitially, the only way to destroy a BitNode is to join Daedalus.\\nFrom Daedalus, the player can obtain an [Augmentation](../basic/augmentations.md) called `The Red Pill`, which doesn't cost any money but does require a good amount of [Faction](../basic/factions.md) [Reputation](../basic/reputation.md).\\n\\nAfter installing `The Red Pill`, the player must search for and then manually `hack` a server called `w0r1d_d43m0n`.\\nThis server requires a hacking level of `3000`, sometimes more, in order to successfully hack it.\\nThis will destroy the player's current BitNode.\\n\\nThere is a second method of destroying a BitNode, but it must be unlocked by first destroying BitNode-6 or BitNode-7 ([Bladeburners](bladeburners.md)).\\n\\nWhen the player destroys a BitNode, most of their progress will be reset.\\nThis includes things such as [Augmentations](../basic/augmentations.md) and [RAM](../basic/ram.md) upgrades on the home computer.\\nThe only things that will persist through destroying BitNodes are:\\n\\n- [Source-Files](sourcefiles.md)\\n- [Scripts](../basic/scripts.md) on the home computer\\n- [Intelligence](intelligence.md)\\n\";","export default \"# Bladeburners\\n\\nPLACEHOLDER\\n\";","export default \"# Corporations\\n\\nPLACEHOLDER\\n\";","export default \"# Gang\\n\\nManaging a gang can be very rewarding. By rising above all other gangs you get access to almost all augmentations in the game.\\n\\nPLACEHOLDER\\n\";","export default \"# Grafting\\n\\nGrafting is an experimental process through which you can obtain the benefits of [Augmentations](../basic/augmentations.md), without needing to reboot your body.\\n\\nGrafting can be done at VitaLife in New Tokyo, where you'll find a shady researcher with questionable connections.\\nFrom there, you can spend a sum of money to begin grafting [Augmentations](../basic/augmentations.md).\\nThis will take some time.\\nWhen done, the [Augmentation](../basic/augmentations.md) will be applied to your character without needing to install.\\n\\nBe warned, some who have tested grafting have reported an unidentified malware.\\nDubbed `Entropy`, this virus seems to grow in potency as more [Augmentations](../basic/augmentations.md) are grafted, causing unpredictable affects to the victim.\\n\\nNote that when grafting an [Augmentation](../basic/augmentations.md), cancelling will **not** save your progress, and the money spent will **not** be returned.\\n\";","export default \"# Hacknet Servers\\n\\nThese are a very powerful upgrade to [Hacknet Nodes](../basic/hacknet_nodes.md).\\nInstead of producing money, the Hacknet Servers produce `hashes`.\\nThis currency can be exchanged for a variety of upgrades that boost most other mechanics of the game.\\n\\nThey can also be used to run scripts on.\\nHowever, this reduces the amount of `hash` produced.\\n\";","export default \"# Intelligence\\n\\nIntelligence is a stat that is unlocked by having [Source-File 5](sourcefiles.md) (i.e. Destroying [BitNode-5](bitnodes.md)).\\n\\nIntelligence is unique because it is permanent and persistent.\\nIt never gets reset back to 1.\\nHowever, gaining Intelligence experience is extremely slow.\\nIt is a stat that gradually builds up as you continue to play the game.\\n\\nIntelligence will boost your production for many actions in the game, including:\\n\\n- [Hacking](../basic/hacking.md)\\n- [Infiltration](../basic/infiltration.md)\\n- [Crime](../basic/crimes.md) success rate\\n- [Bladeburner](bladeburners.md) actions\\n- [Reputation](../basic/reputation.md) gain for [Companies](../basic//companies.md) & [Factions](../basic/factions.md)\\n- [Augmentation](../basic/augmentations.md) [Grafting](grafting.md) speed\\n\";","export default \"# Sleeves\\n\\nWhen VitaLife unveiled their Persona Core technology that allowed people to digitize and transfer their consciousness into other vessels, human bodies became nothing more than 'sleeves' for the human consciousness.\\nThis technology thus became known as \\\"Sleeve technology\\\".\\n\\nSleeve technology unlocks two different gameplay features:\\n\\n- Duplicate Sleeves\\n- [Grafting](grafting.md)\\n\\nSleeve technology is unlocked in [BitNode-10](bitnodes.md).\\n\\n## Duplicate Sleeves\\n\\nDuplicate Sleeves are MK-V Synthoids (synthetic androids) into which your consciousness has been copied.\\nIn other words, these Synthoids contain a perfect duplicate of your mind.\\n\\nDuplicate Sleeves are essentially clones which you can use to perform work-type actions, such as working for a [Company](../basic/companies.md) / [Faction](../basic/factions.md) or committing a [Crime](../basic/crimes.md).\\nWhen sleeves perform these tasks, they will earn money, experience, and [Reputation](../basic/reputation.md).\\n\\nSleeves are their own individuals, which means they each have their own experience and stats.\\n\\nWhen a sleeve earns experience, it earns experience for itself, the player's original consciousness, as well as all of the player's other sleeves.\\n\\nDuplicate Sleeves are **not** reset when installing [Augmentations](../basic/augmentations.md), but they are reset when switching [BitNodes](bitnodes.md).\\n\\n## Obtaining Duplicate Sleeves\\n\\nThere are two methods of obtaining Duplicate Sleeves:\\n\\n- Destroy [BitNode-10](bitnodes.md).\\n Each completion gives you one additional Duplicate Sleeve.\\n- Purchase Duplicate Sleeves from The Covenant.\\n This is only available in [BitNode-10](bitnodes.md).\\n Sleeves purchased this way are **permanent** (they persist through [BitNodes](bitnodes.md)).\\n You can purchase up to 5 Duplicate Sleeves from The Covenant.\\n\\n## Synchronization\\n\\nSynchronization is a measure of how aligned your consciousness is with that of your Duplicate Sleeves.\\nIt is a numerical value between `1` and `100`, and it affects how much experience is earned when the sleeve is performing a task.\\n\\nSynchronization can be increased by assigning sleeves to the `Synchronize` task.\\n\\n## Sleeve Shock\\n\\nSleeve shock is a measure of how much trauma the sleeve has due to being placed in a new body.\\nIt is a numerical value between `0` and `100`, where `100` indicates full shock and `0` indicates no shock.\\nShock affects the amount of experience earned by the sleeve.\\n\\nSleeve shock slowly decreases over time.\\nYou can further increase the rate at which it decreases by assigning sleeves to the `Shock Recovery` task.\\n\\nLet `X` be the sleeve's shock and `Y` be the sleeve's synchronization.\\nWhen the sleeve earns experience by performing a task, the sleeve gains `X%` of the amount of experience normally earned by the task.\\nThe player’s original host consciousness and all of the player's other sleeves earn `Y%` of the experience that the sleeve gained, or `X\\\\*Y %` of the normal experience amount.\\n\\n## Augmentations\\n\\nYou can purchase [Augmentations](../basic/augmentations.md) for your Duplicate Sleeves.\\nIn order to do this, the sleeve's shock must be at `0`.\\nAny [Augmentation](../basic/augmentations.md) that is currently available to you through a faction is also available for your Duplicate Sleeves.\\nThere are a few [Augmentations](../basic/augmentations.md), such as NeuroFlux Governor and [Bladeburner](bladeburners.md)-specific ones, that cannot be purchased for a Duplicate Sleeve.\\n\\nWhen you purchase an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve, it is instantly installed.\\nWhen this happens, the sleeve's stats are instantly reset back to 0, similar to when you normally install [Augmentations](../basic/augmentations.md).\\n\\nThe cost of purchasing an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve is **not** affected by how many [Augmentations](../basic/augmentations.md) you have purchased for yourself, and vice versa.\\n\\n## Memory\\n\\nSleeve memory dictates what a sleeve's synchronization will be when it is reset by switching [BitNodes](bitnodes.md).\\nFor example, if a sleeve has a memory of `10`, then when you switch [BitNodes](bitnodes.md) its synchronization will initially be set to `10`, rather than 1.\\n\\nMemory can only be increased by purchasing upgrades from The Covenant.\\nJust like the ability to purchase additional sleeves, this is only available in [BitNode-10](bitnodes.md).\\n\\nMemory is a persistent stat, meaning it never gets reset back to `1`.\\nThe maximum possible value for a sleeve's memory is `100`.\\n\\nBuying memory has no instant affect on synchronization - memory affects only the starting synchronization upon entering a [BitNode](bitnodes.md).\\n\";","export default \"# Source-Files\\n\\nSource-Files are a type of persistent upgrade that is more powerful than [Augmentations](../basic/augmentations.md).\\nSource-Files are received by destroying a [Bitnode](bitnodes.md).\\nThere are many different [BitNodes](bitnodes.md) in the game and each [BitNode](bitnodes.md) will grant a different Source-File when it is destroyed.\\n\\nA Source-File can be upgraded by destroying its corresponding [BitNode](bitnodes.md) a second or third time (playing through that [BitNode](bitnodes.md) again).\\nIt can be upgraded to a maximum of level 3, with the exception of Source-File 12, which has no hard limit.\\n\";","export default \"# Stanek\\n\\nAllison is a bit crazy.\\nBut her special [Augmentation](../basic/augmentations.md) is very useful despite its ~~bugs~~ features.\\nThe Gift consists of a grid of squares in which tetris-like pieces called fragments can be placed.\\nEach fragment boost a different player multiplier.\\nHowever, the fragments are not very powerful by themselves.\\n\\nTo increase the power of a fragment, the `ns.stanek.charge()` function needs to be called.\\nMore threads means more power.\\n\\nThere are also special fragments called booster fragments which increase the power of the fragment it touches.\\n\";","export default \"# Augmentations\\n\\nAdvances in science and medicine have led to powerful new technologies that allow people to augment themselves beyond normal human capabilities.\\nThere are many different types of Augmentations, ranging from cybernetic to genetic to biological.\\nAcquiring these Augmentations enhances the user's physical and mental faculties.\\n\\nAugmentations provide persistent upgrades in the form of multipliers.\\nThese multipliers apply to a wide variety of things such as stats, experience gain, and [hacking](hacking.md), just to name a few.\\nThe effects of Augmentations stack multiplicatively.\\nYour multipliers can be viewed in the `Character` pages.\\n\\n## How to acquire Augmentations\\n\\nBecause of how powerful Augmentations are, the technology behind them is kept private and secret by the corporations and organizations that create them.\\nTherefore, the only way for the player to obtain Augmentations is through [Factions](factions.md).\\nAfter joining a [Faction](factions.md) and earning enough [Reputation](reputation.md) in it, you will be able to purchase its Augmentations.\\nDifferent [Factions](factions.md) offer different Augmentations.\\nAugmentations must be purchased in order to be installed, and they are fairly expensive.\\nThey also require [Reputation](reputation.md) with a [Faction](factions.md) before they will let you purchase their Augmentations.\\n\\n## Installing Augmentations\\n\\nYou will not gain the benefits of your purchased Augmentations until you install them.\\nYou can choose to install Augmentations through the `Augmentations` menu tab, found under `Character`.\\n\\nUnfortunately, installing Augmentations has side effects.\\nYou will lose most of the progress you've made, including your skills, stats, and money.\\nYou will have to start over, but you will have all of the Augmentations you have installed to help you progress.\\nThis is the game's \\\"soft reset\\\" or \\\"prestige\\\" mechanic.\\n\\nTo summarize, here is a list of everything you will **LOSE** when you install an Augmentation:\\n\\n- Stats/Skills\\n- Money\\n- [Scripts](scripts.md) on all [servers](servers.md) EXCEPT your home computer\\n- Purchased [servers](servers.md)\\n- [Hacknet Nodes](hacknet_nodes.md)\\n- [Company](companies.md) / [Faction](factions.md) [Reputation](reputation.md), but you gain [Favor](reputation.md).\\n- Jobs and [Faction](factions.md) memberships\\n- Programs\\n- [Stocks](stockmarket.md)\\n- TOR router\\n\\nHere is everything you will **KEEP** when you install an Augmentation:\\n\\n- Every Augmentation you have previously installed\\n- [Scripts](scripts.md) on your home computer\\n- [RAM](ram.md) / Core Upgrades on your home computer\\n- [World Stock Exchange account](stockmarket.md) and [TIX API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md) Access\\n\\n## Purchasing Multiple Augmentations\\n\\nYou do not have to install an Augmentation right after you purchase it.\\nYou can purchase as many Augmentations as you'd like before you choose to install them.\\nWhen you install your purchased Augmentations they will **ALL** get installed at once.\\n\\nThere are a few drawbacks to this, however.\\nFirst, obviously, you won't gain the benefits of your purchased Augmentations until after you install them.\\nSecond, purchasing multiple Augmentations before installing them will cause the Augmentations to get progressively more expensive.\\nWhen you purchase an Augmentation, the price of purchasing another Augmentation doubles.\\nThis multiplier stacks for each Augmentation you purchase.\\nOnce you install your purchased Augmentations, their costs are reset back to the original prices.\\nYou can only purchase each augmentation once, with the exception of `NeuroFlux Governor`, which can be purchased infinitely at increasing cost.\\n\";","export default \"# Coding Contracts\\n\\nCoding Contracts are a mechanic that lets players earn rewards in exchange for solving programming problems.\\n\\nCoding Contracts are files with the `.cct` extension.\\nThey can be accessed through the [Terminal](terminal.md) or through [Scripts](scripts.md) using the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\\n\\nEach contract has a limited number of attempts.\\nIf you provide the wrong answer too many times and exceed the number of attempts, the contract will self destruct (delete itself).\\n\\nCurrently, Coding Contracts are randomly generated and spawned over time.\\nThey can appear on any [server](servers.md) (including your home computer), except for your purchased [servers](servers.md).\\n\\n## Running in Terminal\\n\\nTo run a Coding Contract in the [Terminal](terminal.md), simply use the `run` command:\\n\\n $ run some-contract.cct\\n\\nDoing this will bring up a popup.\\nThe popup will display the contract's problem, the number of attempts remaining, and an area to provide an answer.\\n\\n## Interacting through Scripts\\n\\nSee the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\\nInteracting with Coding Contracts via the [Terminal](terminal.md) can be tedious the more contracts you solve.\\nConsider using the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) to automate various aspects of your solution.\\nFor example, some contracts have long solutions while others have even longer solutions.\\nYou might want to use the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) to automate the process of submitting your solution rather than copy and paste a long solution into an answer box.\\n\\nHowever, using the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) comes at a cost.\\nLike most functions in other APIs, each function in the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) has a RAM cost.\\nDepending on which function you use, the initial [RAM](ram.md) on your home server might not be enough to allow you to use various [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) functions.\\nPlan on upgrading the [RAM](ram.md) on your home server if you want to use the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\\n\\n## Submitting Solutions\\n\\nDifferent contract problem types will require different types of solutions.\\nSome may be numbers, others may be strings or arrays.\\nIf a contract asks for a specific solution format, then use that.\\nOtherwise, follow these rules when submitting solutions:\\n\\n- String-type solutions should **not** have quotation marks surrounding the string (unless specifically asked for).\\n Only quotation marks that are part of the actual string solution should be included.\\n- Array-type solutions should be submitted with each element in the array separated by commas.\\n Brackets are optional.\\n For example, both of the following are valid solution formats:\\n - `1,2,3`\\n - `[1,2,3]`\\n- If the solution is a multidimensional array, then all arrays that are not the outer-most array DO require the brackets.\\n For example, an array of arrays can be submitted as one of the following:\\n - `[1,2],[3,4]`\\n - `[[1,2],[3,4]]`\\n\\nNumeric solutions should be submitted normally, as expected\\n\\n## Rewards\\n\\nThere are currently four possible rewards for solving a Coding Contract:\\n\\n- [Faction](factions.md) [Reputation](reputation.md) for a specific [Faction](factions.md)\\n- [Faction](factions.md) [Reputation](reputation.md) for all [Factions](factions.md) that you are a member of\\n- [Company](companies.md) [Reputation](reputation.md) for a specific [Company](companies.md)\\n- Money\\n\\nThe `amount` of the reward varies based on the difficulty of the problem posed by the Coding Contract.\\nThere is no way to know what a Coding Contract's exact reward will be until it is solved.\\n\\n## Notes\\n\\n- The `scp` [Terminal](terminal.md) command does not work on Coding Contracts\\n\";","export default \"# Companies\\n\\nWhen exploring the [World](world.md), you can visit various companies.\\nAt these companies, you can apply for jobs.\\n\\nWorking a job lets you earn money, experience, and [Reputation](reputation.md) with that company.\\n\\nWhile working for a company, you can click `Do something else simultaneously` to be able to do things while you continue to work in the background.\\nThere is a 20% penalty to the related gains.\\nClicking the `Focus` button under the overview will return you to the current work.\\n\\nIf you've been hired to do a job you can click that `Apply for X Job` button again to get a promotion if you meet the requirements.\\nYou can see the requirements by hovering your cursor over the button.\\nHigher positions give increased rewards.\\n\";","export default \"# Crimes\\n\\nCommitting crimes is an active gameplay mechanic that allows the player to train their [Stats](stats.md) and potentially earn money.\\nThe player can attempt to commit crimes by visiting `The Slums` through the `City` tab (Alt + w).\\n`The Slums` is available in every city.\\n\\n## Basic Mechanics\\n\\nWhen you visit `The Slums` you will see a list of buttons that show all of the available crimes.\\nSimply select one of the options to begin attempting that crime.\\nAttempting to commit a crime takes a certain amount of time.\\nThis time varies between crimes.\\n\\nWhile doing crimes, you can click `Do something else simultaneously` to be able to do things while you continue to do crimes in the background.\\nThere is a 20% penalty to the related gains.\\nClicking the `Focus` button under the overview will return you to the current task.\\n\\nCrimes are not always successful.\\nYour rate of success is determined by your [Stats](stats.md) and [Augmentations](augmentations.md).\\nThe odds can be seen on the crime-selection page.\\nIf you are unsuccessful at committing a crime you will gain EXP, but you will not earn money.\\nIf you are successful at committing the crime you will gain extra EXP (4x of what an unsuccessful attempt would give) and earn money.\\n\\nHarder crimes are typically more profitable, and also give more EXP.\\n\";","export default \"# Factions\\n\\nThroughout the game you may receive invitations from factions.\\nThere are many different factions, and each faction has different criteria for determining its potential members.\\nJoining a faction and furthering its cause is crucial to progressing in the game and unlocking endgame content.\\n\\nIt is possible to join multiple factions if you receive invitations from them.\\nHowever, note that joining a faction may prevent you from joining other rival factions.\\n(Don't worry, this usually isn't the case.\\nAlso, it would only be temporary since resetting the game by installing [Augmentations](augmentations.md) will clear all your factions)\\n\\nThe `Factions` link on the menu brings up a list of all factions that you have joined.\\nYou can select a Faction on this list to go to that Faction page.\\nThis page displays general information about the Faction and also lets you perform work for the faction.\\nWorking for a Faction is similar to working for a [Company](companies.md) except that you don't get paid a salary.\\nYou will only earn [Reputation](reputation.md) in your Faction and train your [Stats](stats.md).\\n\\nEarning [Reputation](reputation.md) for a Faction unlocks powerful [Augmentations](augmentations.md).\\nPurchasing and installing these [Augmentations](augmentations.md) will upgrade your abilities.\\nThe [Augmentations](augmentations.md) that are available to unlock vary from Faction to Faction.\\n\";","export default \"# Hacking\\n\\nIn the year 2077, currency has become digital and decentralized.\\nPeople and corporations store their money on [servers](servers.md).\\nBy hacking these [servers](servers.md), you can steal their money and gain experience.\\n\\n## Gaining Root Access\\n\\nThe first step to hacking a [server](servers.md) is to gain root access to that [server](servers.md).\\nThis can be done using the `NUKE.exe` virus.\\nYou start the game with a copy of the `NUKE.exe` virus on your home computer.\\nThe `NUKE.exe` virus attacks the target [server](servers.md)'s open ports using buffer overflow exploits.\\nWhen successful, you are granted root administrative access to the machine.\\n\\nIn order for the `NUKE.exe` virus to succeed, the target [server](servers.md) needs to have enough open ports.\\nSome [servers](servers.md) have no security and will not need any ports opened.\\nSome will have very high security and will need many ports opened.\\nIn order to open ports on another [server](servers.md), you will need to run programs that attack the [server](servers.md) to open specific ports.\\nThese programs can be coded once your hacking skill gets high enough, or they can be purchased if you can find a seller.\\n\\n**There are two ways to execute port-opening programs and the NUKE virus:**\\n\\n- Connect to the target [server](servers.md) through the [Terminal](terminal.md) and use the `run` command: `$ run [programName]`\\n- Use a function:\\n - `nuke`\\n - `brutessh`\\n - `ftpcrack`\\n - `relaysmtp`\\n - `httpworm`\\n - `sqlinject`\\n\\n**There are two ways to determine how many ports need to be opened\\non a [server](servers.md) in order to successfully NUKE it:**\\n\\n- Connect to that [server](servers.md) through the [Terminal](terminal.md) and use the `analyze` command.\\n- Use the `getServerNumPortsRequired` function.\\n\\nOnce you have enough ports opened on a [server](servers.md) and have ran the NUKE virus to gain root access, you will be able to hack it.\\n\\n## General Hacking Mechanics\\n\\nWhen you execute the `hack` command, either manually through the [Terminal](terminal.md) or automatically through a script, you attempt to hack the [server](servers.md).\\nThis action takes time.\\nThe more advanced a [server](servers.md)'s security is, the more time it will take.\\nYour hacking skill level also affects the hacking time, with a higher hacking skill leading to shorter hacking times.\\nAlso, running the hack command manually through [Terminal](terminal.md)\\nis faster than hacking from a script.\\n\\nYour attempt to hack a [server](servers.md) will not always succeed.\\nThe chance you have to successfully hack a [server](servers.md) is also determined by the [server](servers.md)'s security and your hacking skill level.\\nEven if your hacking attempt is unsuccessful, you will still gain experience points.\\n\\nWhen you successfully hack a [server](servers.md).\\nYou steal a certain percentage of that [server](servers.md)'s total money.\\nThis percentage is, once again, determined by the [server](servers.md)'s security and your hacking skill level.\\nThe amount of money on a [server](servers.md) is not limitless.\\nSo, if you constantly hack a [server](servers.md) and deplete its money, then you will encounter diminishing returns in your hacking (since you are only hacking a certain percentage).\\nYou can increase the amount of money on a [server](servers.md) using a script and the `grow` function.\\n\\n## Server Security\\n\\nEach [server](servers.md) has a security level, typically between `1` and `100`.\\nA higher number means the [server](servers.md) has stronger security.\\n\\nAs mentioned above, a [server](servers.md)'s security level is an important factor to consider when hacking.\\nYou can check a [server](servers.md)'s security level using the `analyze` [Terminal](terminal.md) command.\\nYou can also check a [server](servers.md)'s security in a script, using the `getServerSecurityLevel` function.\\n\\nWhenever a [server](servers.md) is hacked manually or through a script, its security level increases by a small amount.\\nCalling the `grow` function in a script will also increase security level of the target [server](servers.md).\\nThese actions will make it harder for you to hack the [server](servers.md), and decrease the amount of money you can steal.\\nYou can lower a [server](servers.md)'s security level in a script using the `weaken` function.\\n\\nThis means that a [server](servers.md)'s security level will not fall below this value if you are trying to `weaken` it.\\n\\n## Backdoors\\n\\n[Servers](servers.md) that can be hacked can also have backdoors installed.\\nThese backdoors will provide you with a benefit - the services may be cheaper, penalties may be reduced or there may be other results.\\nHoneypots exist and will let factions know when you have succeeded at backdooring their system.\\nOnce you have a backdoor installed, you can connect to that [server](servers.md) directly.\\n\\nWhen you visit a location in the city and see that the name is partially scrambled, this indicates that you have backdoored the [server](servers.md) related to the location.\\n\";","export default \"# Hacknet nodes\\n\\nThis distributed network of computers allows you to gain money passively.\\nBy upgrading a node's stats you can increase the amount of money it earns.\\nIf the cost gets too high, it is also possile to purchase brand new nodes.\\n\\nHacknet nodes won't make as much money as scripts, but they can be useful at the start.\\n\\nThere is a very powerful upgrade to them called [Hacknet Servers](../advanced/hacknetservers.md)\\n\";","export default \"# Infiltration\\n\\nInfiltration is a gameplay mechanic that allows you to infiltrate a [Company](companies.md)'s facility to try and steal the [Company](companies.md)'s classified secrets.\\nThese secrets can be sold for money or for [Reputation](reputation.md) with a [Faction](factions.md).\\n\\n## Overview\\n\\nMany companies have facilities that you can attempt to infiltrate.\\nBy infiltrating, you can steal classified [Company](companies.md) secrets and then sell these for money or for [Faction](factions.md) [Reputation](reputation.md).\\nTo try and infiltrate a [Company](companies.md), visit a [Company](companies.md) through the [World](world.md) menu.\\nThere will be an option that says 'Infiltrate [Company](companies.md)'.\\n\\nWhen infiltrating a [Company](companies.md), you will be presented with short active challenges.\\nNone of the challenges use the mouse.\\n\\nThe difficulty at the top lowers with better combat stats and charisma.\\nIt is not recommended to attempt infiltrations above mid-normal.\\n\\nThe `maximum level` is the number of challenges you will need to pass to receive the infiltration reward.\\n\\nEvery time you fail an infiltration challenge, you will take damage based on the difficulty of the infiltration.\\nIf you are reduced to `0` hp or below, the infiltration will immediately end.\\n\\n- Most use spacebar as `action`\\n- Some use WASD or arrows interchangeably.\\n- A few others use the rest of the keyboard.\\n\\n### Slash when his guard is down!\\n\\nPress space when the guard is preparing to attack you.\\n\\nThere are 3 phases:\\n\\n1. guarding - attacking back will result in failure.\\n2. preparing - attacking will result in a victory.\\n3. attacking - the guard will attack you resulting in failure.\\n\\n### Close the brackets\\n\\nEnter all the matching brackets in reverse order.\\n\\n### Type it backward\\n\\nType the words that are written backward.\\n\\n### Say something nice about the guard.\\n\\nUse the arrows to find a compliment for the guard.\\n\\n### Enter the Code!\\n\\nMatch the arrows as they appear.\\n\\n### Match the symbols!\\n\\nMove the cursor to the matching symbol and press space to confirm.\\n\\n### Remember all the mines!\\n\\nAt first, the cursor cannot be moved - remember the positions of the mines. \\nNext, move the cursor and press space to mark the mines on the board.\\n\\n### Cut the wires\\n\\nFollow the instructions and press the numbers `1` through `9` to cut the appropriate\\nwires.\\n\";","export default \"# RAM\\n\\nIn Bitburner, RAM determines how many [Scripts](scripts.md) can run on a [Server](servers.md).\\n\\nMultiplying the number of threads a [Script](scripts.md) uses multiplies its RAM cost, but also multiplies the effectiveness of several functions such as `ns.hack()`, `ns.grow()`, and `ns.weaken()`.\\n\\nYou can purchase more RAM for your home computer from tech vendors.\\nYou can also use other computers as source of additional RAM.\\n\";","export default \"# Reputation\\n\\nIn order to acquire [Augmentations](augmentations.md) from [Factions](factions.md), you need to earn their trust.\\n\\nThis can be done in a variety of ways, but the most common is offering your services to a [Faction](faction.md).\\nAnother option is to give them intel from [Infiltrations](infiltration.md).\\n\\nWhen installing [Augmentations](augmentations.md), all your reputation gets converted to favor.\\nFavor increases the rate at which reputation is gained with that faction.\\n\\nWith enough favor, donations are unlocked.\\nDonations allow you to spend money to acquire reputation directly.\\nWithout working for the faction.\\nThis feature is particularily useful when a very large amount of reputation is needed for an augmentation.\\n\";","export default \"# Scripts\\n\\nScripts are programs that can be used to automate the hacking process and almost every other part of the game.\\nScripts must be written in JavaScript.\\n\\nIt is highly recommended that you have a basic background in programming to start writing scripts.\\nYou by no means need to be an expert.\\nAll you need is some familiarity with basic programming constructs like `for`/`while` loops, conditionals (`if`/`else`), `functions`, `variables`, etc.\\nIf you'd like to learn a little bit about programming, see [this page](../programming/learn.md).\\n\\n## Script Arguments\\n\\nWhen running a script, you can choose to pass arguments to that script.\\nThe script's logic can access and act on these arguments.\\nThis allows for flexibility in your scripts.\\n\\n## Identifying a Script\\n\\nMany commands and functions act on an executing script (i.e. a script that is running).\\nTherefore, there must be a way to specify which script you want those commands & functions to act on.\\n\\nThe best way to identify a script is by its PID (Process IDentifier).\\nThis unique number is returned from `run`, `exec`, etc., and also shows in the output of `ps`.\\n\\nA secondary way to identify scripts is by name **and** arguments.\\nHowever (by default) you can run a multiple copies of a script with the same arguments, so this does not necessarily **uniquely** identify a script.\\nIn case of multiple matches, most functions will return an arbitrary one (typically the first one to be started).\\nAn exception is `kill`, which will kill all the matching scripts.\\n\\nThe arguments must be an **exact** match.\\nThis means that both the order and type of the arguments matter.\\n\\n## Multithreading scripts\\n\\nA script can be run with multiple threads.\\nThis is also called multithreading.\\nThe effect of multithreading is that every call to the `hack`, `grow`, and `weaken` functions will have their results multiplied by the number of threads.\\nFor example, if a normal single-threaded script is able to hack $10,000, then running the same script with 5 threads would yield $50,000.\\n\\n(This is the **only** affect of running a script with multiple threads.\\nScripts will not actually become multithreaded in the real-world sense.)\\n\\nWhen multithreading a script, the total [RAM](ram.md) cost can be calculated by simply multiplying the base [RAM](ram.md) cost of the script with the number of threads, where the base cost refers to the amount of [RAM](ram.md) required to run the script single-threaded.\\nIn the [terminal](terminal.md), you can run the `mem` [Terminal](terminal.md) command to see how much [RAM](ram.md) a script requires with `n` threads:\\n\\n $ mem [scriptname] -t n\\n\\n## Working with Scripts in Terminal\\n\\nRunning a script requires [RAM](ram.md).\\nThe more complex a script is, the more [RAM](ram.md) it requires to run.\\nScripts can be run on any [server](server.md) you have root access to.\\n\\nHere are some [terminal](terminal.md) commands that are useful when working with scripts:\\n\\n**check [script] [args...]**\\n\\nPrints the logs of the script specified by the name and arguments to [Terminal](terminal.md).\\nArguments should be separated by a space.\\nRemember that scripts are uniquely identified by their arguments as well as their name.\\nFor example, if you ran a script `foo.js` with the argument `foodnstuff` then in order to 'check' it you must also add the `foodnstuff` argument to the check command::\\n\\n $ check foo.js foodnstuff\\n\\n**free**\\n\\nShows the current server's [RAM](ram.md) usage and availability\\n\\n**kill [pid]** or **kill [script] [args...]**\\n\\nStops a script that is running with the specified PID, or script name and arguments.\\nArguments should be separated by a space.\\nRemember that scripts are identified by their arguments as well as their name.\\nFor example, if you ran a script `foo.js` with the argument 1 and 2, then just typing `kill foo.js` will not work.\\nYou have to use:\\n\\n $ kill foo.js 1 2\\n\\n**mem [script] [-t] [n]**\\n\\nCheck how much [RAM](ram.md) a script requires to run with n threads\\n\\n**nano [script]**\\n\\nCreate/Edit a script.\\nThe name of the script must end with `.js`\\n\\n**ps**\\n\\nDisplays all scripts that are actively running on the current [server](servers.md)\\n\\n**rm [script]**\\n\\nDelete a script from the [server](servers.md). This is permanent\\n\\n**run [script] [-t] [n] [args...]**\\n\\nRun a script with n threads and the specified arguments.\\nEach argument should be separated by a space.\\nBoth the arguments and thread specification are optional.\\nIf neither are specified, then the script will be run single-threaded with no arguments.\\n\\nExamples:\\n\\nRun `foo.js` single-threaded with no arguments::\\n\\n $ run foo.js\\n\\nRun `foo.js` with 10 threads and no arguments:\\n\\n $ run foo.js -t 10\\n\\nRun `foo.js` single-threaded with three arguments: [foodnstuff, sigma-cosmetics, 10]:\\n\\n $ run foo.js foodnstuff sigma-cosmetics 10\\n\\nRun `foo.js` with 50 threads and a single argument: [foodnstuff]:\\n\\n $ run foo.js -t 50 foodnstuff\\n\\n**tail [pid]** or **tail [script] [args...]**\\n\\nDisplays the logs of the script specified by the PID or name and arguments.\\nNote that scripts are identified by their arguments as well as their name.\\nFor example, if you ran a script `foo.js` with the argument `foodnstuff` then in order to `tail` it you must also add the `foodnstuff` argument to the tail command as so: `tail foo.js foodnstuff`\\n\\n**top**\\n\\nDisplays all active scripts and their [RAM](ram.md) usage\\n\\n## Notes about how Scripts work offline\\n\\nThe scripts that you write and execute are in JavaScript.\\nFor this reason, it is not possible for these scripts to run while offline (when the game is closed).\\nIt is important to note that for this reason, conditionals such as `if`/`else` statements and certain commands such as `purchaseHacknetNode()` or `nuke()` will not work while the game is offline.\\n\\nHowever, Scripts WILL continue to generate money and hacking exp for you while the game is offline.\\nThis offline production is based off of the scripts' production while the game is online.\\n\\n`grow()` and `weaken()` are two functions that will also be applied when the game is offline, although at a slower rate compared to if the game was open.\\nThis is done by having each script keep track of the rate at which the `grow()` and `weaken()` commands are called when the game is online.\\nThese calculated rates are used to determine how many times these function calls would be made while the game is offline.\\n\\nAlso, note that because of the way the JavaScript engine works, whenever you reload or re-open the game all of the scripts that you are running will start running from the BEGINNING of the code.\\nThe game does not keep track of where exactly the execution of a script is when it saves/loads.\\n\";","export default \"# Servers\\n\\nIn this game, a server refers to a computer that can be connected to, accessed, and manipulated through the [Terminal](terminal.md).\\nAll servers in the game are connected to each other to form a large, global network.\\nTo learn about how to navigate this network and connect to other servers, see the [terminal](terminal.md) page.\\n\\n## Server Statistics\\n\\nEach server has its own statistics, such as [RAM](ram.md), required hacking level, and number of ports required to successfully `NUKE` it.\\n\\nPerhaps the most important property of a server to make note of is its [RAM](ram.md), which refers to how much memory is available on that machine. [RAM](ram.md) is important because it is required to run [Scripts](scripts.md).\\nMore [RAM](ram.md) allows the user to run more powerful and complicated [scripts](scripts.md), as well as executing scripts with more threads.\\n\\nThe `free`, `scan-analyze`, and `analyze` [Terminal](terminal.md) commands can be used to check how much [RAM](ram.md) a server has.\\n\\nSome servers have some randomized statistics, such as [RAM](ram.md), max Money, or required hacking level.\\nThese statistics are randomly generated from a range of values.\\n\\n## Identifying Servers\\n\\nA server is identified by its hostname.\\nA hostname is a label assigned to a server.\\nA hostname will usually give you a general idea of what the server is.\\nFor example, the company Nova Medical might have a server with the hostname `nova-med`.\\n\\nHostnames are unique.\\nThis means that if one server has the the hostname `some-server`, then no other server in the game can have that that hostname.\\n\\nThere are many `functions` and [terminal](terminal.md) commands in the game that will require you to target a specific server by hostname.\\n\\n## Player-owned Servers\\n\\nThe player starts with a single server: his/her home computer.\\nThis server will have the hostname `home`.\\nThe player's home computer is special for a variety of reasons:\\n\\n- The home computer's [RAM](ram.md) can be upgraded.\\n This can be done by visiting certain locations in the [World](world.md).\\n- The home computer persists through [Augmentation](augmentations.md) installations.\\n This means that you will not lose any [RAM](ram.md) upgrades or [Scripts](scripts.md) on your home computer when you install [Augmentations](augmentations.md)\\n (you will, however, lose programs and messages on your home computer).\\n\\nThe player can also purchase additional servers.\\nThis can be done by visiting certain locations in the [World](world.md), or it can be done automatically through a script using the `purchaseServer` function.\\nThe advantage of purchased servers is that, in terms of [RAM](ram.md), they are cheaper than upgrading your home computer.\\nThe disadvantage is that your purchased servers are lost when you install [Augmentations](augmentations.md).\\n\\n## Hackable Servers\\n\\nMost servers that are not owned by the player can be [hacked](hacking.md) for money and exp.\\n\\nDifferent servers have different levels of security, but also offer different rewards when being hacked.\\n\\n## Server Connections\\n\\nThe servers are in a randomly organized tree-structure.\\nThe distance from the home computer to each server is fixed, but the exact route to them is randomized when you install [augmentations](augmentations.md).\\nIn general, the further away from home computer a server is the higher its statistics are.\\n\";","export default \"# Stats\\n\\nThe player has several stats that can be increased in order to progress in the game.\\n\\n## Hacking\\n\\nRepresents the player's ability to code and hack.\\n\\nAffects:\\n\\n- Time it takes to hack a server\\n- Time it takes to execute the `grow()` and `weaken()` function\\n- Chance to successfully hack a server\\n- Percent of money stolen when hacking a server\\n- Success rate of certain [crimes](crimes.md)\\n- Time it takes to create a program\\n- [Faction](factions.md) [Reputation](reputation.md) gain when carrying out Hacking Contracts or Field Work\\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\\n\\nGain experience by:\\n\\n- Manually hacking servers through [Terminal](terminal.md)\\n- Executing `hack()`, `grow()`, or `weaken()` through a script\\n- Committing certain [crimes](crimes.md)\\n- Carrying out Hacking Contracts or doing Field work for [Factions](factions.md)\\n- Working certain jobs at a [Company](companies.md)\\n- Studying at a university\\n\\n## Strength\\n\\nRepresents the player's physical offensive power\\n\\nAffects:\\n\\n- Success rate of certain [crimes](crimes.md)\\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\\n\\nGain experience by:\\n\\n- Committing certain [crimes](crimes.md)\\n- Working out at a gym\\n- Doing Security/Field Work for a [Faction](factions.md)\\n- Working certain jobs at a [Company](companies.md)\\n\\n## Defense\\n\\nRepresents the player's ability to withstand damage\\n\\nAffects:\\n\\n- Success rate of certain [crimes](crimes.md)\\n- The player's HP\\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\\n\\nGain experience by:\\n\\n- Committing certain [crimes](crimes.md)\\n- Working out at a gym\\n- Doing Security/Field Work for a [Faction](factions.md)\\n- Working certain jobs at a [Company](companies.md)\\n\\n## Dexterity\\n\\nRepresents the player's skill and adeptness in performing certain tasks\\n\\nAffects:\\n\\n- Success rate of certain [crimes](crimes.md)\\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\\n\\nGain experience by:\\n\\n- Committing certain [crimes](crimes.md)\\n- Working out at a gym\\n- Doing Security/Field Work for a [Faction](factions.md)\\n- Working certain jobs at a [Company](companies.md)\\n\\n## Agility\\n\\nRepresents the player's speed and ability to move\\n\\nAffects:\\n\\n- Success rate of certain [crimes](crimes.md)\\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\\n\\nGain experience by:\\n\\n- Committing certain [crimes](crimes.md)\\n- Working out at a gym\\n- Doing Security/Field Work for a [Faction](factions.md)\\n- Working certain jobs at a [Company](companies.md)\\n\\n## Charisma\\n\\nRepresents the player's social abilities\\n\\nAffects:\\n\\n- Success rate of certain [crimes](crimes.md)\\n- [Faction](factions.md) [Reputation](reputation.md) gain for Field Work\\n- [Company](companies.md) [Reputation](reputation.md) gain for most jobs\\n\\nGain experience by:\\n\\n- Committing certain [crimes](crimes.md)\\n- Studying at a university\\n- Working a relevant job at a [Company](companies.md)\\n- Doing Field work for a [Faction](factions.md)\\n\";","export default \"# Stock Market\\n\\nThe Stock Market refers to the World Stock Exchange (WSE), through which you can buy and sell stocks in order to make money.\\n\\nThe WSE can be found in the `City` tab, and is accessible in every city.\\n\\n## Fundamentals\\n\\nThe Stock Market is not as simple as \\\"buy at price X and sell at price Y\\\".\\nThe following are several fundamental concepts you need to understand about the stock market.\\n\\nFor those that have experience with finance/trading/investing, please be aware that the game's stock market does not function exactly like it does in the real world.\\nSo these concepts below should seem similar, but won't be exactly the same.\\n\\n## Positions: Long vs Short\\n\\nWhen making a transaction on the stock market, there are two types of positions: Long and Short.\\nA Long position is the typical scenario where you buy a stock and earn a profit if the price of that stock increases.\\nMeanwhile, a Short position is the exact opposite.\\nIn a Short position, you purchase shares of a stock and earn a profit if the price of that stock decreases.\\nThis is also called 'shorting' a stock.\\n\\nShorting stocks is not available immediately, and must be unlocked later in the game.\\n\\n## Forecast & Second-Order Forecast\\n\\nA stock's forecast is its likelihood of increasing or decreasing in value.\\nThe forecast is typically represented by its probability of increasing in either a decimal or percentage form.\\nFor example, a forecast of `70%` means the stock has a `70%` chance of increasing and a `30%` chance of decreasing.\\n\\nA stock's second-order forecast is the target value that its forecast trends towards.\\nFor example, if a stock has a forecast of `60%` and a second-order forecast of `70%`, then the stock's forecast should slowly trend towards `70%` over time.\\nHowever, this is determined by RNG so there is a chance that it may never reach `70%`.\\n\\nBoth the forecast and the second-order forecast change over time.\\n\\nA stock's forecast can be viewed after purchasing Four Sigma (4S) Market Data access.\\nThis lets you see the forecast info on the Stock Market UI.\\nIf you also purchase access to the 4S Market Data TIX API, then you can view a stock's forecast using the `getStockForecast` function.\\n\\nA stock's second-order forecast is always hidden.\\n\\n## Spread (Bid Price & Ask Price)\\n\\nThe **bid price** is the maximum price at which someone will buy a stock on the stock market.\\n\\nThe **ask price** is the minimum price that a seller is willing to receive for a stock on the stock market\\n\\nThe ask price will always be higher than the bid price (This is because if a seller is willing to receive less than the bid price, that transaction is guaranteed to happen).\\nThe difference between the bid and ask price is known as the **spread**.\\nA stock's \\\"price\\\" will be the average of the bid and ask price.\\n\\nThe bid and ask price are important because these are the prices at which a transaction actually occurs.\\nIf you purchase a stock in the long position, the cost of your purchase depends on that stock's ask price.\\nIf you then try to sell that stock (still in the long position), the price at which you sell is the stock's bid price.\\nNote that this is reversed for a short position.\\nPurchasing a stock in the short position will occur at the stock's bid price, and selling a stock in the short position will occur at the stock's ask price.\\n\\n## Transactions Influencing Stock Forecast\\n\\nBuying or selling a large number of shares of a stock will influence that stock's forecast & second-order forecast.\\nThe forecast is the likelihood that the stock will increase or decrease in price.\\nThe magnitude of this effect depends on the number of shares being transacted.\\nMore shares will have a bigger effect.\\n\\nThe effect that transactions have on a stock's second-order forecast is significantly smaller than the effect on its forecast.\\n\\n## Order Types\\n\\nThere are three different types of orders you can make to buy or sell stocks on the exchange:\\nMarket Order, Limit Order, and Stop Order.\\n\\nLimit Orders and Stop Orders are not available immediately, and must be unlocked later in the game.\\n\\nWhen you place a Market Order to buy or sell a stock, the order executes immediately at whatever the current price of the stock is.\\nFor example if you choose to short a stock with 5000 shares using a Market Order, you immediately purchase those 5000 shares in a Short position at whatever the current market price is for that stock.\\n\\nA Limit Order is an order that only executes under certain conditions.\\nA Limit Order is used to buy or sell a stock at a specified price or better.\\nFor example, lets say you purchased a Long position of 100 shares of some stock at a price of $10 per share.\\nYou can place a Limit Order to sell those 100 shares at $50 or better.\\nThe Limit Order will execute when the price of the stock reaches a value of $50 or higher.\\n\\nA Stop Order is the opposite of a Limit Order.\\nIt is used to buy or sell a stock at a specified price (before the price gets 'worse').\\nFor example, lets say you purchased a Short position of 100 shares of some stock at a price of $100 per share.\\nThe current price of the stock is $80 (a profit of $20 per share).\\nYou can place a Stop Order to sell the Short position if the stock's price reaches $90 or higher.\\nThis can be used to lock in your profits and limit any losses.\\n\\nHere is a summary of how each order works and when they execute:\\n\\n**In a LONG Position:**\\n\\nA Limit Order to buy will execute if the stock's price <= order's price\\n\\nA Limit Order to sell will execute if the stock's price >= order's price\\n\\nA Stop Order to buy will execute if the stock's price >= order's price\\n\\nA Stop Order to sell will execute if the stock's price <= order's price\\n\\n**In a SHORT Position:**\\n\\nA Limit Order to buy will execute if the stock's price >= order's price\\n\\nA Limit Order to sell will execute if the stock's price <= order's price\\n\\nA Stop Order to buy will execute if the stock's price <= order's price\\n\\nA Stop Order to sell will execute if the stock's price >= order's price.\\n\\n## Player Actions Influencing Stocks\\n\\nIt is possible for your actions elsewhere in the game to influence the stock market.\\n\\n### Hacking\\n\\nIf a server has a corresponding stock (e.g. _foodnstuff_ server -> FoodNStuff stock), then hacking that server can decrease the stock's second-order forecast.\\nThis causes the corresponding stock's forecast to trend downwards in value over time.\\n\\nThis effect only occurs if you set the stock option to true when calling the `hack` function.\\nThe chance that hacking a server will cause this effect is based on what percentage of the server's total money you steal.\\n\\nA single hack will have a minor effect, but continuously hacking a server for lots of money over time will have a noticeable effect in making the stock's forecast trend downwards.\\n\\n### Growing\\n\\nIf a server has a corresponding stock (e.g. `foodnstuff` server -> FoodNStuff stock), then growing that server's money can increase the stock's second-order forecast.\\nThis causes the corresponding stock's forecast to trend upwards in value over time.\\n\\nThis effect only occurs if you set the `stock` option to true when calling the `grow` function.\\nThe chance that growing a server will cause this effect is based on what percentage of the server's total money to add to it.\\n\\nA single grow operation will have a minor effect, but continuously growing a server for lots of money over time will have a noticeable effect in making the stock's forecast trend upwards.\\n\\n### Working for a Company\\n\\nIf a [Company](companies.md) has a corresponding stock, then working for that [Company](companies.md) will increase the corresponding stock's second-order forecast.\\nThis will cause the stock's forecast to (slowly) trend upwards in value over time.\\n\\nThe potency of this effect is based on how effective you are when you work (i.e. it's based on your stats and multipliers).\\n\\n## Automating the Stock Market\\n\\nYou can write scripts to perform automatic and algorithmic trading on the Stock Market.\\nSee [TIX API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md) for more details.\\n\\n## Under the Hood\\n\\nStock prices are updated every ~6 seconds.\\n\\nWhether a stock's price moves up or down is random.\\nHowever, stocks have properties that can influence the way their price moves.\\nThese properties are hidden, although some of them can be made visible by purchasing the Four Sigma (4S) Market Data upgrade.\\nSome examples of these properties are:\\n\\n- Volatility\\n- Likelihood of increasing or decreasing (i.e. the stock's forecast)\\n- Likelihood of forecast increasing or decreasing (i.e. the stock's second-order forecast)\\n- How easily a stock's price/forecast is influenced by transactions\\n- Spread percentage\\n- Maximum price (not a real maximum, more of a \\\"soft cap\\\")\\n\\nEach stock has its own unique values for these properties.\\n\\n## Offline Progression\\n\\nThe Stock Market does not change or process anything while the game has closed.\\nHowever, it does accumulate time when offline.\\nThis accumulated time allows the stock market to run `50%` faster when the game is opened again.\\nThis means that stock prices will update every ~4 seconds instead of 6.\\n\";","export default \"# Terminal\\n\\nThe Terminal is a console emulator program that lets you interface with all of the [Servers](servers.md) in the game.\\nThe Terminal can be accessed by clicking the `Terminal` tab on the navigation menu on the left-hand side of the game (you may need to expand the 'Hacking' header in order to see the `Terminal` tab).\\nAlternatively, the shortcut Alt + t can be used to open the Terminal.\\n\\n## Filesystem (Directories)\\n\\nThe Terminal contains a **very** basic filesystem that allows you to store and organize your files into different directories.\\nNote that this is **not** a true filesystem implementation.\\nInstead, it is done almost entirely using string manipulation.\\nFor this reason, many of the nice & useful features you'd find in a real filesystem do not exist.\\n\\nHere are the Terminal commands you'll commonly use when dealing with the filesystem.\\n\\n- `ls` (view all files in the current folder)\\n- `cd` (change folder)\\n- `mv` (rename a file)\\n\\n## Directories\\n\\nIn order to create a directory, simply name a file using a full absolute Linux-style path:\\n\\n /scripts/myScript.js\\n\\nThis will automatically create a \\\"directory\\\" called `scripts`.\\nThis will also work for subdirectories:\\n\\n /scripts/hacking/helpers/myHelperScripts.js\\n\\nFiles in the root directory do not need to begin with a forward slash:\\n\\n thisIsAFileInTheRootDirectory.txt\\n\\nNote that there is no way to manually create or remove directories.\\nThe creation and deletion of directories is automatically handled as you name/rename/delete files.\\n\\n## Absolute vs Relative Paths\\n\\nMany Terminal commands accept both absolute and relative paths for specifying a file.\\n\\nAn absolute path specifies the location of the file from the root directory (/).\\nAny path that begins with the forward slash is an absolute path:\\n\\n $ nano /scripts/myScript.js\\n $ cat /serverList.txt\\n\\nA relative path specifies the location of the file relative to the current working directory.\\nAny path that does **not** begin with a forward slash is a relative path.\\nNote that the Linux-style dot symbols will work for relative paths:\\n\\n . (a single dot) - represents the current directory\\n .. (two dots) - represents the parent directory\\n\\n $ cd ..\\n $ nano ../scripts/myScript.js\\n $ nano ../../helper.js\\n\\n## Scripts\\n\\nNote that in order to reference a file, `functions` require the **full** absolute file path.\\nFor example\\n\\n ns.run(\\\"/scripts/hacking/helpers.myHelperScripts.js\\\");\\n ns.rm(\\\"/logs/myHackingLogs.txt\\\");\\n ns.rm(\\\"thisIsAFileInTheRootDirectory.txt\\\");\\n\\nA full file path **must** begin with a forward slash (/) if that file is not in the root directory.\\n\\n## Missing Features\\n\\nThese features that are typically in Linux filesystems have not yet been added to the game:\\n\\n- Tab autocompletion does not work with relative paths\\n- `mv` only accepts full filepaths for the destination argument.\\n It does not accept directories\\n\\n## Argument Parsing\\n\\nWhen evaluating a terminal command, arguments are initially parsed based on whitespace (usually spaces).\\nEach whitespace character signifies the end of an argument, and potentially the start of new one.\\nFor most terminal commands, this is all you need to know.\\n\\nWhen running scripts, however, it is important to know in more detail how arguments are parsed.\\nThere are two main points:\\n\\n- Quotation marks can be used to wrap a single argument and force it to be parsed as a string.\\n Any whitespace inside the quotation marks will not cause a new argument to be parsed.\\n- Anything that can represent a number is automatically cast to a number, unless it's surrounded by quotation marks.\\n\\nHere's an example to show how these rules work.\\nConsider the following script `argType.js`:\\n\\n export async function main(ns) {\\n ns.tprint(\\\"Number of args: \\\" + ns.args.length);\\n for (var i = 0; i < ns.args.length; ++i) {\\n ns.tprint(typeof ns.args[i]);\\n }\\n }\\n\\nThen if we run the following terminal command:\\n\\n $ run argType.js 123 1e3 \\\"5\\\" \\\"this is a single argument\\\"\\n\\nWe'll see the following in the Terminal:\\n\\n Running script with 1 thread(s), pid 1 and args: [123, 1000, \\\"5\\\", \\\"this is a single argument\\\"].\\n argType.js: Number of args: 4\\n argType.js: number\\n argType.js: number\\n argType.js: string\\n argType.js: string\\n\\n## Chaining Commands\\n\\nYou can run multiple Terminal commands at once by separating each command\\nwith a semicolon (;).\\n\\nExample:\\n\\n $ run foo.js; tail foo.js\\n\\nThis does **not** wait for commands with a delay to finish executing, so it generally doesn't work with things like `hack`, `wget`, etc.\\n\";","export default \"# World\\n\\nIn Bitburner, the world consists of six different cities:\\n\\n- Sector-12 (this is where you start out)\\n- Aevum\\n- Ishima\\n- New Tokyo\\n- Chongqing\\n- Volhaven\\n\\nEach city has its own map and [Factions](factions.md).\\nEach city also offers different services such as gyms, universities, hardware stores, and places of work.\\n\";","export default \"# Changelog\\n\\n## v2.4.1 Update (8/26/23)\\n\\n### FEATURE ADDITIONS:\\n\\n- Added \\\"Enable terminal history search with arrow keys\\\" option in Misc options category, inspired by similar functionality in shells like zsh. (@ficocelliguy)\\n\\n### BUGFIX:\\n\\n- Fixed a bug where buying NeuroFlux Governor would buy one less level than expected (@zerbosh)\\n- Fixed an issue that could cause the Coding Contract UI to become unreachable (@myCatsName)\\n- Infiltration: Knowledge of Apollo aug no longer highlights the incorrect wires (@Snarling)\\n\\n### CODEBASE / DOCS / MISC:\\n\\n- Added a new theme \\\"zerenity\\\" (@Zelow79)\\n- Reorganize game constants (@zerbosh)\\n- Reorganize ingame documentation folder structure, simplify documentation bundling (@Snarling)\\n- IP Address coding contract accepts single-quoted entries (@myCatsName)\\n- Updated an outdated message on ns.killall logs (@myCatsName)\\n- Updated documentation for ns.share and ns.getSharePower (@myCatsName)\\n- Removed functions (like ns.getServerRam) are no longer shown when enumerating ns entries. (@Snarling)\\n- Removed more references to ReadTheDocs that remained after 2.4.0 (@hydroflame)\\n- Fixed some typos/spacing (@myCatsName)\\n- Fixed an issue with incorrect React keys in active scripts page (@zornlemma)\\n\\n### API CHANGES (NON-SPOILER)\\n\\n- Added ns.stock.getConstants (@Snarling)\\n- Added ownedAugs and ownedSF properties to return data of ns.getResetInfo (@Snarling)\\n\\n### API CHANGES (SPOILERS):\\n\\n- Added ns.singularity.getAugmentationFactions to provide a list of factions that have a given augmentation (@myCatsName)\\n- ns.corporation.getConstants now has a ram cost of 0 (@Snarling)\\n\\n### OTHER CHANGES (SPOILERS):\\n\\n- Successes for next level is now accurate in the UI for Bladeburner operations (@myCatsName)\\n- ns.sleeve.setToFactionWork no longer allows working for factions the player has not joined (@Snarling)\\n\\n## v2.4.0 - Death to readthedocs\\n\\nNETSCRIPT:\\n\\n- Added ns.getFunctionRamCost\\n- Added run and install identifier\\n\\nCORP:\\n\\n- Add product investment info to API\\n- Prevent issues with invalid materials in warehouse\\n- Update exportMaterial amount to `number | string`\\n- Validate city with office for starting product development\\n\\nDOCUMENTATION:\\n\\n- readthedoc.bitburner.whatever has been fully deprecated.\\n That documentation is now available in-game. This will make\\n documentation easier to maintain and easier to keep locked\\n with the specific version of the game you're playing.\\n It's also in `.md`, which is more common than `.rst`\\n- Add `printRaw` and `tprintRaw` docs\\n- Better docs for `ascension` result\\n- Complete the spec for hamming codes enhancement\\n- Fix example code for `scp`\\n\\nMISC.\\n\\n- Fixed a bug where RAM calculation would be innacurate for near copy of scripts on different servers\\n- Fix mislead error message about ram miscalculation when script contains syntax errors.\\n- Fix bug in calculating faction donation amount\\n- Fix bug where Sleeve would have difficulty doing certain University activities.\\n- Fix regression for crime in progress\\n- Prevent log scrolling on Active Script window drag\\n- show all skills in import save comparison tool\\n- Fix extremely minor calculation error where money drained after hack was being floor()\\n- Fix ram evaluation to include more edge-cases\\n- Fix potential double-free in atExit()\\n\\nCODEBASE:\\n\\n- Work on Enum Helper + Reorganise\\n- enforce eslint react checks\\n- corp code style improvement\\n- Added a lot of typesafety\\n\\n## v2.3.1 - Bugfixes 7 June 2023\\n\\nNETSCRIPT:\\n\\n- Added ns.setTitle, which sets the titlebar of a script's tail window (@d0sboots)\\n- Added ns.getFunctionRamCost, which gets the ramcost of a function (@G4mingJon4s)\\n- ns.ls results will filter as if the filenames have a leading slash (@Snarling)\\n\\nGENERAL / MISC:\\n\\n- Changed tail window buttons into icon buttons, allow setting custom title, and tail window bugfixes. (@d0sboots)\\n- Terminal no longer scrolls to the bottom constantly while an action is being performed (@bezrodnov)\\n- Added a close button to modals (@bezrodnov)\\n- Fixed several issues with script editor tabs (@bezrodnov)\\n- scp terminal command can copy multiple files at once, like help text indicates (@Snarling)\\n- Root directory is no longer displayed as ~ in the terminal prompt, it is displayed as / (@Snarling)\\n- cd with no arguments will change to the root directory (@Snarling)\\n- Documentation updates (various)\\n- Nerf noodle bar\\n\\nHOTFIXES (these were already backported to 2.3.0 before 2.3.1 release):\\n\\n- Several important fixes for savegame migration issues from older version (@d0sboots)\\n- Prevent scripts from loading during intial migration to 2.3.0 save format, to prevent a crash that could occur. (@Snarling)\\n- Fix scp logging (hostname was being logged incorrectly in multiple places and showing as [Object object]) (@Snarling)\\n- Update terminal parsing logic so that the old syntax for alias works again. (@Snarling)\\n- Fix clickable script links from ls command not working outside root directory (@Snarling)\\n- Fix an issue with Find All Valid Math Expressions not accepting empty array when that was the solution. (@Snarling)\\n- Fix an issue with scan-analyze display when the player had AutoLink.exe (@Snarling)\\n- Reverted undocumented change that program filenames were case sensitive for ns.fileExists. They are case insensitive again. (@Snarling)\\n- An issue from pre-2.3 could cause scripts to have the wrong \\\"server\\\" property. This caused issues in 2.3, and a fix now repairs any scripts with a mismatched server property. (@Snarling)\\n- More fixes to help old savegames load correctly (@Snarling)\\n- Servers can no longer have infinite time-to-hack. (@Snarling)\\n\\nSPOILER SECTIONS:\\n\\nSF2:\\n\\n- Overall gang respect gain rate now reads accurately, instead of showing ~10x. (@Snarling)\\n\\nSF3:\\n\\n- Added \\\"maxProducts\\\" property to ns.corporation.getDivision return value (@kateract)\\n- Fixed an issue with sell price parsing for materials (@zerbosh)\\n- Fixed display of market price for materials and products (@zerbosh)\\n- Fixes for Corp import/export issues, such as -IPROD and Smart Supply not working right (@d0sboots)\\n- Improvements to the max-affordable-upgrades calculation (@bezrodnov)\\n- Perform additional validation when setting up an export. Exports are now unique per targeted division+city. (@Snarling)\\n- ns.corporation.cancelExport no longer requires the exported amount (@Snarling)\\n- Fix NaN bug that could impact Robot material in Robotics division (@Snarling, @kateract)\\n- Can no longer commence product development in a city with no office (which would immediately error out the game loop) (@Snarling)\\n- (Hotfix) Fix issue that could lead to SF3 research desync. (@Snarling)\\n- (Hotfix) Fix SF3 \\\"Spring Water\\\" industry (@Snarling)\\n\\nSF4:\\n\\n- Fixed an issue that could cause singularity run-after-reset callback scripts to not launch correctly (@Snarling)\\n\\n## v2.3.0 - SF3 rework and performance improvements (25 May 2023)\\n\\nBREAKING CHANGES: These changes may require changes to your scripts.\\n\\n- Major changes to the SF3 mechanic. See the related section below for more detailed info on the changes.\\n- The same script filename can now be ran multiple times with the same args. If running a script from another script (ns.run/ns.exec/etc), this limitation can be re-imposed with the preventDuplicates RunOption (see general section for info on RunOptions).\\n- The same .js script will now be the same js module whether the script was ran directly or used as an import. This means top-level variables (variables defined outside of any function) are shared across all instances of the script.\\n- The js module for a script will also be reused by any script that has the exact same compiled text, even if that script is on another server or has a different filename. This can lead to unexpected results when using top-level variables.\\n- Some properties removed from ns.getPlayer and added to a separate function ns.getResetInfo. These are still accessible from getPlayer but will produce a warning message the first time they are accessed per game session.\\n- hackAnalyzeThreads now returns -1, instead of 0, when no money can be hacked from the targeted server.\\n- ns.iKnowWhatImDoing has been removed, replaced by ns.tprintRaw for printing custom react content to the terminal (limited support).\\n\\nPERFORMANCE:\\n\\n- Minimize impact of unavoidable memory leak when modules are created, by reusing modules as much as possible (@d0sboots)\\n- Internal data structure changes (@d0sboots, @Snarling)\\n- Fix memory leak when initializing large number of netscript ports (@Snarling)\\n- Improve performance while on the Active Scripts page if many scripts are starting/ending. (@d0sboots)\\n\\nNETSCRIPT GENERAL:\\n\\n- Remove requirement for script args to be unique. This was also related to performance improvements. (@d0sboots)\\n- ns.hackAnalyzeThreads no longer indicates infinity any time a single thread would hack less than $1 (@Snarling)\\n- ns.renamePurchasedServer no longer crashes if player is connected to the server being renamed (@Snarling)\\n- ns.hackAnalyzeThreads now return -1 (instead of 0) if no money can be hacked from the targeted server. (@d0sboots)\\n- Fix a possible infinite atExit loop if a script killed itself. (@Snarling)\\n- Static timestamps of last resets can be obtained via ns.getResetInfo, replacing playtimeSinceLastX from ns.getPlayer (@G4mingJon4s)\\n- Improved support for printing react content directly to the terminal (ns.tprintRaw) or to a script log (ns.printRaw).\\n- Added RunOptions, which can optionally replace the \\\"threads\\\" argument for ns.run/ns.exec/ns.spawn. (@d0sboots)\\n - RunOptions.threads: Provide a thread count (since RunOptions can replace the threads argument)\\n - RunOptions.temporary: Prevents the script execution from being included in the save file.\\n - RunOptions.ramOverride: Provide a static ram cost for the script to override what is calculated by the game. Dynamic ram checking is still enforced.\\n - RunOptions.preventDuplicates: Fail to launch the script if the args are identical to a script already running.\\n\\nGENERAL / MISC:\\n\\n- Fixed a bug that could cause the overview skill bars to become desynced (@d0sboots)\\n- There is now an autoexec setting to specify a script on home to automatically run when loading the game. (@d0sboots)\\n- Monaco script editor updated to a newer version and has more config options available now. (@Snarling)\\n- Improve Electron's handling of external links (@Snarling)\\n- Improved support for ANSI color codes (@d0sboots)\\n- Improved consistency of file paths. Correct names for files no longer start with a / even if they are in a directory. (@Snarling)\\n- All Math Expressions contract no longer accepts wrong answers (@Snarling)\\n- Faction invites now trigger immediately when backdooring a server. (@Snarling)\\n- Fixed issue where duplicate programs could be created. (@Minzenkatze)\\n- UI improvements to create program page (@Minzenkatze)\\n- Fix inconsistency in skill xp to skill level conversion (@hydroflame)\\n- Updated blood donation counter to reflect number of confirmed blood donations. (@hydroflame)\\n- Minor improvements to ram calculation process (@Snarling)\\n- Improved terminal arguments detection (@Snarling)\\n- Improved display for ls terminal command. (@Snarling)\\n- Added more internal tests and improved test quality (@d0sboots)\\n- Various codebase improvements (@Snarling, @d0sboots)\\n- Documentation improvements (Many contributors)\\n- Nerf noodle bar\\n\\nSPOILER SECTIONS:\\n\\nSF2:\\n\\n- Corrected the \\\"Next equipment unlock\\\" text for member upgrades. (@LiamGeorge1999)\\n\\nSF3:\\n\\n- Many Corporation API changes, due to functionality changes and due to property name changes. See documentation for correct usage.\\n- Can now have multiple divisions within the same industry. (@Mughur)\\n- Can now sell a division or sell the entire corporation. (@Mughur)\\n- Product quality now depends on material quality (@Mughur)\\n- Product price can be set separately per-city (@Mughur)\\n- Exports can be set relative to inventory or production (@Mughur)\\n- ns.corporation.getProduct is city-specific (@Mughur)\\n- Bulk purchasing is available from the start (@Mughur)\\n- Can buy multiple upgrades at a time, similar to hacknet node upgrades (@Mughur)\\n- Various UI changes (@Mughur)\\n- Removed happiness from employees (@Mughur)\\n- Coffee renamed to tea (@Mughur)\\n- Training position renamed to intern (@Mughur)\\n- More options for SmartSupply (@Mughur)\\n- Advertising nerf (@Mughur)\\n- Nerfed investors and reduced effectiveness of \\\"fraud\\\" (@Mughur)\\n- Fixed React errors, renamed most corp object properties (@Snarling)\\n- Various other changes (@Mughur, @Snarling)\\n\\nSF4:\\n\\n- Faction invites trigger immediately when running ns.singularity.getFactionInvitations (@Snarling)\\n- Added ns.singularity.getCompanyPositionInfo (@jeek)\\n\\nSF6:\\n\\n- Failing a contract or operation now consumes the action (@Zelow79)\\n\\nSF9:\\n\\n- The SF9.3 bonus is also given to the player when inside of BN9. (@Zelow79)\\n- Adjusted the SF1 bonus for hacknet costs (slight nerf), and raised the SF9 bonus to compensate. (@d0sboots)\\n- Added option to purchase company favor using hashes. (@jeek)\\n\\nSF10:\\n\\n- Sleeve shock recovery now scales with intelligence. (@Tyasuh)\\n- Sleeve kills during crimes count towards numPeopleKilled (@Zelow79)\\n- Fix a misspelled moneySourceTracker call for sleeves (@zerbosh)\\n- ns.sleeve.getTask return value now includes cyclesNeeded where applicable (@Snarling)\\n- Internal type refactoring on Sleeve Work. (@Snarling)\\n\\nSF12:\\n\\n- Fix inconsistency in how BN12 multipliers were calculated\\n\\nSF13:\\n\\n- Improve performance of Stanek's gift update cycle, and rework (buff) bonus time handling. (@Snarling)\\n\\n## v2.2.2 - 21 Feb 2023\\n\\nPLANNED 2.3 BREAKING CHANGES:\\n\\n- 2.3 will include a large planned rework to corporation. This may cause api breaks for any corporation scripts, and there will be large changes in how the corporation mechanic functions.\\n\\nNETSCRIPT API:\\n\\n- Added ns.formatNumber, ns.formatRam, and ns.formatPercent, which allow formatting these types of numbers the same way the game does (@Snarling, See UI section).\\n- Deprecated ns.nFormat. Likely to be removed in 2.3. Now just directly wraps numeral.format (@Snarling)\\n- EXPERIMENTAL CHANGE (may be reverted next patch): BasicHGWOptions now allows specifying a number of additionalMsec. This should allow easier and more reliable coordination\\n of completion times for hack, grow, and weaken. Since this is an experimental change, be prepared for a possible API break next patch if you use this functionality. (@d0sboots)\\n\\n- Corporation API:\\n\\n - Fix bugs with ns.corporation.setAutoJobAssignment. (@zerbosh and @croy)\\n\\n- Formulas API:\\n\\n - Added ns.formulas.hacking.growThreads function (@d0sboots)\\n\\n- Sleeve API:\\n\\n - ns.sleeve.getTask now also includes cyclesWorked for the task types where this applies. (@Zelow79)\\n - Added ns.sleeve.setToIdle function (@Zelow79)\\n\\n- Unsupported API:\\n\\n - Added ns.printRaw - allows printing custom React content to script logs. Use at your own risk, misuse is very likely to cause a crash. (@d0sboots)\\n\\nELECTRON (STEAM) VERSION:\\n\\n- Fix security issue where player scripts were allowed to access any part of the player's filesystem. Now access is limited to the game's 'dist' folder. (@Snarling)\\n\\nSCRIPTS:\\n\\n- Fix an issue where multiple copies of the same script could be launched with same args/same server (@Mughur)\\n- Followup changes to API wrapping from 2.2.1 changes. (@d0sboots)\\n\\nUI:\\n\\n- Add new number formatting code to replace internal use of unmaintained package numeral.js. Added several Numeric Display options. (@Snarling)\\n- Removed ingame donation section. (@hydroflame)\\n- Improve some bladeburner number formatting (@Zelow79)\\n- Added IronMan theme (@MattiYT)\\n- Factions that have not been joined yet will show how many unowned augments they have available. (@Zelow79)\\n- Added more features to dev menu (@Zelow79 and @Snarling)\\n\\nCORPORATION:\\n\\n- Reverted previous change to employee needs. Now they will trend up on their own again. (@d0sboots)\\n- Improvements to how Market TA II works (@d0sboots)\\n- ns.corporation.getOffice return value now includes a totalExperience property. (@Snarling)\\n\\nHACKNET:\\n\\n- Hacknet servers are now named hacknet-server-# instead of hacknet-node-#. (@Tyasuh)\\n- Fix bug related to renaming hacknet servers (@Mughur)\\n\\nGRAFTING:\\n\\n- Bladeburner augs can be grafted if player is in Bladeburner faction (@Tyasuh)\\n\\nDOCUMENTATION\\n\\n- Many documentation updates (@Mughur, @d0sboots, @Snarling, @teauxfu).\\n- Official non-markdown docs are at https://github.com/bitburner-official/bitburner-src/tree/dev/src/Documentation/doc\\n- Official dev version markdown docs are at https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md\\n- Official stable version markdown docs are at https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.ns.md\\n- Dev version documentation is now kept up to date as changes are made. (@Snarling)\\n\\nCODEBASE:\\n\\n- Updated many dependencies (@d0sboots)\\n- Updated lots of the build processes and GitHub workflows. (@Snarling)\\n- Internal refactoring of how BitNode multipliers are stored (@d0sboots)\\n- Added some extra helper function (useRerender hook, positiveInteger ns argument validator). (@Snarling)\\n\\nMISC:\\n\\n- Nerf noodle bar\\n\\n## v2.2.1 Hotfixes\\n\\nHotfix / bugfix:\\n\\n- (@d0sboots) Implemented a new API wrapping solution that prevents the need for binding functions to ns when placing them in a new variable, but maintains and perhaps improves upon the performance gains from the previous v2.2.0 changes.\\n- Fixed some issues with savegames failing to load, or causing the main engine loop to stall after load.\\n- Fixed an issue where .script files were not receiving the correct args when ran\\n- Fixed an issue with sleeve HP calculation\\n- Possible fix for MathJax \\\"Typesetting Failed\\\" errors\\n- There was an issue with Corporations decaying their employees to 0 stats, even though the minimum was supposed to be 5. Moved the variable storing the min decay value to corporation constants, and raised it to 10.\\n- Regenerated documentation at https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md due to corporation changes related to min decay stats.\\n- Faction XP was unintentionally providing 20x the experience gain as it did prior to v2.0. This caused faction work to exceed gym/university as the optimal way to gain experience. Values have been reduced to only about 2x what they were prior to v2.0, and they are no longer better than gym/university.\\n- Fixed an issue where the overview skill bars could be displayed inaccurately based on player multipliers.\\n\\n## v2.2.0 - Jan 2 2023 Development Reboot\\n\\nDev notes\\n\\n- The previous main developer, hydroflame, is stepping back from this project for the foreseeable future. To facilitate this, we've moved the repo to a new location at https://github.com/bitburner-official/bitburner-src.\\n- Sorry for the large number of API breaks in this version. To ease the pain here, attempting to use any of the removed functions will provide an error guiding you to the new replacement function to use instead.\\n\\nBREAKING API CHANGES:\\n\\n- No longer applicable as of v2.2.1! (ns2 only) ns functions use the 'this' value from ns: if you move the function to its own variable off of ns, it needs to be bound to ns. The internal changes that make this necessary led to very large performance gains for running many scripts at once. e.g.:\\n\\n const tprint1 = ns.tprint; // This doesn't work and will error out when calling tprint1();\\n\\n const tprint = ns.tprint.bind(ns); // This works because the 'this' value is preserved.\\n\\n- ns.getPlayer no longer provides properties tor, inBladeburner, or hasCorporation. This information can be looked up using standlone functions: ns.hasTorRouter(), ns.bladeburner.inBladeburner(), ns.corporation.hasCorporation().\\n- Removed many functions, with replacement ways to get the same info.\\n\\n - getServerRam: use getServerMaxRam and getServerUsedRam instead.\\n - corporation.assignJob: use setAutoJobAssignment instead.\\n - corporation.getEmployee: No longer available (employees are not individual objects).\\n - corporation.getExpandCityCost: use ns.corporation.getConstants().officeInitialCost\\n - corporation.getExpandIndustryCost: use getIndustryData instead.\\n - corporation.getIndustryTypes: use ns.corporation.getConstants().industryNames\\n - corporation.getMaterialNames: use ns.corporation.getConstants().materialNames\\n - corporation.getPurchaseWarehouseCost: use ns.corporation.getConstants().warehouseInitialCost\\n - corporation.getResearchNames: use ns.corporation.getConstants().researchNames\\n - corporation.getUnlockables: use ns.corporation.getConstants().unlockNames\\n - corporation.getUpgradeNames: use ns.corporation.getConstants().upgradeNames\\n - formulas.work.classGains: split into universityGains and gymGains\\n - singularity.getAugmentationCost: use getAugmentationPrice and getAugmentationRepReq instead\\n - sleeve.getSleeveStats: use getSleeve instead\\n - sleeve.getInformation: use getSleeve instead\\n\\n- An error dialog will inform the player of the above API changes if the player tries to use one of the removed functions above.\\n- enums.toast was renamed ToastVariant to provide consistency with internal code.\\n\\n- codingcontract.attempt always returns a string (empty string for a failed attempt). This may break player code if a direct boolean comparison (e.g. 'attemptResult === true') was being made. The string can be used directly as the conditional, because empty string evaluates to false as a boolean.\\n\\n- corporation.getCorporation().divisions now returns an array of division names, instead of division objects. Use corporation.getDivision(name) to get the division info object.\\n\\nDEVELOPMENT\\n\\n- Development repo moved to https://github.com/bitburner-official/bitburner-src\\n- Dev version available on web at https://bitburner-official.github.io/bitburner-src/\\n- Development is active again for non-bugfix.\\n- A bunch of fixes, setup, and assistance related to moving to a new repo (@hydroflame)\\n\\nTUTORIAL\\n\\n- Removed NS1/NS2 selection. Tutorial now only references .js files (NS1 is essentially deprecated) (@Mughur)\\n- Fix Ram Text (by @jaculler)\\n\\nNETSCRIPT\\n\\n- Base NS API:\\n - More enums and more types are exposed to the player instead of \\\"magic strings\\\", as type documentation and on ns.enums.\\n - Added ns.pid property to access a script's PID without a function call. (@jeek)\\n - Much faster API wrapping on script launch. (@d0sboots) To support this, ns functions need to keep their \\\"this\\\" value from their parent object.\\n - tFormat: Fix display for negative time\\n - ns.getPlayer: removed tor, inBladeburner, and hasCorporation properties\\n - Added ns.hasTorRouter() function.\\n- Coding Contract API\\n - ns.codingcontract.attempt always returns a string. (@Snarling)\\n- Corporation API\\n - Removed ns.corporation.getEmployee and ns.corporation.assignJob, due to employees no longer being objects.\\n - Added ns.corporation.hasCorporation()\\n - Reworked how ram costs are applied for corporation.\\n- Formulas API\\n - ns.formulas.work.classGains removed, replaced with ns.formulas.work.universityGains and ns.formulas.work.gymGains (@Snarling)\\n - Add ns.formulas.work.companyGains function (@AlexeyKozhemiakin)\\n- Ports\\n - added portHandle.nextWrite() (@LJNeon)\\n - Make ns.writePort synchronous (@Snarling)\\n- Sleeve API\\n - ns.sleeve.getSleeve added. getPlayer and getSleeve can both be used for formulas. (@Snarling)\\n - getSleeve also includes storedCycles (i.e. bonusTime) (@zerbosh)\\n- Stock API\\n - ns.stock.getOrganization added for getting org from stock symbol (@SamuraiNinjaGuy)\\n\\nSCRIPTS\\n\\n- Fixed bug where zombie scripts could be created after a soft reset (@Snarling)\\n- Scripts now have a maximum ram cost of 1024GB per thread.\\n\\nSCRIPT LOGS\\n\\n- Add ctrl-a support for selecting all text in tail window (@Snarling)\\n\\nCORPORATION\\n\\n- Remove corp employees as objects (by @Kelenius)\\n- API access is provided automatically if the player is in BN3. (@zerbosh)\\n- Happiness/Energy/Morale trend down even for productive corps (by @Snarling)\\n- Typo fixes in modals to sell materials and products (by @quacksouls)\\n- Reworked MP formula validation to prevent possible save corruption on invalid entry (by @Snarling)\\n- Internal reorganization of Industry data (by @Snarling)\\n- Added check to material buy amount (by @G4mingJon4s)\\n- Check there is room to make a new product before opening popup. (by @G4mingJon4s)\\n- Fix typos in research descriptions (by @quacksouls)\\n\\nSLEEVE\\n\\n- Fixed inconsistencies in how sleeve work rewards are handled. (by @Snarling)\\n- Fix bug that prevented selecting some crimes from UI. (by @Snarling)\\n- Internally shock starts at 100 and lowers to 0. Previously this was backwards.\\n\\nSTOCKMARKET\\n\\n- Fix broken initializer when manually buying WSE access (by @Snarling)\\n\\nTERMINAL\\n\\n- Added changelog command to re-display the changelog dialog.\\n- Connect command will connect to player owned servers from anywhere. (by @Snarling)\\n\\nUI\\n\\n- Improve UI performance of sidebar and character overview using memoization (@d0sboots)\\n- Other UI additions / improvements (@Mughur, @d0sboots, probably others)\\n- Fixed spacing of text in Trade for reputation button after Infiltration (by @PyroGenesis)\\n- Fix spacing on ANSI background escape codes (by @Snarling)\\n- Fix several instances where newlines were not being displayed properly (by @quacksouls)\\n- SoftResetButton.tsx Tooltip changed to make more sense (by @rai68)\\n- GANG: Fix Gang UI to correctly report the bonus time multiplier as 25x (by @TheMas3212)\\n- Change formatting for skill levels to use localeStr (@G4mingJon4s)\\n\\nDOC\\n\\n- Fix incorrect examples for grow (by @quacksouls)\\n- Updated limitMaterialProduction() and limitProductProduction() documentation to mention removing limits. (by @PyroGenesis)\\n- Add ns documentation for possible sleeve tasks (by @Snarling)\\n- Update documentation for workForFaction and workForCompany (by @quacksouls)\\n- Improve CCT documentation for HammingCodes (by @quacksouls)\\n- cleanup in doc of Netscript functions (by @quacksouls)\\n- Various other doc fixes (by @quacksouls)\\n- Update documentation for ns.args (by @Snarling)\\n- De-uglify ns.print examples (by @LJNeon)\\n\\nSTATS\\n\\n- Fix logic for increasing HP based on defense skill levels (by @mattgarretson)\\n- Fix a bug where HP could be something other than max after a bitnode reset.\\n\\nINFILTRATION\\n\\n- Fix SlashGame scaling. (by @Snarling)\\n\\nGANG\\n\\n- When starting a gang, any in progress work with that faction will end. (@G4mingJon4s)\\n\\nMISC\\n\\n- Lots of typesafety improvements with internal code\\n- Remove google analytics (@hydroflame)\\n- Some error handling streamlining (by @Snarling)\\n- fix: check both ts and js source now (by @Tanimodori)\\n- chore: sync version in package-lock.json (by @Tanimodori)\\n- Better safety when loading game for multiple save corruption issues (by @Snarling)\\n- Nerf Noodle bar\\n\\n## v2.1.0 - 2022-09-23 Remote File API\\n\\nDev note\\n\\n- The most important change about this update is the introduction of the Remote File API (RFA).\\n With this we also deprecate the HTTP file API and the Visual Studio extension. Those things\\n were made during the rush of Steam and aren't well thought out. This new process works with\\n both the web and Steam version of the game and every text editor. Moving forward we also\\n won't be doing much, if any, upgrades to the in-game editor. We think it's good enough for\\n now and if you need more we recommend you hook up your favorite external editor.\\n\\n--- NEW FEATURES ---\\n\\n- New Remote File API for transmitting files to the game (by @Hoekstraa)\\n- Added a new Augmentation, Z.O.Ë., which allows Sleeves to benefit from Stanek.\\n\\n--- FIXES ---\\n\\nAPI\\n\\n- Remove incorrectly placed 's' in ns.tFormat() (by @LJNeon)\\n- More ports (previously max 20, now practically unlimited) (by @Hoekstraa)\\n- Corp functions now return copy of constant arrays instead of the original (by @Mughur)\\n- All the player sub-objects need to be copied for `getPlayer`. (by @MageKing17)\\n- add corp get functions, UI (by @Mughur)\\n- destroyW0r1dD43m0n now properly gives achievements\\n- favor now properly syncs across pages and the Donate achievement is now given correctly (by @Aerophia)\\n- getCrimeStats use bitnode multipliers in the output of crime stats (by @phyzical)\\n- add singularity function for exporting game save back (by @phyzical)\\n\\nCODING CONTRACTS\\n\\n- inconsistent probability for generation between online and offline (by @quacksouls)\\n- Don't stringify answer if already a string (by @alainbryden)\\n- change input handling for contract attempts (by @Snarling)\\n\\nCORPORATION\\n\\n- Bunch of corporation fixes (by @Mughur)\\n- Gave investors some economics classes (by @Mughur)\\n- Limit shareholder priority on newly issued shares (by @Undeemiss)\\n- dont take research points for something already researched via api (by @phyzical)\\n\\nCORPORATION API\\n\\n- Fix up param order for limitProductProduction to match docs (by @phyzical)\\n- Expose exports from Material (by @Rasmoh)\\n\\nDOCUMENTATION\\n\\n- update docs a bit more, amending some BN and SF texts (by @Mughur)\\n- Fixed Argument order for scp() (by @njalooo)\\n- Some typo fixes in Netscript functions (by @quacksouls)\\n- Why use Coding Contract API (by @quacksouls)\\n- typo fix in description of Caesar cipher (by @quacksouls)\\n- typo fix in terminal.rst (by @BugiDev)\\n- Update bitburner.sleeve.settobladeburneraction.md (by @borisflagell)\\n- Correct documentation for `run()` with 0 threads. (by @MageKing17)\\n- Some doc updates (by @Mughur)\\n- fix documentation for remote api (by @hydroflame)\\n\\nNETSCRIPT\\n\\n- Added functions to resize, move, and close tail windows\\n- ns.exit now exits immediately (by @Snarling)\\n- Fix dynamic ram check (by @Snarling)\\n- ns1 wraps deeper layers correctly. (by @Snarling)\\n- Prevent bladeburner.setActionLevel from setting invalid action levels (by @MPJ-K)\\n- Typo fixes in CodingContract, Hacknet, Singularity APIs (by @quacksouls)\\n- Fix a typo in doc of Singularity.travelToCity() (by @quacksouls)\\n- Update netscript definition file for scp, write, read, and flags (by @Snarling)\\n- Correct missing ! for boolean coercion in Corporation.createCorporation(). (by @Risenafis)\\n- Normalized Stock API logging (by @Snarling)\\n- allow null duration in toast ns function (by @RollerKnobster)\\n- Correct missing `!` for boolean coercion in `singularity.workForCompany()`. (by @MageKing17)\\n- ns.scp and ns.write are now synchronous + fix exec race condition (by @Snarling)\\n- atExit now allows synchronous ns functions (by @Snarling)\\n- Improve real life CPU and memory performance of scripts. (by @Snarling)\\n- Prompt Add user friendly message to avoid throwing recovery screen for invalid choices (by @phyzical)\\n- Rerunning a script from tail window recalculates ram usage (by @Snarling)\\n- The correct script will be closed even if the player modifies args (v2.0) (by @Snarling)\\n- Corrected ns formula for infiltration rewards (by @ezylot)\\n- Add singularity check for finishing company work (by @Snarling)\\n\\nSLEEVES\\n\\n- Allow using the regeneration chamber with sleeves to heal them. (by @coderanger)\\n- fix crash when player tries to assign more than 3 sleeves to Bladeburner contracts (by @Snarling)\\n- Sleeves no longer crash when player quits company sleeve was working (by @Snarling)\\n- Sleeve crime gain bitnode multiplier fix (by @Mughur)\\n\\nREMOTE FILE API\\n\\n- NetscriptDefinitions retains export strings (by @Hoekstraa)\\n- Fix type of RFAMessages with non-String results (by @Hoekstraa)\\n\\nUI\\n\\n- add a setting to display middle time unit in Time Elapsed String (by @hydroflame)\\n- fix incorrect experience display in Crime UI. (by @SilverNexus)\\n- Bitnode stats now show if BB/Corporation are disabled (by @Kelenius)\\n- Removed three empty lines from BB status screen (by @Kelenius)\\n- Add missing space to BN7 description (by @hex7cd)\\n- Improvements to crime work UI (by @Kelenius)\\n- Script Editor more responsive on resize, and fix dirty file indicator (by @Snarling)\\n\\nMISC\\n\\n- Added weight to GangMemberTask construction call (by @ezylot)\\n- Fix ANSI display bugs (by @Snarling)\\n- Debounce updateRAM calls in script editor. (by @Snarling)\\n- Allow characters & and ' in filenames (by @Snarling)\\n- Corrected tutorial text (by @mihilt)\\n- Fix infil definitions.d.ts (by @phyzical)\\n- Modify PR template (by @Hoekstraa)\\n- crime gains, sleeve gang augs and faq (by @Mughur)\\n- Preventing server starting security level from going above 100 (by @Shiiyu)\\n- Adds Shadows of Anarchy (by @Lagicrus)\\n- Added intormation about hacking managers to hacking algorithms page (by @Kelenius)\\n- Fix Jest CI Error (by @geggleto)\\n- multiple hasAugmentation checks didn't check if the augment was installed (by @Mughur)\\n- & (by @G4mingJon4s)\\n- Adds info regarding augments and focus (by @Lagicrus)\\n- Removed console.log line (by @dhosborne)\\n- Update some doc (by @hydroflame)\\n- trying to fix int problems (by @hydroflame)\\n- Fix broken ns filesnames (by @hydroflame)\\n- new formula functions (by @hydroflame)\\n- test fixes/md updates (by @phyzical)\\n- Remove \\\"based\\\" from positive adjectives in infiltrations (by @faangbait)\\n- minor fix in instance calculation (by @hydroflame)\\n- fix dynamic ram miscalc not triggering (by @hydroflame)\\n- Refactor game options into separate components (by @hydroflame)\\n- fix settings unfocusing on every key stroke (by @hydroflame)\\n- fix some stuff with the timestamp settings (by @hydroflame)\\n- Fix unique key problem with ascii elements (by @hydroflame)\\n- Improve wrong arg user message and add ui.windowSize (by @hydroflame)\\n- fix stack trace missing in some errors (by @hydroflame)\\n- Fix scp and write in ns1 (by @hydroflame)\\n- Did some changes of the remote api and added documentation (by @hydroflame)\\n- Add dummy function to generate a mock server or player for formulas stuff (by @hydroflame)\\n- fix compile error (by @hydroflame)\\n- regen doc (by @hydroflame)\\n- rm console log (by @hydroflame)\\n- regen doc (by @hydroflame)\\n- Added more info about blood program, change some aug descriptions (by @hydroflame)\\n- use triple equal (by @hydroflame)\\n- Minor improvements to Netscript Port loading and unloading (by @hydroflame)\\n- Fix hostname generation being weird about dash 0 added (by @hydroflame)\\n- upgrade version number. (by @hydroflame)\\n- Nerf noodle bar.\\n\\n## v2.0.0 - 2022-07-19 Work rework\\n\\nAPI break rewards\\n\\n- Everyone is awarded 10 NFG.\\n- All work in progress program is auto completed.\\n- All work in progress crafting is auto completed without adding entropy.\\n\\n Work (Create program / Work for faction / Studying / etc ...)\\n\\n- Working has been rebuilt from the grounds up. The motivation for that change is that all\\n different types of work all required different cached variables on the main Player object.\\n This caused a lot of bugs and crashes. It's been reworked in such a way as to prevent bugs\\n and make it nearly trivial to add new kinds of work. However, since this caused a few API break\\n I've decided to mark this version following semver protocols and call it 2.0.0\\n- Crime can be unfocused and auto loops, no more spam clicking.\\n- All work type give their reward immediately. No need to stop work to bank rewards like reputation.\\n- Faction and Company work no longer have a time limit.\\n- Company work no longer reduces rep gain by half for quitting early.\\n- Company faction require 400k rep to join (from 200k)\\n- Backdooring company server reduces faction requirement to 300k.\\n- All work generally no longer keep track of cumulative gains like exp and reputation since it's applied instantly.\\n- getPlayer returns way less fields but does return the new 'currentWork' field, some fields are moved around.\\n\\nAPI breaks\\n\\n- workForCompany argument 'companyName' is now not-optional\\n- commitCrime now has 'focus' optional parameter\\n- using getScriptIncome to get total income has been separated to getTotalScriptIncome.\\n- using getScriptExpGain to get total income has been separated to getTotalScriptExpGain.\\n- scp has it's 2 last argument reversed, the signature is now (files, destination, optional_source)\\n- ns.connect and other singularity function are no longer available at the top level.\\n They were already hidden from documentation but now they're gone.\\n- stock.buy and stock.sell were renamed to stock.buyStock and stock.sellStock because 'buy' and 'sell'\\n are very common tokens.\\n- corporation.bribe no longer allows to give shares as bribe.\\n\\n Netscript\\n\\n- Add singularity.getCurrentWork\\n- Add singularity.getAugmentationBasePrice\\n- Add sleeve.getSleeveAugmentationPrice\\n- Add sleeve.getSleeveAugmentationRepReq\\n- Fix infiltration.getInfiltrationLocations\\n- Singularity.goToLocation support for non-city-specific locations (@Ansopedian)\\n- All corporation functions are synchronous. Job assignment only works on the following cycle. (@stalefishies)\\n- Add batch functionality to NS spendHashes API (@undeemiss)\\n- Fix #3661 Add missing memory property to Sleeve API (@borisflagell)\\n- FIX#3732 Cannot assign two sleeve on \\\"Take on contracts\\\" regardless of contract type. (@borisflagell)\\n\\n Corporation\\n\\n- Dividend fixes and exposing dividends info via scripts (@stalefishies)\\n- Add big number format support in some Corporation's modal (@borisflagell)\\n- Fix #3261 Industry overview number formatting (@nickofolas)\\n\\n Multipliers\\n\\n- The main player object was also plagues with a million fields all called '\\\\*\\\\_mult'. Representing the different multipliers\\n- These have been refactored in a field called 'mults'.\\n\\n Misc.\\n\\n- #3596 Enhanced terminal command parsing (@RevanProdigalKnight)\\n- Fix #3366 Sleeve UI would sometimes displays the wrong stat while working out. (@borisflagell)\\n- Two new encryption themed contracts - caesar and vigenere (@Markus-D-M)\\n- Fixes #3132 several Sleeve can no longer works concurrently in the same company (@borisflagell)\\n- FIX #3514 Clear recently killed tab on BN end event (@Daniel-Barbera)\\n- HammingCodes description and implementation fixes (@s2ks)\\n- FIX #3794 Sleeve were getting less shocked when hospitalized (was positive, should have detrimental) (@borisflagell)\\n- Fix #3803 Servers can no longer have duplicate IPs (@crimsonhawk47)\\n- Fix #3854 ctrl+c does not clear terminal input (@evil-tim)\\n- Nerf noodle bar, obviously.\\n\\n## v1.6.3 - 2022-04-01 Few stanek fixes\\n\\nStanek Gift\\n\\n- Has a minimum size of 2x3\\n- Active Fragment property 'avgCharge' renamed to 'highestCharge'\\n- Formula for fragment effect updated to make 561% more sense.\\n Now you can charge to your heart content.\\n- Logs for the 'chargeFragment' function updated.\\n\\n Misc.\\n\\n- Nerf noodle bar.\\n\\n## v1.6.0 - 2022-03-29 Grafting\\n\\n** Vitalife secret lab **\\n\\n- A new mechanic called Augmentation Grafting has been added. Resleeving has been removed.\\n- Credit to @nickofolas for his incredible work.\\n\\n** Stanek **\\n\\n- BREAKING: Many functions in the stanek API were renamed in order to avoid name collision with things like Map.prototype.get\\n\\n** UI **\\n\\n- Major update to Sleeve, Gang UI, and Create Program (@nickofolas)\\n- re-add pre tags to support slash n in prompt (@jacktose)\\n- Tabelize linked output of 'ls' (@Master-Guy)\\n- Add the ability to filter open scripts (@phyzical)\\n- Add minHeight to editor tabs (@nickofolas)\\n- Properly expand gang equipment cards to fill entire screen (@nickofolas)\\n- Add shortcut to Faction augmentations page from FactionsRoot (@nickofolas)\\n- Fix extra space on editor tabs (@nickofolas)\\n- Present offline message as list (@DSteve595)\\n- add box showing remaining augments per faction (@jjayeon)\\n- Add tab switching support to vim mode (@JParisFerrer)\\n- Show current task on gang management screen (@zeddrak)\\n- Fix for ui of gang members current task when set via api (@phyzical)\\n- Don't hide irrelevant materials if their stock is not empty and hide irrelevant divisions from Export (@SagePtr)\\n- Fix regex to enable alpha transparency hex codes (8 digits) (@surdaft)\\n\\n** API **\\n\\n- Added dark web functions to ns api\\n- BREAKING: purchaseTor() should returns true if player already has Tor. (@DavidGrinberg, @waffleattack)\\n- Implement getBonusTime in Corporation API (@t-wolfeadam)\\n- Added functions to purchase TIX and WSI (@incubusnb)\\n- purchaseSleeveAug checks shock value (@incubusnb)\\n- Fix bug with hacknet api\\n- Fix spendHashes bug\\n- Added 0 cost of asleep() (@Master-Guy)\\n- Fix some misleading corporation errors (@TheRealMaxion)\\n- expose the inBladeburner on the player object (@phyzical)\\n- added ram charge for stanek width and height (@phyzical)\\n- Fix sufficient player money check to buy back shares. (@ChrissiQ)\\n- Fix Static Ram Circumventing for some NS functions (@CrafterKolyan)\\n- added CorporationSoftCap to NetscriptDefinitions (@phyzical)\\n- Added definition of autocomplete() 'data' argument. (@tigercat2000)\\n- Adding support for text/select options in Prompt command (@PhilipArmstead)\\n- Added the ability to exportGame via api (@phyzical)\\n\\n** Arcade **\\n\\n- Added an arcade to New Tokyo where you can play a 4 year old version of bitburner.\\n\\n** Misc. **\\n\\n- Add a warning triggered while auto-saves are off. (@MartinFournier)\\n- Log info for field analysis now displays actual rank gained. (@ApamNapat)\\n- Removed BladeburnerSkillCost from skill point cost description. (@ApamNapat)\\n- Fix handling for UpArrow in bladeburner console. (@dowinter)\\n- Add GitHub action to check PRs for generated files. (@MartinFournier)\\n- Cap Staneks gift at 25x25 to prevent crashes. (@waffleattack)\\n- Remove old & unused files from repository. (@MartinFournier)\\n- Factions on the factions screens are sorted by story progress / type. (@phyzical)\\n- Fix log manager not picking up new runs of scripts. (@phyzical)\\n- Added prettier to cicd.\\n- UI improvements (@phyzical)\\n- Documentation / Typos (@nanogyth, @Master-Guy, @incubusnb, @ApamNapat, @phyzical, @SagePtr)\\n- Give player code a copy of Division.upgrades instead of the live object (@Ornedan)\\n- Fix bug with small town achievement.\\n- Fix bug with purchaseSleeveAug (@phyzical)\\n- Check before unlocking corp upgrade (@gianfun)\\n- General codebase improvements. (@phyzical, @Master-Guy, @ApamNapat)\\n- Waiting on promises in NS1 no longer freezes the script. (@Master-Guy)\\n- Fix bug with missing ramcost for tFormat (@TheMas3212)\\n- Fix crash with new prompt\\n- Quick fix to prevent division by 0 in terminal (@Master-Guy)\\n- removed ip references (@phyzical, @Master-Guy)\\n- Terminal now supports 'ls -l'\\n- Fix negative number formatting (@Master-Guy)\\n- Fix unique ip generation (@InDieTasten)\\n- remove terminal command theme from docs (@phyzical)\\n- Fix 'Augmentations Left' with gang factions (@nickofolas)\\n- Attempt to fix 'bladeburner.process()' early routing issue (@MartinFournier)\\n- work in progress augment fix (@phyzical)\\n- Fixes missing space in Smart Supply (@TheRealMaxion)\\n- Change license to Apache 2 with Commons Clause\\n- updated regex sanitization (@mbrannen)\\n- Sleeve fix for when faction isnt found (@phyzical)\\n- Fix editor \\\"close\\\" naming (@phyzical)\\n- Fix bug with sleeves where some factions would be listed as workable. (@phyzical)\\n- Fix research tree of product industries post-prestige (@pd)\\n- Added a check for exisiting industry type before expanding (@phyzical)\\n- fix hackAnalyzeThreads returning infinity (@chrisrabe)\\n- Make growthAnalyze more accurate (@dwRchyngqxs)\\n- Add 'Zoom -> Reset Zoom' command to Steam (@smolgumball)\\n- Add hasOwnProperty check to GetServer (@SagePtr)\\n- Speed up employee productivity calculation (@pd)\\n- Field Work and Security Work benefit from 'share' (@SagePtr)\\n- Nerf noodle bar.\\n\\n## v1.5.0 - Steam Cloud integration\\n\\n** Steam Cloud Saving **\\n\\n- Added support for steam cloud saving (@MartinFournier)\\n\\n** UI **\\n\\n- background now matches game primary color (@nickofolas)\\n- page title contains version (@MartinFourier)\\n- Major text editor improvements (@nickofolas)\\n- Display bonus time on sleeve page (@MartinFourier)\\n- Several UI improvements (@nickofolas, @smolgumball, @DrCuriosity, @phyzical)\\n- Fix aug display in alpha (@Dominik Winter)\\n- Fix display of corporation product equation (@SagePtr)\\n- Make Bitverse more accessible (@ChrissiQ)\\n- Make corporation warehouse more accessible (@ChrissiQ)\\n- Make tab style more consistent (@nickofolas)\\n\\n** Netscript **\\n\\n- Fix bug with async.\\n- Add 'printf' ns function (@Ninetailed)\\n- Remove blob caching.\\n- Fix formulas access check (@Ornedan)\\n- Fix bug in exp calculation (@qcorradi)\\n- Fix NaN comparison (@qcorradi)\\n- Fix travelToCity with bad argument (@SlyCedix)\\n- Fix bug where augs could not be purchased via sing (@reacocard)\\n- Fix rounding error in donateToFaction (@Risenafis)\\n- Fix bug with weakenAnalyze (@rhobes)\\n- Prevent exploit with atExit (@Ornedan)\\n- Double 'share' power\\n\\n** Corporations **\\n\\n- Fix bugs with corp API (@pigalot)\\n- Add smart supply func to corp API (@pd)\\n\\n** Misc. **\\n\\n- The file API now allows GET and DELETE (@lordducky)\\n- Force achievement calculation on BN completion (@SagePtr)\\n- Cleanup in repository (@MartinFourier)\\n- Several improvements to the electron version (@MartinFourier)\\n- Fix bug with casino roulette (@jamie-mac)\\n- Terminal history persists in savefile (@MartinFourier)\\n- Fix tests (@jamie-mac)\\n- Fix crash with electron windows tracker (@smolgumball)\\n- Fix BN6/7 passive reputation gain (@BrianLDev)\\n- Fix Sleeve not resetting on install (@waffleattack)\\n- Sort joined factions (@jjayeon)\\n- Update documentation / typo (@lethern, @Meowdoleon, @JohnnyUrosevic, @JosephDavidTalbot,\\n @pd, @lethern, @lordducky, @zeddrak, @fearnlj01, @reasonablytall, @MatthewTh0,\\n @SagePtr, @manniL, @Jedimaster4559, @loganville, @Arrow2thekn33, @wdpk, @fwolfst,\\n @fschoenfeldt, @Waladil, @AdamTReineke, @citrusmunch, @factubsio, @ashtongreen,\\n @ChrissiQ, @DJ-Laser, @waffleattack, @ApamNapat, @CrafterKolyan, @DSteve595)\\n- Nerf noodle bar.\\n\\n## v1.4.0 - 2022-01-18 Sharing is caring\\n\\n** Computer sharing **\\n\\n- A new mechanic has been added, it's is invoked by calling the new function 'share'.\\n This mechanic helps you farm reputation faster.\\n\\n** gang **\\n\\n- Installing augs means losing a little bit of ascension multipliers.\\n\\n** Misc. **\\n\\n- Prevent gang API from performing actions for the type of gang they are not. (@TheMas3212)\\n- Fix donation to gang faction. (@TheMas3212)\\n- Fix gang check crashing the game. (@TheMas3212)\\n- Make time compression more robust.\\n- Fix bug with scp.\\n- Add zoom to steam version. (@MartinFourier)\\n- Fix donateToFaction accepts donation of NaN. (@woody-lam-cwl)\\n- Show correct hash capacity gain on cache level upgrade tooltip. (@woody-lam-cwl)\\n- Fix tests (@woody-lam-cwl)\\n- Fix cache tooltip (@woody-lam-cwl)\\n- Added script to prettify save file for debugging (@MartinFourier)\\n- Update documentation / typos (@theit8514, @thadguidry, @tigercat2000, @SlyCedix, @Spacejoker, @KenJohansson,\\n @Ornedan, @JustAnOkapi, @nickofolas, @philarmstead, @TheMas3212, @dcragusa, @XxKingsxX-Pinu,\\n @paiv, @smolgumball, @zeddrak, @stinky-lizard, @nickofolas, @Feodoric, @daanflore,\\n @markusariliu, @mstruebing, @erplsf, @waffleattack, @Dexalt142, @AIT-OLPE, @deathly809, @BuckAMayzing,\\n @MartinFourier, @pigalot, @lethern)\\n- Fix BN3+ achievement (@SagePtr)\\n- Fix reputation carry over bug (@TheMas3212)\\n- Add button to exit infiltrations (@TheMas3212)\\n- Add dev menu achievement check (@TheMas3212)\\n- Add 'host' config for electron server (@MartinFourier)\\n- Suppress save toast only works for autosave (@MartinFourier)\\n- Fix some achievements not triggering with 'backdoor' (@SagePtr)\\n- Update Neuroflux Governor description.\\n- Fix bug with electron server.\\n- Fix bug with corporation employee assignment function (@Ornedan)\\n- Add detailed information to terminal 'mem' command (@MartinFourier)\\n- Add savestamp to savefile (@MartinFourier)\\n- Dev menu can apply export bonus (@MartinFourier)\\n- Icarus message no longer applies on top of itself (@Feodoric)\\n- purchase augment via API can no longer buy Neuroflux when it shouldn't (@Feodoric)\\n- Syntax highlighter should be smarter (@neuralsim)\\n- Fix some miscalculation when calculating money stolen (@zeddrak)\\n- Fix max cache achievement working with 0 cache (@MartinFourier)\\n- Add achievements in the game, not just steam (@MartinFourier)\\n- Overflow hash converts to money automatically (@MartinFourier)\\n- Make mathjax load locally (@MartinFourier)\\n- Make favor calculation more efficient (@kittycat2002)\\n- Fix some scripts crashing the game on startup (@MartinFourier)\\n- Toasts will appear above tail window (@MartinFourier)\\n- Fix issue that can cause terminal actions to start on one server and end on another (@MartinFourier)\\n- Fix 'fileExists' not correctly matching file names (@TheMas3212)\\n- Refactor some code to be more efficient (@TheMas3212)\\n- Fix exp gain for terminal grow and weaken (@nickofolas)\\n- Refactor script death code to reject waiting promises instead of resolving (@Ornedan)\\n- HP recalculates on defense exp gain (@TheMas3212)\\n- Fix log for ascendMember (@TheMas3212)\\n- Netscript ports clear on reset (@TheMas3212)\\n- Fix bug related to company (@TheMas3212)\\n- Fix bug where corporation handbook would not be correctly added (@TheMas3212)\\n- Servers in hash upgrades are sorted alpha (@MartinFourier)\\n- Fix very old save not properly migrating augmentation renamed in 0.56 (@MartinFourier)\\n- Add font height and line height in theme settings (@MartinFourier)\\n- Fix crash when quitting job (@MartinFourier)\\n- Added save file validation system (@TheMas3212)\\n- React and ReactDOM are now global objects (@pigalot)\\n- 'nano' supports globs (@smolgumball)\\n- Character overview can be dragged (@MartinFourier)\\n- Job page updates in real time (@nickofolas)\\n- Company favor gain uses the same calculation as faction, this is just performance\\n the value didn't change (@nickofolas)\\n- ns2 files work with more import options (@theit8514)\\n- Allow autocomplete for partial executables (@nickofolas)\\n- Add support for contract completion (@nickofolas)\\n- 'ls' link are clickable (@smolgumball)\\n- Prevent steam from opening external LOCAL files (@MartinFourier)\\n- Fix a bug with autocomplete (@Feodoric)\\n- Optimise achievement checks (@Feodoric)\\n- Hacknet server achievements grant associated hacknet node achievement (@Feodoric)\\n- Fix display bug with hacknet (@Feodoric)\\n- 'analyze' now says if the server is backdoored (@deathly809)\\n- Add option to exclude running script from save (@MartinFourier)\\n- Game now catches more errors and redirects to recovery page (@MartinFourier)\\n- Fix bug with autocomplete (@nickofolas)\\n- Add tooltip to unfocus work (@nickofolas)\\n- Add detailst overview (@MartinFourier)\\n- Fix focus bug (@deathly809)\\n- Fix some NaN handling (@deathly809)\\n- Added 'mv' ns function (@deathly809)\\n- Add focus argument to some singularity functions (@nickofolas)\\n- Fix some functions not disabling log correctly (@deathly809)\\n- General UI improvements (@nickofolas)\\n- Handle steamworks errors gravefully (@MartinFourier)\\n- Fix some react component not unmounting correctly (@MartinFourier)\\n- 'help' autocompletes (@nickofolas)\\n- No longer push all achievements to steam (@Ornedan)\\n- Recovery page has more information (@MartinFourier)\\n- Added 'getGameInfo' ns function (@MartinFourier)\\n- SF3.3 unlocks all corp API (@pigalot)\\n- Major improvements to corp API (@pigalot)\\n- Prevent seed money outside BN3 (@pigalot)\\n- Fix bug where using keyboard shortcuts would crash if the feature is not available (@MartinFourier)\\\\\\n- Sidebar remains opened/closed on save (@MartinFourier)\\n- Added tooltip to sidebar when closed (@MartinFourier)\\n- Fix bug where Formulas.exe is not available when starting BN5 (@TheMas3212)\\n- Fix CI (@tvanderpol)\\n- Change shortcuts to match sidebar (@MartinFourier)\\n- Format gang respect (@attrib)\\n- Add modal to text editor with ram details (@nickofolas)\\n- Fix several bugs with singularity focus (@nickofolas)\\n- Nerf noodle bar.\\n\\n## v1.3.0 - 2022-01-04 Cleaning up\\n\\n** External IDE integration **\\n\\n- The Steam version has a webserver that allows integration with external IDEs.\\n A VSCode extension is available on the market place. (The documentation for the ext. isn't\\n written yet)\\n\\n** Source-Files **\\n\\n- SF4 has been reworked.\\n- New SF -1.\\n\\n** UI **\\n\\n- Fix some edge case with skill bat tooltips (@MartinFournier)\\n- Made some background match theme color (@Kejikus)\\n- Fix problem with script editor height not adjusting correctly (@billyvg)\\n- Fix some formatting issues with Bladeburner (@MartinFournier, @nickofolas)\\n- Fix some functions like 'alert' format messages better (@MageKing17)\\n- Many community themes added.\\n- New script editor theme (@Hedrauta, @Dexalt142)\\n- Improvements to tail windows (@theit8514)\\n- Training is more consise (@mikomyazaki)\\n- Fix Investopedia not displaying properly (@JotaroS)\\n- Remove alpha from theme editor (@MartinFournier)\\n- Fix corporation tooltip not displaying properly (@MartinFournier)\\n- Add tooltip on backdoored location names (@MartinFournier)\\n- Allow toasts to be dismissed by clicking them (@nickofolas)\\n- Darkweb item listing now shows what you own. (@hexnaught)\\n\\n** Bug fix **\\n\\n- Fix unit tests (@MartinFournier)\\n- Fixed issue with 'cat' and 'read' not finding foldered files (@Nick-Colclasure)\\n- Buying on the dark web will remove incomplete exe (@hexnaught)\\n- Fix bug that would cause the game to crash trying to go to a job without a job (@hexnaught)\\n- purchaseServer validation (@nickofolas)\\n- Script Editor focuses code when changing tab (@MartinFournier)\\n- Fix script editor for .txt files (@65-7a)\\n- Fix 'buy' command not displaying correctly. (@hexnaught)\\n- Fix hackAnalyzeThread returning NaN (@mikomyazaki)\\n- Electron handles exceptions better (@MageKing17)\\n- Electron will handle 'unresponsive' event and present the opportunity to reload the game with no scripts (@MartinFournier)\\n- Fix 'cp' between folders (@theit8514)\\n- Fix throwing null/undefined errors (@nickofolas)\\n- Allow shortcuts to work when unfocused (@MageKing17)\\n- Fix some dependency issue (@locriacyber)\\n- Fix corporation state returning an object instead of a string (@antonvmironov)\\n- Fix 'mv' overwriting files (@theit8514)\\n- Fix joesguns not being influenced by hack/grow (@dou867, @MartinFournier)\\n- Added warning when opening external links. (@MartinFournier)\\n- Prevent applying for positions that aren't offered (@TheMas3212)\\n- Import has validation (@MartinFournier)\\n\\n** Misc. **\\n\\n- Added vim mode to script editor (@billyvg)\\n- Clean up script editor code (@Rez855)\\n- 'cat' works on scripts (@65-7a)\\n- Add wordWrap for Monaco (@MartinFournier)\\n- Include map bundles in electron for easier debugging (@MartinFournier)\\n- Fix importing very large files (@MartinFournier)\\n- Cache program blob, reducing ram usage of the game (@theit8514)\\n- Dev menu can set server to $0 (@mikomyazaki)\\n- 'backdoor' allows direct connect (@mikomyazaki)\\n- Github workflow work (@MartinFournier)\\n- workForFaction / workForCompany have a new parameter (@theit8514)\\n- Alias accept single quotes (@sporkwitch, @FaintSpeaker)\\n- Add grep options to 'ps' (@maxtimum)\\n- Added buy all option to 'buy' (@anthonydroberts)\\n- Added more shortcuts to terminal input (@Frank-py)\\n- Refactor some port code (@ErzengelLichtes)\\n- Settings to control GiB vs GB (@ErzengelLichtes)\\n- Add electron option to export save game (@MartinFournier)\\n- Electron improvements (@MartinFournier)\\n- Expose some notifications functions to electron (@MartinFournier)\\n- Documentation (@MartinFournier, @cyn, @millennIumAMbiguity, @2PacIsAlive,\\n @TheCoderJT, @hexnaught, @sschmidTU, @FOLLGAD, @Hedrauta, @Xynrati,\\n @mikomyazaki, @Icehawk78, @aaronransley, @TheMas3212, @Hedrauta, @alkemann,\\n @ReeseJones, @amclark42, @thadguidry, @jasonhaxstuff, @pan-kuleczka, @jhollowe,\\n @ApatheticsAnonymous, @erplsf, @daanflore, @nickofolas, @Kebap, @smolgumball,\\n @woody-lam-cwl)\\n\\n## v1.1.0 - 2021-12-18 You guys are awesome (community because they're god damn awesome)\\n\\n** Script Editor **\\n\\n- The text editor can open several files at once. (@Rez855 / @Shadow72)\\n It's not perfect so keep the feedback coming.\\n\\n** Steam **\\n\\n- Windows has a new launch option that lets player start with killing all their scripts\\n This is a safety net in case all the other safety nets fail.\\n- Linux has several launch options that use different flags for different OS.\\n- Debug and Fullscreen are available in the window utility bar.\\n- Tried (and maybe failed) to make the game completely kill itself after closing.\\n This one I still don't know wtf is going.\\n- No longer has background throttling.\\n- Default color should be pitch black when loading\\n- Add BN13: Challenge achievement.\\n\\n** Tutorial **\\n\\n- I watched someone play bitburner on youtube and reworked part of\\n the tutorial to try to make some parts of the game clearer.\\n https://www.youtube.com/watch?v=-_JETXff4Zo\\n- Add option to restart tutorial.\\n\\n** Netscript **\\n\\n- getGangInformation returns more information.\\n- getAscensionResult added\\n- getMemberInformation returns more info\\n- Formulas API has new functions for gang.\\n- Added documentation for corp API.\\n- exec has clearer error message when you send invalid data.\\n- getServer returns all defined field for hacknet servers.\\n- Fix a bug with scp multiple files (@theit8514)\\n- Stack traces should be smarter at replacing blobs with filenames\\n- Fix a weird error message that would occur when throwing raw strings.\\n- Fix shortcuts not working.\\n- Re-added setFocus and isFocused (@theit8514)\\n- new function getHashUpgrades (@MartinFournier)\\n- enableLog accepts \\\"ALL\\\" like disableLog (@wynro)\\n- toast() doesn't crash on invalid data (@ivanjermakov)\\n- alert() doesn't crash on invalid data (@Siern)\\n- Fixed an issue where scripts don't run where they should.\\n- Sleeve getInformation now returns cha\\n- getServer does work with no argument now\\n- workForFaction returns false when it mistakenly returned null\\n\\n** Character Overview **\\n\\n- The character overview now shows the amount of exp needed to next level (@MartinFournier)\\n\\n** Misc. **\\n\\n- Add option to supress Game Saved! toasts (@MartinFournier)\\n- Fix bug where ctrl+alt+j was eaten by the wrong process. (@billyvg)\\n- Theme Editor lets you paste colors (@MartinFournier)\\n- ctrl + u/k/w should work on terminal (@billyvg)\\n- Game now shows commit number, this is mostly for me. (@MartinFourier)\\n- running a bad script will give a clearer error message (@TheCoderJT)\\n- Default terminal capacity is maximum (@SayntGarmo)\\n- Fix problems with cp and mv (@theit8514)\\n- Make monaco load fully offline for players behind firewalls.\\n- change beginer guide to use n00dles instead of foodnstuff\\n- BN13 is harder\\n- nerf int gain from manualHack\\n- Fix UI displaying wrong stats (@DJMatch3000)\\n- Fix button not disabling as it should.\\n- New location in Ishima.\\n- Add setting to suppress stock market popups.\\n- Typo fixes (@Hedrauta, @cvr-119, @Ationi, @millennIumAMbiguity\\n @TealKoi, @TheCoderJT, @cblte, @2PacIsAlive, @MageKing17,\\n @Xynrati, @Adraxas, @pobiega)\\n- Fix 100% territory achievement.\\n- Reword message on active scripts page.\\n- Fix terminal not clearing after BN\\n- Remove references to .fconf\\n- Augmentation pages shows BN difficulty with SF5\\n- Fix scripts saving on wrong server while 'connect'ing\\n- Fix gym discount not working.\\n- Fix scan-analyze not working with timestamps\\n- Hash upgrades remember last choice.\\n- Save files now sort by date\\n- The covenant no longer supports negative memory purchases\\n- Fix corp shares buyback triggering by pressing enter\\n- Staneks gift display avg / num charges\\n- Infiltration rewards no longer decay with better stats\\n- terminal 'true' is parsed as boolean not string\\n- tail and kill use autocomplete()\\n- Fix focus for coding contract\\n- massive boost to noodle bar.\\n\\n** Special Thanks **\\n\\n- Special thank you to everyone on Discord who can answer\\n new player questions so I can focus on more important things.\\n\\n## v1.1.0 - 2021-12-03 BN13: They're Lunatics (hydroflame & community)\\n\\n** BN13: They're Lunatics **\\n\\n- BN13 added.\\n\\n** Steam **\\n\\n- Tested on all 3 major OS.\\n- 94 achievements added\\n- Release is 2021-12-10.\\n\\n** Corporation API **\\n\\n- Added corporation API. (Unstable)\\n\\n** Netscript **\\n\\n- tprintf crashes when not giving a format as first arg.\\n- tprintf no longer prints filename (@BartKoppelmans)\\n- TIX buy/sell/sellShort all return askprice/bidprice (@Insight)\\n- getRunningScript now works.\\n- Fix disableLog for gang and TIX API\\n- getOwnedSourceFiles is not singularity anymore (makes it easier to share scripts.) (@theit8514)\\n- true/false is a valid value to send to other scripts.\\n- workForFaction no longer returns null when trying to work for gang.\\n- Scripts logging no longer generates the string if logging is disabled.\\n This should give performance boost for some scripts.\\n\\n** Gang **\\n\\n- Gang with 0 territory can no longer fight\\n- Territory now caps at exactly 0 or 1.\\n\\n** Misc. **\\n\\n- Clicking \\\"previous\\\" on the browser will not pretend you had unsaved information\\n allowing you to cancel if needs be.\\n- Fixed some tail box coloring issue.\\n- Fixed BladeBurner getCityCommunities ram cost\\n- The download terminal command no longer duplicate extensions (@Insight)\\n- Fix #000 on #000 text in blackjack. (@Insight)\\n- Remove reference to .fconf\\n- Tail boxes all die on soft reset.\\n- Fix codign contract focus bug.\\n- Megacorp factions simply re-invite you instead of auto added on reset. (@theit8514)\\n- Tail window is bound to html body.\\n- Infiltration reward is tied to your potential stats, not your actual stats\\n So you won't lose reward for doing the same thing over and over.\\n- intelligence lowers program creation requirements.\\n- Terminal parses true as the boolean, not the string.\\n- Tail and kill autocomplete using the ns2 autocomplete feature.\\n- scan-analyze doesn't take up as many terminal entries.\\n- GangOtherInfo documentation now renders correctly.\\n- ActiveScripts search box also searches for script names.\\n- Infinite money no longer allows for infinite hacknet server.\\n- Blackjack doesn't make you lose money twice.\\n- Recent Scripts is now from most to least recent.\\n- Fix mathjax ascii art bug in NiteSec.\\n- Remove warning that the theme editor is slow, it's only slow in dev mode.\\n- In BN8 is it possible to reduce the money on a server without gaining any.\\n- In the options, the timestamp feature has a placeholder explaining the expected format.\\n- Bunch of doc typo fix. (hydroflame & @BartKoppelmans & @cvr-119)\\n- nerf noodle bar\\n\\n## v1.0.2 - 2021-11-17 It's the little things (hydroflame)\\n\\n** Breaking (very small I promise!) **\\n\\n- buy / sell now return getAskPrice / getBidPrice instead of just price.\\n This should help solve some inconsistencies.\\n\\n** Misc. **\\n\\n- scripts logs are colorized. Start your log with SUCCESS, ERROR, FAIL, WARN, INFO.\\n- documentation for scp not say string | string[]\\n- Donation link updated.\\n- nerf noodle bar\\n\\n## v1.0.1 - 2021-11-17 New documentation (hydroflame)\\n\\n** Documentation **\\n\\n- The new documentation for the netscript API is available at\\n https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md\\n This documentation is used in-game to validate the code, in-editor to autocomplete, and\\n for users to reference. This is a huge quality of life improvements for me.\\n\\n** Reputation **\\n\\n- Fixed favor not affecting faction work reputation gain (Yeah, I know right?)\\n\\n** Hacknet **\\n\\n- Servers are now considerd \\\"purchasedByPlayers\\\"\\n\\n** Script Editor **\\n\\n- solarized themes now work.\\n\\n** Corporation **\\n\\n- Dividends are now much more taxed.\\n- The 2 upgrades that reduced taxes are now much stronger.\\n\\n** Misc. **\\n\\n- Starting / Stopping scripts on hashnet servers immediately updates their hash rate (instead of on the next tick)\\n- Hacknet has tooltip showing what the result of the upgrade would be.\\n- Augmentations page displayes current price multiplier as well as explains the mechanic.\\n- Terminal now is 25x stronger.\\n- Tail boxes use pre-wrap for it's lines.\\n- Tail boxes allow you to rerun dead scripts.\\n- Tail boxes can no longer open the same one twice.\\n- Terminal now autocompletes through aliases.\\n- Make alter reality harder.\\n- Fix bladeburner cancelling actions when manually starting anything with Simulacrum.\\n- Buying hash upgrade to increase uni class or gym training will apply to current class.\\n- Internally the game no longer uses the decimal library.\\n- Fix an issue where 'download \\\\*' would generate weird windows files.\\n- Timestamps can be set to any format in the options.\\n- Fix typo in documentation share popup.\\n- Remove bunch of debug log.\\n- Fix typo in corporation handbook literature.\\n- Fix typo in documentation\\n- Fix duplicate SF -1 exploit. (Yeah, an exploit of exploits, now were meta)\\n- Fix offline hacking earning being attributed to hacknet.\\n- nerf noodle bar\\n\\n## v1.0.0 - 2021-11-10 Breaking the API :( (blame hydroflame)\\n\\n** Announcement **\\n\\n- Several API breaks have been implemented.\\n- See the v1.0.0 migration guide under Documentation\\n- Everyone gets 10 free neuroflux level.\\n\\n** Netscript **\\n\\n- Fix a bug that would cause RAM to not get recalculated.\\n- New function: hackAnalyzeSecurity\\n- New function: growthAnalyzeSecurity\\n- New function: weakenAnalyze\\n\\n** Script Editor **\\n\\n- Sometimes warn you about unawaited infinite loops.\\n- ns1 functions are now correctly colors in Monokai.\\n\\n** Programs **\\n\\n- Formulas.exe is a new program that lets you use the formulas API.\\n\\n** Corporations **\\n\\n- Real Estate takes up a tiny bit of room.\\n- Dividends are now taxes exponentially in certain bitnodes.\\n- UI displays how many level of each corporation upgrade.\\n- Fix exploit with going public.\\n- Employee salary no longer increase.\\n\\n** Documentation **\\n\\n- The documentation is now autogenerated into .md files.\\n It is usable but not yet linked to readthedocs. It's on github.\\n\\n** Misc. **\\n\\n- Favor is not internall floating point. Meaning I don't have to save an extra variable.\\n- Manually starting a Bladeburner action cancels unfocused action.\\n- Updated description of gang territory to be clearer.\\n- Hacknet expenses and profit are in different categories.\\n- Fixed favor equation.\\n- Toast messages aren't hidden behind work in progress screen.\\n- Fix bug that made infiltration checkmark look off by one.\\n- Fix some inconsistency with running files that start or don't start with /\\n- Can't tail the same window twice.\\n- Added recovery mode. Hopefully no one will ever have to use it.\\n- Fix readthedocs\\n- Programs now give int exp based on time not program.\\n- Many sing. functions now give int exp.\\n- Active Scripts page now displays some arguments next to script name.\\n- Fixed some invisible black text.\\n- Button colors can be edited.\\n- Added 2 new colors in the theme editor: background primary and background secondary.\\n- infiltration uses key instead of keycode so it should work better on non-american keyboards.\\n- buff noodle bar.\\n\\n## v0.58.0 - 2021-10-27 Road to Steam (hydroflame & community)\\n\\n** Announcement **\\n\\n- To prepare for Steam we will fix some inconsistencies in the Netscript API. Ideally we can also write a\\n save file migration that will automatically convert all breaking changes in your scripts without any\\n player input.\\n\\n** BREAKING (kindof) **\\n\\n- All stock market functions are now under the 'stock' namespace, like 'hacknet'\\n However when you load your game with v0.58.0 for the first time it should automatically convert everything.\\n\\n** SF -1 **\\n\\n- new SF -1: Reality Alteration\\n\\n** Gang **\\n\\n- Ascension formula now better\\n- Karma requirement now much lower in most nodes\\n- Territory heavily penalizes gains\\n- T.R.P. not available outside BN2.\\n\\n** Netscript **\\n\\n- It is no longer possible to send anything but strings or numbers to other scripts. (prevents exploits)\\n- Improve code for some netscript functions (@omuretsu)\\n\\n** Script Editor **\\n\\n- Added Solarized light/dark as theme (@CalvinTrops)\\n- Fixed sleeve namespace smart autocomplete.\\n\\n** Hacknet Servers **\\n\\n- Cores affect grow/weaken like they do on home computer\\n\\n** Infiltration **\\n\\n- Slash game modified to be easier.\\n\\n** Misc. **\\n\\n- Fix typo in corp (@Saynt_Garmo)\\n- Fixed a bug where corp wouldn't let you buyback shares. (@Saynt_Garmo)\\n- Fixed a bug where sleeves couldn't perform some crimes. (@Saynt_Garmo)\\n- Hospitalization and Eating noodles are now toasts (@Saynt_Garmo)\\n- Fixed some repeated code (@omuretsu)\\n- Fixed Character Overview preventing clicks underneath it even when hidden. (@omuretsu)\\n- Fixed typo in tutorial. (@omuretsu)\\n- Create Programs and Factions invitation badges now dissapear when you open their respective pages.\\n- Add killall script in character overview.\\n- Fixed bug in corp that made last city production be the production for all cities for newly created product.\\n- Fix bug that allowed reputation to transfer to new jobs.\\n- Fixed memory leak with ns2.\\n- nerf noodle bar\\n\\n## v0.57.0 - 2021-10-16 It was too cheap! (hydroflame & community)\\n\\n** BREAKING (kindof) **\\n\\n- purchased server cost now scales exponentially past 2^10.\\n I'm going to actually explain this one: Currently the cost of a 2^20GB server is 57b\\n Most players can get that before their first install. In an effort to nerf good players\\n a softcap was added. This softcap is different for every BN.\\n\\n** Script Editor **\\n\\n- Added a theme that is close to monokai. Unfortunately a full monokai is impossible because\\n Monaco doesn't have a very good tokenizer.\\n- Opening a file and connecting to a new server will still save the file on the server that the file\\n was opened.\\n\\n** Netscript **\\n\\n- New function: alert, which creates a textbox.\\n- New function: toast, creates a notification in the bottom right.\\n- New function: upgradeHomeCores (@Saynt_Garmo)\\n- New function: atExit, allows you to set a callback for when the script closes.\\n- New kindof function: autocomplete, this allows you to tell the game what it should\\n autocomplete on the terminal.\\n\\n** Augmentation **\\n\\n- ENM Core (the Augmentation from The Black Hand with the highest rep cost) rep cost\\n reduced from 250 to 175. This will help new players transition from TBH to BitRunners more easily.\\n\\n** Bladeburner **\\n\\n- New general action: Incite Violence. This action adds other action counts but increases chaos.\\n\\n** Misc. **\\n\\n- Current bladeburner action is shown on the character overview.\\n- Fix blackop being #000 on #000.\\n- The last clicked Tail Box goes in front of the others.\\n- Fixed an issue where some values were loaded as 0 when they should be null.\\n- Implemented toasts.\\n- .msg are no longer saved in the text file.\\n- Tail boxes no longer display all the args, they use \\\"...\\\" after 30 characters.\\n- Fixed cancelation penalty bonus not being properly applied after the IP <-> hostname switch.\\n- Fixed an exploit where you could send non-strings or numbers to other scripts.\\n- Fixed issue when trying to work for a faction with a work type that doesn't exist while\\n already working for that faction.\\n- Fixed not being able to work for the CIA. (Don't ask)\\n- nerf noodle bar\\n\\n## v0.56.0 - 2021-10-11 Trimming the backlog (hydroflame & community)\\n\\n** BREAKING **\\n\\n- The 'write' function is now async. This helps when making scripts that write scripts.\\n\\n** Terminal **\\n\\n- 'grow' and 'weaken' have been added as terminal command. This should help player transition\\n from commands to scripts. The tutorial also talks about it.\\n- 'cp' command added\\n- Improved performance by rate limiting refresh.\\n\\n** IP vs Hostname **\\n\\n- The game now uses hostname as primary key for it's servers (yeah believe it or not IPs were\\n used until then). This has caused some issues with purchased servers (they couldn't be sold).\\n You might need to soft reset for the game to fully convert itself.\\n\\n** Sleeve **\\n\\n- Fixed bug where they couldn't train at Volhaven.\\n- No longer consume all bonus time at once, making it look buggy.\\n\\n** SF9 **\\n\\n- Now boosts hacknet production by 8/12/14%\\n\\n** Hacknet Servers **\\n\\n- production nerfed by 10%\\n- Max money increase gets weaker above 10t max money\\n\\n** Corporation **\\n\\n- Warehouse tooltip now also displays the amount of space taken by products.\\n- Changed research box completely to avoid dependency on Treant (Treant is a pita)\\n- All textbox should accept MAX/MP case insensitive.\\n- Fixed export popup not refreshing dropdowns correctly.\\n- Fixed product mku becoming zero\\n- Increased scaling of Wilson to avoid feedback loop.\\n- Can no longer get in debt by buying real estate\\n- Bonus time is consumed faster.\\n\\n** Netscript **\\n\\n- isBusy takes bitverse and infiltration into account\\n- hospitalize can't be called when in infiltration.\\n- setToCommitCrime now accepts crime rough name instead of perfect name.\\n- disableLog All now works for bladeburner functions.\\n- Fixed netscript port for ns1.\\n\\n** Augmentation **\\n\\n- Added augmentation to Ti Di Hui that removes penalty for being unfocused.\\n- Neuroflux no longer appears in special factions.\\n\\n** Script Editor **\\n\\n- Ram check is debounced instead of refreshed every second.\\n- Added the vscode extension documentation to the game (it doesn't work well, thought)\\n- Fixed issue where autocomplete list would grow forever\\n- Added semi-monokai as theme.\\n- Fixed issue where modifying filename would mess it up.\\n- Font size can be changed now.\\n\\n** Infiltration **\\n\\n- Fixed issue where game controls would become unfocused.\\n\\n** Misc. **\\n\\n- Fixed loader incorrectly assuming some null values are incorrect.\\n- installBackdoor trigger Bitverse sequence\\n- Some improvements to the theme editor\\n- Improved documentation about where to learn javascript.\\n- Added some instructions for contributors.\\n- Fixed typo in corporation sell shares modal (@Saynt_Garmo)\\n- Fixed pagination being black on black in Active Scripts\\n- Create Script tab renamed to Script Editor\\n- Fixed an issue where corp some textbox wouldn't update when changing city.\\n- Fixed an issue where hacknet online time was always 0.\\n- Netscript function prompt fixed.\\n- Fixed miscalculation in growth.\\n- Script with syntax errors will try to be a tad more helpful.\\n- Corporations can no longer bribe bladeburners.\\n- Augmentation Graphene Branchiblade renamed to Brachi, like the rest of them.\\n- All ram is displayed in GB/TB/PB now.\\n- Game now saves when saving a file, this can be turned off.\\n- Several improvement to log window.\\n- Bladeburner current action returns General type instead of the name of the action.\\n- Bladeburner travel and Sleeve travel respect disable ASCII.\\n- Tutorial fits on small screens.\\n- Import is much slower but more consistent now.\\n- Fix intelligence not updating properly.\\n- Added SF -1: Time Compression\\n- ReadTheDoc theme now matches the game.\\n- Logbox should wrap text better\\n- Logbox behavior should feel better.\\n- Fix font for AutoLink.exe\\n- nerf noodle bar\\n\\n## v0.55.0 - 2021-09-20 Material UI (hydroflame & community)\\n\\n** Global **\\n\\n- The game is now 100% in typescript, react, and Material-UI\\n\\n** Misc. **\\n\\n- Corporations can no longer bribe special factions\\n- Infiltration can no longer lose focus of the keyboard.\\n- Fix terminal line limit\\n- Added theme editor\\n- Theme applies on game load (@Nolshine)\\n- Sleeves no longer consume all bonus time for some actions\\n- Fix a bug where the autocomlete list would get duplicates\\n- Fix tutorial not scaling properly on small screens\\n- Import should be more consistent\\n- Typo with 'help' command\\n- Fix infinite loop in casino\\n- nerf noodle bar\\n\\n## v0.54.0 - 2021-09-20 One big react node (hydroflame & community)\\n\\n** UI **\\n\\n- The UI is now completely(ish) in react and I'm starting to implement\\n Material-UI everywhere. This will help make the game feel more consistent.\\n- Major help from (@threehams)\\n- New Terminal\\n- New Active Scripts page\\n- New sidebar.\\n- New Character overview\\n- New tutorial\\n- New options page\\n- New create program page (@Nolshine)\\n\\n** Netscript **\\n\\n- Add companyName to getPlayer\\n\\n** Factions **\\n\\n- Megacorp factions are no longer removed when installing.\\n\\n** Corporation **\\n\\n- All research tooltips are always visible.\\n- Smart supply is enabled by default if purchased (@Nolshine)\\n\\n** Misc. **\\n\\n- Fix \\\"Game saved\\\" animation. (@Nolshine)\\n- Update commitCrime documentation (@Tryneus)\\n- Fix logbox scrolling weird (@Nolshine)\\n- Fix weird scrolling in corporations (@BartKoppelmans)\\n- Fix typo (@BartKoppelmans & @Nolshine)\\n- Delete game now has a confirmation modal (@Nolshine)\\n- Fix issue where skills would not get properly updated when entering new\\n BN. (@Nolshine)\\n- Convert create gang to popup (@vmesecher)\\n- Fixed a bug that prevented travel to Sector-12 and New Tokyo when not using\\n ASCII art.\\n- nerf noodle bar\\n\\n## v0.53.0 - 2021-09-09 Way too many things. (hydroflame & community)\\n\\n** Dev? **\\n\\n- The entire codebase has been run through a code prettifier, hurray for consistency. (@threehams)\\n- Lots of test. (@threehams)\\n- Massive improvements to build speed. (@threehams)\\n- Dev notes: This won't affect any players but is immensely useful for me.\\n\\n** Hacknet **\\n\\n- Converted to ts/react\\n\\n** Resleeving **\\n\\n- Converted to ts/react\\n\\n** Sleeves **\\n\\n- Converted to ts/react. The ui should also have a better feel.\\n- Fixed a bug that allowed players to recover shock much faster than intended.\\n\\n** BN10 **\\n\\n- You have access to Sleeves right away\\n- In BN10 Sleeves start with 75 shock and 25 sync.\\n\\n** MathJax **\\n\\n- Several tooltips have been updated to display the relevant formula in Mathjax, e.g. Favor and reputation\\n\\n** Corporation **\\n\\n- Completely rewritten in React. Paving the way for bigger change.\\n- Smart Supply is now smarter and won't deadlock the warehouse. It is also more configurable.\\n- Several UI fixes.\\n\\n** Bladeburner **\\n\\n- Action count is no longer decided when joining the Bladeburners. Experiences for all players should be more similar.\\n\\n** Factions **\\n\\n- No factions have home computer ram requirement. This caused some confusion for new players.\\n\\n** Gang **\\n\\n- Made it clear when there's a new equipment coming up.\\n\\n** Netscript **\\n\\n- getActionCountRemaining now returns Infinity for bladeburner general actions. (@brubsy)\\n- getActionEstimatedSuccessChance now returns 100% for Diplomacy and Hyperbolic Regeneration Chamber. (@brubsy)\\n- disableLog('ALL') now disables all logs individually, meaning you can re-enable the ones you want after. (@Cass)\\n- getPlayer returns numPeopleKilled.\\n- Dynamic RAM calculation errors have a better error message.\\n- Hide some functions from autocomplete.\\n- Added getAugmentationPrice, getAugmentationRepReq, deprecated getAugmentationCost. (@TempFound)\\n- Fixed bug where some crime API would return \\\"assassinate\\\" when that's not accepted in other functions.\\n\\n** Coding Contract **\\n\\n- Spiralize Matrix is easier to read.\\n\\n** Misc. **\\n\\n- The world map is now used in sleeve travel and bladeburner travel.\\n- noselect a bunch of stuff.\\n- Ascii maps letters are more contrasting\\n- Updated documentation for infiltration.\\n- Most money costs in the game will turn grey/cyan when you don't have enough money.\\n- Donation textbox has better look & feel.\\n- Tech vendors ram & cores buttons have better look and feels.\\n- cores cost modified to be a formula instead of a semi-random array of numbers.\\n- Tech vendors now give a hint about where to get bigger servers.\\n- logboxes now displays whitespaces exactly. (@Cass)\\n- nerf noodle bar\\n\\n## v0.52.9 - 2021-08-27 Less lag! (hydroflame & community)\\n\\n** Active Scripts page **\\n\\n- Now less laggy, has pagination.\\n\\n** File diagnostic **\\n\\n- Added a popup found under options that shows the files you own and how\\n large they are. This help find bugs and leftover massive logs files.\\n\\n** Corporation **\\n\\n- Added safeguard against a very specific bug that causes NaN money. I'm\\n still not sure what the root cause is but it should prevent corp from\\n breaking.\\n\\n** Netscript **\\n\\n- tprintf is a new function that doesn't print the filename.\\n\\n** Misc. **\\n\\n- Infiltration kills you if you try to automate it. (@threehams)\\n- Fix beautify button not working\\n- Added bladeburner_analysis_mult to getPlayer() (@brubsby)\\n- Fixed joining bladeburner via netscript functions. (@omuretsu)\\n- All bladeburner actions are click-to-copy\\n- nerf noodle bar\\n\\n## v0.52.8 - 2021-08-23 Fixing the previous patch tbh ROUND 2 (hydroflame)\\n\\n** Script editor **\\n\\n- Correctly reloads old script when clicking \\\"Script Editor\\\"\\n- No longer jumps to the end of the text for no reason.\\n\\n** Hash upgrades **\\n\\n- Fixed an issue where the default option would say ecorp but was really\\n foodnstuff\\n\\n** Misc. **\\n\\n- The \\\"Delete all active script\\\" button under the options has a clearer\\n description.\\n- Removed some debug console.log\\n- nerf noodle bar\\n\\n## v0.52.7 - 2021-08-21 Fixing the previous patch tbh (hydroflame)\\n\\n** Netscript **\\n\\n- API BREAKING CHANGE: getActionEstimatedSuccessChance now returns a pair of\\n value to reflect the UI changes. I'm very sorry.\\n\\n** Bladeburner **\\n\\n- General actions now display time required.\\n- Recruitment now displays success chance.\\n- All other success chance now display a range instead of a single value\\n The real value is guaranteed to be within that range.\\n\\n** Misc. **\\n\\n- Fix tutorial not working after Monaco upate\\n- Fix logbox logs not taking up the whole logbox\\n- Fix script editor shortcut (ctrl+b)\\n- Fix Corporation popup appearing in the wrong order, hiding one of them\\n- Fix error when loading Corp\\n- Fix logbox dragging (smoother now)\\n- Fix logbox name collision\\n- Fix logbox allowing to open the same box multiple times\\n- Fix netscript write.\\n- nerf noodle bar\\n\\n## v0.52.6 - 2021-08-21 Logboxes and VS-code (hydroflame)\\n\\n** Text Editor **\\n\\n- Ace and Codemirror have been removed in favor of monaco (web version of\\n vs-code). The options are a bit lackluster but more will be added as\\n feedback comes.\\n\\n** Log boxes **\\n\\n- Multiple log boxes can be opened at once. They can be moved around the\\n screen. (but the movement behavior is a bit weird.)\\n\\n** Misc. **\\n\\n- Job promotion now correctly updates the UI.\\n- Milestones now call the faction CyberSec instead of CSEC\\n- Can no longer create file that break the filesystem.\\n- Remove dollar sign in blade contract UI element\\n- nerf noodle bar\\n\\n## v0.52.5 - 2021-08-19 CPU cores are useful!? (hydroflame)\\n\\n** Terminal **\\n\\n- When executing 'run SCRIPT' any script can now add '--tail' to\\n automatically bring up the logs.\\n\\n** Netscript **\\n\\n- The 'flags' function now works with single letter flags but they only take\\n one dash.\\n- Fix several broken bladeburner netscript functions.\\n- Fix gang.getMemberInformation returning inconsistent data after the gang\\n rework.\\n\\n** CPU Cores **\\n\\n- CPU Cores on the home computer now provide a bonus to grow() money gain\\n and makes weaken lower more security. Only for scripts running on 'home'\\n\\n** Misc. **\\n\\n- Fix weird scrolling in the new Bladeburner React console.\\n- nerf noodle bar\\n\\n## v0.52.4 - 2021-08-19 Bladeburner in React (hydroflame)\\n\\n** Bladeburner **\\n\\n- The entire UI was rebuild in React. It should be more responsive\\n\\n** Hacknet **\\n\\n- Displays how many time each hash upgrade was bought.\\n- Displays cummulative effect of the upgrade.\\n- Removed \\\"Close\\\" button from hash upgrade menu.\\n\\n** Misc. **\\n\\n- More popup/modals have dark background, can be dismissed by clicking\\n outside, or by pressing escape.\\n- Small reword in the guide.\\n- Fix several typos in the bladeburner documentation.\\n- Linting (no one cares except the dev)\\n- nerf noodle bar\\n\\n## v0.52.3 - 2021-08-15 Gangs were OP (hydroflame)\\n\\n** Gang **\\n\\n- Significant rework. Ascension is now based on exp gained.\\n- All upgrades give exp bonuses.\\n- Maximum gang members reduced to 12.\\n- Respect required to recruit sharply increased.\\n- Rewritten in React, the UI should be smoother and less laggy now.\\n\\n** Infiltration **\\n\\n- Now isTrusted protected.\\n\\n** Misc. **\\n\\n- Many UI element are now \\\"noselect\\\" protected.\\n- Fixed an issue where you could join the same faction twice via script and\\n UI simultaneously.\\n- Factions list screen converted to React.\\n- nerf noodle bar\\n\\n## v0.52.2 - 2021-08-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)\\n\\n** Source-Files **\\n\\n- Source-File 11 now also provides a small reduction to the price increase\\n multiplier.\\n\\n** Augmentations **\\n\\n- New Augmentation offered by Aevum, themed around 777 and offers some basic\\n programs.\\n- Augmentation descriptions are now more concise and consistent.\\n\\n** Misc. **\\n\\n- nerf noodle bar\\n\\n## v0.52.1 - 2021-08-10 bugfixing (hydroflame & community)\\n\\n** Misc. **\\n\\n- Fix game crash/corruption when quitting a job while working for it unfocused.\\n- Fix typo in corporation Market Data.\\n- Fix typo in docs for hackPercent.\\n- The tutorial encourages the players to connect to home before creating `n00dles.script`\\n- The dark web `buy` command now accepts `-1` (one) and `--list` instead of just `-l`. Helps some confused players.\\n- Character overview screen no longer hidden on the corporation screen.\\n- Infiltration difficulty display is now more explicit (It's a big arrow instead of just one word.)\\n- Fix wrong ram value in tutorial. (@MageKing17)\\n- Plenty of augmentation description cleanup (@Kwazygloo)\\n- Plenty of typo/description fixed (@MageKing17)\\n- Cleanup description of singularity function on readthedocs (@PurePandemonium)\\n- Fix bug when autolinking a server while backdooring (@schroederIT)\\n- nerf noodle bar\\n\\n## v0.52.0 - 2021-06-13 Infiltration 2.0 (hydroflame & community)\\n\\n**Infiltration**\\n\\n- Completely reworked. Not the same mechanic at all.\\n\\n**Terminal**\\n\\n- tail is smarter. It automatically assume the only possible options in some\\n cases.\\n\\n**Intelligence**\\n\\n- Now available when starting BN5 instead of after beating it for the first\\n time.\\n- Nerf the effect of intelligence on reputation gain.\\n\\n**Augmentation**\\n\\n- Added a new augmentation, the 'Unstable Circadian Modulator', whose\\n gimmick is that its stats are randomized every hour.\\n\\n**Netscript**\\n\\n- 'getPlayer' is not a singularity function anymore.\\n- 'hacknetNodes.constants' returns the correct values.\\n- 'createGang' has been added.\\n- 'inGang' has been added.\\n\\n**Tutorial**\\n\\n- Updated the tutorial. Made it look cleaner, fixed typos, etc.\\n\\n**Misc.**\\n\\n- Fix many typos in literature (@kwazygloo)\\n- Fix being able to unfocus from gym and university.\\n- Fix being able to do hacking missions while unfocused.\\n- Fix many typos in Augmentation descriptions (@kwazygloo)\\n- More numbers handle absurdly large values. (@Tesseract1234567890)\\n- Fix many typos (@Tesseract1234567890)\\n- Fixed an issue that caused a UI desync when sleeves were set to workout\\n stats other than strength at the gym.\\n- Fix weird alignment of donation text box and button. (@Tesseract1234567890)\\n- Fixed an issue where reputation could be transfered to new jobs when unfocused.\\n- Empty stack traces should no longer appear.\\n- Purchasing anything with Infinity money doesn't result in NaN.\\n- nerf noodle bar\\n\\n## v0.51.10 - 2021-05-31 Focus Mark, Focus! (hydroflame)\\n\\n**Focus**\\n\\n- You can now use the terminal and write scripts while working for factions\\n but you will gain reputation at a slower rate.\\n\\n**SF -1**\\n\\n- Added a new SF -1: Bypass\\n\\n**Gang**\\n\\n- \\\"Vigilante justice\\\"/\\\"Ethical hacking\\\" now reduces wanted level by a very\\n small percentage as well an absolute value.\\n\\n**Netscript**\\n\\n- 'tFormat' now has a second argument to display with millisecond precision.\\n- 'purchaseSleeveAug' can no longer purchase the same aug over and over for\\n the same sleeve.\\n- fix typo in logging for 'getServerSecurityLevel'\\n- Fixed some weird issue where very rarely you would get 0 exp from 'grow'\\n- 'getActionTime' now returns correct values for Diplomacy and Regeneration.\\n\\n**Corporations**\\n\\n- Fixed an exploit where you could get nearly infinite corporation funds by\\n entering negative numbers in textboxes.\\n- Fixed an exploit where shares could be sold again by clicking the\\n \\\"sell share\\\" button via scripts.\\n\\n**Documentation**\\n\\n- typo fix in purchaseTor\\n- typo fix in basicgameplay/stats\\n\\n**Misc.**\\n\\n- Very large number will no longer appear as \\\"$NaNt\\\"\\n- Hash capacity now displays in the \\\"big number\\\" format.\\n- nerf noodle bar\\n\\n## v0.51.9 - 2021-05-17 offline progress and exports! (hydroflame & community)\\n\\n**Alias**\\n\\n- several commands can be included in 1 alias. Recursive alias now work to\\n a depth of 10. (@Dawe)\\n\\n**Offline**\\n\\n- Offline money gain has been reworked (it is more generous)\\n- If you're not working anywhere and go offline the game will work for you\\n at all your factions evenly.\\n\\n**Export**\\n\\n- Exporting now gives +1 favor to all joined factions every 24h.\\n\\n**Corp**\\n\\n- Self-fund with an invalid name no longer takes away 150b anyway.\\n- Can no longer export negative amount\\n\\n**Bladeburner**\\n\\n- No longer waste overflowing time.\\n\\n**Text Editors**\\n\\n- All settings will now be saved and loaded correctly.\\n\\n**Terminal**\\n\\n- 'scan' now works for servers that are more than 21 character long.\\n\\n**Misc.**\\n\\n- ls now correctly lists all files.\\n- importing auto save+reloads (@Dawe)\\n- Fix a bug where .fconf could not be created\\n- Fix formatting inconsistencies for some logs of netscript functions.\\n- Fix a bug where Cashroot starter kit would appear as [object Object] in\\n confirmation dialog.\\n- Fix some ram not displayed as 0.00GB\\n- Fix error message throw undefined variable error\\n- City hall now has some generic text if you can't create a corp yet.\\n- Deleting a file without extension now returns an appropriate error message.\\n- Fixed an issue where bladeburner would miscalculate the cost of hospitalization.\\n- It is now possible to suppress bladeburner \\\"action stopped\\\" popup.\\n- Updated several dependencies (big who cares, I know)\\n- ls no longer prints lingering newline.\\n- Money earned/spent by sleeves is now tracked under Character>Money\\n- nerf noodle bar\\n\\n## v0.51.8 - 2021-05-07 It was there all along (hydroflame & community)\\n\\n**Servers**\\n\\n- Update n00dles metadata\\n\\n**Netscript**\\n\\n- 'hashGainRate' use the correct 'usedRam' and 'maxRam'\\n- Fix 'setActionAutolevel' logging.\\n- Fix 'setActionLevel' not working at all.\\n- Add 'installBackdoor' singularity function.\\n\\n**Hacknet**\\n\\n- Fix Hacknet Servers total production always displaying 0\\n\\n**Documentation**\\n\\n- Updated guide to no longer recommend BN12.\\n- Fix documentation for maxNumNodes (@ModdedGamers)\\n- Fix typo in 'sourcefiles.rst'\\n- Fix typo in 'recommendedbitnodeorder.rst'\\n- Fix 'getServer' documentation missing 'server' argument.\\n- Fix missing ram cost in 'getData.rst'\\n- Fix basic formulas examples.\\n- Fix typo in BN11 description.\\n- Fix formatting issue in Bladeburner (@Pimgd)\\n\\n**Misc.**\\n\\n- Fix negative money being displayed in full.\\n- Fix Hacking Missions not working.\\n- Fix Corporation tree not rendering.\\n- Fix script being needlessly recompiled. This should save real ram (not game ram)\\n- w0r1d_d43m0n can be backdoored\\n- Coding Contracts title is click-to-copy (@Rodeth)\\n- Covenant memory upgrade works better.\\n- Fix Neuroflux not being correctly calculated when entering BN with SF12.\\n- Delete Active Script now delete all active scripts, not just home.\\n- Now you can 'cd' in directories that only contain '.txt' files.\\n- Fix 'analyze' always saying players had root access\\n- Passive faction rep no longer builds for special factions.\\n- Donation option no longer appears for special factions.\\n- Rephrased some milestones.\\n- donation textbox now accepts money in the format '1b' and the like (@Dawe)\\n- Fix being able to join hated factions simultaneously. (@Dawe)\\n- 'ls' now displays files in multiple column. (Helps players with many files)\\n- Bladeburner multiplers now appear under Character>Stats and\\n Character>Augmentation when they are relevant.\\n- Fix missing functions syntax highlight in codemirror.\\n- Fix infiltration number formatting.\\n- script income transfers to parent on death. This helps keep track of\\n income for scripts that spawn short lived scripts.\\n- nerf noodle bar\\n\\n## v0.51.7 - 2021-04-28 n00dles (hydroflame & community)\\n\\n**Tutorial servers**\\n\\n- All the tutorial servers have been reverted to their original value\\n- The new server n00dles has been added as tutorial server.\\n\\n**Terminal**\\n\\n- 'tail' now accepts Pid.\\n- 'analyze' now handles Hacknet Servers correctly.\\n- 'ServerProfiler.exe' now handles Hacknet Servers correctly.\\n\\n**SF12**\\n\\n- Now makes you start with Neuroflux Governor equal to the level of the SF.\\n\\n**Netscript**\\n\\n- Deprecated 'getServerRam'.\\n- 'getServerMaxRam' added to replace 'getServerRam'\\n- 'getServerUsedRam' added to replace 'getServerRam'\\n- 'getBitnodeMultipliers' is available inside BN5\\n- Time logged by hack/grow/weaken now displays in human time.\\n- thread count logged by hack/grow/weaken now displays with commas every\\n thousands place.\\n\\n**Donation**\\n\\n- Always visible but locked until favor requirements are reached.\\n\\n**Augmentations**\\n\\n- City factions has been rebalanced to give a reason to visit them all.\\n\\n**Sleeves**\\n\\n- Fix sleeves not being able to work at Volhavens gym.\\n\\n**Lint**\\n\\n- This shouldn't change anything but was like 10h of work. So I'm logging it.\\n\\n**Misc.**\\n\\n- Plethora of typo fixed (@Pimgd)\\n- ps documentation fix (@Dawe)\\n- The dev menu now has a quick bitflume option.\\n- Fix SF -1 not being as powerful as intended.\\n- Fix cashroot starter kit not displaying correctly.\\n- Fix DOM element 'character-overview-text' being nested twice.\\n- Hacknet documentation example fix.\\n- Money amount under 1000 dont display 3 decimal anymore.\\n- Fix nextSourceFile flag miscalculation on the bitverse (for Bn12)\\n- Faction invite text says \\\"Decide later\\\"/\\\"Join!\\\" instead of \\\"No\\\"/\\\"Yes\\\"\\n- nerf noodle bar\\n\\n## v0.51.6 - 2021-04-28 Backdoor! (hydroflame & community)\\n\\n**Backdoor**\\n\\n- a new terminal command, backdoor, has been added to help differentiate\\n between the terminal hack command and the netscript hack function. (@dewint)\\n\\n**Servers**\\n\\n- foodnstuff, sigma-cosmetics, and joesguns have been rebalanced to help new players.\\n\\n**Milestones**\\n\\n- A new tab under the Help menu has been added to guide players through the\\n game.\\n\\n**Casino**\\n\\n- Blackjack has been added (@BigD)\\n\\n**Netscript**\\n\\n- 'prompt' now converts input to JSON.\\n- 'getRunningScript' is a new netscript function that returns a bunch of\\n data related to a running script.\\n\\n**Coding contracts**\\n\\n- trivial puzzles should no longer appear.\\n\\n**Infiltration**\\n\\n- All numbers are formatted like the rest of the game.\\n\\n**Misc.**\\n\\n- Server security is capped at 100.\\n- Added option to quit a job.\\n- 'cd' no longer works on unexistent folders.\\n- cd with no arguments brings you back to top level folder (@Andreas)\\n- 'softReset' documentation udpated.\\n- Money tracker now accounts for going to the hospital manually.\\n- codemirror is now the default editor (for new save files)\\n- fix typo in dark web help text (@Rodeth)\\n- so many documentation and typos fixes (@Pimgd)\\n- A corruption visual effect has been added to location with servers that\\n have backdoor installed. (@dewint)\\n- nerf noodle bar\\n\\n## v0.51.5 - 2021-04-20 Flags! (hydroflame)\\n\\n**Netscript**\\n\\n- 'flags' is a new function that helps script handle flags.\\n This is subject to change if it doesn't meet the need of the players.\\n- 'ps' now returns the pid.\\n- 'tail' now works with pid as first argument.\\n- 'tail' hostname defaults to current server. (like the documentation says)\\n- 'isRunning' hostname defaults to current server.\\n- 'isRunning' now works with pid as first argument.\\n\\n**Gang**\\n\\n- Nerfed ascension mechanic once again :(\\n\\n**Misc.**\\n\\n- Souce-File typo fix\\n- Fix 'while you were away' screen.\\n- Bladeburner team size can no longer be set to negative amounts.\\n- nerf noodle bar\\n\\n## v0.51.4 - 2021-04-19 Manual hacking is fun (hydroflame)\\n\\n**Manual hacking**\\n\\n- These bonus require an install or a soft reset to take effect.\\n- Manual hacking gyms and university gives you a 10% discount.\\n- Manual hacking a corporation server decreases the penalty for leaving work\\n early.\\n\\n**BladeBurner**\\n\\n- nerfed int exp gained.\\n\\n**Documentation**\\n\\n- purchaseServer specifies what happens on failure.\\n- Fixed typo in recommended bitnode page.\\n- Removed misleading ram requirements for hacking factions.\\n\\n**Netscript**\\n\\n- growthAnalyze handles Infinity correctly.\\n\\n**Misc.**\\n\\n- Faction Augmentation will list how much reputation is required even after\\n that goal has been reached.\\n- Removed dollar sign in travel agency confirmation dialog box.\\n- Fixed typo in alpha-omega.lit\\n- the 'Game saved!' text no longer blocks the save game/options button.\\n- The text editor now remembers the location of your cursor and restores it.\\n- skills are recalculated instantly.\\n- Fix typo in Operation Zero description.\\n- nerf noodle bar\\n\\n## v0.51.3 - 2021-04-16 Y'all broke it on the first day (hydroflame)\\n\\n**Passive faction reputation**\\n\\n- Reworked, from 1 rep / 2 minute. Now is a complicated percentage of the\\n reputation you'd gain working for them. It's not op but it feels a bit\\n more useful.\\n\\n**Netscript**\\n\\n- print/tprint now take any number of arguments.\\n- print/tprint will now print object as json.\\n- print/tprint now handle passing in an undefined argument properly.\\n\\n**Casino**\\n\\n- Cannot bet negative money anymore.\\n- Roulette max bet is a bit higher.\\n- Coin Flip has a small cooldown.\\n- All buttons reject unstrusted mouse events.\\n\\n**Documentation**\\n\\n- Changed a message that said nsjs only works on Chrome.\\n\\n**Bugfix**\\n\\n- hacknet.maxNumNodes now works for both nodes and servers.\\n- Fixed a bug where the popup boxes would contain data from previous popup boxes.\\n- .js files will also have the 'export async function' boilerplate.\\n\\n**Misc.**\\n\\n- turned off web form autocomplete for the terminal text input.\\n- Fixed an issue on Windows+Firefox where pressing up on the terminal would\\n bring the cursor to the begining of the line. (Issue #836)\\n- Hacknet node names is easier to handle for screen readers.\\n- Money spent on classes is now tracked independently of work money.\\n- running coding contract from the terminal will display its name.\\n- nerf noodle bar\\n\\n## v0.51.2 - 2021-04-09 Vegas, Baby! (hydroflame)\\n\\n**New location: The Iker Molina Casino**\\n\\n- A casino opened in Aevum. However the house is rumored to cheat. If only\\n we could give them a taste of their own medicine.\\n\\n**Misc.**\\n\\n- Link to discord added under options\\n- 'getMemberInformation' doc updated, oops\\n- tech vendor now handle max ram and cores.\\n- nerf noodle bar\\n\\n## v0.51.1 - 2021-04-06 Bugfixes because the author of the last patch sucks (it's hydroflame)\\n\\n**Netscript**\\n\\n- 'getPlayer' returns players faction and tor\\n- 'hospitalization' is a new singularity function.\\n- 'gang.getMemberInformation' now returns more information.\\n- 'hacknet.hashCapacity' is a new hacknet function that returns the maximum hash capacity.\\n\\n**Hospitalization**\\n\\n- Now only cost at most 10% of your money.\\n\\n**Bugfix**\\n\\n- confirmation dialog box no longer use previous text\\n\\n**Accessibility**\\n\\n- The game is a little easier to handle for screen readers (yes, there's an\\n absolute legend playing this game with a screen reader)\\n- Infiltration use buttons instead of a-links\\n- New option to disable ASCII art. This will make the metro map and world\\n map display as a list of buttons.\\n\\n**Misc.**\\n\\n- 'fl1ght.exe' will no longer suggest the combat path. Related faction\\n requirements unchanged.\\n- nerf noodle bar\\n\\n## v0.51.0 - 2021-03-31 Formulas (hydroflame)\\n\\n**Formulas API**\\n\\n- A new API is introduced, this gives players access to various formulas used in the game.\\n It'll help you make more informed decisions.\\n\\n**Netscript**\\n\\n- 'getServer' is a new function meant to be used with the formulas API.\\n- 'getPlayer' is a new function meant to be used with the formulas API.\\n- 'getStats' and 'getCharacterInformation' are deprecated in favor of 'getPlayer'\\n- 'getCurrentServer' is a new function that returns the server the player is currently connected.\\n\\n**Display**\\n\\n- All money should now consistently be orange.\\n- All rep should now consistently be light-yellow.\\n- Most numbers should display consistently now (aka all money is formatted the same).\\n\\n**Click to copy**\\n\\n- Certain UI elements are now 'click-to-copy'\\n\\n** Misc. **\\n\\n- nerf noodle bar\\n\\n## v0.50.2 - 2021-03-25 Everyone asked for this one. (hydroflame)\\n\\n**BitNodeMultipliers**\\n\\n- 'GangKarmaRequirements': a new multipler that influences how much karma is required to make a gang different bitnodes.\\n\\n**Netscript**\\n\\n- 'connect': a new singularity function that connects you to a server. (like the terminal command)\\n- 'manualHack': a new singularity function that performs a manual hack on the players current server.\\n- ns2 stack trace works on Firefox now.\\n\\n**Misc.**\\n\\n- New shortcut, Alt + b, brings you to bladeburner\\n- New shortcut, Alt + g, brings you to gang\\n- nerf noodle bar\\n\\n## v0.50.1 - 2021-03-22 (hydroflame)\\n\\n**Netscript**\\n\\n- getTaskStats works\\n\\n**Source-File -1**\\n\\n- Added a new Exploit\\n\\n**Factions**\\n\\n- Augmentations offered by a Faction but already bought are in a separate list at the bottom of the page.\\n\\n**Bug fixed**\\n\\n- Fixed a bug where completing a maxed non-repeatable BitNode would make its color on the BitVerse like level 1.\\n\\n**Misc.**\\n\\n- Minor spacing in stats tables.\\n- nerf noodle bar\\n\\n## v0.50.0 - 2021-03-20 Intelligence (hydroflame)\\n\\n**Intelligence**\\n\\n- int exp gain and effect has been reworked. It is now much more easy to\\n acquire and far more powerful. The goal here is to feel like players have\\n another tool in their arsenal.\\n\\n**Factions**\\n\\n- Hacking factions no longer have hacking level requirements since their associated servers do.\\n\\n**Misc.**\\n\\n- Sleeve styling.\\n- number formatting\\n- remove wiki button in Hacking Missions.\\n- Fix NaN displayed when very very large numbers are reached.\\n- nerf noodle bar\\n\\n## v0.49.2 - 2021-03-13 (hydroflame)\\n\\n**BN8**\\n\\n- A new bitnode multipler has been added, it lets you reduce money from a\\n server without gaining actually any money. This is important for BN8 where\\n hack/grow can influence the stock market. No money can be gained from\\n hacking but server money can still be reduced.\\n\\n**Documentation**\\n\\n- readthedocs should now be more consistent and many examples were added.\\n\\n**Netscript**\\n\\n- Ace editor will now correctly highlight all functions.\\n- 'tFormat' is a new netscript function that returns a human readable\\n representation of milliseconds. eg. \\\"2 hours 15 minute 43 seconds\\\"\\n\\n**Gang**\\n\\n- style improvements\\n\\n**Bladeburner**\\n\\n- style improvements\\n- fix bug where 'skill list SKILL' would crash if skill is level 0.\\n\\n**Sleeve**\\n\\n- karma gain now scales with sync.\\n\\n**Misc.**\\n\\n- Fix issue where the effective stats under Character>Stats were being calculated.\\n- nerf noodle bar\\n\\n## v0.49.0 - 2021-03-11 Source-File -1 (hydroflame)\\n\\n**Source-File -1**\\n\\n- For advanced players: The game now embraces exploits and will reward\\n players for doing so.\\n\\n**Gang**\\n\\n- ascension is less effective as the ascension multiplier goes up.\\n- territory gain scales with power difference.\\n\\n**Netscript**\\n\\n- 'gang.getEquipmentStats' returns the stats of the equipment.\\n- 'gang.getTaskStats' returns the stats of a task.\\n- 'getCrimeStats' returns the stats of a crime.\\n- Crashes should now print the ns stack trace.\\n- Log messages are now more consistent.\\n- 'softReset' now accepts a callback script like 'installAugmentations'\\n\\n**Misc.**\\n\\n- Minor formatting under Hacking>Active Scripts\\n- option menu colors now match the rest of the game, kinda.\\n- nerf noodle bar\\n\\n## v0.48.0 - ASCII - 2021-03-07 (hydroflame)\\n\\n**ASCII**\\n\\n- Travel Agency now displays a world map\\n- Cities are now top view of metro station maps\\n\\n**Netscript**\\n\\n- 'softReset' is a new netscript function that performs a soft reset\\n regardless of if the player has bought augmentations or not.\\n- 'getAugmentationStats' is a new netscript function that returns the stats of\\n an augmentation.\\n- getCharacterInformation now additionally returns exp\\n- pid resets back to 1 when installing or destroying a BitNode.\\n- New '.ns' scripts start with a main function.\\n- 'hacknet.maxNumNodes' returns the maximum number of hacknet nodes.\\n\\n**Bladeburner**\\n\\n- Current stamina will scale as max stamina increases, this prevents players\\n from having very high penalty when they gain huge amount of exp at the\\n start of a reset.\\n\\n**Misc.**\\n\\n- Fixed an issue where SF3 was listed as infinitly repeatable and SF12 as\\n having a limit of 3.\\n- Fixed an issue where the gang equipment screen would freeze the game if a\\n script installed augmentations while it is open.\\n- All BonusTime now displays in the 'H M S' format.\\n- Donation textbox style updated to match the rest of the game.\\n- Corporation name style updated to match the rest of the game.\\n- minor formatting under Hacking>Active Scripts\\n- typo in BN12 description\\n- BN12 now reduces contract money\\n- Character>Stats percentages are aligned, server and hacknet limit are\\n displayed, if the player has SF5 the reduces stats are shown.\\n- Character>Augmentations now displays by how much the player stats will\\n increase.\\n- Character>Augmentations has a badge indicating how many augs the player\\n has bought but not installed\\n- Character>Factions has a badge indicating how many factions have pending\\n invites.\\n- nerf noodle bar\\n\\n## v0.47.2 - 7/15/2019\\n\\n**Netscript Changes**\\n\\n- Added tail() Netscript function\\n- hacknet.getNodeStats() function now returns an additional property for Hacknet Servers: hashCapacity\\n- When writing to a file, the write() function now casts the data being written to a string (using String())\\n- BitNode-selection page now shows what Source-File level you have for each BitNode\\n- Overloaded kill() function so that you can kill a script by its PID\\n- spawn() now only takes 10 seconds to run (decreased from 20 seconds)\\n- run() and exec() now return the PID of the newly-executed scripts, rather than a boolean\\n - (A PID is just a positive integer)\\n- run(), exec(), and spawn() no longer need to be await-ed in NetscriptJS\\n- Script parsing and RAM calculations now support ES9\\n- installAugmentations() no longer has a return value since it causes all scripts to die\\n- isBusy() now returns true if you are in a Hacking Mission\\n- Bug fix: workForFaction() function now properly accounts for disabled logs\\n- Bug fix: RAM should now be properly calculated when running a callback script with installAugmentations()\\n- Bug fix: Fixed bug that caused scripts killed by exit()/spawn() to \\\"clean up\\\" twice\\n\\n**Misc Changes**\\n\\n- The 'kill' Terminal command can now kill a script by its PID\\n- Added 'Solarized Dark' theme to CodeMirror editor\\n- After Infiltration, you will now return to the company page rather than the city page\\n- Bug fix: Stock Market UI should no longer crash for certain locale settings\\n- Bug fix: You can now properly remove unfinished programs (the `*.exe-N%-INC` files)\\n- Bug fix: Fixed an issue that allowed you to increase money on servers with a 'maxMoney' of 0 (like CSEC)\\n- Bug fix: Scripts no longer persist if they were started with syntax/import errors\\n- Bug fix: 'hack' and 'analyze' Terminal commands are now blocking\\n- Bug fix: Exp earned by duplicate sleeves at universities/gyms now takes hash upgrades into account\\n\\n## v0.47.1 - 6/27/2019\\n\\n- Stock Market changes:\\n\\n - Transactions no longer influence stock prices (but they still influence forecast)\\n - Changed the way stocks behave, particularly with regard to how the stock forecast occasionally \\\"flips\\\"\\n - Hacking & growing a server can potentially affect the way the corresponding stock's forecast changes\\n - Working for a company positively affects the way the corresponding stock's forecast changes\\n\\n- Scripts now start/stop instantly\\n- Improved performance when starting up many copies of a new NetscriptJS script (by Ornedan)\\n- Improved performance when killing scripts\\n- Dialog boxes can now be closed with the ESC key (by jaguilar)\\n- NetscriptJS scripts should now be \\\"re-compiled\\\" if their dependencies change (by jaguilar)\\n- write() function should now properly cause NetscriptJS scripts to \\\"re-compile\\\" (by jaguilar)\\n\\n## v0.47.0 - 5/17/2019\\n\\n- Stock Market changes:\\n\\n - Implemented spread. Stock's now have bid and ask prices at which transactions occur\\n - Large transactions will now influence a stock's price and forecast\\n - This \\\"influencing\\\" can take effect in the middle of a transaction\\n - See documentation for more details on these changes\\n - Added getStockAskPrice(), getStockBidPrice() Netscript functions to the TIX API\\n - Added getStockPurchaseCost(), getStockSaleGain() Netscript functions to the TIX API\\n\\n- Re-sleeves can no longer have the NeuroFlux Governor augmentation\\n\\n - This is just a temporary patch until the mechanic gets re-worked\\n\\n- hack(), grow(), and weaken() functions now take optional arguments for number of threads to use (by MasonD)\\n- codingcontract.attempt() now takes an optional argument that allows you to configure the function to return a contract's reward\\n- Adjusted RAM costs of Netscript Singularity functions (mostly increased)\\n- Adjusted RAM cost of codingcontract.getNumTriesRemaining() Netscript function\\n- Netscript Singularity functions no longer cost extra RAM outside of BitNode-4\\n- Corporation employees no longer have an \\\"age\\\" stat\\n- Gang Wanted level gain rate capped at 100 (per employee)\\n- Script startup/kill is now processed every 3 seconds, instead of 6 seconds\\n- getHackTime(), getGrowTime(), and getWeakenTime() now return Infinity if called on a Hacknet Server\\n- Money/Income tracker now displays money lost from hospitalizations\\n- Exported saves now have a unique filename based on current BitNode and timestamp\\n- Maximum number of Hacknet Servers decreased from 25 to 20\\n- Bug Fix: Corporation employees stats should no longer become negative\\n- Bug Fix: Fixed sleeve.getInformation() throwing error in certain scenarios\\n- Bug Fix: Coding contracts should no longer generate on the w0r1d_d43m0n server\\n- Bug Fix: Duplicate Sleeves now properly have access to all Augmentations if you have a gang\\n- Bug Fix: getAugmentationsFromFaction() & purchaseAugmentation() functions should now work properly if you have a gang\\n- Bug Fix: Fixed issue that caused messages (.msg) to be sent when refreshing/reloading the game\\n- Bug Fix: Purchasing hash upgrades for Bladeburner/Corporation when you don't actually have access to those mechanics no longer gives hashes\\n- Bug Fix: run(), exec(), and spawn() Netscript functions now throw if called with 0 threads\\n- Bug Fix: Faction UI should now automatically update reputation\\n- Bug Fix: Fixed purchase4SMarketData()\\n- Bug Fix: Netscript1.0 now works properly for multiple 'namespace' imports (import \\\\* as namespace from \\\"script\\\")\\n- Bug Fix: Terminal 'wget' command now correctly evaluates directory paths\\n- Bug Fix: wget(), write(), and scp() Netscript functions now fail if an invalid filepath is passed in\\n- Bug Fix: Having Corporation warehouses at full capacity should no longer freeze game in certain conditions\\n- Bug Fix: Prevented an exploit that allows you to buy multiple copies of an Augmentation by holding the 'Enter' button\\n- Bug Fix: gang.getOtherGangInformation() now properly returns a deep copy\\n- Bug Fix: Fixed getScriptIncome() returning an undefined value\\n- Bug Fix: Fixed an issue with Hacknet Server hash rate not always updating\\n\\n## v0.46.3 - 4/20/2019\\n\\n- Added a new Augmentation: The Shadow's Simulacrum\\n- Improved tab autocompletion feature in Terminal so that it works better with directories\\n- Bug Fix: Tech vendor location UI now properly refreshed when purchasing a TOR router\\n- Bug Fix: Fixed UI issue with faction donations\\n- Bug Fix: The money statistics & breakdown should now properly track money earned from Hacknet Server (hashes -> money)\\n- Bug Fix: Fixed issue with changing input in 'Minimum Path Sum in a Triangle' coding contract problem\\n- Fixed several typos in various places\\n\\n## v0.46.2 - 4/14/2019\\n\\n- Source-File 2 now allows you to form gangs in other BitNodes when your karma reaches a very large negative value\\n\\n - (Karma is a hidden stat and is lowered by committing crimes)\\n\\n- Gang changes:\\n\\n - Bug Fix: Gangs can no longer clash with themselve\\n - Bug Fix: Winning against another gang should properly reduce their power\\n\\n- Bug Fix: Terminal 'wget' command now works properly\\n- Bug Fix: Hacknet Server Hash upgrades now properly reset upon installing Augs/switching BitNodes\\n- Bug Fix: Fixed button for creating Corporations\\n\\n## v0.46.1 - 4/12/2019\\n\\n- Added a very rudimentary directory system to the Terminal\\n\\n- Added numHashes(), hashCost(), and spendHashes() functions to the Netscript Hacknet Node API\\n- 'Generate Coding Contract' hash upgrade is now more expensive\\n- 'Generate Coding Contract' hash upgrade now generates the contract randomly on the server, rather than on home computer\\n- The cost of selling hashes for money no longer increases each time\\n- Selling hashes for money now costs 4 hashes (in exchange for $1m)\\n- Bug Fix: Hacknet Node earnings should work properly when game is inactive/offline\\n- Bug Fix: Duplicate Sleeve augmentations are now properly reset when switching to a new BitNode\\n\\n## v0.46.0 - 4/3/2019\\n\\n- Added BitNode-9: Hacktocracy\\n- Changed BitNode-11's multipliers to make it slightly harder overall\\n- Source-File 11 is now slightly stronger\\n- Added several functions to Netscript Sleeve API for buying Sleeve augmentations (by hydroflame)\\n- Added a new stat for Duplicate Sleeves: Memory\\n- Increase baseline experience earned from Infiltration, but it now gives diminishing returns (on exp) as you get to higher difficulties/levels\\n- In Bladeburner, stamina gained from Hyperbolic Regeneration Chamber is now a percentage of your max stamina\\n\\n- Corporation Changes:\\n\\n - 'Demand' value of products decreases more slowly\\n - Bug Fix: Fixed a Corporation issue that broke the Market-TA2 Research\\n - Bug Fix: Issuing New Shares now works properly\\n\\n- Bug Fix: Money Statistics tracker was incorrectly recording profits when selling stocks manually\\n- Bug Fix: Fixed an issue with the job requirement tooltip for security jobs\\n\\n## v0.45.1 - 3/23/2019\\n\\n- Added two new Corporation Researches\\n- General UI improvements (by hydroflame and koriar)\\n- Bug Fix: Sleeve Netscript API should no longer cause Dynamic RAM errors\\n- Bug Fix: sleeve.getSleeveStats() should now work properly\\n\\n## v0.45.0 - 3/22/2019\\n\\n- Corporation changes:\\n\\n - Decreased the time of a full market cycle from 15 seconds to 10 seconds.\\n - This means that each Corporation 'state' will now only take 2 seconds, rather than 3\\n - Increased initial salaries for newly-hired employees\\n - Increased the cost multiplier for upgrading office size (the cost will increase faster)\\n - The stats of your employees now has a slightly larger effect on production & sales\\n - Added several new Research upgrades\\n - Market-TA research now allows you to automatically set sale price at optimal values\\n - Market-TA research now works for Products (not just Materials)\\n - Reduced the amount of Scientific Research needed to unlock the Hi-Tech R&D Laboratory from 10k to 5k\\n - Energy Material requirement of the Software industry reduced from 1 to 0.5\\n - It is now slightly easier to increase the Software industry's production multiplier\\n - Industries now have a maximum number of allowed products, starting at 3. This can be increased through research.\\n - You can now see an approximation of how each material affects an industry's production multiplier by clicking the \\\"?\\\" help tip next to it\\n - Significantly changed the effects of the different employee positions. See updated descriptions\\n - Reduced the amount of money you gain from private investors\\n - Training employees is now 3x more effective\\n - Bug Fix: An industry's products are now properly separated between different cities\\n\\n- The QLink Augemntation is now significantly stronger, but also significantly more expensive (by hydroflame)\\n- Added a Netscript API for Duplicate Sleeves (by hydroflame)\\n- Modified the multipliers of BitNode-3 and BitNode-8 to make them slightly harder\\n- After installing Augmentations, Duplicate Sleeves will now default to Synchronize if their Shock is 0\\n- Bug Fix: Bladeburner's Hyperbolic Regeneration Chamber should no longer instantly refill all stamina\\n- Bug Fix: growthAnalyze() function now properly accounts for BitNode multipliers\\n- Bug Fix: The cost of purchasing Augmentations for Duplicate Sleeves no longer scales with how many Augs you've purchased for yourself\\n\\n## v0.44.1 - 3/4/2019\\n\\n- Duplicate Sleeve changes:\\n\\n - You can now purchase Augmentations for your Duplicate Sleeves\\n - Sleeves are now assigned to Shock Recovery task by default\\n - Shock Recovery and Synchronize tasks are now twice as effective\\n\\n- Changed documentation so that Netscript functions are own their own pages. Sorry if this is annoying, it was necessary for properly cross-referencing\\n- Officially deprecated the Wiki (the fandom site). Use the 'readthedocs' Documentation instead\\n- Bug Fix: 'rm' Terminal and Netscript commands now work on non-program files that have '.exe' in the name (by Github user MasonD)\\n- Bug Fix: The 'Find All Valid Math Expressions' Coding Contract should now properly ignore whitespace in answers\\n- Bug Fix: The 'Merge Overlapping Intervals' Coding Contract should now properly accept 2D arrays when being attempted through Netscript\\n\\n## v0.44.0 - 2/26/2019\\n\\n- Bladeburner Changes:\\n - Reduced the amount of rank needed to earn a skill point\\n - Reduced the effects of the \\\"Reaper\\\" and \\\"Evasive System\\\" skills\\n - Increased the effect of the \\\"Hyperdrive\\\" and \\\"Hands of Midas\\\" skills\\n - Slightly increased the rate which the skill point cost rises for almost all skills\\n - The \\\"Overlock\\\" Skill now has a maximum level of 90 instead of 95\\n - Money earned from Contracts increased by 400%\\n - Changed the way population affects success rate. Extreme populations now have less dramatic effects\\n - Added two new General Actions: Diplomacy and Hyperbolic Regeneration Chamber\\n - Lowered the rep and money cost of the \\\"Blade's Simulacrum\\\" augmentation\\n - Significantly decreased the initial amount of Contracts/Operations (the \\\"Contracts/Operations remaining\\\" value)\\n - Decreased the rate at which the amount of Contracts/Operations increases over time\\n - Decreased the number of successes you need to increase the max level of a Contract/Operation\\n - Increased the average number of Synthoid communities each city has\\n - Reduced the amount by which a successful raid will decrease the population of a city\\n - The \\\"riots\\\" event will now increase the chaos of a city by a greater amount\\n - Significantly increased the effect that Agility and Dexterity have on action time\\n- Added new BitNode multipliers:\\n - HomeComputerRamCost - Affects how much it costs to upgrade home computer's RAM\\n - DaedalusAugsRequirement - Affects how many Augmentations you need in order to get invited to Daedalus\\n - FourSigmaMarketDataCost - Affects how much it costs to unlock the stock market's 4S Market Data\\n - FourSigmaMarketDataApiCost - Affects how much it costs to unlock the stock market's 4S Market Data API\\n- A few minor changes to BitNode multipliers across the board (mostly for the new multipliers)\\n- 'The Covenant' now requires 20 total Augmentations to get invited, rather than 30\\n- You can now purchase permanent Duplicate Sleeves from 'The Covenant'. This requires Source-File 10, and you must be in BN-10 or after\\n- You can now track where all of your money comes from in the 'Stats' page\\n- Increased the money gained from Coding Contracts by 50%\\n- getCharacterInformation() function now returns the player's HP and max HP\\n- Bug Fix: You can no longer disconnect the enemy's connections in Hacking Missions\\n- Bug Fix: Duplicate Sleeve faction reputation gain is now properly affected by faction favor\\n- Bug Fix: After installing Augmentations, the Terminal display will now correctly show the current server as \\\"home\\\"\\n- Bug Fix: Fixed an exploit where you could change the duration of timed functions (e.g. hack, weaken) in NetscriptJS\\n- Bug Fix: You should now properly be able to use the ServerProfile.exe program\\n- Bug Fix: Prevented exploit that allowed you to accept faction invites programmatically through NetscriptJS\\n- Bug Fix: Faction invitations for megacorporations should now work properly\\n\\n## v0.43.1 - 2/11/2019\\n\\n- Terminal changes:\\n\\n - Quoted arguments are now properly parsed. (e.g. 'run f.script \\\"this is one argument\\\"' will be correctly parsed)\\n - Errors are now shown in red text\\n - 'unalias' command now has a different format and no longer needs the quotations\\n - Bug Fix: Fixed several edge cases where autocomplete wasn't working properly\\n\\n- Added two new Bladeburner skills for increasing money and experience gain\\n- Made some minor adjustments to Bladeburner UI\\n- Corporation \\\"Smart Factories\\\" and \\\"Smart Storage\\\" upgrades have slightly lower price multipliers\\n- Added nFormat Netscript function\\n- Added 6 new Coding Contract problems\\n- Updated documentation with list of all Coding Contract problems\\n- Minor improvements for 'Active Scripts' UI\\n- Implemented several optimizations for active scripts. The game should now use less memory and the savefile should be slightly smaller when there are many scripts running\\n- Bug Fix: A Stock Forecast should no longer go above 1 (i.e. 100%)\\n- Bug Fix: The cost of Resleeves should no longer be affected by buying Augs\\n- Bug Fix: Duplicate Sleeves now use their own stats to determine crime success rate, instead of the host consciousness' stats\\n- Bug Fix: You can now call the prompt() Netscript function from multiple scripts simultaneously\\n\\n## v0.43.0 - 2/4/2019\\n\\n- Added BitNode-10: Digital Carbon\\n\\n- Stock Market Changes:\\n\\n - Each stock now has a maximum number of shares you can purchase (both Long and Short positions combined)\\n - Added getStockMaxShares() Netscript function to the TIX API\\n - The cost of 4S Market Data TIX API Access increased from $20b to $25b\\n\\n- Job Changes:\\n\\n - You can now hold multiple jobs at once. This means you no longer lose reputation when leaving a company\\n - Because of this change, the getCharacterInformation() Netscript function returns a slightly different value\\n\\n- Script Editor Changes:\\n\\n - Added new script editor: CodeMirror. You can choose between the old editor (Ace) or CodeMirror\\n - Navigation keyboard shortcuts no longer work if the script editor is focused\\n\\n- Trying to programmatically run a script (run(), exec()) with a 'threads' argument of 0 will now cause the function to return false without running the script\\n- Home Computer RAM is now capped at 2 ^ 30 GB (1073741824 GB)\\n- The maximum amount, maximum RAM, and cost of purchasing servers can now vary between different BitNodes (new BitNode multipliers)\\n- Pop-up dialog boxes are a little bit bigger\\n- Bug Fix: When importing scripts, \\\"./\\\" will now be properly ignored (e.g. import { foo } from \\\"./lib.script\\\" )\\n\\n## v0.42.0 - 1/8/2019\\n\\n- Corporation Changes:\\n\\n - Corporation can now be self-funded with $150b or using seed money in exchange for 500m newly-issued shares\\n - In BitNode-3, you no longer start with $150b\\n - Changed initial market prices for many materials\\n - Changed the way a material's demand, competition, and market price change over time\\n - The sale price of materials can no longer be marked-up as high\\n - Added a Research Tree mechanic. Spend Scientific Research on permanent upgrades for each industry\\n - You can now redistribute earnings to shareholders (including yourself) as dividends\\n - Cost of \\\"Smart Supply\\\" upgraded reduced from $50b to $25b\\n - Now has offline progress, which works similarly to the Gang/Bladeburner mechanics\\n - Slightly reduced the amount of money offered to you by investment firms\\n - Employee salaries now slowly increase over time\\n - Slightly reduced the effect \\\"Real Estate\\\" has on the Production Multiplier for the Agriculture industry\\n - Changed the way your Corporation's value is calculated (this is what determines stock price)\\n - After taking your corporation public, it is now possible to issue new shares to raise capital\\n - Issuing new shares can only be done once every 12 hours\\n - Buying back shares must now be done at a premium\\n - Selling shares can now only be done once per hour\\n - Selling large amounts of shares now immediately impacts stock price (during the transaction)\\n - Reduced the initial cost of the DreamSense upgrade from $8b to $4b, but increased its price multiplier\\n - Reduced the price multiplier for ABC SalesBots upgrade\\n\\n- Added getOrders() Netscript function to the TIX API\\n- Added getAugmentationPrereq() Singularity function (by havocmayhem)\\n- Added hackAnalyzePercent() and hackAnalyzeThreads() Netscript functions\\n- Stock Market, Travel, and Corporation main menu links are now properly styled\\n- Many pop-up/dialog boxes now support the 'Enter' and 'Esc' hotkeys. If you find a pop-up/dialog box that doesnt support this, let me know specifically which one ('Enter' for the default option, 'Esc' for cancelling and closing the pop-up box)\\n- Added \\\"brace_style = preserve_inline\\\" configuration to Script Editor Beautifier\\n- ServerProfiler.exe can now be purchased from the Dark Web\\n- Added an option to copy save data to clipboard\\n- Added total multiplier information on the \\\"Augmentations\\\" page\\n- Bug Fix: gymWorkout() Singularity function should now work properly with Millenium Fitness Gym\\n- Began migrating gameplay information to the ReadTheDocs documentation\\n\\n## v0.41.2 - 11/23/2018\\n\\n- IMPORTANT - Netscript Changes:\\n\\n - rm() now takes an optional parameter that lets you specify on which server to delete the file\\n - Added growthAnalyze() Netscript function\\n\\n- Gang Changes:\\n\\n - UI now displays your chance to win a clash with other gangs\\n - Added getChanceToWinClash() function to the Gang API\\n - Added getEquipmentType() function to the Gang API\\n - Added several new hacking-based equipment and Augmentations\\n - Rebalanced several equipment/upgrades to give less defense\\n - Wanted level gain rate is now be slightly higher for all tasks\\n - Rebalanced parameters for \\\"hacking\\\" tasks\\n\\n- Added new Main Menu configuration in .fconf: \\\"compact\\\"\\n- Added the terminal command 'expr', which can be used to evaluate simple mathematical expressions\\n- Bug Fix: Can no longer purchase duplicate equipment/Augmentations through gang.purchaseEquipment()\\n- Bug Fix: scp() should no longer throw errors when used with 2-arguments and an array of files\\n- Bug Fix: Coding Contracts no longer give money in BitNode-8\\n- Bug Fix: In Bladeburner, you can no longer start a BlackOp through the Netscript API if it has already been completed\\n- Bug Fix: In Bladeburner, fixed a bug which caused the configured 'automate' actions to occasionally be switched to other actions\\n- Bug Fix: 'Return to World' button at locations no longer accumulates event listeners\\n- Bug Fix: Working & taking classes now continuously add/subtract money during the action, instead of doing it at completion\\n- Bug Fix: Top-right overview panel now displays negative money using '-' instead of '()'\\n- Bug Fix: Stock Market UI should no longer show 'NaN' profit immediately after buying a stock\\n\\n## v0.41.1 - 11/5/2018\\n\\n- IMPORTANT - Netscript Changes:\\n\\n - purchaseTor() now returns true if you already have a TOR router (it used to return false)\\n - getPurchasedServerCost() now returns Infinity if the specified RAM is an invalid amount or is greater than the max amount of RAM (2 ^ 20 GB)\\n - Added purchase4SMarketData() and purchase4SMarketDataTixApi() functions\\n - getScriptLogs() now takes in optional arguments that let you get the logs of another script\\n\\n- Stock Market changes:\\n\\n - Stocks now have \\\"maximum prices\\\". These are hidden from the player\\n - If a stock reaches its \\\"maximum price\\\", it will most likely drop in value (although it might still rise)\\n - Each stock has its own, unique maximum price\\n - Maximum price for each stock are randomly generated and change during each 'reset'\\n - Stock Market cycles are now accumulated/stored, much like it is for Gangs and Bladeburners\\n - Accumulated/stored cycles cause stock prices to update up to 50% faster (from every 6 seconds to 4 seconds)\\n - This means that after coming back from being offline, stock prices will update faster to make up for offline time\\n\\n- Decreased the Hacking Level multiplier for BitNodes 6 and 7 to 0.4 (from 0.5)\\n- Bladeburner console history is now saved and persists when switching screens or closing/reopening the game\\n- In Bladeburner, if your stamina reaches 0 your current action will be cancelled\\n- b1t_flum3.exe is no longer removed from your home computer upon reset\\n- Added main menu link for the Stock Market (once you've purchased an account)\\n- Job main menu link only appears if you actually have a job\\n- Bug Fix: Netscript Gang API functions purchaseEquipment() and ascendMember() should now work properly\\n- Bug Fix: After installing Augs, the \\\"Portfolio Mode\\\" button on the Stock Market page should be properly reset\\n- Bug Fix: bladeburner.getActionCountRemaining()'s return value is now rounded down (by Kline-)\\n\\n## v0.41.0 - 10/29/2018\\n\\n- WARNING: In NetscriptJS, defining a function called print() is no longer possible\\n- Gang Mechanic Changes (BitNode-2):\\n - Added a Gang Netscript API\\n - Added new 'ascension' mechanic for Gang Members\\n - The first three gang members are now 'free' (can be recruited instantly)\\n - Maximum number of increased Gang Members increased from 20 to 30\\n - Changed the formula for calculating respect needed to recruit the next gang member\\n - Added a new category of upgrades for Gang Members: Augmentations\\n - Non-Augmentation Gang member upgrades are now significantly weaker\\n - Reputation for your Gang faction can no longer be gained through Infiltration\\n - Re-worked the territory 'warfare' mechanic so that player can choose when to engage in it\\n - Gang Members can now be killed during territory 'warfare'\\n - Changed BitNode-2 Multipliers to make hacking slightly less profitable\\n - Gang Member Equipment + Upgrades now get cheaper as your gang grows in power and respect\\n - The effects of Source-File 2 are now slightly more powerful\\n- RAM Cost of accessing the global document object lowered from 100 GB to 25 GB\\n- RAM Cost to use Singularity Functions outside of BitNode-4 lowered by 75%. They now only cost twice as much as they do in BitNode-4\\n- b1t_flum3.exe now takes significantly less time to create\\n- Crimes commited through Singularity function no longer give half money/exp (there is now no penalty)\\n- Improved number formatting for Player 'work' actions (including crimes, etc.). These numbers should also adhere to locale settings now (by Kline-)\\n- The order that Augmentations are listed in (when purchasing from Faction and viewing your Augmentations) is now saved and persists when choosing different orders\\n- getCharacterInformation() Singularity function now returns multiplier information (from Augmentations/Source Files)\\n- Bug Fix: Calling print() in NetscriptJS no longer brings up the print dialog\\n- Bug Fix: Fixed a bug that sometimes caused a blank black screen when destroying/resetting/switching BitNodes\\n- Bug Fix: Netscript calls that throw errors will now no longer cause the 'concurrent calls' error if they are caught in the script. i.e. try/catch should now work properly in scripts\\n- Bug Fix: Fixed a bug where sometimes the NeuroFlux Governor Augmentation level would be incorrectly calculated when the game was loaded\\n- Bug Fix: Fixed a bug where calling the scp() Netscript function with invalid hostname/ips would throw an unclear error message\\n- Bug Fix: Bladeburner API function getActionCountRemaining() should now work properly for BlackOps\\n- Bug Fix: Black Ops can no longer be attempted out-of-order or without the required rank via Bladeburner API\\n- Bug Fix: Dynamic RAM Calculation now properly accounts for number of threads\\n- RAM cost for basic Netscript functions added to documentation (by CBJamo)\\n\\n## v0.40.5 - 10/09/2018\\n\\n- Added codingcontract.getContractType() Netscript function\\n- Bug Fix: codingcontract.getData() Netscript function now returns arrays by value rather than reference\\n- Bug Fix: Decreased highest possible data value for 'Find Largest Prime Factor' Coding Contract (to avoid hangs when solving it)\\n- Bug Fix: Fixed a bug that caused game to freeze during Coding Contract generation\\n\\n## v0.40.4 - 9/29/2018\\n\\n- Added new Coding Contracts mechanic. Solve programming problems to earn rewards\\n- The write() and read() Netscript functions now work on scripts\\n- Added getStockSymbols() Netscript function to the TIX API (by InfraK)\\n- Added wget() Netscript function\\n- Added bladeburner.getActionRepGain() function to the Netscript Bladeburner API\\n- The getLevelUpgradeCost(), getRamUpgradeCost(), and getCoreUpgradeCost() functions in the Hacknet API now return Infinity if the node is at max level. See documentation\\n- It is now possible to use freely use angled bracket (<, >) and create DOM elements using tprint()\\n- The game's theme colors can now be set through the Terminal configuration (.fconf).\\n- You can now switch to the old left-hand main menu bar through the Terminal configuration (.fconf)\\n- Bug Fix: grow() percentage is no longer reported as Infinity when a server's money is grown from 0 to X\\n- Bug Fix: Infiltration popup now displays the correct amount of exp gained\\n\\n## v0.40.3 - 9/15/2018\\n\\n- Bladeburner Changes:\\n - Increased the effect that agi and dexterity have on action time\\n - Starting number of contracts/operations available will be slightly lower\\n - Random events will now happen slightly more often\\n - Slightly increased the rate at which the Overclock skill point cost increases\\n- The maximum volatility of stocks is now randomized (randomly generated within a certain range every time the game resets)\\n- Increased the range of possible values for initial stock prices\\n- b1t_flum3.exe program can now be created immediately at Hacking level 1 (rather than hacking level 5)\\n- UI improvements for the character overview panel and the left-hand menu (by mat-jaworski)\\n- General UI improvements for displays and Terminal (by mat-jaworski)\\n- Added optional parameters to the getHackTime(), getGrowTime(), and getWeakenTime() Netscript functions\\n- Added isLogEnabled() and getScriptLogs() Netscript functions\\n- Added donateToFaction() Singularity function\\n- Updated documentation to reflect the fact that Netscript port handles (getPortHandle()) only works in NetscriptJS (2.0), NOT Netscript 1.0\\n- Added tryWrite() Netscript function\\n- When working (for a company/faction), experience is gained immediately/continuously rather than all at once when the work is finished\\n- Added a setting in .fconf for enabling line-wrap in the Terminal input\\n- Adding a game option for changing the locale that most numbers are displayed in (this mostly applies for whenever money is displayed)\\n- The randomized parameters of many high-level servers can now take on a higher range of values\\n- Many 'foreign' servers (hackable servers that you don't own) now have a randomized amount of RAM\\n- Added 'wget' Terminal command\\n- Improved the introductory tutorial\\n\\n## v0.40.2 - 8/27/2018\\n\\n- Bladeburner Changes:\\n - Added getBonusTime(), getSkillUpgradeCost(), and getCity() Netscript functions to the API\\n - Buffed the effects of many Bladeburner Augmentations\\n - The Blade's Simulacrum Augmentation requires significantly less reputation but slightly more money\\n - Slightly increased the amount of successes needed for a Contract/Operation in order to increase its max level\\n - Increased the amount of money gained from Contracts by ~25%\\n - Increased the base amount of rank gained from Operations by 10%\\n - Significantly increased the 'randomness' in determining a Contract/Operation's initial count and rate of count increase\\n - The number (count) of Operations should now increase significantly faster\\n - There are now, on average, more Synthoid communities in a city\\n - If automation is enabled (the feature in Bladeburner console), then switching to another action such as working for a company will now disable the automation\\n- Stock Market Changes:\\n - Added a watchlist filter feature to the UI that allows you to specify which stocks to show\\n - Added the Four Sigma (4S) Market Data feed, which provides volatility and price forecast information about stocks\\n - Added the 4S Market Data TIX API, which lets you access the aforementioned data through Netscript\\n- There is now a setting for enabling/disabling the popup that appears when you are hospitalized\\n- Bug Fix: Stock market should now be correctly initialized in BitNode-8 (by Kline-)\\n- Bug Fix: bladeburner.getCurrentAction() should now properly an 'Idle' object rather than null (by Kline-)\\n- Bug Fix: Bladeburner skill cost multiplier should now properly increase in BitNode-12 (by hydroflame)\\n- Bug Fix: 'document', 'hacknet', and 'window' keywords should no longer be counted multiple times in RAM calculations\\n- Bug Fix: Joining factions through Singularity functions should now prevent you from joining opposing factions\\n- Bug Fix: Four Sigma should no longer have two 'Speech Enhancement' Augmentations (by Kline-)\\n\\n## v0.40.1 - 8/5/2018 - Community Update\\n\\n- Added getPurchasedServerCost() Netscript function (by kopelli)\\n- Added getFavorToDonate() Netscript function (by hydroflame)\\n- Added getFactionFavorGain() and getCompanyFavorGain() Singularity functions (by hydroflame)\\n- Accumulated 'bonus' time in Bladeburner is now displayed in the UI (by hydroflame)\\n- The Red Pill can now be purchased with negative money (since its supposed to be free) (by hydroflame)\\n- Cranial Signal Processor Augmentations now have the previous generation as a prerequisite. i.e. Cranial Signal Processor - Gen II requires Gen I (by Kline-)\\n- Terminal now supports semicolon usage (end of command). This allows chaining multiple Terminal commands (by hydroflame)\\n- Bladeburner Raid operations can no longer be performed if your estimate of Synthoid communities is zero (by hydroflame)\\n- The difficulty of BN-12 now scales faster (by hydroflame)\\n- Active Scripts UI now shows a RAM Usage bar for each server (by kopelli)\\n- Bug Fix: Corrected terminal timestamp format (by kopelli)\\n- Bug Fix: NetscriptJS scripts should now die properly if they don't have a 'main' function (by hydroflame)\\n- Bug Fix: write(), read(), and tryWrite() Netscript functions should now work properly for writing Arrays/objects to Netscript Ports\\n- Various minor UI/QOL fixes by hydroflame, kopelli, and Kline-\\n\\n## v0.40.0 - 7/28/2018\\n\\n- **WARNING: This update makes some significant changes to Netscript and therefore you may need to make some changes to your scripts. See** `this post `\\\\_ **this post for details**\\n- Netscript 1.0 (NS1) now uses a fully-fledged ES5 JavaScript Interpreter. This means many new features are now available in NS1, and this also fixes several bugs.\\n However this also means any ES6+ features are no longer supported in NS1\\n- When a server is hacked with a very large number of threads and left with no money, the server's security level\\n now only increases by however many threads were needed to drain the server. For example, if you hack a server with\\n 5000 threads but it only needed 2000 threads to deplete the server's money, then the server's security will only increase\\n as if you had hacked it with 2000 threads (change by hydroflame)\\n- Added getCurrentAction() to Bladeburner API\\n- Added a variety of functions to Bladeburner API that deal with action levels (change by hydroflame)\\n- Added getPurchasedServerLimit() and getPurchasedServerMaxRam() functions to Netscript (change by hydroflame & kopelli)\\n- Added getOwnedSourceFiles() Singularity function (by hydroflame)\\n- Completely re-designed the Hacknet Node API\\n- getSkillLevel() in Bladeburner API now returns an error if no argument is passed in (as opposed to an object with all skill levels). This may break scripts\\n- Minimum Netscript execution time reduced from 15ms to 10ms (configurable in Options)\\n- Company reputation needed to get invited to Megacorporation factions decreased from 250k to 200k\\n- HP is now reset (restored) when Augmenting\\n- Source-File 6 now increases both the level and experience gain of all combat stats (it was only experience gain previously)\\n- Reverted a previous change for Source-File 12. It's benefits are now multiplicative rather than additive\\n- Starting Infiltration security level for almost every location decreased by ~10%\\n- Changed 'fl1ght.exe' message when its listed conditions are fulfilled (by hydroflame)\\n- The 'Save Game' button in the top-right overview panel now flashes red if autosave is disabled\\n- Bug Fix: Infiltration buttons can no longer be clicked through NetscriptJS\\n- Bug Fix: Bladeburner 'Overclock' skill can no longer be leveled above max level through the API (by hydroflame)\\n- Bug Fix: Healthcare division in Bladeburner should no longer cause game to crash\\n\\n## v0.39.1 - 7/4/2018\\n\\n- Bladeburner Rank gain in BN-7 is now reduced by 40% instead of 50%\\n- Quadrupled the amount of money gained from Bladeburner contracts\\n- Added joinBladeburnerDivision() Netscript function to Bladeburner API\\n- Doubled the effects of Source-File 5. Now gives 8%, 12%, and 14% increase to all hacking multipliers at levels 1, 2, and 3, respectively (increased from 4%/6%, 7%)\\n- Increased the effect of Source-File 8. It now gives a 12%, 18% and 21% to your hacking growth multiplier at levels 1, 2, and 3, respectively (increased from 8%, 12%, 14%)\\n- The effect of Source-File 12 is now additive with itself, rather than multiplicative. This means that level N of Source-File 12 now increases all multipliers by N%\\n- The setting to suppress the confirmation box when purchasing Augmentations was moved into the main Options menu (by Github user hydroflame)\\n- Bug Fix: Crime Success rates were being calculated incorrectly (by Github user hydroflame)\\n- When an Infiltration is finished, you will now return back to the company's page, rather than the city\\n- Infiltration faction reputation selector now remembers your last choice\\n- Significantly increased the amount of money gained from Infiltration\\n- Bug Fix: Copying a NetscriptJS script to another server using scp now properly takes into account the script's changes.\\n- Bug Fix: Fixed an issue where game would not load in Edge due to incompatible features\\n- travelToCity() Singularity function no longer grants Intelligence exp\\\"\\n\\n## v0.39.0 - 6/25/2018\\n\\n- Added BitNode-7: Bladeburner 2079\\n- Infiltration base difficulty decreased by 10% for most locations\\n- Experience gains from Infiltration slightly increased\\n- Money gained from Infiltration increased by 20%\\n- Added 'var' declarations in Netscript 1.0 (only works with 'var', not 'let' or 'const')\\n- Script base RAM cost is now 1.6 GB (increased from 1.4 GB)\\n- While/for loops and if statements no longer cost RAM in scripts\\n- Made short-circuit evaluation logic more consistent in Netscript 1.0\\n- Changelog button in the Options menu now links to the new Changelog URL (by Github user thePalindrome)\\n- Skill level calculation is now 'smoother' (by Github user hydroflame)\\n- Added a button to 'beautify' scripts in the text editor (by Github user hydroflame)\\n- Added favicon (by Github user kopelli)\\n\\n## v0.38.1 - 6/15/2018\\n\\n- Bug Fix: Using 'Object.prototype' functions like toLocaleString() or toString() should no longer cause errors in NetscriptJS\\n- Implemented by Github user hydroflame:\\n - Accessing the 'window' and 'document' objects in Netscript JS now requires a large amount of RAM (100 GB)\\n - Added game option to suppress travel confirmation\\n - Text on buttons can no longer be highlighted\\n - Bug Fix: Fixed an issue that caused NaN values when exporting Real Estate in Corporations\\n - Bug Fix: Competition and Demand displays in Corporation are now correct (were reversed before)\\n - Added ps() Netscript function\\n - Bug Fix: grow() should no longer return/log a negative value when it runs on a server that's already at max money\\n - Bug Fix: serverExists() Netscript function should now properly return false for non-existent hostname/ips\\n - Bug Fix: Sever's security level should now properly increase when its money is grown to max value\\n\\n## v0.38.0 - 6/12/2018\\n\\n- New BitNode: BN-12 The Recursion - Implemented by Github user hydroflame\\n- Bladeburner Changes:\\n - Bladeburner progress is no longer reset when installing Augmentations\\n - The number of successess needed to increase a Contract/Operation's max level now scales with the current max level (gradually gets harder)\\n - All Bladeburner Augmentations are now slightly more expensive and require more reputation\\n - Black Operations now give higher rank rewards\\n - Doubled the base amount of money gained from Contracts\\n - Increased the amount of experience gained from Contracts/Actions\\n - Added a new Augmentation: The Blade's Simulacrum\\n - Bladeburner faction reputation gain is now properly affected by favor\\n- Hacking is now slightly less profitable in BitNode-3\\n- Updated Hacknet Nodes UI - Implemented by Github user kopelli\\n- Bug Fix: Fixed an exploit that allowed calling any Netscript function without incurring any RAM Cost in NetscriptJS\\n\\n## v0.37.2 - 6/2/2018\\n\\n- After joining the Bladeburners division, there is now a button to go to the Bladeburner content\\n in the 'City' page\\n- You now start with $250m in BitNode-8 (increased from $100m)\\n- Bug Fix: You can now no longer directly edit Hacknet Node values through NetscriptJS (hopefully)\\n- Bug Fix: Bladeburners is no longer accessible in BN-8\\n- Bug Fix: getBitNodeMultipliers() Netscript function now returns a copy rather than the original object\\n\\n## v0.37.1 - 5/22/2018\\n\\n- You now earn money from successfully completing Bladeburner contracts. The amount you earn is based\\n on the difficulty of the contract.\\n- Completing Field Analysis in Bladeburner now grants 0.1 rank\\n- The maximum RAM you can get on a purchased server is now 1,048,576 GB (2^20)\\n- Bug Fix: Fixed Netscript syntax highlighting issues with the new NetscriptJS\\n- Bug Fix: Netscript Functions now properly incur RAM costs in NetscriptJS\\n- Bug Fix: deleteServer() now fails if its called on the server you are currently connected to\\n- Removed in-game Netscript documentation, since it was outdated and difficult to maintain.\\n- Bug Fix: Updated the gymWorkout() Singularity function with the new exp/cost values for gyms\\n\\n## v0.37.0 - 5/20/2018\\n\\n- NetscriptJS (Netscript 2.0) released\\n- Running the game with the '?noScripts' query will start the game without loading any of your scripts. This should be used if you accidentally write a script that crashes your game\\n\\n## v0.36.1 - 5/11/2018\\n\\n- Bladeburner Changes:\\n - Bug Fix: You can no longer get Bladeburner faction reputation through Infiltration\\n - Initial difficulty of Tracking contracts reduced\\n - Datamancer skill effect increased from 4% per level to 5%\\n - Slightly decreased the base stamina cost of contracts/operations\\n - Slightly increased the effects of the Tracer, Digital Observer, Short Circuit, Cloak, and Blade's Intuition skills\\n - Overclock skill capped at level 95, rather than 99\\n - Training gives significantly more exp/s\\n- Crime, Infiltration, and Hacking are now slightly more profitable in BN-6\\n- Gyms are now more expensive, but give slightly more exp\\n- Added getScriptName() and getHacknetMultipliers() Netscript functions (added by Github user hydroflame)\\n- getScriptRam() Netscript function now has default value for the second argument, which is hostname/ip (implemented by Github user hydroflame)\\n- There is now a soft-cap on stock price, which means it's no longer possible for the price of a stock to reach insanely-high values\\n- The ctrl+b hotkey in the text editor should now also be triggered by command+b on OSX (I don't have OSX so I can't confirm if this works)\\n- Many servers now have additional RAM\\n- Added an option to disable hotkeys/keyboard shortcuts\\n- Refactored 'Active Scripts' UI page to optimize its performance\\n- Added a new .fconf Terminal setting: ENABLE_TIMESTAMP\\n- 'Netscript Execution Time', which can be found in the Options, now has a minimum value of 15ms rather than 25ms\\n- Bug Fix: Fixed a typo in the Fulcrum Technologies company name (Technolgies -> Technologies)\\n- Bug Fix: hacknetnodes keyword should no longer incur RAM cost if its in a comment\\n- Bug Fix: disableLog() now works for the commitCrime() Netscript function (fixed by Github user hydroflame)\\n\\n## v0.36.0 - 5/2/2018\\n\\n- Added BN-6: Bladeburners\\n- Rebalanced many combat Augmentations so that they are slightly less powerful\\n- Bug Fix: When faction invites are suppressed, an invitation will no longer load the Faction page\\n\\n## v0.35.2 - 3/26/2018\\n\\n- Corporation Changes:\\n - Fixed an issue with Warehouse upgrade cost. Should now be significantly cheaper than before.\\n - Scientific Research now has a slightly more significant effect on Product quality\\n - The Energy and Water Utilities industries are now slightly more profitable\\n - The Robotics and Computer Hardware industries are now less profitable\\n - The Software industry is slightly less profitable\\n - When selling Materials and Products, the 'PROD' qualifier can now be used to set dynamic sell amounts based on your production\\n - Exporting MAX should now work properly\\n - You can no longer export past storage limits\\n - Scientific Research production reduced\\n - Effects of AdVert. Inc upgrade were reduced, but the effect that popularity and awareness have on sales was increased to compensate (popularity/awareness numbers were getting too big with Advert. Inc)\\n - Bug Fix: Products from Computer Hardware division should now properly have ratings\\n- Improved Augmentation UI/UX. Now contains collapsible headers and sort buttons\\n- Improved Faction Augmentations display UI/UX. Now contains sort buttons. There is also an option to disable confirmation when purchasing Augmentations\\n\\n## v0.35.1 - 3/12/2018\\n\\n- You can now easily download all of your scripts/text files as zip folders. Use the 'help download' Terminal command for details\\n- Scripts are now downloaded with the .script.js extension at the end of their filename\\n- Corporation Management Changes:\\n - Implemented Smart Supply unlock\\n - Changed the way a division's Production Multiplier is calculated. It is now the sum of the individual Production Multiplier for every city. Therefore, it is now beneficial to open offices in different cities\\n - Several small UI/UX improvements\\n - Numerous balance changes. The significant ones are listed below.\\n - Product descriptions will now display their estimated market price\\n - The sale price of Products can no longer be marked up as high as before\\n - Scientific Research now affects the rating of Products\\n - In general, the maximum amount of product you are able to sell is reduced\\n - Sale bonus from advertising (popularity/awareness) now has diminishing returns rather than scaling linearly\\n- Experience gained during Infiltration now scales linearly based on the clearance level you reach. Compared to before, the experience gained will be much less at lower clearance levels, but much more at higher clearance levels\\n- The editor can now be used to edit both scripts and text files\\n- New Terminal config file that can be edited using the command 'nano .fconf'. Right now there is only one option, but there will be more in the future.\\n- You can now enable Bash-style Terminal hotkeys using the .fconf file referenced above\\n- Bug Fix: Fixed an issue with the UI elements of Gang Management persisting across different instances of BitNode-2\\n\\n## v0.35.0 - 3/3/2018\\n\\n- Minor rebalancing of BitNodes due to the fact that Corporations provide a (relatively) new method of progressing\\n- Corporation Management Changes:\\n - Once your Corporation gets big/powerful enough, you can now bribe Factions for reputation using company funds an/or stock shares\\n - You can now only create one Division for every Industry type\\n - Added several new UI/UX elements\\n - Wilson Analytics multiplier was significantly reduced to 1% per level (additive).\\n - Reduced the effect of Advert Inc upgrade. Advert Inc. upgrade price increases faster\\n - Materials can now be marked up at higher prices\\n- Added Javascript's built-in Number object to Netscript\\n- Added getCharacterInformation(), getCompanyFavor(), and getFactionFavor() Netscript Singularity functions\\n- Rebalanced Singularity Function RAM Costs. They now cost x8 as much when outside of BN-4 (rather than x10). Also, many of the functions now use significantly less RAM\\n- Refactored Netscript Ports. You can now get a handle for a Netscript port using the getPortHandle() Netscript function. This allows you to access a port's underlying queue (which is just an array) and also makes several new functions available such as tryWrite(), full(), and empty().\\n- Number of Netscript Ports increased from 10 to 20\\n- Netscript assignments should now return proper values. i.e. i = 5 should return 5.\\n- Added throw statements to Netscript. It's not super useful since 'catch' isn't implemented, but it can be used to generate custom runtime error messages.\\n- Added import declaration to Netscript. With this, you are able to import functions (and only functions) from other files. Using export declarations is not necessary\\n- Most Netscript Runtime errors (the ones that cause your script to crash) should now include the line number where the error occured\\n- When working for a company, your current company reputation is now displayed\\n- Whenever you get a Faction Invite it will be immediately appended to your 'invited factions' list. Therefore the checkFactionInvitations() Singularity Function should now be properly useable since you no longer need to decline a Faction Invitation before it shows up in the result.\\n- Bug Fix: When purchasing servers, whitespace should now automatically be removed from the hostname\\n- Bug Fix: Can no longer have whitespace in the filename of text files created using write()\\n- Bug Fix: In Netscript, you can no longer assign a Hacknet Node handle (hacknetnodes[i]) to another value\\n- Bug Fix: If you are in the Factions tab when you accept an invitation from a Faction, the page will now properly 'refresh'\\n- Bug Fix: Scripts that run recursive functions should now be killed properly\\n\\n## v0.34.5 - 2/24/2018\\n\\n- Corporation Management Changes:\\n - Market Research unlocks are now cheaper\\n - New 'VeChain' upgrade: displays useful statistics about Corporation\\n - Corporation cycles are processed 25% faster\\n - Corporation valuation was lowered by ~10% (this affects stock price and investments)\\n - Rebalanced the effects of advertising. Should now be more effective for every Industry\\n - Fixed several bugs/exploits involving selling and buying back stock shares\\n - You will now receive a Corporation Handbook (.lit file) when starting out BitNode-3. It contains a brief guide to help you get started. This same handbook can be viewed from the Corporation management screen\\n - Slightly decreased the amount by which a Product's sell price can be marked up\\n - Employees can now be assigned to a 'Training' task, during which they will slowly increase several of their stats\\n- Hopefully fixed an exploit with Array.forEach(). If there are any issues with using forEach, let me know\\n- Arguments passed into a script are now passed by value. This means modifying the 'args' array in a script should no longer cause issues\\n- Scripts executed programatically (via run(), exec(), etc.) will now fail if null/undefined is passed in as an argument\\n- Added peek() Netscript function\\n- killall() Netscript function now returns true if any scripts were killed, and false otherwise.\\n- hack() Netscript function now returns the amount of money gained for successful hacks, and 0 for failed hacks\\n- scp Terminal command and Netscript function now work for txt files\\n- Changes courtesy of Wraithan:\\n - Text files are now displayed using 'pre' rather than 'p' elements when using the 'cat' Terminal command. This means tabs are retained and lines don't automatically wrap\\n - ls() Netscript function now returns text files as well\\n- Removed round() Netscript function, since you can just use Math.round() instead\\n- Added disableLog() and enableLog() Netscript functions\\n- Removed the 'log' argument from sleep(), since you can now use the new disableLog function\\n- 'Netscript Documentation' button on script editor now points to new readthedocs documentation rather than wiki\\n- When working for a faction, your current faction reputation is now displayed\\n- Bug Fix: Hacking Missions should no longer break when dragging an existing connection to another Node\\n- Bug Fix: Fixed RAM usage of getNextHacknetNodeCost() (is not 1.5GB instead of 4GB)\\n\\n## v0.34.4 - 2/14/2018\\n\\n- Added several new features to Gang UI to make it easier to manage your Gang.\\n- Changed the Gang Member upgrade mechanic. Now, rather than only being able to have one weapon/armor/vehicle/etc., you can purchase all the upgrades for each Gang member and their multipliers will stack. To balance this out, the effects (AKA multipliers) of each Gang member upgrade were reduced.\\n- Added a new script editor option: Max Error Count. This affects how many approximate lines the script editor will process (JSHint) for common errors. Increasing this option can affect negatively affect performance\\n- Game theme colors (set using 'theme' Terminal command) are now saved when re-opening the game\\n- 'download' Terminal command now works on scripts\\n- Added stopAction() Singularity function and the spawn() Netscript function\\n- The 'Purchase Augmentations' UI screen will now tell you if you need a certain prerequisite for Augmentations.\\n- Augmentations with prerequisites can now be purchased as long as their prerequisites are puchased (before, you had to actually install the prerequisites before being able to purchase)\\n\\n## v0.34.3 - 1/31/2018\\n\\n- Minor balance changes to Corporations:\\n - Upgrades are generally cheaper and/or have more powerful effects.\\n - You will receive more funding while your are a private company.\\n - Product demand decreases at a slower rate.\\n - Production multiplier for Industries (receives for owning real estate/hardware/robots/etc.) is slightly higher\\n- Accessing the hacknetnodes array in Netscript now costs 4.0GB of RAM (only counts against RAM usage once)\\n- Bug Fix: Corporation oustanding shares should now be numeric rather than a string\\n- Bug Fix: Corporation production now properly calculated for industries that dont produce materials.\\n- Bug Fix: Gangs should now properly reset when switching BitNodes\\n- Bug Fix: Corporation UI should now properly reset when you go public\\n\\n## v0.34.2 - 1/27/2018\\n\\n- Corporation Management Changes:\\n - Added advertising mechanics\\n - Added Industry-specific purchases\\n - Re-designed employee management UI\\n - Rebalancing: Made many upgrades/purchases cheaper. Receive more money from investors in early stage. Company valuation is higher after going public\\n - Multiple bug fixes\\n- Added rm() Netscript function\\n- Updated the way script RAM usage is calculated. Now, a function only increases RAM usage the first time it is called. i.e. even if you call hack() multiple times in a script, it only counts against RAM usage once. The same change applies for while/for loops and if conditionals.\\n- The RAM cost of the following were increased:\\n - If statements: increased by 0.05GB\\n - run() and exec(): increased by 0.2GB\\n - scp(): increased by 0.1GB\\n - purchaseServer(): increased by 0.25GB\\n- Note: You may need to re-save all of your scripts in order to re-calculate their RAM usages. Otherwise, it should automatically be re-calculated when you reset/prestige\\n- The cost to upgrade your home computer's RAM has been increased (both the base cost and the exponential upgrade multiplier)\\n- The cost of purchasing a server was increased by 10% (it is now $55k per RAM)\\n- Bug fix: (Hopefully) removed an exploit where you could avoid RAM usage for Netscript function calls by assigning functions to a variable (foo = hack(); foo('helios');)\\n- Bug fix: (Hopefully) removed an exploit where you could run arbitrary Javascript code using the constructor() method\\n- Thanks to Github user mateon1 and Reddit users havoc_mayhem and spaceglace for notifying me of the above exploits\\n- The fileExists() Netscript function now works on text files (.txt). Thanks to Github user devoidfury for this\\n\\n## v0.34.1 - 1/19/2018\\n\\n- Updates to Corporation Management:\\n - Added a number of upgrades to various aspects of your Corporation\\n - Rebalanced the properties of Materials and the formula for determining the valuation of the Corporation\\n - Fixed a number of bugs\\n- 'Stats' page now shows information about current BitNode\\n- You should now be able to create Corporations in other BitNodes if you have Source-File 3\\n- Added a new create-able program called b1t_flum3.exe. This program can be used to reset and switch BitNodes\\n- Added an option to adjust autosave interval\\n- Line feeds, newlines, and tabs will now work with the tprint() Netscript function\\n- Bug fix: 'check' Terminal command was broken\\n- Bug fix: 'theme' Terminal command was broken when manually specifying hex codes\\n- Bug fix: Incorrect promotion requirement for 'Business'-type jobs\\n- Bug fix: Settings input bars were incorrectly formatted when loading game\\n\\n## v0.34.0 - 12/6/2017\\n\\n- Added clear() and exit() Netscript functions\\n- When starting out or prestiging, you will now receive a 'Hacking Starter Guide'. It provides tips/pointers for new players\\n- Doubled the amount of RAM on low-level servers (up to required hacking level 150)\\n- Slightly increased experience gain from Infiltration\\n- buyStock(), sellStock(), shortStock(), and sellShort() Netscript function now return the stock price at which the transaction occurred, rather than a boolean. If the function fails for some reason, 0 will be returned.\\n- Hacking Mission Changes:\\n - You can now select multiple Nodes of the same type by double clicking. This allows you to set the action of all of selected nodes at once (e.g. set all Transfer Nodes to Fortify). Creating connections does not work with this multi-select functionality yet\\n - Shield and Firewall Nodes can now fortify\\n - The effects of Fortifying are now ~5% lower\\n - Conquering a Spam Node now increases your time limit by 25 seconds instead of 15\\n - Damage dealt by Attacking was slightly reduced\\n - The effect of Scanning was slightly reduced\\n - Enemy CPU Core Nodes start with slightly more attack. Misc Nodes start with slightly less defense\\n- Corporation Management changes:\\n - Added several upgrades that unlock new features\\n - Implemented Exporting mechanic\\n - Fixed many bugs\\n\\n## v0.33.0 - 12/1/2017\\n\\n- Added BitNode-3: Corporatocracy. In this BitNode you can start and manage your own corporation. This feature is incomplete. Much more will be added to it in the near future\\n- Minor bug fixes\\n\\n## v0.32.1 - 11/2/2017\\n\\n- Updated Netscript's 'interpreter/engine' to use the Bluebird promise library instead of native promises. It should now be faster and more memory-efficient. If this has broken any Netscript features please report it through Github or the subreddit (reddit.com/r/bitburner)\\n- Rebalanced stock market (adjusted parameters such as the volatility/trends/starting price of certain stocks)\\n- Added prompt() Netscript function\\n- Added 'Buy Max' and 'Sell All' functions to Stock Market UI\\n- Added 'Portfolio' Mode to Stock Market UI so you can only view stocks you have a position/order in\\n- Added a button to kill a script from its log display box\\n\\n## v0.32.0 - 10/25/2017\\n\\n- Added BitNode-8: Ghost of Wall Street\\n- Re-designed Stock Market UI\\n- Minor bug fixes\\n\\n## v0.31.0 - 10/15/2017\\n\\n- Game now saves to IndexedDb (if your browser supports it). This means you should no longer have trouble saving the game when your save file gets too big (from running too many scripts). The game will still be saved to localStorage as well\\n- New file type: text files (.txt). You can read or write to text files using the read()/write() Netscript commands. You can view text files in Terminal using 'cat'. Eventually I will make it so you can edit them in the editor but that's not available yet. You can also download files to your real computer using the 'download' Terminal command\\n- Added a new Crime: Bond Forgery. This crime takes 5 minutes to attempt and gives $4,500,000 if successful. It is meant for mid game.\\n- Added commitCrime(), getCrimeChance(), isBusy(), and getStats() Singularity Functions.\\n- Removed getIntelligence() Netscript function\\n- Added sprintf and vsprintf to Netscript. See [https://github.com/alexei/sprintf.js this Github page for details]\\n- Increased the amount of money gained from Infiltration by 20%, and the amount of faction reputation by 12%\\n- Rebalanced BitNode-2 so that Crime and Infiltration are more profitable but hacking is less profitable. Infiltration also gives more faction rep\\n- Rebalanced BitNode-4 so that hacking is slightly less profitable\\n- Rebalanced BitNode-5 so that Infiltration is more profitable and gives more faction rep\\n- Rebalanced BitNode-11 so that Crime and Infiltration are more profitable. Infiltration also gives more faction rep.\\n- Fixed an annoying issue in Hacking Missions where sometimes you would click a Node but it wouldnt actually get selected\\n- Made the Hacking Mission gameplay a bit slower by lowering the effect of Scan and reducing Attack damage\\n- Slightly increased the base reputation gain rate for factions when doing Field Work and Security Work\\n\\n## v0.30.0 - 10/9/2017\\n\\n- Added getAugmentations() and getAugmentationsFromFaction() Netscript Singularity Functions\\n- Increased the rate of Intelligence exp gain\\n- Added a new upgrade for home computers: CPU Cores. Each CPU core on the home computer grants an additional starting Core Node in Hacking Missions. I may add in other benefits later. Like RAM upgrades, upgrading the CPU Core on your home computer persists until you enter a new BitNode.\\n- Added lscpu Terminal command to check number of CPU Cores\\n- Changed the effect of Source-File 11 and made BitNode-11 a little bit harder\\n- Fixed a bug with Netscript functions (the ones you create yourself)\\n- Hacking Missions officially released (they give reputation now). Notable changes in the last few updates:\\n - Misc Nodes slowly gain hp/defense over time\\n - Conquering a Misc Node will increase the defense of all remaining Misc Nodes that are not being targeted by a certain percentage\\n - Reputation reward for winning a Mission is now affected by faction favor and Player's faction rep multiplier\\n - Whenever a Node is conquered, its stats are reduced\\n\\n## v0.29.3 - 10/3/2017\\n\\n- Fixed bug for killing scripts and showing error messages when there are errors in a player-defined function\\n- Added function name autocompletion in Script Editor. Press Ctrl+space on a prefix to show autocompletion options.\\n- Minor rebalancing and bug fixes for Infiltration and Hacking Missions\\n\\n## v0.29.2 - 10/1/2017\\n\\n- installAugmentations() Singularity Function now takes a callback script as an argument. This is a script that gets ran automatically after Augmentations are installed. The script is run with no arguments and only a single thread, and must be found on your home computer.\\n- Added the ability to create your own functions in Netscript. See [[Netscript Functions|this link]] for details\\n- Added :q, :x, and :wq Vim Ex Commands when using the Vim script editor keybindings. :w, :x, and :wq will all save the script and return to Terminal. :q will quit (return to Terminal) WITHOUT saving. If anyone thinks theres an issue with this please let me know, I don't use Vim\\n- Added a new Augmentation: ADR-V2 Pheromone Gene\\n- In Hacking Missions, enemy nodes will now automatically target Nodes and perform actions.\\n- Re-balanced Hacking Missions through minor tweaking of many numbers\\n- The faction reputation reward for Hacking Missions was slightly increased\\n\\n## v0.29.1 - 9/27/2017\\n\\n- New gameplay feature that is currently in BETA: Hacking Missions. Hacking Missions is an active gameplay mechanic (its a minigame) that is meant to be used to earn faction reputation. However, since this is currently in beta, hacking missions will NOT grant reputation for the time being, since the feature likely has many bugs, balance problems, and other issues. If you have any feedback regarding the new feature, feel free to let me know\\n- CHANGED THE RETURN VALUE OF getScriptIncome() WHEN RAN WITH NO ARGUMENTS. It will now return an array of two values rather than a single value. This may break your scripts, so make sure to update them!\\n- Added continue statement for for/while loops\\n- Added getServerMinSecurityLevel(), getPurchasedServers(), and getTimeSinceLastAug() Netscript functions\\n- Netscript scp() function can now take an array as the first argument, and will try to copy every file specified in the array (it will just call scp() normally for every element in the array). If an array is passed in, then the scp() function returns true if at least one element from the array is successfully copied\\n- Added Javascript's Date module to Netscript. Since 'new' is not supported in Netscript yet, only the Date module's static methods will work (now(), UTC(), parse(), etc.).\\n- Failing a crime now gives half the experience it did before\\n- The forced repeated 'Find The-Cave' message after installing The Red Pill Augmentation now only happens if you've never destroyed a BitNode before, and will only popup every 15 minutes. If you have already destroyed a BitNode, the message will not pop up if you have messages suppressed (if you don't have messages suppressed it WILL still repeatedly popup)\\n- fileExists() function now works on literature files\\n\\n## v0.29.0 - 9/19/2017\\n\\n- Added BitNode-5: Artificial Intelligence\\n- Added getIp(), getIntelligence(), getHackingMultipliers(), and getBitNodeMultipliers() Netscript functions (requires Source-File 5)\\n- Updated scan() Netscript function so that you can choose to have it print IPs rather than hostnames\\n- Refactored scp() Netscript function so that it takes an optional 'source server' argument\\n- For Infiltration, decreased the percentage by which the security level increases by about 10% for every location\\n- Using :w in the script editor's Vim keybinding mode should now save and quit to Terminal\\n- Some minor optimizations that should reduce the size of the save file\\n- scan-analyze Terminal command will no longer show your purchased servers, unless you pass a '-a' flag into the command\\n- After installing the Red Pill augmentation from Daedalus, the message telling you to find 'The-Cave' will now repeatedly pop up regardless of whether or not you have messages suppressed\\n- Various bugfixes\\n\\n## v0.28.6 - 9/15/2017\\n\\n- Time required to create programs now scales better with hacking level, and should generally be much faster\\n- Added serverExists(hostname/ip) and getScriptExpGain(scriptname, ip, args...) Netscript functions\\n- Short circuiting && and || logical operators should now work\\n- Assigning to multidimensional arrays should now work\\n- Scripts will no longer wait for hack/grow/weaken functions to finish if they are killed. They will die immediately\\n- The script loop that checks whether any scripts need to be started/stopped now runs every 6 seconds rather than 10 (resulting in less delays when stopping/starting scripts)\\n- Fixed several bugs/exploits\\n- Added some description for BitNode-5 (not implemented yet, should be soon though)\\n\\n## v0.28.5 - 9/13/2017\\n\\n- The fl1ght.exe program that is received from jump3r is now sent very early on in the game, rather than at hacking level 1000\\n- Hostname is now displayed in Terminal\\n- Syntax highlighting now works for all Netscript functions\\n- Export should now work on Edge/IE\\n\\n## v0.28.4 - 9/11/2017\\n\\n- Added getScriptIncome() Netscript function\\n- Added Javascript's math module to Netscript. See [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math this link for details]\\n- Added several member variables for the Hacknet Node API that allow you to access info about their income\\n- All valid Netscript functions are now syntax highlighted as keywords in the editor. This means they will a different color than invalid netscript functions. The color will depend on your theme. Note that right now, this only applies for normal Netscript functions, not functions in the TIX API, Hacknet Node API, or Singularity Functions.\\n- Comments and operators no longer count towards RAM usage in scripts.\\n- Variety of bug fixes and updates to informational text in the game\\n\\n## v0.28.3 - 9/7/2017\\n\\n- Added ls() Netscript function\\n- Increased company wages by about ~10% across the board\\n- The scp() Netsction function and Terminal command now works for .lit files\\n- Increased the amount of RAM on many lower level servers (up to level 200 hacking level required).\\n\\n## v0.28.2 - 9/4/2017\\n\\n- Added several configuration options for script editor (key bindings, themes, etc.)\\n- Certain menu options will now be hidden until their relevant gameplay is unlocked. This includes the Factions, Augmentations, Create Program, Travel, and Job tabs. This will only affect newer players.\\n- Most unrecognize or un-implemented syntax errors in Netscript will now include the line number in the error message\\n\\n## v0.28.1 - 9/1/2017\\n\\n- The script editor now uses the open-source Ace editor, which provides a much better experience when coding!\\n- Added tprint() Netscript function\\n\\n## v0.28.0 - 8/30/2017\\n\\n- Added BitNode-4: The Singularity\\n- Added BitNode-11: The Big Crash\\n- Migrated the codebase to use webpack (doesn't affect any in game content, except maybe some slight performance improvements and there may be bugs that result from dependency errors\\n\\n## v0.27.3 - 8/19/2017\\n\\n- You can now purchase upgrades for Gang Members (BitNode 2 only)\\n- Decreased Gang respect gains and slightly increased wanted gains (BitNode 2 only)\\n- Other gangs will increase in power faster (BitNode 2 only)\\n- Added getHackTime(), getGrowTime(), and getWeakenTime() Netscript functions\\n\\n## v0.27.2 - 8/18/2017\\n\\n- Added getServerGrowth() Netscript function\\n- Added getNextHacknetNodeCost() Netscript function\\n- Added new 'literature' files (.lit extension) that are used to build lore for the game. These .lit files can be found in certain servers throughout the game. They can be viewed with the 'cat' Terminal command and copied over to other servers using the 'scp' command. These .lit files won't be found until you reset by installing Augmentations\\n- Fixed some bugs with Gang Territory(BitNode 2 only)\\n\\n## v0.27.1 - 8/15/2017\\n\\n- Changed the way Gang power was calculated to make it scale better late game (BitNode 2 only)\\n- Lowered the respect gain rate in Gangs (Bitnode 2 only)\\n- Added '| grep pattern' option for ls Terminal command. This allows you to only list files that contain a certain pattern\\n- Added break statement in Netscript\\n- Display for some numerical values is now done in shorthand (e.g 1.000m instead of 1,000,000)\\n\\n## v0.27.0 - 8/13/2017\\n\\n- Added secondary 'prestige' system - featuring Source Files and BitNodes\\n- MILD SPOILERS HERE: Installing 'The Red Pill' Augmentation from Daedalus will unlock a special server called w0r1d_d43m0n. Finding and manually hacking this server through Terminal will destroy the Player's current BitNode, and allow the player to enter a new one. When destroying a BitNode, the player loses everything except the scripts on his/her home computer. The player will then gain a powerful second-tier persistent upgrade called a Source File. The player can then enter a new BitNode to start the game over. Each BitNode has different characteristics, and many will have new content/mechanics as well. Right now there are only 2 BitNodes. Each BitNode grants its own unique Source File. Restarting and destroying a BitNode you already have a Source File for will upgrade your Source File up to a maximum level of 3.\\n\\n- Reputation gain with factions and companies is no longer a linear conversion, but an exponential one. It will be much easier to gain faction favor at first, but much harder later on.\\n- Significantly increased Infiltration exp gains\\n- Fixed a bug with company job requirement tooltips\\n- Added scriptRunning(), scriptKill(), and getScriptRam() Netscript functions. See documentation for details\\n- Fixed a bug with deleteServer() Netscript function\\n\\n## v0.26.4 - 8/1/2017\\n\\n- All of the 'low-level servers' in early game that have a required hacking level now have 8GB of RAM instead of 4GB\\n- Increased the amount of experience given at university\\n- Slightly increased the production of Hacknet Nodes and made them cheaper to upgrade\\n- Infiltration now gives slightly more EXP and faction reputation\\n- Added two new crimes. These crimes are viable to attempt early on in the game and are relatively passive (each take 60+ seconds to complete)\\n- Crimes give more exp and more money\\n- Max money available on a server decreased from 50x the server's starting money to 25x\\n- Significantly increased wages for all jobs\\n\\n## v0.26.3\\n\\n- Added support for large numbers using Decimal.js. Right now it only applies for the player's money\\n- Purchasing servers with the Netscript function purchaseServer() is no longer 2x as expensive as doing manually it now costs the same\\n- Early game servers have more starting money\\n\\n## v0.26.2\\n\\n- Major rebalancing and randomization of the amount of money that servers start with\\n- Significantly lowered hacking exp gain from hacking servers. The exp gain for higher-level servers was lowered more than that of low level servers. (~16% for lower level servers, up to ~25% for higher-level servers)\\n- Added deleteServer() Netscript function\\n- You can now purchase a maximum of 25 servers each run (Deleting a server will allow you to purchase a new one)\\n- Added autocompletion for './' Terminal command\\n- Darkweb prices now displayed properly using toLocaleString()\\n- Added NOT operator (!) and negation operator(-) in Netscript, so negative numbers should be functional now\\n- Rejected faction invitations will now show up as 'Outstanding Faction Invites' in the Factions page. These can be accepted at any point in the future\\n- Added a few more configurable game settings for suppressing messages and faction invitations\\n- Added tooltips for company job requirements\\n\\n## v0.26.1\\n\\n- Added autocompletion for aliases\\n- Added getServerRam() Netscript function()\\n- Added getLevelUpgradeCost(n), getRamUpgradeCost(), getCoreUpgradeCost() functions for Netscript Hacknet Node API\\n- Added some configurable settings (See Game Options menu)\\n\\n## v0.26.0\\n\\n- Game now has a real ending, although it's not very interesting/satisfying right now. It sets up the framework for the secondary prestige system in the future\\n- Forgot to mention that since last update, comments now work in Netscript. Use // for single line comments or /\\\\* and \\\\*/ for multiline comments just like in Javascript\\n- Added ports to Netscript. These ports are essentially serialized queues. You can use the write() Netscript function to write a value to a queue, and then you can use the read() Netscript function to read the value from the queue. Once you read a value from the queue it will be removed. There are only 10 queues (1-10), and each has a maximum capacity of 50 entries. If you try to write to a queue that is full, the the first value is removed. See wiki/Netscript documentation for more details\\n- You can now use the 'help' Terminal command for specific commands\\n- You can now use './' to run a script/program (./NUKE.exe). However, tab completion currently doesn't work for it (I'm working on it)\\n- Decreased the base growth rate of servers by ~25%\\n- Both the effect of weaken() and its time to execute were halved. In other words, calling weaken() on a server only lowers its security by 0.05 (was 0.1 before) but the time to execute the function is half of what it was before. Therefore, the effective rate of weaken() should be about the same\\n- Increased all Infiltration rewards by ~10%, and increased infiltration rep gains by an additional 20% (~32% total for rep gains)\\n- The rate at which the security level of a facility increases during Infiltration was decreased significantly (~33%)\\n- Getting treated at the Hospital is now 33% more expensive\\n- Slightly increased the amount of time it takes to hack a server\\n- Slightly decreased the amount of money gained when hacking a server (~6%)\\n- Slightly decreased the base cost for RAM on home computer, but increased the cost multiplier. This means that upgrading RAM on the home computer should be slightly cheaper at the start, but slightly more expensive later on\\n- Increased the required hacking level for many late game servers\\n- The sleep() Netscript function now takes an optional 'log' argument that specifies whether or not the 'Sleeping for N milliseconds' will be logged for the script\\n- Added clearLog() Netscript function\\n- Deleted a few stocks. Didn't see a reason for having so many, and it just affects performance. Won't take effect until you reset by installing Augmentations\\n- There was a typo with Zeus Medical's server hostname. It is now 'zeus-med' rather than 'zeud-med'\\n- Added keyboard shortcuts to quickly navigate between different menus. See wiki link (http://bitburner.wikia.com/wiki/Shortcuts)\\n- Changed the Navigation Menu UI\\n\\n## v0.25.0\\n\\n- Refactored Netscript to use the open-source Acorns Parser. This re-implementation was done by [https://github.com/MrNuggelz Github user MrNuggelz]. This has resulted in several changes in the Netscript language. Some scripts might break because of these changes. Changes listed below:\\n- Arrays are now fully functional Javascript arrays. You no longer need to use the 'Array' keyword to declare them.\\n- The length(), clear/clear(), insert(), and remove() functions no longer work for arrays.\\n- All Javascript array methods are available (splice(), push(), pop(), join(), shift(), indexOf(), etc. See documentation)\\n- Variables assigned to arrays are now passed by value rather than reference\\n\\n- Incrementing/Decrementing are now available (i++, ++i)\\n\\n- You no longer need semicolons at the end of block statements\\n\\n- Elif is no longer valid. Use 'else if' instead\\n\\n- Netscript's Hacknet Node API functions no longer log anything\\n- Stock prices now update every ~6 seconds when the game is active (was 10 seconds before)\\n- Added a new mechanic that affects how stock prices change\\n- Script editor now has dynamic indicators for RAM Usage and Line number\\n- Augmentation Rebalancing - Many late game augmentations are now slightly more expensive. Several early game augmentations had their effects slightly decreased\\n- Increased the amount of rewards (both money and rep) you get from infiltration\\n- Purchasing servers is now slightly more expensive\\n- Calling the Netscript function getServerMoneyAvailable('home') now return's the player's money\\n- Added round(n) Netscript function - Rounds a number\\n- Added purchaseServer(hostname, ram) Netscript function\\n- Added the TIX API. This must be purchased in the WSE. It persists through resets. Access to the TIX API allows you to write scripts that perform automated algorithmic trading. See Netscript documentation\\n- Minor rebalancing in a lot of different areas\\n- Changed the format of IP Addresses so that they are smaller (will consist mostly of single digit numbers now). This will reduce the size of the game's save file.\\n\\n## v0.24.1\\n\\n- Adjusted cost of upgrading home computer RAM. Should be a little cheaper for the first few upgrades (up to ~64GB), and then will start being more expensive than before. High RAM upgrades should now be significantly more expensive than before.\\n- Slightly lowered the starting money available on most mid-game and end-game servers (servers with required hacking level greater than 200) by about 10-15%\\n- Rebalanced company/company position reputation gains and requirements\\n- Studying at a university now gives slightly more EXP and early jobs give slightly less EXP\\n- Studying at a university is now considerably more expensive\\n- Rebalanced stock market\\n- Significantly increased cost multiplier for purchasing additional Hacknet Nodes\\n- The rate at which facility security level increases during infiltration for each clearance level was lowered slightly for all companies\\n- Updated Faction descriptions\\n- Changed the way alias works. Normal aliases now only work at the start of a Terminal command (they will only replace the first word in the Terminal command). You can also create global aliases that work on any part of the command, like before. Declare global aliases by entering the optional -g flag: alias -g name=\\\"value\\\" - [https://github.com/MrNuggelz Courtesy of Github user MrNuggelz]\\n- 'top' Terminal command implemented courtesy of [https://github.com/LTCNugget Github user LTCNugget]. Currently, the formatting gets screwed up if your script names are really long.\\n\\n## v0.24.0\\n\\n- Players now have HP, which is displayed in the top right. To regain HP, visit the hospital. Currently the only way to lose HP is through infiltration\\n- Infiltration - Attempt to infiltrate a company and steal their classified secrets. See 'Companies' documentation for more details\\n- Stock Market - Added the World Stock Exchange (WSE), a brokerage that lets you buy/sell stocks. To begin trading you must first purchase an account. A WSE account will persist even after resetting by installing Augmentations. How the stock market works should hopefully be self explanatory. There is no documentation about it currently, I will add some later. NOTE: Stock prices only change when the game is open. The Stock Market is reset when installing Augmentations, which means you will lose all your stocks\\n- Decreased money gained from hacking by ~12%\\n- Increased reputation required for all Augmentations by ~40%\\n- Cost increase when purchasing multiple augmentations increased from 75% to 90%\\n- Added basic variable runtime to Netscript operations. Basic commands run in 100ms. Any function incurs another 100ms in runtime (200ms total). Any function that starts with getServer incurs another 100ms runtime (300ms total). exec() and scp() require 400ms total.\\n- Slightly reduced the amount of experience gained from hacking\\n\\n## v0.23.1\\n\\n- scan() Netscript function now takes a single argument representing the server from which to scan.\\n\\n## v0.23.0\\n\\n- You can now purchase multiple Augmentations in a run. When you purchase an Augmentation you will lose money equal to the price and then the cost of purchasing another Augmentation during this run will be increased by 75%. You do not gain the benefits of your purchased Augmentations until you install them. This installation can be done through the 'Augmentation' tab. When you install your Augmentations, your game will reset like before.\\n- Reputation needed to gain a favor from faction decreased from 7500 to 6500\\n- Reputation needed to gain a favor from company increased from 5000 to 6000\\n- Reputation cost of all Augmentations increased by 16%\\n- Higher positions at companies now grant slightly more reputation for working\\n- Added getServerMaxMoney() Netscript function\\n- Added scan() Netscript function\\n- Added getServerNumPortsRequired() Netscript function\\n- There is now no additional RAM cost incurred when multithreading a script\\n\\n## v0.22.1\\n\\n- You no longer lose progress on creating programs when cancelling your work. Your progress will be saved and you will pick up where you left off when you start working on it again\\n- Added two new programs: AutoLink.exe and ServerProfiler.exe\\n- Fixed bug with Faction Field work reputation gain\\n\\n## v0.22.0 - Major rebalancing, optimization, and favor system\\n\\n- Significantly nerfed most augmentations\\n- Almost every server with a required hacking level of 200 or more now has slightly randomized server parameters. This means that after every Augmentation purchase, the required hacking level, base security level, and growth factor of these servers will all be slightly different\\n- The hacking speed multiplier now increases rather than decreases. The hacking time is now divided by your hacking speed multiplier rather than multiplied. In other words, a higher hacking speed multiplier is better\\n- Servers now have a minimum server security, which is approximately one third of their starting ('base') server security\\n- If you do not steal any money from a server, then you gain hacking experience equal to the amount you would have gained had you failed the hack\\n- The effects of grow() were increased by 50%\\n- grow() and weaken() now give hacking experience based on the server's base security level, rather than a flat exp amount\\n- Slightly reduced amount of exp gained from hack(), weaken(), and grow()\\n- Rebalanced formulas that determine crime success\\n- Reduced RAM cost for multithreading a script. The RAM multiplier for each thread was reduced from 1.02 to 1.005\\n- Optimized Script objects so they take less space in the save file\\n- Added getServerBaseSecurityLevel() Netscript function\\n- New favor system for companies and factions. Earning reputation at a company/faction will give you favor for that entity when you reset after installing an Augmentation. This favor persists through the rest of the game. The more favor you have, the faster you will earn reputation with that faction/company\\n- You can no longer donate to a faction for reputation until you have 150 favor with that faction\\n- Added unalias Terminal command\\n- Changed requirements for endgame Factions\\n\\n## v0.21.1\\n\\n- IF YOUR GAME BREAKS, DO THE FOLLOWING: Options -> Soft Reset -> Save Game -> Reload Page. Sorry about that!\\n- Autocompletion for aliases - courtesy of [https://github.com/LTCNugget Github user LTCNugget]\\n\\n## v0.21.0\\n\\n- Added dynamic arrays. See Netscript documentation\\n- Added ability to pass arguments into scripts. See documentation\\n- The implementation/function signature of functions that deal with scripts have changed. Therefore, some old scripts might not work anymore. Some of these functions include run(), exec(), isRunning(), kill(), and some others I may have forgot about. Please check the updated Netscript documentation if you run into issues.-Note that scripts are now uniquely identified by the script name and their arguments. For example, you can run a script using::\\n\\n run foodnstuff.script 1\\n\\nand you can also run the same script with a different argument::\\n\\n run foodnstuff.script 2\\n\\nThese will be considered two different scripts. To kill the first script you must run::\\n\\n kill foodnstuff.script 1\\n\\nand to kill the second you must run::\\n\\n kill foodnstuff.script 2\\n\\nSimilar concepts apply for Terminal Commands such as tail, and Netscript commands such as run(), exec(), kill(), isRunning(), etc.\\n\\n- Added basic theme functionality using the 'theme' Terminal command - All credit goes to /u/0x726564646974 who implemented the awesome feature\\n- Optimized Script objects, which were causing save errors when the player had too many scripts\\n- Formula for determining exp gained from hacking was changed\\n- Fixed bug where you could purchase Darkweb items without TOR router\\n- Slightly increased cost multiplier for Home Computer RAM\\n- Fixed bug where you could hack too much money from a server (and bring its money available below zero)\\n- Changed tail command so that it brings up a display box with dynamic log contents. To get old functionality where the logs are printed to the Terminal, use the new 'check' command\\n- As a result of the change above, you can no longer call tail/check on scripts that are not running\\n- Added autocompletion for buying Programs in Darkweb\\n\\n## v0.20.2\\n\\n- Fixed several small bugs\\n- Added basic array functionality to Netscript\\n- Added ability to run scripts with multiple threads. Running a script with n threads will multiply the effects of all hack(), grow(), and weaken() commands by n. However, running a script with multiple threads has drawbacks in terms of RAM usage. A script's ram usage when it is 'multithreaded' is calculated as: base cost _ numThreads _ (1.02 ^ numThreads). A script can be run multithreaded using the 'run [script] -t n' Terminal command or by passing in an argument to the run() and exec() Netscript commands. See documentation.\\n- RAM is slightly (~10%) more expensive (affects purchasing server and upgrading RAM on home computer)\\n- NeuroFlux Governor augmentation cost multiplier decreased\\n- Netscript default operation runtime lowered to 200ms (was 500ms previously)\\n\\n## v0.20.1\\n\\n- Fixed bug where sometimes scripts would crash without showing the error\\n- Added Deepscan programs to Dark Web\\n- Declining a faction invite will stop you from receiving invitations from that faction for the rest of the run\\n- (BETA) Added functionality to export/import saves. WARNING This is only lightly tested. You cannot choose where to save your file it just goes to the default save location. Also I have no idea what will happen if you try to import a file that is not a valid save. I will address these in later updates\\n\\n## v0.20.0\\n\\n- Refactored Netscript Interpreter code. Operations in Netscript should now run significantly faster (Every operation such as a variable assignment, a function call, a binary operator, getting a variable's value, etc. used to take up to several seconds, now each one should only take ~500 milliseconds).\\n- Percentage money stolen when hacking lowered to compensate for faster script speeds\\n- Hacking experience granted by grow() halved\\n- Weaken() is now ~11% faster, but only grants 3 base hacking exp upon completion instead of 5\\n- Rebalancing of script RAM costs. Base RAM Cost for a script increased from 1GB to 1.5GB. Loops, hack(), grow() and weaken() all cost slightly less RAM than before\\n- Added getServerRequiredHackingLevel(server) Netscript command.\\n- Added fileExists(file, [server]) Netscript command, which is used to check if a script/program exists on a specified server\\n- Added isRunning(script, [server]) Netscript command, which is used to check if a script is running on the specified server\\n- Added killall Terminal command. Kills all running scripts on the current machine\\n- Added kill() and killall() Netscript commands. Used to kill scripts on specified machines. See Netscript documentation\\n- Re-designed 'Active Scripts' tab\\n- Hacknet Node base production rate lowered from 1.6 to 1.55 ($/second)\\n- Increased monetary cost of RAM (Upgrading home computer and purchasing servers will now be more expensive)\\n- NEW GROWTH MECHANICS - The rate of growth on a server now depends on a server's security level. A higher security level will result in lower growth on a server when using the grow() command. Furthermore, calling grow() on a server raises that server's security level by 0.004. For reference, if a server has a security level of 10 it will have approximately the same growth rate as before.\\n- Server growth no longer happens naturally\\n- Servers now have a maximum limit to their money. This limit is 50 times it's starting money\\n- Hacking now grants 10% less hacking experience\\n- You can now edit scripts that are running\\n- Augmentations cost ~11% more money and 25% more faction reputation\\n\\n## v0.19.7\\n\\n- Added changelog to Options menu\\n- Bug fix with autocompletion (wasn't working properly for capitalized filenames/programs\\n\\n## v0.19.6\\n\\n- Script editor now saves its state even when you change tabs\\n- scp() command in Terminal/script will now overwrite files at the destination\\n- Terminal commands are no longer case-sensitive (only the commands themselves such as 'run' or 'nano'. Filenames are still case sensitive\\n- Tab automcompletion will now work on commands\\n\\n## v0.19.0\\n\\n- Hacknet Nodes have slightly higher base production, and slightly increased RAM multiplier. But they are also a bit more expensive at higher levels\\n- Calling grow() and weaken() in a script will now work offline, at slower rates than while online (The script now keeps track of the rate at which grow() and weaken() are called when the game is open. These calculated rates are used to determine how many times the calls would be made while the game is offline)\\n- Augmentations now cost 20% more reputation and 50% more money\\n- Changed the mechanic for getting invited to the hacking factions (CyberSec, NiteSec, The Black Hand, BitRunners) Now when you get to the required level to join these factions you will get a message giving you instructions on what to do in order to get invited.\\n- Added a bit of backstory/plot into the game. It's not fully fleshed out yet but it will be used in the future\\n- Made the effects of many Augmentations slightly more powerful\\n- Slightly increased company job wages across the board (~5-10% for each position)\\n- Gyms and classes are now significantly more expensive\\n- Doubled the amount by which a server's security increases when it is hacked. Now, it will increase by 0.002. Calling weaken() on a server will lower the security by 0.1.\\n\\n## v0.18.0\\n\\n- Major rebalancing (sorry didn't record specifics. But in general hacking gives more money and hacknet nodes give less)\\n- Server growth rate (both natural and manual using grow()) doubled\\n- Added option to Soft Reset\\n- Cancelling a full time job early now only results in halved gains for reputation. Exp and money earnings are gained in full\\n- Added exec() Netscript command, used to run scripts on other servers.\\n- NEW HACKING MECHANICS: Whenever a server is hacked, its 'security level' is increased by a very small amount. The security level is denoted by a number between 1-100. A higher security level makes it harder to hack a server and also decreases the amount of money you steal from it. Two Netscript functions, weaken() and getServerSecurityLevel() level, were added. The weaken(server) function lowers a server's security level. See the Netscript documentation for more details\\n- When donating to factions, the base rate is now $1,000,000 for 1 reputation point. Before, it was $1,000 for 1 reputation point.\\n- Monetary costs for all Augmentations increased. They are now about ~3.3 - 3.75 times more expensive than before\\n\\n## v0.17.1\\n\\n- Fixed issue with purchasing Augmentations that are 'upgrades' and require previous Augmentations to be installed\\n- Increased the percentage of money stolen from servers when hacking\\n\\n## v0.17.0\\n\\n- Greatly increased amount of money gained for crimes (by about 400% for most crimes)\\n- Criminal factions require slightly less negative karma to get invited to\\n- Increased the percentage of money stolen from servers when hacking\\n- Increased the starting amount of money available on beginning servers (servers with <50 required hacking))\\n- Increased the growth rate of servers (both naturally and manually when using the grow() command in a script)\\n- Added getHostname() command in Netscript that returns the hostname of the server a script is running on\\n- jQuery preventDefault() called when pressing ctrl+b in script editor\\n- The Neuroflux Governor augmentation (the one that can be repeatedly leveled up) now increases ALL multipliers by 1%. To balance it out, it's price multiplier when it levels up was increased\\n- Hacknet Node base production decreased from $1.75/s to $1.65/s\\n- Fixed issue with nested for loops in Netscript (stupid Javascript references)\\n- Added 'scp' command to Terminal and Netscript\\n- Slightly nerfed Hacknet Node Kernel DNI and Hacknet Node Core DNI Augmentations\\n- Increased TOR Router cost to $200k\\n\\n## v0.16.0\\n\\n- New Script Editor interface\\n- Rebalanced hacknet node - Increased base production but halved the multiplier from additional cores. This should boost its early-game production but nerf its late-game production\\n- Player now starts with 8GB of RAM on home computer\\n- 'scan-analyze' terminal command displays RAM on servers\\n- Slightly buffed the amount of money the player steals when hacking servers (by about ~8%)\\n- Time to execute grow() now depends on hacking skill and server security, rather than taking a flat 2 minutes.\\n- Clicking outside of a pop-up dialog box will now close it\\n- BruteSSH.exe takes 33% less time to create\\n- 'iron-gym' and 'max-hardware' servers now have 2GB of RAM\\n- Buffed job salaries across the board\\n- Updated Tutorial\\n- Created a Hacknet Node API for Netscript that allows you to access and upgrade your Hacknet Nodes. See the Netscript documentation for more details. WARNING The old upgradeHacknetNode() and getNumHacknetNodes() functions waere removed so any script that has these will no longer work\\n\\n## v0.15.0\\n\\n- Slightly reduced production multiplier for Hacknet Node RAM\\n- Faction pages now scroll\\n- Slightly increased amount of money gained from hacking\\n- Added 'alias' command\\n- Added 'scan-analyze' terminal command - used to get basic hacking info about all immediate network connections\\n- Fixed bugs with upgradeHacknetNode() and purchaseHacknetNode() commands\\n- Added getNumHacknetNodes() and hasRootAccess(hostname/ip) commands to Netscript\\n- Increased Cost of university classes/gym\\n- You can now see what an Augmentation does and its price even while its locked\\n\";","export default \"# What BitNode should I do?\\n\\nAfter destroying their first [BitNode](../advanced/bitnodes.md), many players wonder which [BitNode](../advanced/bitnodes.md) they should tackle next.\\nThis guide hopefully helps answer that question.\\n\\n## Recommended BitNodes\\n\\nAs a player, you are not forced to tackle the [BitNodes](../advanced/bitnodes.md) in any particular order.\\nYou are free to choose whichever ones you want.\\nThe \\\"best\\\" order can vary between players, depending on what you like to do any what kind of player you are.\\nIn general, here are the recommended [BitNodes](../advanced/bitnodes.md) for different things:\\n\\n## For fast progression\\n\\nThese paths do not recommend the absolute fastest path, since speed of progression is highly dependant on playing style.\\n\\n1. Repeat BN-1 until you max out its [Source-File](../advanced/sourcefiles.md).\\n Its [Source-File](../advanced/sourcefiles.md) is extremely powerful, as it raises all multipliers by a significant amount.\\n This also allows you to get used to augments and other features resetting.\\n\\n2. Do BN-3 at least once to unlock the [Corporation](../advanced/corporations.md) mechanic, finishing all 3 levels unlocks the full API for free, allowing fully scripted corp.\\n This mechanic has the highest profit potential in the game.\\n\\n3. Do BN-10 once to unlock [Sleeves](../advanced/sleeves.md) and [Grafting](../advanced/grafting.md).\\n [Sleeves](../advanced/sleeves.md) are useful in all nodes and grafting can be useful in future [BitNodes](../advanced/bitnodes.md), especially BN-8.\\n It's recommended to buy all purchasable [Sleeves](../advanced/sleeves.md) and their memory during the first run.\\n\\n The ordering of the next three is dependant on playing style and wants/needs.\\n\\n4. Do BN-5 once or twice.\\n The [Intelligence](../advanced/intelligence.md) stat it unlocks will gradually build up as you continue to play the game, and will be helpful in the future.\\n The [Source-File](../advanced/sourcefiles.md) also provides [hacking](../basic/hacking.md) multipliers, which are strong because [hacking](../basic/hacking.md) is typically one of the best ways of earning money.\\n\\n5. Do BN-4. Its [Source-File](../advanced/sourcefiles.md) does not directly make you more powerful in any way, but unlocks the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md).\\n This API allows you to automate significantly more aspects of the game.\\n Consider repeating until Level 3, since each level decreases the [RAM](../basic/ram.md) cost of the functions.\\n\\n6. Do BN-2 once to unlock the [Gang](../advanced/gang.md) mechanic.\\n This mechanic has high profit potential and offers large amounts of [Augmentations](../basic/augmentations.md) in a single faction.\\n Having sleeves ([Source-File](../advanced/sourcefiles.md) 10) greatly reduces the time it takes to get access to [Gangs](../advanced/gang.md) outside this [BitNode](../advanced/bitnodes.md).\\n\\n7. Do BN-9 to unlock the [Hacknet Server](../advanced/hacknetservers.md) mechanic.\\n You can consider repeating it as well, as its Level 2 and 3 effects are pretty helpful as well.\\n\\n## For the strongest Source-Files\\n\\nNote that the strongest [Source-Files](../advanced/sourcefiles.md) are typically rewarded by the hardest [BitNodes](../advanced/bitnodes.md).\\n\\nThe strongest [Source-File](../advanced/sourcefiles.md) is that from BN-1, as it raises all multipliers by a significant amount.\\n\\nThe [Source-File](../advanced/sourcefiles.md) from BN-9 is good because it unlocks the Hacknet Server mechanic.\\nThe [Hacknet Server](../advanced/hacknetservers.md) mechanic causes [Hacknet Nodes](../basic/hacknet_nodes.md) to produce a new currency called `hashes`, rather than money.\\n`Hashes` can be spent on powerful upgrades that benefit your [hacking](../basic/hacking.md), [Corporation](../advanced/corporations.md), [Bladeburner](../advanced/bladeburners.md), etc.\\n\\nThe [Sleeves](../advanced/sleeves.md) granted by the [Source-File](../advanced/sourcefiles.md) from BN-10 are strong, but only after you have several of them and have spent some time/money upgrading them.\\n\\n## For more scripting/hacking\\n\\nBN-4 unlocks the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md), which can be used to automate many different aspects of the game, including working for [Factions](../basic/factions.md) / [Companies](../basic/companies.md), purchasing & installing [Augmentations](../basic/augmentations.md), and creating programs\\n\\nBN-6 and BN-7 unlock [Bladeburner](../advanced/bladeburners.md) and its corresponding [Bladeburner API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.bladeburner.md).\\nThis allows you to automate an entire new mechanic.\\n\\nBN-2 also unlocks a new mechanic and API for automating the [Gang](../advanced/gang.md) mechanic.\\nHowever, it is not as interesting as [Bladeburner](../advanced/bladeburners.md)\\n\\nBN-9 unlocks the [Hacknet Server](../advanced/hacknetservers.md) mechanic and several new functions in the [Hacknet Node API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.hacknet.md) for using it.\\n\\n## For new mechanics\\n\\nBN-2 unlocks a new mechanic in which you can manage a [Gang](../advanced/gang.md).\\n[Gangs](../advanced/gang.md) earn you money and can be very profitable once they get large and powerful.\\nThe biggest benefit of [Gangs](../advanced/gang.md), however, is that they make all [Augmentations](../basic/augmentations.md) available to you through their corresponding [Faction](../basic/factions.md).\\n\\nBN-3 unlocks a new mechanic in which you can manage a [Corporation](../advanced/corporations.md).\\nYou can earn money through [Corporations](../advanced/corporations.md) by selling your stocks, or by configuring your [Corporation](../advanced/corporations.md) to pay dividends to shareholders.\\nIf your [Corporation](../advanced/corporations.md) gets big enough, it can also bribe [Factions](../basic/factions.md) in exchange for [Faction](../basic/factions.md) [Reputation](../basic/reputation.md).\\n\\nBN-6 unlocks a new mechanic that centers around combat rather than hacking.\\nThe main benefit of the [Bladeburner](../advanced/bladeburners.md) mechanic is that it offers a new method of destroying a [BitNode](../advanced/bitnodes.md).\\n\\nBN-9 unlocks the [Hacknet Server](../advanced/hacknetservers.md), which is an upgraded version of a [Hacknet Node](../basic/hacknet_nodes.md).\\nThe [Hacknet Server](../advanced/hacknetservers.md) generates a computational unit called a `hash`.\\n`Hashes` can be spent on a variety of different upgrades that can benefit your hacking, [Corporation](../advanced/corporations.md), [Bladeburner](../advanced/bladeburners.md) progress, and more.\\nIt transforms the [Hacknet Node](../basic/hacknet_nodes.md) from a simple money-generator to a more interesting mechanic.\\n\\nBN-10 unlocks two new mechanics: [Sleeves](../advanced/sleeves.md) and [Grafting](../advanced/grafting.md)\\n\\nBN-13 unlocks [Stanek's Gift](../advanced/stanek.md). This gift can improve skills, [hacknet](../basic/hacknet_nodes.md) production and costs, working and [crime](../basic/crimes.md) gains, and [hacking](../basic/hacking.md) power and speed.\\n\\n## For a Challenge\\n\\nIn general, the higher [BitNodes](../advanced/bitnodes.md) are more difficult than the lower ones.\\nBN-12 is an obvious exception as it gets progressively harder.\\n\\nBN-8 provides a unique challenge, as the only method of earning money in that [BitNode](../advanced/bitnodes.md) is through trading at the stock market.\\n\";","export default \"# Getting Started Guide for Beginner Programmers\\n\\n_Note_: The [Scripts](../basic/scripts.md) and strategies given in this guide aren't necessarily optimal.\\nThey're just meant to introduce you to the game and help you get started.\\n\\nThis is an introductory guide to getting started with Bitburner.\\nIt is not meant to be a comprehensive guide for the entire game, only the early stages.\\nIf you are confused or overwhelmed by the game, especially the programming and scripting aspects, this guide is perfect for you!\\n\\nNote that this guide is tailored towards those with minimal programming experience.\\n\\n## Introduction\\n\\nBitburner is a cyberpunk-themed incremental RPG.\\nThe player progresses by raising their [Stats](../basic/stats.md), earning money, and climbing the corporate ladder.\\nEventually, after reaching certain criteria, the player will begin receiving invitations from [Factions](../basic/factions.md).\\nJoining these [Factions](../basic/factions.md) and working for them will unlock [Augmentations](../basic/augmentations.md).\\nPurchasing and installing [Augmentations](../basic/augmentations.md) provides persistent upgrades and is necessary for progressing in the game.\\n\\nThe game has a minimal story/quest-line that can be followed to reach the end of the game.\\nSince this guide is only about getting started with Bitburner, it will not cover the entire \\\"quest-line\\\".\\n\\n## First Steps\\n\\nI'm going to assume you followed the introductory tutorial when you first began the game.\\nIn this introductory tutorial, you created a [Script](../basic/scripts.md) called `n00dles.js` and ran it on the `n00dles` server.\\nRight now, we'll kill this [Script](../basic/scripts.md). There are two ways to do this:\\n\\n- You can go to the Terminal and enter: `$ kill n00dles.js`\\n- You can go to the `Active Scripts` page (Alt + s) and press the `Kill Script` button for `n00dles.js`.\\n\\nIf you skipped the introductory tutorial, then ignore the part above.\\nInstead, go to the `Hacknet Nodes` page (Alt + h) and purchase a [Hacknet Node](../basic/hacknet_nodes.md) to start generating some passive income.\\n\\n## Creating our First Script\\n\\nNow, we'll create a generic [hacking](../basic/hacking.md) [Script](../basic/scripts.md) that can be used early on in the game (or throughout the entire game, if you want).\\n\\nBefore we write the [Script](../basic/scripts.md), here are some things you'll want to familiarize yourself with:\\n\\n- `hacking`\\n- `security`\\n- `hack`\\n- `grow`\\n- `weaken`\\n- `brutessh`\\n- `nuke`\\n\\nTo briefly summarize: Each [Server](../basic/servers.md) has a security level that affects how difficult it is to hack.\\nEach [Server](../basic/servers.md) also has a certain amount of money, as well as a maximum amount of money it can hold.\\n[Hacking](../basic/hacking.md) a [Server](../basic/servers.md) steals a percentage of that [Server](../basic/servers.md)'s money.\\nThe `hack()` function is used to hack a [Server](../basic/servers.md).\\nThe `grow()` function is used to increase the amount of money available on a [Server](../basic/servers.md).\\nThe `weaken()` function is used to decrease a [Server](../basic/servers.md)'s security level.\\n\\nNow let's move on to actually creating the [Script](../basic/scripts.md).\\nGo to your home computer and then create a [Script](../basic/scripts.md) called `early-hack-template.js` by going to [Terminal](../basic/terminal.md) and entering the following two commands:\\n\\n $ home\\n $ nano early-hack-template.js\\n\\nThis will take you to the [Script](../basic/scripts.md) editor, which you can use to code and create [Scripts](../basic/scripts.md).\\n\\nEnter the following code in the [Script](../basic/scripts.md) editor:\\n\\n /** @param {NS} ns */\\n export async function main(ns) {\\n // Defines the \\\"target server\\\", which is the server\\n // that we're going to hack. In this case, it's \\\"n00dles\\\"\\n const target = \\\"n00dles\\\";\\n\\n // Defines how much money a server should have before we hack it\\n // In this case, it is set to the maximum amount of money.\\n const moneyThresh = ns.getServerMaxMoney(target);\\n\\n // Defines the maximum security level the target server can\\n // have. If the target's security level is higher than this,\\n // we'll weaken it before doing anything else\\n const securityThresh = ns.getServerMinSecurityLevel(target);\\n\\n // If we have the BruteSSH.exe program, use it to open the SSH Port\\n // on the target server\\n if (ns.fileExists(\\\"BruteSSH.exe\\\", \\\"home\\\")) {\\n ns.brutessh(target);\\n }\\n\\n // Get root access to target server\\n ns.nuke(target);\\n\\n // Infinite loop that continously hacks/grows/weakens the target server\\n while(true) {\\n if (ns.getServerSecurityLevel(target) > securityThresh) {\\n // If the server's security level is above our threshold, weaken it\\n await ns.weaken(target);\\n } else if (ns.getServerMoneyAvailable(target) < moneyThresh) {\\n // If the server's money is less than our threshold, grow it\\n await ns.grow(target);\\n } else {\\n // Otherwise, hack it\\n await ns.hack(target);\\n }\\n }\\n }\\n\\nThe [Script](../basic/scripts.md) above contains comments that document what it does, but let's go through it step-by-step anyway.\\n\\n const target = \\\"n00dles\\\";\\n\\nThis first command defines a string which contains our target [Server](../basic/servers.md).\\nThat's the [Server](../basic/servers.md) that we're going to [hack](../basic/hacking.md).\\nFor now, it's set to `\\\"n00dles\\\"` because that's the only [Server](../basic/servers.md) with a required hacking level of `1`.\\nIf you want to [hack](../basic/hacking.md) a different [Server](../basic/servers.md), simply change this variable to be the hostname of another [Server](../basic/servers.md).\\n\\n const moneyThresh = ns.getServerMaxMoney(target);\\n\\nThis second command defines a numerical value representing the minimum amount of money that must be available on the target [Server](../basic/servers.md) in order for our [Script](../basic/scripts.md) to [hack](../basic/hacking.md) it.\\nIf the money available on the target [Server](../basic/servers.md) is less than this value, then our [Script](../basic/scripts.md) will `grow()` the [Server](../basic/servers.md) rather than [hacking](../basic/hacking.md) it.\\nIt is set to the maximum amount of money that can be available on the [Server](../basic/servers.md).\\nThe `getServerMaxMoney()` function is used to find this value\\n\\n const securityThresh = ns.getServerMinSecurityLevel(target);\\n\\nThis third command defines a numerical value representing the minimum security level the target [Server](../basic/servers.md) can have.\\nIf the target [Server](../basic/servers.md)'s security level is higher than this value, then our [Script](../basic/scripts.md) will `weaken()` the [Script](../basic/scripts.md) before doing anything else.\\n\\n if (ns.fileExists(\\\"BruteSSH.exe\\\", \\\"home\\\")) {\\n ns.brutessh(target);\\n }\\n\\n ns.nuke(target);\\n\\nThis section of code is used to gain root access on the target [Server](../basic/servers.md).\\nThis is necessary for [hacking](../basic/hacking.md).\\n\\n while (true) {\\n if (ns.getServerSecurityLevel(target) > securityThresh) {\\n // If the server's security level is above our threshold, weaken it\\n await ns.weaken(target);\\n } else if (ns.getServerMoneyAvailable(target) < moneyThresh) {\\n // Otherwise, if the server's money is less than our threshold, grow it\\n await ns.grow(target);\\n } else {\\n // Otherwise, hack it\\n await ns.hack(target);\\n }\\n }\\n\\nThis is the main section that drives our [Script](../basic/scripts.md).\\nIt dictates the [Script](../basic/scripts.md)'s logic and carries out the [hacking](../basic/hacking.md) operations.\\nThe `while (true)` creates an infinite loop that will continuously run the [hacking](../basic/hacking.md) logic until the the [Script](../basic/scripts.md) is killed.\\n\\nThe await keyword is needed for `hack()` / `grow()` / `weaken()` because these commands take time to execute, unlike the others.\\nIf you forget to await these commands, you will get an exception saying you tried to do multiple things at once, because your code will immediately finish the function call without waiting for the operation to be done.\\nAlso important is that await can only be used in functions marked `async` (note that `main()` is marked `async`).\\n\\n## Running our Scripts\\n\\nNow we want to start running our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) so that it can start earning us money and experience.\\nOur home computer only has 8GB of [RAM](../basic/ram.md), and we'll be using it for something else later.\\nInstead, we'll take advantage of the [RAM](../basic/ram.md) on other machines.\\n\\nGo to `Terminal` and enter the following command:\\n\\n $ scan-analyze 2\\n\\nThis will show detailed information about some [Servers](../basic/servers.md) on the network.\\nThe **network is randomized so it will be different for every person**.\\nHere's what mine showed at the time I made this:\\n\\n [home ~]> scan-analyze 2\\n ┕ home\\n ┃ Root Access: YES, Required hacking skill: 1\\n ┃ Number of open ports required to NUKE: 5\\n ┃ RAM: 8.00GB\\n ┣ n00dles\\n ┃ ┃ Root Access: YES, Required hacking skill: 1\\n ┃ ┃ Number of open ports required to NUKE: 0\\n ┃ ┃ RAM: 4.00GB\\n ┃ ┕ nectar-net\\n ┃ Root Access: NO, Required hacking skill: 20\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┣ foodnstuff\\n ┃ ┃ Root Access: NO, Required hacking skill: 1\\n ┃ ┃ Number of open ports required to NUKE: 0\\n ┃ ┃ RAM: 16.00GB\\n ┃ ┕ zer0\\n ┃ Root Access: NO, Required hacking skill: 75\\n ┃ Number of open ports required to NUKE: 1\\n ┃ RAM: 32.00GB\\n ┣ sigma-cosmetics\\n ┃ ┃ Root Access: NO, Required hacking skill: 5\\n ┃ ┃ Number of open ports required to NUKE: 0\\n ┃ ┃ RAM: 16.00GB\\n ┃ ┕ max-hardware\\n ┃ Root Access: NO, Required hacking skill: 80\\n ┃ Number of open ports required to NUKE: 1\\n ┃ RAM: 32.00GB\\n ┣ joesguns\\n ┃ Root Access: NO, Required hacking skill: 10\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┣ hong-fang-tea\\n ┃ Root Access: NO, Required hacking skill: 30\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┣ harakiri-sushi\\n ┃ Root Access: NO, Required hacking skill: 40\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┕ iron-gym\\n ┃ Root Access: NO, Required hacking skill: 100\\n ┃ Number of open ports required to NUKE: 1\\n ┃ RAM: 32.00GB\\n ┕ CSEC\\n Root Access: NO, Required hacking skill: 55\\n Number of open ports required to NUKE: 1\\n RAM: 8.00GB\\n\\nTake note of the following servers:\\n\\n- `sigma-cosmetics`\\n- `joesguns`\\n- `nectar-net`\\n- `hong-fang-tea`\\n- `harakiri-sushi`\\n\\nAll of these servers have 16GB of [RAM](../basic/ram.md).\\nFurthermore, all of these servers do not require any open ports in order to NUKE.\\nIn other words, we can gain root access to all of these servers and then run [Scripts](../basic/scripts.md) on them.\\n\\nFirst, let's determine how many threads of our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) we can run.\\n(See the page on [scripts](../basic/scripts.md) for more information on multithreading.)\\n\\nThe [Script](../basic/scripts.md) we wrote uses 2.6GB of [RAM](../basic/ram.md).\\nYou can check this using the following `Terminal` command:\\n\\n $ mem early-hack-template.js\\n\\nThis means we can run 6 threads on a 16GB server.\\nNow, to run our [Scripts](../basic/scripts.md) on all of these servers, we have to do the following:\\n\\n1. Use the `scp` command to copy our [Script](../basic/scripts.md) to each server.\\n2. Use the `connect` command to connect to a server.\\n3. Use the `run` command to run the `NUKE.exe` program and gain root access.\\n4. Use the `run` command again to run our [Script](../basic/scripts.md).\\n5. Repeat steps 2-4 for each server.\\n\\nHere's the sequence of `Terminal` commands I used in order to achieve this:\\n\\n $ home\\n $ scp early-hack-template.js n00dles\\n $ scp early-hack-template.js sigma-cosmetics\\n $ scp early-hack-template.js joesguns\\n $ scp early-hack-template.js nectar-net\\n $ scp early-hack-template.js hong-fang-tea\\n $ scp early-hack-template.js harakiri-sushi\\n $ connect n00dles\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 1\\n $ home\\n $ connect sigma-cosmetics\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n $ home\\n $ connect joesguns\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n $ home\\n $ connect hong-fang-tea\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n $ home\\n $ connect harakiri-sushi\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n $ home\\n $ connect hong-fang-tea\\n $ connect nectar-net\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n\\nPressing the `Tab` key in the middle of a Terminal command will attempt to auto-complete the command.\\nFor example, if you type in `scp ea` and then hit `Tab`, the rest of the [Script](../basic/scripts.md)'s name should automatically be filled in.\\nThis works for most commands in the game!\\n\\nThe `home` command is used to connect to the home computer. When running our [Scripts](../basic/scripts.md) with the `run early-hack-template.js -t 6` command, the `-t 6` specifies that the [Script](../basic/scripts.md) should be run with 6 threads.\\n\\nNote that the `nectar-net` [Server](../basic/servers.md) isn't in the home computer's immediate network.\\nThis means you can't directly connect to it from home. You will have to search for it inside the network.\\nThe results of the `scan-analyze 2` command we ran before will show where it is.\\nIn my case, I could connect to it by going from `hong-fang-tea` -> `nectar-net`.\\nHowever, this will probably be different for you.\\n\\nAfter running all of these `Terminal` commands, our [Scripts](../basic/scripts.md) are now up and running.\\nThese will earn money and hacking experience over time.\\nThese gains will be really slow right now, but they will increase once our hacking skill rises and we start running more [Scripts](../basic/scripts.md).\\n\\n## Increasing Hacking Level\\n\\nThere are many [Servers](../basic/servers.md) besides `n00dles` that can be hacked, but they have higher required hacking levels.\\nTherefore, we should raise our hacking level.\\nNot only will this let us hack more [Servers](../basic/servers.md), but it will also increase the effectiveness of our [hacking](../basic/hacking.md) against `n00dles`.\\n\\nThe easiest way to train your hacking level is to visit Rothman University.\\nYou can do this from the `City` tab (Alt + w) on the left-hand navigation menu.\\nRothman University should be the \\\"U\\\" near the bottom-right.\\nClick the \\\"U\\\" to go to the location.\\n\\nOnce you go to Rothman University, you should see a screen with several options.\\nThese options describe different courses you can take.\\nYou should click the first button, which says: `Study Computer Science (free)`.\\n\\nAfter you click the button, you will start studying and earning hacking experience.\\nWhile you are doing this, you cannot interact with any other part of the game until you click either `Stop taking course` or `Do something else simultaneously`.\\n\\nRight now, we want a hacking level of 10.\\nYou need approximately 174 hacking experience to reach level 10.\\nYou can check how much hacking experience you have by going to the `Stats` tab (Alt + c) on the left-hand navigation menu.\\nSince studying at Rothman University earns you 1 experience per second, this will take 174 seconds, or approximately 3 minutes.\\nFeel free to do something in the meantime!\\n\\n## Editing our Hacking Script\\n\\nNow that we have a hacking level of 10, we can hack the `joesguns` [Server](../basic/servers.md).\\nThis [Server](../basic/servers.md) will be slightly more profitable than `n00dles`.\\nTherefore, we want to change our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) to target `joesguns` instead of `n00dles`.\\n\\nGo to `Terminal` and edit the [hacking](../basic/hacking.md) [Script](../basic/scripts.md) by entering:\\n\\n $ home\\n $ nano early-hack-template.js\\n\\nAt the top of the [Script](../basic/scripts.md), change the `target` variable to be `\\\"joesguns\\\"`:\\n\\n const target = \\\"joesguns\\\";\\n\\nNote that this will **NOT** affect any instances of the [Script](../basic/scripts.md) that are already running.\\nThis will only affect instances of the [Script](../basic/scripts.md) that are run from this point forward.\\n\\n## Creating a New Script to Purchase New Servers\\n\\nNext, we're going to create a [Script](../basic/scripts.md) that automatically purchases additional [Servers](../basic/servers.md).\\nThese [Servers](../basic/servers.md) will be used to run many [Scripts](../basic/scripts.md).\\nRunning this [Script](../basic/scripts.md) will initially be very expensive since purchasing a [Server](../basic/servers.md) costs money, but it will pay off in the long run.\\n\\nIn order to create this [Script](../basic/scripts.md), you should familiarize yourself with the following functions:\\n\\n- `purchaseServer()`\\n- `getPurchasedServerCost()`\\n- `getPurchasedServerLimit()`\\n- `getServerMoneyAvailable()`\\n- `scp()`\\n- `exec()`\\n\\nCreate the [Script](../basic/scripts.md) by going to `Terminal` and typing:\\n\\n $ home\\n $ nano purchase-server-8gb.js\\n\\nPaste the following code into the [Script](../basic/scripts.md) editor:\\n\\n /** @param {NS} ns */\\n export async function main(ns) {\\n // How much RAM each purchased server will have. In this case, it'll\\n // be 8GB.\\n const ram = 8;\\n\\n // Iterator we'll use for our loop\\n let i = 0;\\n\\n // Continuously try to purchase servers until we've reached the maximum\\n // amount of servers\\n while (i < ns.getPurchasedServerLimit()) {\\n // Check if we have enough money to purchase a server\\n if (ns.getServerMoneyAvailable(\\\"home\\\") > ns.getPurchasedServerCost(ram)) {\\n // If we have enough money, then:\\n // 1. Purchase the server\\n // 2. Copy our hacking script onto the newly-purchased server\\n // 3. Run our hacking script on the newly-purchased server with 3 threads\\n // 4. Increment our iterator to indicate that we've bought a new server\\n let hostname = ns.purchaseServer(\\\"pserv-\\\" + i, ram);\\n ns.scp(\\\"early-hack-template.js\\\", hostname);\\n ns.exec(\\\"early-hack-template.js\\\", hostname, 3);\\n ++i;\\n }\\n //Make the script wait for a second before looping again.\\n //Removing this line will cause an infinite loop and crash the game.\\n await ns.sleep(1000);\\n }\\n }\\n\\nThis code uses a while loop to purchase the maximum amount of [Servers](../basic/servers.md) using the `purchaseServer()` function.\\nEach of these [Servers](../basic/servers.md) will have 8GB of [RAM](../basic/ram.md), as defined in the `ram` variable.\\nNote that the [Script](../basic/scripts.md) uses the command `getServerMoneyAvailable(\\\"home\\\")` to get the amount of money you currently have.\\nThis is then used to check if you can afford to purchase a [Server](../basic/servers.md).\\n\\nWhenever the script purchases a new [Server](../basic/servers.md), it uses the `scp()` function to copy our [Script](../basic/scripts.md) onto that new [Server](../basic/servers.md), and then it uses the `exec()` function to execute it on that [Server](../basic/servers.md).\\n\\nTo run this [Script](../basic/scripts.md), go to `Terminal` and type:\\n\\n $ run purchase-server-8gb.js\\n\\nThis purchase will continuously run until it has purchased the maximum number of [Servers](../basic/servers.md).\\nWhen this happens, it'll mean that you have a bunch of new [Servers](../basic/servers.md) that are all running [hacking](../basic/hacking.md) [Scripts](../basic/scripts.md) against the `joesguns` [Server](../basic/servers.md)!\\n\\nThe reason we're using so many [Scripts](../basic/scripts.md) to hack `joesguns` instead of targeting other [Servers](../basic/servers.md) is because it's more effective.\\nThis early in the game, we don't have enough [RAM](../basic/ram.md) to efficiently hack multiple targets, and trying to do so would be slow as we'd be spread too thin.\\nYou should definitely do this later on, though!\\n\\nNote that purchasing a [Server](../basic/servers.md) is fairly expensive, and purchasing the maximum amount of [Servers](../basic/servers.md) even more so.\\nAt the time of writing this guide, the [Script](../basic/scripts.md) above requires $11 million in order to finish purchasing all of the 8GB [Servers](../basic/servers.md).\\nTherefore, we need to find additional ways to make money to speed up the process!\\nThese are covered in the next section.\\n\\n## Additional Sources of Income\\n\\nThere are other ways to gain money in this game besides [Scripts](../basic/scripts.md) & [hacking](../basic/hacking.md).\\n\\n## Hacknet Nodes\\n\\nIf you completed the introductory tutorial, you were already introduced to this method: [Hacknet Nodes](../basic/hacknet_nodes.md).\\nOnce you have enough money, you can start upgrading your [Hacknet Nodes](../basic/hacknet_nodes.md) in order to increase your passive income stream.\\nThis is completely optional.\\nSince each [Hacknet Node](../basic/hacknet_nodes.md) upgrade takes a certain amount of time to \\\"pay itself off\\\", it may not necessarily be in your best interest to use these.\\n\\nNonetheless, [Hacknet Nodes](../basic/hacknet_nodes.md) are a good source of income early in the game, although their effectiveness tapers off later on.\\nIf you do wind up purchasing and upgrading [Hacknet Nodes](../basic/hacknet_nodes.md), I would suggest only upgrading their levels for now.\\nI wouldn't bother with [RAM](../basic/ram.md) and Core upgrades until later on.\\n\\n## Crime\\n\\nThe best source of income right now is from [crimes](../basic/crimes.md).\\nThis is because it not only gives you a large amount of money, but it also raises your hacking level.\\nTo commit [crimes](../basic/crimes.md), go to the `City` tab (Alt + w).\\nThen, click on the link that says `The Slums`.\\n\\nIn the Slums, you can attempt to commit a variety of [crimes](../basic/crimes.md), each of which gives certain types of experience and money if successful.\\nSee [crimes](../basic/crimes.md) for more details.\\n\\nYou are not always successful when you attempt to commit a crime.\\nNothing bad happens if you fail a [crime](../basic/crimes.md), but you won't earn any money and the experience gained will be reduced.\\nRaising your stats improves your chance of successfully committing a [crime](../basic/crimes.md).\\n\\nRight now, the best option is the `Rob Store` [crime](../basic/crimes.md).\\nThis takes 60 seconds to attempt, gives $400k if successful, and gives hacking experience (which is very important right now).\\n\\nAlternatively, you can also use the `Shoplift` [crime](../basic/crimes.md).\\nThis takes 2 seconds to attempt and gives $15k if successful.\\nThis [crime](../basic/crimes.md) is slightly easier and more profitable than `Rob Store`, but doesn't give hacking experience.\\n\\n## Work for a Company\\n\\nIf you don't want to commit [crimes](../basic/crimes.md), there's another option - working for a [company](../basic/companies.md).\\nThis will not be nearly as profitable as [crimes](../basic/crimes.md), but will provide [company](../basic/companies.md) [reputation](../basic/reputation.md).\\n\\nGo to the `City` tab on the left-hand navigation menu and then go to `Joe's Guns`.\\nAt `Joe's Guns`, there will be an option that says `Apply to be an Employee`.\\nClick this to get the job.\\nThen, a new option will appear that simply says `Work`.\\nClick this to start working.\\nWorking at `Joe's Guns` earns $110 per second and also grants some experience for every stat except hacking.\\n\\nWorking for a [company](../basic/companies.md), like [crime](../basic/crimes.md), is completely passive.\\nYou can choose to focus on your work, do something else simultaneously, or switch between those two.\\nWhile you focus on work, you will not be able to do anything else in the game.\\nIf you do something else simultaneously, you will not gain [reputation](../basic/reputation.md) at the same speed.\\nYou can cancel working at any time.\\n\\nOnce your hacking hits level 75, you can visit `Carmichael Security` in the city and get a software job there.\\nThis job offers higher pay and also earns you hacking experience.\\n\\nThere are many more companies in the `City` tab that offer more pay and also more gameplay features.\\nFeel free to explore!\\n\\n## After you Purchase your New Servers\\n\\nAfter you've made a total of $11 million, your automatic [Server](../basic/servers.md)-purchasing [Script](../basic/scripts.md) should finish running.\\nThis will free up some [RAM](../basic/ram.md) on your home computer.\\nWe don't want this [RAM](../basic/ram.md) to go to waste, so we'll make use of it.\\nGo to `Terminal` and enter the following commands:\\n\\n $ home\\n $ run early-hack-template.js -t 3\\n\\n## Reaching a Hacking Level of 50\\n\\nOnce you reach a hacking level of 50, two new important parts of the game open up.\\n\\n## Creating your first program: BruteSSH.exe\\n\\nOn the left-hand navigation menu you will notice a `Create Program` tab (Alt + p) with a red notification icon.\\nThis indicates that there are programs available to be created.\\nGo to that tab, and you'll see a list of all the programs you can currently create.\\nHovering over a program will give a brief description of its function.\\nSimply click on a program to start creating it.\\n\\nRight now, the program we want to create is `BruteSSH.exe`.\\nThis program is used to open up SSH ports on [Servers](../basic/servers.md).\\nThis will allow you to hack more [Servers](../basic/servers.md), as many [Servers](../basic/servers.md) in the game require a certain number of opened ports in order for `NUKE.exe` to gain root access.\\n\\nFeel free to cancel your work on creating a program at any time, as your progress will be saved and can be picked back up later.\\n`BruteSSH.exe` takes about 10 minutes to complete.\\n\\n## Optional: Create AutoLink.exe\\n\\nOn the `Create Programs` page, you will notice another program you can create called `AutoLink.exe`.\\nIf you don't mind waiting another 10-15 minutes, you should go ahead and create this program.\\nIt makes it much less tedious to connect to other [Servers](../basic/servers.md), but it's not necessary for progression.\\n\\n## Joining your first faction: CyberSec\\n\\nShortly after you reached level 50 hacking, you should have received a message that said this:\\n\\n Message received from unknown sender:\\n\\n We've been watching you. Your skills are very impressive. But you're wasting your talents.\\n If you join us, you can put your skills to good use and change the world for the better.\\n If you join us, we can unlock your full potential.\\n\\n But first, you must pass our test. Find and install the backdoor on our server.\\n\\n -CyberSec\\n\\n This message was saved as csec-test.msg onto your home computer.\\n\\nIf you didn't, or if you accidentally closed it, that's okay!\\nMessages get saved onto your home computer.\\nEnter the following `Terminal` commands to view the message:\\n\\n $ home\\n $ cat csec-test.msg\\n\\nThis message is part of the game's main \\\"quest-line\\\".\\nIt is a message from the `CyberSec` [faction](../basic/factions.md) that is asking you to pass their test.\\nPassing their test is simple, you just have to find their [Server](../basic/servers.md), hack it, and install a backdoor through the `Terminal`.\\nTheir [Server](../basic/servers.md) is called `CSEC`.\\nTo do this, we'll use the `scan-analyze` Terminal command, just like we did before:\\n\\n $ home\\n $ scan-analyze 2\\n\\nThis will show you the network for all [Servers](../basic/servers.md) that are up to 2 \\\"nodes\\\" away from your home computer.\\nRemember that the network is randomly generated so it'll look different for everyone.\\nHere's the relevant part of my `scan-analyze` results:\\n\\n ┕ home\\n ┃ Root Access: YES, Required hacking skill: 1\\n ┃ Number of open ports required to NUKE: 5\\n ┃ RAM: 8.00GB\\n ┣ harakiri-sushi\\n ┃ Root Access: NO, Required hacking skill: 40\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┕ iron-gym\\n ┃ Root Access: NO, Required hacking skill: 100\\n ┃ Number of open ports required to NUKE: 1\\n ┃ RAM: 32.00GB\\n ┕ CSEC\\n Root Access: NO, Required hacking skill: 55\\n Number of open ports required to NUKE: 1\\n RAM: 8.00GB\\n\\nThis tells me that I can reach `CSEC` by going through `iron-gym`:\\n\\n $ connect iron-gym\\n $ connect CSEC\\n\\nIf you created the `AutoLink.exe` program earlier, then there is an easier method of connecting to `CSEC`.\\nYou'll notice that in the `scan-analyze` results, all of the [Server](../basic/servers.md) hostnames are white and underlined.\\nYou can simply click one of the [Server](../basic/servers.md) hostnames in order to connect to it.\\nSo, simply click `CSEC`!\\n\\nMake sure you notice the required hacking skill for the `CSEC` [Server](../basic/servers.md).\\nThis is a random value between 51 and 60.\\nAlthough you receive the message from CSEC once you hit 50 hacking, you cannot actually pass their test until your hacking is high enough to install a backdoor on their [Server](../basic/servers.md).\\n\\nAfter you are connected to the `CSEC` [Server](../basic/servers.md), you can backdoor it.\\nNote that this [Server](../basic/servers.md) requires one open port in order to gain root access.\\nWe can open the SSH port using the `BruteSSH.exe` program we created earlier.\\nIn `Terminal`:\\n\\n $ run BruteSSH.exe\\n $ run NUKE.exe\\n $ backdoor\\n\\nAfter you successfully install the backdoor, you should receive a [faction](../basic/factions.md) invitation from `CyberSec` shortly afterwards.\\nAccept it.\\nIf you accidentally reject the invitation, that's okay.\\nJust go to the `Factions` tab (Alt + f) and you should see an option that lets you accept the invitation.\\n\\nCongrats!\\nYou just joined your first [faction](../basic/factions.md).\\nDon't worry about doing anything with this [faction](../basic/factions.md) yet, we can come back to it later.\\n\\n## Using Additional Servers to Hack Joesguns\\n\\nOnce you have the `BruteSSH` program, you will be able to gain root access to several additional [Servers](../basic/servers.md).\\nThese [Servers](../basic/servers.md) have more [RAM](../basic/ram.md) that you can use to run [Scripts](../basic/scripts.md).\\nWe'll use the [RAM](../basic/ram.md) on these [Servers](../basic/servers.md) to run more [Scripts](../basic/scripts.md) that target `joesguns`.\\n\\n## Copying our Scripts\\n\\nThe [Servers](../basic/servers.md) we'll be using to run our [Scripts](../basic/scripts.md) are:\\n\\n- `neo-net`\\n- `zer0`\\n- `max-hardware`\\n- `iron-gym`\\n\\nAll of these [Servers](../basic/servers.md) have 32GB of [RAM](../basic/ram.md).\\nYou can use the `Terminal` command `scan-analyze 3` to see for yourself.\\nTo copy our [hacking](../basic/hacking.md) [Scripts](../basic/scripts.md) onto these [Servers](../basic/servers.md), go to `Terminal` and run:\\n\\n $ home\\n $ scp early-hack-template.js neo-net\\n $ scp early-hack-template.js zer0\\n $ scp early-hack-template.js max-hardware\\n $ scp early-hack-template.js iron-gym\\n\\nSince each of these [Servers](../basic/servers.md) has 32GB of [RAM](../basic/ram.md), we can run our [hacking](../basic/hacking.md) script with 12 threads on each [Server](../basic/servers.md).\\nBy now, you should know how to connect to [Servers](../basic/servers.md).\\nSo find and connect to each of the [Servers](../basic/servers.md) above using the `scan-analyze 3` `Terminal` command.\\nThen, use following `Terminal` command to run our [hacking](../basic/hacking.md) script with 12 threads:\\n\\n $ run early-hack-template.js -t 12\\n\\nRemember that if you have the `AutoLink` program, you can simply click on the hostname of a [Server](../basic/servers.md) after running `scan-analyze` to connect to it.\\n\\n## Profiting from Scripts & Gaining Reputation with CyberSec\\n\\nNow it's time to play the waiting game.\\nIt will take some time for your [Scripts](../basic/scripts.md) to start earning money.\\nRemember that most of your [Scripts](../basic/scripts.md) are targeting `joesguns`.\\nIt will take a bit for them to `grow()` and `weaken()` the [Server](../basic/servers.md) to the appropriate values before they start [hacking](../basic/hacking.md) it.\\nOnce they do, however, the [Scripts](../basic/scripts.md) will be very profitable.\\n\\nFor reference, in about two hours after starting my first [Script](../basic/scripts.md), my [Scripts](../basic/scripts.md) had a production rate of $20k per second and had earned a total of $70 million.\\n(You can see these stats on the `Active Scripts` tab).\\n\\nAfter another 15 minutes, the production rate had increased to $25k per second and the [Scripts](../basic/scripts.md) had made an additional $55 million.\\n\\nYour results will vary based on how fast you earned money from [crime](../basic/crimes.md)/[working](../basic/companies.md)/[hacknet nodes](../basic/hacknet_nodes.md), but this will hopefully give you a good indication of how much the [Scripts](../basic/scripts.md) can earn.\\n\\nIn the meantime, we are going to be gaining reputation with the `CyberSec` [faction](../basic/factions.md).\\nGo to the `Factions` tab (Alt + f) on the left-hand navigation menu, and from there select `CyberSec`.\\nIn the middle of the page there should be a button for `Hacking Contracts`.\\nClick it to start earning [reputation](../basic/reputation.md) for the `CyberSec` [faction](../basic/factions.md) (as well as some hacking experience).\\nThe higher your hacking level, the more [reputation](../basic/reputation.md) you will gain.\\nNote that while you are working for a [faction](../basic/factions.md), you can choose to not interact with the rest of the game in any way to gain [reputation](../basic/reputation.md) at full speed.\\nYou can also select to do something else simultaneously, gaining [reputation](../basic/reputation.md) a bit more slowly, until you focus again.\\nYou can cancel your [faction](../basic/factions.md) work at any time with no penalty to your [reputation](../basic/reputation.md) gained so far.\\n\\n## Purchasing Upgrades and Augmentations\\n\\nAs I mentioned before, within 1-2 hours I had earned over $200 million.\\nNow, it's time to spend all of this money on some persistent upgrades to help progress!\\n\\n## Upgrading RAM on Home computer\\n\\nThe most important thing to upgrade right now is the [RAM](../basic/ram.md) on your home computer.\\nThis will allow you to run more [Scripts](../basic/scripts.md).\\n\\nTo upgrade your [RAM](../basic/ram.md), go to the `City` tab and visit the company `Alpha Enterprises`.\\nThere will be a button that says `Upgrade 'home' RAM (8.00GB -> 16.00GB) - $1.010m`.\\nClick it to upgrade your [RAM](../basic/ram.md).\\n\\nI recommend getting your home computer's [RAM](../basic/ram.md) to **at least** 128GB.\\nGetting it even higher would be better.\\n\\n## Purchasing your First Augmentations\\n\\nOnce you get ~1000 [reputation](../basic/reputation.md) with the `CyberSec` [faction](../basic/factions.md), you can purchase your first [Augmentation](../basic/augmentations.md) from them.\\n\\nTo do this, go to the `Factions` tab on the left-hand navigation menu (Alt + f) and select `CyberSec`.\\nThere is a button near the bottom that says `Purchase Augmentations`.\\nThis will bring up a page that displays all of the [Augmentations](../basic/augmentations.md) available from `CyberSec`.\\nSome of them may be locked right now.\\nTo unlock these, you will need to earn more [reputation](../basic/reputation.md) with `CyberSec`.\\n\\n[Augmentations](../basic/augmentations.md) give persistent upgrades in the form of multipliers.\\nThese aren't very powerful early in the game because the multipliers are small.\\nHowever, the effects of [Augmentations](../basic/augmentations.md) stack multiplicatively **with each other**, so as you continue to install many [Augmentations](../basic/augmentations.md), their effects will increase significantly.\\n\\nBecause of this, I would recommend investing more in [RAM](../basic/ram.md) upgrades for your home computer rather than [Augmentations](../basic/augmentations.md) early on.\\nHaving enough [RAM](../basic/ram.md) to run many [Scripts](../basic/scripts.md) will allow you to make much more money, and then you can come back later on and get all these [Augmentations](../basic/augmentations.md).\\n\\nRight now, I suggest purchasing at the very least the `Neurotrainer I` [Augmentation](../basic/augmentations.md) from `CyberSec`.\\nIf you have the money to spare, I would also suggest getting `BitWire` and several levels of the `NeuroFlux Governor` (`NFG`) [Augmentations](../basic/augmentations.md).\\nNote that each time you purchase an [Augmentation](../basic/augmentations.md), **the price of purchasing another increases by 90%**, so make sure you buy the most expensive [Augmentation](../basic/augmentations.md) first.\\nDon't worry, once you choose to install [Augmentations](../basic/augmentations.md), their prices will reset back to their original values.\\n\\n## Next Steps\\n\\nThat's the end of the walkthrough portion of this guide!\\nYou should continue to explore what the game has to offer.\\nThere's quite a few features that aren't covered or mentioned in this guide, and even more that get unlocked as you continue to play!\\n\\nAlso, check out the api documentation to see what it has to offer.\\nWriting [Scripts](../basic/scripts.md) to perform and automate various tasks is where most of the fun in the game comes from (in my opinion)!\\n\\nThe following are a few things you may want to consider doing in the near future.\\n\\n## Installing Augmentations (and Resetting)\\n\\nIf you've purchased any [Augmentations](../basic/augmentations.md), you'll need to install them before you actually gain their effects.\\nInstalling [Augmentations](../basic/augmentations.md) is the game's \\\"soft-reset\\\" or \\\"prestige\\\" mechanic.\\n\\nTo install your [Augmentations](../basic/augmentations.md), go to the `Augmentations` tab (Alt + a) on the left-hand navigation menu.\\nYou will see a list of all of the [Augmentations](../basic/augmentations.md) you have purchased.\\nBelow that, you will see a button that says `Install Augmentations`.\\nBe warned, after clicking this there is no way to undo it (unless you load an earlier save).\\n\\n## Automating the Script Startup Process\\n\\nWhenever you install [Augmentations](../basic/augmentations.md), all of your [Scripts](../basic/scripts.md) are killed and you'll have to re-run them.\\nDoing this every time you install [Augmentations](../basic/augmentations.md) would be very tedious and annoying, so you should write a [Script](../basic/scripts.md) to automate the process.\\nHere's a simple example for a startup [Script](../basic/scripts.md).\\nFeel free to adjust it to your liking.\\n\\n /** @param {NS} ns */\\n export async function main(ns) {\\n // Array of all servers that don't need any ports opened\\n // to gain root access. These have 16 GB of RAM\\n const servers0Port = [\\\"sigma-cosmetics\\\",\\n \\\"joesguns\\\",\\n \\\"nectar-net\\\",\\n \\\"hong-fang-tea\\\",\\n \\\"harakiri-sushi\\\"];\\n\\n // Array of all servers that only need 1 port opened\\n // to gain root access. These have 32 GB of RAM\\n const servers1Port = [\\\"neo-net\\\",\\n \\\"zer0\\\",\\n \\\"max-hardware\\\",\\n \\\"iron-gym\\\"];\\n\\n // Copy our scripts onto each server that requires 0 ports\\n // to gain root access. Then use nuke() to gain admin access and\\n // run the scripts.\\n for (let i = 0; i < servers0Port.length; ++i) {\\n const serv = servers0Port[i];\\n\\n ns.scp(\\\"early-hack-template.js\\\", serv);\\n ns.nuke(serv);\\n ns.exec(\\\"early-hack-template.js\\\", serv, 6);\\n }\\n\\n // Wait until we acquire the \\\"BruteSSH.exe\\\" program\\n while (!ns.fileExists(\\\"BruteSSH.exe\\\")) {\\n await ns.sleep(60000);\\n }\\n\\n // Copy our scripts onto each server that requires 1 port\\n // to gain root access. Then use brutessh() and nuke()\\n // to gain admin access and run the scripts.\\n for (let i = 0; i < servers1Port.length; ++i) {\\n const serv = servers1Port[i];\\n\\n ns.scp(\\\"early-hack-template.js\\\", serv);\\n ns.brutessh(serv);\\n ns.nuke(serv);\\n ns.exec(\\\"early-hack-template.js\\\", serv, 12);\\n }\\n }\\n\\n## Random Tips\\n\\n- Early on in the game, it's better to spend your money on upgrading [RAM](../basic/ram.md) and purchasing new [Servers](../basic/servers.md) rather than spending it on [Augmentations](../basic/augmentations.md)\\n- The more money available on a [Server](../basic/servers.md), the more effective the `hack()` and `grow()` functions will be.\\n This is because both of these functions use percentages rather than flat values.\\n `hack()` steals a percentage of a [Server](../basic/servers.md)'s total available money, and `grow()` increases a [Server](../basic/servers.md)'s money by X%.\\n- There is a limit to how much money can exist on a [Server](../basic/servers.md).\\n This value is different for each [Server](../basic/servers.md).\\n The `getServerMaxMoney()` function will tell you this maximum value.\\n- At this stage in the game, your combat stats (strength, defense, etc.) are not nearly as useful as your hacking stat.\\n Do not invest too much time or money into gaining combat stat exp.\\n- As a rule of thumb, your hacking target should be the [Server](../basic/servers.md) with highest max money that's required hacking level is under 1/2 of your hacking level.\\n\";","export default \"# Tools & Resource\\n\\n## Official Script Repository\\n\\nThere are plans to create an official repository of Bitburner scripts.\\nAs of right now, this is not a priority and has not been started.\\nHowever, if you'd like to contribute scripts now, you can find the repository [here](https://github.com/bitburner-official/bitburner-scripts) and submit pull requests.\\n\\n## Visual Studio Code Extension\\n\\nOne user created a Bitburner extension for the Visual Studio Code (VSCode) editor.\\n\\nThis extension includes several features such as:\\n\\n- Dynamic RAM calculation\\n- RAM Usage breakdown\\n- Typescript definition files with jsdoc comments\\n- Syntax highlighting\\n\\nYou can find more information and download links [on this reddit post](https://www.reddit.com/r/Bitburner/comments/bh48y2/visual_studio_code_ram_calculator_extra/).\\n\";","export default \"# Documentation\\n\\n## [Beginners guide](help/getting_started.md)\\n\\n## Mechanics\\n\\n- [stats](basic/stats.md)\\n- [terminal](basic/terminal.md)\\n- [hacking](basic/hacking.md)\\n- [scripts](basic/scripts.md)\\n- [servers](basic/servers.md)\\n- [ram](basic/ram.md)\\n- [hacknet_nodes](basic/hacknet_nodes.md)\\n- [augmentations](basic/augmentations.md)\\n- [companies](basic/companies.md)\\n- [factions](basic/factions.md)\\n- [crimes](basic/crimes.md)\\n- [infiltration](basic/infiltration.md)\\n- [reputation](basic/reputation.md)\\n- [stockmarket](basic/stockmarket.md)\\n- [world](basic/world.md)\\n- [codingcontracts](basic/codingcontracts.md)\\n\\n## Advanced Mechanics\\n\\n- [BitNodes](advanced/bitnodes.md)\\n- [BladeBurners](advanced/bladeburners.md)\\n- [Corporations](advanced/corporations.md)\\n- [Gang](advanced/gang.md)\\n- [Grafting](advanced/grafting.md)\\n- [Hacknet Servers](advanced/hacknetservers.md)\\n- [Intelligence](advanced/intelligence.md)\\n- [Sleeves](advanced/sleeves.md)\\n- [Source-Files](advanced/sourcefiles.md)\\n- [Stanek's Gift](advanced/stanek.md)\\n\\n## Resources\\n\\n- [Learn to program](programming/learn.md)\\n- [Remote API](programming/remote_api.md)\\n- [Game Frozen or Stuck?](programming/game_frozen.md)\\n- [Tools & Resources](help/tools_and_resources.md)\\n- [Changelog](changelog.md)\\n\\n## Migration\\n\\n- [v1.0.0 script migration guide](migrations/v1.md)\\n- [v2.0.0 script migration guide](migrations/v2.md)\\n\";","export default \"# v1.0.0 Migration Guide\\n\\nIn v1.0.0 a few API have been broken.\\n\\nmigrated (only for ns2):\\n\\n- bladeburner.getActionTime will return milliseconds instead of seconds.\\n- getHackTime will return milliseconds instead of seconds.\\n- getGrowTime will return milliseconds instead of seconds.\\n- getWeakenTime will return milliseconds instead of seconds.\\n- hackAnalyzePercent renamed to hackAnalyze\\n- hackAnalyzePercent will return decimal instead of percentage\\n- hackChance (not formulas.basic.hackChance) renamed to hackAnalyzeChance\\n- formulas.basic is split into formulas.skills and formulas.hacking\\n\\nnot migrated (require manual changes sometimes):\\n\\n- getPlayer().hacking_skill renamed `hacking`\\n- same thing in sleeves\\n- getPurchasedServers won't let you query for ips instead of hostnames.\\n- getStats is deprecated in favor getPlayer\\n- getCharacterInformation is deprecated in favor getPlayer\\n- getServerRam deprecated in favor of getServerMaxRam and getServerUsedRam\\n- getServerBaseSecurityLevel will be deprecated in favor of nothing, it's not really used.\\n- sleep can no longer be called simultaneously, a new function called asleep will let you.\\n- write returns promise (needs to be await ed).\\n- scp returns a promise (needs to be await ed).\\n- free port, write, read\\n- write, read does not support port anymore, writePort and readPort does.\\n\\nUpon loading v1.0.0 the game will apply some rules to change everything.\\nThe game never changes a file before making a backup called `BACKUP_filename.ext`, then,\\nin the script it will change whatever it thinks it should change.\\nBut will prefix the modified line with the original line.\\n\\nA file called `v1_DETECTED_CHANGES.txt` will point out every file with some possible problem.\\n\";","export default \"# v2.0.0 Migration Guide\\n\\nIn v2.0.0 a few more APIs have been broken.\\n\\n## Working\\n\\nWorking has been rebuilt from the ground up. The motivation for this change is that all\\ndifferent types of work all required different cached variables on the main Player object.\\nThis caused a lot of bugs and crashes. It's been reworked in such a way as to prevent bugs\\nand make it nearly trivial to add new kinds of work.\\nAll work types give their reward immediately. No need to stop work to bank rewards like reputation.\\nFaction and Company work no longer have a time limit.\\nCompany work no longer reduces rep gain by half for quitting early.\\nCompany factions now require 400k rep to join (up from 200k).\\nBackdooring a company server reduces faction requirement to 300k.\\nAll types of work generally no longer keep track of cumulative gains like exp and reputation since it's applied instantly.\\n\\n## commitCrime\\n\\nCrime now loops, meaning after finishing one shoplift you start the next one with no input. While the signature\\nhas not changed, its behavior has. It also has a new 'focus' parameter.\\n\\n## getPlayer\\n\\nThe following work-related fields are no longer included:\\n\\n- workChaExpGained\\n- currentWorkFactionName\\n- workDexExpGained\\n- workHackExpGained\\n- createProgramReqLvl\\n- workStrExpGained\\n- companyName\\n- crimeType\\n- workRepGained\\n- workChaExpGainRate\\n- workType\\n- workStrExpGainRate\\n- isWorking\\n- workRepGainRate\\n- workDefExpGained\\n- currentWorkFactionDescription\\n- workHackExpGainRate\\n- workAgiExpGainRate\\n- workDexExpGainRate\\n- workMoneyGained\\n- workMoneyLossRate\\n- workMoneyGainRate\\n- createProgramName\\n- workDefExpGainRate\\n- workAgiExpGained\\n- className\\n\\nThe reason for this, is that these fields are all, in one way or another, included in the new work field `currentWork`.\\nSome of these values are also irrelevant.\\nTake a look at the new singularity.getCurrentWork function:\\n\\nAll fields ending in `_mult` have been moved to the `mults` struct.\\nFor example: `getPlayer().hacking_skill_mult` => `getPlayer().mults.hacking_skill`\\n\\nskills has been moved to the skills struct\\nFor example: `getPlayer().hacking` => `getPlayer().skills.hacking`\\n\\nexp has been moved to the exp struct\\nFor example: `getPlayer().hacking_exp` => `getPlayer().exp.hacking`\\n\\nhp has been moved to the hp struct\\nFor example: `getPlayer().max_hp` => `getPlayer().hp.max` or `hp.current`\\n\\n`hasWseAccount`, `hasTixApiAccess`, `has4SData`, `has4SDataTixApi` have been removed and replaced with similar stock functions.\\n\\n## workForCompany\\n\\nThe argument 'companyName' is now required.\\n\\n## getScriptIncome & getScriptExpGain\\n\\nThese two functions used to have a call where, if no arguments were provided, it would return the total for all scripts. This caused weird signature.\\nIf you want to get the total income/exp for all scripts, use the new getTotalScriptIncome / getTotalScriptExpGain instead.\\n\\n## scp\\n\\nThe last two arguments of spc have been reversed. The signature is now scp(files, destination, optional_source)\\n\\n## Singularity\\n\\nThe top level singularity functions were deprecated a while ago in favor of the singularity namespace.\\nThis means calls like 'ns.connect' need to be changed to 'ns.singularity.connect'\\n\\n## stock.buy, stock.sell, stock.short\\n\\nThese functions were renamed to stock.buyStock, stock.sellStock, and stock.buyShort because 'buy', 'sell', and 'short'\\nare very common tokens that would trick the ram calculation.\\n\\n## corporation.bribe\\n\\nThe ability to give shares as a bribe has been removed. The signature is now bribe(faction, money)\\n\";","export default \"# Game Frozen or Stuck?\\n\\n## Infinite Loop in Scripts\\n\\nIf your game is frozen or stuck in any way, then the most likely culprit is an infinitely running loop in your script.\\nTo get past the freezing, run the game with `?noScripts` in the URL:\\n\\n[Link to no freeze](https://bitburner-official.github.io?noScripts)\\n\\nThen, to fix your script, make sure you have a `sleep()` or any other timed function like `hack()` or `grow()` in any infinite loops:\\n\\n while(true) {\\n // This is an infinite loop that does something\\n ...\\n await ns.sleep(1000); // Add a 1s sleep to prevent freezing\\n }\\n\\nAlso make sure that each while loop gets to the `await`ed function or `break`, for example the next snippet has a `sleep()` function, but it nor any possible conditional breaks are never reached and therefore will crash the game:\\n\\n while(true) {\\n let currentMoney = ns.getServerMoneyAvailable(\\\"n00dles\\\");\\n let maxMoney = ns.getServerMaxMoney(\\\"n00dles\\\");\\n if (currentMoney < maxMoney/2){\\n await ns.grow(\\\"n00dles\\\");\\n }\\n if (currentMoney === maxMoney){\\n break;\\n }\\n }\\n\\nIf `n00dles` current money is, for example, 75% of the maximum money, the script will reach neither `grow()` nor `break` and the game will crash.\\nAdding a sleep like in the first example, or changing the code so that the `awaited` function or `break` is always reached, would prevent the crash.\\n\\nCommon infinite loop when translating the server purchasing script in starting guide to scripts is to have a while loop, where the condition's change is conditional:\\n\\n var ram = 8;\\n var i = 0;\\n\\n while (i < ns.getPurchasedServerLimit()) {\\n if (ns.getServerMoneyAvailable(\\\"home\\\") > ns.getPurchasedServerCost(ram)) {\\n var hostname = ns.purchaseServer(\\\"pserv-\\\" + i, ram);\\n ns.scp(\\\"early-hack-template.script\\\", hostname);\\n ns.exec(\\\"early-hack-template.script\\\", hostname, 3);\\n ++i;\\n }\\n }\\n\\nIf the player does not currently have enough money to purchase a server, the `if`'s condition will be false and `++i` will not be reached.\\nSince the script doesn't have `sleep()` and value `i` will not change without the `if` being true, this will crash the game.\\nAdding a `sleep()` that is always reached would prevent the crash.\\n\\n## Blackscreen\\n\\nIf the game window becomes a black screen without the game itself crashing, this is caused by the game running too many concurrent scripts (the game runs on a browser and each tab can only use so much ram until it crashes).\\nDepending on which scripts are running and your hardware, this number can vary between 50000 to 100000 instances (in version 2.0.2. In prior versions this number was about 1/5th of that).\\nTo prevent this from happening make sure to multithread the scripts as much as possible.\\n\\n## Bug\\n\\nOtherwise, the game is probably frozen/stuck due to a bug.\\nTo report a bug, follow the guidelines [here](https://github.com/bitburner-official/bitburner-src/blob/master/doc/CONTRIBUTING.md#reporting-bugs).\\n\";","export default \"# Hacking algorithms\\n\\nThere are three primary families of hacking algorithms.\\nThis guide will go over each of them and advise on how they can be implemented.\\n\\n## Self-contained algorithms\\n\\n**Difficulty**: Easy\\n\\nPros:\\n\\n- Easy to implement\\n- Does not require other scripts to work\\n- Works at any stage of the game\\n\\nCons:\\n\\n- Limits income generation\\n- Extremely [RAM](../basic/ram.md) inefficient\\n- Utilizes script online time poorly\\n- Risk of over hacking\\n\\nSelf-contained algorithms are the simplest family of hacking algorithms to implement.\\nEach script is tasked with choosing which function to execute based on the status of the target server.\\nBecause of this, they guarantee a consistent, but relatively small, flow of money.\\n\\nThe general logic goes like this:\\n\\n loop forever {\\n if security is not minimum {\\n await ns.weaken(target)\\n } else if money is not maximum {\\n await ns.grow(target)\\n } else {\\n await ns.hack(target)\\n }\\n }\\n\\nThis algorithm is perfectly capable of paving the way through the majority of the game, but it has a few significant issues.\\n\\n- It tends to make all your scripts on every server do the same thing.\\n (e.g. If the target is 0.01 security above the minimum, all scripts will decide to weaken, when only a handful of threads should be devoted to the task)\\n- At higher thread counts, these scripts have the potential to hack the server to $0, or maximum security, requiring a long setup time while the scripts return the server to the best stats.\\n- Requires function calls such as `getServerSecurityLevel` and `getServerMoneyAvailable`, as well as calling all three hacking functions, increasing RAM cost which is multiplied by the number of allocated threads\\n\\n## Loop algorithms\\n\\n**Difficulty**: Easy to Medium\\n\\nPros:\\n\\n- Simple to understand\\n- Works at any stage of the game\\n- Maximize RAM usage\\n\\nCons:\\n\\n- Requires a script that handles deployment\\n\\nBy splitting our hack, weaken, and grow functions into three separate scripts, we can both remove our reliance on functions such as `getServerSecurityLevel` as well as removing functions that cannot work concurrently, reducing RAM requirements, and thus increasing our thread limits.\\nLoop scripts are formatted like this:\\n\\n loop forever {\\n await ns.hack(target) // or grow, or weaken\\n }\\n\\nNow we can take the total amount of threads available and split it and allocate, for example:\\n\\n- 1 part to the hack scripts\\n- 10 parts to the grow scripts\\n- 2 parts to the weaken scripts\\n\\nMeaning if we have space for 100 threads across the entire network 7 threads will go to the hack scripts, 76 threads will go to the grow scripts and 15 threads will go to the weaken scripts.\\nThe ratios described here are arbitrary and can be greatly improved through the use of the analyze functions, and later, through the use of Formulas.exe.\\n\\nWhen utilizing this strategy, monitor the amount of money and security on the target server, if the money is not hovering around maximum and the security around the minimum, the ratios should be tweaked until that is the case.\\n\\nUtilizing `sleep` or `asleep` to ensure that your scripts do not all start at the same time can decrease the chance of issues associated with overhacking occurring.\\nBoth functions have a ram cost of zero.\\n\\n## Batch algorithms (HGW, HWGW, or Cycles)\\n\\n**Difficulty**: Hard\\n\\nPros:\\n\\n- Maximum potential income\\n\\nCons:\\n\\n- Very difficult to implement without prior programming knowledge\\n- Very difficult to make work on servers with less than 1TB of RAM\\n\\nBatch algorithms utilize a master script that uses `exec` many scripts which utilize a relevant hacking function in batches.\\n\\nThe scripts used to execute the hacking functions are even simpler than the previous algorithms but a complex controller is required to calculate the effect, time taken, and the necessary delay.\\n\\n await ns.sleep(a bit)\\n await ns.hack(target) // or grow, or weaken\\n\\nA few things need to be known before this algorithm can be implemented:\\n\\n- The effects of hack and grow depend on the server security level, a higher security level results in a reduced effect.\\n You only want these effects to occur when the security level is minimized.\\n- The time taken to execute hack, grow, or weaken is determined when the function is called and is based on the security level of the target server and your hacking level.\\n You only want these effects to start when the security level is minimized.\\n- The effects of hack, grow, and weaken, are determined when the time is completed, rather than at the beginning.\\n Hack should finish when security is minimum and money is maximum.\\n Grow should finish when security is minimum, shortly after a hack occurred.\\n Weaken should occur when security is not at a minimum due to a hack or grow increasing it.\\n\\nA single batch consists of four actions:\\n\\n1. A hack script removes a predefined, precalculated amount of money from the target server.\\n2. A weaken script counters the security increase of the hack script.\\n3. A grow script counters the money decrease caused by the hack script.\\n4. A weaken script counters the security increase caused by the grow script.\\n\\nIt is also important that these 4 scripts finish in the order specified above, and all of their effects be precalculated to optimize the ratios between them.\\nThis is the reason for the delay in the scripts.\\n\\n |= hack ====================|\\n |=weaken 1======================================|\\n |= grow ==========================|\\n |=weaken 2======================================|\\n\\nBatches only function predictably when the target server is at minimum security and maximum money, so your script must also handle preparing a server for your batches.\\nYou can utilize batches to prepare a server by using no hack threads during preparation.\\n\\nDepending on your computer's performance as well as a few other factors, the necessary delay between script execution times may range between 20ms and 200ms, you want to fine-tune this value to be as low as possible while also avoiding your scripts finishing out of order.\\nAnything lower than 20ms will not work due to JavaScript limitations.\\n\";","export default \"# Learn to Program in JavaScript\\n\\n## For Beginner Programmers\\n\\nIf you have little to no programming experience, that's okay!\\nYou don't need to be a great programmer in order to enjoy or play this game.\\nIn fact, this game could help you learn some basic programming concepts.\\n\\nHere are some good tutorials for learning programming/JavaScript as a beginner:\\n\\n- [Learn-JS](http://www.learn-js.org/en/Welcome)\\n- [programiz](https://www.programiz.com/javascript/get-started)\\n- [Speaking JavaScript](https://exploringjs.com/es5/)\\n This is a bit on the longer side.\\n You can skip all of the historical background stuff.\\n Recommended chapters: 1, 7-18\\n\\n## For Experienced Programmers\\n\\nThe following section lists several good tutorials/resources for those who have experience programming but who have not worked extensively with JavaScript before.\\n\\nBefore that, however, it's important to clarify some terminology about the different versions of JavaScript.\\nThese are summarized in this article:\\n\\n[WTF is ES6, ES8, ES2017, ECMAScript...](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)\\n\\nAn important takeaway from this article is that ES6, also known as ES2015, introduced many major features that are commonly seen in modern JavaScript programming.\\nHowever, this means that ES5 engines and interpreters will fail if they encounters these ES6 features.\\nYou'll see why this is important further down.\\n\\n- [MDN Introduction to JS](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript)\\n- [Eloquent JavaScript (ES6+)](http://eloquentjavascript.net/)\\n Recommended Chapters: Introduction, 1-6\\n- [Modern JavaScript Tutorial (ES6+)](https://javascript.info/)\\n Recommended Chapters: 2, 4-6\\n\";","export default \"# Remote API\\n\\nAll versions of Bitburner can use websockets to connect to a server.\\nThat server can then perform a number of actions.\\nMost commonly this is used in conjunction with an external text editor or API\\nin order to make writing scripts easier, or even use typescript.\\n\\nTo make use of this Remote API through the official server, look [here](https://github.com/bitburner-official/typescript-template).\\nIf you want to make your own server, see below for API details.\\n\\nThis API uses the JSON RPC 2.0 protocol. Inputs are in the following form:\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": string,\\n \\\"params\\\": any\\n }\\n\\nOutputs:\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": any,\\n \\\"error\\\": any\\n }\\n\\n## Methods\\n\\n## `pushFile`\\n\\nCreate or update a file.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"pushFile\\\",\\n \\\"params\\\": {\\n filename: string;\\n content: string;\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": \\\"OK\\\"\\n }\\n\\n## `getFile`\\n\\nRead a file and its content.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"getFile\\\",\\n \\\"params\\\": {\\n filename: string;\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": string\\n }\\n\\n## `deleteFile`\\n\\nDelete a file.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"deleteFile\\\",\\n \\\"params\\\": {\\n filename: string;\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": \\\"OK\\\"\\n }\\n\\n## `getFileNames`\\n\\nList all file names on a server.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"getFileNames\\\",\\n \\\"params\\\": {\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": string[]\\n }\\n\\n## `getAllFiles`\\n\\nGet the content of all files on a server.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"getAllFiles\\\",\\n \\\"params\\\": {\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": {\\n filename: string,\\n content: string\\n }[]\\n }\\n\\n## `calculateRam`\\n\\nCalculate the in-game ram cost of a script.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"calculateRam\\\",\\n \\\"params\\\": {\\n filename: string;\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": number\\n }\\n\\n## `getDefinitionFile`\\n\\nGet the definition file of the API.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"getDefinitionFile\\\"\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": string\\n }\\n\";","export default \"/** All netscript definitions */\\n\\n/** @public */\\ninterface HP {\\n current: number;\\n max: number;\\n}\\n\\n/** @public */\\ninterface Skills {\\n hacking: number;\\n strength: number;\\n defense: number;\\n dexterity: number;\\n agility: number;\\n charisma: number;\\n intelligence: number;\\n}\\n\\n// TODO: provide same treatment to CodingContractData as for SleeveTask (actual types)\\n/**\\n * Coding contract data will differ depending on coding contract.\\n * @public\\n */\\ntype CodingContractData = any;\\n\\n/** @public */\\ntype PortData = string | number;\\n\\n/** @public */\\ntype ScriptArg = string | number | boolean;\\n\\n/** @public */\\ntype FilenameOrPID = number | string;\\n\\n/** @public */\\ninterface Person {\\n hp: HP;\\n skills: Skills;\\n exp: Skills;\\n mults: Multipliers;\\n city: CityName;\\n}\\n\\n/** @public */\\ninterface Player extends Person {\\n money: number;\\n numPeopleKilled: number;\\n entropy: number;\\n jobs: Partial>;\\n factions: string[];\\n totalPlaytime: number;\\n location: string;\\n}\\n\\n/** @public */\\ninterface SleevePerson extends Person {\\n /** Number 0-100 Experience earned and shared is multiplied with shock% before sync% */\\n shock: number;\\n /** Number 1-100 Experience earned by this sleeve and shared with the player is multiplied with sync% after shock% */\\n sync: number;\\n /** Number 1-100 initial Value of sync on BN start */\\n memory: number;\\n /** Number of 200ms cycles which are stored as bonus time */\\n storedCycles: number;\\n}\\n\\n/** Various info about resets\\n * @public */\\ninterface ResetInfo {\\n /** Numeric timestamp (from Date.now()) of last augmentation reset */\\n lastAugReset: number;\\n /** Numeric timestamp (from Date.now()) of last bitnode reset */\\n lastNodeReset: number;\\n /** The current bitnode */\\n currentNode: number;\\n /** A map of owned augmentations to their levels. Keyed by the augmentation name. Map values are the augmentation level (e.g. for NeuroFlux governor). */\\n ownedAugs: Map;\\n /** A map of owned SF to their levels. Keyed by the SF number. Map values are the SF level. */\\n ownedSF: Map;\\n}\\n\\n/** @public */\\ninterface MoneySource {\\n bladeburner: number;\\n casino: number;\\n class: number;\\n codingcontract: number;\\n corporation: number;\\n crime: number;\\n gang: number;\\n hacking: number;\\n hacknet: number;\\n hacknet_expenses: number;\\n hospitalization: number;\\n infiltration: number;\\n sleeves: number;\\n stock: number;\\n total: number;\\n work: number;\\n servers: number;\\n other: number;\\n augmentations: number;\\n}\\n\\n/** @public */\\ninterface MoneySources {\\n sinceInstall: MoneySource;\\n sinceStart: MoneySource;\\n}\\n\\n/** @public */\\ninterface Multipliers {\\n /** Multiplier to hacking skill */\\n hacking: number;\\n /** Multiplier to strength skill */\\n strength: number;\\n /** Multiplier to defense skill */\\n defense: number;\\n /** Multiplier to dexterity skill */\\n dexterity: number;\\n /** Multiplier to agility skill */\\n agility: number;\\n /** Multiplier to charisma skill */\\n charisma: number;\\n /** Multiplier to hacking experience gain rate */\\n hacking_exp: number;\\n /** Multiplier to strength experience gain rate */\\n strength_exp: number;\\n /** Multiplier to defense experience gain rate */\\n defense_exp: number;\\n /** Multiplier to dexterity experience gain rate */\\n dexterity_exp: number;\\n /** Multiplier to agility experience gain rate */\\n agility_exp: number;\\n /** Multiplier to charisma experience gain rate */\\n charisma_exp: number;\\n /** Multiplier to chance of successfully performing a hack */\\n hacking_chance: number;\\n /** Multiplier to hacking speed */\\n hacking_speed: number;\\n /** Multiplier to amount of money the player gains from hacking */\\n hacking_money: number;\\n /** Multiplier to amount of money injected into servers using grow */\\n hacking_grow: number;\\n /** Multiplier to amount of reputation gained when working */\\n company_rep: number;\\n /** Multiplier to amount of reputation gained when working */\\n faction_rep: number;\\n /** Multiplier to amount of money gained from crimes */\\n crime_money: number;\\n /** Multiplier to crime success rate */\\n crime_success: number;\\n /** Multiplier to amount of money gained from working */\\n work_money: number;\\n /** Multiplier to amount of money produced by Hacknet Nodes */\\n hacknet_node_money: number;\\n /** Multiplier to cost of purchasing a Hacknet Node */\\n hacknet_node_purchase_cost: number;\\n /** Multiplier to cost of ram for a Hacknet Node */\\n hacknet_node_ram_cost: number;\\n /** Multiplier to cost of core for a Hacknet Node */\\n hacknet_node_core_cost: number;\\n /** Multiplier to cost of leveling up a Hacknet Node */\\n hacknet_node_level_cost: number;\\n /** Multiplier to Bladeburner max stamina */\\n bladeburner_max_stamina: number;\\n /** Multiplier to Bladeburner stamina gain rate */\\n bladeburner_stamina_gain: number;\\n /** Multiplier to effectiveness in Bladeburner Field Analysis */\\n bladeburner_analysis: number;\\n /** Multiplier to success chance in Bladeburner contracts/operations */\\n bladeburner_success_chance: number;\\n}\\n\\n/** @public */\\ninterface TailProperties {\\n /** X-coordinate of the log window */\\n x: number;\\n /** Y-coordinate of the log window */\\n y: number;\\n /** Width of the log window content area */\\n width: number;\\n /** Height of the log window content area */\\n height: number;\\n}\\n\\n/**\\n * @public\\n * A stand-in for the real React.ReactNode.\\n * A {@link ReactElement} is rendered dynamically with React.\\n * number and string are displayed directly.\\n * boolean, null, and undefined are ignored and not rendered.\\n * An array of ReactNodes will display all members of that array sequentially.\\n *\\n * Use React.createElement to make the ReactElement type, see {@link https://react.dev/reference/react/createElement#creating-an-element-without-jsx | creating an element without jsx} from the official React documentation.\\n */\\ntype ReactNode = ReactElement | string | number | null | undefined | boolean | ReactNode[];\\n\\n/**\\n * @public\\n * A stand-in for the real React.ReactElement.\\n * Use React.createElement to make these.\\n * See {@link https://react.dev/reference/react/createElement#creating-an-element-without-jsx | creating an element without jsx} from the official React documentation.\\n */\\ninterface ReactElement {\\n type: string | ((props: any) => ReactElement | null) | (new (props: any) => object);\\n props: any;\\n key: string | number | null;\\n}\\n\\n/** @public */\\ninterface RunningScript {\\n /** Arguments the script was called with */\\n args: (string | number | boolean)[];\\n /** Filename of the script */\\n filename: string;\\n /**\\n * Script logs as an array. The newest log entries are at the bottom.\\n * Timestamps, if enabled, are placed inside `[brackets]` at the start of each line.\\n **/\\n logs: string[];\\n /** Total amount of hacking experience earned from this script when offline */\\n offlineExpGained: number;\\n /** Total amount of money made by this script when offline */\\n offlineMoneyMade: number;\\n /** Number of seconds that the script has been running offline */\\n offlineRunningTime: number;\\n /** Total amount of hacking experience earned from this script when online */\\n onlineExpGained: number;\\n /** Total amount of money made by this script when online */\\n onlineMoneyMade: number;\\n /** Number of seconds that this script has been running online */\\n onlineRunningTime: number;\\n /** Process ID. Must be an integer */\\n pid: number;\\n /** How much RAM this script uses for ONE thread */\\n ramUsage: number;\\n /** Hostname of the server on which this script runs */\\n server: string;\\n /** Properties of the tail window, or null if it is not shown */\\n tailProperties: TailProperties | null;\\n /**\\n * The title, as shown in the script's log box. Defaults to the name + args,\\n * but can be changed by the user. If it is set to a React element (only by\\n * the user), that will not be persisted, and will be restored to default on\\n * load.\\n */\\n title: string | ReactElement;\\n /** Number of threads that this script runs with */\\n threads: number;\\n /** Whether this RunningScript is excluded from saves */\\n temporary: boolean;\\n}\\n\\n/** @public */\\ninterface RunOptions {\\n /** Number of threads that the script will run with, defaults to 1 */\\n threads?: number;\\n /** Whether this script is excluded from saves, defaults to false */\\n temporary?: boolean;\\n /**\\n * The RAM allocation to launch each thread of the script with.\\n *\\n * Lowering this will not automatically let you get away with using less RAM:\\n * the dynamic RAM check enforces that all {@link NS} functions actually called incur their cost.\\n * However, if you know that certain functions that are statically present (and thus included\\n * in the static RAM cost) will never be called in a particular circumstance, you can use\\n * this to avoid paying for them.\\n *\\n * You can also use this to increase the RAM if the static RAM checker has missed functions\\n * that you need to call.\\n *\\n * Must be greater-or-equal to the base RAM cost. Defaults to the statically calculated cost.\\n */\\n ramOverride?: number;\\n /**\\n * Should we fail to run if another instance is running with the exact same arguments?\\n * This used to be the default behavior, now defaults to false.\\n */\\n preventDuplicates?: boolean;\\n}\\n\\n/** @public */\\ninterface RecentScript extends RunningScript {\\n /** Timestamp of when the script was killed */\\n timeOfDeath: Date;\\n}\\n\\n/**\\n * Data representing the internal values of a crime.\\n * @public\\n */\\ninterface CrimeStats {\\n /** Number representing the difficulty of the crime. Used for success chance calculations */\\n difficulty: number;\\n /** Amount of karma lost for successfully committing this crime */\\n karma: number;\\n /** How many people die as a result of this crime */\\n kills: number;\\n /** How much money is given */\\n money: number;\\n /** Milliseconds it takes to attempt the crime */\\n time: number;\\n /** Description of the crime activity */\\n type: string;\\n /** hacking level impact on success change of the crime */\\n hacking_success_weight: number;\\n /** strength level impact on success change of the crime */\\n strength_success_weight: number;\\n /** defense level impact on success change of the crime */\\n defense_success_weight: number;\\n /** dexterity level impact on success change of the crime */\\n dexterity_success_weight: number;\\n /** agility level impact on success change of the crime */\\n agility_success_weight: number;\\n /** charisma level impact on success change of the crime */\\n charisma_success_weight: number;\\n /** hacking exp gained from crime */\\n hacking_exp: number;\\n /** strength exp gained from crime */\\n strength_exp: number;\\n /** defense exp gained from crime */\\n defense_exp: number;\\n /** dexterity exp gained from crime */\\n dexterity_exp: number;\\n /** agility exp gained from crime */\\n agility_exp: number;\\n /** charisma exp gained from crime */\\n charisma_exp: number;\\n /** intelligence exp gained from crime */\\n intelligence_exp: number;\\n}\\n\\n/**\\n * Options to affect the behavior of {@link NS.hack | hack}, {@link NS.grow | grow}, and {@link NS.weaken | weaken}.\\n * @public\\n */\\ninterface BasicHGWOptions {\\n /** Number of threads to use for this function.\\n * Must be less than or equal to the number of threads the script is running with. */\\n threads?: number;\\n /** Set to true this action will affect the stock market. */\\n stock?: boolean;\\n /** Number of additional milliseconds that will be spent waiting between the start of the function and when it\\n * completes. */\\n additionalMsec?: number;\\n}\\n\\n/**\\n * Return value of {@link Sleeve.getSleevePurchasableAugs | getSleevePurchasableAugs}\\n * @public\\n */\\ninterface AugmentPair {\\n /** augmentation name */\\n name: string;\\n /** augmentation cost */\\n cost: number;\\n}\\n\\n/** @public */\\ndeclare enum PositionType {\\n Long = \\\"L\\\",\\n Short = \\\"S\\\",\\n}\\n\\n/** @public */\\ndeclare enum OrderType {\\n LimitBuy = \\\"Limit Buy Order\\\",\\n LimitSell = \\\"Limit Sell Order\\\",\\n StopBuy = \\\"Stop Buy Order\\\",\\n StopSell = \\\"Stop Sell Order\\\",\\n}\\n\\n/**\\n * Value in map of {@link StockOrder}\\n * @public\\n */\\ninterface StockOrderObject {\\n /** Number of shares */\\n shares: number;\\n /** Price per share */\\n price: number;\\n /** Order type */\\n type: OrderType;\\n /** Order position */\\n position: PositionType;\\n}\\n\\n/**\\n * Return value of {@link TIX.getOrders | getOrders}\\n *\\n * Keys are stock symbols, properties are arrays of {@link StockOrderObject}\\n * @public\\n */\\ninterface StockOrder {\\n [key: string]: StockOrderObject[];\\n}\\n\\n/** Constants used for the stockmarket game mechanic.\\n * @public */\\ninterface StockMarketConstants {\\n /** Normal time in ms between stock market updates */\\n msPerStockUpdate: number;\\n /** Minimum time in ms between stock market updates if there is stored offline/bonus time */\\n msPerStockUpdateMin: number;\\n /** An internal constant used while determining when to flip a stock's forecast */\\n TicksPerCycle: number;\\n /** Cost of the WSE account */\\n WSEAccountCost: number;\\n /** Cost of the TIX API */\\n TIXAPICost: number;\\n /** Cost of the 4S Market Data */\\n MarketData4SCost: number;\\n /** Cost of the 4S Market Data TIX API integration */\\n MarketDataTixApi4SCost: number;\\n /** Commission fee for transactions */\\n StockMarketCommission: number;\\n}\\n\\n/**\\n * A single process on a server.\\n * @public\\n */\\ninterface ProcessInfo {\\n /** Script name. */\\n filename: string;\\n /** Number of threads script is running with */\\n threads: number;\\n /** Script's arguments */\\n args: (string | number | boolean)[];\\n /** Process ID */\\n pid: number;\\n /** Whether this process is excluded from saves */\\n temporary: boolean;\\n}\\n\\n/**\\n * Hack related multipliers.\\n * @public\\n */\\ninterface HackingMultipliers {\\n /** Player's hacking chance multiplier. */\\n chance: number;\\n /** Player's hacking speed multiplier. */\\n speed: number;\\n /** Player's hacking money stolen multiplier. */\\n money: number;\\n /** Player's hacking growth multiplier */\\n growth: number;\\n}\\n\\n/**\\n * Hacknet related multipliers.\\n * @public\\n */\\ninterface HacknetMultipliers {\\n /** Player's hacknet production multiplier */\\n production: number;\\n /** Player's hacknet purchase cost multiplier */\\n purchaseCost: number;\\n /** Player's hacknet ram cost multiplier */\\n ramCost: number;\\n /** Player's hacknet core cost multiplier */\\n coreCost: number;\\n /** Player's hacknet level cost multiplier */\\n levelCost: number;\\n}\\n\\n/**\\n * Hacknet node related constants\\n * @public\\n */\\ninterface HacknetNodeConstants {\\n /** Amount of money gained per level */\\n MoneyGainPerLevel: number;\\n /** Base cost for a new node */\\n BaseCost: number;\\n /** Base cost per level */\\n LevelBaseCost: number;\\n /** Base cost to increase RAM */\\n RamBaseCost: number;\\n /** Base cost to increase cores */\\n CoreBaseCost: number;\\n /** Multiplier to purchase new node */\\n PurchaseNextMult: number;\\n /** Multiplier to increase node level */\\n UpgradeLevelMult: number;\\n /** Multiplier to increase RAM */\\n UpgradeRamMult: number;\\n /** Multiplier to increase cores */\\n UpgradeCoreMult: number;\\n /** Max node level */\\n MaxLevel: number;\\n /** Max amount of RAM in GB */\\n MaxRam: number;\\n /** Max number of cores */\\n MaxCores: number;\\n}\\n\\n/**\\n * Hacknet server related constants\\n * @public\\n */\\ninterface HacknetServerConstants {\\n /** Number of hashes calculated per level */\\n HashesPerLevel: number;\\n /** Base cost for a new server */\\n BaseCost: number;\\n /** Base cost to increase RAM */\\n RamBaseCost: number;\\n /** Base cost to increase cores */\\n CoreBaseCost: number;\\n /** Base cost to upgrade cache */\\n CacheBaseCost: number;\\n /** Multiplier to purchase a new server */\\n PurchaseMult: number;\\n /** Multiplier to increase server level */\\n UpgradeLevelMult: number;\\n /** Multiplier to increase RAM */\\n UpgradeRamMult: number;\\n /** Multiplier to increase cores */\\n UpgradeCoreMult: number;\\n /** Multiplier to upgrade cache */\\n UpgradeCacheMult: number;\\n /** Max number of servers */\\n MaxServers: number;\\n /** Max level for a server */\\n MaxLevel: number;\\n /** Max amount of RAM in GB */\\n MaxRam: number;\\n /** Max number of cores */\\n MaxCores: number;\\n /** Max cache size */\\n MaxCache: number;\\n}\\n\\n/**\\n * A server. Not all servers have all of these properties - optional properties are missing on certain servers.\\n * @public\\n */\\nexport interface Server {\\n /** Hostname. Must be unique */\\n hostname: string;\\n /** IP Address. Must be unique */\\n ip: string;\\n\\n /** Whether or not the SSH Port is open */\\n sshPortOpen: boolean;\\n /** Whether or not the FTP port is open */\\n ftpPortOpen: boolean;\\n /** Whether or not the SMTP Port is open */\\n smtpPortOpen: boolean;\\n /** Whether or not the HTTP Port is open */\\n httpPortOpen: boolean;\\n /** Whether or not the SQL Port is open */\\n sqlPortOpen: boolean;\\n\\n /** Flag indicating whether player has admin/root access to this server */\\n hasAdminRights: boolean;\\n\\n /** How many CPU cores this server has. Affects magnitude of grow and weaken ran from this server. */\\n cpuCores: number;\\n\\n /** Flag indicating whether player is currently connected to this server */\\n isConnectedTo: boolean;\\n\\n /** RAM (GB) used. i.e. unavailable RAM */\\n ramUsed: number;\\n /** RAM (GB) available on this server */\\n maxRam: number;\\n\\n /** Name of company/faction/etc. that this server belongs to, not applicable to all Servers */\\n organizationName: string;\\n\\n /** Flag indicating whether this is a purchased server */\\n purchasedByPlayer: boolean;\\n\\n /** Flag indicating whether this server has a backdoor installed by a player */\\n backdoorInstalled?: boolean;\\n\\n /** Server's initial server security level at creation. */\\n baseDifficulty?: number;\\n\\n /** Server Security Level */\\n hackDifficulty?: number;\\n\\n /** Minimum server security level that this server can be weakened to */\\n minDifficulty?: number;\\n\\n /** How much money currently resides on the server and can be hacked */\\n moneyAvailable?: number;\\n\\n /** Maximum amount of money that this server can hold */\\n moneyMax?: number;\\n\\n /** Number of open ports required in order to gain admin/root access */\\n numOpenPortsRequired?: number;\\n\\n /** How many ports are currently opened on the server */\\n openPortCount?: number;\\n\\n /** Hacking level required to hack this server */\\n requiredHackingSkill?: number;\\n\\n /** Growth effectiveness statistic. Higher values produce more growth with ns.grow() */\\n serverGrowth?: number;\\n}\\n\\n/**\\n * All multipliers affecting the difficulty of the current challenge.\\n * @public\\n */\\ninterface BitNodeMultipliers {\\n /** Influences how quickly the player's agility level (not exp) scales */\\n AgilityLevelMultiplier: number;\\n /** Influences the base cost to purchase an augmentation. */\\n AugmentationMoneyCost: number;\\n /** Influences the base rep the player must have with a faction to purchase an augmentation. */\\n AugmentationRepCost: number;\\n /** Influences how quickly the player can gain rank within Bladeburner. */\\n BladeburnerRank: number;\\n /** Influences the cost of skill levels from Bladeburner. */\\n BladeburnerSkillCost: number;\\n /** Influences how quickly the player's charisma level (not exp) scales */\\n CharismaLevelMultiplier: number;\\n /** Influences the experience gained for each ability when a player completes a class. */\\n ClassGymExpGain: number;\\n /** Influences the amount of money gained from completing Coding Contracts */\\n CodingContractMoney: number;\\n /** Influences the experience gained for each ability when the player completes working their job. */\\n CompanyWorkExpGain: number;\\n /** Influences how much money the player earns when completing working their job. */\\n CompanyWorkMoney: number;\\n /** Influences the money gain from dividends of corporations created by the player. */\\n CorporationSoftcap: number;\\n /** Influences the valuation of corporations created by the player. */\\n CorporationValuation: number;\\n /** Influences the base experience gained for each ability when the player commits a crime. */\\n CrimeExpGain: number;\\n /** Influences the base money gained when the player commits a crime. */\\n CrimeMoney: number;\\n /** Influences how many Augmentations you need in order to get invited to the Daedalus faction */\\n DaedalusAugsRequirement: number;\\n /** Influences how quickly the player's defense level (not exp) scales */\\n DefenseLevelMultiplier: number;\\n /** Influences how quickly the player's dexterity level (not exp) scales */\\n DexterityLevelMultiplier: number;\\n /** Influences how much rep the player gains in each faction simply by being a member. */\\n FactionPassiveRepGain: number;\\n /** Influences the experience gained for each ability when the player completes work for a Faction. */\\n FactionWorkExpGain: number;\\n /** Influences how much rep the player gains when performing work for a faction. */\\n FactionWorkRepGain: number;\\n /** Influences how much it costs to unlock the stock market's 4S Market Data API */\\n FourSigmaMarketDataApiCost: number;\\n /** Influences how much it costs to unlock the stock market's 4S Market Data (NOT API) */\\n FourSigmaMarketDataCost: number;\\n /** Influences the respect gain and money gain of your gang. */\\n GangSoftcap: number;\\n /** Influences the experienced gained when hacking a server. */\\n HackExpGain: number;\\n /** Influences how quickly the player's hacking level (not experience) scales */\\n HackingLevelMultiplier: number;\\n /** Influences how much money is produced by Hacknet Nodes\\n * and the hash rate of Hacknet Servers (unlocked in BitNode-9) */\\n HacknetNodeMoney: number;\\n /** Influences how much money it costs to upgrade your home computer's RAM */\\n HomeComputerRamCost: number;\\n /** Influences how much money is gained when the player infiltrates a company. */\\n InfiltrationMoney: number;\\n /** Influences how much rep the player can gain from factions when selling stolen documents and secrets */\\n InfiltrationRep: number;\\n /** Influences how much money can be stolen from a server when the player\\n * performs a hack against it through the Terminal. */\\n ManualHackMoney: number;\\n /** Influence how much it costs to purchase a server */\\n PurchasedServerCost: number;\\n /** Influences the maximum number of purchased servers you can have */\\n PurchasedServerLimit: number;\\n /** Influences the maximum allowed RAM for a purchased server */\\n PurchasedServerMaxRam: number;\\n /** Influences cost of any purchased server at or above 128GB */\\n PurchasedServerSoftcap: number;\\n /** Influences the minimum favor the player must have with a faction before they can donate to gain rep. */\\n RepToDonateToFaction: number;\\n /** Influences how much the money on a server can be reduced when a script performs a hack against it. */\\n ScriptHackMoney: number;\\n /** Influences how much of the money stolen by a scripted hack will be added to the player's money. */\\n ScriptHackMoneyGain: number;\\n /** Influences the growth percentage per cycle against a server. */\\n ServerGrowthRate: number;\\n /** Influences the maximum money that a server can grow to. */\\n ServerMaxMoney: number;\\n /** Influences the initial money that a server starts with. */\\n ServerStartingMoney: number;\\n /** Influences the initial security level (hackDifficulty) of a server. */\\n ServerStartingSecurity: number;\\n /** Influences the weaken amount per invocation against a server. */\\n ServerWeakenRate: number;\\n /** Influences how quickly the player's strength level (not exp) scales */\\n StrengthLevelMultiplier: number;\\n /** Influences the power of the gift */\\n StaneksGiftPowerMultiplier: number;\\n /** Influences the size of the gift */\\n StaneksGiftExtraSize: number;\\n /** Influences the hacking skill required to backdoor the world daemon. */\\n WorldDaemonDifficulty: number;\\n}\\n\\n/**\\n * Object representing all the values related to a hacknet node.\\n * @public\\n */\\ninterface NodeStats {\\n /** Node's name */\\n name: string;\\n /** Node's level */\\n level: number;\\n /** Node's RAM (GB) */\\n ram: number;\\n /** Node's used RAM (GB) */\\n ramUsed?: number;\\n /** Node's number of cores */\\n cores: number;\\n /** Cache level. Only applicable for Hacknet Servers */\\n cache?: number;\\n /** Hash Capacity provided by this Node. Only applicable for Hacknet Servers */\\n hashCapacity?: number;\\n /** Node's production per second */\\n production: number;\\n /** Number of seconds since Node has been purchased */\\n timeOnline: number;\\n /** Total number of money Node has produced */\\n totalProduction: number;\\n}\\n\\n/** @public */\\ninterface SourceFileLvl {\\n /** The number of the source file */\\n n: number;\\n /** The level of the source file */\\n lvl: number;\\n}\\n\\n/**\\n * Bladeburner current action.\\n * @public\\n */\\ninterface BladeburnerCurAction {\\n /** Type of Action */\\n type: string;\\n /** Name of Action */\\n name: string;\\n}\\n\\n/**\\n * Gang general info.\\n * @public\\n */\\ninterface GangGenInfo {\\n /** Name of faction that the gang belongs to (\\\"Slum Snakes\\\", etc.) */\\n faction: string;\\n /** Indicating whether or not it's a hacking gang */\\n isHacking: boolean;\\n /** Money earned per game cycle */\\n moneyGainRate: number;\\n /** Gang's power for territory warfare */\\n power: number;\\n /** Gang's respect */\\n respect: number;\\n /** Respect earned per game cycle */\\n respectGainRate: number;\\n /** Amount of territory held */\\n territory: number;\\n /** Clash chance */\\n territoryClashChance: number;\\n /** Gang's wanted level */\\n wantedLevel: number;\\n /** Wanted level gained/lost per game cycle (negative for losses) */\\n wantedLevelGainRate: number;\\n /** Indicating if territory warfare is enabled */\\n territoryWarfareEngaged: boolean;\\n /** Number indicating the current wanted penalty */\\n wantedPenalty: number;\\n}\\n\\n/** @public */\\ninterface GangOtherInfoObject {\\n /** Gang power */\\n power: number;\\n /** Gang territory, in decimal form */\\n territory: number;\\n}\\n\\n/** @public */\\ninterface GangOtherInfo {\\n [key: string]: GangOtherInfoObject;\\n}\\n\\n/**\\n * Object representing data representing a gang member task.\\n * @public\\n */\\ninterface GangTaskStats {\\n /** Task name */\\n name: string;\\n /** Task Description */\\n desc: string;\\n /** Is a task of a hacking gang */\\n isHacking: boolean;\\n /** Is a task of a combat gang */\\n isCombat: boolean;\\n /** Base respect earned */\\n baseRespect: number;\\n /** Base wanted earned */\\n baseWanted: number;\\n /** Base money earned */\\n baseMoney: number;\\n /** Hacking skill impact on task scaling */\\n hackWeight: number;\\n /** Strength skill impact on task scaling */\\n strWeight: number;\\n /** Defense skill impact on task scaling */\\n defWeight: number;\\n /** Dexterity skill impact on task scaling */\\n dexWeight: number;\\n /** Agility skill impact on task scaling */\\n agiWeight: number;\\n /** Charisma skill impact on task scaling */\\n chaWeight: number;\\n /** Number representing the difficulty of the task */\\n difficulty: number;\\n /** Territory impact on task scaling */\\n territory: GangTerritory;\\n}\\n\\n/**\\n * Object representing data representing a gang member equipment.\\n * @public\\n */\\ninterface EquipmentStats {\\n /** Strength multiplier */\\n str?: number;\\n /** Defense multiplier */\\n def?: number;\\n /** Dexterity multiplier */\\n dex?: number;\\n /** Agility multiplier */\\n agi?: number;\\n /** Charisma multiplier */\\n cha?: number;\\n /** Hacking multiplier */\\n hack?: number;\\n}\\n\\n/** @public */\\ninterface GangTerritory {\\n /** Money gain impact on task scaling */\\n money: number;\\n /** Respect gain impact on task scaling */\\n respect: number;\\n /** Wanted gain impact on task scaling */\\n wanted: number;\\n}\\n\\n/** @public */\\ninterface GangMemberInfo {\\n /** Name of the gang member */\\n name: string;\\n /** Currently assigned task */\\n task: string;\\n earnedRespect: number;\\n\\n /** Hack skill level */\\n hack: number;\\n /** Strength skill level */\\n str: number;\\n /** Defense skill level */\\n def: number;\\n /** Dexterity skill level */\\n dex: number;\\n /** Agility skill level */\\n agi: number;\\n /** Charisma skill level */\\n cha: number;\\n\\n /** Current hack experience */\\n hack_exp: number;\\n /** Current strength experience */\\n str_exp: number;\\n /** Current defense experience */\\n def_exp: number;\\n /** Current dexterity experience */\\n dex_exp: number;\\n /** Current agility experience */\\n agi_exp: number;\\n /** Current charisma experience */\\n cha_exp: number;\\n\\n /** Hack multiplier from equipment */\\n hack_mult: number;\\n /** Strength multiplier from equipment */\\n str_mult: number;\\n /** Defense multiplier from equipment */\\n def_mult: number;\\n /** Dexterity multiplier from equipment */\\n dex_mult: number;\\n /** Agility multiplier from equipment */\\n agi_mult: number;\\n /** Charisma multiplier from equipment */\\n cha_mult: number;\\n\\n /** Hack multiplier from ascensions */\\n hack_asc_mult: number;\\n /** Strength multiplier from ascensions */\\n str_asc_mult: number;\\n /** Defense multiplier from ascensions */\\n def_asc_mult: number;\\n /** Dexterity multiplier from ascensions */\\n dex_asc_mult: number;\\n /** Agility multiplier from ascensions */\\n agi_asc_mult: number;\\n /** Charisma multiplier from ascensions */\\n cha_asc_mult: number;\\n\\n /** Total earned hack experience */\\n hack_asc_points: number;\\n /** Total earned strength experience */\\n str_asc_points: number;\\n /** Total earned defense experience */\\n def_asc_points: number;\\n /** Total earned dexterity experience */\\n dex_asc_points: number;\\n /** Total earned agility experience */\\n agi_asc_points: number;\\n /** Total earned charisma experience */\\n cha_asc_points: number;\\n\\n upgrades: string[];\\n augmentations: string[];\\n\\n respectGain: number;\\n wantedLevelGain: number;\\n moneyGain: number;\\n}\\n\\n/** @public */\\ninterface GangMemberAscension {\\n /** Amount of respect lost from ascending */\\n respect: number;\\n /** Factor by which the hacking ascension multiplier was increased (newMult / oldMult) */\\n hack: number;\\n /** Factor by which the strength ascension multiplier was increased (newMult / oldMult) */\\n str: number;\\n /** Factor by which the defense ascension multiplier was increased (newMult / oldMult) */\\n def: number;\\n /** Factor by which the dexterity ascension multiplier was increased (newMult / oldMult) */\\n dex: number;\\n /** Factor by which the agility ascension multiplier was increased (newMult / oldMult) */\\n agi: number;\\n /** Factor by which the charisma ascension multiplier was increased (newMult / oldMult) */\\n cha: number;\\n}\\n\\n/** @public */\\ntype SleeveBladeburnerTask = {\\n type: \\\"BLADEBURNER\\\";\\n actionType: \\\"General\\\" | \\\"Contracts\\\";\\n actionName: string;\\n cyclesWorked: number;\\n cyclesNeeded: number;\\n};\\n\\n/** @public */\\ntype SleeveClassTask = {\\n type: \\\"CLASS\\\";\\n classType: UniversityClassType | GymType | `${UniversityClassType}` | `${GymType}`;\\n location: LocationName | `${LocationName}`;\\n};\\n\\n/** @public */\\ntype SleeveCompanyTask = { type: \\\"COMPANY\\\"; companyName: CompanyName };\\n\\n/** @public */\\ntype SleeveCrimeTask = {\\n type: \\\"CRIME\\\";\\n crimeType: CrimeType | `${CrimeType}`;\\n cyclesWorked: number;\\n cyclesNeeded: number;\\n};\\n\\n/** @public */\\ntype SleeveFactionTask = {\\n type: \\\"FACTION\\\";\\n factionWorkType: FactionWorkType | `${FactionWorkType}`;\\n factionName: string;\\n};\\n\\n/** @public */\\ntype SleeveInfiltrateTask = { type: \\\"INFILTRATE\\\"; cyclesWorked: number; cyclesNeeded: number };\\n\\n/** @public */\\ntype SleeveRecoveryTask = { type: \\\"RECOVERY\\\" };\\n\\n/** @public */\\ntype SleeveSupportTask = { type: \\\"SUPPORT\\\" };\\n\\n/** @public */\\ntype SleeveSynchroTask = { type: \\\"SYNCHRO\\\" };\\n\\n/** Object representing a sleeve current task.\\n * @public */\\nexport type SleeveTask =\\n | SleeveBladeburnerTask\\n | SleeveClassTask\\n | SleeveCompanyTask\\n | SleeveCrimeTask\\n | SleeveFactionTask\\n | SleeveInfiltrateTask\\n | SleeveRecoveryTask\\n | SleeveSupportTask\\n | SleeveSynchroTask;\\n\\n/** Object representing a port. A port is a serialized queue.\\n * @public */\\nexport interface NetscriptPort {\\n /** Write data to a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns The data popped off the queue if it was full. */\\n write(value: string | number): PortData | null;\\n\\n /**\\n * Attempt to write data to the port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns True if the data was added to the port, false if the port was full\\n */\\n tryWrite(value: string | number): boolean;\\n\\n /**\\n * Sleeps until the port is written to.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n nextWrite(): Promise;\\n\\n /**\\n * Shift an element out of the port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function will remove the first element from the port and return it.\\n * If the port is empty, then the string “NULL PORT DATA” will be returned.\\n * @returns the data read.\\n */\\n read(): PortData;\\n\\n /**\\n * Retrieve the first element from the port without removing it.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is used to peek at the data from a port. It returns the\\n * first element in the specified port without removing that element. If\\n * the port is empty, the string “NULL PORT DATA” will be returned.\\n * @returns the data read\\n */\\n peek(): PortData;\\n\\n /**\\n * Check if the port is full.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns true if the port is full, otherwise false\\n */\\n full(): boolean;\\n\\n /**\\n * Check if the port is empty.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns true if the port is empty, otherwise false\\n */\\n empty(): boolean;\\n\\n /**\\n * Empties all data from the port.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n clear(): void;\\n}\\n\\n/**\\n * Stock market API\\n * @public\\n */\\nexport interface TIX {\\n /** Get game constants for the stock market mechanic.\\n * @remarks RAM cost: 0 GB */\\n getConstants(): StockMarketConstants;\\n /**\\n * Returns true if the player has access to a WSE Account\\n * @remarks RAM cost: 0.05 GB\\n */\\n hasWSEAccount(): boolean;\\n /**\\n * Returns true if the player has access to the TIX API\\n * @remarks RAM cost: 0.05 GB\\n */\\n hasTIXAPIAccess(): boolean;\\n /**\\n * Returns true if the player has access to the 4S Data\\n * @remarks RAM cost: 0.05 GB\\n */\\n has4SData(): boolean;\\n /**\\n * Returns true if the player has access to the 4SData TIX API\\n * @remarks RAM cost: 0.05 GB\\n */\\n has4SDataTIXAPI(): boolean;\\n /**\\n * Returns an array of the symbols of the tradable stocks\\n *\\n * @remarks RAM cost: 2 GB\\n * @returns Array of the symbols of the tradable stocks.\\n */\\n getSymbols(): string[];\\n\\n /**\\n * Returns the price of a stock.\\n *\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * The stock’s price is the average of its bid and ask prices. This function requires\\n * that you have the following:\\n *\\n * 1. WSE Account\\n *\\n * 1. TIX API Access\\n *\\n * @example\\n * ```js\\n * const fourSigmaStockPrice = ns.stock.getPrice(\\\"FSIG\\\");\\n *\\n * // Choose the first stock symbol from the array of stock symbols. Get the price\\n * // of the corresponding stock.\\n * const sym = ns.stock.getSymbols()[0];\\n * ns.tprint(\\\"Stock symbol: \\\" + sym);\\n * ns.tprint(\\\"Stock price: \\\" + ns.stock.getPrice(sym));\\n * ```\\n * @param sym - Stock symbol.\\n * @returns The price of a stock.\\n */\\n getPrice(sym: string): number;\\n\\n /**\\n * Returns the organization associated with a stock symbol.\\n *\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * The organization associated with the corresponding stock symbol. This function\\n * requires that you have the following:\\n *\\n * 1. WSE Account\\n *\\n * 1. TIX API Access\\n *\\n * @example\\n * ```js\\n * ns.stock.getOrganization(\\\"FSIG\\\");\\n *\\n * // Choose the first stock symbol from the array of stock symbols. Get the\\n * // organization associated with the corresponding stock symbol.\\n * const sym = ns.stock.getSymbols()[0];\\n * ns.tprint(\\\"Stock symbol: \\\" + sym);\\n * ns.tprint(\\\"Stock organization: \\\" + ns.stock.getOrganization(sym));\\n * ```\\n * @param sym - Stock symbol.\\n * @returns The organization assicated with the stock symbol.\\n */\\n getOrganization(sym: string): string;\\n\\n /**\\n * Returns the ask price of that stock.\\n * @remarks RAM cost: 2 GB\\n *\\n * @param sym - Stock symbol.\\n * @returns The ask price of a stock.\\n */\\n getAskPrice(sym: string): number;\\n\\n /**\\n * Returns the bid price of that stock.\\n * @remarks RAM cost: 2 GB\\n *\\n * @param sym - Stock symbol.\\n * @returns The bid price of a stock.\\n */\\n getBidPrice(sym: string): number;\\n\\n /**\\n * Returns the player’s position in a stock.\\n * @remarks\\n * RAM cost: 2 GB\\n * Returns an array of four elements that represents the player’s position in a stock.\\n *\\n * The first element in the returned array is the number of shares the player owns of\\n * the stock in the Long position. The second element in the array is the average price\\n * of the player’s shares in the Long position.\\n *\\n * The third element in the array is the number of shares the player owns of the stock\\n * in the Short position. The fourth element in the array is the average price of the\\n * player’s Short position.\\n *\\n * All elements in the returned array are numeric.\\n *\\n * @example\\n * ```js\\n * const [sharesLong, avgLongPrice, sharesShort, avgShortPrice] = ns.stock.getPosition(\\\"ECP\\\");\\n * ```\\n * @param sym - Stock symbol.\\n * @returns Array of four elements that represents the player’s position in a stock.\\n */\\n getPosition(sym: string): [number, number, number, number];\\n\\n /**\\n * Returns the maximum number of shares of a stock.\\n * @remarks\\n * RAM cost: 2 GB\\n * This is the maximum amount of the stock that can be purchased\\n * in both the Long and Short positions combined.\\n *\\n * @param sym - Stock symbol.\\n * @returns Maximum number of shares that the stock has.\\n */\\n getMaxShares(sym: string): number;\\n\\n /**\\n * Calculates cost of buying stocks.\\n * @remarks\\n * RAM cost: 2 GB\\n * Calculates and returns how much it would cost to buy a given number of shares of a stock.\\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to purchase.\\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\\n * @returns Cost to buy a given number of shares of a stock.\\n */\\n getPurchaseCost(sym: string, shares: number, posType: string): number;\\n\\n /**\\n * Calculate profit of selling stocks.\\n * @remarks\\n * RAM cost: 2 GB\\n * Calculates and returns how much you would gain from selling a given number of shares of a stock.\\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to sell.\\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\\n * @returns Gain from selling a given number of shares of a stock.\\n */\\n getSaleGain(sym: string, shares: number, posType: string): number;\\n\\n /**\\n * Buy stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Attempts to purchase shares of a stock using a Market Order.\\n *\\n * If the player does not have enough money to purchase the specified number of shares,\\n * then no shares will be purchased. Remember that every transaction on the stock exchange\\n * costs a certain commission fee.\\n *\\n * If this function successfully purchases the shares, it will return the stock price at which\\n * each share was purchased. Otherwise, it will return 0.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to purchased. Must be positive. Will be rounded to nearest integer.\\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren't purchased.\\n */\\n buyStock(sym: string, shares: number): number;\\n\\n /**\\n * Sell stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Attempts to sell shares of a stock using a Market Order.\\n *\\n * If the specified number of shares in the function exceeds the amount that the player\\n * actually owns, then this function will sell all owned shares. Remember that every\\n * transaction on the stock exchange costs a certain commission fee.\\n *\\n * The net profit made from selling stocks with this function is reflected in the script’s\\n * statistics. This net profit is calculated as:\\n *\\n * shares * (sell_price - average_price_of_purchased_shares)\\n *\\n * If the sale is successful, this function will return the stock price at\\n * which each share was sold. Otherwise, it will return 0.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren't sold.\\n */\\n sellStock(sym: string, shares: number): number;\\n\\n /**\\n * Short stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Attempts to purchase a short position of a stock using a Market Order.\\n *\\n * The ability to short a stock is **not** immediately available to the player and\\n * must be unlocked later on in the game.\\n *\\n * If the player does not have enough money to purchase the specified number of shares,\\n * then no shares will be purchased. Remember that every transaction on the stock exchange\\n * costs a certain commission fee.\\n *\\n * If the purchase is successful, this function will return the stock price at which each\\n * share was purchased. Otherwise, it will return 0.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to short. Must be positive. Will be rounded to nearest integer.\\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren't purchased.\\n */\\n buyShort(sym: string, shares: number): number;\\n\\n /**\\n * Sell short stock.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Attempts to sell a short position of a stock using a Market Order.\\n *\\n * The ability to short a stock is **not** immediately available to the player and\\n * must be unlocked later on in the game.\\n *\\n * If the specified number of shares exceeds the amount that the player actually owns,\\n * then this function will sell all owned shares. Remember that every transaction on\\n * the stock exchange costs a certain commission fee.\\n *\\n * If the sale is successful, this function will return the stock price at which each\\n * share was sold. Otherwise it will return 0.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren't sold.\\n */\\n sellShort(sym: string, shares: number): number;\\n\\n /**\\n * Place order for stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Places an order on the stock market. This function only works for Limit and Stop Orders.\\n *\\n * The ability to place limit and stop orders is **not** immediately available to the player and\\n * must be unlocked later on in the game.\\n *\\n * Returns true if the order is successfully placed, and false otherwise.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\\n * @param price - Execution price for the order.\\n * @param type - Type of order.\\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\\n * @returns True if the order is successfully placed, and false otherwise.\\n */\\n placeOrder(sym: string, shares: number, price: number, type: string, pos: string): boolean;\\n\\n /**\\n * Cancel order for stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Cancels an outstanding Limit or Stop order on the stock market.\\n *\\n * The ability to use limit and stop orders is **not** immediately available to the player and\\n * must be unlocked later on in the game.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\\n * @param price - Execution price for the order.\\n * @param type - Type of order.\\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\\n */\\n cancelOrder(sym: string, shares: number, price: number, type: string, pos: string): void;\\n\\n /**\\n * Returns your order book for the stock market.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * This is an object containing information for all the Limit and Stop Orders you have in the stock market.\\n * For each symbol you have a position in, the returned object will have a key with that symbol's name.\\n * The object's properties are each an array of {@link StockOrderObject}\\n * The object has the following structure:\\n *\\n * ```ts\\n * {\\n * string1: [ // Array of orders for this stock\\n * {\\n * shares: Order quantity\\n * price: Order price\\n * type: Order type\\n * position: Either \\\"L\\\" or \\\"S\\\" for Long or Short position\\n * },\\n * {\\n * ...\\n * },\\n * ...\\n * ],\\n * string2: [ // Array of orders for this stock\\n * ...\\n * ],\\n * ...\\n * }\\n * ```\\n * The “Order type” property can have one of the following four values: \\\"Limit Buy Order\\\", \\\"Limit Sell Order\\\",\\n * \\\"Stop Buy Order\\\", \\\"Stop Sell Order\\\".\\n * Note that the order book will only contain information for stocks that you actually have orders in.\\n *\\n * @example\\n * ```ts\\n * \\\"If you do not have orders in Nova Medical (NVMD), then the returned object will not have a “NVMD” property.\\\"\\n * {\\n * ECP: [\\n * {\\n * shares: 5,\\n * price: 100,000\\n * type: \\\"Stop Buy Order\\\",\\n * position: \\\"S\\\",\\n * },\\n * {\\n * shares: 25,\\n * price: 125,000\\n * type: \\\"Limit Sell Order\\\",\\n * position: \\\"L\\\",\\n * },\\n * ],\\n * SYSC: [\\n * {\\n * shares: 100,\\n * price: 10,000\\n * type: \\\"Limit Buy Order\\\",\\n * position: \\\"L\\\",\\n * },\\n * ],\\n * }\\n * ```\\n * @returns Object containing information for all the Limit and Stop Orders you have in the stock market.\\n */\\n getOrders(): StockOrder;\\n\\n /**\\n * Returns the volatility of the specified stock.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Volatility represents the maximum percentage by which a stock’s price can change every tick.\\n * The volatility is returned as a decimal value, NOT a percentage\\n * (e.g. if a stock has a volatility of 3%, then this function will return 0.03, NOT 3).\\n *\\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\\n *\\n * @param sym - Stock symbol.\\n * @returns Volatility of the specified stock.\\n */\\n getVolatility(sym: string): number;\\n\\n /**\\n * Returns the probability that the specified stock’s price will increase (as opposed to decrease) during the next\\n * tick.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * The probability is returned as a decimal value, NOT a percentage\\n * (e.g. if a stock has a 60% chance of increasing, then this function will return 0.6, NOT 60).\\n *\\n * In other words, if this function returned 0.30 for a stock, then this means that the stock’s price has a\\n * 30% chance of increasing and a 70% chance of decreasing during the next tick.\\n *\\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\\n *\\n * @param sym - Stock symbol.\\n * @returns Probability that the specified stock’s price will increase (as opposed to decrease) during the next tick.\\n */\\n getForecast(sym: string): number;\\n\\n /**\\n * Purchase 4S Market Data Access.\\n * @remarks RAM cost: 2.5 GB\\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\\n */\\n purchase4SMarketData(): boolean;\\n\\n /**\\n * Purchase 4S Market Data TIX API Access.\\n * @remarks RAM cost: 2.5 GB\\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\\n */\\n purchase4SMarketDataTixApi(): boolean;\\n\\n /**\\n * Purchase WSE Account.\\n * @remarks RAM cost: 2.5 GB\\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\\n */\\n purchaseWseAccount(): boolean;\\n\\n /**\\n * Purchase TIX API Access\\n * @remarks RAM cost: 2.5 GB\\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\\n */\\n purchaseTixApi(): boolean;\\n}\\n\\n/**\\n * Singularity API\\n * @remarks\\n * This API requires Source-File 4 to use. The RAM cost of all these functions is multiplied by 16/4/1 based on\\n * Source-File 4 levels.\\n * @public\\n */\\nexport interface Singularity {\\n /**\\n * Backup game save.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function will automatically opens the backup save prompt and claim the free faction favour if available.\\n *\\n */\\n exportGame(): void;\\n\\n /**\\n * Returns Backup save bonus availability.\\n * @remarks\\n * RAM cost: 0.5 GB * 16/4/1\\n *\\n *\\n * This function will check if there is a bonus for backing up your save.\\n *\\n */\\n exportGameBonus(): boolean;\\n\\n /**\\n * Take university class.\\n *\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function will automatically set you to start taking a course at a university.\\n * If you are already in the middle of some “working” action (such as working at a\\n * company, for a faction, or on a program), then running this function will automatically\\n * cancel that action and give you your earnings.\\n *\\n * The cost and experience gains for all of these universities and classes are the same as\\n * if you were to manually visit and take these classes.\\n *\\n * @param universityName - Name of university. You must be in the correct city for whatever university you specify.\\n * @param courseName - Name of course.\\n * @param focus - Acquire player focus on this class. Optional. Defaults to true.\\n * @returns True if action is successfully started, false otherwise.\\n */\\n universityCourse(universityName: string, courseName: string, focus?: boolean): boolean;\\n\\n /**\\n * Workout at the gym.\\n *\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n\\n * This function will automatically set you to start working out at a gym to train\\n * a particular stat. If you are already in the middle of some “working” action\\n * (such as working at a company, for a faction, or on a program), then running\\n * this function will automatically cancel that action and give you your earnings.\\n *\\n * The cost and experience gains for all of these gyms are the same as if you were\\n * to manually visit these gyms and train\\n *\\n * @param gymName - Name of gym. You must be in the correct city for whatever gym you specify.\\n * @param stat - The stat you want to train.\\n * @param focus - Acquire player focus on this gym workout. Optional. Defaults to true.\\n * @returns True if actions is successfully started, false otherwise.\\n */\\n gymWorkout(gymName: string, stat: string, focus?: boolean): boolean;\\n\\n /**\\n * Travel to another city.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function allows the player to travel to any city. The cost for using this\\n * function is the same as the cost for traveling through the Travel Agency.\\n *\\n * @param city - City to travel to.\\n * @returns True if action is successful, false otherwise.\\n */\\n travelToCity(city: CityName | `${CityName}`): boolean;\\n\\n /**\\n * Purchase the TOR router.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function allows you to automatically purchase a TOR router. The cost for\\n * purchasing a TOR router using this function is the same as if you were to\\n * manually purchase one.\\n *\\n * @returns True if actions is successful or you already own TOR router, false otherwise.\\n */\\n purchaseTor(): boolean;\\n\\n /**\\n * Purchase a program from the dark web.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function allows you to automatically purchase programs. You MUST have a\\n * TOR router in order to use this function. The cost of purchasing programs\\n * using this function is the same as if you were purchasing them through the Dark\\n * Web using the Terminal buy command.\\n *\\n * @example\\n * ```js\\n * const programName = \\\"BruteSSH.exe\\\"\\n * const success = ns.purchaseProgram(programName);\\n * if (!success) ns.tprint(\\\"ERROR: Failed to purchase ${programName}\\\")\\n * ```\\n * @param programName - Name of program to purchase.\\n * @returns True if the specified program is purchased, and false otherwise.\\n */\\n purchaseProgram(programName: string): boolean;\\n\\n /**\\n * Check if the player is busy.\\n * @remarks\\n * RAM cost: 0.5 GB * 16/4/1\\n *\\n *\\n * Returns a boolean indicating whether or not the player is currently performing an\\n * ‘action’. These actions include working for a company/faction, studying at a university,\\n * working out at a gym, creating a program, committing a crime, or carrying out a Hacking Mission.\\n *\\n * @returns True if the player is currently performing an ‘action’, false otherwise.\\n */\\n isBusy(): boolean;\\n\\n /**\\n * Stop the current action.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function is used to end whatever ‘action’ the player is currently performing.\\n * The player will receive whatever money/experience/etc. he has earned from that action.\\n *\\n * The actions that can be stopped with this function are:\\n *\\n * * Studying at a university\\n * * Working out at a gym\\n * * Working for a company/faction\\n * * Creating a program\\n * * Committing a crime\\n *\\n * This function will return true if the player’s action was ended.\\n * It will return false if the player was not performing an action when this function was called.\\n *\\n * @returns True if the player’s action was ended, false if the player was not performing an action.\\n */\\n stopAction(): boolean;\\n\\n /**\\n * Upgrade home computer RAM.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will upgrade amount of RAM on the player’s home computer. The cost is\\n * the same as if you were to do it manually.\\n *\\n * This function will return true if the player’s home computer RAM is successfully upgraded, and false otherwise.\\n *\\n * @returns True if the player’s home computer RAM is successfully upgraded, and false otherwise.\\n */\\n upgradeHomeRam(): boolean;\\n\\n /**\\n * Upgrade home computer cores.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will upgrade amount of cores on the player’s home computer. The cost is\\n * the same as if you were to do it manually.\\n *\\n * This function will return true if the player’s home computer cores is successfully upgraded, and false otherwise.\\n *\\n * @returns True if the player’s home computer cores is successfully upgraded, and false otherwise.\\n */\\n upgradeHomeCores(): boolean;\\n\\n /**\\n * Get the price of upgrading home RAM.\\n * @remarks\\n * RAM cost: 1.5 GB * 16/4/1\\n *\\n *\\n * Returns the cost of upgrading the player’s home computer RAM.\\n *\\n * @returns Cost of upgrading the player’s home computer RAM.\\n */\\n getUpgradeHomeRamCost(): number;\\n\\n /**\\n * Get the price of upgrading home cores.\\n * @remarks\\n * RAM cost: 1.5 GB * 16/4/1\\n *\\n *\\n * Returns the cost of upgrading the player’s home computer cores.\\n *\\n * @returns Cost of upgrading the player’s home computer cores.\\n */\\n getUpgradeHomeCoresCost(): number;\\n\\n /**\\n * Get Requirements for Company Position.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function will return an object that contains the requirements for\\n * a specific position at a specific country.\\n *\\n * @example\\n * ```js\\n * const companyName = \\\"ECorp\\\";\\n * const position = \\\"Chief Executive Officer\\\";\\n *\\n * let requirements = ns.singularity.getCompanyPositionInfo(companyName, position);\\n * ```\\n * @param companyName - Name of company to get the requirements for. Must be an exact match.\\n * @param positionName - Name of position to get the requirements for. Must be an exact match.\\n * @returns CompanyPositionInfo object.\\n */\\n getCompanyPositionInfo(\\n companyName: CompanyName | `${CompanyName}`,\\n positionName: JobName | `${JobName}`,\\n ): CompanyPositionInfo;\\n\\n /**\\n * Get List of Company Positions.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function will return a list of positions at a specific company.\\n *\\n * This function will return the position list if the company name is valid.\\n *\\n * @example\\n * ```js\\n * const companyName = \\\"Noodle Bar\\\";\\n * const jobList = ns.singularity.getCompanyPositions(companyName);\\n * ```\\n * @param companyName - Name of company to get the position list for. Must be an exact match.\\n * @returns The position list if the company name is valid.\\n */\\n getCompanyPositions(companyName: CompanyName | `${CompanyName}`): JobName[];\\n\\n /**\\n * Work for a company.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will set you to start working at your current job at a specified company at which you are employed.\\n * If you are already in the middle of some “working” action (such as working for a faction, training at a gym, or\\n * creating a program), then running this function will cancel that action.\\n *\\n * This function will return true if the player starts working, and false otherwise.\\n *\\n * @example\\n * ```js\\n * const companyName = \\\"Noodle Bar\\\";\\n * const success = ns.singularity.workForCompany(companyName);\\n * if (!success) ns.tprint(`ERROR: Failed to start work at ${companyName}.`);\\n * ```\\n * @param companyName - Name of company to work for. Must be an exact match. Optional. If not specified, this\\n * argument defaults to the last job that you worked.\\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\\n * @returns True if the player starts working, and false otherwise.\\n */\\n workForCompany(companyName: CompanyName, focus?: boolean): boolean;\\n\\n /**\\n * Quit jobs by company.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will finish work with the company provided and quit any jobs.\\n *\\n * @param companyName - Name of the company.\\n */\\n quitJob(companyName?: CompanyName | `${CompanyName}`): void;\\n\\n /**\\n * Apply for a job at a company.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will automatically try to apply to the specified company\\n * for a position in the specified field. This function can also be used to\\n * apply for promotions by specifying the company and field you are already\\n * employed at.\\n *\\n * This function will return true if you successfully get a job/promotion,\\n * and false otherwise. Note that if you are trying to use this function to\\n * apply for a promotion and you don’t get one, it will return false.\\n *\\n * @param companyName - Name of company to apply to.\\n * @param field - Field to which you want to apply.\\n * @returns True if the player successfully get a job/promotion, and false otherwise.\\n */\\n applyToCompany(companyName: CompanyName | `${CompanyName}`, field: string): boolean;\\n\\n /**\\n * Get company reputation.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function will return the amount of reputation you have at the specified company.\\n * If the company passed in as an argument is invalid, -1 will be returned.\\n *\\n * @param companyName - Name of the company.\\n * @returns Amount of reputation you have at the specified company.\\n */\\n getCompanyRep(companyName: CompanyName | `${CompanyName}`): number;\\n\\n /**\\n * Get company favor.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function will return the amount of favor you have at the specified company.\\n * If the company passed in as an argument is invalid, -1 will be returned.\\n *\\n * @param companyName - Name of the company.\\n * @returns Amount of favor you have at the specified company.\\n */\\n getCompanyFavor(companyName: CompanyName | `${CompanyName}`): number;\\n\\n /**\\n * Get company favor gain.\\n * @remarks\\n * RAM cost: 0.75 GB * 16/4/1\\n *\\n *\\n * This function will return the amount of favor you will gain for the specified\\n * company when you reset by installing Augmentations.\\n *\\n * @param companyName - Name of the company.\\n * @returns Amount of favor you gain at the specified company when you reset by installing Augmentations.\\n */\\n getCompanyFavorGain(companyName: CompanyName | `${CompanyName}`): number;\\n\\n /**\\n * List all current faction invitations.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * Performs an immediate check for which factions you qualify for invites from, then returns an array with the name\\n * of all Factions you have outstanding invitations from.\\n *\\n * @returns Array with the name of all Factions you currently have outstanding invitations from.\\n */\\n checkFactionInvitations(): string[];\\n\\n /**\\n * Join a faction.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will automatically accept an invitation from a faction and join it.\\n *\\n * @param faction - Name of faction to join.\\n * @returns True if player joined the faction, and false otherwise.\\n */\\n joinFaction(faction: string): boolean;\\n\\n /**\\n * Work for a faction.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will set you to start working for the specified faction. You must be a member of the faction and\\n * that faction must have the specified work type, or else this function will fail. If you are already in the\\n * middle of some “working” action (such as working for a company, training at a gym, or creating a program), then\\n * running this function will cancel that action.\\n *\\n * This function will return true if you successfully start working for the specified faction, and false otherwise.\\n *\\n * @example\\n * ```js\\n * const factionName = \\\"CyberSec\\\";\\n * const workType = \\\"hacking\\\";\\n *\\n * let success = ns.singularity.workForFaction(factionName, workType);\\n * if (!success) ns.tprint(`ERROR: Failed to start work for ${factionName} with work type ${workType}.`)\\n * ```\\n * @param faction - Name of faction to work for.\\n * @param workType - Type of work to perform for the faction.\\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\\n * @returns True if the player starts working, and false otherwise.\\n */\\n workForFaction(faction: string, workType: FactionWorkType | `${FactionWorkType}`, focus?: boolean): boolean;\\n\\n /**\\n * Get faction reputation.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function returns the amount of reputation you have for the specified faction.\\n *\\n * @param faction - Name of faction to work for.\\n * @returns Amount of reputation you have for the specified faction.\\n */\\n getFactionRep(faction: string): number;\\n\\n /**\\n * Get faction favor.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function returns the amount of favor you have for the specified faction.\\n *\\n * @param faction - Name of faction.\\n * @returns Amount of favor you have for the specified faction.\\n */\\n getFactionFavor(faction: string): number;\\n\\n /**\\n * Get faction favor gain.\\n * @remarks\\n * RAM cost: 0.75 GB * 16/4/1\\n *\\n *\\n * This function returns the amount of favor you will gain for the specified\\n * faction when you reset by installing Augmentations.\\n *\\n * @param faction - Name of faction.\\n * @returns Amount of favor you will gain for the specified faction when you reset by installing Augmentations.\\n */\\n getFactionFavorGain(faction: string): number;\\n\\n /**\\n * Donate to a faction.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Attempts to donate money to the specified faction in exchange for reputation.\\n * Returns true if you successfully donate the money, and false otherwise.\\n *\\n * @param faction - Name of faction to donate to.\\n * @param amount - Amount of money to donate.\\n * @returns True if the money was donated, and false otherwise.\\n */\\n donateToFaction(faction: string, amount: number): boolean;\\n\\n /**\\n * Create a program.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function will automatically set you to start working on creating the\\n * specified program. If you are already in the middle of some “working” action\\n * (such as working for a company, training at a gym, or taking a course), then\\n * running this function will automatically cancel that action and give you your\\n * earnings.\\n *\\n * This function returns true if you successfully start working on the specified program, and false otherwise.\\n *\\n * Note that creating a program using this function has the same hacking level requirements as it normally would.\\n * These level requirements are:\\n * * BruteSSH.exe: 50\\n * * FTPCrack.exe: 100\\n * * relaySMTP.exe: 250\\n * * HTTPWorm.exe: 500\\n * * SQLInject.exe: 750\\n * * DeepscanV1.exe: 75\\n * * DeepscanV2.exe: 400\\n * * ServerProfiler.exe: 75\\n * * AutoLink.exe: 25\\n *\\n * @example\\n * ```js\\n * const programName = \\\"BruteSSH.exe\\\";\\n * const success = ns.createProgram(programName);\\n * if (!success) ns.tprint(\\\"ERROR: Failed to start working on ${programName}\\\")\\n * ```\\n * @param program - Name of program to create.\\n * @param focus - Acquire player focus on this program creation. Optional. Defaults to true.\\n * @returns True if you successfully start working on the specified program, and false otherwise.\\n */\\n createProgram(program: string, focus?: boolean): boolean;\\n\\n /**\\n * Commit a crime.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function is used to automatically attempt to commit crimes.\\n * If you are already in the middle of some ‘working’ action (such\\n * as working for a company or training at a gym), then running this\\n * function will automatically cancel that action and give you your\\n * earnings.\\n *\\n * This function returns the number of milliseconds it takes to attempt the\\n * specified crime (e.g It takes 60 seconds to attempt the ‘Rob Store’ crime,\\n * so running `commitCrime('Rob Store')` will return 60,000).\\n *\\n * @param crime - Name of crime to attempt.\\n * @param focus - Acquire player focus on this crime. Optional. Defaults to true.\\n * @returns The number of milliseconds it takes to attempt the specified crime.\\n */\\n commitCrime(crime: CrimeType | `${CrimeType}`, focus?: boolean): number;\\n\\n /**\\n * Get chance to successfully commit a crime.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function returns your chance of success at committing the specified crime.\\n *\\n * @param crime - Name of crime.\\n * @returns Chance of success at committing the specified crime.\\n */\\n getCrimeChance(crime: CrimeType | `${CrimeType}`): number;\\n\\n /**\\n * Get stats related to a crime.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Returns the stats of the crime.\\n *\\n * @param crime - Name of crime.\\n * @returns The stats of the crime.\\n */\\n getCrimeStats(crime: CrimeType | `${CrimeType}`): CrimeStats;\\n\\n /**\\n * Get a list of owned augmentation.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function returns an array containing the names (as strings) of all Augmentations you have.\\n *\\n * @param purchased - Specifies whether the returned array should include Augmentations you have purchased but not\\n * yet installed. By default, this argument is false which means that the return value will NOT have the purchased\\n * Augmentations.\\n * @returns Array containing the names (as strings) of all Augmentations you have.\\n */\\n getOwnedAugmentations(purchased?: boolean): string[];\\n\\n /**\\n * Get a list of acquired Source-Files.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n *\\n * Returns an array of source files\\n *\\n * @returns Array containing an object with number and level of the source file.\\n */\\n getOwnedSourceFiles(): SourceFileLvl[];\\n\\n /**\\n * Get a list of faction(s) that have a specific Augmentation.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Returns an array containing the names (as strings) of all factions\\n * that offer the specified Augmentation.\\n * If no factions offer the Augmentation, a blank array is returned.\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Array containing the names of all factions.\\n */\\n getAugmentationFactions(augName: string): string[];\\n\\n /**\\n * Get a list of augmentation available from a faction.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Returns an array containing the names (as strings) of all Augmentations\\n * that are available from the specified faction.\\n *\\n * @param faction - Name of faction.\\n * @returns Array containing the names of all Augmentations.\\n */\\n getAugmentationsFromFaction(faction: string): string[];\\n\\n /**\\n * Get the pre-requisite of an augmentation.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function returns an array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\\n * If there are no prerequisites, a blank array is returned.\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\\n */\\n getAugmentationPrereq(augName: string): string[];\\n\\n /**\\n * Get price of an augmentation.\\n * @remarks\\n * RAM cost: 2.5 GB * 16/4/1\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Price of the augmentation.\\n */\\n getAugmentationPrice(augName: string): number;\\n\\n /**\\n * Get base price of an augmentation.\\n * @remarks\\n * RAM cost: 2.5 GB * 16/4/1\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Base price of the augmentation, before price multiplier.\\n */\\n getAugmentationBasePrice(augName: string): number;\\n\\n /**\\n * Get reputation requirement of an augmentation.\\n * @remarks\\n * RAM cost: 2.5 GB * 16/4/1\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Reputation requirement of the augmentation.\\n */\\n getAugmentationRepReq(augName: string): number;\\n\\n /**\\n * Purchase an augmentation\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function will try to purchase the specified Augmentation through the given Faction.\\n *\\n * This function will return true if the Augmentation is successfully purchased, and false otherwise.\\n *\\n * @param faction - Name of faction to purchase Augmentation from.\\n * @param augmentation - Name of Augmentation to purchase.\\n * @returns True if the Augmentation is successfully purchased, and false otherwise.\\n */\\n purchaseAugmentation(faction: string, augmentation: string): boolean;\\n\\n /**\\n * Get the stats of an augmentation.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function returns augmentation stats.\\n *\\n * @param name - Name of Augmentation. CASE-SENSITIVE.\\n * @returns Augmentation stats.\\n */\\n getAugmentationStats(name: string): Multipliers;\\n\\n /**\\n * Install your purchased augmentations.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function will automatically install your Augmentations, resetting the game as usual. If you do not own uninstalled Augmentations then the game will not reset.\\n *\\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\\n */\\n installAugmentations(cbScript?: string): void;\\n\\n /**\\n * Hospitalize the player.\\n * @remarks\\n * RAM cost: 0.25 GB * 16/4/1\\n */\\n hospitalize(): void;\\n\\n /**\\n * Soft reset the game.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function will perform a reset even if you don’t have any augmentation installed.\\n *\\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\\n */\\n softReset(cbScript: string): void;\\n\\n /**\\n * Go to a location.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Move the player to a specific location.\\n *\\n * @param locationName - Name of the location.\\n * @returns True if the player was moved there, false otherwise.\\n */\\n goToLocation(locationName: string): boolean;\\n\\n /**\\n * Get the current server.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * @returns Name of the current server.\\n */\\n getCurrentServer(): string;\\n\\n /**\\n * Connect to a server.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * Run the connect HOSTNAME command in the terminal. Can only connect to neighbors.\\n *\\n * @returns True if the connect command was successful, false otherwise.\\n */\\n connect(hostname: string): boolean;\\n\\n /**\\n * Run the hack command in the terminal.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * @returns Amount of money stolen by manual hacking.\\n */\\n manualHack(): Promise;\\n\\n /**\\n * Run the backdoor command in the terminal.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * @returns Promise waiting for the installation to finish.\\n */\\n installBackdoor(): Promise;\\n\\n /**\\n * Check if the player is focused.\\n * @remarks\\n * RAM cost: 0.1 GB * 16/4/1\\n *\\n *\\n * @returns True if the player is focused.\\n */\\n isFocused(): boolean;\\n\\n /**\\n * Set the players focus.\\n * @remarks\\n * RAM cost: 0.1 GB * 16/4/1\\n *\\n * @returns True if the focus was changed.\\n */\\n setFocus(focus: boolean): boolean;\\n\\n /**\\n * Get a list of programs offered on the dark web.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function allows the player to get a list of programs available for purchase\\n * on the dark web. Players MUST have purchased Tor to get the list of programs\\n * available. If Tor has not been purchased yet, this function will return an\\n * empty list.\\n *\\n * @example\\n * ```js\\n * const programs = ns.getDarkwebPrograms();\\n * ns.tprint(`Available programs are: ${programs.split(\\\", \\\")}`);\\n * ```\\n * @returns - a list of programs available for purchase on the dark web, or [] if Tor has not\\n * been purchased\\n */\\n getDarkwebPrograms(): string[];\\n\\n /**\\n * Check the price of an exploit on the dark web\\n * @remarks\\n * RAM cost: 0.5 GB * 16/4/1\\n *\\n *\\n * This function allows you to check the price of a darkweb exploit/program.\\n * You MUST have a TOR router in order to use this function. The price returned\\n * by this function is the same price you would see with buy -l from the terminal.\\n * Returns the cost of the program if it has not been purchased yet, 0 if it\\n * has already been purchased, or -1 if Tor has not been purchased (and thus\\n * the program/exploit is not available for purchase).\\n *\\n * If the program does not exist, an error is thrown.\\n *\\n *\\n * @example\\n * ```js\\n * const programName = \\\"BruteSSH.exe\\\";\\n * const cost = ns.getDarkwebProgramCost(programName);\\n * if (cost > 0) ns.tprint(`${programName} costs ${ns.formatMoney(cost)}`);\\n * ```\\n * @param programName - Name of program to check the price of\\n * @returns Price of the specified darkweb program\\n * (if not yet purchased), 0 if it has already been purchased, or -1 if Tor has not been\\n * purchased. Throws an error if the specified program/exploit does not exist\\n */\\n getDarkwebProgramCost(programName: string): number;\\n\\n /**\\n * b1t_flum3 into a different BN.\\n * @remarks\\n * RAM cost: 16 GB * 16/4/1\\n *\\n * @param nextBN - BN number to jump to\\n * @param callbackScript - Name of the script to launch in the next BN.\\n */\\n b1tflum3(nextBN: number, callbackScript?: string): void;\\n\\n /**\\n * Destroy the w0r1d_d43m0n and move on to the next BN.\\n * @remarks\\n * RAM cost: 32 GB * 16/4/1\\n *\\n * You must have the special augment installed and the required hacking level\\n * OR\\n * Completed the final black op.\\n *\\n * @param nextBN - BN number to jump to\\n * @param callbackScript - Name of the script to launch in the next BN.\\n */\\n destroyW0r1dD43m0n(nextBN: number, callbackScript?: string): void;\\n\\n /**\\n * Get the current work the player is doing.\\n * @remarks\\n * RAM cost: 0.5 GB * 16/4/1\\n *\\n * @returns - An object representing the current work. Fields depend on the kind of work.\\n */\\n getCurrentWork(): any | null;\\n}\\n\\n/**\\n * Company position requirements and salary.\\n * @public\\n * @returns - An object representing the requirements and salary for a company/position combination.\\n */\\nexport interface CompanyPositionInfo {\\n name: JobName;\\n nextPosition: JobName | null;\\n salary: number;\\n requiredReputation: number;\\n requiredSkills: Skills;\\n}\\n\\n/**\\n * Hacknet API\\n * @remarks\\n * Not all these functions are immediately available.\\n * @public\\n */\\nexport interface Hacknet {\\n /**\\n * Get the number of hacknet nodes you own.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the number of Hacknet Nodes you own.\\n *\\n * @returns Number of hacknet nodes.\\n */\\n numNodes(): number;\\n\\n /**\\n * Get the maximum number of hacknet nodes.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns Maximum number of hacknet nodes.\\n */\\n maxNumNodes(): number;\\n\\n /**\\n * Purchase a new hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Purchases a new Hacknet Node. Returns a number with the index of the\\n * Hacknet Node. This index is equivalent to the number at the end of\\n * the Hacknet Node’s name (e.g The Hacknet Node named `hacknet-node-4`\\n * will have an index of 4).\\n *\\n * If the player cannot afford to purchase a new Hacknet Node then the function will return -1.\\n *\\n * @returns The index of the Hacknet Node or if the player cannot afford to purchase a new Hacknet Node the function will return -1.\\n */\\n purchaseNode(): number;\\n\\n /**\\n * Get the price of the next hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the cost of purchasing a new Hacknet Node.\\n *\\n * @returns Cost of purchasing a new Hacknet Node.\\n */\\n getPurchaseNodeCost(): number;\\n\\n /**\\n * Get the stats of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns an object containing a variety of stats about the specified Hacknet Node.\\n *\\n * Note that for Hacknet Nodes, production refers to the amount of money the node generates.\\n * For Hacknet Servers (the upgraded version of Hacknet Nodes), production refers to the\\n * amount of hashes the node generates.\\n *\\n * @param index - Index/Identifier of Hacknet Node\\n * @returns Object containing a variety of stats about the specified Hacknet Node.\\n */\\n getNodeStats(index: number): NodeStats;\\n\\n /**\\n * Upgrade the level of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Tries to upgrade the level of the specified Hacknet Node by n.\\n *\\n * Returns true if the Hacknet Node’s level is successfully upgraded by n\\n * or if it is upgraded by some positive amount and the Node reaches its max level.\\n *\\n * Returns false otherwise.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of levels to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns True if the Hacknet Node’s level is successfully upgraded, false otherwise.\\n */\\n upgradeLevel(index: number, n?: number): boolean;\\n\\n /**\\n * Upgrade the RAM of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Tries to upgrade the specified Hacknet Node’s RAM n times.\\n * Note that each upgrade doubles the Node’s RAM.\\n * So this is equivalent to multiplying the Node’s RAM by 2 n.\\n *\\n * Returns true if the Hacknet Node’s RAM is successfully upgraded n times\\n * or if it is upgraded some positive number of times and the Node reaches its max RAM.\\n *\\n * Returns false otherwise.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns True if the Hacknet Node’s RAM is successfully upgraded, false otherwise.\\n */\\n upgradeRam(index: number, n?: number): boolean;\\n\\n /**\\n * Upgrade the core of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Tries to purchase n cores for the specified Hacknet Node.\\n *\\n * Returns true if it successfully purchases n cores for the Hacknet Node\\n * or if it purchases some positive amount and the Node reaches its max number of cores.\\n *\\n * Returns false otherwise.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of cores to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns True if the Hacknet Node’s cores are successfully purchased, false otherwise.\\n */\\n upgradeCore(index: number, n?: number): boolean;\\n\\n /**\\n * Upgrade the cache of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Tries to upgrade the specified Hacknet Server’s cache n times.\\n *\\n * Returns true if it successfully upgrades the Server’s cache n times,\\n * or if it purchases some positive amount and the Server reaches its max cache level.\\n *\\n * Returns false otherwise.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of cache levels to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns True if the Hacknet Node’s cache level is successfully upgraded, false otherwise.\\n */\\n upgradeCache(index: number, n?: number): boolean;\\n\\n /**\\n * Calculate the cost of upgrading hacknet node levels.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the cost of upgrading the specified Hacknet Node by n levels.\\n *\\n * If an invalid value for n is provided, then this function returns 0.\\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of levels to upgrade. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns Cost of upgrading the specified Hacknet Node.\\n */\\n getLevelUpgradeCost(index: number, n?: number): number;\\n\\n /**\\n * Calculate the cost of upgrading hacknet node RAM.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the cost of upgrading the RAM of the specified Hacknet Node n times.\\n *\\n * If an invalid value for n is provided, then this function returns 0.\\n * If the specified Hacknet Node already has max RAM, then Infinity is returned.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns Cost of upgrading the specified Hacknet Node's RAM.\\n */\\n getRamUpgradeCost(index: number, n?: number): number;\\n\\n /**\\n * Calculate the cost of upgrading hacknet node cores.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the cost of upgrading the number of cores of the specified Hacknet Node by n.\\n *\\n * If an invalid value for n is provided, then this function returns 0.\\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of times to upgrade cores. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns Cost of upgrading the specified Hacknet Node's number of cores.\\n */\\n getCoreUpgradeCost(index: number, n?: number): number;\\n\\n /**\\n * Calculate the cost of upgrading hacknet node cache.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the cost of upgrading the cache level of the specified Hacknet Server by n.\\n *\\n * If an invalid value for n is provided, then this function returns 0.\\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of times to upgrade cache. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns Cost of upgrading the specified Hacknet Node's cache.\\n */\\n getCacheUpgradeCost(index: number, n?: number): number;\\n\\n /**\\n * Get the total number of hashes stored.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the number of hashes you have.\\n *\\n * @returns Number of hashes you have.\\n */\\n numHashes(): number;\\n\\n /**\\n * Get the maximum number of hashes you can store.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the number of hashes you can store.\\n *\\n * @returns Number of hashes you can store.\\n */\\n hashCapacity(): number;\\n\\n /**\\n * Get the cost of a hash upgrade.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the number of hashes required for the specified upgrade. The name of the upgrade must be an exact match.\\n *\\n * @example\\n * ```js\\n * const upgradeName = \\\"Sell for Corporation Funds\\\";\\n * if (ns.hacknet.numHashes() > ns.hacknet.hashCost(upgradeName)) {\\n * ns.hacknet.spendHashes(upgradeName);\\n * }\\n * ```\\n * @param upgName - Name of the upgrade of Hacknet Node.\\n * @param count - Number of upgrades to buy at once. Defaults to 1 if not specified.\\n * @returns Number of hashes required for the specified upgrade.\\n */\\n hashCost(upgName: string, count?: number): number;\\n\\n /**\\n * Purchase a hash upgrade.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Spend the hashes generated by your Hacknet Servers on an upgrade.\\n * Returns a boolean value - true if the upgrade is successfully purchased, and false otherwise.\\n *\\n * The name of the upgrade must be an exact match.\\n * The `upgTarget` argument is used for upgrades such as `Reduce Minimum Security`, which applies to a specific server.\\n * In this case, the `upgTarget` argument must be the hostname of the server.\\n *\\n * @example\\n * ```js\\n * // For upgrades where no target is required\\n * ns.hacknet.spendHashes(\\\"Sell for Corporation Funds\\\");\\n * // For upgrades requiring a target\\n * ns.hacknet.spendHashes(\\\"Increase Maximum Money\\\", \\\"foodnstuff\\\");\\n * ```\\n * @param upgName - Name of the upgrade of Hacknet Node.\\n * @param upgTarget - Object to which upgrade applies. Required for certain upgrades.\\n * @param count - Number of upgrades to buy at once. Defaults to 1 if not specified.\\n * For compatibility reasons, upgTarget must be specified, even if it is not used, in order to specify count.\\n * @returns True if the upgrade is successfully purchased, and false otherwise.\\n */\\n spendHashes(upgName: string, upgTarget?: string, count?: number): boolean;\\n\\n /**\\n * Get the list of hash upgrades\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the list of all available hash upgrades that can be used in the spendHashes function.\\n * @example\\n * ```js\\n * const upgrades = ns.hacknet.getHashUpgrades(); // [\\\"Sell for Money\\\",\\\"Sell for Corporation Funds\\\",...]\\n * ```\\n * @returns An array containing the available upgrades\\n */\\n getHashUpgrades(): string[];\\n\\n /**\\n * Get the level of a hash upgrade.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * @returns Level of the upgrade.\\n */\\n getHashUpgradeLevel(upgName: string): number;\\n\\n /**\\n * Get the multiplier to study.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * @returns Multiplier.\\n */\\n getStudyMult(): number;\\n\\n /**\\n * Get the multiplier to training.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * @returns Multiplier.\\n */\\n getTrainingMult(): number;\\n}\\n\\n/**\\n * Bladeburner API\\n * @remarks\\n * You have to be employed in the Bladeburner division and be in BitNode-7\\n * or have Source-File 7 in order to use this API.\\n * @public\\n */\\nexport interface Bladeburner {\\n /**\\n * List all contracts.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all Bladeburner contracts.\\n *\\n * @returns Array of strings containing the names of all Bladeburner contracts.\\n */\\n getContractNames(): string[];\\n\\n /**\\n * List all operations.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all Bladeburner operations.\\n *\\n * @returns Array of strings containing the names of all Bladeburner operations.\\n */\\n getOperationNames(): string[];\\n\\n /**\\n * List all black ops.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all Bladeburner Black Ops.\\n *\\n * @returns Array of strings containing the names of all Bladeburner Black Ops.\\n */\\n getBlackOpNames(): string[];\\n\\n /**\\n * List all general actions.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all general Bladeburner actions.\\n *\\n * @returns Array of strings containing the names of all general Bladeburner actions.\\n */\\n getGeneralActionNames(): string[];\\n\\n /**\\n * List all skills.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all general Bladeburner skills.\\n *\\n * @returns Array of strings containing the names of all general Bladeburner skills.\\n */\\n getSkillNames(): string[];\\n\\n /**\\n * Start an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Attempts to start the specified Bladeburner action.\\n * Returns true if the action was started successfully, and false otherwise.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match\\n * @returns True if the action was started successfully, and false otherwise.\\n */\\n startAction(type: string, name: string): boolean;\\n\\n /**\\n * Stop current action.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Stops the current Bladeburner action.\\n *\\n */\\n stopBladeburnerAction(): void;\\n\\n /**\\n * Get current action.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns an object that represents the player’s current Bladeburner action.\\n * If the player is not performing an action, the function will return an object with the ‘type’ property set to “Idle”.\\n *\\n * @returns Object that represents the player’s current Bladeburner action.\\n */\\n getCurrentAction(): BladeburnerCurAction;\\n\\n /**\\n * Get the time to complete an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the number of milliseconds it takes to complete the specified action\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Number of milliseconds it takes to complete the specified action.\\n */\\n getActionTime(type: string, name: string): number;\\n\\n /**\\n * Get the time elapsed on current action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the number of milliseconds already spent on the current action.\\n *\\n * @returns Number of milliseconds already spent on the current action.\\n */\\n getActionCurrentTime(): number;\\n\\n /**\\n * Get estimate success chance of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the estimated success chance for the specified action.\\n * This chance is returned as a decimal value, NOT a percentage\\n * (e.g. if you have an estimated success chance of 80%, then this function will return 0.80, NOT 80).\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Estimated success chance for the specified action.\\n */\\n getActionEstimatedSuccessChance(type: string, name: string): [number, number];\\n\\n /**\\n * Get the reputation gain of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the average Bladeburner reputation gain for successfully\\n * completing the specified action.\\n * Note that this value is an ‘average’ and the real reputation gain may vary slightly from this value.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @param level - Optional action level at which to calculate the gain\\n * @returns Average Bladeburner reputation gain for successfully completing the specified action.\\n */\\n getActionRepGain(type: string, name: string, level: number): number;\\n\\n /**\\n * Get action count remaining.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the remaining count of the specified action.\\n *\\n * Note that this is meant to be used for Contracts and Operations.\\n * This function will return ‘Infinity’ for actions such as Training and Field Analysis.\\n * This function will return 1 for BlackOps not yet completed regardless of whether\\n * the player has the required rank to attempt the mission or not.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Remaining count of the specified action.\\n */\\n getActionCountRemaining(type: string, name: string): number;\\n\\n /**\\n * Get the maximum level of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the maximum level for this action.\\n *\\n * Returns -1 if an invalid action is specified.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Maximum level of the specified action.\\n */\\n getActionMaxLevel(type: string, name: string): number;\\n\\n /**\\n * Get the current level of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the current level of this action.\\n *\\n * Returns -1 if an invalid action is specified.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Current level of the specified action.\\n */\\n getActionCurrentLevel(type: string, name: string): number;\\n\\n /**\\n * Get whether an action is set to autolevel.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action is currently set to autolevel.\\n *\\n * Returns false if an invalid action is specified.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns True if the action is set to autolevel, and false otherwise.\\n */\\n getActionAutolevel(type: string, name: string): boolean;\\n\\n /**\\n * Get action successes.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a number with how many successes you have with action.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns a number with how many successes you have with action.\\n */\\n getActionSuccesses(type: string, name: string): number;\\n\\n /**\\n * Set an action autolevel.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Enable/disable autoleveling for the specified action.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @param autoLevel - Whether or not to autolevel this action\\n */\\n setActionAutolevel(type: string, name: string, autoLevel: boolean): void;\\n\\n /**\\n * Set the level of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Set the level for the specified action.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @param level - Level to set this action to.\\n */\\n setActionLevel(type: string, name: string, level: number): void;\\n\\n /**\\n * Get player bladeburner rank.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the player’s Bladeburner Rank.\\n *\\n * @returns Player’s Bladeburner Rank.\\n */\\n getRank(): number;\\n\\n /**\\n * Get black op required rank.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Returns the rank required to complete this BlackOp.\\n *\\n * Returns -1 if an invalid action is specified.\\n *\\n * @param name - Name of BlackOp. Must be an exact match.\\n * @returns Rank required to complete this BlackOp.\\n */\\n getBlackOpRank(name: string): number;\\n\\n /**\\n * Get bladeburner skill points.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the number of Bladeburner skill points you have.\\n *\\n * @returns Number of Bladeburner skill points you have.\\n */\\n getSkillPoints(): number;\\n\\n /**\\n * Get skill level.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * This function returns your level in the specified skill.\\n *\\n * The function returns -1 if an invalid skill name is passed in.\\n *\\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\\n * @returns Level in the specified skill.\\n */\\n getSkillLevel(name: string): number;\\n\\n /**\\n * Get cost to upgrade skill.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * This function returns the number of skill points needed to upgrade the specified skill the specified number of times.\\n *\\n * The function returns -1 if an invalid skill name is passed in.\\n *\\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\\n * @param count - Number of times to upgrade the skill. Defaults to 1 if not specified.\\n * @returns Number of skill points needed to upgrade the specified skill.\\n */\\n getSkillUpgradeCost(name: string, count?: number): number;\\n\\n /**\\n * Upgrade skill.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Attempts to upgrade the specified Bladeburner skill the specified number of times.\\n *\\n * Returns true if the skill is successfully upgraded, and false otherwise.\\n *\\n * @param skillName - Name of skill to be upgraded. Case-sensitive and must be an exact match\\n * @param count - Number of times to upgrade the skill. Defaults to 1 if not specified.\\n * @returns true if the skill is successfully upgraded, and false otherwise.\\n */\\n upgradeSkill(name: string, count?: number): boolean;\\n\\n /**\\n * Get team size.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the number of Bladeburner team members you have assigned to the specified action.\\n *\\n * Setting a team is only applicable for Operations and BlackOps. This function will return 0 for other action types.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Number of Bladeburner team members that were assigned to the specified action.\\n */\\n getTeamSize(type: string, name: string): number;\\n\\n /**\\n * Set team size.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Set the team size for the specified Bladeburner action.\\n *\\n * Returns the team size that was set, or -1 if the function failed.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @param size - Number of team members to set. Will be converted using Math.round().\\n * @returns Number of Bladeburner team members you assigned to the specified action.\\n */\\n setTeamSize(type: string, name: string, size: number): number;\\n\\n /**\\n * Get estimated population in city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the estimated number of Synthoids in the specified city,\\n * or -1 if an invalid city was specified.\\n *\\n * @param city - Name of city. Case-sensitive\\n * @returns Estimated number of Synthoids in the specified city.\\n */\\n getCityEstimatedPopulation(city: CityName | `${CityName}`): number;\\n\\n /**\\n * Get number of communities in a city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the estimated number of Synthoid communities in the specified city,\\n * or -1 if an invalid city was specified.\\n *\\n * @param city - Name of city. Case-sensitive\\n * @returns Number of Synthoids communities in the specified city.\\n */\\n getCityCommunities(city: CityName | `${CityName}`): number;\\n\\n /**\\n * Get chaos of a city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the chaos in the specified city,\\n * or -1 if an invalid city was specified.\\n *\\n * @param city - Name of city. Case-sensitive\\n * @returns Chaos in the specified city.\\n */\\n getCityChaos(city: CityName | `${CityName}`): number;\\n\\n /**\\n * Get current city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the city that the player is currently in (for Bladeburner).\\n *\\n * @returns City that the player is currently in (for Bladeburner).\\n */\\n getCity(): CityName;\\n\\n /**\\n * Travel to another city in bladeburner.\\n * @remarks\\n * RAM cost: 4 GB\\n * Attempts to switch to the specified city (for Bladeburner only).\\n *\\n * Returns true if successful, and false otherwise\\n *\\n * @param city - Name of city. Case-sensitive\\n * @returns true if successful, and false otherwise\\n */\\n switchCity(city: CityName | `${CityName}`): boolean;\\n\\n /**\\n * Get bladeburner stamina.\\n * @remarks\\n * RAM cost: 4 GB\\n * Returns an array with two elements:\\n * * [Current stamina, Max stamina]\\n * @example\\n * ```js\\n * function getStaminaPercentage() {\\n * const [current, max] = ns.bladeburner.getStamina();\\n * return current / max;\\n * }\\n * ```\\n * @returns Array containing current stamina and max stamina.\\n */\\n getStamina(): [number, number];\\n\\n /**\\n * Join the bladeburner faction.\\n * @remarks\\n * RAM cost: 4 GB\\n * Attempts to join the Bladeburner faction.\\n *\\n * Returns true if you successfully join the Bladeburner faction, or if you are already a member.\\n *\\n * Returns false otherwise.\\n *\\n * @returns True if you successfully join the Bladeburner faction, or if you are already a member, false otherwise.\\n */\\n joinBladeburnerFaction(): boolean;\\n\\n /**\\n * Join the bladeburner division.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Attempts to join the Bladeburner division.\\n *\\n * Returns true if you successfully join the Bladeburner division, or if you are already a member.\\n *\\n * Returns false otherwise.\\n *\\n * @returns True if you successfully join the Bladeburner division, or if you are already a member, false otherwise.\\n */\\n joinBladeburnerDivision(): boolean;\\n\\n /**\\n * Get bladeburner bonus time.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the amount of accumulated “bonus time” (milliseconds) for the Bladeburner mechanic.\\n *\\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\\n *\\n * “Bonus time” makes the game progress faster, up to 5x the normal speed.\\n * For example, if an action takes 30 seconds to complete but you’ve accumulated over\\n * 30 seconds in bonus time, then the action will only take 6 seconds in real life to complete.\\n *\\n * @returns Amount of accumulated “bonus time” (milliseconds) for the Bladeburner mechanic.\\n */\\n getBonusTime(): number;\\n\\n /** Returns whether player is a member of bladeburner division. Does not require API access.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * @returns whether player is a member of bladeburner division. */\\n inBladeburner(): boolean;\\n}\\n\\n/**\\n * Coding Contract API\\n * @public\\n */\\nexport interface CodingContract {\\n /**\\n * Attempts a coding contract, returning a reward string on success or empty string on failure.\\n * @remarks\\n * RAM cost: 10 GB\\n *\\n * Attempts to solve the Coding Contract with the provided solution.\\n *\\n * @example\\n * ```js\\n * const reward = codingcontract.attempt(yourSolution, filename, hostname);\\n * if (reward) {\\n * ns.tprint(`Contract solved successfully! Reward: ${reward}`)\\n * } else ns.tprint(\\\"Failed to solve contract.\\\")\\n * ```\\n *\\n * @param answer - Attempted solution for the contract.\\n * @param filename - Filename of the contract.\\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not\\n * provided.\\n * @returns A reward description string on success, or an empty string on failure.\\n */\\n attempt(answer: string | number | any[], filename: string, host?: string): string;\\n\\n /**\\n * Get the type of a coding contract.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * Returns a name describing the type of problem posed by the Coding Contract.\\n * (e.g. Find Largest Prime Factor, Total Ways to Sum, etc.)\\n *\\n * @param filename - Filename of the contract.\\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\\n * @returns Name describing the type of problem posed by the Coding Contract.\\n */\\n getContractType(filename: string, host?: string): string;\\n\\n /**\\n * Get the description.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * Get the full text description for the problem posed by the Coding Contract.\\n *\\n * @param filename - Filename of the contract.\\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\\n * @returns Contract’s text description.\\n */\\n getDescription(filename: string, host?: string): string;\\n\\n /**\\n * Get the input data.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * Get the data associated with the specific Coding Contract.\\n * Note that this is not the same as the contract’s description.\\n * This is just the data that the contract wants you to act on in order to solve the contract.\\n *\\n * @param filename - Filename of the contract.\\n * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.\\n * @returns The specified contract’s data, data type depends on contract type.\\n */\\n getData(filename: string, host?: string): CodingContractData;\\n\\n /**\\n * Get the number of attempts remaining.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get the number of tries remaining on the contract before it self-destructs.\\n *\\n * @param filename - Filename of the contract.\\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\\n * @returns How many attempts are remaining for the contract.\\n */\\n getNumTriesRemaining(filename: string, host?: string): number;\\n\\n /**\\n * Generate a dummy contract.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Generate a dummy contract on the home computer with no reward. Used to test various algorithms.\\n *\\n * @param type - Type of contract to generate\\n */\\n createDummyContract(type: string): void;\\n\\n /**\\n * List all contract types.\\n * @remarks\\n * RAM cost: 2 GB\\n */\\n getContractTypes(): string[];\\n}\\n\\n/**\\n * Gang API\\n * @remarks\\n * If you are not in BitNode-2, then you must have Source-File 2 in order to use this API.\\n * @public\\n */\\nexport interface Gang {\\n /**\\n * Create a gang.\\n * @remarks\\n * RAM cost: 1GB\\n *\\n * Create a gang with the specified faction.\\n * @returns True if the gang was created, false otherwise.\\n */\\n createGang(faction: string): boolean;\\n\\n /**\\n * Check if you're in a gang.\\n * @remarks\\n * RAM cost: 1GB\\n * @returns True if you're in a gang, false otherwise.\\n */\\n inGang(): boolean;\\n\\n /**\\n * List all gang members.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Get the names of all Gang members\\n *\\n * @returns Names of all Gang members.\\n */\\n getMemberNames(): string[];\\n\\n /**\\n * Get information about your gang.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get general information about the gang.\\n *\\n * @returns Object containing general information about the gang.\\n */\\n getGangInformation(): GangGenInfo;\\n\\n /**\\n * Get information about the other gangs.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get territory and power information about all gangs.\\n *\\n * @returns Object containing territory and power information about all gangs.\\n */\\n getOtherGangInformation(): GangOtherInfo;\\n\\n /**\\n * Get information about a specific gang member.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get stat and equipment-related information about a Gang Member\\n *\\n * @param name - Name of member.\\n * @returns Object containing stat and equipment-related information about a Gang Member.\\n */\\n getMemberInformation(name: string): GangMemberInfo;\\n\\n /**\\n * Check if you can recruit a new gang member.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns a boolean indicating whether a member can currently be recruited.\\n *\\n * Once you have successfully created a gang by using the function\\n * {@link Gang.createGang | createGang}, you can immediately recruit a small\\n * number of members to your gang. After you have recruited the founding\\n * members, to recruit another member you must increase your respect. The\\n * more members you want to recruit, the more respect you require. If your\\n * gang has the maximum number of members, then this function would return\\n * false.\\n *\\n * @returns True if a member can currently be recruited, false otherwise.\\n */\\n canRecruitMember(): boolean;\\n\\n /**\\n * Recruit a new gang member.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Attempt to recruit a new gang member.\\n *\\n * Possible reasons for failure:\\n * * Cannot currently recruit a new member\\n * * There already exists a member with the specified name\\n *\\n * @param name - Name of member to recruit.\\n * @returns True if the member was successfully recruited, false otherwise.\\n */\\n recruitMember(name: string): boolean;\\n\\n /**\\n * List member task names.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Get the name of all valid tasks that Gang members can be assigned to.\\n *\\n * @returns All valid tasks that Gang members can be assigned to.\\n */\\n getTaskNames(): string[];\\n\\n /**\\n * Set gang member to task.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Attempts to assign the specified Gang Member to the specified task.\\n * If an invalid task is specified, the Gang member will be set to idle (“Unassigned”).\\n *\\n * @param memberName - Name of Gang member to assign.\\n * @param taskName - Task to assign.\\n * @returns True if the Gang Member was successfully assigned to the task, false otherwise.\\n */\\n setMemberTask(memberName: string, taskName: string): boolean;\\n\\n /**\\n * Get stats of a task.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Get the stats of a gang task stats. This is typically used to evaluate which action should be executed next.\\n *\\n * @param name - Name of the task.\\n * @returns Detailed stats of a task.\\n */\\n getTaskStats(name: string): GangTaskStats;\\n\\n /**\\n * List equipment names.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Get the name of all possible equipment/upgrades you can purchase for your Gang Members.\\n * This includes Augmentations.\\n *\\n * @returns Names of all Equipments/Augmentations.\\n */\\n getEquipmentNames(): string[];\\n\\n /**\\n * Get cost of equipment.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get the amount of money it takes to purchase a piece of Equipment or an Augmentation.\\n * If an invalid Equipment/Augmentation is specified, this function will return Infinity.\\n *\\n * @param equipName - Name of equipment.\\n * @returns Cost to purchase the specified Equipment/Augmentation (number). Infinity for invalid arguments\\n */\\n getEquipmentCost(equipName: string): number;\\n\\n /**\\n * Get type of an equipment.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get the specified equipment type.\\n *\\n * @param equipName - Name of equipment.\\n * @returns Type of the equipment.\\n */\\n getEquipmentType(equipName: string): string;\\n\\n /**\\n * Get stats of an equipment.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get the specified equipment stats.\\n *\\n * @param equipName - Name of equipment.\\n * @returns A dictionary containing the stats of the equipment.\\n */\\n getEquipmentStats(equipName: string): EquipmentStats;\\n\\n /**\\n * Purchase an equipment for a gang member.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Attempt to purchase the specified Equipment/Augmentation for the specified Gang member.\\n *\\n * @param memberName - Name of Gang member to purchase the equipment for.\\n * @param equipName - Name of Equipment/Augmentation to purchase.\\n * @returns True if the equipment was successfully purchased. False otherwise\\n */\\n purchaseEquipment(memberName: string, equipName: string): boolean;\\n\\n /**\\n * Ascend a gang member.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Ascend the specified Gang Member.\\n *\\n * @param memberName - Name of member to ascend.\\n * @returns Object with info about the ascension results, or undefined if ascension did not occur.\\n */\\n ascendMember(memberName: string): GangMemberAscension | undefined;\\n\\n /**\\n * Get the result of an ascension without ascending.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get a {@link GangMemberAscension} result for ascending a gang member without performing the ascension.\\n *\\n * @param memberName - Name of member.\\n * @returns Object with info about the ascension results, or undefined if ascension is not possible.\\n */\\n getAscensionResult(memberName: string): GangMemberAscension | undefined;\\n\\n /**\\n * Enable/Disable territory warfare.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Set whether or not the gang should engage in territory warfare\\n *\\n * @param engage - Whether or not to engage in territory warfare.\\n */\\n setTerritoryWarfare(engage: boolean): void;\\n\\n /**\\n * Get chance to win clash with other gang.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the chance you have to win a clash with the specified gang. The chance is returned in decimal form, not percentage\\n *\\n * @param gangName - Target gang\\n * @returns Chance you have to win a clash with the specified gang.\\n */\\n getChanceToWinClash(gangName: string): number;\\n\\n /**\\n * Get bonus time.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the amount of accumulated “bonus time” (milliseconds) for the Gang mechanic.\\n *\\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\\n *\\n * “Bonus time” makes the game progress faster, up to 25x the normal speed.\\n *\\n * @returns Bonus time for the Gang mechanic in milliseconds.\\n */\\n getBonusTime(): number;\\n}\\n\\n/**\\n * Sleeve API\\n * @remarks\\n * If you are not in BitNode-10, then you must have Source-File 10 in order to use this API.\\n * @public\\n */\\nexport interface Sleeve {\\n /**\\n * Get the number of sleeves you own.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return the number of duplicate sleeves the player has.\\n *\\n * @returns Number of duplicate sleeves the player has.\\n */\\n getNumSleeves(): number;\\n\\n /**\\n * Get information about a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a person object for this sleeve\\n *\\n * storedCycles is the amount of Bonus Time in cycles, each translates to 200ms\\n *\\n * @param sleeveNumber - Index of the sleeve to retrieve information.\\n * @returns Object containing information about this sleeve.\\n */\\n getSleeve(sleeveNumber: number): SleevePerson;\\n\\n /**\\n * Get task of a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return the current task that the sleeve is performing, or null if the sleeve is idle. All tasks have a \\\"type\\\"\\n * property, and other available properties depend on the type of task.\\n *\\n * @param sleeveNumber - Index of the sleeve to retrieve task from.\\n * @returns Object containing information for the current task that the sleeve is performing.\\n */\\n getTask(sleeveNumber: number): SleeveTask | null;\\n\\n /**\\n * Set a sleeve to idle.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * @param sleeveNumber - Index of the sleeve to idle.\\n */\\n setToIdle(sleeveNumber: number): void;\\n\\n /**\\n * Set a sleeve to shock recovery.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action was set successfully.\\n *\\n * @param sleeveNumber - Index of the sleeve to start recovery.\\n * @returns True if this action was set successfully, false otherwise.\\n */\\n setToShockRecovery(sleeveNumber: number): boolean;\\n\\n /**\\n * Set a sleeve to synchronize.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action was set successfully.\\n *\\n * @param sleeveNumber - Index of the sleeve to start synchronizing.\\n * @returns True if this action was set successfully, false otherwise.\\n */\\n setToSynchronize(sleeveNumber: number): boolean;\\n\\n /**\\n * Set a sleeve to commit crime.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action was set successfully (false if an invalid action is specified).\\n *\\n * @example\\n * ```ts\\n * // Assigns the first sleeve to Homicide.\\n * ns.sleeve.setToCommitCrime(0, \\\"Homicide\\\");\\n *\\n * // Assigns the second sleeve to Grand Theft Auto, using enum\\n * const crimes = ns.enums.CrimeType;\\n * ns.sleeve.setToCommitCrime(1, crimes.grandTheftAuto)\\n * ```\\n *\\n * @param sleeveNumber - Index of the sleeve to start committing crime. Sleeves are numbered starting from 0.\\n * @param name - Name of the crime.\\n * @returns True if this action was set successfully, false otherwise.\\n */\\n setToCommitCrime(sleeveNumber: number, crimeType: CrimeType | `${CrimeType}`): boolean;\\n\\n /**\\n * Set a sleeve to work for a faction.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve started working for a faction.\\n *\\n * @param sleeveNumber - Index of the sleeve to work for the faction.\\n * @param factionName - Name of the faction to work for.\\n * @param factionWorkType - Name of the action to perform for this faction.\\n * @returns True if the sleeve started working for this faction, false otherwise. Can also throw on errors.\\n */\\n setToFactionWork(\\n sleeveNumber: number,\\n factionName: string,\\n factionWorkType: FactionWorkType | `${FactionWorkType}`,\\n ): boolean | undefined;\\n\\n /**\\n * Set a sleeve to work for a company.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve started working for a company.\\n *\\n * @param sleeveNumber - Index of the sleeve to work for the company.\\n * @param companyName - Name of the company to work for.\\n * @returns True if the sleeve started working for this company, false otherwise.\\n */\\n setToCompanyWork(sleeveNumber: number, companyName: CompanyName | `${CompanyName}`): boolean;\\n\\n /**\\n * Set a sleeve to take a class at a university.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action was set successfully.\\n *\\n * @param sleeveNumber - Index of the sleeve to start taking class.\\n * @param university - Name of the university to attend.\\n * @param className - Name of the class to follow.\\n * @returns True if this action was set successfully, false otherwise.\\n */\\n setToUniversityCourse(sleeveNumber: number, university: string, className: string): boolean;\\n\\n /**\\n * Set a sleeve to workout at the gym.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve started working out.\\n *\\n * @param sleeveNumber - Index of the sleeve to workout at the gym.\\n * @param gymName - Name of the gym.\\n * @param stat - Name of the stat to train.\\n * @returns True if the sleeve started working out, false otherwise.\\n */\\n setToGymWorkout(sleeveNumber: number, gymName: string, stat: string): boolean;\\n\\n /**\\n * Make a sleeve travel to another city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve reached destination.\\n *\\n * @param sleeveNumber - Index of the sleeve to travel.\\n * @param city - Name of the destination city.\\n * @returns True if the sleeve reached destination, false otherwise.\\n */\\n travel(sleeveNumber: number, city: CityName | `${CityName}`): boolean;\\n\\n /**\\n * Get augmentations installed on a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a list of augmentation names that this sleeve has installed.\\n *\\n * @param sleeveNumber - Index of the sleeve to retrieve augmentations from.\\n * @returns List of augmentation names that this sleeve has installed.\\n */\\n getSleeveAugmentations(sleeveNumber: number): string[];\\n\\n /**\\n * Get price of an augmentation.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Price of the augmentation.\\n */\\n getSleeveAugmentationPrice(augName: string): number;\\n\\n /**\\n * Get reputation requirement of an augmentation.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Reputation requirement of the augmentation.\\n */\\n getSleeveAugmentationRepReq(augName: string): number;\\n\\n /**\\n * List purchasable augs for a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a list of augmentations that the player can buy for this sleeve.\\n *\\n * @param sleeveNumber - Index of the sleeve to retrieve purchasable augmentations from.\\n * @returns List of augmentations that the player can buy for this sleeve.\\n */\\n getSleevePurchasableAugs(sleeveNumber: number): AugmentPair[];\\n\\n /**\\n * Purchase an aug for a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return true if the aug was purchased and installed on the sleeve.\\n *\\n * @param sleeveNumber - Index of the sleeve to buy an aug for.\\n * @param augName - Name of the aug to buy. Must be an exact match.\\n * @returns True if the aug was purchased and installed on the sleeve, false otherwise.\\n */\\n purchaseSleeveAug(sleeveNumber: number, augName: string): boolean;\\n\\n /**\\n * Set a sleeve to perform Bladeburner actions.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve started a Bladeburner action.\\n *\\n * @param sleeveNumber - Index of the sleeve to perform a Bladeburner action.\\n * @param action - Name of the action to be performed.\\n * @param contract - Name of the contract if applicable.\\n * @returns True if the sleeve started the given Bladeburner action, false otherwise.\\n */\\n setToBladeburnerAction(sleeveNumber: number, action: string, contract?: string): boolean;\\n}\\n\\n/**\\n * Grafting API\\n * @remarks\\n * This API requires Source-File 10 to use.\\n * @public\\n */\\nexport interface Grafting {\\n /**\\n * Retrieve the grafting cost of an aug.\\n * @remarks\\n * RAM cost: 3.75 GB\\n *\\n * @param augName - Name of the aug to check the price of. Must be an exact match.\\n * @returns The cost required to graft the named augmentation.\\n * @throws Will error if an invalid Augmentation name is provided.\\n */\\n getAugmentationGraftPrice(augName: string): number;\\n\\n /**\\n * Retrieves the time required to graft an aug.\\n * @remarks\\n * RAM cost: 3.75 GB\\n *\\n * @param augName - Name of the aug to check the grafting time of. Must be an exact match.\\n * @returns The time required, in millis, to graft the named augmentation.\\n * @throws Will error if an invalid Augmentation name is provided.\\n */\\n getAugmentationGraftTime(augName: string): number;\\n\\n /**\\n * Retrieves a list of Augmentations that can be grafted.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * Note that this function returns a list of currently graftable Augmentations,\\n * based off of the Augmentations that you already own.\\n *\\n * @returns An array of graftable Augmentations.\\n */\\n getGraftableAugmentations(): string[];\\n\\n /**\\n * Begins grafting the named aug. You must be in New Tokyo to use this.\\n * @remarks\\n * RAM cost: 7.5 GB\\n *\\n * @param augName - The name of the aug to begin grafting. Must be an exact match.\\n * @param focus - Acquire player focus on this Augmentation grafting. Optional. Defaults to true.\\n * @returns True if the aug successfully began grafting, false otherwise (e.g. not enough money, or\\n * invalid Augmentation name provided).\\n * @throws Will error if called while you are not in New Tokyo.\\n */\\n graftAugmentation(augName: string, focus?: boolean): boolean;\\n}\\n\\n/**\\n * Skills formulas\\n * @public\\n */\\ninterface SkillsFormulas {\\n /**\\n * Calculate skill level.\\n * @param exp - experience for that skill\\n * @param skillMult - Multiplier for that skill, defaults to 1.\\n * @returns The calculated skill level.\\n */\\n calculateSkill(exp: number, skillMult?: number): number;\\n /**\\n * Calculate exp for skill level.\\n * @param skill - target skill level\\n * @param skillMult - Multiplier for that skill, defaults to 1.\\n * @returns The calculated exp required.\\n */\\n calculateExp(skill: number, skillMult?: number): number;\\n}\\n\\n/** @public */\\ninterface WorkStats {\\n money: number;\\n reputation: number;\\n hackExp: number;\\n strExp: number;\\n defExp: number;\\n dexExp: number;\\n agiExp: number;\\n chaExp: number;\\n intExp: number;\\n}\\n\\n/**\\n * Work formulas\\n * @public\\n */\\ninterface WorkFormulas {\\n crimeSuccessChance(person: Person, crimeType: CrimeType | `${CrimeType}`): number;\\n /** @returns The WorkStats gained when completing one instance of the specified crime. */\\n crimeGains(person: Person, crimeType: CrimeType | `${CrimeType}`): WorkStats;\\n /** @returns The WorkStats applied every game cycle (200ms) by taking the specified gym class. */\\n gymGains(person: Person, gymType: GymType | `${GymType}`, locationName: string): WorkStats;\\n /** @returns The WorkStats applied every game cycle (200ms) by taking the specified university class. */\\n universityGains(\\n person: Person,\\n classType: UniversityClassType | `${UniversityClassType}`,\\n locationName: string,\\n ): WorkStats;\\n /** @returns The WorkStats applied every game cycle (200ms) by performing the specified faction work. */\\n factionGains(person: Person, workType: FactionWorkType | `${FactionWorkType}`, favor: number): WorkStats;\\n /** @returns The WorkStats applied every game cycle (200ms) by performing the specified company work. */\\n companyGains(\\n person: Person,\\n companyName: CompanyName | `${CompanyName}`,\\n workType: JobName | `${JobName}`,\\n favor: number,\\n ): WorkStats;\\n}\\n\\n/**\\n * Reputation formulas\\n * @public\\n */\\ninterface ReputationFormulas {\\n /**\\n * Calculate the total required amount of faction reputation to reach a target favor.\\n * @param favor - target faction favor.\\n * @returns The calculated faction reputation required.\\n */\\n calculateFavorToRep(favor: number): number;\\n /**\\n * Calculate the resulting faction favor of a total amount of reputation.\\n * (Faction favor is gained whenever you install an Augmentation.)\\n * @param rep - amount of reputation.\\n * @returns The calculated faction favor.\\n */\\n calculateRepToFavor(rep: number): number;\\n\\n /**\\n * Calculate how much rep would be gained.\\n * @param amount - Amount of money donated\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n */\\n repFromDonation(amount: number, player: Person): number;\\n}\\n\\n/**\\n * Hacking formulas\\n * @public\\n */\\ninterface HackingFormulas {\\n /**\\n * Calculate hack chance.\\n * (Ex: 0.25 would indicate a 25% chance of success.)\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated hack chance.\\n */\\n hackChance(server: Server, player: Person): number;\\n /**\\n * Calculate hack exp for one thread.\\n * @remarks\\n * Multiply by thread to get total exp\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated hack exp.\\n */\\n hackExp(server: Server, player: Person): number;\\n /**\\n * Calculate hack percent for one thread.\\n * (Ex: 0.25 would steal 25% of the server's current value.)\\n * @remarks\\n * Multiply by thread to get total percent hacked.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated hack percent.\\n */\\n hackPercent(server: Server, player: Person): number;\\n /**\\n * Calculate the percent a server would grow to.\\n * Not exact due to limitations of mathematics.\\n * (Ex: 3.0 would would grow the server to 300% of its current value.)\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param threads - Amount of thread.\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @param cores - Number of cores on the computer that will execute grow.\\n * @returns The calculated grow percent.\\n */\\n growPercent(server: Server, threads: number, player: Person, cores?: number): number;\\n /**\\n * Calculate how many threads it will take to grow server to targetMoney. Starting money is server.moneyAvailable.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @param targetMoney - Desired final money, capped to server's moneyMax\\n * @param cores - Number of cores on the computer that will execute grow.\\n * @returns The calculated grow threads as an integer, rounded up.\\n */\\n growThreads(server: Server, player: Person, targetMoney: number, cores?: number): number;\\n /**\\n * Calculate hack time.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated hack time.\\n */\\n hackTime(server: Server, player: Person): number;\\n /**\\n * Calculate grow time.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated grow time.\\n */\\n growTime(server: Server, player: Person): number;\\n /**\\n * Calculate weaken time.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated weaken time.\\n */\\n weakenTime(server: Server, player: Person): number;\\n}\\n\\n/**\\n * Hacknet Node formulas\\n * @public\\n */\\ninterface HacknetNodesFormulas {\\n /**\\n * Calculate money gain rate.\\n * @param level - level of the node.\\n * @param ram - ram of the node.\\n * @param cores - cores of the node.\\n * @param mult - player production mult (default to 1)\\n * @returns The calculated money gain rate.\\n */\\n moneyGainRate(level: number, ram: number, cores: number, mult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet node level.\\n * @param startingLevel - starting level\\n * @param extraLevels - amount of level to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet node ram.\\n * @param startingRam - starting ram\\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet node cores.\\n * @param startingCore - starting cores\\n * @param extraCores - amount of cores to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\\n /**\\n * Calculate the cost of a hacknet node.\\n * @param n - number of the hacknet node\\n * @param mult - player cost reduction (defaults to 1)\\n * @returns The calculated cost.\\n */\\n hacknetNodeCost(n: number, mult: number): number;\\n /**\\n * All constants used by the game.\\n * @returns An object with all hacknet node constants used by the game.\\n */\\n constants(): HacknetNodeConstants;\\n}\\n\\n/**\\n * Hacknet Server formulas\\n * @public\\n */\\ninterface HacknetServersFormulas {\\n /**\\n * Calculate hash gain rate.\\n * @param level - level of the server.\\n * @param ramUsed - ramUsed of the server.\\n * @param maxRam - maxRam of the server.\\n * @param cores - cores of the server.\\n * @param mult - player production mult (default to 1)\\n * @returns The calculated hash gain rate.\\n */\\n hashGainRate(level: number, ramUsed: number, maxRam: number, cores: number, mult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet server level.\\n * @param startingLevel - starting level\\n * @param extraLevels - amount of level to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet server ram.\\n * @param startingRam - starting ram\\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet server cores.\\n * @param startingCore - starting cores\\n * @param extraCores - amount of cores to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet server cache.\\n * @param startingCache - starting cache level\\n * @param extraCache - amount of levels of cache to purchase (defaults to 1)\\n * @returns The calculated cost.\\n */\\n cacheUpgradeCost(startingCache: number, extraCache?: number): number;\\n /**\\n * Calculate hash cost of an upgrade.\\n * @param upgName - name of the upgrade\\n * @param level - level of the upgrade\\n * @returns The calculated hash cost.\\n */\\n hashUpgradeCost(upgName: number, level: number): number;\\n /**\\n * Calculate the cost of a hacknet server.\\n * @param n - number of the hacknet server\\n * @param mult - player cost reduction (defaults to 1)\\n * @returns The calculated cost.\\n */\\n hacknetServerCost(n: number, mult?: number): number;\\n /**\\n * All constants used by the game.\\n * @returns An object with all hacknet server constants used by the game.\\n */\\n constants(): HacknetServerConstants;\\n}\\n\\n/**\\n * Gang formulas\\n * @public\\n */\\ninterface GangFormulas {\\n /**\\n * Calculate the wanted penalty.\\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\\n * @returns The calculated wanted penalty.\\n */\\n wantedPenalty(gang: GangGenInfo): number;\\n /**\\n * Calculate respect gain per tick.\\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\\n * @param member - Gang info from {@link Gang.getMemberInformation | getMemberInformation}\\n * @param task - Gang info from {@link Gang.getTaskStats | getTaskStats}\\n * @returns The calculated respect gain.\\n */\\n respectGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\\n /**\\n * Calculate wanted gain per tick.\\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\\n * @returns The calculated wanted gain.\\n */\\n wantedLevelGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\\n /**\\n * Calculate money gain per tick.\\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\\n * @returns The calculated money gain.\\n */\\n moneyGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\\n\\n /**\\n * Calculate ascension point gain.\\n * @param exp - Experience point before ascension.\\n * @returns The calculated ascension point gain.\\n */\\n ascensionPointsGain(exp: number): number;\\n\\n /**\\n * Calculate ascension mult.\\n * @param points - Amount of ascension points.\\n * @returns The calculated ascension mult.\\n */\\n ascensionMultiplier(points: number): number;\\n}\\n\\n/**\\n * Formulas API\\n * @remarks\\n * You need Formulas.exe on your home computer to use this API.\\n * @public\\n */\\nexport interface Formulas {\\n mockServer(): Server;\\n mockPlayer(): Player;\\n mockPerson(): Person;\\n /** Reputation formulas */\\n reputation: ReputationFormulas;\\n /** Skills formulas */\\n skills: SkillsFormulas;\\n /** Hacking formulas */\\n hacking: HackingFormulas;\\n /** Hacknet Nodes formulas */\\n hacknetNodes: HacknetNodesFormulas;\\n /** Hacknet Servers formulas */\\n hacknetServers: HacknetServersFormulas;\\n /** Gang formulas */\\n gang: GangFormulas;\\n /** Work formulas */\\n work: WorkFormulas;\\n}\\n\\n/** @public */\\ninterface Fragment {\\n id: number;\\n shape: boolean[][];\\n type: number;\\n power: number;\\n limit: number;\\n}\\n\\n/** @public */\\ninterface ActiveFragment {\\n id: number;\\n highestCharge: number;\\n numCharge: number;\\n rotation: number;\\n x: number;\\n y: number;\\n}\\n\\n/**\\n * Stanek's Gift API.\\n * @public\\n */\\ninterface Stanek {\\n /**\\n * Stanek's Gift width.\\n * @remarks\\n * RAM cost: 0.4 GB\\n * @returns The width of the gift.\\n */\\n giftWidth(): number;\\n /**\\n * Stanek's Gift height.\\n * @remarks\\n * RAM cost: 0.4 GB\\n * @returns The height of the gift.\\n */\\n giftHeight(): number;\\n\\n /**\\n * Charge a fragment, increasing its power.\\n * @remarks\\n * RAM cost: 0.4 GB\\n * @param rootX - rootX Root X against which to align the top left of the fragment.\\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\\n * @returns Promise that lasts until the charge action is over.\\n */\\n chargeFragment(rootX: number, rootY: number): Promise;\\n\\n /**\\n * List possible fragments.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns List of possible fragments.\\n */\\n fragmentDefinitions(): Fragment[];\\n\\n /**\\n * List of fragments in Stanek's Gift.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * @returns List of active fragments placed on Stanek's Gift.\\n */\\n activeFragments(): ActiveFragment[];\\n\\n /**\\n * Clear the board of all fragments.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n clearGift(): void;\\n\\n /**\\n * Check if fragment can be placed at specified location.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * @param rootX - rootX Root X against which to align the top left of the fragment.\\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\\n * @param rotation - rotation A number from 0 to 3, the mount of 90 degree turn to take.\\n * @param fragmentId - fragmentId ID of the fragment to place.\\n * @returns true if the fragment can be placed at that position. false otherwise.\\n */\\n canPlaceFragment(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\\n /**\\n * Place fragment on Stanek's Gift.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * @param rootX - X against which to align the top left of the fragment.\\n * @param rootY - Y against which to align the top left of the fragment.\\n * @param rotation - A number from 0 to 3, the mount of 90 degree turn to take.\\n * @param fragmentId - ID of the fragment to place.\\n * @returns true if the fragment can be placed at that position. false otherwise.\\n */\\n placeFragment(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\\n /**\\n * Get placed fragment at location.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * @param rootX - X against which to align the top left of the fragment.\\n * @param rootY - Y against which to align the top left of the fragment.\\n * @returns The fragment at [rootX, rootY], if any.\\n */\\n getFragment(rootX: number, rootY: number): ActiveFragment | undefined;\\n\\n /**\\n * Remove fragment at location.\\n * @remarks\\n * RAM cost: 0.15 GB\\n *\\n * @param rootX - X against which to align the top left of the fragment.\\n * @param rootY - Y against which to align the top left of the fragment.\\n * @returns The fragment at [rootX, rootY], if any.\\n */\\n removeFragment(rootX: number, rootY: number): boolean;\\n\\n /**\\n * Accept Stanek's Gift by joining the Church of the Machine God\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * @returns true if the player is a member of the church and has the gift installed,\\n * false otherwise.\\n */\\n acceptGift(): boolean;\\n}\\n\\n/** @public */\\ninterface InfiltrationReward {\\n tradeRep: number;\\n sellCash: number;\\n SoARep: number;\\n}\\n\\n/** @public */\\ninterface ILocation {\\n city: CityName;\\n name: LocationName;\\n}\\n\\n/** @public */\\ninterface InfiltrationLocation {\\n location: ILocation;\\n reward: InfiltrationReward;\\n difficulty: number;\\n}\\n\\n/**\\n * Infiltration API.\\n * @public\\n */\\ninterface Infiltration {\\n /**\\n * Get all locations that can be infiltrated.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * @returns all locations that can be infiltrated.\\n */\\n getPossibleLocations(): ILocation[];\\n /**\\n * Get all infiltrations with difficulty, location and rewards.\\n * @remarks\\n * RAM cost: 15 GB\\n *\\n * @returns Infiltration data for given location.\\n */\\n getInfiltration(location: string): InfiltrationLocation;\\n}\\n\\n/**\\n * User Interface API.\\n * @public\\n */\\ninterface UserInterface {\\n /**\\n * Get the current window size\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns An array of 2 value containing the window width and height.\\n */\\n windowSize(): [number, number];\\n\\n /**\\n * Get the current theme\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns An object containing the theme's colors\\n */\\n getTheme(): UserInterfaceTheme;\\n\\n /**\\n * Sets the current theme\\n * @remarks\\n * RAM cost: 0 GB\\n * @example\\n * Usage example (NS2)\\n * ```ts\\n * const theme = ns.ui.getTheme();\\n * theme.primary = '#ff5500';\\n * ns.ui.setTheme(theme);\\n * ```\\n */\\n setTheme(newTheme: UserInterfaceTheme): void;\\n\\n /**\\n * Resets the player's theme to the default values\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n resetTheme(): void;\\n\\n /**\\n * Get the current styles\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns An object containing the player's styles\\n */\\n getStyles(): IStyleSettings;\\n\\n /**\\n * Sets the current styles\\n * @remarks\\n * RAM cost: 0 GB\\n * @example\\n * Usage example (NS2)\\n * ```ts\\n * const styles = ns.ui.getStyles();\\n * styles.fontFamily = 'Comic Sans Ms';\\n * ns.ui.setStyles(styles);\\n * ```\\n */\\n setStyles(newStyles: IStyleSettings): void;\\n\\n /**\\n * Resets the player's styles to the default values\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n resetStyles(): void;\\n\\n /**\\n * Gets the current game information (version, commit, ...)\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n getGameInfo(): GameInfo;\\n\\n /**\\n * Clear the Terminal window, as if the player ran `clear` in the terminal\\n * @remarks\\n * RAM cost: 0.2 GB\\n */\\n clearTerminal(): void;\\n}\\n\\n/**\\n * Collection of all functions passed to scripts\\n * @public\\n * @remarks\\n * Basic usage example:\\n * ```js\\n * export async function main(ns) {\\n * // Basic ns functions can be accessed on the ns object\\n * ns.getHostname();\\n * // Some related functions are gathered under a sub-property of the ns object\\n * ns.stock.getPrice();\\n * // Most functions that return a promise need to be awaited.\\n * await ns.hack('n00dles');\\n * }\\n * ```\\n */\\nexport interface NS {\\n /**\\n * Namespace for hacknet functions. Some of this API contains spoilers.\\n * @remarks RAM cost: 4 GB.\\n */\\n readonly hacknet: Hacknet;\\n\\n /**\\n * Namespace for bladeburner functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly bladeburner: Bladeburner;\\n\\n /**\\n * Namespace for codingcontract functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly codingcontract: CodingContract;\\n\\n /**\\n * Namespace for gang functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly gang: Gang;\\n\\n /**\\n * Namespace for sleeve functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly sleeve: Sleeve;\\n\\n /**\\n * Namespace for stock functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly stock: TIX;\\n\\n /**\\n * Namespace for formulas functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly formulas: Formulas;\\n\\n /**\\n * Namespace for stanek functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly stanek: Stanek;\\n\\n /**\\n * Namespace for infiltration functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly infiltration: Infiltration;\\n\\n /**\\n * Namespace for corporation functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly corporation: Corporation;\\n\\n /**\\n * Namespace for user interface functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly ui: UserInterface;\\n\\n /**\\n * Namespace for singularity functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly singularity: Singularity;\\n\\n /**\\n * Namespace for grafting functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly grafting: Grafting;\\n\\n /**\\n * Arguments passed into the script.\\n *\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Arguments passed into a script can be accessed as a normal array by using the `[]` operator\\n * (`args[0]`, `args[1]`, etc...).\\n * Arguments can be string, number, or boolean.\\n * Use `args.length` to get the number of arguments that were passed into a script.\\n *\\n * @example\\n * `run example.js 7 text true`\\n *\\n * ```js\\n * // example.js\\n * export async function main(ns) {\\n * ns.tprint(ns.args.length) // 3\\n * ns.tprint(ns.args[0]); // 7 (number)\\n * ns.tprint(ns.args[1]); // \\\"text\\\" (string)\\n * ns.tprint(ns.args[2]); // true (boolean)\\n * ns.tprint(ns.args[3]); // undefined, because only 3 arguments were provided\\n * }\\n * ```\\n */\\n readonly args: (string | number | boolean)[];\\n\\n /** The current script's PID */\\n readonly pid: number;\\n\\n /**\\n * Steal a server's money.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Function that is used to try and hack servers to steal money and gain hacking experience.\\n * The runtime for this command depends on your hacking level and the target server’s\\n * security level when this function is called. In order to hack a server you must first gain root access to that server\\n * and also have the required hacking level.\\n *\\n * A script can hack a server from anywhere. It does not need to be running on the same\\n * server to hack that server. For example, you can create a script that hacks the `foodnstuff`\\n * server and run that script on any server in the game.\\n *\\n * A successful `hack()` on a server will raise that server’s security level by 0.002.\\n *\\n * @example\\n * ```js\\n * let earnedMoney = await ns.hack(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server to hack.\\n * @param opts - Optional parameters for configuring function behavior.\\n * @returns A promise that resolves to the amount of money stolen (which is zero if the hack is unsuccessful).\\n */\\n hack(host: string, opts?: BasicHGWOptions): Promise;\\n\\n /**\\n * Spoof money in a server's bank account, increasing the amount available.\\n * @remarks\\n * RAM cost: 0.15 GB\\n *\\n * Use your hacking skills to increase the amount of money available on a server.\\n *\\n * Once the grow is complete, $1 is added to the server's available money for every script thread. This additive\\n * growth allows for rescuing a server even after it is emptied.\\n *\\n * After this addition, the thread count is also used to determine a multiplier, which the server's money is then\\n * multiplied by.\\n *\\n * The multiplier scales exponentially with thread count, and its base depends on the server's security\\n * level and in inherent \\\"growth\\\" statistic that varies between different servers.\\n *\\n * {@link NS.getServerGrowth | getServerGrowth} can be used to check the inherent growth statistic of a server.\\n *\\n * {@link NS.growthAnalyze | growthAnalyze} can be used to determine the number of threads needed for a specified\\n * multiplicative portion of server growth.\\n *\\n * To determine the effect of a single grow, obtain access to the Formulas API and use\\n * {@link HackingFormulas.growPercent | formulas.hacking.growPercent}, or invert {@link NS.growthAnalyze | growthAnalyze}.\\n *\\n * Like {@link NS.hack | hack}, `grow` can be called on any hackable server, regardless of where the script is\\n * running. Hackable servers are any servers not owned by the player.\\n *\\n * The grow() command requires root access to the target server, but there is no required hacking\\n * level to run the command. It also raises the security level of the target server based on the number of threads.\\n * The security increase can be determined using {@link NS.growthAnalyzeSecurity | growthAnalyzeSecurity}.\\n *\\n * @example\\n * ```js\\n * let currentMoney = ns.getServerMoneyAvailable(\\\"n00dles\\\");\\n * currentMoney *= await ns.grow(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server to grow.\\n * @param opts - Optional parameters for configuring function behavior.\\n * @returns The total effective multiplier that was applied to the server's money (after both additive and multiplicative growth).\\n */\\n grow(host: string, opts?: BasicHGWOptions): Promise;\\n\\n /**\\n * Reduce a server's security level.\\n * @remarks\\n * RAM cost: 0.15 GB\\n *\\n * Use your hacking skills to attack a server’s security, lowering the server’s security level.\\n * The runtime for this function depends on your hacking level and the target server’s security\\n * level when this function is called. This function lowers the security level of the target server by 0.05.\\n *\\n * Like {@link NS.hack | hack} and {@link NS.grow| grow}, `weaken` can be called on any server, regardless of\\n * where the script is running. This function requires root access to the target server, but\\n * there is no required hacking level to run the function.\\n *\\n * @example\\n * ```js\\n * let currentSecurity = ns.getServerSecurityLevel(\\\"foodnstuff\\\");\\n * currentSecurity -= await ns.weaken(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server to weaken.\\n * @param opts - Optional parameters for configuring function behavior.\\n * @returns A promise that resolves to the value by which security was reduced.\\n */\\n weaken(host: string, opts?: BasicHGWOptions): Promise;\\n\\n /**\\n * Predict the effect of weaken.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the security decrease that would occur if a weaken with this many threads happened.\\n *\\n * @param threads - Amount of threads that will be used.\\n * @param cores - Optional. The number of cores of the server that would run weaken.\\n * @returns The security decrease.\\n */\\n weakenAnalyze(threads: number, cores?: number): number;\\n\\n /**\\n * Calculate the decimal number of threads needed to hack a specified amount of money from a target host.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * This function returns the decimal number of script threads you need when running the hack command\\n * to steal the specified amount of money from the target server.\\n * If hackAmount is less than zero or greater than the amount of money available on the server,\\n * then this function returns -1.\\n *\\n *\\n * @example\\n * ```ts\\n * // Calculate threadcount of a single hack that would take $100k from n00dles\\n * const hackThreads = hackAnalyzeThreads(\\\"n00dles\\\", 1e5);\\n *\\n * // Launching a script requires an integer thread count. The below would take less than the targeted $100k.\\n * ns.run(\\\"noodleHack.js\\\", Math.floor(hackThreads))\\n *\\n * ```\\n * @param host - Hostname of the target server to analyze.\\n * @param hackAmount - Amount of money you want to hack from the server.\\n * @returns The number of threads needed to hack the server for hackAmount money.\\n */\\n hackAnalyzeThreads(host: string, hackAmount: number): number;\\n\\n /**\\n * Get the part of money stolen with a single thread.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the part of the specified server’s money you will steal with a single thread hack.\\n *\\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.hackPercent | formulas.hacking.hackPercent}.\\n *\\n * @example\\n * ```js\\n * //For example, assume the following returns 0.01:\\n * const hackAmount = ns.hackAnalyze(\\\"foodnstuff\\\");\\n * //This means that if hack the foodnstuff server using a single thread, then you will steal 1%, or 0.01 of its total money. If you hack using N threads, then you will steal N*0.01 times its total money.\\n * ```\\n * @param host - Hostname of the target server.\\n * @returns The part of money you will steal from the target server with a single thread hack.\\n */\\n hackAnalyze(host: string): number;\\n\\n /**\\n * Get the security increase for a number of threads.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the security increase that would occur if a hack with this many threads happened.\\n *\\n * @param threads - Amount of threads that will be used.\\n * @param hostname - Hostname of the target server. The number of threads is limited to the number needed to hack the server's maximum amount of money.\\n * @returns The security increase.\\n */\\n hackAnalyzeSecurity(threads: number, hostname?: string): number;\\n\\n /**\\n * Get the chance of successfully hacking a server.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the chance you have of successfully hacking the specified server.\\n *\\n * This returned value is in decimal form, not percentage.\\n *\\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.hackChance | formulas.hacking.hackChance}.\\n *\\n * @param host - Hostname of the target server.\\n * @returns The chance you have of successfully hacking the target server.\\n */\\n hackAnalyzeChance(host: string): number;\\n\\n /**\\n * Calculate the number of grow threads needed for a given multiplicative growth factor.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * This function returns the total decimal number of {@link NS.grow | grow} threads needed in order to multiply the\\n * money available on the specified server by a given multiplier, if all threads are executed at the server's current\\n * security level, regardless of how many threads are assigned to each call.\\n *\\n * Note that there is also an additive factor that is applied before the multiplier. Each {@link NS.grow | grow} call\\n * will add $1 to the host's money for each thread before applying the multiplier for its thread count. This means\\n * that at extremely low starting money, fewer threads would be needed to apply the same effective multiplier than\\n * what is calculated by growthAnalyze.\\n *\\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.growThreads | formulas.hacking.growThreads}.\\n *\\n * @example\\n * ```js\\n * // calculate number of grow threads to apply 2x growth multiplier on n00dles (does not include the additive growth).\\n * const growThreads = ns.growthAnalyze(\\\"n00dles\\\", 2);\\n *\\n * // When using the thread count to launch a script, it needs to be converted to an integer.\\n * ns.run(\\\"noodleGrow.js\\\", Math.ceil(growThreads));\\n * ```\\n * @param host - Hostname of the target server.\\n * @param multiplier - Multiplier that will be applied to a server's money after applying additive growth. Decimal form.\\n * @param cores - Number of cores on the host running the grow function. Optional, defaults to 1.\\n * @returns Decimal number of grow threads needed for the specified multiplicative growth factor (does not include additive growth).\\n */\\n growthAnalyze(host: string, multiplier: number, cores?: number): number;\\n\\n /**\\n * Calculate the security increase for a number of grow threads.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the security increase that would occur if a grow with this many threads happened.\\n *\\n * @param threads - Amount of threads that will be used.\\n * @param hostname - Optional. Hostname of the target server. If provided, security increase is limited by the number of threads needed to reach maximum money.\\n * @param cores - Optional. The number of cores of the server that would run grow.\\n * @returns The security increase.\\n */\\n growthAnalyzeSecurity(threads: number, hostname?: string, cores?: number): number;\\n\\n /**\\n * Suspends the script for n milliseconds.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param millis - Number of milliseconds to sleep.\\n * @example\\n * ```js\\n * // This will count from 1 to 10 in your terminal, with one number every 5 seconds\\n * for (var i = 1; i <= 10; i++) {\\n * ns.tprint(i);\\n * await ns.sleep(5000);\\n * }\\n * ```\\n * @returns A promise that resolves to true when the sleep is completed.\\n */\\n sleep(millis: number): Promise;\\n\\n /**\\n * Suspends the script for n milliseconds. Doesn't block with concurrent calls.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param millis - Number of milliseconds to sleep.\\n * @returns A promise that resolves to true when the sleep is completed.\\n */\\n asleep(millis: number): Promise;\\n\\n /**\\n * Prints one or more values or variables to the script’s logs.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * If the argument is a string, you can color code your message by prefixing your\\n * string with one of these strings:\\n *\\n * - `\\\"ERROR\\\"`: The whole string will be printed in red. Use this prefix to indicate\\n * that an error has occurred.\\n *\\n * - `\\\"SUCCESS\\\"`: The whole string will be printed in green, similar to the default\\n * theme of the Terminal. Use this prefix to indicate that something is correct.\\n *\\n * - `\\\"WARN\\\"`: The whole string will be printed in yellow. Use this prefix to\\n * indicate that you or a user of your script should be careful of something.\\n *\\n * - `\\\"INFO\\\"`: The whole string will be printed in purplish blue. Use this prefix to\\n * remind yourself or a user of your script of something. Think of this prefix as\\n * indicating an FYI (for your information).\\n *\\n * For custom coloring, use ANSI escape sequences. The examples below use the Unicode\\n * escape code `\\\\u001b`. The color coding also works if `\\\\u001b` is replaced with\\n * the hexadecimal escape code `\\\\x1b`. The Bash escape code `\\\\e` is not supported.\\n * The octal escape code `\\\\033` is not allowed because the game runs JavaScript in\\n * strict mode.\\n *\\n * @example\\n * ```js\\n * // Default color coding.\\n * ns.print(\\\"ERROR means something's wrong.\\\");\\n * ns.print(\\\"SUCCESS means everything's OK.\\\");\\n * ns.print(\\\"WARN Tread with caution!\\\");\\n * ns.print(\\\"WARNING, warning, danger, danger!\\\");\\n * ns.print(\\\"WARNing! Here be dragons.\\\");\\n * ns.print(\\\"INFO for your I's only (FYI).\\\");\\n * ns.print(\\\"INFOrmation overload!\\\");\\n * // Custom color coding.\\n * const cyan = \\\"\\\\u001b[36m\\\";\\n * const green = \\\"\\\\u001b[32m\\\";\\n * const red = \\\"\\\\u001b[31m\\\";\\n * const reset = \\\"\\\\u001b[0m\\\";\\n * ns.print(`${red}Ugh! What a mess.${reset}`);\\n * ns.print(`${green}Well done!${reset}`);\\n * ns.print(`${cyan}ERROR Should this be in red?${reset}`);\\n * ns.tail();\\n * ```\\n *\\n * @param args - Value(s) to be printed.\\n */\\n print(...args: any[]): void;\\n\\n /** Prints a ReactNode to the script logs.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * See {@link ReactNode} type for the acceptable values.\\n *\\n * @param node - The react node to be printed. */\\n printRaw(node: ReactNode): void;\\n\\n /**\\n * Prints a formatted string to the script’s logs.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * - See {@link NS.print | print} for how to add color to your printed strings.\\n *\\n * - For more detail, see: https://github.com/alexei/sprintf.js\\n *\\n * @example\\n * ```js\\n * const name = \\\"Bit\\\";\\n * const age = 4;\\n * ns.printf(\\\"My name is %s.\\\", name);\\n * ns.printf(\\\"I'm %d seconds old.\\\", age);\\n * ns.printf(\\\"My age in binary is %b.\\\", age);\\n * ns.printf(\\\"My age in scientific notation is %e.\\\", age);\\n * ns.printf(\\\"In %d seconds, I'll be %s.\\\", 6, \\\"Byte\\\");\\n * ns.printf(\\\"Am I a nibble? %t\\\", (4 == age));\\n * ns.tail();\\n * ```\\n *\\n * @param format - Format of the message.\\n * @param args - Value(s) to be printed.\\n */\\n printf(format: string, ...args: any[]): void;\\n\\n /**\\n * Prints one or more values or variables to the Terminal.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * See {@link NS.print | print} for how to add color to your printed strings.\\n *\\n * @param args - Value(s) to be printed.\\n */\\n tprint(...args: any[]): void;\\n\\n /** Prints a ReactNode to the terminal.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * See {@link ReactNode} type for the acceptable values.\\n *\\n * @param node - The react node to be printed. */\\n tprintRaw(node: ReactNode): void;\\n\\n /**\\n * Prints a raw value or a variable to the Terminal.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * - See {@link NS.print | print} for how to add color to your printed strings.\\n *\\n * - See {@link NS.printf | printf} for examples on formatted strings.\\n *\\n * - For more detail, see: https://github.com/alexei/sprintf.js\\n *\\n * @param format - Format of the message.\\n * @param values - Value(s) to be printed.\\n */\\n tprintf(format: string, ...values: any[]): void;\\n\\n /**\\n * Clears the script’s logs.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n clearLog(): void;\\n\\n /**\\n * Disables logging for the given function.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Logging can be disabled for all functions by passing `ALL` as the argument.\\n *\\n * @param fn - Name of function for which to disable logging.\\n */\\n disableLog(fn: string): void;\\n\\n /**\\n * Enable logging for a certain function.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Re-enables logging for the given function. If `ALL` is passed into this\\n * function as an argument, then it will revert the effects of disableLog(`ALL`).\\n *\\n * @param fn - Name of function for which to enable logging.\\n */\\n enableLog(fn: string): void;\\n\\n /**\\n * Checks the status of the logging for the given function.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param fn - Name of function to check.\\n * @returns Returns a boolean indicating whether or not logging is enabled for that function (or `ALL`).\\n */\\n isLogEnabled(fn: string): boolean;\\n\\n /**\\n * Get all the logs of a script.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns a script’s logs. The logs are returned as an array, where each line is an element in the array.\\n * The most recently logged line is at the end of the array.\\n * Note that there is a maximum number of lines that a script stores in its logs. This is configurable in the game’s options.\\n * If the function is called with no arguments, it will return the current script’s logs.\\n *\\n * Otherwise, the fn, hostname/ip, and args… arguments can be used to get the logs from another script.\\n * Remember that scripts are uniquely identified by both their names and arguments.\\n *\\n * @example\\n * ```js\\n * //Get logs from foo.js on the current server that was run with no args\\n * ns.getScriptLogs(\\\"foo.js\\\");\\n *\\n * //Open logs from foo.js on the foodnstuff server that was run with no args\\n * ns.getScriptLogs(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * //Open logs from foo.js on the foodnstuff server that was run with the arguments [1, \\\"test\\\"]\\n * ns.getScriptLogs(\\\"foo.js\\\", \\\"foodnstuff\\\", 1, \\\"test\\\");\\n * ```\\n * @param fn - Optional. Filename of script to get logs from.\\n * @param host - Optional. Hostname of the server that the script is on.\\n * @param args - Arguments to identify which scripts to get logs for.\\n * @returns Returns a string array, where each line is an element in the array. The most recently logged line is at the end of the array.\\n */\\n getScriptLogs(fn?: string, host?: string, ...args: (string | number | boolean)[]): string[];\\n\\n /**\\n * Get an array of recently killed scripts across all servers.\\n * @remarks\\n * RAM cost: 0.2 GB\\n *\\n * The most recently killed script is the first element in the array.\\n * Note that there is a maximum number of recently killed scripts which are tracked.\\n * This is configurable in the game's options as `Recently killed scripts size`.\\n *\\n * @example\\n * ```ts\\n * let recentScripts = ns.getRecentScripts();\\n * let mostRecent = recentScripts.shift()\\n * if (mostRecent)\\n * ns.tprint(mostRecent.logs.join('\\\\n'))\\n * ```\\n *\\n * @returns Array with information about previously killed scripts.\\n */\\n getRecentScripts(): RecentScript[];\\n\\n /**\\n * Open the tail window of a script.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Opens a script’s logs. This is functionally the same as the tail Terminal command.\\n *\\n * If the function is called with no arguments, it will open the current script’s logs.\\n *\\n * Otherwise, the fn, hostname/ip, and args… arguments can be used to get the logs from another script.\\n * Remember that scripts are uniquely identified by both their names and arguments.\\n *\\n * @example\\n * ```js\\n * //Open logs from foo.js on the current server that was run with no args\\n * ns.tail(\\\"foo.js\\\");\\n *\\n * //Get logs from foo.js on the foodnstuff server that was run with no args\\n * ns.tail(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * //Get logs from foo.js on the foodnstuff server that was run with the arguments [1, \\\"test\\\"]\\n * ns.tail(\\\"foo.js\\\", \\\"foodnstuff\\\", 1, \\\"test\\\");\\n * ```\\n * @param fn - Optional. Filename or PID of the script being tailed. If omitted, the current script is tailed.\\n * @param host - Optional. Hostname of the script being tailed. Defaults to the server this script is running on. If args are specified, this is not optional.\\n * @param args - Arguments for the script being tailed.\\n */\\n tail(fn?: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): void;\\n\\n /**\\n * Move a tail window.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Moves a tail window. Coordinates are in screenspace pixels (top left is 0,0).\\n *\\n * @param x - x coordinate.\\n * @param y - y coordinate.\\n * @param pid - Optional. PID of the script having its tail moved. If omitted, the current script is used.\\n */\\n moveTail(x: number, y: number, pid?: number): void;\\n\\n /**\\n * Resize a tail window.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Resize a tail window. Size are in pixel.\\n *\\n * @param width - Width of the window.\\n * @param height - Height of the window.\\n * @param pid - Optional. PID of the script having its tail resized. If omitted, the current script is used.\\n */\\n resizeTail(width: number, height: number, pid?: number): void;\\n\\n /**\\n * Close the tail window of a script.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Closes a script’s logs. This is functionally the same as pressing the \\\"Close\\\" button on the tail window.\\n *\\n * If the function is called with no arguments, it will close the current script’s logs.\\n *\\n * Otherwise, the pid argument can be used to close the logs from another script.\\n *\\n * @param pid - Optional. PID of the script having its tail closed. If omitted, the current script is used.\\n */\\n closeTail(pid?: number): void;\\n\\n /**\\n * Set the title of the tail window of a script.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This sets the title to the given string, and also forces an update of the\\n * tail window's contents.\\n *\\n * The title is saved across restarts, but only if it is a simple string.\\n *\\n * If the pid is unspecified, it will modify the current script’s logs.\\n *\\n * Otherwise, the pid argument can be used to change the logs from another script.\\n *\\n * It is possible to pass any React Node instead of a string.\\n * See {@link ReactElement} and {@link ReactNode} types for additional info.\\n *\\n * @param pid - Optional. PID of the script having its tail closed. If omitted, the current script is used.\\n */\\n setTitle(title: string | ReactNode, pid?: number): void;\\n\\n /**\\n * Get the list of servers connected to a server.\\n * @remarks\\n * RAM cost: 0.2 GB\\n *\\n * Returns an array containing the hostnames of all servers that are one\\n * node way from the specified target server. The hostnames in the returned\\n * array are strings.\\n *\\n * @example\\n * ```js\\n * // All servers that are one hop from the current server.\\n * ns.tprint(\\\"Neighbors of current server.\\\");\\n * let neighbor = ns.scan();\\n * for (let i = 0; i < neighbor.length; i++) {\\n * ns.tprint(neighbor[i]);\\n * }\\n * // All neighbors of n00dles.\\n * const target = \\\"n00dles\\\";\\n * neighbor = ns.scan(target);\\n * ns.tprintf(\\\"Neighbors of %s.\\\", target);\\n * for (let i = 0; i < neighbor.length; i++) {\\n * ns.tprint(neighbor[i]);\\n * }\\n * ```\\n *\\n * @param host - Optional. Hostname of the server to scan, default to current server.\\n * @returns Returns an array of hostnames.\\n */\\n scan(host?: string): string[];\\n\\n /** Returns whether the player has access to the darkweb.\\n * @remarks\\n * RAM cost: 0.05GB\\n *\\n * @example\\n * ```js\\n * if (ns.hasTorRouter()) ns.tprint(\\\"TOR router detected.\\\");\\n * ```\\n *\\n * @returns Whether player has access to the dark web. */\\n hasTorRouter(): boolean;\\n\\n /**\\n * Runs NUKE.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Running NUKE.exe on a target server gives you root access which means you can execute scripts on said server. NUKE.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.nuke(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n nuke(host: string): void;\\n\\n /**\\n * Runs BruteSSH.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the BruteSSH.exe program on the target server. BruteSSH.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.brutessh(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n brutessh(host: string): void;\\n\\n /**\\n * Runs FTPCrack.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the FTPCrack.exe program on the target server. FTPCrack.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.ftpcrack(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n ftpcrack(host: string): void;\\n\\n /**\\n * Runs relaySMTP.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the relaySMTP.exe program on the target server. relaySMTP.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.relaysmtp(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n relaysmtp(host: string): void;\\n\\n /**\\n * Runs HTTPWorm.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the HTTPWorm.exe program on the target server. HTTPWorm.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.httpworm(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n httpworm(host: string): void;\\n\\n /**\\n * Runs SQLInject.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the SQLInject.exe program on the target server. SQLInject.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.sqlinject(\\\"foodnstuff\\\");\\n * ```\\n * @remarks RAM cost: 0.05 GB\\n * @param host - Hostname of the target server.\\n */\\n sqlinject(host: string): void;\\n\\n /**\\n * Start another script on the current server.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Run a script as a separate process. This function can only be used to run scripts located on the\\n * current server (the server running the script that calls this function). Requires a significant\\n * amount of RAM to run this command.\\n *\\n * The second argument is either a thread count, or a {@link RunOptions} object that can also\\n * specify the number of threads (among other things).\\n *\\n * If the script was successfully started, then this functions returns the PID of that script.\\n * Otherwise, it returns 0.\\n *\\n * PID stands for Process ID. The PID is a unique identifier for each script.\\n * The PID will always be a positive integer.\\n *\\n * Running this function with 0 or fewer threads will cause a runtime error.\\n *\\n * @example\\n * ```js\\n * //The simplest way to use the run command is to call it with just the script name. The following example will run ‘foo.js’ single-threaded with no arguments:\\n * ns.run(\\\"foo.js\\\");\\n *\\n * //The following example will run ‘foo.js’ but with 5 threads instead of single-threaded:\\n * ns.run(\\\"foo.js\\\", {threads: 5});\\n *\\n * //This next example will run ‘foo.js’ single-threaded, and will pass the string ‘foodnstuff’ into the script as an argument:\\n * ns.run(\\\"foo.js\\\", 1, 'foodnstuff');\\n * ```\\n * @param script - Filename of script to run.\\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the second argument threadOrOptions must be filled in with a value.\\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\\n */\\n run(script: string, threadOrOptions?: number | RunOptions, ...args: (string | number | boolean)[]): number;\\n\\n /**\\n * Start another script on any server.\\n * @remarks\\n * RAM cost: 1.3 GB\\n *\\n * Run a script as a separate process on a specified server. This is similar to the function {@link NS.run | run}\\n * except that it can be used to run a script that already exists on any server, instead of just the current server.\\n *\\n * If the script was successfully started, then this function returns the PID of that script.\\n * Otherwise, it returns 0.\\n *\\n * PID stands for Process ID. The PID is a unique identifier for each script.\\n * The PID will always be a positive integer.\\n *\\n * Running this function with 0 or fewer threads will cause a runtime error.\\n *\\n * @example\\n * ```js\\n * // The simplest way to use the exec command is to call it with just the script name\\n * // and the target server. The following example will try to run generic-hack.js\\n * // on the foodnstuff server.\\n * ns.exec(\\\"generic-hack.js\\\", \\\"foodnstuff\\\");\\n *\\n * // The following example will try to run the script generic-hack.js on the\\n * // joesguns server with 10 threads.\\n * ns.exec(\\\"generic-hack.js\\\", \\\"joesguns\\\", {threads: 10});\\n *\\n * // This last example will try to run the script foo.js on the foodnstuff server\\n * // with 5 threads. It will also pass the number 1 and the string “test” in as\\n * // arguments to the script.\\n * ns.exec(\\\"foo.js\\\", \\\"foodnstuff\\\", 5, 1, \\\"test\\\");\\n * ```\\n * @param script - Filename of script to execute. This file must already exist on the target server.\\n * @param hostname - Hostname of the `target server` on which to execute the script.\\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the third argument threadOrOptions must be filled in with a value.\\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\\n */\\n exec(\\n script: string,\\n hostname: string,\\n threadOrOptions?: number | RunOptions,\\n ...args: (string | number | boolean)[]\\n ): number;\\n\\n /**\\n * Terminate current script and start another in 10 seconds.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Terminates the current script, and then after a delay of about 10 seconds it will execute the\\n * newly-specified script. The purpose of this function is to execute a new script without being\\n * constrained by the RAM usage of the current one. This function can only be used to run scripts\\n * on the local server.\\n *\\n * Because this function immediately terminates the script, it does not have a return value.\\n *\\n * Running this function with 0 or fewer threads will cause a runtime error.\\n *\\n * @example\\n * ```js\\n * //The following example will execute the script ‘foo.js’ with 10 threads and the arguments ‘foodnstuff’ and 90:\\n * ns.spawn('foo.js', 10, 'foodnstuff', 90);\\n * ```\\n * @param script - Filename of script to execute.\\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\\n * @param args - Additional arguments to pass into the new script that is being run.\\n */\\n spawn(script: string, threadOrOptions?: number | RunOptions, ...args: (string | number | boolean)[]): void;\\n\\n /**\\n * Terminate the script with the provided PID.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * Kills the script with the provided PID.\\n * To instead kill a script using its filename, hostname, and args, see {@link NS.(kill:2) | the other ns.kill entry}.\\n *\\n * @example\\n * ```js\\n * // kills the script with PID 20:\\n * ns.kill(20);\\n * ```\\n *\\n * @param pid - The PID of the script to kill.\\n * @returns True if the script is successfully killed, and false otherwise.\\n */\\n kill(pid: number): boolean;\\n\\n /**\\n * Terminate the script(s) with the provided filename, hostname, and script arguments.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * Kills the script(s) with the provided filename, running on the specified host with the specified args.\\n * To instead kill a script using its PID, see {@link NS.(kill:1) | the other ns.kill entry}.\\n *\\n * @example\\n * ```js\\n * // kill the script \\\"foo.js\\\" on the same server the current script is running from, with no arguments\\n * ns.kill(\\\"foo.js\\\");\\n *\\n * // kill the script \\\"foo.js\\\" on the \\\"n00dles\\\" server with no arguments.\\n * ns.kill(\\\"foo.js\\\", \\\"n00dles\\\");\\n *\\n * // kill the script foo.js on the current server that was ran with the arguments [1, “foodnstuff”, false]:\\n * ns.kill(\\\"foo.js\\\", ns.getHostname(), 1, \\\"foodnstuff\\\", false);\\n * ```\\n * @param filename - Filename of the script to kill.\\n * @param hostname - Hostname where the script to kill is running. Defaults to the current server.\\n * @param args - Arguments of the script to kill.\\n * @returns True if the scripts were successfully killed, and false otherwise.\\n */\\n kill(filename: string, hostname?: string, ...args: ScriptArg[]): boolean;\\n\\n /**\\n * Terminate all scripts on a server.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * Kills all running scripts on the specified server. This function returns true\\n * if any scripts were killed, and false otherwise. In other words, it will return\\n * true if there are any scripts running on the target server.\\n * If no host is defined, it will kill all scripts, where the script is running.\\n *\\n * @param host - IP or hostname of the server on which to kill all scripts.\\n * @param safetyguard - Skips the script that calls this function\\n * @returns True if any scripts were killed, and false otherwise.\\n */\\n killall(host?: string, safetyguard?: boolean): boolean;\\n\\n /**\\n * Terminates the current script immediately.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n exit(): never;\\n\\n /**\\n * Copy file between servers.\\n * @remarks\\n * RAM cost: 0.6 GB\\n *\\n * Copies a script or literature (.lit) file(s) to another server. The files argument can be either a string\\n * specifying a single file to copy, or an array of strings specifying multiple files to copy.\\n *\\n * @example\\n * ```js\\n * //Copies foo.lit from the helios server to the home computer:\\n * ns.scp(\\\"foo.lit\\\", \\\"home\\\", \\\"helios\\\" );\\n *\\n * //Tries to copy three files from rothman-uni to home computer:\\n * const files = [\\\"foo1.lit\\\", \\\"foo2.txt\\\", \\\"foo3.js\\\"];\\n * ns.scp(files, \\\"home\\\", \\\"rothman-uni\\\");\\n * ```\\n * @example\\n * ```js\\n * const server = ns.args[0];\\n * const files = [\\\"hack.js\\\", \\\"weaken.js\\\", \\\"grow.js\\\"];\\n * ns.scp(files, server, \\\"home\\\");\\n * ```\\n * @param files - Filename or an array of filenames of script/literature files to copy. Note that if a file is located in a subdirectory, the filename must include the leading `/`.\\n * @param destination - Hostname of the destination server, which is the server to which the file will be copied.\\n * @param source - Hostname of the source server, which is the server from which the file will be copied. This argument is optional and if it’s omitted the source will be the current server.\\n * @returns True if the file is successfully copied over and false otherwise. If the files argument is an array then this function will return false if any of the operations failed.\\n */\\n scp(files: string | string[], destination: string, source?: string): boolean;\\n\\n /**\\n * List files on a server.\\n * @remarks\\n * RAM cost: 0.2 GB\\n *\\n * Returns an array with the filenames of all files on the specified server\\n * (as strings). The returned array is sorted in alphabetic order.\\n *\\n * @param host - Hostname of the target server.\\n * @param substring - A substring to search for in the filename.\\n * @returns Array with the filenames of all files on the specified server.\\n */\\n ls(host: string, substring?: string): string[];\\n\\n /**\\n * List running scripts on a server.\\n * @remarks\\n * RAM cost: 0.2 GB\\n *\\n * Returns an array with general information about all scripts running on the specified target server.\\n *\\n * @example\\n * ```js\\n * const ps = ns.ps(\\\"home\\\");\\n * for (let script of ps) {\\n * ns.tprint(`${script.filename} ${script.threads}`);\\n * ns.tprint(script.args);\\n * }\\n * ```\\n * @param host - Host address of the target server. If not specified, it will be the current server’s IP by default.\\n * @returns Array with general information about all scripts running on the specified target server.\\n */\\n ps(host?: string): ProcessInfo[];\\n\\n /**\\n * Check if you have root access on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Returns a boolean indicating whether or not the player has root access to the specified target server.\\n *\\n * @example\\n * ```js\\n * if (!ns.hasRootAccess(\\\"foodnstuff\\\")) {\\n * ns.nuke(\\\"foodnstuff\\\");\\n * }\\n * ```\\n * @param host - Hostname of the target server.\\n * @returns True if player has root access to the specified target server, and false otherwise.\\n */\\n hasRootAccess(host: string): boolean;\\n\\n /**\\n * Returns a string with the hostname of the server that the script is running on.\\n *\\n * @remarks\\n * RAM cost: 0.05 GB\\n * @returns Hostname of the server that the script runs on.\\n */\\n getHostname(): string;\\n\\n /**\\n * Returns the player’s current hacking level.\\n *\\n * @remarks\\n * RAM cost: 0.05 GB\\n * @returns Player’s current hacking level\\n */\\n getHackingLevel(): number;\\n\\n /**\\n * Get hacking related multipliers.\\n * @remarks\\n * RAM cost: 0.25 GB\\n *\\n * Returns an object containing the Player’s hacking related multipliers.\\n * These multipliers are returned in fractional forms, not percentages\\n * (e.g. 1.5 instead of 150%).\\n *\\n * @example\\n * ```js\\n * const mults = ns.getHackingMultipliers();\\n * print(`chance: ${mults.chance}`);\\n * print(`growthL ${mults.growth}`);\\n * ```\\n * @returns Object containing the Player’s hacking related multipliers.\\n */\\n getHackingMultipliers(): HackingMultipliers;\\n\\n /**\\n * Get hacknet related multipliers.\\n * @remarks\\n * RAM cost: 0.25 GB\\n *\\n * Returns an object containing the Player’s hacknet related multipliers.\\n * These multipliers are returned in fractional forms, not percentages\\n * (e.g. 1.5 instead of 150%).\\n *\\n * @example\\n * ```js\\n * const mults = ns.getHacknetMultipliers();\\n * ns.tprint(`production: ${mults.production}`);\\n * ns.tprint(`purchaseCost: ${mults.purchaseCost}`);\\n * ```\\n * @returns Object containing the Player’s hacknet related multipliers.\\n */\\n getHacknetMultipliers(): HacknetMultipliers;\\n\\n /**\\n * Returns a server object for the given server. Defaults to the running script's server if host is not specified.\\n *\\n * @remarks\\n * RAM cost: 2 GB\\n * @param host - Optional. Hostname for the requested server object.\\n * @returns The requested server object.\\n */\\n getServer(host?: string): Server;\\n\\n /**\\n * Get money available on a server.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the amount of money available on a server.\\n * Running this function on the home computer will return the player’s money.\\n *\\n * @example\\n * ```js\\n * ns.getServerMoneyAvailable(\\\"foodnstuff\\\");\\n * ns.getServerMoneyAvailable(\\\"home\\\"); // Returns player's money\\n * ```\\n * @param host - Hostname of target server.\\n * @returns Amount of money available on the server.\\n */\\n getServerMoneyAvailable(host: string): number;\\n\\n /**\\n * Get the maximum money available on a server.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the maximum amount of money that can be available on a server.\\n *\\n * @param host - Hostname of target server.\\n * @returns Maximum amount of money available on the server.\\n */\\n getServerMaxMoney(host: string): number;\\n\\n /**\\n * Get a server growth parameter.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the server’s intrinsic “growth parameter”. This growth\\n * parameter is a number typically between 0 and 100 that represents\\n * how quickly the server’s money grows. This parameter affects the\\n * percentage by which the server’s money is increased when using the\\n * grow function. A higher growth parameter will result in a\\n * higher percentage increase from grow.\\n *\\n * @param host - Hostname of target server.\\n * @returns Parameter that affects the percentage by which the server’s money is increased when using the grow function.\\n */\\n getServerGrowth(host: string): number;\\n\\n /**\\n * Get server security level.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the security level of the target server. A server’s security\\n * level is denoted by a number, typically between 1 and 100\\n * (but it can go above 100).\\n *\\n * @param host - Hostname of target server.\\n * @returns Security level of the target server.\\n */\\n getServerSecurityLevel(host: string): number;\\n\\n /**\\n * Returns the minimum security level of the target server.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @param host - Hostname of target server.\\n * @returns Minimum security level of the target server.\\n */\\n getServerMinSecurityLevel(host: string): number;\\n\\n /**\\n * Get the base security level of a server.\\n * @remarks\\n * RAM cost: 0.1 GB\\n * Returns the base security level of the target server.\\n * For the server's actual security level, use {@link NS.getServerSecurityLevel | ns.getServerSecurityLevel}.\\n *\\n * @param host - Host of target server.\\n * @returns Base security level of the target server.\\n */\\n getServerBaseSecurityLevel(host: string): number;\\n\\n /**\\n * Get the maximum amount of RAM on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * @param host - Hostname of the target server.\\n * @returns The maximum amount of RAM (GB) a server can have.\\n */\\n getServerMaxRam(host: string): number;\\n /**\\n * Get the used RAM on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * @param host - Hostname of the target server.\\n * @returns The amount of used RAM (GB) on the specified server.\\n */\\n getServerUsedRam(host: string): number;\\n\\n /**\\n * Returns the required hacking level of the target server.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @param host - Hostname of target server.\\n * @returns The required hacking level of the target server.\\n */\\n getServerRequiredHackingLevel(host: string): number;\\n\\n /**\\n * Returns the number of open ports required to successfully run NUKE.exe on the specified server.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @param host - Hostname of target server.\\n * @returns The number of open ports required to successfully run NUKE.exe on the specified server.\\n */\\n getServerNumPortsRequired(host: string): number;\\n\\n /**\\n * Returns a boolean denoting whether or not the specified server exists.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @param host - Hostname of target server.\\n * @returns True if the specified server exists, and false otherwise.\\n */\\n serverExists(host: string): boolean;\\n\\n /**\\n * Check if a file exists.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns a boolean indicating whether the specified file exists on the target server.\\n * The filename for programs is case insensitive, other file types are case sensitive.\\n * For example, fileExists(“brutessh.exe”) will work fine, even though the actual program\\n * is named 'BruteSSH.exe'.\\n *\\n * * @example\\n * ```js\\n * // The function call will return true if the script named foo.js exists on the foodnstuff server, and false otherwise.\\n * ns.fileExists(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * // The function call will return true if the current server contains the FTPCrack.exe program, and false otherwise.\\n * ns.fileExists(\\\"ftpcrack.exe\\\");\\n * ```\\n * @param filename - Filename of file to check.\\n * @param host - Host of target server. Optional, defaults to the server the script is running on.\\n * @returns True if specified file exists, and false otherwise.\\n */\\n fileExists(filename: string, host?: string): boolean;\\n\\n /**\\n * Check if a script is running.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns a boolean indicating whether the specified script is running on the target server.\\n * If you use a PID instead of a filename, the hostname and args parameters are unnecessary.\\n * Remember that a script is semi-uniquely identified by both its name and its arguments.\\n * (You can run multiple copies of scripts with the same arguments, but for the purposes of\\n * functions like this that check based on filename, the filename plus arguments forms the key.)\\n *\\n * @example\\n * ```js\\n * //The function call will return true if there is a script named foo.js with no arguments running on the foodnstuff server, and false otherwise:\\n * ns.isRunning(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * //The function call will return true if there is a script named foo.js with no arguments running on the current server, and false otherwise:\\n * ns.isRunning(\\\"foo.js\\\", ns.getHostname());\\n *\\n * //The function call will return true if there is a script named foo.js running with the arguments 1, 5, and “test” (in that order) on the joesguns server, and false otherwise:\\n * ns.isRunning(\\\"foo.js\\\", \\\"joesguns\\\", 1, 5, \\\"test\\\");\\n * ```\\n * @param script - Filename or PID of script to check. This is case-sensitive.\\n * @param host - Hostname of target server.\\n * @param args - Arguments to specify/identify which scripts to search for.\\n * @returns True if the specified script is running on the target server, and false otherwise.\\n */\\n isRunning(script: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): boolean;\\n\\n /**\\n * Get general info about a running script.\\n * @remarks\\n * RAM cost: 0.3 GB\\n *\\n * Running with no args returns current script.\\n * If you use a PID as the first parameter, the hostname and args parameters are unnecessary.\\n *\\n * @param filename - Optional. Filename or PID of the script.\\n * @param hostname - Optional. Name of host server the script is running on.\\n * @param args - Arguments to identify the script\\n * @returns The info about the running script if found, and null otherwise.\\n */\\n getRunningScript(\\n filename?: FilenameOrPID,\\n hostname?: string,\\n ...args: (string | number | boolean)[]\\n ): RunningScript | null;\\n\\n /**\\n * Get cost of purchasing a server.\\n * @remarks\\n * RAM cost: 0.25 GB\\n *\\n * Returns the cost to purchase a server with the specified amount of ram.\\n *\\n * @example\\n * ```js\\n * const ram = 2 ** 20;\\n * const cost = ns.getPurchasedServerCost(ram);\\n * ns.tprint(`A purchased server with ${ns.formatRam(ram)} costs ${ns.formatMoney(cost)}`);\\n * ```\\n * @param ram - Amount of RAM of a potential purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\\n * @returns The cost to purchase a server with the specified amount of ram.\\n */\\n getPurchasedServerCost(ram: number): number;\\n\\n /**\\n * Purchase a server.\\n * @remarks\\n * 2.25 GB\\n *\\n * Purchase a server with the specified hostname and amount of RAM.\\n *\\n * The hostname argument can be any data type, but it will be converted to a string\\n * and have whitespace removed. Anything that resolves to an empty string will cause\\n * the function to fail. If there is already a server with the specified hostname,\\n * then the function will automatically append a number at the end of the hostname\\n * argument value until it finds a unique hostname. For example, if the script calls\\n * `purchaseServer(“foo”, 4)` but a server named “foo” already exists, then it will\\n * automatically change the hostname to `foo-0`. If there is already a server with the\\n * hostname `foo-0`, then it will change the hostname to `foo-1`, and so on.\\n *\\n * Note that there is a maximum limit to the amount of servers you can purchase.\\n *\\n * Returns the hostname of the newly purchased server as a string. If the function\\n * fails to purchase a server, then it will return an empty string. The function will\\n * fail if the arguments passed in are invalid, if the player does not have enough\\n * money to purchase the specified server, or if the player has exceeded the maximum\\n * amount of servers.\\n *\\n * @example\\n * ```js\\n * // Attempt to purchase 5 servers with 64GB of ram each\\n * const ram = 64;\\n * const prefix = \\\"pserv-\\\";\\n * for (i = 0; i < 5; ++i) {\\n * ns.purchaseServer(prefix + i, ram);\\n * }\\n * ```\\n * @param hostname - Hostname of the purchased server.\\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\\n * @returns The hostname of the newly purchased server.\\n */\\n purchaseServer(hostname: string, ram: number): string;\\n\\n /**\\n * Get cost of upgrading a purchased server to the given ram.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * @param hostname - Hostname of the server to upgrade.\\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\\n * @returns The price to upgrade.\\n */\\n getPurchasedServerUpgradeCost(hostname: string, ram: number): number;\\n\\n /**\\n * Upgrade a purchased server's RAM.\\n * @remarks\\n * RAM cost: 0.25 GB\\n *\\n * @param hostname - Hostname of the server to upgrade.\\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\\n * @returns True if the upgrade succeeded, and false otherwise.\\n */\\n upgradePurchasedServer(hostname: string, ram: number): boolean;\\n\\n /**\\n * Rename a purchased server.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param hostname - Current server hostname.\\n * @param newName - New server hostname.\\n * @returns True if successful, and false otherwise.\\n */\\n renamePurchasedServer(hostname: string, newName: string): boolean;\\n\\n /**\\n * Delete a purchased server.\\n * @remarks\\n * 2.25 GB\\n *\\n * Deletes one of your purchased servers, which is specified by its hostname.\\n *\\n * The hostname argument can be any data type, but it will be converted to a string.\\n * Whitespace is automatically removed from the string. This function will not delete a\\n * server that still has scripts running on it.\\n *\\n * @param host - Hostname of the server to delete.\\n * @returns True if successful, and false otherwise.\\n */\\n deleteServer(host: string): boolean;\\n\\n /**\\n * Returns an array with the hostnames of all of the servers you have purchased.\\n *\\n * @remarks 2.25 GB\\n * @returns Returns an array with the hostnames of all of the servers you have purchased.\\n */\\n getPurchasedServers(): string[];\\n\\n /**\\n * Returns the maximum number of servers you can purchase.\\n *\\n * @remarks RAM cost: 0.05 GB\\n * @returns Returns the maximum number of servers you can purchase.\\n */\\n getPurchasedServerLimit(): number;\\n\\n /**\\n * Returns the maximum RAM that a purchased server can have.\\n *\\n * @remarks RAM cost: 0.05 GB\\n * @returns Returns the maximum RAM (in GB) that a purchased server can have.\\n */\\n getPurchasedServerMaxRam(): number;\\n\\n /**\\n * Write data to a file.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function can be used to write data to a text file (.txt) or a script (.js or .script).\\n *\\n * This function will write data to that file. If the specified file does not exist,\\n * then it will be created. The third argument mode defines how the data will be written to\\n * the file. If mode is set to “w”, then the data is written in “write” mode which means\\n * that it will overwrite all existing data on the file. If mode is set to any other value\\n * then the data will be written in “append” mode which means that the data will be added at the\\n * end of the file.\\n *\\n * @param filename - Name of the file to be written to.\\n * @param data - Data to write.\\n * @param mode - Defines the write mode.\\n */\\n write(filename: string, data?: string, mode?: \\\"w\\\" | \\\"a\\\"): void;\\n\\n /**\\n * Attempt to write to a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Attempts to write data to the specified Netscript port.\\n * If the port is full, the data will not be written.\\n * Otherwise, the data will be written normally.\\n *\\n * @param portNumber - Port or text file that will be written to.\\n * @param data - Data to write.\\n * @returns True if the data is successfully written to the port, and false otherwise.\\n */\\n tryWritePort(portNumber: number, data: string | number): boolean;\\n\\n /**\\n * Read content of a file.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is used to read data from a text file (.txt) or script (.js or .script).\\n *\\n * This function will return the data in the specified file.\\n * If the file does not exist, an empty string will be returned.\\n *\\n * @param filename - Name of the file to be read.\\n * @returns Data in the specified text file.\\n */\\n read(filename: string): string;\\n\\n /**\\n * Get a copy of the data from a port without popping it.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is used to peek at the data from a port. It returns the\\n * first element in the specified port without removing that element. If\\n * the port is empty, the string “NULL PORT DATA” will be returned.\\n *\\n * @param portNumber - Port to peek. Must be an integer between 1 and 20.\\n * @returns Data in the specified port.\\n */\\n peek(portNumber: number): PortData;\\n\\n /**\\n * Clear data from a file.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Delete all data from that text file.\\n *\\n * @param handle - Text file to clear.\\n */\\n clear(handle: string): void;\\n\\n /**\\n * Clear data from a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Delete all data from the underlying queue.\\n *\\n * @param handle - Port to clear.\\n */\\n clearPort(handle: number): void;\\n\\n /**\\n * Write data to a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Write data to the given Netscript port.\\n * @returns The data popped off the queue if it was full, or null if it was not full.\\n */\\n writePort(portNumber: number, data: string | number): PortData | null;\\n /**\\n * Read data from a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Read data from that port. A port is a serialized queue.\\n * This function will remove the first element from that queue and return it.\\n * If the queue is empty, then the string “NULL PORT DATA” will be returned.\\n * @returns The data read.\\n */\\n readPort(portNumber: number): PortData;\\n\\n /**\\n * Get all data on a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Get a handle to a Netscript Port.\\n *\\n * WARNING: Port Handles only work in NetscriptJS (Netscript 2.0). They will not work in Netscript 1.0.\\n *\\n * @param portNumber - Port number. Must be an integer between 1 and 20.\\n */\\n getPortHandle(portNumber: number): NetscriptPort;\\n\\n /**\\n * Delete a file.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Removes the specified file from the current server. This function works for every file\\n * type except message (.msg) files.\\n *\\n * @param name - Filename of file to remove. Must include the extension.\\n * @param host - Hostname of the server on which to delete the file. Optional. Defaults to current server.\\n * @returns True if it successfully deletes the file, and false otherwise.\\n */\\n rm(name: string, host?: string): boolean;\\n\\n /**\\n * Check if any script with a filename is running.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns a boolean indicating whether any instance of the specified script is running\\n * on the target server, regardless of its arguments.\\n *\\n * This is different than the {@link NS.isRunning | isRunning} function because it does not try to\\n * identify a specific instance of a running script by its arguments.\\n *\\n * @example\\n * ```js\\n * //The function call will return true if there is any script named foo.js running on the foodnstuff server, and false otherwise:\\n * ns.scriptRunning(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * //The function call will return true if there is any script named “foo.js” running on the current server, and false otherwise:\\n * ns.scriptRunning(\\\"foo.js\\\", ns.getHostname());\\n * ```\\n * @param script - Filename of script to check. This is case-sensitive.\\n * @param host - Hostname of target server.\\n * @returns True if the specified script is running, and false otherwise.\\n */\\n scriptRunning(script: string, host: string): boolean;\\n\\n /**\\n * Kill all scripts with a filename.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Kills all scripts with the specified filename on the target server specified by hostname,\\n * regardless of arguments.\\n *\\n * @param script - Filename of script to kill. This is case-sensitive.\\n * @param host - Hostname of target server.\\n * @returns True if one or more scripts were successfully killed, and false if none were.\\n */\\n scriptKill(script: string, host: string): boolean;\\n\\n /**\\n * Returns the current script name.\\n *\\n * @remarks RAM cost: 0 GB\\n * @returns Current script name.\\n */\\n getScriptName(): string;\\n\\n /**\\n * Get the ram cost of a script.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the amount of RAM required to run the specified script on the target server.\\n * Returns 0 if the script does not exist.\\n *\\n * @param script - Filename of script. This is case-sensitive.\\n * @param host - Hostname of target server the script is located on. This is optional. If it is not specified then the function will use the current server as the target server.\\n * @returns Amount of RAM (in GB) required to run the specified script on the target server, and 0 if the script does not exist.\\n */\\n getScriptRam(script: string, host?: string): number;\\n\\n /**\\n * Get the execution time of a hack() call.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * When `hack` completes an amount of money is stolen depending on the player's skills.\\n * Returns the amount of time in milliseconds it takes to execute the {@link NS.hack | hack} Netscript function on the target server.\\n * The required time is increased by the security level of the target server and decreased by the player's hacking level.\\n *\\n * @param host - Hostname of target server.\\n * @returns Returns the amount of time in milliseconds it takes to execute the {@link NS.hack | hack} Netscript function.\\n */\\n getHackTime(host: string): number;\\n\\n /**\\n * Get the execution time of a grow() call.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Returns the amount of time in milliseconds it takes to execute the grow Netscript function on the target server.\\n * The required time is increased by the security level of the target server and decreased by the player's hacking level.\\n *\\n * @param host - Hostname of target server.\\n * @returns Returns the amount of time in milliseconds it takes to execute the grow Netscript function.\\n */\\n getGrowTime(host: string): number;\\n\\n /**\\n * Get the execution time of a weaken() call.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Returns the amount of time in milliseconds it takes to execute the {@link NS.weaken | weaken} Netscript function on the target server.\\n * The required time is increased by the security level of the target server and decreased by the player's hacking level.\\n *\\n * @param host - Hostname of target server.\\n * @returns Returns the amount of time in milliseconds it takes to execute the {@link NS.weaken | weaken} Netscript function.\\n */\\n getWeakenTime(host: string): number;\\n\\n /**\\n * Get the income of all scripts.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * @returns An array of two values.\\n * The first value is the total income (dollar / second) of all of your active scripts\\n * (scripts that are currently running on any server).\\n * The second value is the total income (dollar / second) that you’ve earned from scripts\\n * since you last installed Augmentations.\\n */\\n getTotalScriptIncome(): [number, number];\\n\\n /**\\n * Get the income of a script.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the amount of income the specified script generates while online\\n * (when the game is open, does not apply for offline income). Remember that\\n * a script is uniquely identified by both its name and its arguments. So for\\n * example if you ran a script with the arguments “foodnstuff” and “5” then\\n * in order to use this function to get that script’s income you must specify\\n * those same arguments in the same order in this function call.\\n *\\n * @param script - Filename of script.\\n * @param host - Server on which script is running.\\n * @param args - Arguments that the script is running with.\\n * @returns Amount of income the specified script generates while online.\\n */\\n getScriptIncome(script: string, host: string, ...args: (string | number | boolean)[]): number;\\n\\n /**\\n * Get the exp gain of all scripts.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * @returns Total experience gain rate of all of your active scripts.\\n */\\n getTotalScriptExpGain(): number;\\n\\n /**\\n * Get the exp gain of a script.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the amount of hacking experience the specified script generates while online\\n * (when the game is open, does not apply for offline experience gains). Remember that a\\n * script is uniquely identified by both its name and its arguments.\\n *\\n * This function can also return the total experience gain rate of all of your active\\n * scripts by running the function with no arguments.\\n *\\n * @param script - Filename of script.\\n * @param host - Server on which script is running.\\n * @param args - Arguments that the script is running with.\\n * @returns Amount of hacking experience the specified script generates while online.\\n */\\n getScriptExpGain(script: string, host: string, ...args: (string | number | boolean)[]): number;\\n\\n /**\\n * Returns the amount of time in milliseconds that have passed since you last installed Augmentations.\\n *\\n * @remarks RAM cost: 0.05 GB\\n * @returns Time in milliseconds that have passed since you last installed Augmentations.\\n */\\n getTimeSinceLastAug(): number;\\n\\n /**\\n * Format a string.\\n *\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * see: https://github.com/alexei/sprintf.js\\n * @param format - String to format.\\n * @param args - Formatting arguments.\\n * @returns Formatted text.\\n */\\n sprintf(format: string, ...args: any[]): string;\\n\\n /**\\n * Format a string with an array of arguments.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * see: https://github.com/alexei/sprintf.js\\n * @param format - String to format.\\n * @param args - Formatting arguments.\\n * @returns Formatted text.\\n */\\n vsprintf(format: string, args: any[]): string;\\n\\n /**\\n * Format a number.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Converts a number into a numeric string with the specified format options.\\n * This is the same function that the game itself uses to display numbers. The format also depends on the Numeric\\n * Display settings (all options on the \\\"Numeric Display\\\" options page)\\n * To format ram or percentages, see {@link NS.formatRam | formatRam} and {@link NS.formatPercent | formatPercent}\\n *\\n * @param n - Number to format.\\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 3.\\n * @param suffixStart - How high a number must be before a suffix will be added. Optional, defaults to 1000.\\n * @param isInteger - Whether the number represents an integer. Integers do not display fractional digits until a suffix is present. Optional, defaults to false.\\n * @returns Formatted number.\\n */\\n formatNumber(n: number, fractionalDigits?: number, suffixStart?: number, isInteger?: boolean): string;\\n\\n /**\\n * Format a number as an amount of ram.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Converts a number into a ram string with the specified number of fractional digits.\\n * This is the same function that the game itself uses to display ram. The format also depends on the Numeric Display\\n * settings (all options on the \\\"Numeric Display\\\" options page)\\n * To format plain numbers or percentages, see {@link NS.formatNumber | formatNumber} and {@link NS.formatPercent | formatPercent}\\n *\\n * @param n - Number to format as an amount of ram, in base units of GB (or GiB if that Numeric Display option is set).\\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 2.\\n * @returns Formatted ram amount.\\n */\\n formatRam(n: number, fractionalDigits?: number): string;\\n\\n /**\\n * Format a number as a percentage.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Converts a number into a percentage string with the specified number of fractional digits.\\n * This is the same function that the game itself uses to display percentages. The format also depends on the Numeric\\n * Display settings (all options on the \\\"Numeric Display\\\" options page)\\n * To format plain numbers or ram, see {@link NS.formatNumber | formatNumber} and {@link NS.formatRam | formatRam}\\n *\\n * @param n - Number to format as a percentage.\\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 2.\\n * @param suffixStart - When to switch the percentage to a multiplier. Default is 1e6 or x1.00m.\\n * @returns Formatted percentage.\\n */\\n formatPercent(n: number, fractionalDigits?: number, multStart?: number): string;\\n\\n /**\\n * Format a number using the numeral library. This function is deprecated and will be removed in 2.4.\\n * @deprecated Use ns.formatNumber, formatRam, or formatPercent instead. Will be removed in 2.4.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Converts a number into a string with the specified format options.\\n * See http://numeraljs.com/#format for documentation on format strings supported.\\n *\\n * This function is deprecated and will be removed in 2.3.\\n *\\n * @param n - Number to format.\\n * @param format - Formatting options. See http://numeraljs.com/#format for valid formats.\\n * @returns Formatted number.\\n */\\n nFormat(n: number, format: string): string;\\n\\n /**\\n * Format time to a readable string.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param milliseconds - Number of millisecond to format.\\n * @param milliPrecision - Format time with subsecond precision. Defaults to false.\\n * @returns The formatted time.\\n */\\n tFormat(milliseconds: number, milliPrecision?: boolean): string;\\n\\n /**\\n * Prompt the player with an input modal.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Prompts the player with a dialog box. Here is an explanation of the various options.\\n *\\n * - `options.type` is not provided to the function. If `options.type` is left out and\\n * only a string is passed to the function, then the default behavior is to create a\\n * boolean dialog box.\\n *\\n * - `options.type` has value `undefined` or `\\\"boolean\\\"`. A boolean dialog box is\\n * created. The player is shown \\\"Yes\\\" and \\\"No\\\" prompts, which return true and false\\n * respectively. The script's execution is halted until the player presses either the\\n * \\\"Yes\\\" or \\\"No\\\" button.\\n *\\n * - `options.type` has value `\\\"text\\\"`. The player is given a text field to enter\\n * free-form text. The script's execution is halted until the player enters some text\\n * and/or presses the \\\"Confirm\\\" button.\\n *\\n * - `options.type` has value `\\\"select\\\"`. The player is shown a drop-down field.\\n * Choosing type `\\\"select\\\"` will require an array to be passed via the\\n * `options.choices` property. The array can be an array of strings, an array of\\n * numbers (not BigInt numbers), or a mixture of both numbers and strings. Any other\\n * types of array elements will result in an error or an undefined/unexpected\\n * behavior. The `options.choices` property will be ignored if `options.type` has a\\n * value other than `\\\"select\\\"`. The script's execution is halted until the player\\n * chooses one of the provided options and presses the \\\"Confirm\\\" button.\\n *\\n * @example\\n * ```js\\n * // A Yes/No question. The default is to create a boolean dialog box.\\n * const queryA = \\\"Do you enjoy Bitburner?\\\";\\n * const resultA = await ns.prompt(queryA);\\n * ns.tprint(`${queryA} ${resultA}`);\\n *\\n * // Another Yes/No question. Can also create a boolean dialog box by explicitly\\n * // passing the option {\\\"type\\\": \\\"boolean\\\"}.\\n * const queryB = \\\"Is programming fun?\\\";\\n * const resultB = await ns.prompt(queryB, { type: \\\"boolean\\\" });\\n * ns.tprint(`${queryB} ${resultB}`);\\n *\\n * // Free-form text box.\\n * const resultC = await ns.prompt(\\\"Please enter your name.\\\", { type: \\\"text\\\" });\\n * ns.tprint(`Hello, ${resultC}.`);\\n *\\n * // A drop-down list.\\n * const resultD = await ns.prompt(\\\"Please select your favorite fruit.\\\", {\\n * type: \\\"select\\\",\\n * choices: [\\\"Apple\\\", \\\"Banana\\\", \\\"Orange\\\", \\\"Pear\\\", \\\"Strawberry\\\"]\\n * });\\n * ns.tprint(`Your favorite fruit is ${resultD.toLowerCase()}.`);\\n * ```\\n *\\n * @param txt - Text to appear in the prompt dialog box.\\n * @param options - Options to modify the prompt the player is shown.\\n * @returns True if the player clicks “Yes”; false if the player clicks “No”; or the value entered by the player.\\n */\\n prompt(\\n txt: string,\\n options?: { type?: \\\"boolean\\\" | \\\"text\\\" | \\\"select\\\"; choices?: string[] },\\n ): Promise;\\n\\n /**\\n * Open up a message box.\\n * @param msg - Message to alert.\\n */\\n alert(msg: string): void;\\n\\n /**\\n * Queue a toast (bottom-right notification).\\n * @param msg - Message in the toast.\\n * @param variant - Type of toast. Must be one of success, info, warning, error. Defaults to success.\\n * @param duration - Duration of toast in ms. Can also be `null` to create a persistent toast. Defaults to 2000.\\n */\\n toast(msg: string, variant?: ToastVariant | `${ToastVariant}`, duration?: number | null): void;\\n\\n /**\\n * Download a file from the internet.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Retrieves data from a URL and downloads it to a file on the specified server.\\n * The data can only be downloaded to a script (.js or .script) or a text file (.txt).\\n * If the file already exists, it will be overwritten by this command.\\n * Note that it will not be possible to download data from many websites because they\\n * do not allow cross-origin resource sharing (CORS).\\n *\\n * IMPORTANT: This is an asynchronous function that returns a Promise.\\n * The Promise’s resolved value will be a boolean indicating whether or not the data was\\n * successfully retrieved from the URL. Because the function is async and returns a Promise,\\n * it is recommended you use wget in NetscriptJS (Netscript 2.0).\\n *\\n * In NetscriptJS, you must preface any call to wget with the await keyword (like you would {@link NS.hack | hack} or {@link NS.sleep | sleep}).\\n * wget will still work in Netscript 1.0, but the function's execution will not be synchronous\\n * (i.e. it may not execute when you expect/want it to).\\n * Furthermore, since Promises are not supported in ES5,\\n * you will not be able to process the returned value of wget in Netscript 1.0.\\n *\\n * @example\\n * ```js\\n * await ns.wget(\\\"https://raw.githubusercontent.com/bitburner-official/bitburner-src/master/README.md\\\", \\\"game_readme.txt\\\");\\n * ```\\n * @param url - URL to pull data from.\\n * @param target - Filename to write data to. Must be script or text file.\\n * @param host - Optional hostname/ip of server for target file.\\n * @returns True if the data was successfully retrieved from the URL, false otherwise.\\n */\\n wget(url: string, target: string, host?: string): Promise;\\n\\n /**\\n * Returns the amount of Faction favor required to be able to donate to a faction.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @returns Amount of Faction favor required to be able to donate to a faction.\\n */\\n getFavorToDonate(): number;\\n\\n /**\\n * Get the current Bitnode multipliers.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns an object containing the current (or supplied) BitNode multipliers.\\n * This function requires you to be in Bitnode 5 or have Source-File 5 in order to run.\\n * The multipliers are returned in decimal forms (e.g. 1.5 instead of 150%).\\n * The multipliers represent the difference between the current BitNode and\\n * the original BitNode (BitNode-1).\\n *\\n * For example, if the CrimeMoney multiplier has a value of 0.1, then that means\\n * that committing crimes in the current BitNode will only give 10% of the money\\n * you would have received in BitNode-1.\\n *\\n * @example\\n * ```js\\n * const mults = ns.getBitNodeMultipliers();\\n * ns.tprint(`ServerMaxMoney: ${mults.ServerMaxMoney}`);\\n * ns.tprint(`HackExpGain: ${mults.HackExpGain}`);\\n * ```\\n * @returns Object containing the current BitNode multipliers.\\n */\\n getBitNodeMultipliers(n?: number, lvl?: number): BitNodeMultipliers;\\n\\n /**\\n * Get information about the player.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * Returns an object with information on the current player.\\n *\\n * @returns Player info\\n */\\n getPlayer(): Player;\\n\\n /**\\n * Get information about the sources of income for this run.\\n * @remarks\\n * RAM cost: 1.0 GB\\n *\\n * Returns an object with information on the income sources for this run\\n *\\n * @returns Money sources\\n */\\n getMoneySources(): MoneySources;\\n\\n /**\\n * Add callback function when the script dies\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * NS2 exclusive\\n *\\n * Add callback to be executed when the script dies.\\n */\\n atExit(f: () => void): void;\\n\\n /**\\n * Move a file on the target server.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Move the source file to the specified destination on the target server.\\n *\\n * This command only works for scripts and text files (.txt). It cannot, however, be used\\n * to convert from script to text file, or vice versa.\\n *\\n * This function can also be used to rename files.\\n *\\n * @param host - Hostname of target server.\\n * @param source - Filename of the source file.\\n * @param destination - Filename of the destination file.\\n */\\n mv(host: string, source: string, destination: string): void;\\n\\n /** Get information about resets.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * @example\\n * ```js\\n * const resetInfo = ns.getResetInfo();\\n * const lastAugReset = resetInfo.lastAugReset;\\n * ns.tprint(`The last augmentation reset was: ${new Date(lastAugReset)}`);\\n * ns.tprint(`It has been ${Date.now() - lastAugReset}ms since the last augmentation reset.`);\\n * ```\\n * */\\n getResetInfo(): ResetInfo;\\n\\n /**\\n * Get the ram cost of a netscript function.\\n *\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param name - The fully-qualified function name, without the leading `ns`. Example inputs: `hack`, `tprint`, `stock.getPosition`.\\n */\\n getFunctionRamCost(name: string): number;\\n\\n /**\\n * Parse command line flags.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Allows Unix-like flag parsing.\\n * @example\\n * ```js\\n * export async function main(ns) {\\n * const data = ns.flags([\\n * ['delay', 0], // a default number means this flag is a number\\n * ['server', 'foodnstuff'], // a default string means this flag is a string\\n * ['exclude', []], // a default array means this flag is a default array of string\\n * ['help', false], // a default boolean means this flag is a boolean\\n * ]);\\n * ns.tprint(data);\\n * }\\n *\\n * // [home ~/]> run example.js\\n * // {\\\"_\\\":[],\\\"delay\\\":0,\\\"server\\\":\\\"foodnstuff\\\",\\\"exclude\\\":[],\\\"help\\\":false}\\n * // [home ~/]> run example.js --delay 3000\\n * // {\\\"_\\\":[],\\\"server\\\":\\\"foodnstuff\\\",\\\"exclude\\\":[],\\\"help\\\":false,\\\"delay\\\":3000}\\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi\\n * // {\\\"_\\\":[],\\\"exclude\\\":[],\\\"help\\\":false,\\\"delay\\\":3000,\\\"server\\\":\\\"harakiri-sushi\\\"}\\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi hello world\\n * // {\\\"_\\\":[\\\"hello\\\",\\\"world\\\"],\\\"exclude\\\":[],\\\"help\\\":false,\\\"delay\\\":3000,\\\"server\\\":\\\"harakiri-sushi\\\"}\\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b\\n * // {\\\"_\\\":[\\\"hello\\\",\\\"world\\\"],\\\"help\\\":false,\\\"delay\\\":3000,\\\"server\\\":\\\"harakiri-sushi\\\",\\\"exclude\\\":[\\\"a\\\",\\\"b\\\"]}\\n * // [home ~/]> run example.script --help\\n * // {\\\"_\\\":[],\\\"delay\\\":0,\\\"server\\\":\\\"foodnstuff\\\",\\\"exclude\\\":[],\\\"help\\\":true}\\n * ```\\n */\\n flags(schema: [string, string | number | boolean | string[]][]): { [key: string]: ScriptArg | string[] };\\n\\n /**\\n * Share the server's ram with your factions.\\n * @remarks\\n * RAM cost: 2.4 GB\\n *\\n * Increases rep/second for all faction work while share is running. Each cycle of ns.share() is 10 seconds.\\n * Scales with thread count, but at a sharply decreasing rate.\\n */\\n share(): Promise;\\n\\n /**\\n * Share Power has a multiplicative effect on rep/second while doing work for a faction.\\n * Share Power increases incrementally for every thread of share running on your server network, but at a sharply decreasing rate.\\n * @remarks\\n * RAM cost: 0.2 GB\\n */\\n getSharePower(): number;\\n\\n enums: NSEnums;\\n}\\n\\n// BASE ENUMS\\n/** @public */\\ndeclare enum ToastVariant {\\n SUCCESS = \\\"success\\\",\\n WARNING = \\\"warning\\\",\\n ERROR = \\\"error\\\",\\n INFO = \\\"info\\\",\\n}\\n\\n/** @public */\\ndeclare enum CrimeType {\\n shoplift = \\\"Shoplift\\\",\\n robStore = \\\"Rob Store\\\",\\n mug = \\\"Mug\\\",\\n larceny = \\\"Larceny\\\",\\n dealDrugs = \\\"Deal Drugs\\\",\\n bondForgery = \\\"Bond Forgery\\\",\\n traffickArms = \\\"Traffick Arms\\\",\\n homicide = \\\"Homicide\\\",\\n grandTheftAuto = \\\"Grand Theft Auto\\\",\\n kidnap = \\\"Kidnap\\\",\\n assassination = \\\"Assassination\\\",\\n heist = \\\"Heist\\\",\\n}\\n\\n/** @public */\\ndeclare enum FactionWorkType {\\n hacking = \\\"hacking\\\",\\n field = \\\"field\\\",\\n security = \\\"security\\\",\\n}\\n\\n/** @public */\\ndeclare enum UniversityClassType {\\n computerScience = \\\"Computer Science\\\",\\n dataStructures = \\\"Data Structures\\\",\\n networks = \\\"Networks\\\",\\n algorithms = \\\"Algorithms\\\",\\n management = \\\"Management\\\",\\n leadership = \\\"Leadership\\\",\\n}\\n\\n/** @public */\\ndeclare enum GymType {\\n strength = \\\"str\\\",\\n defense = \\\"def\\\",\\n dexterity = \\\"dex\\\",\\n agility = \\\"agi\\\",\\n}\\n\\n/** @public */\\ndeclare enum JobName {\\n software0 = \\\"Software Engineering Intern\\\",\\n software1 = \\\"Junior Software Engineer\\\",\\n software2 = \\\"Senior Software Engineer\\\",\\n software3 = \\\"Lead Software Developer\\\",\\n software4 = \\\"Head of Software\\\",\\n software5 = \\\"Head of Engineering\\\",\\n software6 = \\\"Vice President of Technology\\\",\\n software7 = \\\"Chief Technology Officer\\\",\\n IT0 = \\\"IT Intern\\\",\\n IT1 = \\\"IT Analyst\\\",\\n IT2 = \\\"IT Manager\\\",\\n IT3 = \\\"Systems Administrator\\\",\\n securityEng = \\\"Security Engineer\\\",\\n networkEng0 = \\\"Network Engineer\\\",\\n networkEng1 = \\\"Network Administrator\\\",\\n business0 = \\\"Business Intern\\\",\\n business1 = \\\"Business Analyst\\\",\\n business2 = \\\"Business Manager\\\",\\n business3 = \\\"Operations Manager\\\",\\n business4 = \\\"Chief Financial Officer\\\",\\n business5 = \\\"Chief Executive Officer\\\",\\n security0 = \\\"Security Guard\\\",\\n security1 = \\\"Security Officer\\\",\\n security2 = \\\"Security Supervisor\\\",\\n security3 = \\\"Head of Security\\\",\\n agent0 = \\\"Field Agent\\\",\\n agent1 = \\\"Secret Agent\\\",\\n agent2 = \\\"Special Operative\\\",\\n waiter = \\\"Waiter\\\",\\n employee = \\\"Employee\\\",\\n softwareConsult0 = \\\"Software Consultant\\\",\\n softwareConsult1 = \\\"Senior Software Consultant\\\",\\n businessConsult0 = \\\"Business Consultant\\\",\\n businessConsult1 = \\\"Senior Business Consultant\\\",\\n waiterPT = \\\"Part-time Waiter\\\",\\n employeePT = \\\"Part-time Employee\\\",\\n}\\n\\n// CORP ENUMS - Changed to types\\n/** @public */\\ntype CorpEmployeePosition =\\n | \\\"Operations\\\"\\n | \\\"Engineer\\\"\\n | \\\"Business\\\"\\n | \\\"Management\\\"\\n | \\\"Research & Development\\\"\\n | \\\"Intern\\\"\\n | \\\"Unassigned\\\";\\n\\n/** @public */\\ntype CorpIndustryName =\\n | \\\"Spring Water\\\"\\n | \\\"Water Utilities\\\"\\n | \\\"Agriculture\\\"\\n | \\\"Fishing\\\"\\n | \\\"Mining\\\"\\n | \\\"Refinery\\\"\\n | \\\"Restaurant\\\"\\n | \\\"Tobacco\\\"\\n | \\\"Chemical\\\"\\n | \\\"Pharmaceutical\\\"\\n | \\\"Computer Hardware\\\"\\n | \\\"Robotics\\\"\\n | \\\"Software\\\"\\n | \\\"Healthcare\\\"\\n | \\\"Real Estate\\\";\\n\\n/** @public */\\ntype CorpSmartSupplyOption = \\\"leftovers\\\" | \\\"imports\\\" | \\\"none\\\";\\n\\n/** Names of all cities\\n * @public */\\ndeclare enum CityName {\\n Aevum = \\\"Aevum\\\",\\n Chongqing = \\\"Chongqing\\\",\\n Sector12 = \\\"Sector-12\\\",\\n NewTokyo = \\\"New Tokyo\\\",\\n Ishima = \\\"Ishima\\\",\\n Volhaven = \\\"Volhaven\\\",\\n}\\n\\n/** Names of all locations\\n * @public */\\ndeclare enum LocationName {\\n AevumAeroCorp = \\\"AeroCorp\\\",\\n AevumBachmanAndAssociates = \\\"Bachman & Associates\\\",\\n AevumClarkeIncorporated = \\\"Clarke Incorporated\\\",\\n AevumCrushFitnessGym = \\\"Crush Fitness Gym\\\",\\n AevumECorp = \\\"ECorp\\\",\\n AevumFulcrumTechnologies = \\\"Fulcrum Technologies\\\",\\n AevumGalacticCybersystems = \\\"Galactic Cybersystems\\\",\\n AevumNetLinkTechnologies = \\\"NetLink Technologies\\\",\\n AevumPolice = \\\"Aevum Police Headquarters\\\",\\n AevumRhoConstruction = \\\"Rho Construction\\\",\\n AevumSnapFitnessGym = \\\"Snap Fitness Gym\\\",\\n AevumSummitUniversity = \\\"Summit University\\\",\\n AevumWatchdogSecurity = \\\"Watchdog Security\\\",\\n AevumCasino = \\\"Iker Molina Casino\\\",\\n\\n ChongqingKuaiGongInternational = \\\"KuaiGong International\\\",\\n ChongqingSolarisSpaceSystems = \\\"Solaris Space Systems\\\",\\n ChongqingChurchOfTheMachineGod = \\\"Church of the Machine God\\\",\\n\\n Sector12AlphaEnterprises = \\\"Alpha Enterprises\\\",\\n Sector12BladeIndustries = \\\"Blade Industries\\\",\\n Sector12CIA = \\\"Central Intelligence Agency\\\",\\n Sector12CarmichaelSecurity = \\\"Carmichael Security\\\",\\n Sector12CityHall = \\\"Sector-12 City Hall\\\",\\n Sector12DeltaOne = \\\"DeltaOne\\\",\\n Sector12FoodNStuff = \\\"FoodNStuff\\\",\\n Sector12FourSigma = \\\"Four Sigma\\\",\\n Sector12IcarusMicrosystems = \\\"Icarus Microsystems\\\",\\n Sector12IronGym = \\\"Iron Gym\\\",\\n Sector12JoesGuns = \\\"Joe's Guns\\\",\\n Sector12MegaCorp = \\\"MegaCorp\\\",\\n Sector12NSA = \\\"National Security Agency\\\",\\n Sector12PowerhouseGym = \\\"Powerhouse Gym\\\",\\n Sector12RothmanUniversity = \\\"Rothman University\\\",\\n Sector12UniversalEnergy = \\\"Universal Energy\\\",\\n\\n NewTokyoDefComm = \\\"DefComm\\\",\\n NewTokyoGlobalPharmaceuticals = \\\"Global Pharmaceuticals\\\",\\n NewTokyoNoodleBar = \\\"Noodle Bar\\\",\\n NewTokyoVitaLife = \\\"VitaLife\\\",\\n NewTokyoArcade = \\\"Arcade\\\",\\n\\n IshimaNovaMedical = \\\"Nova Medical\\\",\\n IshimaOmegaSoftware = \\\"Omega Software\\\",\\n IshimaStormTechnologies = \\\"Storm Technologies\\\",\\n IshimaGlitch = \\\"0x6C1\\\",\\n\\n VolhavenCompuTek = \\\"CompuTek\\\",\\n VolhavenHeliosLabs = \\\"Helios Labs\\\",\\n VolhavenLexoCorp = \\\"LexoCorp\\\",\\n VolhavenMilleniumFitnessGym = \\\"Millenium Fitness Gym\\\",\\n VolhavenNWO = \\\"NWO\\\",\\n VolhavenOmniTekIncorporated = \\\"OmniTek Incorporated\\\",\\n VolhavenOmniaCybersystems = \\\"Omnia Cybersystems\\\",\\n VolhavenSysCoreSecurities = \\\"SysCore Securities\\\",\\n VolhavenZBInstituteOfTechnology = \\\"ZB Institute of Technology\\\",\\n\\n Hospital = \\\"Hospital\\\",\\n Slums = \\\"The Slums\\\",\\n TravelAgency = \\\"Travel Agency\\\",\\n WorldStockExchange = \\\"World Stock Exchange\\\",\\n\\n Void = \\\"The Void\\\",\\n}\\n\\n/** Names of all companies\\n * @public */\\ndeclare enum CompanyName {\\n ECorp = \\\"ECorp\\\",\\n MegaCorp = \\\"MegaCorp\\\",\\n BachmanAndAssociates = \\\"Bachman & Associates\\\",\\n BladeIndustries = \\\"Blade Industries\\\",\\n NWO = \\\"NWO\\\",\\n ClarkeIncorporated = \\\"Clarke Incorporated\\\",\\n OmniTekIncorporated = \\\"OmniTek Incorporated\\\",\\n FourSigma = \\\"Four Sigma\\\",\\n KuaiGongInternational = \\\"KuaiGong International\\\",\\n FulcrumTechnologies = \\\"Fulcrum Technologies\\\",\\n StormTechnologies = \\\"Storm Technologies\\\",\\n DefComm = \\\"DefComm\\\",\\n HeliosLabs = \\\"Helios Labs\\\",\\n VitaLife = \\\"VitaLife\\\",\\n IcarusMicrosystems = \\\"Icarus Microsystems\\\",\\n UniversalEnergy = \\\"Universal Energy\\\",\\n GalacticCybersystems = \\\"Galactic Cybersystems\\\",\\n AeroCorp = \\\"AeroCorp\\\",\\n OmniaCybersystems = \\\"Omnia Cybersystems\\\",\\n SolarisSpaceSystems = \\\"Solaris Space Systems\\\",\\n DeltaOne = \\\"DeltaOne\\\",\\n GlobalPharmaceuticals = \\\"Global Pharmaceuticals\\\",\\n NovaMedical = \\\"Nova Medical\\\",\\n CIA = \\\"Central Intelligence Agency\\\",\\n NSA = \\\"National Security Agency\\\",\\n WatchdogSecurity = \\\"Watchdog Security\\\",\\n LexoCorp = \\\"LexoCorp\\\",\\n RhoConstruction = \\\"Rho Construction\\\",\\n AlphaEnterprises = \\\"Alpha Enterprises\\\",\\n Police = \\\"Aevum Police Headquarters\\\",\\n SysCoreSecurities = \\\"SysCore Securities\\\",\\n CompuTek = \\\"CompuTek\\\",\\n NetLinkTechnologies = \\\"NetLink Technologies\\\",\\n CarmichaelSecurity = \\\"Carmichael Security\\\",\\n FoodNStuff = \\\"FoodNStuff\\\",\\n JoesGuns = \\\"Joe's Guns\\\",\\n OmegaSoftware = \\\"Omega Software\\\",\\n NoodleBar = \\\"Noodle Bar\\\",\\n}\\n\\n/** @public */\\nexport type NSEnums = {\\n CityName: typeof CityName;\\n CrimeType: typeof CrimeType;\\n FactionWorkType: typeof FactionWorkType;\\n GymType: typeof GymType;\\n JobName: typeof JobName;\\n LocationName: typeof LocationName;\\n ToastVariant: typeof ToastVariant;\\n UniversityClassType: typeof UniversityClassType;\\n CompanyName: typeof CompanyName;\\n};\\n\\n/**\\n * Corporation Office API\\n * @remarks\\n * requires the Office API upgrade from your corporation.\\n * @public\\n */\\n\\nexport interface OfficeAPI {\\n /**\\n * Hire an employee.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param employeePosition - Position to place into. Defaults to \\\"Unassigned\\\".\\n * @returns True if an employee was hired, false otherwise\\n */\\n hireEmployee(divisionName: string, city: CityName | `${CityName}`, employeePosition?: CorpEmployeePosition): boolean;\\n /**\\n * Upgrade office size.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param size - Amount of positions to open\\n */\\n upgradeOfficeSize(divisionName: string, city: CityName | `${CityName}`, size: number): void;\\n /**\\n * Throw a party for your employees\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param costPerEmployee - Amount to spend per employee.\\n * @returns Multiplier for morale, or zero on failure\\n */\\n throwParty(divisionName: string, city: CityName | `${CityName}`, costPerEmployee: number): number;\\n /**\\n * Buy tea for your employees\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @returns true if buying tea was successful, false otherwise\\n */\\n buyTea(divisionName: string, city: CityName | `${CityName}`): boolean;\\n /**\\n * Hire AdVert.\\n * @param divisionName - Name of the division\\n */\\n hireAdVert(divisionName: string): void;\\n /**\\n * Purchase a research\\n * @param divisionName - Name of the division\\n * @param researchName - Name of the research\\n */\\n research(divisionName: string, researchName: string): void;\\n /**\\n * Get data about an office\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @returns Office data\\n */\\n getOffice(divisionName: string, city: CityName | `${CityName}`): Office;\\n /**\\n * Get the cost to hire AdVert.\\n * @param divisionName - Name of the division.\\n * @returns The cost to hire AdVert.\\n */\\n getHireAdVertCost(divisionName: string): number;\\n /**\\n * Get the number of times you have hired AdVert.\\n * @param divisionName - Name of the division.\\n * @returns Number of times you have hired AdVert.\\n */\\n getHireAdVertCount(divisionName: string): number;\\n /**\\n * Get the cost to unlock research\\n * @param divisionName - Name of the division\\n * @param researchName - Name of the research\\n * @returns cost\\n */\\n getResearchCost(divisionName: string, researchName: string): number;\\n /**\\n * Gets if you have unlocked a research\\n * @param divisionName - Name of the division\\n * @param researchName - Name of the research\\n * @returns true is unlocked, false if not\\n */\\n hasResearched(divisionName: string, researchName: string): boolean;\\n /**\\n * Set the auto job assignment for a job\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param job - Name of the job\\n * @param amount - Number of employees to assign to that job\\n * @returns true if the employee count reached the target amount, false if not\\n */\\n setAutoJobAssignment(divisionName: string, city: CityName | `${CityName}`, job: string, amount: number): boolean;\\n /**\\n * Cost to Upgrade office size.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param size - Amount of positions to open\\n * @returns Cost of upgrading the office\\n */\\n getOfficeSizeUpgradeCost(divisionName: string, city: CityName | `${CityName}`, asize: number): number;\\n}\\n\\n/**\\n * Corporation Warehouse API\\n * @remarks\\n * Requires the Warehouse API upgrade from your corporation.\\n * @public\\n */\\nexport interface WarehouseAPI {\\n /**\\n * Set material sell data.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param amt - Amount to sell, can be \\\"MAX\\\"\\n * @param price - Price to sell, can be \\\"MP\\\"\\n */\\n sellMaterial(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n materialName: string,\\n amt: string,\\n price: string,\\n ): void;\\n /**\\n * Set product sell data.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param productName - Name of the product\\n * @param amt - Amount to sell, can be \\\"MAX\\\"\\n * @param price - Price to sell, can be \\\"MP\\\"\\n * @param all - Sell in all city\\n */\\n sellProduct(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n productName: string,\\n amt: string,\\n price: string,\\n all: boolean,\\n ): void;\\n /**\\n * Discontinue a product.\\n * @param divisionName - Name of the division\\n * @param productName - Name of the product\\n */\\n discontinueProduct(divisionName: string, productName: string): void;\\n /**\\n * Set smart supply\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param enabled - smart supply enabled\\n */\\n setSmartSupply(divisionName: string, city: CityName | `${CityName}`, enabled: boolean): void;\\n /**\\n * Set whether smart supply uses leftovers before buying\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param option - smart supply option, \\\"leftovers\\\" to use leftovers, \\\"imports\\\" to use only imported materials, \\\"none\\\" to not use materials from store\\n */\\n setSmartSupplyOption(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n materialName: string,\\n option: CorpSmartSupplyOption,\\n ): void;\\n /**\\n * Set material buy data\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param amt - Amount of material to buy\\n */\\n buyMaterial(divisionName: string, city: CityName | `${CityName}`, materialName: string, amt: number): void;\\n /**\\n * Set material to bulk buy\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param amt - Amount of material to buy\\n */\\n bulkPurchase(divisionName: string, city: CityName | `${CityName}`, materialName: string, amt: number): void;\\n\\n /** Get warehouse data\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @returns warehouse data */\\n getWarehouse(divisionName: string, city: CityName | `${CityName}`): Warehouse;\\n\\n /** Get product data\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param productName - Name of the product\\n * @returns product data */\\n getProduct(divisionName: string, cityName: CityName | `${CityName}`, productName: string): Product;\\n /**\\n * Get material data\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @returns material data\\n */\\n getMaterial(divisionName: string, city: CityName | `${CityName}`, materialName: string): Material;\\n /**\\n * Set market TA 1 for a material.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param on - market ta enabled\\n */\\n setMaterialMarketTA1(divisionName: string, city: CityName | `${CityName}`, materialName: string, on: boolean): void;\\n /**\\n * Set market TA 2 for a material.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param on - market ta enabled\\n */\\n setMaterialMarketTA2(divisionName: string, city: CityName | `${CityName}`, materialName: string, on: boolean): void;\\n\\n /** * Set market TA 1 for a product.\\n * @param divisionName - Name of the division\\n * @param productName - Name of the product\\n * @param on - market ta enabled */\\n setProductMarketTA1(divisionName: string, productName: string, on: boolean): void;\\n\\n /** Set market TA 2 for a product.\\n * @param divisionName - Name of the division\\n * @param productName - Name of the product\\n * @param on - market ta enabled */\\n setProductMarketTA2(divisionName: string, productName: string, on: boolean): void;\\n /**\\n * Set material export data\\n * @param sourceDivision - Source division\\n * @param sourceCity - Source city\\n * @param targetDivision - Target division\\n * @param targetCity - Target city\\n * @param materialName - Name of the material\\n * @param amt - Amount of material to export.\\n */\\n exportMaterial(\\n sourceDivision: string,\\n sourceCity: CityName | `${CityName}`,\\n targetDivision: string,\\n targetCity: CityName | `${CityName}`,\\n materialName: string,\\n amt: number | string,\\n ): void;\\n /**\\n * Cancel material export\\n * @param sourceDivision - Source division\\n * @param sourceCity - Source city\\n * @param targetDivision - Target division\\n * @param targetCity - Target city\\n * @param materialName - Name of the material\\n */\\n cancelExportMaterial(\\n sourceDivision: string,\\n sourceCity: CityName | `${CityName}`,\\n targetDivision: string,\\n targetCity: CityName | `${CityName}`,\\n materialName: string,\\n ): void;\\n /**\\n * Purchase warehouse for a new city\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n */\\n purchaseWarehouse(divisionName: string, city: CityName | `${CityName}`): void;\\n /**\\n * Upgrade warehouse\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param amt - amount of upgrades defaults to 1\\n */\\n upgradeWarehouse(divisionName: string, city: CityName | `${CityName}`, amt?: number): void;\\n /**\\n * Create a new product\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param productName - Name of the product\\n * @param designInvest - Amount to invest for the design of the product.\\n * @param marketingInvest - Amount to invest for the marketing of the product.\\n */\\n makeProduct(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n productName: string,\\n designInvest: number,\\n marketingInvest: number,\\n ): void;\\n /**\\n * Limit Material Production.\\n * @param divisionName - Name of the division.\\n * @param city - Name of the city.\\n * @param materialName - Name of the material.\\n * @param qty - Amount to limit to. Pass a negative value to remove the limit instead.\\n */\\n limitMaterialProduction(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n materialName: string,\\n qty: number,\\n ): void;\\n /**\\n * Limit Product Production.\\n * @param divisionName - Name of the division.\\n * @param city - Name of the city.\\n * @param productName - Name of the product.\\n * @param qty - Amount to limit to. Pass a negative value to remove the limit instead.\\n */\\n limitProductProduction(divisionName: string, city: CityName | `${CityName}`, productName: string, qty: number): void;\\n /**\\n * Gets the cost to upgrade a warehouse to the next level\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param amt - amount of upgrades. Optional, defaults to 1\\n * @returns cost to upgrade\\n */\\n getUpgradeWarehouseCost(divisionName: string, city: CityName | `${CityName}`, amt?: number): number;\\n /**\\n * Check if you have a warehouse in city\\n * @returns true if warehouse is present, false if not\\n */\\n hasWarehouse(divisionName: string, city: CityName | `${CityName}`): boolean;\\n}\\n\\n/**\\n * Corporation API\\n * @public\\n */\\nexport interface Corporation extends WarehouseAPI, OfficeAPI {\\n /** Returns whether the player has a corporation. Does not require API access.\\n * @returns whether the player has a corporation */\\n hasCorporation(): boolean;\\n\\n /** Create a Corporation\\n * @param corporationName - Name of the corporation\\n * @param selfFund - If you should self fund, defaults to true, false will only work on Bitnode 3\\n * @returns true if created and false if not */\\n createCorporation(corporationName: string, selfFund: boolean): boolean;\\n\\n /** Check if you have a one time unlockable upgrade\\n * @param upgradeName - Name of the upgrade\\n * @returns true if unlocked and false if not */\\n hasUnlock(upgradeName: string): boolean;\\n\\n /** Gets the cost to unlock a one time unlockable upgrade\\n * @param upgradeName - Name of the upgrade\\n * @returns cost of the upgrade */\\n getUnlockCost(upgradeName: string): number;\\n\\n /** Get the level of a levelable upgrade\\n * @param upgradeName - Name of the upgrade\\n * @returns the level of the upgrade */\\n getUpgradeLevel(upgradeName: string): number;\\n\\n /** Gets the cost to unlock the next level of a levelable upgrade\\n * @param upgradeName - Name of the upgrade\\n * @returns cost of the upgrade */\\n getUpgradeLevelCost(upgradeName: string): number;\\n\\n /** Get an offer for investment based on you companies current valuation\\n * @returns An offer of investment */\\n getInvestmentOffer(): InvestmentOffer;\\n\\n /** Get corporation related constants\\n * @returns corporation related constants */\\n getConstants(): CorpConstants;\\n\\n /** Get constant industry definition data for a specific industry */\\n getIndustryData(industryName: CorpIndustryName): CorpIndustryData;\\n\\n /** Get constant data for a specific material */\\n getMaterialData(materialName: CorpMaterialName): CorpMaterialConstantData;\\n\\n /** Accept investment based on you companies current valuation\\n * @remarks\\n * Is based on current valuation and will not honer a specific Offer\\n * @returns An offer of investment */\\n acceptInvestmentOffer(): boolean;\\n\\n /** Go public\\n * @param numShares - number of shares you would like to issue for your IPO\\n * @returns true if you successfully go public, false if not */\\n goPublic(numShares: number): boolean;\\n\\n /** Bribe a faction\\n * @param factionName - Faction name\\n * @param amountCash - Amount of money to bribe\\n * @returns True if successful, false if not */\\n bribe(factionName: string, amountCash: number): boolean;\\n\\n /** Get corporation data\\n * @returns Corporation data */\\n getCorporation(): CorporationInfo;\\n\\n /** Get division data\\n * @param divisionName - Name of the division\\n * @returns Division data */\\n getDivision(divisionName: string): Division;\\n\\n /** Expand to a new industry\\n * @param industryType - Name of the industry\\n * @param divisionName - Name of the division */\\n expandIndustry(industryType: CorpIndustryName, divisionName: string): void;\\n\\n /** Expand to a new city\\n * @param divisionName - Name of the division\\n * @param city - Name of the city */\\n expandCity(divisionName: string, city: CityName | `${CityName}`): void;\\n\\n /** Unlock an upgrade\\n * @param upgradeName - Name of the upgrade */\\n purchaseUnlock(upgradeName: string): void;\\n\\n /** Level an upgrade.\\n * @param upgradeName - Name of the upgrade */\\n levelUpgrade(upgradeName: string): void;\\n\\n /** Issue dividends\\n * @param rate - Fraction of profit to issue as dividends. */\\n issueDividends(rate: number): void;\\n\\n /** Issue new shares\\n * @param amount - Number of new shares to issue, will be rounded to nearest 10m. Defaults to max amount.\\n * @returns Amount of funds generated for the corporation. */\\n issueNewShares(amount?: number): number;\\n\\n /** Buyback Shares\\n * @param amount - Amount of shares to buy back, must be integer and larger than 0 */\\n buyBackShares(amount: number): void;\\n\\n /** Sell Shares\\n * @param amount - Amount of shares to sell, must be integer between 1 and 100t */\\n sellShares(amount: number): void;\\n\\n /** Get bonus time.\\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\\n * “Bonus time” makes the game progress faster.\\n * @returns Bonus time for the Corporation mechanic in milliseconds. */\\n getBonusTime(): number;\\n}\\n\\n/** Product rating information\\n * @public */\\ninterface CorpProductData {\\n /** Name of the product */\\n name: string;\\n /** Verb used to describe creation of the product */\\n verb: string;\\n /** Description of product creation */\\n desc: string;\\n /** Weighting factors for product */\\n ratingWeights: {\\n aesthetics?: number;\\n durability?: number;\\n features?: number;\\n quality?: number;\\n performance?: number;\\n reliability?: number;\\n };\\n}\\n\\n/** Data for an individual industry\\n * @public */\\ninterface CorpIndustryData {\\n startingCost: number;\\n description: string;\\n product?: CorpProductData;\\n recommendStarting: boolean;\\n requiredMaterials: Partial>;\\n /** Real estate factor */\\n realEstateFactor?: number;\\n /** Scientific research factor (affects quality) */\\n scienceFactor?: number;\\n /** Hardware factor */\\n hardwareFactor?: number;\\n /** Robots factor */\\n robotFactor?: number;\\n /** AI Cores factor */\\n aiCoreFactor?: number;\\n /** Advertising factor (affects sales) */\\n advertisingFactor?: number;\\n producedMaterials?: CorpMaterialName[];\\n}\\n\\n/**\\n * General info about a corporation\\n * @public\\n */\\ninterface CorporationInfo {\\n /** Name of the corporation */\\n name: string;\\n /** Funds available */\\n funds: number;\\n /** Revenue per second this cycle */\\n revenue: number;\\n /** Expenses per second this cycle */\\n expenses: number;\\n /** Indicating if the company is public */\\n public: boolean;\\n /** Total number of shares issues by this corporation */\\n totalShares: number;\\n /** Amount of share owned */\\n numShares: number;\\n /** Cooldown until shares can be sold again */\\n shareSaleCooldown: number;\\n /** Amount of acquirable shares. */\\n issuedShares: number;\\n /** Price of the shares */\\n sharePrice: number;\\n /** Fraction of profits issued as dividends */\\n dividendRate: number;\\n /** Tax applied on your earnings as a shareholder */\\n dividendTax: number;\\n /** Your earnings as a shareholder per second this cycle */\\n dividendEarnings: number;\\n /** State of the corporation. Possible states are START, PURCHASE, PRODUCTION, EXPORT, SALE. */\\n state: string;\\n /** Array of all division names */\\n divisions: string[];\\n}\\n\\n/**\\n * Corporation related constants\\n * @public\\n */\\ninterface CorpConstants {\\n /** Names of all corporation game states */\\n stateNames: CorpStateName[];\\n /** Names of all employee positions */\\n employeePositions: CorpEmployeePosition[];\\n /** Names of all industries */\\n industryNames: CorpIndustryName[];\\n /** Names of all materials */\\n materialNames: CorpMaterialName[];\\n /** Names of all one-time corporation-wide unlocks */\\n unlockNames: CorpUnlockName[];\\n /** Names of all corporation-wide upgrades */\\n upgradeNames: CorpUpgradeName[];\\n /** Names of all researches common to all industries */\\n researchNamesBase: CorpResearchName[];\\n /** Names of all researches only available to product industries */\\n researchNamesProductOnly: CorpResearchName[];\\n /** Names of all researches */\\n researchNames: CorpResearchName[];\\n initialShares: number;\\n /** When selling large number of shares, price is dynamically updated for every batch of this amount */\\n sharesPerPriceUpdate: number;\\n /** Cooldown for issue new shares cooldown in game cycles (1 game cycle = 200ms) */\\n issueNewSharesCooldown: number;\\n /** Cooldown for selling shares in game cycles (1 game cycle = 200ms) */\\n sellSharesCooldown: number;\\n teaCostPerEmployee: number;\\n gameCyclesPerMarketCycle: number;\\n gameCyclesPerCorpStateCycle: number;\\n secondsPerMarketCycle: number;\\n warehouseInitialCost: number;\\n warehouseInitialSize: number;\\n warehouseSizeUpgradeCostBase: number;\\n officeInitialCost: number;\\n officeInitialSize: number;\\n officeSizeUpgradeCostBase: number;\\n bribeThreshold: number;\\n bribeAmountPerReputation: number;\\n baseProductProfitMult: number;\\n dividendMaxRate: number;\\n /** Conversion factor for employee stats to initial salary */\\n employeeSalaryMultiplier: number;\\n marketCyclesPerEmployeeRaise: number;\\n employeeRaiseAmount: number;\\n /** Max products for a division without upgrades */\\n maxProductsBase: number;\\n /** The minimum decay value for morale/energy */\\n minEmployeeDecay: number;\\n smartSupplyOptions: CorpSmartSupplyOption[];\\n}\\n/** @public */\\ntype CorpStateName = \\\"START\\\" | \\\"PURCHASE\\\" | \\\"PRODUCTION\\\" | \\\"EXPORT\\\" | \\\"SALE\\\";\\n\\n/** @public */\\ntype CorpMaterialName =\\n | \\\"Minerals\\\"\\n | \\\"Ore\\\"\\n | \\\"Water\\\"\\n | \\\"Food\\\"\\n | \\\"Plants\\\"\\n | \\\"Metal\\\"\\n | \\\"Hardware\\\"\\n | \\\"Chemicals\\\"\\n | \\\"Drugs\\\"\\n | \\\"Robots\\\"\\n | \\\"AI Cores\\\"\\n | \\\"Real Estate\\\";\\n\\n/** @public */\\ntype CorpUnlockName =\\n | \\\"Export\\\"\\n | \\\"Smart Supply\\\"\\n | \\\"Market Research - Demand\\\"\\n | \\\"Market Data - Competition\\\"\\n | \\\"VeChain\\\"\\n | \\\"Shady Accounting\\\"\\n | \\\"Government Partnership\\\"\\n | \\\"Warehouse API\\\"\\n | \\\"Office API\\\";\\n\\n/** @public */\\ntype CorpUpgradeName =\\n | \\\"Smart Factories\\\"\\n | \\\"Smart Storage\\\"\\n | \\\"DreamSense\\\"\\n | \\\"Wilson Analytics\\\"\\n | \\\"Nuoptimal Nootropic Injector Implants\\\"\\n | \\\"Speech Processor Implants\\\"\\n | \\\"Neural Accelerators\\\"\\n | \\\"FocusWires\\\"\\n | \\\"ABC SalesBots\\\"\\n | \\\"Project Insight\\\";\\n\\n/** @public */\\ntype CorpResearchName =\\n | \\\"Hi-Tech R&D Laboratory\\\"\\n | \\\"AutoBrew\\\"\\n | \\\"AutoPartyManager\\\"\\n | \\\"Automatic Drug Administration\\\"\\n | \\\"CPH4 Injections\\\"\\n | \\\"Drones\\\"\\n | \\\"Drones - Assembly\\\"\\n | \\\"Drones - Transport\\\"\\n | \\\"Go-Juice\\\"\\n | \\\"HRBuddy-Recruitment\\\"\\n | \\\"HRBuddy-Training\\\"\\n | \\\"Market-TA.I\\\"\\n | \\\"Market-TA.II\\\"\\n | \\\"Overclock\\\"\\n | \\\"Self-Correcting Assemblers\\\"\\n | \\\"Sti.mu\\\"\\n | \\\"uPgrade: Capacity.I\\\"\\n | \\\"uPgrade: Capacity.II\\\"\\n | \\\"uPgrade: Dashboard\\\"\\n | \\\"uPgrade: Fulcrum\\\"\\n | \\\"sudo.Assist\\\";\\n\\n/**\\n * Corporation material information\\n * @public\\n */\\ninterface CorpMaterialConstantData {\\n /** Name of the material */\\n name: string;\\n /** Size of the material */\\n size: number;\\n demandBase: number;\\n /** Min and max demand */\\n demandRange: [min: number, max: number];\\n competitionBase: number;\\n competitionRange: [min: number, max: number];\\n baseCost: number;\\n maxVolatility: number;\\n baseMarkup: number;\\n}\\n\\n/**\\n * Corporation industry information\\n * @public\\n */\\ninterface IndustryData {\\n /** Industry type */\\n type: CorpIndustryName;\\n /** Cost to make a new division of this industry type */\\n cost: number;\\n /** Materials required for production and their amounts */\\n requiredMaterials: Record;\\n /** Materials produced */\\n producedMaterials?: string[];\\n /** Whether the division makes materials */\\n makesMaterials: boolean;\\n /** Whether the division makes products */\\n makesProducts: boolean;\\n /** Product type */\\n productType?: string;\\n}\\n\\n/**\\n * Product in a warehouse\\n * @public\\n */\\ninterface Product {\\n /** Name of the product */\\n name: string;\\n /** Demand for the product, only present if \\\"Market Research - Demand\\\" unlocked */\\n demand: number | undefined;\\n /** Competition for the product, only present if \\\"Market Research - Competition\\\" unlocked */\\n competition: number | undefined;\\n /** Rating based on stats */\\n rating: number;\\n /** Effective rating in the specific city */\\n effectiveRating: number;\\n /** Product stats */\\n stats: {\\n quality: number;\\n performance: number;\\n durability: number;\\n reliability: number;\\n aesthetics: number;\\n features: number;\\n };\\n /** Production cost */\\n productionCost: number;\\n /** Desired sell price, can be \\\"MP+5\\\" */\\n desiredSellPrice: string | number;\\n /** Desired sell amount, e.g. \\\"PROD/2\\\" */\\n desiredSellAmount: string | number;\\n /** Amount of product stored in warehouse*/\\n stored: number;\\n /** Amount of product produced last cycle */\\n productionAmount: number;\\n /** Amount of product sold last cycle */\\n actualSellAmount: number;\\n /** A number between 0-100 representing percentage completion */\\n developmentProgress: number;\\n /** Funds that were spent on advertising the product */\\n advertisingInvestment: number;\\n /** Funds that were spent on designing the product */\\n designInvestment: number;\\n}\\n\\n/**\\n * Material in a warehouse\\n * @public\\n */\\ninterface Material {\\n /** Name of the material */\\n name: CorpMaterialName;\\n /** Amount of material */\\n stored: number;\\n /** Quality of the material */\\n quality: number;\\n /** Demand for the material, only present if \\\"Market Research - Demand\\\" unlocked */\\n demand: number | undefined;\\n /** Competition for the material, only present if \\\"Market Research - Competition\\\" unlocked */\\n competition: number | undefined;\\n /** Amount of material produced last cycle */\\n productionAmount: number;\\n /** Amount of material sold last cycle */\\n actualSellAmount: number;\\n /** Cost to buy material */\\n marketPrice: number;\\n /** Sell cost, can be \\\"MP+5\\\" */\\n desiredSellPrice: string | number;\\n /** Sell amount, can be \\\"PROD/2\\\" */\\n desiredSellAmount: string | number;\\n /** Export orders */\\n exports: Export[];\\n}\\n\\n/**\\n * Export order for a material\\n * @public\\n */\\ninterface Export {\\n /** Division the material is being exported to */\\n division: string;\\n /** City the material is being exported to */\\n city: CityName;\\n /** Amount of material exported */\\n amount: string;\\n}\\n\\n/**\\n * Warehouse for a division in a city\\n * @public\\n */\\ninterface Warehouse {\\n /** Amount of size upgrade bought */\\n level: number;\\n /** City in which the warehouse is located */\\n city: CityName;\\n /** Total space in the warehouse */\\n size: number;\\n /** Used space in the warehouse */\\n sizeUsed: number;\\n /** Smart Supply status in the warehouse */\\n smartSupplyEnabled: boolean;\\n}\\n\\n/**\\n * Office for a division in a city.\\n * @public\\n */\\nexport interface Office {\\n /** City of the office */\\n city: CityName;\\n /** Maximum number of employee */\\n size: number;\\n /** Maximum amount of energy of the employees */\\n maxEnergy: number;\\n /** Maximum morale of the employees */\\n maxMorale: number;\\n /** Amount of employees */\\n numEmployees: number;\\n /** Average energy of the employees */\\n avgEnergy: number;\\n /** Average morale of the employees */\\n avgMorale: number;\\n /** Total experience of all employees */\\n totalExperience: number;\\n /** Production of the employees */\\n employeeProductionByJob: Record;\\n /** Positions of the employees */\\n employeeJobs: Record;\\n}\\n\\n/**\\n * Corporation division\\n * @public\\n */\\ninterface Division {\\n /** Name of the division */\\n name: string;\\n /** Type of division, like Agriculture */\\n type: CorpIndustryName;\\n /** Awareness of the division */\\n awareness: number;\\n /** Popularity of the division */\\n popularity: number;\\n /** Production multiplier */\\n productionMult: number;\\n /** Amount of research in that division */\\n researchPoints: number;\\n /** Revenue last cycle */\\n lastCycleRevenue: number;\\n /** Expenses last cycle */\\n lastCycleExpenses: number;\\n /** Revenue this cycle */\\n thisCycleRevenue: number;\\n /** Expenses this cycle */\\n thisCycleExpenses: number;\\n /** Number of times AdVert has been bought */\\n numAdVerts: number;\\n /** Cities in which this division has expanded */\\n cities: CityName[];\\n /** Names of Products developed by this division */\\n products: string[];\\n /** Whether the industry this division is in is capable of making products */\\n makesProducts: boolean;\\n /** How many products this division can support */\\n maxProducts: number;\\n}\\n\\n/**\\n * Corporation investment offer\\n * @public\\n */\\ninterface InvestmentOffer {\\n /** Amount of funds you will get from this investment */\\n funds: number;\\n /** Amount of share you will give in exchange for this investment */\\n shares: number;\\n /** Current round of funding (max 4) */\\n round: number;\\n}\\n\\n/**\\n * Interface Theme\\n * @public\\n */\\ninterface UserInterfaceTheme {\\n [key: string]: string | undefined;\\n primarylight: string;\\n primary: string;\\n primarydark: string;\\n successlight: string;\\n success: string;\\n successdark: string;\\n errorlight: string;\\n error: string;\\n errordark: string;\\n secondarylight: string;\\n secondary: string;\\n secondarydark: string;\\n warninglight: string;\\n warning: string;\\n warningdark: string;\\n infolight: string;\\n info: string;\\n infodark: string;\\n welllight: string;\\n well: string;\\n white: string;\\n black: string;\\n hp: string;\\n money: string;\\n hack: string;\\n combat: string;\\n cha: string;\\n int: string;\\n rep: string;\\n disabled: string;\\n backgroundprimary: string;\\n backgroundsecondary: string;\\n button: string;\\n}\\n\\n/**\\n * Interface Styles\\n * @public\\n */\\ninterface IStyleSettings {\\n fontFamily: string;\\n lineHeight: number;\\n}\\n\\n/**\\n * Game Information\\n * @public\\n */\\ninterface GameInfo {\\n version: string;\\n commit: string;\\n platform: string;\\n}\\n\\n/**\\n * Used for autocompletion\\n * @public\\n */\\ninterface AutocompleteData {\\n servers: string[];\\n scripts: string[];\\n txts: string[];\\n flags(schema: [string, string | number | boolean | string[]][]): { [key: string]: ScriptArg | string[] };\\n}\\n\";","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbitburner\"] = self[\"webpackChunkbitburner\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [736], () => (__webpack_require__(73681)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["AchievementEntry","achievement","unlockedOn","cssFiltersUnlocked","cssFiltersLocked","isUnlocked","mainColor","Settings","achievedOn","Date","toLocaleString","sx","border","mb","display","flexDirection","flexWrap","unlocked","size","colorFilters","justifyContent","px","variant","color","Name","maxWidth","Description","fontSize","AchievementIcon","imgLoaded","setImgLoaded","useState","Icon","width","height","m","visibility","src","encodeURI","style","filter","onLoad","alt","AchievementList","achievements","playerAchievements","cssPrimary","getFiltersFromHex","cssSecondary","data","map","find","playerAchievement","ID","sort","a","b","entry","secret","Secret","unavailable","Visible","locked","u","includes","pr","my","length","defaultExpanded","disableGutters","square","pt","item","key","mt","content","achievementData","bitNodeFinishedState","wd","GetServer","SpecialServers","Server","backdoorInstalled","Player","BlackOperationName","hasAccessToSF","bn","knowsAboutBitverse","FactionName","Condition","THE_BLACK_HAND","THE_COVENANT","replace","programs","CompletedProgramName","achs","i","sfAchievements","MONEY_1Q","MONEY_M1B","INSTALL_1","INSTALL_100","QUEUE_40","HACKING_100000","COMBAT_3000","NEUROFLUX_255","name","AugmentationName","level","NS2","scripts","values","some","s","filename","endsWith","FROZE","location","href","RUNNING_SCRIPTS_1000","workerScripts","DRAIN_SERVER","GetAllServers","moneyMax","moneyAvailable","MAX_RAM","maxRam","CONSTANTS","MAX_CORES","cpuCores","SCRIPTS_30","KARMA_1000000","STOCK_1q","DISCOUNT","p","SCRIPT_32GB","ramUsage","FIRST_HACKNET_NODE","hasHacknetServers","MAX_HACKNET_NODE","h","HacknetNode","ram","HacknetNodeConstants","cores","HACKNET_NODE_10M","REPUTATION_10M","Object","Factions","f","playerReputation","DONATION","favor","Math","floor","currentNodeMults","TRAVEL","CityName","WORKOUT","isClassWork","TOR","HOSPITALIZED","GANG","FULL_GANG","GangConstants","GANG_TERRITORY","AllGangs","territory","GANG_MEMBER_POWER","hack","str","def","dex","agi","cha","CORPORATION","CORPORATION_BRIBE","CorpUnlockName","CORPORATION_PROD_1000","division","productionMult","CORPORATION_EMPLOYEE_3000","getRecordValues","offices","reduce","numEmployees","CORPORATION_REAL_ESTATE","type","IndustryType","INTELLIGENCE_255","BLADEBURNER_DIVISION","BLADEBURNER_OVERCLOCK","SkillNames","Skills","maxLvl","BLADEBURNER_UNSPENT_100000","FIRST_HACKNET_SERVER","AdditionalUnlock","ALL_HACKNET_SERVER","HacknetServerConstants","MAX_HACKNET_SERVER","hs","HacknetServer","cache","HACKNET_SERVER_1B","MAX_CACHE","SLEEVE_8","INDECISIVE","c","setInterval","Router","Page","FAST_BN","CHALLENGE_BN1","CHALLENGE_BN2","CHALLENGE_BN3","CHALLENGE_BN6","CHALLENGE_BN7","CHALLENGE_BN8","CHALLENGE_BN9","CHALLENGE_BN10","augmentations","exp","hacking","strength","defense","agility","dexterity","charisma","CHALLENGE_BN12","BYPASS","Exploit","PROTOTYPETAMPERING","UNCLICKABLE","UNDOCUMENTEDFUNCTIONCALL","TIMECOMPRESSION","REALITYALTERATION","N00DLES","EDITSAVEFILE","UNACHIEVABLE","CHALLENGE_BN13","DEVMENU","RAINBOW","TRUE_RECURSION","calculateAchievements","missingAchievements","flatMap","id","document","useStyles","makeStyles","theme","createStyles","root","padding","spacing","userSelect","AchievementsRoot","classes","className","Aliases","Map","GlobalAliases","loadAliases","saveString","clear","parsedAliases","JSON","parse","alias","entries","set","loadGlobalAliases","printAliases","Terminal","parseAliasDeclaration","dec","global","re","matches","match","trimQuotes","addGlobalAlias","addAlias","value","delete","trim","removeAlias","hadAlias","has","substituteAliases","origCommand","commandArray","split","join","lastAlias","somethingSubstituted","depth","get","undefined","splice","ArcadeRoot","page","setPage","None","onClick","AlertEvents","Megabyteburner2000","currentGame","BBCabinetRoot","useEffect","window","addEventListener","ev","isTrusted","origin","joystick","lineHeight","whiteSpace","overflow","borderColor","borderStyle","borderWidth","Augmentation","baseCost","baseRepRequirement","isSpecial","prereqs","mults","defaultMultipliers","factions","constructor","params","this","info","repCost","freeze","moneyCost","multName","getRecordKeys","mult","stats","startingMoney","x","formatPercent","desc","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","hacking_speed","hacking_chance","hacking_money","hacking_grow","faction_rep","company_rep","crime_money","crime_success","work_money","hacknet_node_money","hacknet_node_purchase_cost","hacknet_node_level_cost","bladeburner_max_stamina","bladeburner_stamina_gain","bladeburner_analysis","bladeburner_success_chance","generateStatsDescription","getLevel","aug","getNextLevel","getBaseAugmentationPriceMultiplier","getGenericAugmentationPriceMultiplier","pow","applyAugmentation","reapply","staticAugmentation","Augmentations","mergeMultipliers","ownedNfg","pAug","ownedAug","PlayerOwnedAugmentation","installAugmentations","force","dialogBoxCreate","augmentationList","nfgIndex","console","error","prestigeAugmentation","isRepeatableAug","getAugCost","multiplier","soaAugCount","augName","donationBonus","metadata","Infinity","hacknet_node_ram_cost","hacknet_node_core_cost","toFixed","factionName","getUnstableCircadianModulatorParams","createEnumKeyedRecord","initCircadianModulator","randomBonuses","bonuses","description","randomNumber","WHRNG","now","step","random","getRandomBonus","UnstableCircadianModulatorParams","forEach","NeuroFluxDisplay","e","EntropyDisplay","formatNumberNoSuffix","AugmentationsRoot","props","installOpen","setInstallOpen","rerender","useRerender","mx","alignItems","title","ml","open","onClose","onConfirm","installAugmentationsFn","confirmationText","gridTemplateColumns","disabled","exportGameFn","canGetBonus","gap","InstalledAugmentations","sourceAugs","selectedAug","setSelectedAug","OwnedAugmentationsOrderSetting","aug1","aug2","localeCompare","overflowY","borderRight","k","selected","maxHeight","BitNodeModifiedStats","base","opacity","MultiplierList","listItems","rows","current","augmented","bnMult","isNaN","py","primary","secondary","disableTypography","disablePadding","PlayerMultipliers","augP","augObj","calculateAugmentedStats","leftColData","defineProperty","rightColData","push","PreReqs","ownedPreReqs","hasPreReqs","preAug","Requirement","fulfilled","gridArea","mr","Exclusive","transform","PurchasableAugmentations","augNames","PurchasableAugmentation","parent","owned","ownedAugNames","setOpen","interval","clearInterval","augLevel","augCosts","cost","sleeveAugs","minWidth","purchaseAugmentation","canPurchase","float","gridTemplateAreas","textOverflow","formatMoney","rep","formatReputation","faction","PurchaseAugmentationModal","money","autoFocus","PurchasedAugmentations","augs","displayName","enterNextDelay","safeGetSf","sfNum","ExploitName","lvl","n","srcFileKey","sfObj","SourceFiles","getMaxLevel","maxLevel","keys","SourceFilesElement","sourceFilesCopy","exploits","sfList","n1","__lvl1","n2","__lvl2","selectedSf","setSelectedSf","BitNode","difficulty","number","BitNodes","initBitNodes","BitNode1","BitNode2","BitNode3","BitNode4","BitNode5","BitNode6","BitNode7","BitNode8","BitNode9","BitNode10","BitNode11","BitNode12","BitNode13","BitNodeMultipliers","getBitNodeMultipliers","HackingLevelMultiplier","ServerGrowthRate","ServerMaxMoney","ServerStartingMoney","PurchasedServerSoftcap","CrimeMoney","FactionPassiveRepGain","FactionWorkRepGain","CorporationSoftcap","CorporationDivisions","InfiltrationMoney","StaneksGiftPowerMultiplier","StaneksGiftExtraSize","WorldDaemonDifficulty","HomeComputerRamCost","PurchasedServerCost","CompanyWorkMoney","HacknetNodeMoney","ScriptHackMoney","RepToDonateToFaction","AugmentationMoneyCost","AugmentationRepCost","GangSoftcap","GangUniqueAugs","ClassGymExpGain","CompanyWorkExpGain","CrimeExpGain","FactionWorkExpGain","HackExpGain","ServerStartingSecurity","InfiltrationRep","CorporationValuation","DaedalusAugsRequirement","FourSigmaMarketDataCost","FourSigmaMarketDataApiCost","BladeburnerRank","BladeburnerSkillCost","ManualHackMoney","ScriptHackMoneyGain","CodingContractMoney","StrengthLevelMultiplier","DefenseLevelMultiplier","DexterityLevelMultiplier","AgilityLevelMultiplier","CharismaLevelMultiplier","PurchasedServerLimit","PurchasedServerMaxRam","ServerWeakenRate","inc","min","Error","initBitNodeMultipliers","replaceCurrentNodeMults","getRecordEntries","BitFlumeEvent","EventEmitter","BitFlumeModal","subscribe","flume","quick","BitnodeMultiplierDescription","React","component","Paper","old","in","BitNodeMultipliersDisplay","maxSfLevel","columnCount","columnGap","GeneralMults","SkillMults","FactionMults","AugmentationMults","HackingMults","PurchasedServersMults","StockMults","CrimeMults","InfiltrationMults","CompanyMults","GangMults","CorporationMults","BladeburnerMults","StanekMults","BNMultTable","rowsArray","rowData","uniqueId","marginBottom","sectionName","String","extraSize","portal","cursor","fontFamily","fontWeight","level0","level1","level2","level3","BitNodePortal","portalOpen","setPortalOpen","bitNode","cssClass","toString","destroyedBitNode","BitverseRoot","destroyed","destroySequence","setDestroySequence","lines","onDone","auto","nextSourceFileLvl","max","Number","node","PortalModal","bitNodeKey","maxSourceFileLevel","newLevel","B","enterBitNode","Action","autoLevel","baseDifficulty","difficultyFac","rewardFac","successes","failures","rankGain","rankLoss","hpLoss","hpLost","isStealth","isKill","count","getRandomInt","weights","int","decays","teamCount","addOffset","sum","weight","hasOwn","EPSILON","decay","getDifficulty","attempt","inst","person","getSuccessChance","getActionTimePenalty","getActionTime","baseTime","BladeburnerConstants","skillFac","skillMultipliers","actionTime","effAgility","skills","effAgi","effDexterity","effDex","statFac","ceil","getTeamSuccessBonus","__inst","getActionTypeSkillSuccessBonus","getChaosCompetencePenalty","city","getCurrentCity","est","popEst","pop","getChaosDifficultyBonus","chaos","diff","getEstSuccessChance","clamp","real","abs","low","high","r","competence","stat","playerStatLvl","queryStatFromString","charAt","toUpperCase","slice","effMultiplier","calculateIntelligenceBonus","intelligence","calculateStaminaPenalty","comms","successChanceAll","successChanceStealth","successChanceKill","getSuccessesNeededForNextLevel","baseSuccessesPerLevel","setMaxLevel","toJSON","Generic_toJSON","static","Generic_fromJSON","constructorsForReviver","ActionIdentifier","BlackOperation","Operation","super","BlackOperations","reqdRank","Bladeburner","numHosp","moneyLost","rank","maxRank","skillPoints","totalSkillPoints","teamSize","sleeveSize","teamLost","storedCycles","randomEventCounter","actionTimeToComplete","actionTimeCurrent","actionTimeOverflow","action","ActionTypes","cities","City","staminaBonus","maxStamina","stamina","contracts","operations","blackops","logging","general","ops","events","automateEnabled","automateActionHigh","automateThreshHigh","automateActionLow","automateThreshLow","consoleHistory","consoleLogs","updateSkillMultipliers","calculateMaxStamina","create","canAttemptBlackOp","actionId","getActionObject","nm","indexOf","isAvailable","startAction","resetAction","exceptionAlert","testBlackOp","log","getRecruitmentTime","upgradeSkill","skill","skillName","executeConsoleCommands","commands","arrayOfCommands","executeConsoleCommand","postToConsole","input","shift","getTimestamp","clearConsole","prestige","bladeburnerFac","joinFaction","storeCycles","numCycles","getActionIdFromTypeAndName","convertedType","toLowerCase","convertedName","startsWith","executeStartConsoleCommand","args","GeneralActions","executeSkillConsoleCommand","skillNames","multKeys","warn","currentLevel","pointCost","calculateCost","executeLogConsoleCommand","flag","executeHelpConsoleCommand","line","ConsoleHelpText","helpText","executeAutomateConsoleCommand","variable","val","highLow","parseFloat","parseCommandArguments","command","start","endQuote","KEY","substr","triggerMigration","sourceCityName","cityHelper","getEnumHelper","destCityName","destCity","sourceCity","rand","percentage","round","triggerPotentialMigration","chance","randomEvent","getActionStats","success","difficultyMult","time","successMult","unweightedGain","unweightedIntGain","skillMult","expGain","hackExp","strExp","defExp","dexExp","agiExp","chaExp","intExp","reputation","getDiplomacyEffectiveness","getRecruitmentSuccessChance","effCharisma","effCha","charismaFactor","sleeveSupport","joining","resetSkillMultipliers","successChanceContract","successChanceOperation","successChanceEstimate","effHack","effStr","effDef","effInt","multiplierNames","multiplierName","getMultiplier","multiplierValue","completeOperation","losses","sup","isSleeveSupportWork","currentWork","takeDamage","hp","improvePopulationEstimateByPercentage","changePopulationByPercentage","changeEstEqually","nonZero","changeChaosByCount","change","changeChaosByPercentage","changePopulationByCount","estChange","estOffset","completeContract","actionIdent","improvePopulationEstimateByCount","completeAction","isPlayer","retValue","newWorkStats","isOperation","difficultyMultiplier","rewardMultiplier","moneyGain","gain","changeRank","whoAmI","formatBigNumber","loss","damage","calculateHospitalizationCost","logLossText","teamLossMax","strExpGain","defExpGain","dexExpGain","agiExpGain","staminaGain","formatExp","eff","hackingExpGain","charismaExpGain","successChance","recruitTime","regenerateHp","formatStamina","contract","growthF","Growths","operation","cityName","infiltrateSynthoidCommunities","infilSleeves","isSleeveInfiltrateWork","amt","bladeburnersFactionName","isMember","favorBonus","rankNeededForSp","gainedSkillPoints","processAction","seconds","calculateStaminaGainPerSecond","maxStaminaBonus","oldMax","Tracking","Contract","Retirement","Investigation","Raid","Assassination","process","msg","op","getTypeAndNameFromActionId","res","types","getContractNamesNetscriptFn","getOperationNamesNetscriptFn","getBlackOpNamesNetscriptFn","getGeneralActionNamesNetscriptFn","getSkillNamesNetscriptFn","startActionNetscriptFn","workerScript","errorLogText","canRunOp","getActionTimeNetscriptFn","actionObj","getActionEstimatedSuccessChanceNetscriptFn","recChance","getActionCountRemainingNetscriptFn","getSkillLevelNetscriptFn","getSkillUpgradeCostNetscriptFn","upgradeSkillNetscriptFn","getTeamSizeNetscriptFn","setTeamSizeNetscriptFn","sanitizedSize","joinBladeburnerFactionNetscriptFn","actionNames","actionName","Skill","costInc","thisUpgrade","recursiveMode","unFloored","Idle","BlackOp","Training","Recruitment","FieldAnalysis","Diplomacy","CyclesPerSecond","StaminaGainPerSecond","BaseStaminaLoss","MaxStaminaToGainFactor","DifficultyToTimeFactor","DiffMultExponentialFactor","DiffMultLinearFactor","EffAgiLinearFactor","EffDexLinearFactor","EffAgiExponentialFactor","EffDexExponentialFactor","BaseRecruitmentTimeNeeded","PopulationThreshold","PopulationExponent","ChaosThreshold","BaseStatGain","BaseIntGain","ActionCountGrowthPeriod","RankToFactionRepFactor","RankNeededForFaction","ContractSuccessesPerLevel","OperationSuccessesPerLevel","RanksPerSkillPoint","ContractBaseMoneyGain","HrcHpGain","HrcStaminaGain","Contracts","helpList","automate","cls","help","stop","stealthIcon","xmlns","viewBox","fill","d","killIcon","Operations","BladesIntuition","Cloak","Marksman","WeaponProficiency","ShortCircuit","DigitalObserver","Tracer","Overclock","Reaper","EvasiveSystem","Datamancer","CybersEdge","HandsOfMidas","Hyperdrive","ActionLevel","isActive","bladeburner","canIncrease","canDecrease","AllPages","setValue","onChange","event","tab","label","Autolevel","checked","target","BlackOpElem","hasReqdRank","computedActionTimeCurrent","actionData","createProgressBarText","progress","convertTimeMsToTimeElapsedString","BlackOpList","blackopName","blackop","reverse","BlackOpPage","BladeburnerCinematic","BladeburnerRoot","textfield","margin","backgroundColor","colors","backgroundsecondary","nopadding","preformatted","list","Line","Console","setCommand","consoleInput","useRef","consoleHistoryIndex","setConsoleHistoryIndex","paddingBottom","focus","Logs","tabIndex","inputRef","onKeyDown","preventDefault","len","prevCommand","currentTarget","InputProps","startAdornment","spellCheck","scrollHook","scrollTop","scrollHeight","ref","ContractElem","ContractList","names","C","ContractPage","GeneralActionElem","GeneralActionList","actions","GeneralActionPage","KillIcon","OperationElem","OperationList","OperationPage","SkillElem","canLevel","onUpgrade","SkillList","SkillPage","setRerender","valid","StartButton","Stats","travelOpen","setTravelOpen","inFaction","overflowX","wordBreak","alignSelf","formatPopulation","StealthIcon","SuccessChance","estimatedSuccessChance","TeamSizeButton","TeamSizeModal","setTeamSize","placeholder","num","TravelModal","travel","currentCity","onTravel","MAX_BET","DECK_COUNT","Result","Blackjack","deck","Deck","initialBet","state","playerHand","Hand","dealerHand","bet","betInput","gameInProgress","result","Pending","gains","wagerInvalid","wagerInvalidHelperText","canStartGame","startGame","reachedLimit","win","safeDrawCard","setState","getTrueHandValue","finishGame","Tie","PlayerWonByBlackjack","DealerWon","getHandValue","hand","cards","handValues","valuesUnder21","getHandDisplayValues","isHandBusted","Set","playerHit","newHand","addCards","playerStay","newDealerHand","dealerHandValue","PlayerWon","playerHandValue","wagerOnChange","wager","startOnClick","render","playerHandValues","dealerHandValues","helperText","position","elevation","card","prev","curr","hidden","Suit","Card","suit","formatValue","isRedSuit","Hearts","Diamonds","getStringRepresentation","numDecks","reset","shuffle","drawCard","j","isEmpty","removeByIndex","borderRadius","textAlign","red","black","ReactCard","CoinFlip","investment","setInvestment","setResult","status","setStatus","playLock","setPlayLock","play","guess","letter","BadRNG","correct","setTimeout","parseInt","endAdornment","trusted","reached","getTime","s1","s2","s3","totalPlaytime","v","SFC32RNG","seed","imul","charCodeAt","genSeed","t","maxPlay","redNumbers","strategies","Red","payout","Black","Odd","Even","High","Low","Third1","Third2","Third3","Single","Roulette","rng","canPlay","setCanPlay","setN","lock","setLock","strategy","playerWin","isRed","currentNumber","colSpan","symbols","getPayout","payLines","SlotMachine","index","setIndex","locks","setLocks","stoppedOne","copy","every","getPaylineData","payline","point","countSequence","checkWinnings","getTable","generateRandomContract","problemType","getRandomProblemType","reward","getRandomReward","randServer","getRandomServer","contractFn","getRandomFilename","CodingContract","addContract","generateRandomContractOnHome","serv","generateDummyContract","CodingContractTypes","generateContract","problemTypes","server","fn","rewardType","factionsThatAllowHacking","fac","getInfo","offerHackingWork","CodingContractRewardType","sanitizeRewardType","numFactions","allJobs","servers","serversOnNetwork","randIndex","purchasedByPlayer","hostname","validatedPath","resolveContractFilePath","CodingContractType","gen","solver","numTries","generate","md","codingContractTypesMetadata","CodingContractResult","tries","path","getData","getDescription","getMaxNumTries","getType","isSolution","solution","async","Promise","resolve","CodingContractEvent","Cancelled","onAttempt","Success","Failure","Companies","getCompaniesMetadata","CompanyName","Company","loadCompanies","loadedCompanies","Reviver","loadedCompanyName","loadedCompany","company","assertLoadingType","loadedRep","loadedFavor","hasFaction","companyPositions","expMultiplier","salaryMultiplier","jobStatReqOffset","jobName","add","hasPosition","pos","hasAgentPositions","JobName","hasBusinessConsultantPositions","hasBusinessPositions","hasEmployeePositions","hasITPositions","hasSecurityPositions","hasSoftwareConsultantPositions","hasSoftwarePositions","hasWaiterPositions","getFavorGain","prestigeSourceFile","totalRep","favorToRep","repToFavor","includedKeys","CompanyPosition","nextPosition","baseSalary","repMultiplier","requiredHacking","reqdHacking","requiredStrength","reqdStrength","requiredDefense","reqdDefense","requiredDexterity","reqdDexterity","requiredAgility","reqdAgility","requiredCharisma","reqdCharisma","requiredReputation","reqdReputation","hackingEffectiveness","strengthEffectiveness","defenseEffectiveness","dexterityEffectiveness","agilityEffectiveness","charismaEffectiveness","strengthExpGain","defenseExpGain","dexterityExpGain","agilityExpGain","calculateJobPerformance","worker","hackRatio","strRatio","defRatio","dexRatio","agiRatio","chaRatio","reputationGain","isSoftwareJob","softwareJobs","isITJob","itJobs","isSecurityEngineerJob","isNetworkEngineerJob","netEngJobs","isBusinessJob","businessJobs","isSecurityJob","securityJobs","isAgentJob","agentJobs","isSoftwareConsultantJob","softwareConsultJobs","isBusinessConsultantJob","businessConsultJobs","isPartTimeJob","CompanyPositions","getCompanyPositionMetadata","getJobRequirementText","tooltiptext","reqText","offset","reqHacking","reqStrength","reqDefense","reqDexterity","reqAgility","reqCharisma","reqRep","substring","getNextCompanyPositionHelper","currPos","nextPosName","allTechJobs","softwareJobsToHeadOfEng","softwareJobsToLeadDev","businessJobToOpsManager","QuitJobModal","companyName","onQuit","companyNameAsLocationName","VersionString","isDevBranch","VersionNumber","MaxSkillLevel","MilliPerCycle","CorpFactionRepRequirement","BaseCostFor1GBOfRamHome","BaseCostFor1GBOfRamServer","TravelCost","BaseFavorToDonate","DonateMoneyToRepDivisor","FactionReputationToFavorBase","FactionReputationToFavorMult","CompanyReputationToFavorBase","CompanyReputationToFavorMult","NeuroFluxGovernorLevelMult","NumNetscriptPorts","MAX_SAFE_INTEGER","HomeComputerMaxRam","ServerBaseGrowthRate","ServerMaxGrowthRate","ServerFortifyAmount","ServerWeakenAmount","MultipleAugMultiplier","TorRouterCost","HospitalCostPerHp","IntelligenceCrimeWeight","IntelligenceInfiltrationWeight","IntelligenceCrimeBaseExpGain","IntelligenceProgramBaseExpGain","IntelligenceGraftBaseExpGain","IntelligenceTerminalHackBaseExpGain","IntelligenceSingFnBaseExpGain","IntelligenceClassBaseExpGain","MillisecondsPer20Hours","GameCyclesPer20Hours","MillisecondsPer10Hours","GameCyclesPer10Hours","MillisecondsPer8Hours","GameCyclesPer8Hours","MillisecondsPer4Hours","GameCyclesPer4Hours","MillisecondsPer2Hours","GameCyclesPer2Hours","MillisecondsPerHour","GameCyclesPerHour","MillisecondsPerHalfHour","GameCyclesPerHalfHour","MillisecondsPerQuarterHour","GameCyclesPerQuarterHour","MillisecondsPerFiveMinutes","GameCyclesPerFiveMinutes","BaseFocusBonus","ClassDataStructuresBaseCost","ClassNetworksBaseCost","ClassAlgorithmsBaseCost","ClassManagementBaseCost","ClassLeadershipBaseCost","ClassGymBaseCost","ClassStudyComputerScienceBaseExp","ClassDataStructuresBaseExp","ClassNetworksBaseExp","ClassAlgorithmsBaseExp","ClassManagementBaseExp","ClassLeadershipBaseExp","CodingContractBaseFactionRepGain","CodingContractBaseCompanyRepGain","CodingContractBaseMoneyGain","AugmentationGraftingCostMult","AugmentationGraftingTimeBase","SoACostMult","SoARepMult","EntropyEffect","TotalNumBitNodes","InfiniteLoopLimit","Donations","LatestUpdate","NewDivision","corporation","industry","divisions","maxDivisions","IndustriesData","startingCost","funds","Division","corp","removeDivision","otherDivision","warehouse","warehouses","material","materials","exports","purchaseOffice","corpConstants","OfficeSpace","IssueDividends","rate","dividendRate","IssueNewShares","amount","calculateMaxNewShares","profit","sharePrice","issueNewSharesCooldown","privateOwnedRatio","numShares","issuedShares","totalShares","maxPrivateShares","privateShares","immediatelyUpdateSharePrice","SellMaterial","price","temp","eval","desiredSellPrice","q","tempQty","maxSellPerCycle","productionAmount","desiredSellAmount","SellProduct","product","all","cityData","qty","maxSellAmount","stored","SetSmartSupply","smartSupply","smartSupplyEnabled","SetSmartSupplyOption","useOption","smartSupplyOptions","BuyMaterial","isRelevantMaterial","buyAmount","BulkPurchase","matSize","MaterialInfo","maxAmount","sizeUsed","marketPrice","SellShares","isInteger","public","shareSaleCooldown","stockSaleResults","calculateShareSale","newSharePrice","newSharesUntilUpdate","shareSalesUntilPriceUpdate","BuyBackShares","buybackPrice","UpgradeOfficeSize","office","initialPriceMult","BuyTea","getTeaCost","setTea","ThrowParty","costPerEmployee","setParty","purchaseWarehouse","Warehouse","loc","UpgradeWarehouseCost","Array","from","acc","UpgradeWarehouse","sizeUpgradeCost","updateSize","HireAdVert","getAdVertCost","applyAdVert","MakeProduct","productName","designInvest","marketingInvest","makesProducts","products","maxProducts","Product","createCity","designInvestment","advertisingInvestment","Research","researchingDivision","researchName","researchTree","IndustryResearchTrees","research","ResearchMap","researched","researchPoints","ExportMaterial","targetDivision","targetCity","existingExport","sanitizedAmt","testReplacement","replaced","evaluated","exportObj","CancelExportMaterial","divisionName","findIndex","LimitProductProduction","quantity","productionLimit","LimitMaterialProduction","SetMaterialMarketTA1","on","marketTa1","SetMaterialMarketTA2","marketTa2","SetProductMarketTA1","SetProductMarketTA2","Corporation","JSONMap","revenue","expenses","fundingRound","dividendTax","unlocks","JSONSet","upgrades","CorpUpgradeName","cycleValuation","valuationsList","valuation","CorporationState","seedFunded","addFunds","isFinite","getState","marketCycles","gameCycles","ind","resetImports","lastCycleRevenue","lastCycleExpenses","determineCycleValuation","determineValuation","cycleProfit","retainedEarnings","getCycleDividends","updateSharePrice","nextState","dividendsPerShare","dividends","getTargetSharePrice","targetPrice","maxNewSharesUnrounded","sharesTracker","sharesUntilUpdate","sharesSold","maxIterations","convertCooldownToString","cd","purchaseUnlock","unlockName","CorpUnlocks","purchaseUpgrade","upgradeName","isPositiveInteger","upgrade","CorpUpgrades","totalCost","calculateUpgradeCost","benefit","getProductionMultiplier","getStorageMultiplier","getDreamSenseGain","getAdvertisingMultiplier","getEmployeeCreMultiplier","getEmployeeChaMult","getEmployeeIntMult","getEmployeeEffMult","getSalesMult","getScientificResearchMult","getStarterGuide","homeComp","handbook","LiteratureName","messages","showLiterature","stateNames","requiredMaterials","treeInitialized","producedMaterials","additional","hasResearch","awareness","popularity","realEstateFactor","researchFactor","hardwareFactor","robotFactor","aiCoreFactor","advertisingFactor","thisCycleRevenue","thisCycleExpenses","newInd","numAdVerts","scienceFactor","hasMaximumNumberProducts","calculateProductionFactors","multSum","cityMult","Hardware","Robots","updateWarehouseSizeUsed","updateMaterialSizeUsed","prod","employeeSalary","officeLoc","processMaterialMarket","processProductMarket","popularityGain","awarenessGain","MAX_VALUE","processMaterials","isArray","processProducts","reqMats","prodMats","wh","processMarket","matName","demand","competition","employeeProductionByJob","CorpEmployeeJob","getScientificResearchMultiplier","totalSalary","smartBuy","mat","reqMat","smartSupplyStore","buyAmt","maxAmt","quality","worseAmt","buyArray","totalSize","freeSpace","buyMult","importAmount","maxProd","getOfficeProductivity","totalMatSize","tmp","reqMatName","reqQty","producableFrac","req","requiredMatsEntries","avgQlt","divider","reqMatQtyNeeded","tempQlt","logQlt","materialProduction","prodMatName","actualSellAmount","businessFactor","getBusinessFactor","getAdvertisingFactors","marketFactor","getMarketFactor","sellAmt","adjustedQty","isString","markupLimit","getMarkupLimit","sCost","numerator","sqrtNumerator","sqrtDenominator","getSalesMultiplier","denominator","sqrt","optimalPrice","uiMarketPrice","markup","exportedLastCycle","expI","expIndustry","expWarehouse","tempMaterial","amtStr","finished","creationCity","createProduct","developmentProgress","finishProduct","processProduct","totalProfit","forProduct","getProductProductionMultiplier","netStorageSize","tempEffRat","rating","effectiveRating","productionCost","sellPrice","sCostString","discontinueProduct","advMult","opProd","engrProd","mgmtProd","total","mgmtFactor","businessProd","calculateEffectWithFactors","awarenessFac","popularityFac","ratioFac","updateResearchTree","getEmployeeChaMultiplier","getEmployeeEffMultiplier","getEmployeeIntMultiplier","getKeyList","removedKeys","CorpMaterialName","Water","Ore","Minerals","Food","Plants","Metal","Chemicals","Drugs","AiCores","RealEstate","SmartSupplyOption","leftovers","imports","none","CorpBaseResearchName","Lab","AutoBrew","AutoParty","AutoDrug","CPH4Inject","Drones","DronesAssembly","DronesTransport","GoJuice","RecruitHR","TrainingHR","MarketTa1","MarketTa2","SelfCorrectAssemblers","Stimu","CorpProductResearchName","Capacity1","Capacity2","Dashboard","Fulcrum","CorpResearchName","Material","demandRange","competitionRange","maxVolatility","materialNames","demandBase","competitionBase","baseMarkup","priceChange","compChange","dmdChange","maxEnergy","maxMorale","avgEnergy","avgMorale","avgIntelligence","avgCharisma","avgCreativity","avgEfficiency","totalExperience","autoTea","autoParty","teaPending","partyMult","employeeJobs","employeeNextJobs","atCapacity","hireRandomEmployee","jobCount","perfMult","Intern","reduction","increase","calculateEmployeeProductivity","effCre","effEff","prodBase","prodMult","getElementById","autoAssignJob","job","creationJobFactors","performance","durability","reliability","aesthetics","features","employeeProd","totalProd","engrRatio","mgmtRatio","rndRatio","opsRatio","busRatio","totalMult","calculateRating","busmgtgRatio","ratingWeights","statName","advertisingMult","employeeChaMult","employeeCreMult","employeeEffMult","employeeIntMult","productProductionMult","salesMult","sciResearchMult","storageMult","AutoPartyManager","Node","children","addChild","findNode","setParent","ResearchTree","getAllNodes","queue","getMultiplierHelper","propName","setRoot","createFullRecordFromEntries","makeNode","createBaseResearchTreeNodes","rootNode","autoBrew","autoDrugs","cph4","drones","dronesAssembly","dronesTransport","goJuice","hrRecruitment","hrTraining","marketta1","marketta2","overclock","scAssemblers","stimu","getBaseResearchTreeCopy","baseResearchTree","getProductIndustryResearchTreeCopy","upgradeFulcrum","upgradeCapacity1","upgradeCapacity2","upgradeDashboard","employeePositions","industryNames","unlockNames","upgradeNames","researchNamesBase","researchNamesProductOnly","researchNames","initialShares","sharesPerPriceUpdate","sellSharesCooldown","teaCostPerEmployee","gameCyclesPerMarketCycle","gameCyclesPerCorpStateCycle","secondsPerMarketCycle","warehouseInitialCost","warehouseInitialSize","warehouseSizeUpgradeCostBase","officeInitialCost","officeInitialSize","officeSizeUpgradeCostBase","bribeThreshold","bribeAmountPerReputation","baseProductProfitMult","dividendMaxRate","employeeSalaryMultiplier","marketCyclesPerEmployeeRaise","employeeRaiseAmount","maxProductsBase","fundingRoundShares","fundingRoundMultiplier","valuationLength","minEmployeeDecay","PurchaseMultipliers","x1","x5","x10","x50","x100","MAX","basePrice","priceMult","recommendStarting","verb","industryType","resetIndustryResearchTrees","calculateMaxAffordableUpgrade","Lvl","Multi","Base","maxAffordableUpgrades","CityTabs","useDivision","setCity","mainContent","cityStateSetter","canExpand","Context","useCorporation","useContext","CorporationRoot","setDivisionName","_event","scrollButtons","div","EmployeeCount","next","AutoAssignJob","currJob","nextJob","nextUna","AutoManagement","currUna","align","formatCorpStat","DivisionOffice","upgradeOfficeSizeOpen","setUpgradeOfficeSizeOpen","throwPartyOpen","setThrowPartyOpen","hireEmployeeDisabledText","teaDisabledText","partyPending","partyDisabledText","disabledTooltip","normalTooltip","MakeProductButton","makeOpen","setMakeOpen","hasMaxProducts","createProductButtonText","disabledText","buttonProps","DivisionOverview","helpOpen","setHelpOpen","researchOpen","setResearchOpen","advertisingInfo","advertisingFactors","totalAdvertisingFac","convertEffectFacToGraphic","totalTicks","retainHeight","minHeight","WarehouseRoot","smartSupplyOpen","setSmartSupplyOpen","canAffordUpgrade","stateText","mats","isInStock","isRelevant","productElements","breakdownItems","formatMaterialSize","prodName","breakdown","DivisionWarehouse","EmptyWarehouse","ExpandNewCity","possibleCities","err","IndustryDescription","IndustryProductEquation","reqs","reqAmt","raw","LevelableUpgrade","tooltip","xs","message","MainPanel","MaterialElem","purchaseMaterialOpen","setPurchaseMaterialOpen","exportOpen","setExportOpen","sellMaterialOpen","setSellMaterialOpen","materialMarketTaOpen","setMaterialMarketTaOpen","limitProductionOpen","setLimitProductionOpen","totalGain","tutorial","purchaseButtonText","sellButtonText","limitMaterialButtonText","toExponential","formatQuality","disablePurchaseLimit","unbuyable","palette","MoneyCost","MultiplierButtons","selectedMultiplier","setMultiplier","text","NewDivisionTab","allIndustries","setIndustry","setName","newDivision","Overview","multRows","appendMult","formatShares","DividendsStats","BonusTime","BribeButton","SellDivisionButton","RestartButton","PublicButtons","PrivateButtons","Upgrades","findInvestorsopen","setFindInvestorsopen","goPublicopen","setGoPublicopen","fundingAvailable","findInvestorsTooltip","purchaseMultiplier","setPurchaseMultiplier","unlocksNotOwned","unlock","container","sellSharesOpen","setSellSharesOpen","buybackSharesOpen","setBuybackSharesOpen","issueNewSharesOpen","setIssueNewSharesOpen","issueDividendsOpen","setIssueDividendsOpen","sellSharesOnCd","sellSharesTooltip","issueNewSharesOnCd","issueNewSharesTooltip","canBribe","offersWork","totalDividends","playerEarnings","storedTime","ProductElem","sellOpen","setSellOpen","limitOpen","setLimitOpen","discontinueOpen","setDiscontinueOpen","cancelOpen","setCancelOpen","marketTaOpen","setMarketTaOpen","hasUpgradeDashboard","limitProductionButtonText","Unlock","BribeFactionModal","setMoney","NaN","selectedFaction","setSelectedFaction","repGain","getRepText","bribe","BuybackSharesModal","shares","setShares","buy","CostIndicator","CancelProductModal","CreateCorporationModal","canSelfFund","disabledTextForNoName","forPurchase","DiscontinueProductModal","ExportModal","exportAmount","setExportAmount","possibleDivisions","defaultDivision","setTargetDivision","defaultCity","setTargetCity","removeExport","FindInvestorsModal","percShares","funding","investShares","GoPublicModal","initialSharePrice","goPublic","IssueDividendsModal","percent","setPercent","canIssue","issueDividends","EffectText","maxNewShares","newShares","IssueNewSharesModal","issueNewShares","dialogContents","LimitMaterialProductionModal","limit","setLimit","limitMaterialProduction","LimitProductProductionModal","limitProductProduction","MakeProductModal","availableCities","design","setDesign","marketing","setMarketing","makeProduct","defaultValue","MarketTA2","control","MaterialMarketTaModal","ProductMarketTaModal","BulkPurchaseSection","setBuyAmt","setDisabled","BulkPurchaseText","parsedAmt","formatMatPurchaseAmount","bulkPurchase","PurchaseMaterialModal","purchaseMaterial","Upgrade","wrapInTooltip","ele","but","unmountOnExit","ResearchModal","SellCorporationModal","SellDivisionModal","allDivisions","divisionToSell","setDivisionToSell","calculatePrice","SellMaterialModal","setAmt","setPrice","initialPrice","sellMaterial","SellProductModal","setChecked","iQty","setQty","setPx","sellProduct","SellSharesModal","ProfitIndicator","sell","SSoption","newValue","SmartSupplyModal","ThrowPartyModal","setCost","canParty","throwParty","formatMultiplier","UpgradeSizeButton","upgradeSize","UpgradeOfficeSizeModal","costMultiplier","upgradeCost","upgradeCost15","maxMult","maxNum","multIncrease","upgradeCostMax","ActiveFragment","fragment","y","highestCharge","numCharge","rotation","collide","other","thisFragment","otherFragment","dx","dy","fragSize","shape","fullAt","FragmentById","worldX","worldY","neighbors","cell","assign","BaseGift","fragments","_width","_height","fragmentAt","aFrag","Fragments","Fragment","power","sy","qx","qy","candidates","coord","cells","candidate","_","X","Shapes","FragmentType","NoneFragment","DeleteFragment","Effect","tpe","HackingChance","HackingSpeed","HackingMoney","HackingGrow","Hacking","Strength","Defense","Dexterity","Agility","Charisma","HacknetMoney","HacknetCost","Rep","WorkMoney","Crime","staneksGift","StaneksGift","loadStaneksGift","zeros","array","calculateGrid","gift","newgrid","isBonusCharging","justCharged","baseSize","StanekConstants","charge","af","threads","cotmg","inBonus","usedCycles","updateMults","StaneksGiftEvents","effect","boost","neighboor","CalculateEffect","canPlace","rootX","rootY","newFrag","place","findFragment","clearCharge","calculateMults","zoeAmt","sleeve","hasAugmentation","scaling","sleeveMults","scaleMultipliers","resetMultipliers","updateSkillLevels","includedProperties","RAMBonus","BaseSize","MaxSize","O","I","L","J","S","Z","T","ActiveFragmentSummary","summary","coordinate","borderBottom","perc","formatEffect","TableCell","Cell","cellProps","onMouseEnter","DummyGrid","ghostGrid","enter","click","FragmentInspector","setC","flexGrow","formatStaneksGiftCharge","effectAmt","formatStaneksGiftPower","FragmentPreview","elems","colorAt","FragmentOption","left","remaining","FragmentSelector","selectFragment","Grid","activeGrid","randomColor","MainBoard","setGhostGrid","setPos","setRotation","selectedFragment","setSelectedFragment","moveGhost","doRotate","removeEventListener","deleteAt","clickAt","StaneksGiftRoot","fontStyle","hacking_success_weight","strength_success_weight","defense_success_weight","dexterity_success_weight","agility_success_weight","charisma_success_weight","intelligence_exp","workName","tooltipText","karma","kills","commit","CrimeWork","crimeType","singularity","successRate","determineCrimeSuccess","Crimes","findCrime","roughName","fuzzMatch","fuzzyGetMember","CrimeType","checkIfConnectedToDarkweb","listAllDarkwebItems","DarkWebItems","program","buyDarkwebItem","itemName","pushProgram","isCreateProgramWork","buyAllDarkwebItems","itemsToBuy","DarkWebItem","BruteSSHProgram","FTPCrackProgram","RelaySMTPProgram","HTTPWormProgram","SQLInjectProgram","ServerProfiler","DeepscanV1","DeepscanV2","AutolinkProgram","FormulasProgram","DevMenuRoot","AchievementsDev","setPlayerAchievements","TransitionProps","expandIcon","Engine","achieved","grantAchievement","removeAchievement","Adjuster","subtract","tons","AugmentationsDev","augmentation","setAugmentation","bigNumber","BladeburnerDev","modifyBladeburnerRank","modify","modifyBladeburnerSP","modifyBladeburnerCycles","cycles","addAllChaos","setSkill","modifySkill","modifier","levelchange","AllSkills","resetSkill","AllContracts","contractTarget","setContract","modifyContractLevel","modifyContractCount","countchange","modifyContractSuccesses","successeschange","AllOperations","operationTarget","setOperation","modifyOperationLevel","modifyOperationCount","modifyOperationSuccesses","labelId","CodingContractsDev","codingcontract","setCodingcontract","cc","CompaniesDev","setCompanyName","modifyCompanyRep","modifyCompanyFavor","CorporationDev","modifyCorporationFunds","modifyCorporationCycles","EntropyDev","FactionsDev","setFactionName","modifyFactionRep","modifyFactionFavor","GangDev","modifyGangCycles","General","setError","corporationName","setCorporationName","gangFaction","setGangFaction","devMoney","setDevMoney","addMoney","ReferenceError","ThemeEvents","isHacking","checkForMessagesToSend","ProgramsDev","setProgram","SaveFileDev","importInput","saveFile","setSaveFile","restoreScripts","setRestoreScripts","restoreAugs","setRestoreAugs","restoreSFs","setRestoreSFs","File","FileReader","FileList","Blob","ii","startIcon","base64Save","saveObject","files","save","atob","SnackbarEvents","ToastVariant","ServersDev","setServer","hasAdminRights","sshPortOpen","ftpPortOpen","smtpPortOpen","httpPortOpen","sqlPortOpen","openPortCount","hackDifficulty","minDifficulty","SleevesDev","sleeveSetStoredCycles","shock","sync","validSFN","SourceFilesDev","setSF","sfN","sfLvl","setAllSF","StanekDev","modCycles","modCharge","StatsDev","modifyExp","modifyKarma","resetExperience","StockMarketDev","stockPrice","setStockPrice","stockSymbol","setStockSymbol","processStocks","sub","inputSymbols","symbol","SM","stock","Stock","stocks","cap","TimeSkip","timeskip","reload","ServerAccordion","file","allContentFiles","scope","FileDiagnosticModal","file0","file1","file2","file3","file4","file5","file6","file7","file8","file9","file10","file11","file12","file13","file14","file15","file16","file17","file18","file19","file20","file21","file22","file23","file24","file25","file26","file27","file28","file29","file30","file31","file32","file33","file34","file35","file36","Root","getPage","DocumentationRoot","history","useHistory","navigator","navigate","relPath","external","newPath","resolveFilePath","url","scrollTo","home","MD","initElectron","userAgent","getFiles","script","code","deleteFile","removeFile","hasScriptExtension","Buffer","overwritten","writeToScriptFile","getRamUsage","funcs","terminal","typesFn","bind","toast","duration","appNotifier","initAppNotifier","triggerSave","triggerGameExport","triggerScriptsExport","exportScripts","getSaveData","fileName","getSaveInfo","playerData","pushSaveData","automatic","appSaveFns","initSaveFunctions","bridge","electronBridge","receive","send","then","catch","initElectronBridge","pushGameSaved","pushGameReady","player","identifier","playtime","lastSave","game","version","hash","pushImportResult","wasImported","pushDisableRestore","Bypass","EditSaveFile","PrototypeTampering","TimeCompression","Unclickable","UndocumentedFunctionCall","RealityAlteration","N00dles","YoureNotMeantToAccessThis","TrueRecursion","INeedARainbow","exploit","sanitizeExploits","getComputedStyle","Element","applyExploit","startExploits","last","minute","timeCompression","LastExportBonus","onExport","facName","setLastExportBonus","unixTime","Faction","alreadyInvited","isBanned","FactionInfos","savedKeys","inviteToFaction","InvitationEvent","factionIndexes","__","factionInfo","enemy","enemies","hasAugmentationPrereqs","sing","hasPrereqs","txt","queuedAugmentation","processPassiveFactionRepGain","isFactionWork","favorMult","hRep","getHackingWorkRepGain","sRep","getFactionSecurityWorkRepGain","fRep","getFactionFieldWorkRepGain","getFactionAugmentationsFiltered","uniqueFilter","FactionInfo","infoText","offerFieldWork","offerSecurityWork","keep","keepOnInstall","special","assignment","buttonText","loadFactions","loadedFactions","loadedFactionName","loadedFaction","repFromDonation","repNeededToDonate","canDonate","donate","AugmentationsPage","getAugs","switchSortOrder","newOrder","PurchaseAugmentationsOrderSetting","augName1","augName2","getAugsSortedByCost","getAugsSortedByReputation","canBuy","hasReq","hasRep","cantBuy","concat","getAugsSortedByPurchasable","getAugsSorted","purchasable","multiplierComponent","augmentationName","justifyItems","costs","showModal","CreateGangModal","createGang","onKeyUp","DonateOption","favorToDonate","donateAmt","setDonateAmt","digits","Status","MainPage","onAugmentations","sleevesOpen","setSleevesOpen","startWork","isPlayersGang","canPurchaseSleeves","FactionWork","factionWorkType","FactionWorkType","startHackingContracts","startFieldWork","startSecurityWork","FactionRoot","InvitationsSeen","WorkTypesOffered","FactionElement","facInfo","augsLeft","joined","openFaction","openFactionAugPage","acceptInvitation","gridAutoFlow","formatFavor","FactionsRoot","useTheme","allFactions","allJoinedFactions","invitations","breakpoints","down","order","gridTemplateRows","gridAutoRows","GangButton","gangOpen","setGangOpen","enabled","noformat","DefaultAssignment","Info","Assignment","favorGain","InvitationModal","setFaction","Option","AutoexecInput","autoexec","setAutoexec","fullWidth","parseCommand","cmd","scriptPath","resolveScriptFilePath","minRam","formatRam","createTooltip","ConnectionBauble","connection","setConnection","isConnected","timer","GameOptionsPage","tabs","System","Interface","Gameplay","Misc","GameOptionsRoot","currentTab","setCurrentTab","setTab","export","forceKill","softReset","reactivateTutorial","SideBarTab","sideBarProps","tabName","GameOptionsSidebar","diagnosticOpen","setDiagnosticOpen","importSaveOpen","setImportSaveOpen","importData","setImportData","confirmResetOpen","setConfirmResetOpen","base64","confirmedImportGame","additionalButton","noConfirmation","onTriggered","GameplayPage","InterfacePage","timestampFormat","setTimestampFormat","formatTime","MiscPage","NumericDisplayPage","locale","setLocale","FormatsNeedToChange","OptionsSlider","initialValue","_evt","onChangeCommitted","callback","valueLabelDisplay","marks","RemoteAPIPage","remoteFileApiPort","setRemoteFileApiPort","isRemoteFileApiConnectionLive","newRemoteFileApiConnection","SystemPage","execTime","setExecTime","recentScriptsSize","setRecentScriptsSize","logSize","setLogSize","portSize","setPortSize","terminalSize","setTerminalSize","autosaveInterval","setAutosaveInterval","resetGangs","loadAllGangs","Gang","members","wanted","respect","isHackingGang","respectGainRate","wantedGainRate","moneyGainRate","storedTerritoryAndPowerCycles","territoryClashChance","territoryWarfareEngaged","notifyMemberDeath","getPower","getTerritory","processGains","processExperienceGains","processTerritoryAndPowerGains","moneyGainPerCycle","wantedLevelGainPerCycle","respectGainsTotal","justice","member","earnRespect","calculateMoneyGain","calculateWantedLevelGain","getTask","baseWanted","oldWanted","newWanted","calculateTerritoryGain","winGang","loseGang","powerBonus","gangName","calculatePower","gainRoll","multiplicativeGain","powerMult","PowerMultiplier","additiveGain","gangs","g","others","thisGang","otherGang","thisPwr","thisChance","territoryGain","clash","gainExperience","baseDeathChance","task","modifiedDeathChance","killMember","canRecruitMember","getRespectNeededToRecruitMember","recruitMember","GangMember","getWantedPenalty","memberTotal","totalRespect","lostRespect","earnedRespect","ascendMember","ascend","getDiscount","discount","getAllTaskNames","GangMemberTasks","taskName","isCombat","getUpgradeCost","upg","hack_exp","str_exp","def_exp","dex_exp","agi_exp","cha_exp","hack_mult","str_mult","def_mult","dex_mult","agi_mult","cha_mult","hack_asc_points","str_asc_points","def_asc_points","dex_asc_points","agi_asc_points","cha_asc_points","calculateSkill","calculateAscensionMult","points","assignToTask","unassignFromTask","GangMemberTask","calculateRespectGain","gang","wantedLevel","expMult","difficultyPerCycles","weightDivisor","hackWeight","strWeight","defWeight","dexWeight","agiWeight","chaWeight","getGainedAscensionPoints","calculateAscensionPointsGain","canAscend","getCurrentAscensionMults","getAscensionMultsAfterAscend","getAscensionResults","postAscend","preAscend","GangMemberUpgrades","applyUpgrade","respectToDeduct","buyUpgrade","baseRespect","baseMoney","gangMemberTasksMetadata","GangMemberUpgrade","UpgradeType","FormatsHaveChanged","createDescription","gangMemberUpgradesMetadata","upgType","GangRespectToReputationRatio","MaximumGangMembers","CyclesPerTerritoryAndPowerUpdate","AscensionMultiplierRatio","Names","GangKarmaRequirement","minCyclesToProcess","maxCyclesToProcess","Weapon","Armor","Vehicle","Rootkit","calculateWantedPenalty","statWeight","territoryMult","territoryPenalty","respectMult","calc","AscensionModal","useGang","formatRespect","formatPreciseMultiplier","onAscend","CyclerPerSecond","bonusMillis","NextReveal","upgName","PurchasedUpgrade","dangerouslySetInnerHTML","__html","UpgradeButton","GangMemberUpgradePanel","currentCategory","setCurrentCategory","filterUpgrades","weaponUpgrades","armorUpgrades","vehicleUpgrades","rootkitUpgrades","augUpgrades","categories","Weapons","Vehicles","Rootkits","asc","EquipmentsSubpage","setFilter","GangMemberCard","GangMemberCardContent","ascendOpen","setAscendOpen","borderRightWidth","borderLeftWidth","onTaskChange","GangMemberList","ascendOnly","setAscendOnly","onRecruit","GangMemberStats","formatWanted","cellNone","GangRoot","GangStats","territoryStr","ManagementSubpage","RecruitButton","RecruitModal","recruit","TaskDescription","TaskSelector","currentTask","setCurrentTask","contextMember","tasks","TerritoryInfoModal","TerritorySubpage","gangNames","infoOpen","setInfoOpen","formatTerritory","OtherGangTerritory","playerPower","clashVictoryChance","calculateHackingChance","requiredHackingSkill","calculateHackingExpGain","calculatePercentMoneyHacked","percentMoneyHacked","calculateHackingTime","skillFactor","calculateGrowTime","calculateWeakenTime","baseCheck","fnName","netscriptCanHack","initialCheck","netscriptCanGrow","netscriptCanWeaken","purchaseHacknet","ITutorial","iTutorialSteps","iTutorialNextStep","numOwned","getCostOfNextHacknetServer","updateHashManagerCapacity","getCostOfNextHacknetNode","hasMaxNumberHacknetServers","calculateNodeCost","calculateServerCost","getMaxNumberLevelUpgrades","nodeObj","calculateLevelUpgradeCost","levelsToMax","getMaxNumberRamUpgrades","calculateRamUpgradeCost","log2","getMaxNumberCoreUpgrades","calculateCoreUpgradeCost","getMaxNumberCacheUpgrades","calculateCacheUpgradeCost","purchaseLevelUpgrade","levels","sanitizedLevels","isServer","upgradeLevel","purchaseRamUpgrade","upgradeRam","purchaseCoreUpgrade","upgradeCore","purchaseCacheUpgrade","upgradeCache","processHacknetEarnings","HashManager","hashes","ip","hserver","updateHashRate","wastedHashes","HashUpgrades","processAllHacknetServerEarnings","processSingleHacknetNodeEarnings","processAllHacknetNodeEarnings","totalEarnings","nodes","hashCapacity","purchaseHashUpgrade","upgTarget","changeMinimumSecurity","changeMaximumMoney","minMax","onlineTimeSeconds","totalMoneyGenerated","moneyGainRatePerSecond","updateMoneyGainRate","costMult","calculateMoneyGainRate","BaseServer","hashRate","totalHashesGenerated","createRandomIp","updateHashCapacity","updateRamUsed","calculateHashGainRate","ramUsed","toJSONBase","capacity","getMult","currLevel","getStudyMult","getTrainingMult","getUpgrade","getCost","updateCapacity","refundUpgrade","storeHashes","numHashes","newCap","HashUpgrade","costPerLevel","hasTargetServer","hasTargetCompany","effectText","collapsedSum","HashUpgradesMetadata","MoneyGainPerLevel","BaseCost","LevelBaseCost","RamBaseCost","CoreBaseCost","PurchaseNextMult","UpgradeLevelMult","UpgradeRamMult","UpgradeCoreMult","MaxLevel","MaxRam","MaxCores","HashesPerLevel","CacheBaseCost","PurchaseMult","UpgradeCacheMult","MaxServers","MaxCache","formatInt","startingLevel","extraLevels","totalMultiplier","startingRam","numUpgrades","currentRam","startingCore","sanitizedCores","coreBaseCost","currentCores","startingCores","startingCache","currentCache","GeneralInfo","HacknetNodeElem","purchaseMult","upgradeLevelButton","upgradeRAMButton","upgradeCoresButton","upgradeLevelCost","upgradeRamCost","upgradeCoreCost","HacknetRoot","purchaseCost","totalProduction","purchaseMultiplierOnClicks","H","onClicks","HacknetServerElem","upgradeRamButton","upgradeCacheButton","base_increase","modded_increase","upgradeCacheCost","serversMap","companiesMap","HacknetUpgradeElem","selectedServer","setSelectedServer","selectedCompany","setSelectedCompany","purchase","hashManager","serverType","ServerType","HashUpgradeModal","MultiplierButton","buttons","btnProps","PlayerInfo","hasServers","PurchaseButton","getHospitalizationCost","oldhp","calculateRawDiff","startingDifficulty","calculateDifficulty","startingSecurityLevel","calculateReward","xpMult","calculateSellInformationCashReward","levelBonus","calculateTradeInformationRepReward","calculateInfiltratorsRepReward","LocationsMetadata","infiltrationData","difficulties","Trivial","Normal","Hard","Impossible","BackwardGame","interpolate","answer","words","makeAnswer","setGuess","hasAugment","millis","onExpire","onFailure","pb","shiftKey","ctrlKey","altKey","ignorableKeyboardEvent","nextGuess","onSuccess","BlinkingCursor","setOn","BracketGame","right","setRight","options","generateLeftSide","char","getChar","BribeGame","choices","positive","option","negative","shuffleArray","makeChoices","correctIndex","setCorrectIndex","currentChoice","choice","defaultColor","disabledColor","upColor","downColor","choiceColor","upIndex","upDistance","downIndex","downDistance","onCorrectIndex","newIndex","upArrowSymbol","downArrowSymbol","CheatCodeGame","arrows","leftArrowSymbol","rightArrowSymbol","arrow","generateCode","getArrow","getInverseArrow","Countdown","setX","onFinish","Cyberpunk2077Game","grid","puzzle","randChar","generatePuzzle","answers","generateAnswers","currentAnswerIndex","setCurrentAnswerIndex","flatGrid","isCorrectAnswer","optionColor","idx","move","settings","out","lerpD","lerp","Stage","minigames","SlashGame","MinesweeperGame","WireCuttingGame","Game","setLevel","stage","setStage","results","setResults","gameIds","setGameIds","lastGames","setupNextGame","useCallback","ids","nextGameId","pushResult","Sell","automated","StartingDifficulty","stageComponent","Minigame","MiniGame","Difficulty","Reward","Progress","GameTimer","noPaper","ignoreAugment_WKSharmonizer","setV","totalMillis","intervalId","InfiltrationRoot","setStart","maxClearanceLevel","Location","cancel","arrowPart","repeat","Intro","KeyHandler","press","mines","minefield","field","generateEmptyField","generateMinefield","setAnswer","memoryPhase","setMemoryPhase","flagged","Boolean","marked","icon","flat","fieldEquals","phase","setPhase","setHasAugment","guardingTime","setGuardingTime","newDifficulty","timePreparing","timeGuarding","clearTimeout","Victory","quitInfiltration","isMemberOfInfiltrators","soa","infiltrationRepGain","wiresmin","wiresmax","rules","colorNames","blue","white","questions","setQuestions","wires","setWires","setTimer","cutWires","setCutWires","wiresToCut","setWiresToCut","gameDifficulty","gameWires","numWires","wireColors","wireType","generateWires","gameQuestions","numQuestions","questionGenerators","randomPositionQuestion","randomColorQuestion","generateQuestion","gameWiresToCut","wire","question","shouldCut","isCorrectWire","wireColor","wireNum","wireIndex","newWiresToCut","newCutWires","cutColor","currStep","Start","isRunning","stepIsDone","GoToCharacterPage","CharacterPage","CharacterGoToTerminalPage","TerminalIntro","TerminalHelp","TerminalLs","TerminalScan","TerminalScanAnalyze1","TerminalScanAnalyze2","TerminalConnect","TerminalAnalyze","TerminalNuke","TerminalManualHack","TerminalHackingMechanics","TerminalGoHome","TerminalCreateScript","TerminalTypeScript","TerminalFree","TerminalRunScript","TerminalGoToActiveScriptsPage","ActiveScriptsPage","ActiveScriptsToTerminal","TerminalTailScript","GoToHacknetNodesPage","HacknetNodesIntroduction","HacknetNodesGoToWorldPage","WorldDescription","DocumentationPageInfo","End","iTutorialStart","iTutorialEnd","ITutorialEvents","iTutorialPrevStep","Literature","asFilePath","litObj","Literatures","Cities","locations","asciiArt","addLocation","LocationName","LocationType","techVendorMaxRam","techVendorMinRam","Locations","constructLocation","ApplyToJobButton","entryPosType","getJobRequirementTooltip","GameType","CasinoLocation","setGame","updateGame","Coin","Slots","toLocation","LocationLetter","ASCIICity","locationLettersRegex","letterMap","A","D","E","F","G","K","M","N","P","Q","R","U","V","W","Y","lineElems","exec","startI","endI","locationI","ListCity","locationButtons","locName","LocationCity","CompanyLocation","quitOpen","setQuitOpen","jobTitle","companyPosition","isEmployedHere","CompanyWork","CoresButton","homeComputer","maxCores","GenericLocation","locContent","getLocationSpecificContent","serverMeta","serverMetadata","specialName","isBackdoorInstalled","GymLocation","train","ClassWork","classType","Classes","GymType","HospitalLocation","PurchaseServerModal","setHostname","tryToPurchaseServer","purchaseServer","RamButton","purchaseRamForHomeComputer","SlumsLocation","crimes","crime","doCrime","SpecialLocation","handleBladeburner","worldHeader","HTMLElement","CreateCorporation","handleCotMG","renderBladeburner","toStanek","renderCotMG","ServerButton","getPurchaseServerCost","TechVendorLocation","purchaseServerButtons","TorButton","darkweb","purchaseTorRouter","to","TravelAgencyRoot","destination","setDestination","startTravel","TravelConfirmationModal","UniversityLocation","take","dataStructuresCost","UniversityClassType","networksCost","algorithmsCost","managementCost","leadershipCost","earnHackingExpTooltip","earnCharismaExpTooltip","MessageFilename","Message","sendMessage","forced","showMessage","addMessageToServer","Messages","recvd","worldDaemon","allFactionAugs","factionAugName","Milestones","MilestonesRoot","milestones","highestMilestone","milestone","NSProxyHandler","memoed","ws","ns","tree","additionalData","__target","Reflect","ownKeys","getOwnPropertyDescriptor","__key","__attrs","TypeError","__receiver","ours","descriptor","arrayPath","functionPath","ctx","function","func","wrappedFunction","helpers","getRamCost","NSProxy","handler","Proxy","setRemovedFunctions","api","infos","replacement","replaceMsg","configurable","enumerable","Environment","stopFlag","runningFn","vars","string","positiveInteger","scriptArgs","runOptions","threadOrOption","temporary","preventDuplicates","checkThreads","argName","ramOverride","RamCostConstants","makeRuntimeErrorMsg","argsToString","arg","toNative","stringify","makeBasicErrorMsg","resolveNetscriptRequestedThreads","requestedThreads","scriptRef","requestedThreadsAsInt","checkEnvFlags","env","ScriptDeath","killWorkerScript","checkSingularityAccess","netscriptDelay","reject","delay","delayReject","updateDynamicRam","ramCost","dynamicLoadedFns","dynamicRamUsage","getServer","scriptIdentifier","scriptID","_hostname","_args","pid","scriptname","manual","additionalMsec","requestedSec","hackingTime","canHack","formatThreads","hackChance","expGainedOnSuccess","expGainedOnFailure","percentHacked","maxThreadNeeded","moneyDrained","moneyGained","onlineMoneyMade","recordHack","onlineExpGained","fortify","influenceStockThroughServerHack","portNumber","_n","missingKey","isConnectedTo","organizationName","gangMember","gangTask","filePath","getRunningScript","ident","runningScript","findRunningScriptByPid","getRunningScriptByPid","getRunningScriptsByArgs","getCannotFindRunningScriptErrorMessage","arrayToString","createPublicRunningScript","logProps","tailProps","logs","offlineExpGained","offlineMoneyMade","offlineRunningTime","onlineRunningTime","tailProperties","isVisible","failOnHacknetServer","assertString","debugType","assertObjectType","obj","desiredObject","objVal","clip","json","userFriendlyString","isScriptArgs","WorkerScript","scriptUrl","dependencies","RegExp","errstack","stack","caller","userstack","stackline","call","chromeCall","parseChromeStackline","firefoxCall","parseFirefoxStackline","rejectMsg","lineMatch","funcMatch","lio","lastIndexOf","expect","actual","findRunningScripts","handleUnknownError","initialText","errorMessage","headerText","SyntaxError","customElementKey","wrapUserNode","pidCounter","generateNextPid","tempCounter","found","resetPidCounter","Dom","Max","Hack","HackAnalyze","Grow","GrowthAnalyze","Weaken","WeakenAnalyze","Scan","RecentScripts","PortProgram","Run","Exec","Spawn","Scp","Kill","HasRootAccess","GetHostname","GetHackingLevel","GetServerMaxRam","GetServerUsedRam","FileExists","IsRunning","HacknetNodes","HNUpgLevel","HNUpgRam","HNUpgCore","GetStock","BuySellStock","GetPurchaseServer","PurchaseServer","GetPurchasedServerLimit","GetPurchasedServerMaxRam","Round","ReadWrite","ArbScript","GetScript","GetRunningScript","GetHackTime","GetFavorToDonate","CodingContractBase","SleeveBase","ClearTerminalCost","GetMoneySourcesCost","SingularityFn1","SingularityFn2","SingularityFn3","GangApiBase","BladeburnerApiBase","StanekWidth","StanekHeight","StanekCharge","StanekFragmentDefinitions","StanekPlacedFragments","StanekClear","StanekCanPlace","StanekPlace","StanekFragmentAt","StanekDeleteAt","InfiltrationCalculateDifficulty","InfiltrationCalculateRewards","InfiltrationGetLocations","InfiltrationGetInfiltrations","StanekAcceptGift","SF4Cost","sf4","getConstants","hasWSEAccount","hasTIXAPIAccess","has4SData","has4SDataTIXAPI","getSymbols","getPrice","getOrganization","getAskPrice","getBidPrice","getPosition","getMaxShares","getPurchaseCost","getSaleGain","buyStock","sellStock","buyShort","sellShort","placeOrder","cancelOrder","getOrders","getVolatility","getForecast","purchase4SMarketData","purchase4SMarketDataTixApi","purchaseWseAccount","purchaseTixApi","universityCourse","gymWorkout","travelToCity","goToLocation","purchaseTor","purchaseProgram","getCurrentServer","getCompanyPositionInfo","getCompanyPositions","connect","manualHack","installBackdoor","getDarkwebProgramCost","getDarkwebPrograms","hospitalize","isBusy","stopAction","upgradeHomeRam","upgradeHomeCores","getUpgradeHomeRamCost","getUpgradeHomeCoresCost","workForCompany","applyToCompany","quitJob","getCompanyRep","getCompanyFavor","getCompanyFavorGain","checkFactionInvitations","workForFaction","getFactionRep","getFactionFavor","getFactionFavorGain","donateToFaction","createProgram","commitCrime","getCrimeChance","getCrimeStats","getOwnedAugmentations","getOwnedSourceFiles","getAugmentationFactions","getAugmentationsFromFaction","getAugmentationPrereq","getAugmentationPrice","getAugmentationBasePrice","getAugmentationRepReq","getAugmentationStats","isFocused","setFocus","exportGame","exportGameBonus","b1tflum3","destroyW0r1dD43m0n","getCurrentWork","inGang","getMemberNames","getGangInformation","getOtherGangInformation","getMemberInformation","getTaskNames","getTaskStats","setMemberTask","getEquipmentNames","getEquipmentCost","getEquipmentType","getEquipmentStats","purchaseEquipment","getAscensionResult","setTerritoryWarfare","getChanceToWinClash","getBonusTime","inBladeburner","getContractNames","getOperationNames","getBlackOpNames","getBlackOpRank","getGeneralActionNames","getSkillNames","stopBladeburnerAction","getCurrentAction","getActionCurrentTime","getActionEstimatedSuccessChance","getActionRepGain","getActionCountRemaining","getActionMaxLevel","getActionCurrentLevel","getActionAutolevel","getActionSuccesses","setActionAutolevel","setActionLevel","getRank","getSkillPoints","getSkillLevel","getSkillUpgradeCost","getTeamSize","getCityEstimatedPopulation","getCityCommunities","getCityChaos","getCity","switchCity","getStamina","joinBladeburnerFaction","joinBladeburnerDivision","infiltration","getPossibleLocations","getInfiltration","getContractType","getNumTriesRemaining","createDummyContract","getContractTypes","getNumSleeves","setToIdle","setToShockRecovery","setToSynchronize","setToCommitCrime","setToUniversityCourse","setToCompanyWork","setToFactionWork","setToGymWorkout","getSleeve","getSleeveAugmentations","getSleevePurchasableAugs","purchaseSleeveAug","setToBladeburnerAction","getSleeveAugmentationPrice","getSleeveAugmentationRepReq","stanek","giftWidth","giftHeight","chargeFragment","fragmentDefinitions","activeFragments","clearGift","canPlaceFragment","placeFragment","getFragment","removeFragment","acceptGift","RamCosts","hasCorporation","getIndustryData","getMaterialData","createCorporation","hasUnlock","getUnlockCost","getUpgradeLevel","getUpgradeLevelCost","getInvestmentOffer","acceptInvestmentOffer","getCorporation","getDivision","expandIndustry","expandCity","levelUpgrade","buyBackShares","sellShares","setSmartSupply","setSmartSupplyOption","buyMaterial","getWarehouse","getProduct","getMaterial","setMaterialMarketTA1","setMaterialMarketTA2","setProductMarketTA1","setProductMarketTA2","exportMaterial","cancelExportMaterial","upgradeWarehouse","getUpgradeWarehouseCost","hasWarehouse","hireEmployee","upgradeOfficeSize","buyTea","hireAdVert","getOffice","getHireAdVertCost","getHireAdVertCount","getResearchCost","hasResearched","setAutoJobAssignment","getOfficeSizeUpgradeCost","hacknet","numNodes","purchaseNode","getPurchaseNodeCost","getNodeStats","getLevelUpgradeCost","getRamUpgradeCost","getCoreUpgradeCost","getCacheUpgradeCost","hashCost","spendHashes","maxNumNodes","getHashUpgrades","getHashUpgradeLevel","ui","getTheme","setTheme","resetTheme","getStyles","setStyles","resetStyles","getGameInfo","clearTerminal","windowSize","grafting","getAugmentationGraftPrice","getAugmentationGraftTime","getGraftableAugmentations","graftAugmentation","sprintf","vsprintf","scan","hackAnalyzeThreads","hackAnalyze","hackAnalyzeSecurity","hackAnalyzeChance","sleep","asleep","share","getSharePower","grow","growthAnalyze","growthAnalyzeSecurity","weaken","weakenAnalyze","print","printf","tprint","tprintf","clearLog","disableLog","enableLog","isLogEnabled","getScriptLogs","hasTorRouter","nuke","brutessh","ftpcrack","relaysmtp","httpworm","sqlinject","run","spawn","kill","killall","exit","atExit","scp","ls","ps","getRecentScripts","hasRootAccess","getHostname","getHackingLevel","getHackingMultipliers","getHacknetMultipliers","getServerMoneyAvailable","getServerSecurityLevel","getServerBaseSecurityLevel","getServerMinSecurityLevel","getServerRequiredHackingLevel","getServerMaxMoney","getServerGrowth","getServerNumPortsRequired","getServerMaxRam","getServerUsedRam","serverExists","fileExists","getPurchasedServerLimit","getPurchasedServerMaxRam","getPurchasedServerCost","getPurchasedServerUpgradeCost","upgradePurchasedServer","renamePurchasedServer","deleteServer","getPurchasedServers","write","tryWritePort","read","peek","writePort","readPort","getPortHandle","rm","scriptRunning","scriptKill","getScriptName","getScriptRam","getHackTime","getGrowTime","getWeakenTime","getTotalScriptIncome","getScriptIncome","getTotalScriptExpGain","getScriptExpGain","formatNumber","nFormat","tFormat","getTimeSinceLastAug","prompt","wget","getFavorToDonate","getPlayer","getMoneySources","mv","getResetInfo","getFunctionRamCost","tail","moveTail","resizeTail","closeTail","setTitle","clearPort","openDevMenu","alert","flags","bypass","alterReality","rainbow","heart","break","tprintRaw","printRaw","formulas","mockServer","mockPlayer","mockPerson","calculateFavorToRep","calculateRepToFavor","calculateExp","hackPercent","growPercent","growThreads","hackTime","growTime","weakenTime","hacknetNodes","levelUpgradeCost","ramUpgradeCost","coreUpgradeCost","hacknetNodeCost","constants","hacknetServers","hashGainRate","cacheUpgradeCost","hashUpgradeCost","hacknetServerCost","wantedPenalty","respectGain","wantedLevelGain","ascensionPointsGain","ascensionMultiplier","work","crimeSuccessChance","crimeGains","gymGains","universityGains","factionGains","companyGains","throwOnUndefined","branch","errorText","recentScripts","AddRecentScript","killedTime","unshift","timeOfDeath","prototype","disableLogs","loadedFns","output","runningScriptObj","nsFuncsGenerator","sanitizedPid","getScript","shouldLog","stopAndCleanUpWorkerScript","killWorkerScriptByPid","rs","byPid","runningScriptMap","scriptKey","roundToTwo","removeWorkerScript","enums","NetscriptSingularity","NetscriptGang","NetscriptBladeburner","NetscriptCodingContract","NetscriptSleeve","NetscriptCorporation","NetscriptStanek","NetscriptInfiltration","NetscriptUserInterface","NetscriptFormulas","NetscriptStockMarket","NetscriptGrafting","NetscriptHacknet","getServerOnNetwork","opts","optsValidator","_hackAmount","hackAmount","_threads","_time","host","moneyBefore","processSingleServerGrowth","moneyAfter","recordGrow","logGrowPercent","influenceStockThroughServerGrow","_host","_multiplier","_cores","numCycleForGrowth","maxThreadsNeeded","numCycleForGrowthCorrected","coreBonus","weakenAmt","recordWeaken","end","StartSharing","finally","CalculateShareMult","_format","format","_fn","possibleLogs","LogBoxEvents","_x","_y","_pid","setPosition","_w","_h","w","setSize","LogBoxCloserEvents","numOpenPortsRequired","_scriptname","_thread_or_opt","runOpts","scriptServer","runScriptFromScript","spawnDelay","killByPid","_safetyguard","safetyguard","scriptsKilled","_files","_destination","_source","source","destServer","sourceServer","lits","contentFiles","hasTextExtension","noFailures","contentFilePath","sourceContentFile","getContentFile","writeToContentFile","litFilePath","_substring","allFilenames","textFiles","processes","speed","growth","production","coreCost","levelCost","_lvl","serverGrowth","formatSecurity","_filename","hasContractExtension","lowerPath","programName","getPurchaseServerLimit","getPurchaseServerMaxRam","_ram","_name","hostnameStr","newServ","safelyCreateUniqueServer","createUniqueRandomIp","adminRights","AddToAllServers","_newName","newName","DeleteServer","_portNumber","_data","_mode","filepath","mode","existingScript","existingCode","writeToTextFile","existingTextFile","existingText","peekPort","_file","portHandle","suc","pattern","matchScriptPathExact","escapeRegExp","test","_fractionalDigits","_suffixStart","fractionalDigits","suffixStart","_multStart","multStart","deprecationWarning","numeral","_milliseconds","_milliPrecision","milliseconds","milliPrecision","_message","_variant","_duration","nsGetMember","_txt","_options","assert","objectAssert","stringAssert","validTypes","arrayAssert","PromptEvent","_url","_target","$","fail","cloneDeep","numPeopleKilled","jobs","entropy","properties","setDeprecatedProperties","playtimeSinceLastAug","playtimeSinceLastBitnode","bitNodeN","sinceInstall","sinceStart","sourcePath","destinationPath","deleteFromServer","lastAugReset","lastNodeReset","currentNode","ownedAugs","ownedSF","Flags","NetscriptExtra","NetscriptFunctions","getServerRam","fromEntries","getFunctionNames","prefix","functionNames","deprecatedWarningsGiven","checkBladeburnerAccess","getBladeburner","getBladeburnerActionObject","_blackOpName","blackOpName","_type","_level","_autoLevel","_skillName","_count","_size","_cityName","getCodingContract","getContract","answerStr","creward","removeContract","selfFund","materialName","checkAccess","warehouseAPI","_divisionName","_amt","_materialName","_productName","_price","_all","_enabled","_option","_designInvest","_marketingInvest","_qty","_sourceDivision","_sourceCity","_targetDivision","_targetCity","sourceDivision","_on","corpFunctions","_researchName","_job","_amount","totalNewEmployees","_position","_costPerEmployee","omit","_industryName","industryName","_unlockName","_upgradeName","_rate","getSafeDivision","dividendEarnings","_corporationName","_selfFund","_numShares","_factionName","_amountCash","amountCash","assignJob","getEmployee","getExpandCityCost","getExpandIndustryCost","getIndustryTypes","getMaterialNames","getPurchaseWarehouseCost","getResearchNames","getUnlockables","getUpgradeNames","devMenu","doc","completely_unused_field","real_document","recur","_guess","bcrypt","vargs","schema","numDashes","ret","libarg","argv","checkFormulasAccess","formulasFunctions","_favor","_rep","_player","_exp","_mult","_skill","_server","calculateServerGrowth","_targetMoney","targetMoney","startMoney","_startingLevel","_extraLevels","_costMult","_startingRam","_startingCore","_extraCores","extraCores","_ramUsed","_maxRam","HScalculateHashGainRate","HScalculateLevelUpgradeCost","HScalculateRamUpgradeCost","HScalculateCoreUpgradeCost","_startingCache","_extraCache","extraCache","HScalculateCacheUpgradeCost","_upgName","HScalculateServerCost","_gang","_member","_task","_points","_person","_crimeType","calculateCrimeWorkStats","_classType","_locationName","findEnumMember","locationName","calculateClassEarnings","_workType","workType","calculateFactionExp","calculateFactionRep","_companyName","_positionName","positionName","calculateCompanyWorkStats","classGains","getGang","getGangMember","_faction","wantedLevelGainRate","cpy","_memberName","memberName","hack_asc_mult","str_asc_mult","def_asc_mult","dex_asc_mult","agi_asc_mult","cha_asc_mult","recruited","_taskName","getGangTask","_equipName","equipName","equipment","typecheck","_engage","engage","_otherGang","checkGraftingAPIAccess","isValidGraftingAugName","getGraftingAvailableAugs","_augName","GraftableAugmentation","graftableAug","calculateGraftingTimeWithBonus","_focus","wasFocusing","craftableAug","GraftingWork","getHacknetNode","hi","_i","hasUpgraded","timeOnline","_upgTarget","getLocationsWithInfiltrations","filterTruthy","l","tradeRep","sellCash","SoARep","calculateInfiltrationData","runAfterReset","cbScript","RunningScript","startWorkerScript","singularityAPI","_purchased","purchased","_facName","factionAugs","_cbScript","_universityName","_className","universityName","_gymName","_stat","gymName","_programName","baseserver","installTime","wasWorking","salary","requiredSkills","wasFocused","_field","Programs","CreateProgramWork","crimeTime","crimeStatsWithMultipliers","_nextBN","nextBN","getAugmentationCost","checkSleeveAPIAccess","checkSleeveNumber","sleeveNumber","sleeveFunctions","_sleeveNumber","stopWork","shockRecovery","synchronize","takeUniversityCourse","isSleeveCompanyWork","isSleeveFactionWork","workoutAtGym","sl","APICopy","memory","purchasableAugs","findPurchasableAugs","tryBuyAugmentation","_action","_contract","isSleeveBladeburnerWork","getSleeveStats","getInformation","checkStanekAPIAccess","_rootX","_rootY","_rotation","_fragmentId","fragmentId","checkTixApiAccess","getStockFromSymbol","SymbolToStockMap","StockMarketConstants","StockSymbol","_symbol","playerShares","playerAvgPx","playerShortShares","playerAvgShortPx","maxShares","_shares","_posType","posType","sanitizedPosType","PositionType","getBuyTransactionCost","getSellTransactionGain","shortStock","_pos","orderType","orderPos","ltype","OrderType","lpos","orders","stockMarketOrders","StockMarket","orderBook","forecast","otlkMag","getStockMarket4SDataCost","getStockMarket4STixApiCost","getStockMarketWseCost","initStockMarket","getStockMarketTixApiCost","innerWidth","innerHeight","newTheme","hex","currentTheme","errors","newStyles","currentStyles","defaultTheme","defaultStyles","platform","defaultInterpreter","Interpreter","pseudoObj","class","arr","getProperty","hasProperty","config","import","moduleCache","cleanup","FinalizationRegistry","mapKey","deref","compile","mod","generateLoadedModule","module","addDependencyInfo","seenStack","dependents","dependent","ast","sourceType","ecmaVersion","ranges","importNodes","walk","ImportDeclaration","range","ExportNamedDeclaration","ExportAllDeclaration","newCode","importedScript","cachedMod","adjustedCode","URL","createObjectURL","invalidateModule","revokeObjectURL","LoadedModule","WeakRef","register","emptyPortData","getPort","port","NetscriptPorts","Port","resolvers","tryWrite","nextWrite","nextWritePort","full","isFullPort","empty","isEmptyPort","returnVal","prestigeWorkerScripts","startNetscript2Script","loadedModule","main","startNetscript1Script","errorToThrow","codeWithImports","codeLineOffset","importProcessingRes","allowReserved","generatedCode","hasImports","walksimple","scriptName","scriptAst","specifiers","namespace","local","fnNames","fnDeclarations","FunctionDeclaration","fnsToImport","lineOffset","linesRemoved","body","processNetscript1Imports","wrappedNS","interpreter","wrapNS1Layer","intLayer","nsLayer","wrapper","pseudoToNative","nativeToPseudo","setProperty","createAsyncFunction","more","ramAvailable","deferredError","createAndAddWorkerScript","runScript","updateOnlineScriptTimes","createAutoexec","loadAllRunningScripts","skipScriptLoad","rsList","savedScripts","scriptCalculateOfflineProduction","singleRamUsage","sharePower","CSM","oneValidCharacter","directoryRegexString","basicDirectoryRegex","isDirectoryPath","relativeRegex","isAbsolutePath","resolveDirectory","resolveValidatedDirectory","relative","absolute","relativeArray","absoluteArray","nextDir","directoryExistsOnServer","directory","scriptFilePath","textFilePath","getFirstDirectoryInPath","firstSlashIndex","getAllDirectories","dirSet","peel","lastSlashIndex","newDir","filenameRegexString","basicFilePathRegex","isFilePath","getFilenameOnly","getFileParts","groups","getBaseDirectory","pathParts","combinePath","removeDirectoryFromPath","getGlobbedFileMap","currentDir","charsToEscape","regex","hasProgramExtension","extension","asProgramFilePath","validScriptExtensions","extensionToAdd","resolveTextFilePath","calculateEntropy","stacks","nerf","antiLog","graftingIntBonus","GraftableAugmentations","gAugs","canGraft","AugPreReqsChecklist","GraftingRoot","graftableAugmentations","graftOpen","setGraftOpen","selectedAugmentation","m0","m1","Person","queuedAugmentations","gainHackingExp","personMethods","gainStrengthExp","gainDefenseExp","gainDexterityExp","gainAgilityExp","gainCharismaExp","gainIntelligenceExp","gainStats","ratio","tempStr","ignoreQueued","PlayerObject","currentServer","factionInvitations","has4SDataTixApi","hasTixApiAccess","hasWseAccount","moneySourceA","MoneySourceTracker","moneySourceB","purchasedServers","scriptProdSinceLastAug","sleeves","sleevesFromCovenant","sourceFiles","terminalCommandHistory","lastUpdate","init","generalMethods","workMethods","processWork","finishWork","applyForSoftwareJob","applyForSoftwareConsultantJob","applyForItJob","applyForSecurityEngineerJob","applyForNetworkEngineerJob","applyForBusinessJob","applyForBusinessConsultantJob","applyForSecurityJob","applyForAgentJob","applyForEmployeeJob","applyForPartTimeEmployeeJob","applyForWaiterJob","applyForPartTimeWaiterJob","applyForJob","canAccessBladeburner","bladeburnerMethods","canAccessCorporation","corporationMethods","canAccessGang","gangMethods","canAccessGrafting","canAfford","gainMoney","serverMethods","getGangFaction","getGangName","getHomeComputer","getNextCompanyPosition","gotoLocation","hasGangWith","hasProgram","isAwareOfGang","isQualified","loseMoney","reapplyAllAugmentations","reapplyAllSourceFiles","recordMoneySource","startBladeburner","startCorporation","startFocusing","startGang","giveExploit","giveAchievement","getCasinoWinnings","hasJob","createHacknetServer","queueAugmentation","receiveInvite","gainCodingContractReward","stopFocusing","calculateSkillProgress","checkForFactionInvitations","setBitNodeNumber","canAccessCotMG","sourceFileLvl","applyEntropy","augmentationMethods","focusPenalty","cyrb53","loadedJobName","setPlayer","corpName","t_homeComp","numSleeves","Sleeve","calculateSkillProgressF","record","getMember","nextPos","currCompany","currentPositionName","currentPosition","isCompanyWork","playerAug","applySourceFile","invitedFactions","numAugmentations","allCompanies","allPositions","checkMegacorpRequirements","bonus","illuminatiFac","daedalusFac","covenantFac","ecorpFac","megacorpFac","bachmanandassociatesFac","bladeindustriesFac","nwoFac","clarkeincorporatedFac","omnitekincorporatedFac","foursigmaFac","kuaigonginternationalFac","fulcrumsecrettechonologiesFac","fulcrumSecretServer","bitrunnersFac","bitrunnersServer","theblackhandFac","blackhandServer","nitesecFac","nitesecServer","chongqingFac","sector12Fac","newtokyoFac","aevumFac","ishimaFac","volhavenFac","speakersforthedeadFac","thedarkarmyFac","thesyndicateFac","silhouetteFac","tetradsFac","slumsnakesFac","netburnersFac","totalHacknetRam","totalHacknetCores","totalHacknetLevels","tiandihuiFac","cybersecFac","cybersecServer","specialFactions","gainPerFaction","achievementId","casino","finish","cancelled","sleeveMethods","shockBonus","syncBonus","SleeveCrimeWork","getMemoryUpgradeCost","currCost","currMemory","installAugmentation","cyclesUsed","SleeveRecoveryWork","SleeveSynchroWork","ClassType","SleeveClassWork","newCity","upgradeMemory","SleeveCompanyWork","workTypeConversion","SleeveFactionWork","sanitizedStat","SleeveBladeburnerWork","SleeveInfiltrateWork","SleeveSupportWork","recruitmentSuccessChance","contractSuccessChance","bb","chances","MaxSleevesFromCovenant","BaseCostPerSleeve","availableAugs","isAvailableForSleeve","validMults","gangAugs","SleeveWorkType","SleeveWorkClass","cyclesWorked","actionType","cyclesNeeded","applySleeveGains","scaleWorkStats","isSleeveClassWork","calculateRates","isGym","getCompany","getGainRates","influenceStockThroughCompanyWork","invalidWork","isSleeveCrimeWork","getCrime","getExp","crimeWork","getExpRates","getReputationRate","getFaction","factionWork","infiltrateCycles","shockedStats","applyWorkStatsExp","CovenantPurchasesRoot","purchaseDisabled","upgradePanels","CovenantSleeveMemoryUpgrade","maxMemory","purchaseBtnDisabled","purchaseBtnContent","formatSleeveMemory","FAQModal","MoreStatsModal","SleeveAugmentationsModal","SleeveElem","statsOpen","setStatsOpen","augmentationsOpen","setAugmentationsOpen","abc","setABC","percentBar","getWorkDescription","SleeveRoot","FAQOpen","setFAQOpen","CYCLES_PER_SEC","StatsElement","formatHp","formatSleeveShock","formatSleeveSynchro","EarningsElement","rates","companyWork","universitySelectorOptions","gymSelectorOptions","bladeburnerSelectorOptions","possibleJobs","forbiddenCompanies","otherSleeve","possibleFactions","forbiddenFactions","factionObj","first","second","universities","gyms","possibleContracts","Synchronize","canDo","workNames","getABC","s0","setS0","setS1","setS2","validActions","detailsF","details","details2","detail","currentSkill","nextSkill","baseExperience","nextExperience","normalize","currentExperience","remainingExperience","experience","playerObj","loadPlayer","BitNode8StartingMoney","delayedDialog","maintainMembership","prestigeAllServers","prestigeHomeComputer","initForeignServers","LogBoxClearEvents","penalty","WorldDaemon","DaedalusServer","ProgramsSeen","isFlume","setMaxRam","deleteStockMarket","Program","getAvailableCreatePrograms","requireHackingLevel","targetServer","numAugReq","ProgramsRoot","prog","getHackingLevelRemaining","curCompletion","programFile","percComplete","getProgCompletion","newBitNode","bitNodeNumber","sourceFileKey","sourceFile","giveSourceFile","RFAMessage","jsonrpc","method","isFileData","pf","isFileLocation","isFileServer","errorMsg","RFARequestHandler","pushFile","fileData","getFile","getFileNames","fileNameList","getAllFiles","fileList","calculateRam","getDefinitionFile","libSource","Remote","ipaddr","stopConnection","close","startConnection","address","protocol","WebSocket","handleMessageEvent","response","readyState","BitburnerSaveObject","PlayerSave","AllServersSave","CompaniesSave","FactionsSave","AliasesSave","GlobalAliasesSave","StockMarketSave","SettingsSave","VersionSave","AllGangsSave","StaneksGiftSave","getSaveString","forceExcludeRunningScripts","originalExcludeSetting","saveAllServers","ExportBonus","btoa","unescape","encodeURIComponent","saveGame","emitToastEvent","savedOn","saveData","playerIdentifier","getSaveFileName","isRecovery","epochTime","download","importGame","getImportStringFromFile","reader","promise","onload","readAsText","newSave","parsedSave","ctor","importedPlayer","bitNodeLevel","__bn","convert","changes","loadGame","decodeURIComponent","escape","saveObj","loadAllServers","loadStockMarket","ver","anyPlayer","v1APIBreak","AwardNFG","resleeves","defaultMonacoTheme","v22PlayerBreak","ownedNFGs","newNFG","nfg","createProgramName","graft","graftAugmentationName","v2APIBreak","removePlayerFields","removeSleeveFields","anySleeve","lastNodeRest","oldCorp","anyExportsFailed","originalExports","originalExport","evaluateVersionCompatibility","createNewUpdateText","createElement","appendChild","removeChild","RamCalculationErrorCode","specialReferenceWHILE","memCheckGlobalKey","checkInfiniteLoop","missingAwaitLine","WhileStatement","st","walkDeeper","nodeHasTrueTest","hasAwait","AwaitExpression","calculateRamUsage","otherScripts","ns1","dependencyMap","completedParses","parseQueue","parseCode","moduleName","currentModule","globalKey","internalToExternal","additionalModules","addRef","objectPrototypeProperties","getOwnPropertyNames","commonVisitors","Identifier","DoWhileStatement","ForStatement","update","IfStatement","consequent","alternate","MemberExpression","object","property","importModuleName","spec","imported","declaration","specifier","exportedDepName","exported","parseOnlyCalculateDeps","initialModule","nextModule","errorCode","detailedCosts","unresolvedRefs","resolvedRefs","dep","findFunc","elem","refDetail","fnRam","parseOnlyRamCalculate","dataMap","logUpd","logEntry","displayLog","includedPropsNoTitle","Script","ramUsageEntries","ramCalculationError","updateRamUsage","ramCalc","timePassed","confidence","timesGrown","timesWeakened","CursorPositions","positions","saveCursor","getCursor","row","column","Editor","beforeMount","onMount","containerDiv","editorRef","subscription","useScriptEditorContext","monaco","automaticLayout","language","glyphMargin","onDidChangeModelContent","getValue","dispose","getModel","NoOpenScripts","OpenScript","lastPosition","model","isTxt","CURSOR_STYLES","CURSOR_BLINKING_MODES","OptionsModal","themeEditorOpen","openThemeEditor","off","closeThemeEditor","useBoolean","onThemeChange","onOptionChange","marginRight","insertSpaces","tabSize","detectIndentation","wordWrap","vim","fontLigatures","cursorStyle","cursorBlinking","ScriptEditorContext","ScriptEditorContextProvider","setRAM","ramEntries","setRamEntries","isUpdatingRAM","startUpdatingRAM","finishUpdatingRAM","setOptions","Provider","updateRAM","entriesDisp","saveOptions","symbolsLoaded","apiKeys","SetupTextEditor","hiddenAPI","populate","apiLayer","apiKey","apiValue","openScripts","currentScript","decorations","regenerateModel","keydown","metaKey","stopPropagation","debouncedCodeParsing","debounce","createDecorationsCollection","awaitWarning","startLineNumber","startColumn","endLineNumber","endColumn","isWholeLine","glyphMarginClassName","glyphMarginHoverMessage","infLoop","saveScript","scriptToSave","cleanCode","ns2","currentTabIndex","openScript","onTabClick","curIndex","isDisposed","setModel","revealLineInCenter","lineNumber","VimStatus","useVimEditor","editor","onSave","onOpenNextTab","currIndex","onOpenPreviousTab","nextIndex","onTabClose","closingScript","savedScriptCode","wasCurrentScript","dirty","indexOffset","onTabUpdate","serverScriptCode","getServerCode","flex","jsLanguage","loader","tokenizer","token","loadThemes","sanitizeTheme","makeTheme","newScript","newPos","ScriptEditorRoot","tabIconHeight","Tab","provided","isExternal","onUpdate","colorProps","background","iconButtonStyle","tabRef","scrollIntoView","element","innerRef","draggableProps","dragHandleProps","flexShrink","onMouseDown","button","direction","Tabs","isSearchTooltipOpen","openSearchTooltip","closeSearchTooltip","searchExpanded","setSearchExpanded","filteredScripts","originalIndex","toggleSearch","handleScroll","scrollLeft","deltaY","onOpen","onDragEnd","reorder","droppableId","snapshot","droppableProps","isDraggingOver","onWheel","draggableId","disableInteractiveElementBlocking","ColorEditor","themePath","onColorChange","readOnly","hideTextfield","deferred","newColor","disableAlpha","ThemeEditorModal","onThemePropChange","prop","columns","multiline","maxRows","importedTheme","Toolbar","ramInfoOpen","openRAMInfo","closeRAMInfo","optionsOpen","openOptions","closeOptions","getAction","newOptions","updateOptions","inherit","common","accent","bg","fg","syntax","tag","entity","regexp","keyword","comment","constant","panel","selection","colorRegExp","themeKey","block","repairBlock","blockKey","blockValue","themeRules","foreground","themeColors","defineTheme","vimEditor","setVimEditor","vimStatusRef","actionsRef","openNextTab","openPreviousTab","MonacoVim","saveNQuit","_cm","context","serverData","startIndex","endIndex","removed","AllServers","isIPAddress","GetServerByHostname","ipserver","GetServerByIP","serverkey","ipExists","hostName","renameServer","networkLayers","toNumber","serverParams","maxRamExponent","literature","networkLayer","linkNetworkLayers","network1","selectServer","server1","server2","getRandomArrayItem","contractName","lodash","programIndex","litIndex","lit","contractIndex","existingPartialExeIndex","textPath","existingFile","newFile","TextFile","ctorName","runningScripts","rsArray","newDirectory","invalidScriptCount","oldScripts","newFilePath","invalidTextCount","oldTextFiles","textFile","oldName","createRandomString","realDifficulty","capDifficulty","softCap","aboveCap","ajdGrowthRate","serverGrowthPercentage","adjGrowthRate","exponentialBase","coreMultiplier","threadMultiplier","ey","bt","corr","bct","opc","fca","cca","oldMoneyAvailable","isValidNumber","hasBitflume","byPidMap","sanitizedRam","isPowerOfTwo","sign","clz32","Home","FulcrumSecretTechnologies","CyberSecServer","NiteSecServer","TheBlackHandServer","BitRunnersServer","TheDarkArmyServer","DarkWeb","numServerGrowthCycles","growthRate","numServerGrowthCyclesAdjusted","ActiveScriptsServerPageSize","ActiveScriptsScriptPageSize","AutoexecScript","AutosaveInterval","CodeInstructionRunTime","DisableASCIIArt","DisableHotkeys","DisableTextEffects","DisableOverviewProgressBars","EnableBashHotkeys","EnableHistorySearch","TimestampsFormat","Locale","MaxRecentScriptsCapacity","MaxLogCapacity","MaxPortCapacity","MaxTerminalCapacity","RemoteFileApiPort","SaveGameOnFileSave","SuppressBuyAugmentationConfirmation","SuppressFactionInvites","SuppressMessages","SuppressTravelConfirmation","SuppressBladeburnerPopup","SuppressTIXPopup","SuppressSavedGameToast","SuppressAutosaveDisabledWarnings","UseIEC60027_2","ShowMiddleNullTimeUnit","ExcludeRunningScriptsFromSave","IsSidebarOpened","styles","overview","opened","EditorTheme","OwnedAugmentationsOrder","PurchaseAugmentationsOrder","MonacoTheme","MonacoInsertSpaces","MonacoTabSize","MonacoDetectIndentation","MonacoFontFamily","MonacoFontSize","MonacoFontLigatures","MonacoWordWrap","MonacoCursorStyle","MonacoCursorBlinking","hideTrailingDecimalZeros","hideThousandsSeparator","useEngineeringNotation","disableSuffixes","load","clickFnCache","WeakMap","getClickFn","toWrap","SidebarAccordion","sidebarOpen","key_","items","clickPage","flash","li_classes","useMemo","listitem","timeout","active","clickFn","SidebarItem","memo","badgeContent","RotatedDoubleArrowIcon","__ref","openedMixin","transition","transitions","easing","sharp","enteringScreen","closedMixin","leavingScreen","up","Drawer","styled","MuiDrawer","shouldForwardProp","boxSizing","borderLeft","SidebarRoot","augmentationCount","invitationsCount","programCount","canOpenFactions","canOpenAugmentations","canOpenSleeves","canCorporation","canGang","canJob","canStockMarket","canBladeburner","canStaneksGift","isSimplePage","handleShortcuts","KEYCODE","toggleDrawer","ChevronOpenClose","ChevronLeftIcon","ChevronRightIcon","anchor","ComputerIcon","LastPageIcon","CreateIcon","StorageIcon","BugReportIcon","DeveloperBoardIcon","AccountBoxIcon","EqualizerIcon","ContactsIcon","AccountTreeIcon","PeopleAltIcon","PublicIcon","LocationCityIcon","AirplanemodeActiveIcon","WorkIcon","TrendingUpIcon","FormatBoldIcon","BusinessIcon","SportsMmaIcon","LiveHelpIcon","CheckIcon","HelpIcon","EmojiEventsIcon","SettingsIcon","SourceFile","bitnodeKey","bitnode","initSourceFiles","SourceFile1","SourceFile2","SourceFile3","SourceFile4","SourceFile5","SourceFile6","SourceFile7","SourceFile8","SourceFile9","SourceFile10","SourceFile11","SourceFile12","SourceFile13","sourceFileObject","incMult","decMult","suppressDialog","totalPrice","origTotal","newTotal","processTransactionForecastMovement","rerenderFn","resultTxt","netProfit","origCost","Order","typ","invalidArgs","processOrders","refs","stockMarket","Orders","stockOrders","executeOrder","symbolToStockMap","isBuy","moneyHacked","orgName","percTotalMoneyHacked","changeForecastForecast","otlkMagForecast","moneyGrown","percTotalMoneyGrown","performanceMult","cyclesOfWork","compName","defaultConstructorParams","initPrice","marketCap","spreadPerc","shareTxForMovement","divisor","lastPrice","getAbsoluteForecast","shareTxUntilMovement","totalSharesUnrounded","newff","changePrice","newPrice","cycleForecast","changeAmt","increaseChance","getForecastIncreaseChance","cycleForecastForecast","flipForecastForecast","influenceForecast","influenceForecastForecast","ticksUntilCycle","stk","processOrderRefs","orderTxt","stockName","InitStockMetadata","initSymbolToStockMap","stockMarketCycle","cyclesPerStockUpdate","processStockPrices","timeNow","av","chc","otlkMagChange","forecastChangePerPriceMovement","firstShares","remainingShares","numIterations","forecastChange","forecastForecastChange","calculateBuyMaxAmount","isLong","remainingMoney","currPrice","msPerStockUpdate","msPerStockUpdateMin","TicksPerCycle","WSEAccountCost","TIXAPICost","MarketData4SCost","MarketDataTixApi4SCost","StockMarketCommission","TickerHeaderFormatData","longestName","longestSymbol","Purchase4SMarketDataTixApiAccessButton","PurchaseWseAccountButton","PurchaseTixApiAccessButton","Purchase4SMarketDataButton","InfoAndPurchases","PlaceOrderModal","placeText","StockMarketRoot","SelectorOrderType","StockTicker","setOrderType","Market","tickerOpen","setTicketOpen","modalProps","setModalProps","getQuantity","hasOrderAccess","Limit","Stop","rerenderAllTickers","getBuyTransactionCostContent","getSellTransactionCostContent","playerMoney","localesWithLongPriceFormat","StockTickerHeaderText","stockPriceFormat","spacesAllottedForStockPrice","spacesAfterStockName","spacesBeforePrice","hdrText","plusOrMinus","StockTickerOrder","posTxt","StockTickerOrderList","o","LongPosition","percentageGains","ShortPosition","StockTickerPositionText","StockTickerTxButton","StockTickers","tickerDisplayMode","setTickerDisplayMode","TickerDisplayMode","watchlistSymbols","setWatchlistSymbols","tickers","stockMarketProp","changeDisplayMode","changeWatchlistFilter","sanitizedWatchlist","DisplayModeButton","Portfolio","StockTickersConfig","TTerminal","TerminalHelpText","TemplatedHelpTexts","HelpTexts","analyze","backdoor","cat","check","cp","expr","free","lscpu","mem","nano","sudov","top","unalias","Output","RawOutput","Link","dashes","TTimer","timeLeft","parseArg","argAsNumber","splitCommands","commandsText","parseCommands","commandArgs","commandHistory","commandHistoryIndex","outputHistory","contractOpen","currDir","finishAction","append","TerminalEvents","startHack","startGrow","startWeaken","startBackdoor","startAnalyze","finishHack","oldSec","newSec","finishGrow","finishWeaken","finishBackdoor","finishAnalyze","currServ","isHacknet","org","canRunScripts","hackingSkill","security","hackingChance","numPort","getProgressText","getTextFile","getLitFile","getFilepath","useAbsolute","getDirectory","cwd","setcwd","dir","contractPath","executeScanAnalyzeCommand","ignoreServer","printOutput","titlePrefix","infoPrefix","hasRoot","connectToServer","executeCommands","allCommands","executeCommand","TerminalClearEvents","n00dlesServ","commandName","scananalyze","changelog","apr1","Apr1Events","normalServer","relative_filename","userInput","targetDir","newNs2Template","commonEditor","sourceFilePath","destinationInput","destFilePath","destDirectory","zip","JSZip","zipFn","generateAsync","FileSaver","sanitizedExpr","used","avail","maxLength","usedPercent","padStart","killed","incorrectUsage","baseDirectory","allPrograms","allScripts","allTextFiles","allContracts","allMessages","folders","handlePath","dest","parsedPath","firstParentDir","scriptFilename","txtFilename","msgOrLit","SegmentGrid","segmentGrid","colSize","ClickableScriptLink","link","textDecorationLine","warning","fullPath","ClickableMessageLink","FileType","postSegments","segmentElements","segments","segment","Folder","group","numThreads","verboseEntries","matchScriptPathUnanchored","rsObj","delTarget","runProgram","programLowered","realProgramName","runArgs","permissive","tailFlag","maxHostname","maxIP","destHostname","filenames","rawName","scriptTxt","threadsTxt","headers","currRunningScripts","numSpacesScript","spacesScript","numSpacesPid","spacesPid","numSpacesThread","spacesThread","gameCommands","getTabCompletionPossibilities","terminalText","baseDir","currentText","valueWithoutCurrent","commandLength","requiredMatch","pathingRequiredMatch","relativeDir","slashIndex","possibilities","addGeneric","iterable","usePathing","ignoreCurrent","requiredStart","addAliases","addGlobalAliases","addCommands","addDarkwebItems","addServerNames","addScripts","addTextFiles","addCodingContracts","addLiterature","addMessages","addReachableServerNames","addPrograms","addDirectories","onCommand","onFirstCommandArg","scriptAutocomplete","inputCopy","autocomplete","flagFunc","autocompleteData","txts","pos2","TerminalActionTimer","backgroundprimary","bottom","pointerEvents","TerminalInput","terminalInput","postUpdateValue","setPostUpdateValue","setPossibilities","searchResults","setSearchResults","searchResultsIndex","setSearchResultsIndex","autofilledValue","setAutofilledValue","saveValue","postUpdate","resetSearch","isAutofilled","modifyInput","inputLength","selectionStart","inputText","delStart","setSelectionRange","moveTextCursor","keyDown","autoComplete","onBlur","longestMatch","longestCommonStart","newResults","selectionEnd","anchorEl","placement","paragraph","prefixLength","getSearchSuggestionPrespace","overflowWrap","TerminalRoot","setKey","doScroll","hook","debounced","maxWait","unsubscribe","scrollId","show","predefined","getPredefinedThemes","Theme","credit","reference","screenshot","primarylight","primarydark","successlight","successdark","errorlight","errordark","secondarylight","secondarydark","warninglight","warningdark","infolight","infodark","welllight","well","combat","StyleEditorButton","styleEditorOpen","setStyleEditorOpen","FontFamilyField","setErrorText","setFontFamily","LineHeightField","setLineHeight","StyleEditorModal","customStyle","setCustomStyle","persistToSettings","endIcon","refreshTheme","createTheme","light","dark","default","paper","typography","textTransform","components","MuiInputBase","styleOverrides","MuiInput","borderBottomColor","underline","MuiInputLabel","MuiButtonGroup","MuiButton","MuiSelect","defaultProps","MuiTextField","MuiTypography","MuiMenu","MuiMenuItem","MuiAccordionSummary","MuiAccordionDetails","MuiIconButton","MuiTooltip","disableInteractive","MuiSlider","valueLabel","scrollbarWidth","paperAnchorDockedLeft","MuiDivider","MuiFormControlLabel","MuiSwitch","switchBase","track","MuiPaper","MuiTablePagination","select","selectLabel","displayedRows","MuiTab","textColorPrimary","MuiTabs","TabIndicatorProps","MuiAlert","standardSuccess","standardError","standardWarning","standardInfo","TTheme","injectFirst","previousScrollY","ThemeBrowser","modalOpen","setModalOpen","modalImageSrc","setModalImageSrc","predefinedThemes","themes","templateTheme","onActivated","scrollY","previousColors","onImageClick","handleZoom","requestAnimationFrame","ThemeCollaborate","ThemeEditorButton","setThemeEditorOpen","customTheme","setCustomTheme","ThemeEntry","subheader","image","borderTop","opt_initFunc","sourceCode","sourceCodeLineOffset","acorn","PARSE_OPTIONS","initFunc_","paused_","polyfills_","functionCounter_","stepFunctions_","stepMatch","methodName","createScope","stripLocations_","State","done","stateStack","nodeConstructor","READONLY_DESCRIPTOR","writable","NONENUMERABLE_DESCRIPTOR","READONLY_NONENUMERABLE_DESCRIPTOR","VARIABLE_DESCRIPTOR","STEP_ERROR","SCOPE_REFERENCE","VALUE_IN_DESCRIPTOR","toStringCycles_","getErrorLineNumber","getErrorLineNumberMessage","appendCode","populateScope_","initGlobalScope","OBJECT_PROTO","FUNCTION_PROTO","initFunction","initObject","proto","OBJECT","initArray","initString","initBoolean","initNumber","initDate","initRegExp","initError","initMath","initJSON","thisInterpreter","createNativeFunction","EvalError","strFunctions","decodeURI","nativeFunc","throwException","URI_ERROR","FUNCTION","ARRAY","ARRAY_PROTO","REGEXP","REGEXP_PROTO","DATE","DATE_PROTO","identifierRegexp","var_args","calledWithNew","newFunc","createObjectProto","arguments","argsStr","SYNTAX_ERROR","parentScope","boxThis","isObject","getScope","strict","box","getPrototype","thisArg","func_","funcThis_","arguments_","arrayPseudoToNative","TYPE_ERROR","doneExec_","setNativeFunctionPrototype","valueOf","throwIfNullUndefined","arrayNativeToPseudo","preventExtensions","getter","setter","hasValue","pseudoDescriptor","hasOwnProperty","propertyIsEnumerable","newArray","legalArrayLength","RANGE_ERROR","apply","howmany","opt_begin","opt_end","opt_separator","iLength","isa","jLength","searchElement","opt_fromIndex","STRING","fromCharCode","functions","compareString","locales","separator","jsList","search","newSubstr","BOOLEAN","NUMBER","numConsts","fractionDigits","ERROR","precision","toPrecision","radix","Function","UTC","rgx","populateRegExp","lastIndex","opt_message","newError","createObject","createErrorSubclass","EVAL_ERROR","REFERENCE_ERROR","myMath","mathConsts","numFunctions","myJSON","nativeObj","child","legalArrayIndex","Value","strs","pseudoRegexp","nativeRegexp","ignoreCase","createFunction","opt_constructor","illegalConstructor","asyncFunc","pseudoDate","opt_cycles","pseudo","native","nativeArray","pseudoArray","lineNum","isGetter","opt_descriptor","defObj","firstNode","expression","createSpecialScope","opt_scope","getValueFromScope","prevNode","setValueToScope","nodeClass","isConstructor","Completion","NORMAL","BREAK","CONTINUE","RETURN","THROW","errorClass","lineNumErrorMsg","unwind","lineNumberMsg","cv","labels","isLoop","isSwitch","realError","errorTable","RangeError","URIError","createGetter_","funcThis","doneCallee_","doneArgs_","createSetter_","elements","n_","array_","doneLeft_","doneRight_","leftReference_","doneGetter_","leftValue_","leftValue","doneSetter_","setterValue_","rightValue","directEval_","funcNode","paramName","paramValue","argsList","evalNode","argsWithCallback","done_","throwValue","mode_","test_","doneInit_","doneObject_","variable_","object_","visited_","name_","gotPropName","props_","doneVariable_","doneProperty_","properties_","kinds","switchValue_","defaultCase_","index_","switchCase","matched_","tested_","doneBlock_","doneHandler_","doneFinalizer_","leftSide_","changeValue","returnValue","declarations","declarationNode","init_","doneBody_","Color","hueRotate","angle","PI","sin","cos","multiply","grayscale","sepia","saturate","matrix","newR","newG","newB","brightness","linear","contrast","slope","intercept","invert","hsl","Solver","targetHSL","reusedColor","solve","solveNarrow","solveWide","css","best","initial","spsa","wide","A1","iters","bestLoss","deltas","highArgs","lowArgs","ck","lossDiff","ak","fix","filters","colorHSL","fmt","rgb","hexToRgb","enumObj","valueFunction","setupUncaughtPromiseHandler","reason","youAreCurrently","earnings","WorkType","Work","getClass","calculateClassEarningsRate","applyWorkStats","sumWorkStats","classWork","focusBonus","unitCompleted","unitNeeded","getProgram","reqLvl","incompleteName","isCrimeWork","gameCPS","FactionWorkStats","multWorkStats","classs","hashMult","bn11Mult","jobPerformance","isGraftingWork","w0","w1","scaleMoney","workStats","expStats","moneyMult","repMult","removeBracketsFromArrayString","strCpy","removeQuotesFromString","convert2DArrayToString","ans","nums","ways","maxLen","spiral","col","playerAns","_arr","reach","jumps","lastJump","jumpedFrom","intervals","numIntervals","sanitizedResult","sanitizedAns","ansArr","ipInAns","maxCur","maxSoFar","hold1","MIN_SAFE_INTEGER","hold2","release1","release2","prices","hold","rele","cur","createTriangleRecurse","numLevels","numSpaces","triangle","dp","numRows","numColumns","currentRow","gridString","obstacleGrid","dstY","dstX","minPathLength","distanceFactor","distance","MinHeap","validPosition","yN","xN","changeWeight","yQ","xQ","ansX","ansY","chars","roll","dfs","pair","sanitizedPlayerAnsArr","resultInAnswer","numDigits","digitsArray","sanitizedPlayerAns","helper","multed","HammingEncode","_alteredBit","_buildArray","HammingEncodeProperly","_randomIndex","HammingDecode","edges","vertexShuffler","neighbourhood","vertex","adjLeft","adjRight","coloring","initialVertex","frontier","validColors","aColor","bColor","plaintext","plain","comprGenChar","ans_plain","run_length","compressed","comprLZEncode","comprLZGenerate","compr","comprLZDecode","getDB","indexedDB","indexedDbRequest","onupgradeneeded","createObjectStore","onerror","onsuccess","db","transaction","objectStore","request","put","deleteGame","_lastUpdate","decrementAllCounters","checkCounters","Counters","autoSaveCounter","updateSkillLevelsCounter","updateDisplays","updateDisplaysLong","updateActiveScriptsDisplay","createProgramNotifications","augmentationsNotifications","passiveFactionGrowth","mechanicProcess","contractGeneration","achievementsCounter","counterName","counter","warningToast","warnAutosaveDisabled","randFaction","adjustedCycles","timeOffline","numCyclesOffline","contractChancesWhileOffline","numContracts","offlineReputation","offlineHackingIncome","offlineProductionFromHacknetNodes","hacknetProdInfo","timeOfflineString","_thisUpdate","__COMMIT_HASH__","globalThis","ReactDOM","onbeforeunload","ActiveScriptsRoot","noborder","RecentScriptAccordion","recentScript","onlineMps","onlineEps","RecentScriptsPage","ScriptProduction","prodRateSinceLastAug","paddedName","barOptions","headerTxt","ServerAccordionContent","rowsPerPage","setRowsPerPage","dense","rowsPerPageOptions","onPageChange","newPage","onRowsPerPageChange","ActionsComponent","TablePaginationActionsAll","ServerAccordions","serverToScriptMap","filtered","WorkerScriptAccordion","killScript","frames","Apr1","getMonth","getDate","isApr1","allow","EmployersModal","MultiplierTable","noMargin","effValue","CurrentBitNode","MoneyModal","convertMoneySourceTrackerToString","parts","hacknet_expenses","hospitalization","CharacterStats","moneyOpen","setMoneyOpen","employersOpen","setEmployersOpen","timeRows","showBitNodeMults","ButtonWithTooltip","tooltipProps","CustomBoundary","componentDidCatch","ErrorBoundary","hasError","errorInfo","errorData","getErrorForDisplay","ex","resetError","htmlLocation","isInitialized","allowRouting","toPage","back","GameRoot","pages","setPages","RecoveryMode","pageWithContext","errorBoundaryKey","setErrorBoundaryKey","allowRoutingCalls","setAllowRoutingCalls","killAllScripts","attemptedForbiddenRouting","setNextPage","mainPage","withSidebar","withPopups","bypassGame","importString","parentOpen","killScripts","InteractiveTutorialRoot","tutorialScriptName","contents","canNext","LoadingScreen","setShow","loaded","setLoaded","ActivateRecoveryMode","doLoad","h1","h2","h3","h4","h5","h6","pre","Pre","li","th","Th","td","Td","table","thead","TableHead","tr","blockquote","Blockquote","remarkPlugins","remarkGfm","useNavigator","rel","textDecoration","paddingLeft","paddingRight","paddingTop","InlineCode","BigCode","inline","borderLeftColor","borderLeftStyle","ordered","fixAlign","ANSI_ESCAPE","lineClass","ANSIITypography","matchAll","stopIndex","partText","part","ansiCodeStyle","COLOR_MAP_BRIGHT","COLOR_MAP_DARK","ansi2rgb","codeParts","startIdx","ir","ig","ib","grey","codePart","extra","colorString","AlertManager","alerts","setAlerts","sha256","getMessageHash","handle","BypassWrapper","OverviewEventEmitter","valUpdaters","HP","Money","Str","Def","Dex","Agi","Cha","Int","formattedVals","formatSkill","skillMultUpdaters","skillNameMap","SkillBar","setProgress","Val","setVal","DataRow","showBar","cellType","skillBar","CharacterOverview","killOpen","setKillOpen","hasIntelligence","setHasIntelligence","showBars","setShowBars","emit","BladeburnerText","ActionText","onClickFocusWork","WorkInProgressOverview","header","workCell","workHeader","workSubtitles","innerText","CinematicLine","setLength","setDone","newLength","advance","CinematicText","setI","newI","CodingContractModal","contractType","sortedCompanies","CompanyDropdown","companies","ConfirmationModal","CopyableText","copyText","execCommand","CorruptableText","setContent","timers","randFrom","randomize","timerId","DeleteGameButton","modalOpened","setModalOpened","html","Navigator","defaultPage","HistoryContext","HistoryProvider","setHistory","onPush","onPop","onHome","Favor","HashRate","formatHashes","Hashes","ComparisonIcon","isBetter","skillTitle","playerSkills","initialAutosave","ImportSave","currentData","setCurrentData","isImportModalOpen","openImportModal","closeImportModal","isSkillsExpanded","toggle","toggleSkillsExpand","headback","setHeadback","dataBeingImported","dataCurrentlyInGame","fetchData","importSkill","KillScriptsModal","layerCounter","LogBoxProperties","rootRef","updateDOM","LogBoxManager","closePid","LogWindow","titleButton","logBoxBaseZIndex","draggableRef","textArea","propsRef","minimized","setMinimized","updateLayer","zIndex","baseScript","minimize","onWindowResize","isOnScreen","bounds","getBoundingClientRect","outerWidth","minConstraints","onDrag","MouseEvent","clientX","clientY","flexFlow","ResizableBox","onResize","title_str","onTouchEnd","Range","setStartBefore","setEndAfter","getSelection","removeAllRanges","addRange","modal","boxShadow","closeButton","Modal","disableRestoreFocus","disableScrollLock","disableEnforceFocus","disableAutoFocus","closeAfterTransition","MoneyRate","NumberInput","textProps","parseBigNumber","OptionSwitch","overviewContainer","visibilityToggle","collapse","setY","CurrentIcon","KeyboardArrowUpIcon","KeyboardArrowDownIcon","LeftIcon","SchoolIcon","fakeDrag","triggerMouseEvent","eventType","clickEvent","createEvent","initEvent","dispatchEvent","onStop","defaultPosition","onDoubleClick","ProgressBar","withStyles","bar","LinearProgress","PromptManager","setPrompt","PromptMenuText","PromptMenuSelect","PromptContent","PromptMenuBoolean","submit","onInput","getItems","RecoveryRoot","issueUrl","newIssueUrl","Reputation","ReputationRate","All","Foreign","Owned","Purchased","ServerDropdown","isValidServer","snackbar","SnackbarProvider","maxSnack","anchorOrigin","horizontal","vertical","autoHideDuration","containerRoot","Snackbar","enqueueSnackbar","closeSnackbar","useSnackbar","severity","SoftResetButton","StaticModal","StatsProgressBar","StatsProgressOverviewCell","StatsRow","StatsTable","MuiTable","Table","noWrap","small","WorldMap","autoRerenderTime","intervalID","SimplePage","ComplexPage","simplePages","ExpRows","WorkInProgressRoot","workInfo","stopText","completion","unfocus","elapsed","stopTooltip","graftWork","comp","companyRep","tooltipInfo","numberSuffixList","numberExpList","ramLog1000Suffixes","ramLog1024Suffixes","basicFormatter","exponentialFormatter","ramSuffixList","ramExpList","ramLogFn","ramLogDivisor","digitFormats","percentFormats","makeFormatter","otherOptions","useGrouping","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","getFormatter","formatList","nAbs","at","suffixIndex","formatExponential","toLocaleLowerCase","log10","notation","cur_state","new_state","new_offset","tmp_state","literal_length","backref_length","backref_offset","EnumHelper","defaultArgName","valueArray","valueSet","fuzzMap","toValidate","allowableValues","alwaysMatch","enumHelpers","allEnums","enumName","GameEnv","Platform","isElectron","Production","toDisplay","cookiesEnabled","cookieEnabled","doNotTrack","indexedDb","Steam","Browser","environment","getErrorMetadata","Development","componentStack","uuidv4","subscribers","uuid","enc","data_bits","parity","bits","bit","BinHeap","heapifyUp","heapifyDown","predicate","heapOrderABeforeB","toSwap","weightA","weightB","getRandomByte","_key","isReviverValue","fromJSON","validationData","validateObject","showMilli","negFlag","millisecondsPerSecond","secondPerMinute","minutesPerHours","secondPerHours","hoursPerDays","secondPerDay","totalSeconds","days","secTruncDays","hours","secTruncHours","minutes","secTruncMinutes","milliTruncSec","strings","a1","a2","ch","v2ModalOpen","openV2Modal","V2Modal","validator","paramValidator","expFac","linearFac","vals","n00dlePower","midpoint","derived","bars","lowerValue","modifications","newObj","keySet","addedKeys","upper","lower","formattedHours","getHours","formattedMinutes","getMinutes","formattedSeconds","getSeconds","decimal","assertFn","msgFn","getFriendlyType","detect","hasChanges","orig","nf","fl","oldFilename","getPlayerFields","matchJS","matchScript","offenders","processScript","formatRules","formatOffenders","fileline","rule","__webpack_module_cache__","leafPrototypes","getProto","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","chunkIds","priority","notFulfilled","__esModule","getPrototypeOf","definition","Symbol","toStringTag","nmd","paths","importScripts","getElementsByTagName","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"main.bundle.js","mappings":"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,OACA,QACA,YACA,UACA,KACA,SACA,SACA,YACA,QACA,YACA,UACA,UACA,WACA,WACA,YACA,SACA,OACA,MACA,aACA,aACA,YACA,OACA,SACA,WACA,QACA,aACA,SACA,UACA,cACA,UACA,OACA,MACA,WACA,SACA,cACA,MACA,aACA,WACA,OACA,MACA,UACA,QACA,WACA,UACA,aACA,QACA,UACA,MACA,OACA,SACA,WACA,WACA,UACA,QACA,cACA,cACA,YACA,SACA,OACA,SACA,QACA,WACA,WACA,WACA,OACA,SACA,WACA,YACA,OACA,OACA,YACA,YACA,OACA,QACA,UACA,YACA,WACA,aACA,YACA,OACA,WACA,WACA,SACA,MACA,WACA,UACA,SACA,gBACA,OACA,QACA,UACA,QACA,QACA,UACA,YACA,QACA,YACA,UACA,QACA,SACA,SACA,QACA,UACA,cACA,QACA,aACA,MACA,UACA,OACA,WACA,WACA,UACA,SACA,aACA,YACA,SACA,SACA,SACA,OACA,WACA,QACA,OACA,WACA,SACA,SACA,WACA,SACA,UACA,QACA,SACA,QACA,UACA,UACA,UACA,UACA,aACA,WACA,QACA,SACA,MACA,WACA,SACA,aACA,UACA,MACA,OACA,SACA,UACA,OACA,OACA,UACA,SACA,aACA,SACA,SACA,SACA,SACA,SACA,WACA,SACA,YACA,QACA,QACA,YACA,WACA,oBACA,WACA,OACA,UACA,cACA,UACA,SACA,UACA,gBACA,OACA,SACA,QACA,MACA,WACA,WACA,WACA,cACA,SACA,UACA,QACA,eACA,WACA,OACA,OACA,SACA,MACA,OACA,iBACA,WACA,UACA,UACA,UACA,iBACA,QACA,MACA,YACA,UACA,SACA,OACA,SACA,UACA,WACA,YACA,cACA,MACA,OACA,MACA,MACA,qECvTK,SAASc,IACd,MAAOlxD,EAAImxD,IAASj9G,EAAAA,EAAAA,WAAS,GAK7B,OAJA6R,EAAAA,EAAAA,YAAU,KACR,MAAM5N,EAAIiH,aAAY,IAAM+xG,GAAO33F,IAASA,KAAM,KAClD,MAAO,IAAM/H,cAActZ,EAAE,IAExB,gCAAG6nD,EAAK,IAAM,gCAAE,KACzB,8KCUA,MAAM4vD,EAKF,CACFC,QAAS,CAAE/d,MAAO,IAAMr5E,IAAK,EAAGkE,IAAK,GACrCmzF,OAAQ,CAAEhe,MAAO,IAAMr5E,IAAK,EAAGkE,IAAK,GACpCozF,KAAM,CAAEje,MAAO,IAAMr5E,IAAK,EAAGkE,IAAK,GAClCqzF,WAAY,CAAEle,MAAO,KAAMr5E,IAAK,EAAGkE,IAAK,IAkCnC,SAASy0F,EAAYnkG,GAC1B,MAAMoH,EAAyB,CAAEy9E,MAAO,EAAGr5E,IAAK,EAAGkE,IAAK,IACxDuzF,EAAAA,EAAAA,GAAYN,EAAc3iG,EAAMoH,WAAYA,GAC5C,MAAMy9E,EAAQz9E,EAAWy9E,OAClBuf,EAAOC,IAAYp9G,EAAAA,EAAAA,UAAS,KAC5Bm/E,IAAQn/E,EAAAA,EAAAA,UApCjB,SAA0BmgB,GACxB,IAAIxX,EAAM,GACV,MAAM00G,EAAU,CAACtoF,EAAAA,EAAAA,aAAkBA,EAAAA,EAAAA,UAAeA,EAAAA,EAAAA,iBAAsBA,EAAAA,EAAAA,YACpE3xB,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,gBAAiC,IAC1Dy4G,EAAQvsG,OAAO,EAAG,GAEpB,MAAM1O,GAASkW,EAAAA,EAAAA,IAAO6H,EAAWoE,IAAKpE,EAAWsI,KACjD,IAAK,IAAIxkB,EAAI,EAAGA,EAAI7B,EAAQ6B,IAC1B0E,GAAO00G,EAAQ31G,KAAKC,MAAMD,KAAK4Q,SAAW+kG,EAAQj7G,SAGpD,OAAOuG,CACT,CAwB0B20G,CAAiBn9F,IAiBzC,OACE,gCACE,gBAAC,IAAS,CAACm8F,OAAQ1e,EAAO2e,SAAUxjG,EAAMyjG,YAC1C,gBAAC,IAAK,CAAC59G,GAAI,CAAEG,QAAS,OAAQi6F,aAAc,WAC1C,gBAAC,IAAU,CAACz5F,QAAQ,MAAK,sBACzB,gBAAC,IAAU,CAACiB,MAAO,CAAEZ,SAAU,QAC3B,GAAEu/E,IAAOg+B,IACX,gBAAC,IAAc,OAEjB,gBAAC,IAAU,CAACz3E,UAxBlB,SAA+BxC,GAC7BA,EAAMyC,iBACN,MAAM43E,EA1BV,SAAiBr6E,GACf,OAAIA,EAAMxgC,MAAQqyB,EAAAA,EAAAA,kBAA8BA,EAAAA,EAAAA,kBAC5CmO,EAAMxgC,MAAQqyB,EAAAA,EAAAA,cAA0BA,EAAAA,EAAAA,cACxCmO,EAAMxgC,MAAQqyB,EAAAA,EAAAA,YAAwBA,EAAAA,EAAAA,YACtCmO,EAAMxgC,MAAQqyB,EAAAA,EAAAA,aAAyBA,EAAAA,EAAAA,aACpC,EACT,CAoBiByoF,CAAQt6E,GAChBq6E,IAnBT,SAAep+B,EAAcg+B,GAC3B,OACGh+B,IAASpqD,EAAAA,EAAAA,cAAoBooF,IAAUpoF,EAAAA,EAAAA,eACvCoqD,IAASpqD,EAAAA,EAAAA,WAAiBooF,IAAUpoF,EAAAA,EAAAA,cACpCoqD,IAASpqD,EAAAA,EAAAA,kBAAwBooF,IAAUpoF,EAAAA,EAAAA,mBAC3CoqD,IAASpqD,EAAAA,EAAAA,YAAkBooF,IAAUpoF,EAAAA,EAAAA,WAE1C,CAaStlB,CAAM0vE,EAAKA,EAAK/8E,OAAS+6G,EAAM/6G,OAAS,GAAIm7G,GAI7Cp+B,EAAK/8E,SAAW+6G,EAAM/6G,OAAS,EAInCg7G,EAASD,EAAQI,GAHfxkG,EAAMgkG,YAJNhkG,EAAMyjG,YAQV,EAWoCA,UAAWzjG,EAAMyjG,aAIvD,8KC/EA,MAAMd,EAKF,CACFC,QAAS,CAAE/d,MAAO,KAAOz+F,KAAM,GAC/By8G,OAAQ,CAAEhe,MAAO,IAAMz+F,KAAM,GAC7B08G,KAAM,CAAEje,MAAO,IAAMz+F,KAAM,GAC3B28G,WAAY,CAAEle,MAAO,KAAMz+F,KAAM,KAG5B,SAASs+G,EAAU1kG,GACxB,MAAMoH,EAAyB,CAAEy9E,MAAO,EAAGz+F,KAAM,IACjD68G,EAAAA,EAAAA,GAAYN,EAAc3iG,EAAMoH,WAAYA,GAC5C,MAAMy9E,EAAQz9E,EAAWy9E,OAClB8f,IAAW19G,EAAAA,EAAAA,UAmFpB,SAAqBmgB,GACnB,MAAMu9F,EAAU,GAChBA,EAAQvsG,KAAKwsG,EAASj2G,KAAKC,MAAMD,KAAK4Q,SAAWqlG,EAASv7G,UAC1D,IAAK,IAAI6B,EAAI,EAAGA,EAAIkc,EAAWhhB,KAAM8E,IAAK,CACxC,MAAM25G,EAASC,EAASn2G,KAAKC,MAAMD,KAAK4Q,SAAWulG,EAASz7G,SACxDs7G,EAAQz7G,SAAS27G,GACnB35G,IAGFy5G,EAAQvsG,KAAKysG,EACf,CAEA,OArBF,SAAsBhjC,GACpB,IAAK,IAAI32E,EAAI22E,EAAMx4E,OAAS,EAAG6B,EAAI,EAAGA,IAAK,CACzC,MAAMqpC,EAAI5lC,KAAKC,MAAMD,KAAK4Q,UAAYrU,EAAI,IACpCyhD,EAAOk1B,EAAM32E,GACnB22E,EAAM32E,GAAK22E,EAAMttC,GACjBstC,EAAMttC,GAAKoY,CACb,CACF,CAaEo4D,CAAaJ,GACNA,CACT,CAhG6BK,CAAY59F,KAChC69F,EAAcC,IAAmBj+G,EAAAA,EAAAA,UAAS,IAC1C0xC,EAAOC,IAAY3xC,EAAAA,EAAAA,UAAS,GAC7Bk+G,EAAgBR,EAAQhsE,IAE9B7/B,EAAAA,EAAAA,YAAU,KACRosG,EAAgBP,EAAQlyD,WAAW2yD,GAAWR,EAAS17G,SAASk8G,KAAS,GACxE,CAACT,IAEJ,MAAMU,EAAe5/G,EAAAA,EAAAA,MAAAA,QACf6/G,EAAgB7/G,EAAAA,EAAAA,MAAAA,SACtB,IAAI8/G,EAAUF,EACVG,EAAYH,EACZI,EAAcJ,EAGlB,GAFmBh7G,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,mBAAoC,GAE9D,CACd,MAAM65G,EAAU/sE,EAAQ,GAAKgsE,EAAQt7G,OAAS,EAAIsvC,EAAQ,EAC1D,IAAIgtE,EAAaV,EAAeS,EAC5BA,EAAUT,IACZU,EAAahB,EAAQt7G,OAAS,EAAIq8G,EAAUT,GAG9C,MAAMW,EAAYjtE,EAAQ,EAAI,EAAIgsE,EAAQt7G,OAAS,EAAIsvC,EAAQ,EAC/D,IAAIktE,EAAeD,EAAYX,EAC3BW,EAAYX,IACdY,EAAeD,EAAYjB,EAAQt7G,OAAS,EAAI47G,GAGlD,MAAMa,EAAiBb,GAAgBtsE,EAEvC4sE,EAAUI,GAAcE,IAAiBC,EAAiBP,EAAUD,EACpEE,EAAYG,GAAcE,IAAiBC,EAAiBN,EAAYF,EACxEG,EAAcK,EAAiBT,EAAeC,CAChD,CAoBA,OACE,gCACE,gBAAC,IAAS,CAAC/B,OAAQ1e,EAAO2e,SAAUxjG,EAAMyjG,YAC1C,gBAAC,IAAK,CAAC59G,GAAI,CAAEG,QAAS,OAAQi6F,aAAc,WAC1C,gBAAC,IAAU,CAACz5F,QAAQ,MAAK,sCACzB,gBAAC,IAAU,CAACmmC,UAvBlB,SAA+BxC,GAC7BA,EAAMyC,iBAEN,MAAM/qB,EAAIsoB,EAAMxgC,IAChB,GAAIkY,IAAMma,EAAAA,EAAAA,MAGR,YAFI4oF,EAAS17G,SAASi8G,GAAgBnlG,EAAMgkG,YACvChkG,EAAMyjG,aAIb,IAAIsC,EAAWptE,EAGf,IAFI,CAAC3c,EAAAA,EAAAA,SAAcA,EAAAA,EAAAA,EAAOA,EAAAA,EAAAA,YAAiBA,EAAAA,EAAAA,GAAO5zB,KAAKyZ,GAAMA,IAAa3Y,SAAS2Y,IAAIkkG,IACnF,CAAC/pF,EAAAA,EAAAA,WAAgBA,EAAAA,EAAAA,EAAOA,EAAAA,EAAAA,WAAgBA,EAAAA,EAAAA,GAAO5zB,KAAKyZ,GAAMA,IAAa3Y,SAAS2Y,IAAIkkG,IACjFA,EAAW,GAAGA,GAAYpB,EAAQt7G,OACzC,KAAO08G,EAAWpB,EAAQt7G,OAAS,GAAG08G,GAAYpB,EAAQt7G,OAC1DuvC,EAASmtE,EACX,EAOoCtC,UAAWzjG,EAAMyjG,YAC/C,gBAAC,IAAU,CAACj9G,QAAQ,KAAKC,MAAO8+G,GAC7BS,EAAAA,IAEH,gBAAC,IAAU,CAACx/G,QAAQ,KAAKC,MAAOg/G,GAC7BN,GAEH,gBAAC,IAAU,CAAC3+G,QAAQ,KAAKC,MAAO++G,GAC7BS,EAAAA,KAKX,CA0BA,MAAMrB,EAAW,CACf,eACA,YACA,SACA,WACA,WACA,aACA,YACA,WACA,QACA,WACA,SACA,UACA,aACA,UACA,SACA,OACA,cACA,UACA,UACA,QACA,mBAGIE,EAAW,CACf,aACA,QACA,WACA,aACA,WACA,SACA,QACA,WACA,SACA,eACA,QACA,UACA,SACA,UACA,cACA,YACA,mBACA,QACA,WACA,cACA,gKCxJF,MAAMnC,EAKF,CACFC,QAAS,CAAE/d,MAAO,KAAOr5E,IAAK,EAAGkE,IAAK,GACtCmzF,OAAQ,CAAEhe,MAAO,IAAMr5E,IAAK,EAAGkE,IAAK,GACpCozF,KAAM,CAAEje,MAAO,IAAMr5E,IAAK,EAAGkE,IAAK,GAClCqzF,WAAY,CAAEle,MAAO,IAAMr5E,IAAK,EAAGkE,IAAK,KAGnC,SAASw2F,EAAclmG,GAC5B,MAAMoH,EAAyB,CAAEy9E,MAAO,EAAGr5E,IAAK,EAAGkE,IAAK,IACxDuzF,EAAAA,EAAAA,GAAYN,EAAc3iG,EAAMoH,WAAYA,GAC5C,MAAMy9E,EAAQz9E,EAAWy9E,OAClBzN,IAAQnwF,EAAAA,EAAAA,UA0BjB,SAAsBmgB,GACpB,MAAM++F,EAAS,CAACC,EAAAA,GAAiBC,EAAAA,GAAkBL,EAAAA,GAAeC,EAAAA,IAClE,IAAI7uB,EAAO,GACX,IAAK,IAAIlsF,EAAI,EAAGA,GAAIqU,EAAAA,EAAAA,IAAO6H,EAAWoE,IAAKpE,EAAWsI,KAAMxkB,IAAK,CAC/D,IAAIo7G,EAAQH,EAAOx3G,KAAKC,MAAM,EAAID,KAAK4Q,WACvC,KAAO+mG,IAAUlvB,EAAKA,EAAK/tF,OAAS,IAAIi9G,EAAQH,EAAOx3G,KAAKC,MAAM,EAAID,KAAK4Q,WAC3E63E,GAAQkvB,CACV,CAEA,OAAOlvB,CACT,CApC0BmvB,CAAan/F,KAC9BuxB,EAAOC,IAAY3xC,EAAAA,EAAAA,UAAS,GAC7Bq8G,EAAaj5G,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,kBAAmC,GAY7E,OACE,gCACE,gBAAC,IAAS,CAAC03G,OAAQ1e,EAAO2e,SAAUxjG,EAAMyjG,YAC1C,gBAAC,IAAK,CAAC59G,GAAI,CAAEG,QAAS,OAAQi6F,aAAc,WAC1C,gBAAC,IAAU,CAACz5F,QAAQ,MAAK,mBACzB,gBAAC,IAAU,CAACA,QAAQ,MAAM4wF,EAAKz+C,IAC/B,gBAAC,IAAU,CAAChM,UAhBlB,SAA+BxC,GAC7BA,EAAMyC,iBACFwqD,EAAKz+C,MAAW6tE,EAAAA,EAAAA,IAASr8E,IAAYm5E,GAAclsB,EAAKz+C,MAAW8tE,EAAAA,EAAAA,IAAgBt8E,IAIvFyO,EAASD,EAAQ,GACbA,EAAQ,GAAKy+C,EAAK/tF,QAAQ2W,EAAMgkG,aAJlChkG,EAAMyjG,WAKV,EAQoCA,UAAWzjG,EAAMyjG,aAIvD,sFC1DO,SAASiD,EAAU1mG,GACxB,MAAOhF,EAAG2rG,IAAQ1/G,EAAAA,EAAAA,UAAS,GAS3B,OARA6R,EAAAA,EAAAA,YAAU,KACE,IAANkC,EAIJ46B,YAAW,IAAM+wE,EAAK3rG,EAAI,IAAI,KAH5BgF,EAAM4mG,UAG0B,IAIlC,gBAAC,IAAK,CAAC/gH,GAAI,CAAE2H,EAAG,EAAGmnC,UAAW,WAC5B,gBAAC,IAAU,CAACnuC,QAAQ,MAAK,cACzB,gBAAC,IAAU,CAACA,QAAQ,MAAMwU,GAGhC,yLCGA,MAAM2nG,EAKF,CACFC,QAAS,CAAE/d,MAAO,MAAO19F,MAAO,EAAGC,OAAQ,EAAGmxC,QAAS,GACvDsqE,OAAQ,CAAEhe,MAAO,KAAO19F,MAAO,EAAGC,OAAQ,EAAGmxC,QAAS,GACtDuqE,KAAM,CAAEje,MAAO,MAAO19F,MAAO,EAAGC,OAAQ,EAAGmxC,QAAS,GACpDwqE,WAAY,CAAEle,MAAO,IAAO19F,MAAO,EAAGC,OAAQ,EAAGmxC,QAAS,IAGrD,SAASsuE,EAAkB7mG,GAChC,MAAMoH,EAAyB,CAAEy9E,MAAO,EAAG19F,MAAO,EAAGC,OAAQ,EAAGmxC,QAAS,IACzE0qE,EAAAA,EAAAA,GAAYN,EAAc3iG,EAAMoH,WAAYA,GAC5C,MAAMy9E,EAAQz9E,EAAWy9E,OAClBiiB,IAAQ7/G,EAAAA,EAAAA,UAuHjB,SAAwBmgB,GACtB,MAAM2/F,EAAS,GACf,IAAK,IAAI77G,EAAI,EAAGA,EAAIyD,KAAKguB,MAAMvV,EAAWhgB,QAAS8D,IAAK,CACtD,MAAMmwB,EAAO,GACb,IAAK,IAAIkZ,EAAI,EAAGA,EAAI5lC,KAAKguB,MAAMvV,EAAWjgB,OAAQotC,IAChDlZ,EAAKjjB,KAAK4uG,IAAaA,KAEzBD,EAAO3uG,KAAKijB,EACd,CACA,OAAO0rF,CACT,CAjI0BE,CAAe7/F,KAChC8/F,IAAWjgH,EAAAA,EAAAA,UA0GpB,SAAyB6/G,EAAkB1/F,GACzC,MAAM8/F,EAAU,GAChB,IAAK,IAAIh8G,EAAI,EAAGA,EAAIyD,KAAKguB,MAAMvV,EAAWmxB,SAAUrtC,IAClDg8G,EAAQ9uG,KAAK0uG,EAAKn4G,KAAKC,MAAMD,KAAK4Q,SAAWunG,EAAKz9G,SAASsF,KAAKC,MAAMD,KAAK4Q,SAAWunG,EAAK,GAAGz9G,UAEhG,OAAO69G,CACT,CAhH6BC,CAAgBL,EAAM1/F,KAC1CggG,EAAoBC,IAAyBpgH,EAAAA,EAAAA,UAAS,IACtDu3C,EAAKqoC,IAAU5/E,EAAAA,EAAAA,UAAS,CAAC,EAAG,IAE7Bq8G,EAAaj5G,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,iBAAkC,GAoCtEy7G,EAAuB,GAgB7B,OAfAR,EAAK1+G,KAAI,CAACizB,EAAM0iD,IACd1iD,EAAKjzB,KAAI,CAAC42E,EAAMhkE,KACd,MAAMusG,EAAkBvoC,IAASkoC,EAAQE,GACnCI,EAAclE,IAAeiE,EAAkB9hH,EAAAA,EAAAA,MAAAA,SAA0BA,EAAAA,EAAAA,MAAAA,QAE3EuV,IAAMwjC,EAAI,IAAMu/B,IAAMv/B,EAAI,GAK9B8oE,EAASlvG,KAAK,CAAE3R,MAAO+gH,EAAa39G,QAASm1E,IAJ3CsoC,EAASlvG,KAAK,CAAE3R,MAAO+gH,EAAa39G,QAASm1E,EAAMl9D,UAAU,GAIX,MAMtD,gCACE,gBAAC,IAAS,CAACyhG,OAAQ1e,EAAO2e,SAAUxjG,EAAMyjG,YAC1C,gBAAC,IAAK,CAAC59G,GAAI,CAAEG,QAAS,OAAQi6F,aAAc,SAAUyjB,GAAI,IACxD,gBAAC,IAAU,CAACl9G,QAAQ,MAAK,sBACzB,gBAAC,IAAU,CAACA,QAAQ,KAAKC,MAAOhB,EAAAA,EAAAA,MAAAA,SAAwB,WAC7C,IACRyhH,EAAQ9+G,KAAI,CAACK,EAAGyC,IACXA,GAAKk8G,EAEL,wBAAMz9G,IAAM,GAAEuB,IAAKzD,MAAO,CAAEZ,SAAU,MAAOJ,MAAOhB,EAAAA,EAAAA,MAAAA,YACjDgD,EAAE,KAIP,wBAAMkB,IAAM,GAAEuB,IAAKzD,MAAO,CAAEZ,SAAU,MAAOJ,MAAOhB,EAAAA,EAAAA,MAAAA,UACjDgD,EAAE,QAKX,2BACA,gBAAC,IAAG,CACF5C,GAAI,CACFG,QAAS,OACT8a,oBAAsB,UAASnS,KAAKguB,MAAMvV,EAAWjgB,eACrD+Z,IAAK,IAGNomG,EAASl/G,KAAI,CAACsB,EAAM+9G,IACnB,gBAAC,IAAU,CACT99G,IAAK89G,EACL5hH,GAAI,CACFgB,SAlCG,MAmCHJ,MAAOiD,EAAKjD,MACZX,OAAQ4D,EAAKoY,SAAY,aAAYrc,EAAAA,EAAAA,MAAAA,YAA6B,QAClE4T,WAAY,QACZ7L,EAAG9D,EAAKoY,SAAW,MAAQ,QAG5BpY,EAAKG,YAIZ,gBAAC,IAAU,CAAC8iC,UA/FlB,SAA+BxC,GAC7BA,EAAMyC,iBACN,MAAM86E,EAAO,CAAC,EAAG,GAEjB,QADclB,EAAAA,EAAAA,IAASr8E,IAErB,KAAK67E,EAAAA,GACH0B,EAAK,KACL,MACF,KAAKtB,EAAAA,GACHsB,EAAK,KACL,MACF,KAAKzB,EAAAA,GACHyB,EAAK,KACL,MACF,KAAKrB,EAAAA,GACHqB,EAAK,KAGT,MAAMz5C,EAAO,CAACzvB,EAAI,GAAKkpE,EAAK,GAAIlpE,EAAI,GAAKkpE,EAAK,IAK9C,GAJAz5C,EAAK,IAAMA,EAAK,GAAK64C,EAAK,GAAGz9G,QAAUy9G,EAAK,GAAGz9G,OAC/C4kE,EAAK,IAAMA,EAAK,GAAK64C,EAAKz9G,QAAUy9G,EAAKz9G,OACzCw9E,EAAO5Y,GAEH9jC,EAAMxgC,MAAQqyB,EAAAA,EAAAA,MAAW,CAG3B,GAFiB8qF,EAAKtoE,EAAI,IAAIA,EAAI,MACjB0oE,EAAQE,GAGvB,YADApnG,EAAMyjG,YAGR4D,EAAsBD,EAAqB,GACvCF,EAAQ79G,SAAW+9G,EAAqB,GAAGpnG,EAAMgkG,WACvD,CACF,EA8DoCP,UAAWzjG,EAAMyjG,aAIvD,CAUA,SAASuD,IACP,MAAO,mBAAmBr4G,KAAKC,MAAsB,GAAhBD,KAAK4Q,UAC5C,gCCnJO,SAAS0jG,EAAY0E,EAA8BzhG,EAAW0hG,GAEnE,SAASC,EAAMp/G,EAAsBC,EAAsBkuC,GAEzD,SAASkxE,EAAK9sG,EAAW+iE,EAAWnnC,GAClC,OAAQ,EAAIA,GAAK57B,EAAI47B,EAAImnC,CAC3B,CACA,IAAK,MAAMp0E,KAAO0E,OAAOmY,KAAK/d,GAC5Bm/G,EAAIj+G,GAAOm+G,EAAKr/G,EAAEkB,GAAMjB,EAAEiB,GAAMitC,GAElC,OAAOnuC,CACT,CACA,OAAIyd,EAAI,EAAU2hG,EAAMF,EAAS/E,QAAS+E,EAAS/E,QAAS,GACxD18F,GAAK,GAAKA,EAAI,EAAU2hG,EAAMF,EAAS/E,QAAS+E,EAAS9E,OAAQ38F,GACjEA,GAAK,GAAKA,EAAI,EAAU2hG,EAAMF,EAAS9E,OAAQ8E,EAAS7E,KAAM58F,EAAI,GAClEA,GAAK,GAAKA,EAAI,EAAU2hG,EAAMF,EAAS7E,KAAM6E,EAAS5E,WAAY78F,EAAI,GACnE2hG,EAAMF,EAAS5E,WAAY4E,EAAS5E,WAAY,EACzD,qECLKgF,kNAAK,SAALA,GAAAA,EAAAA,EAAK,yBAALA,EAAAA,EAAK,uBAALA,EAAAA,EAAK,mBAALA,EAAAA,EAAK,gBAALA,IAAAA,EAAK,KAOV,MAAMC,EAAY,CAChBC,EAAAA,EACA9D,EAAAA,EACAnB,EAAAA,EACA0B,EAAAA,EACAwB,EAAAA,EACAW,EAAAA,EACAqB,EAAAA,EACAC,EAAAA,GAGK,SAASC,EAAKpoG,GACnB,MAAOlU,EAAOu8G,IAAYphH,EAAAA,EAAAA,UAAS,IAC5BqhH,EAAOC,IAAYthH,EAAAA,EAAAA,UAAS8gH,EAAMrB,YAClC8B,EAASC,IAAcxhH,EAAAA,EAAAA,UAAS,KAChCyhH,EAASC,IAAc1hH,EAAAA,EAAAA,UAAS,CACrC2hH,UAAW,EAAE,GAAI,GACjBn0G,GAAI9F,KAAKC,MAAMD,KAAK4Q,SAAWyoG,EAAU3+G,UAGrCw/G,GAAgBC,EAAAA,EAAAA,cAAY,KAUhCH,EAAW,CACTC,UAAW,CAACF,EAAQE,UAAU,GAAIF,EAAQj0G,IAC1CA,GAXiB,MACjB,IAAIA,EAAKi0G,EAAQE,UAAU,GAC3B,MAAMG,EAAM,CAACL,EAAQE,UAAU,GAAIF,EAAQE,UAAU,GAAIF,EAAQj0G,IACjE,KAAOs0G,EAAI7/G,SAASuL,IAClBA,EAAK9F,KAAKC,MAAMD,KAAK4Q,SAAWyoG,EAAU3+G,QAE5C,OAAOoL,CAAE,EAKLu0G,IACJ,GACD,CAACN,IAEJ,SAASO,EAAW33E,GAClBm3E,GAAYl8F,IACV,IAAI0hD,EAAO1hD,EAGX,OAFA0hD,GAAQ38B,EAAM,IAAM,IAChB28B,EAAK5kE,OAAS,KAAI4kE,EAAOA,EAAKz5C,MAAM,IACjCy5C,CAAI,GAEf,CAEA,MAAM+1C,GAAY8E,EAAAA,EAAAA,cAAY,KAC5BG,GAAW,GACPn9G,IAAUkU,EAAM+9F,SAClBwK,EAASR,EAAMmB,OAEfX,EAASR,EAAMrB,WACf2B,EAASv8G,EAAQ,IAEnB+8G,GAAe,GACd,CAAC/8G,EAAOkU,EAAM+9F,SAAU8K,IAErBpF,GAAYqF,EAAAA,EAAAA,cACfxE,IACCiE,EAASR,EAAMrB,WACfuC,GAAW,GAGX,MAAM7nF,EAASkjF,SAAAA,EAAS6E,UACpB9+G,EAAAA,GAAAA,GAAAA,QAC2B,EAA3B2V,EAAMopG,oBAA0B/+G,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,eAAgC,GAAQ,GAAM,GACrGxB,EAAAA,GAAAA,WAAkB+2B,GACpBhvB,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,MAGhBw2G,GAAe,GAEjB,CAAC7oG,EAAMopG,mBAAoBP,IAQ7B,IAAIQ,EACJ,OAAQf,GACN,KAAKP,EAAMrB,UACT2C,EAAiB,gBAAC,IAAS,CAACzC,SAAU,IAAM2B,EAASR,EAAMuB,YAC3D,MACF,KAAKvB,EAAMuB,SAAU,CACnB,MAAMC,EAAWvB,EAAUU,EAAQj0G,IACnC40G,EACE,gBAACE,EAAQ,CAACvF,UAAWA,EAAWP,UAAWA,EAAWr8F,WAAYpH,EAAMwpG,WAAa19G,EAAQ,KAE/F,KACF,CACA,KAAKi8G,EAAMmB,KACTG,EACE,gBAAC,IAAO,CACND,mBAAoBppG,EAAMopG,mBAC1BI,WAAYxpG,EAAMwpG,WAClBC,OAAQzpG,EAAMypG,OACd1L,SAAU/9F,EAAM+9F,WAMxB,SAAS2L,IACP,OACE,gBAAC,IAAU,CAACljH,QAAQ,MAClB,wBAAMiB,MAAO,CAAEhB,MAAO,SAAW+hH,EAAQh0F,MAAM,EAAGg0F,EAAQn/G,OAAS,IAClEm/G,EAAQA,EAAQn/G,OAAS,GAGhC,CAEA,OACE,gBAAC,IAAS,KACR,gBAAC,IAAK,CAACxD,GAAI,CAAE2H,EAAG,EAAGzH,GAAI,EAAGC,QAAS,OAAQi6F,aAAc,SAAU/+E,IAAK,IACrEonG,IAAUP,EAAMmB,MACf,gBAAC,IAAM,CAACrjH,GAAI,CAAEsB,MAAO,QAAUsR,QA1CvC,WACErG,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,KAEhB,GAuCwD,uBAIlD,gBAAC,IAAU,CAAC7L,QAAQ,MAAK,SAChBsF,EAAM,MAAIkU,EAAM+9F,UAEzB,gBAAC2L,EAAQ,OAGVL,EAGP,2GCnJO,SAASM,EAAU,GAKa,IALb,OACxBpG,EAAM,SACNC,EAAQ,QACRoG,EAAO,4BACPC,GACe,EACf,MAAOvzE,EAAGwzE,IAAQ7iH,EAAAA,EAAAA,UAAS,KACrB8iH,IACFF,GAA+Bx/G,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,eAAgC,GAAQ,IAAM,GAAK03G,EAmB7G,OAhBAzqG,EAAAA,EAAAA,YAAU,KACR,MAAMkxG,EAAa73G,aAAY,KAC7B23G,GAAMv9F,IACAA,GAAO,GAAGi3F,IACPj3F,EALA,IAKcw9F,EAAe,MACpC,GANO,KASX,MAAO,KACLvlG,cAAcwlG,EAAW,CAC1B,GACA,CAACxG,EAAUuG,IAKPH,EACL,gBAAC,IAAW,CAACpjH,QAAQ,cAAcsQ,MAAOw/B,EAAG7vC,MAAM,YAEnD,gBAAC,IAAK,CAACZ,GAAI,CAAE2H,EAAG,EAAGzH,GAAI,IACrB,gBAAC,IAAW,CAACS,QAAQ,cAAcsQ,MAAOw/B,EAAG7vC,MAAM,YAGzD,uHCpCO,SAASwjH,EAAiBjqG,GAC/B,MAAO8b,EAAOouF,IAAYjjH,EAAAA,EAAAA,WAAS,GAEnC,QAAwC4T,IAApCmF,EAAMzT,SAASm2G,iBAAgC,MAAM,IAAIj3F,MAAM,kDACnE,MAAMy2F,EAAwBliG,EAAMzT,SAASm2G,iBAAiBR,sBACxD96F,GAAa66F,EAAAA,EAAAA,GAAoBC,GACjCvoE,GAASwoE,EAAAA,EAAAA,GAAgBD,GAM/B,OACE,uBAAKz6G,MAAO,CAAEzB,QAAS,OAAQsa,WAAY,SAAUlZ,OAAQ,uBAC1D00B,EACC,gBAAC,IAAI,CACHstF,mBAAoBlH,EACpBsH,WAAYpiG,EACZqiG,OAAQ9vE,EACRokE,SAAU/9F,EAAMzT,SAASm2G,iBAAiByH,oBAG5C,gBAAC,IAAK,CACJC,SAAUpqG,EAAMzT,SAChBi9G,WAAYpiG,EACZ22F,SAAU/9F,EAAMzT,SAASm2G,iBAAiByH,kBAC1CruF,MAAO,IAAMouF,GAAS,GACtBG,OAnBR,WACEj4G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,KAChB,IAsBF,kKC5BA,SAASi4G,EAAU7jH,EAAe4C,GAChC,IAAIi9G,EAAQ,GAOZ,OANIj9G,GAAU,EAAGA,EAAS,EACjBA,EAAS,GAAIA,EAAS,IAE7BA,IACAi9G,EAAQ,KAGR,wBAAM7+G,MAAO,CAAEhB,MAAOA,IACnB,IAAI8jH,OAAOlhH,GACXi9G,EACA,IAAIiE,OAAO,GAAKjE,EAAMj9G,OAASA,GAGtC,CAqBO,SAASmhH,EAAMxqG,GACpB,OACE,gBAAC,IAAS,CAACna,GAAI,CAAEya,WAAY,WAC3B,gBAAC,IAAK,CAACza,GAAI,CAAE2H,EAAG,EAAGzH,GAAI,EAAGC,QAAS,OAAQi6F,aAAc,WACvD,gBAAC,IAAU,CAACz5F,QAAQ,MAAK,gBACV,yBAAIwZ,EAAMoqG,SAASx+G,OAElC,gBAAC,IAAU,CAACpF,QAAQ,MAClB,yBAAG,mBACFwZ,EAAM+9F,UAET,gBAAC,IAAU,CACTv3G,QAAQ,KACRX,GAAI,CACFY,MACEuZ,EAAMwpG,WAAa,EACf/jH,EAAAA,EAAAA,MAAAA,MACAua,EAAMwpG,WAAa,EACnB/jH,EAAAA,EAAAA,MAAAA,QACAA,EAAAA,EAAAA,MAAAA,QACNO,QAAS,OACTsa,WAAY,WAGd,yBAAG,iBACFR,EAAAA,EAAAA,IAAwC,QAAnBE,EAAMwpG,YAAsB,SACjDxpG,EAAMwpG,WAAa,KAClB,gBAAC,IAAO,CACNjpG,MACE,gBAAC,IAAU,CAAC9Z,MAAM,SAAQ,yIAM5B,gBAAC,IAAM,CAACZ,GAAI,CAAE2a,GAAI,OAKxB,gBAAC,IAAU,CAAC3a,GAAI,CAAEwT,WAAY,MAAOC,WAAY,QAAS,IA1D7C,KADC8N,EA2D2DpH,EAAMwpG,YAxDjF,wBAAM/hH,MAAO,CAAEhB,MAAO,UACnB,IACA,IAAI8jH,OAAO,KAKd,gCACGD,EAAU7kH,EAAAA,EAAAA,MAAAA,QAAqC,GAAb2hB,GAClCkjG,EAAU7kH,EAAAA,EAAAA,MAAAA,QAA2C,IAAlB2hB,EAAa,IAChDkjG,EAAU7kH,EAAAA,EAAAA,MAAAA,MAAyC,IAAlB2hB,EAAa,KA8C4C,KAC3F,gBAAC,IAAU,CACTvhB,GAAI,CAAEwT,WAAY,MAAOC,WAAY,QACpC,2CACH,gBAAC,IAAU,CACTzT,GAAI,CAAEwT,WAAY,MAAOC,WAAY,QACpC,qDAGL,gBAAC,IAAK,CAACzT,GAAI,CAAE2H,EAAG,EAAGxH,QAAS,OAAQi6F,aAAc,WAChD,gBAAC,IAAU,CAACp6F,GAAI,CAAEsB,MAAO,MAAOwtC,UAAW,WACzC,yBAAG,gBAAgB,iMAEnB,2BACA,2BACA,yBAAG,cAEL,0BACE,gBAAC,IAAU,KACT,0BAAI,gDAEF,2BAAM,sDAGR,0BAAI,sCACJ,0BACE,yBAAG,YAAY,0CAEjB,0BAAI,OACE,yBAAG,cAAc,QAAK,yBAAG,QAAQ,iCAEvC,0BAAI,iDAIR,gBAAC,IAAG,CAAC9uC,GAAI,CAAEG,QAAS,OAAQ8a,oBAAqB,UAAW3Z,MAAO,SACjE,gBAAC,IAAM,CAACsR,QAASuH,EAAM8b,OAAO,SAC9B,gBAAC,IAAM,CAACrjB,QAASuH,EAAMqqG,QAAQ,aAhGzC,IAAsBjjG,CAqGtB,gEC9HO,SAASqjG,EAAWzqG,GAYzB,OAXAlH,EAAAA,EAAAA,YAAU,KACR,SAAS4xG,EAAsBvgF,GACxBA,EAAMjxB,WACD8G,EAAM2sB,UAAUorD,KAAK19E,KAC/B9L,CAAE47B,EACJ,CAEA,OADAz1B,SAASsE,iBAAiB,UAAW0xG,GAC9B,IAAMh2G,SAASyyE,oBAAoB,UAAWujC,EAAM,IAItD,gCACT,oOCEA,MAAM/H,EAKF,CACFC,QAAS,CAAE/d,MAAO,KAAO19F,MAAO,EAAGC,OAAQ,EAAGujH,MAAO,GACrD9H,OAAQ,CAAEhe,MAAO,KAAO19F,MAAO,EAAGC,OAAQ,EAAGujH,MAAO,GACpD7H,KAAM,CAAEje,MAAO,KAAO19F,MAAO,EAAGC,OAAQ,EAAGujH,MAAO,IAClD5H,WAAY,CAAEle,MAAO,KAAO19F,MAAO,EAAGC,OAAQ,EAAGujH,MAAO,KAGnD,SAASzC,EAAgBloG,GAC9B,MAAMoH,EAAyB,CAAEy9E,MAAO,EAAG19F,MAAO,EAAGC,OAAQ,EAAGujH,MAAO,IACvE1H,EAAAA,EAAAA,GAAYN,EAAc3iG,EAAMoH,WAAYA,GAC5C,MAAMy9E,EAAQz9E,EAAWy9E,OAClB+lB,IAAa3jH,EAAAA,EAAAA,UAwItB,SAA2BmgB,GACzB,MAAMyjG,EAAQC,EAAmB1jG,GACjC,IAAK,IAAIlc,EAAI,EAAGA,EAAIkc,EAAWujG,MAAOz/G,IAAK,CACzC,MAAM8P,EAAIrM,KAAKC,MAAMD,KAAK4Q,SAAWsrG,EAAMxhH,QACrC00E,EAAIpvE,KAAKC,MAAMD,KAAK4Q,SAAWsrG,EAAM,GAAGxhH,QAC1CwhH,EAAM7vG,GAAG+iE,GACX7yE,IAGF2/G,EAAM7vG,GAAG+iE,IAAK,CAChB,CACA,OAAO8sC,CACT,CApJ+BE,CAAkB3jG,KACxC87F,EAAQ8H,IAAa/jH,EAAAA,EAAAA,UAAS6jH,EAAmB1jG,KACjDo3B,EAAKqoC,IAAU5/E,EAAAA,EAAAA,UAAS,CAAC,EAAG,KAC5BgkH,EAAaC,IAAkBjkH,EAAAA,EAAAA,WAAS,GACzCq8G,EAAaj5G,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,eAAgC,IAsC1EiN,EAAAA,EAAAA,YAAU,KACR,MAAMrE,EAAKmhC,YAAW,IAAMs1E,GAAe,IAAQ,KACnD,MAAO,IAAM1mG,cAAc/P,EAAG,GAC7B,IAEH,MAAM6yG,EAAyE,GAmB/E,OAjBAsD,EAAUxiH,KAAI,CAACizB,EAAM0iD,IACnB1iD,EAAKjzB,KAAI,CAAC42E,EAAMhkE,KACViwG,EACF3D,EAASlvG,KAAK,CAAE+yG,QAASC,QAAQR,EAAU7sC,GAAG/iE,MAErCA,IAAMwjC,EAAI,IAAMu/B,IAAMv/B,EAAI,GACnC8oE,EAASlvG,KAAK,CAAEkK,SAAS,IAChB4gG,EAAOnlC,GAAG/iE,GACnBssG,EAASlvG,KAAK,CAAEizG,QAAQ,IACf/H,GAAcsH,EAAU7sC,GAAG/iE,GACpCssG,EAASlvG,KAAK,CAAE+yG,SAAS,IAEzB7D,EAASlvG,KAAK,CAAC,EACjB,MAKF,gCACE,gBAAC,IAAS,CAACmrG,OAAQ1e,EAAO2e,SAAUxjG,EAAMyjG,YAC1C,gBAAC,IAAK,CAAC59G,GAAI,CAAEG,QAAS,OAAQi6F,aAAc,SAAUyjB,GAAI,IACxD,gBAAC,IAAU,CAACl9G,QAAQ,MAAMykH,EAAc,0BAA4B,uBACpE,gBAAC,IAAG,CACFplH,GAAI,CACFG,QAAS,OACT8a,oBAAsB,UAASnS,KAAKguB,MAAMvV,EAAWjgB,eACrD67F,iBAAmB,UAASr0F,KAAKguB,MAAMvV,EAAWhgB,gBAClD8Z,IAAK,IAGNomG,EAASl/G,KAAKsB,IACb,IAAIjD,EACA6kH,EAgBJ,OAdI5hH,EAAK2hH,QACP5kH,EAAQhB,EAAAA,EAAAA,MAAAA,QACR6lH,EAAO,gBAAC,IAAI,OACH5hH,EAAK4Y,SACd7b,EAAQhB,EAAAA,EAAAA,MAAAA,UACR6lH,EAAO,gBAAC,IAAK,OACJ5hH,EAAKyhH,SACd1kH,EAAQhB,EAAAA,EAAAA,MAAAA,MACR6lH,EAAO,gBAAC,IAAM,QAEd7kH,EAAQhB,EAAAA,EAAAA,MAAAA,QACR6lH,EAAO,kCAIP,gBAAC,IAAU,CACT3hH,IAAM,GAAED,KAAOokB,EAAAA,EAAAA,cACfjoB,GAAI,CACFY,MAAOA,EACPX,OAAS,aAAY4D,EAAK4Y,QAAU7c,EAAAA,EAAAA,MAAAA,UAA2BA,EAAAA,EAAAA,MAAAA,UAC/D2B,OAAQ,OACRD,MAAO,OACPnB,QAAS,OACTsa,WAAY,SACZha,eAAgB,WAGjBglH,EACU,KAInB,gBAAC,IAAU,CAAC3+E,UA9GlB,SAA+BxC,GAE7B,GADAA,EAAMyC,iBACFq+E,EAAa,OACjB,MAAMvD,EAAO,CAAC,EAAG,GAEjB,QADclB,EAAAA,EAAAA,IAASr8E,IAErB,KAAK67E,EAAAA,GACH0B,EAAK,KACL,MACF,KAAKtB,EAAAA,GACHsB,EAAK,KACL,MACF,KAAKzB,EAAAA,GACHyB,EAAK,KACL,MACF,KAAKrB,EAAAA,GACHqB,EAAK,KAGT,MAAMz5C,EAAO,CAACzvB,EAAI,GAAKkpE,EAAK,GAAIlpE,EAAI,GAAKkpE,EAAK,IAK9C,GAJAz5C,EAAK,IAAMA,EAAK,GAAK28C,EAAU,GAAGvhH,QAAUuhH,EAAU,GAAGvhH,OACzD4kE,EAAK,IAAMA,EAAK,GAAK28C,EAAUvhH,QAAUuhH,EAAUvhH,OACnDw9E,EAAO5Y,GAEH9jC,EAAMxgC,KAAOqyB,EAAAA,EAAAA,MAAW,CAC1B,IAAK4uF,EAAUpsE,EAAI,IAAIA,EAAI,IAEzB,YADAx+B,EAAMyjG,YAGRuH,GAAWz+F,IACTA,EAAIiyB,EAAI,IAAIA,EAAI,KAAM,EAsF9B,SAAqB/1C,EAAgBC,GACnC,SAASsoB,EAAM65F,GACb,OAAOA,EAAMU,OAAO76G,QAAO,CAACjI,EAAGC,IAAMD,GAAKC,EAAI,EAAI,IAAI,EACxD,CACA,OAAOsoB,EAAMvoB,KAAOuoB,EAAMtoB,EAC5B,CA1FY8iH,CAAYZ,EAAWr+F,IAAMvM,EAAMgkG,YAChCz3F,IAEX,CACF,EA2EoCk3F,UAAWzjG,EAAMyjG,aAIvD,CASA,SAASqH,EAAmB1jG,GAC1B,MAAMyjG,EAAQ,GACd,IAAK,IAAI3/G,EAAI,EAAGA,EAAIkc,EAAWhgB,OAAQ8D,IACrC2/G,EAAMzyG,KAAK,IAAI63C,MAAMthD,KAAKguB,MAAMvV,EAAWjgB,QAAQshC,MAAK,IAE1D,OAAOoiF,CACT,mKC7JA,MAAMlI,EAKF,CACFC,QAAS,CAAE7pG,OAAQ,KACnB8pG,OAAQ,CAAE9pG,OAAQ,KAClB+pG,KAAM,CAAE/pG,OAAQ,KAChBgqG,WAAY,CAAEhqG,OAAQ,MAGjB,SAASkvG,EAAU,GAA0E,IAA1E,WAAE7gG,EAAU,UAAE48F,EAAS,UAAEP,GAA2B,EAC5E,MAAOgI,EAAOC,IAAYzkH,EAAAA,EAAAA,UAAS,IAC5Bq8G,EAAYqI,IAAiB1kH,EAAAA,EAAAA,WAAS,IACtC2kH,EAAcC,IAAmB5kH,EAAAA,EAAAA,UAAS,GAqCjD,OAnCA6R,EAAAA,EAAAA,YAAU,KAER,MAAMgzG,EAA4B,CAAE/yG,OAAQ,IAC5CkqG,EAAAA,EAAAA,GAAYN,EAAcv7F,EAAY0kG,GACtC,MAAMC,EAAgBD,EAAc/yG,OAE9BizG,EAA+B,KAAhBr9G,KAAK4Q,SAAkB,MADtB,IAC8CwsG,GAGpEL,EAAS,GACTG,EAAgBG,GAChBL,EAActhH,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,aAA8B,IAGnE,IAAI4I,EAAKmhC,YAAW,KAClB81E,EAAS,GACTj3G,EAAKmhC,YAAW,KACd81E,EAAS,GACTj3G,EAAKmhC,YAAW,IAAM6tE,KAbJ,IAa+B,GAChDsI,EAAc,GAChBC,GAEH,MAAO,IAAMC,aAAax3G,EAAG,GAC5B,CAAC2S,EAAY48F,EAAWP,IAazB,gCACE,gBAAC,IAAS,CAACF,OAAQ,IAAMC,SAAUC,IACnC,gBAAC,IAAK,CAAC59G,GAAI,CAAEG,QAAS,OAAQi6F,aAAc,WAC1C,gBAAC,IAAU,CAACz5F,QAAQ,MAAK,kCACxB88G,GACC,gBAAC,IAAG,CAACz9G,GAAI,CAAEuD,GAAI,IACb,gBAAC,IAAU,CAAC5C,QAAQ,MAAK,yBACzB,gBAAC,IAAS,CAAC+8G,OAAQqI,EAAcpI,SAAU,IAAM,KAAMqG,6BAA2B,EAACD,SAAO,KAInF,IAAV6B,GAAe,gBAAC,IAAU,CAACjlH,QAAQ,MAAK,gBAC9B,IAAVilH,GAAe,gBAAC,IAAU,CAACjlH,QAAQ,MAAK,cAC9B,IAAVilH,GAAe,gBAAC,IAAU,CAACjlH,QAAQ,MAAK,cACzC,gBAAC,IAAU,CAACmmC,UAzBlB,SAA+BxC,GAC7BA,EAAMyC,iBACFzC,EAAMxgC,MAAQqyB,EAAAA,EAAAA,QACJ,IAAVyvF,EACFhI,IAEAO,IAEJ,EAiBoCP,UAAWA,KAIjD,2PC3DO,SAASyI,EAAQlsG,GACtB,MAAOpB,EAAaivE,IAAkB5mF,EAAAA,EAAAA,UAAS,QAE/C,SAASklH,KA4BPlwB,EAAAA,EAAAA,IAAgB3tF,EAAAA,EAAS5D,EAAAA,YAAAA,mBACrB0hH,IACFC,EAAI79G,kBAAoB89G,GA5B1Bl6G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,KAChB,CAEA,MAAMg6G,EAAM/9G,EAAAA,EAAS5D,EAAAA,YAAAA,kBACf6sE,GAAUgrC,EAAAA,EAAAA,IAAmCviG,EAAMypG,OAAQzpG,EAAM+9F,SAAU/9F,EAAMopG,oBACjFtoF,GAAYuhF,EAAAA,EAAAA,IAAmCriG,EAAMypG,OAAQzpG,EAAM+9F,SAAU/9F,EAAMopG,oBACnFkD,GAAsB9J,EAAAA,EAAAA,IAA+B6J,EAAKrsG,EAAMopG,oBAEhEgD,EAAyB/hH,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,kBAwBxD,OACE,gBAAC,IAAK,CAAC7E,GAAI,CAAE2H,EAAG,EAAGmnC,UAAW,SAAU3uC,QAAS,OAAQsa,WAAY,SAAUra,cAAe,WAC5F,gBAAC,IAAU,CAACO,QAAQ,MAAK,4BACzB,gBAAC,IAAU,CAACA,QAAQ,KAAKC,MAAM,UAAUU,MAAM,OAAM,MAC/C,IACHilH,EACC,gCAAE,gBACatsG,EAAAA,EAAAA,IAAqBwsG,EAAqB,GAAG,YAAU5hH,EAAAA,YAAAA,iBAA6B,OAAK,KAGxG,iCACA,6EAGJ,gBAAC,IAAG,CAAC7E,GAAI,CAAEsB,MAAO,gBAChB,gBAAC,IAAG,CAACtB,GAAI,CAAEsB,MAAO,SAChB,gBAAC,IAAM,CAAC2P,MAAO8H,EAAasrB,SA3BpC,SAAwBC,GACtB0jD,EAAe1jD,EAAMK,OAAO1zB,MAC9B,EAyB8DjR,GAAI,CAAEge,GAAI,IAC9D,gBAAC,IAAQ,CAACla,IAAK,OAAQmN,MAAO,QAC3B,QAEFzM,EAAAA,GAAAA,SAAAA,QACUkE,GAAMD,EAAAA,EAASC,GAAGusC,UAAUo7B,eACpC9tE,KAAKmG,GACJ,gBAAC,IAAQ,CAAC5E,IAAK4E,EAAGuI,MAAOvI,GACtBA,MAIT,gBAAC,IAAM,CAACkK,QA7ChB,YACO4jB,EAAAA,EAAAA,GAAc,eAAe0G,SAASnkB,KAC3CtQ,EAAAA,EAASsQ,GAAapQ,kBAAoB+oE,EAC1C40C,IACF,GAyCgC,aAEtB,gBAAC,IAAU,CAACpuF,WAAYw5C,IAAW,gBAIvC,gBAAC,IAAM,CAAC9+D,QAxDd,WACEpO,EAAAA,GAAAA,UAAiBy2B,EAAW,gBAC5BqrF,GACF,EAqD6BtmH,GAAI,CAAEsB,MAAO,SAAU,YAE5C,gBAAC,IAAK,CAACqe,MAAOsb,MAGlB,gBAAC,IAAM,CAACroB,QAAS0zG,EAAkBtmH,GAAI,CAAEsB,MAAO,OAAQyC,GAAI,IAAK,QAKvE,kMCtFA,MAAM+4G,EAKF,CACFC,QAAS,CAAE/d,MAAO,IAAM0nB,SAAU,EAAGC,SAAU,EAAGC,MAAO,GACzD5J,OAAQ,CAAEhe,MAAO,IAAM0nB,SAAU,EAAGC,SAAU,EAAGC,MAAO,GACxD3J,KAAM,CAAEje,MAAO,IAAM0nB,SAAU,EAAGC,SAAU,EAAGC,MAAO,GACtD1J,WAAY,CAAEle,MAAO,IAAM0nB,SAAU,EAAGC,SAAU,EAAGC,MAAO,IAGxDtoF,EAAQ,CAACnI,EAAAA,EAAAA,KAAUA,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,cAAmBA,EAAAA,EAAAA,OAAY,IAAKA,EAAAA,EAAAA,MAEhE0P,EAAS,CAAC,MAAO,UAAW,OAAQ,SAEpCghF,EAAqC,CACzC93E,IAAK,MACL,UAAW,SACX+3E,KAAM,OACNC,MAAO,SAaF,SAASzE,EAAgB,GAA0E,IAA1E,UAAEnE,EAAS,UAAEP,EAAS,WAAEr8F,GAA4B,EAClF,MAAOylG,EAAWC,IAAgB7lH,EAAAA,EAAAA,UAAqB,KAChD8lH,EAAOC,IAAY/lH,EAAAA,EAAAA,UAAiB,KACpC49F,EAAOooB,IAAYhmH,EAAAA,EAAAA,UAAS,IAC5BimH,EAAUC,IAAelmH,EAAAA,EAAAA,UAAoB,KAC7CmmH,EAAYC,IAAiBpmH,EAAAA,EAAAA,UAAS,IAAIorC,MAC1CixE,EAAYqI,IAAiB1kH,EAAAA,EAAAA,WAAS,GAwD7C,OAtDA6R,EAAAA,EAAAA,YAAU,KAER,MAAMw0G,EAA6B,CACjCzoB,MAAO,EACP0nB,SAAU,EACVC,SAAU,EACVC,MAAO,IAETxJ,EAAAA,EAAAA,GAAYN,EAAcv7F,EAAYkmG,GAGtC,MAAMC,EAiIV,SAAuBnmG,GACrB,MAAM2lG,EAAQ,GACRS,GAAWjuG,EAAAA,EAAAA,IAAO6H,EAAWmlG,SAAUnlG,EAAWolG,UACxD,IAAK,IAAIthH,EAAI,EAAGA,EAAIsiH,EAAUtiH,IAAK,CACjC,MAAMuiH,EAAa,CAAC/hF,EAAO/8B,KAAKC,MAAMD,KAAK4Q,SAAWmsB,EAAOriC,UACzDsF,KAAK4Q,SAAW,KAClBkuG,EAAWr1G,KAAKszB,EAAO/8B,KAAKC,MAAMD,KAAK4Q,SAAWmsB,EAAOriC,UAE3D0jH,EAAM30G,KAAK,CACTs1G,SAAUvpF,EAAMx1B,KAAKC,MAAMD,KAAK4Q,SAAW4kB,EAAM96B,SACjDqiC,OAAQ+hF,GAEZ,CACA,OAAOV,CACT,CA/IsBY,CAAcL,GAC1BM,EAsHV,SAA0Bb,EAAe3lG,GACvC,MAAMymG,EAAezmG,EAAWqlG,MAC1BqB,EAAqB,CAACC,EAAwBC,GAC9CnB,EAAY,GAClB,IAAK,IAAI3hH,EAAI,EAAGA,EAAI2iH,EAAc3iH,IAChC2hH,EAAUz0G,KAAK01G,EAAmB5iH,EAAI,GAAG6hH,IAE3C,OAAOF,CACT,CA9H0BoB,CAAiBV,EAAWD,GAC5CY,EAAiB,IAAI77E,IAC3Bk7E,EAAU7tG,SAAQ,CAACyuG,EAAMx1E,KACvB,IAAK,MAAMy1E,KAAYR,EACrB,GAAIQ,EAASC,UAAUF,EAAMx1E,GAE3B,YADAu1E,EAAe5vE,IAAI3F,EAGvB,IAIFs0E,EAASK,EAAezoB,OACxBmoB,EAASO,GACTJ,EAAYI,EAAUnlH,KAAKg0F,IAAO,KAClC0wB,EAAac,GACbP,EAAca,GACdvC,EAActhH,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,mBAAoC,GAAM,GAC9E,CAACub,IAyBF,gCACE,gBAAC,IAAS,CAACm8F,OAAQ1e,EAAO2e,SAAUC,IACpC,gBAAC,IAAK,CAAC59G,GAAI,CAAEG,QAAS,OAAQi6F,aAAc,SAAUyjB,GAAI,IACxD,gBAAC,IAAU,CAACl9G,QAAQ,KAAKX,GAAI,CAAEsB,MAAO,MAAOwtC,UAAW,WAAY,kEAGnEk4E,EAAUzkH,KAAI,CAACgmH,EAAUljH,IACxB,gBAAC,IAAU,CAACvB,IAAKuB,GAAIkjH,EAASp/F,cAEhC,gBAAC,IAAG,CACFnpB,GAAI,CACFG,QAAS,OACT8a,oBAAsB,UAASisG,EAAM1jH,eACrCujB,UAAW,EACXqzE,aAAc,WAGfhwC,MAAMC,KAAK,CAAE7mD,OAAQ0jH,EAAM1jH,SAAUjB,KAAI,CAAC83E,EAAGh1E,KAC5C,MAAMojH,EAAgBpB,EAAShiH,IAAMkiH,EAAWj2G,IAAIjM,GAC9CzE,EAAQ68G,IAAegL,EAAgB7oH,EAAAA,EAAAA,MAAAA,SAA0BA,EAAAA,EAAAA,MAAAA,QACvE,OACE,gBAAC,IAAU,CAACkE,IAAKuB,EAAGzD,MAAO,CAAEhB,MAAOA,IACjCyE,EAAI,EACM,IAGhB,IAAI+kD,MAAM,GAAGxnB,KAAK,GAAGrgC,KAAI,CAAC83E,EAAGh1E,IAC5B,gBAAC,WAAc,CAACvB,IAAKuB,GAClB6hH,EAAM3kH,KAAI,CAAC+lH,EAAM55E,KAChB,IAAW,IAANrpC,GAAiB,IAANA,IAAYgiH,EAAS34E,GACnC,OAAO,gBAAC,IAAU,CAAC5qC,IAAK4qC,IAE1B,MAAM+5E,EAAgBpB,EAAS34E,IAAM64E,EAAWj2G,IAAIo9B,GAC9Cg6E,EACJjL,IAAegL,EAAgB7oH,EAAAA,EAAAA,MAAAA,SAA0B0oH,EAAKziF,OAAOxgC,EAAIijH,EAAKziF,OAAOriC,QACvF,OACE,gBAAC,IAAU,CAACM,IAAK4qC,EAAG9sC,MAAO,CAAEhB,MAAO8nH,IAAa,IAC7CJ,EAAKT,SAAS,IACL,QAMvB,gBAAC,IAAU,CAAC/gF,UAnElB,SAA+BxC,GAC7BA,EAAMyC,iBACN,MAAM4hF,EAAU34E,SAAS1L,EAAMxgC,KAC/B,KAAKstD,EAAAA,EAAAA,GAAkBu3D,IAAYA,EAAUzB,EAAM1jH,OAAQ,OAE3D,MAAMolH,EAAYD,EAAU,EAC5B,GAAItB,EAASuB,GAAY,OAGzB,IAAKrB,EAAWj2G,IAAIs3G,GAAY,OAAOhL,IAGvC,MAAMiL,EAAgB,IAAIr8E,IAAI+6E,GAE9B,GADAsB,EAAc33G,OAAO03G,GACM,IAAvBC,EAActoH,KAAY,OAAO49G,IAGrC,MAAM2K,EAAczB,EAAS9kH,KAAI,CAACmkB,EAAKrhB,IAAOA,IAAMujH,GAAmBliG,IACvE8gG,EAAcqB,GACdvB,EAAYwB,EACd,EA+CoClL,UAAWA,KAIjD,CAEA,SAASsK,EAAuBhB,GAC9B,MAAMp0E,EAAQhqC,KAAKC,MAAMD,KAAK4Q,SAAWwtG,EAAM1jH,QAC/C,MAAO,CACL2lB,SAAU,IACA,oBAAmB2pB,EAAQ,KAErC01E,UAAW,CAACF,EAAYjjH,IACfytC,IAAUztC,EAGvB,CAEA,SAAS8iH,EAAoBjB,GAC3B,MACM6B,EAAW7B,EADHp+G,KAAKC,MAAMD,KAAK4Q,SAAWwtG,EAAM1jH,SACjBqiC,OAAO,GACrC,MAAO,CACL1c,SAAU,IACA,yBAAwB09F,EAAWkC,MAE7CP,UAAYF,GACHA,EAAKziF,OAAOxiC,SAAS0lH,GAGlC,uHC7LO,SAASrvG,EAAOiM,EAAakE,GAClC,OAAO/gB,KAAK4Q,UAAYmQ,EAAMlE,GAAOA,CACvC,CAEO,MAAMw6F,EAAgB,IAChBC,EAAkB,IAClBG,EAAkB,IAClBC,EAAmB,IAEzB,SAASG,EAASr8E,GACvB,OAAQA,EAAMxgC,KACZ,KAAKqyB,EAAAA,EAAAA,SACL,KAAKA,EAAAA,EAAAA,EACH,OAAOgqF,EACT,KAAKhqF,EAAAA,EAAAA,WACL,KAAKA,EAAAA,EAAAA,EACH,OAAOoqF,EACT,KAAKpqF,EAAAA,EAAAA,WACL,KAAKA,EAAAA,EAAAA,EACH,OAAOiqF,EACT,KAAKjqF,EAAAA,EAAAA,YACL,KAAKA,EAAAA,EAAAA,EACH,OAAOqqF,EAEX,MAAO,EACT,CAEO,SAASI,EAAgBt8E,GAC9B,OAAQA,EAAMxgC,KACZ,KAAKqyB,EAAAA,EAAAA,WACL,KAAKA,EAAAA,EAAAA,EACH,OAAOgqF,EACT,KAAKhqF,EAAAA,EAAAA,YACL,KAAKA,EAAAA,EAAAA,EACH,OAAOoqF,EACT,KAAKpqF,EAAAA,EAAAA,SACL,KAAKA,EAAAA,EAAAA,EACH,OAAOiqF,EACT,KAAKjqF,EAAAA,EAAAA,WACL,KAAKA,EAAAA,EAAAA,EACH,OAAOqqF,EAEX,MAAO,EACT,mGCxCKnO,oCAAc,SAAdA,GAAAA,EAAAA,EAAc,iBAAdA,EAAAA,EAAc,yCAAdA,EAAAA,EAAc,iCAAdA,EAAAA,EAAc,yDAAdA,EAAAA,EAAc,iCAAdA,EAAAA,EAAc,+BAAdA,EAAAA,EAAc,2BAAdA,EAAAA,EAAc,+BAAdA,EAAAA,EAAc,+CAAdA,EAAAA,EAAc,+CAAdA,EAAAA,EAAc,sCAAdA,EAAAA,EAAc,sCAAdA,EAAAA,EAAc,gCAAdA,EAAAA,EAAc,4CAAdA,EAAAA,EAAc,wDAAdA,EAAAA,EAAc,oCAAdA,EAAAA,EAAc,gDAAdA,EAAAA,EAAc,4CAAdA,EAAAA,EAAc,gCAAdA,EAAAA,EAAc,0CAAdA,EAAAA,EAAc,kEAAdA,EAAAA,EAAc,0CAAdA,EAAAA,EAAc,sDAAdA,EAAAA,EAAc,4CAAdA,EAAAA,EAAc,gDAAdA,EAAAA,EAAc,wDAAdA,EAAAA,EAAc,0DAAdA,EAAAA,EAAc,wCAAdA,EAAAA,EAAc,kDAAdA,EAAAA,EAAc,eAAdA,IAAAA,EAAc,KAiCnB,MAAMD,EAAY,CAChB4W,SAAU3W,EAAe4W,MACzBC,WAAW,EAGXC,WAAY,CACV,CAAC9W,EAAe4W,QAAQ,EACxB,CAAC5W,EAAe+W,oBAAoB,EACpC,CAAC/W,EAAegX,gBAAgB,EAChC,CAAChX,EAAeiX,4BAA4B,EAC5C,CAACjX,EAAekX,gBAAgB,EAChC,CAAClX,EAAemX,eAAe,EAC/B,CAACnX,EAAeoX,aAAa,EAC7B,CAACpX,EAAeqX,eAAe,EAC/B,CAACrX,EAAesX,uBAAuB,EACvC,CAACtX,EAAeuX,uBAAuB,EACvC,CAACvX,EAAewX,kBAAkB,EAClC,CAACxX,EAAeyX,kBAAkB,EAClC,CAACzX,EAAe0X,eAAe,EAC/B,CAAC1X,EAAe2X,qBAAqB,EACrC,CAAC3X,EAAe4X,2BAA2B,EAC3C,CAAC5X,EAAe6X,iBAAiB,EACjC,CAAC7X,EAAe8X,uBAAuB,EACvC,CAAC9X,EAAe+X,qBAAqB,EACrC,CAAC/X,EAAegY,eAAe,EAC/B,CAAChY,EAAeiY,oBAAoB,EACpC,CAACjY,EAAekY,gCAAgC,EAChD,CAAClY,EAAemY,oBAAoB,EACpC,CAACnY,EAAeoY,0BAA0B,EAC1C,CAACpY,EAAeqY,qBAAqB,EACrC,CAACrY,EAAesY,uBAAuB,EACvC,CAACtY,EAAeuY,2BAA2B,EAC3C,CAACvY,EAAewY,4BAA4B,EAC5C,CAACxY,EAAeyY,mBAAmB,EACnC,CAACzY,EAAe0Y,wBAAwB,EACxC,CAAC1Y,EAAe2Y,MAAM,IAI1B,SAASC,IACP7Y,EAAU8W,WAAY,EACtB9W,EAAU4W,SAAW3W,EAAe4W,KACtC,CAGA,SAAS3W,IACPF,EAAU+W,WAAW/W,EAAU4W,WAAY,EACvC5W,EAAU4W,SAAW3W,EAAe2Y,MACtC5Y,EAAU4W,UAAY,GAEpB5W,EAAU4W,WAAa3W,EAAe2Y,KAAKE,IAC/CC,EAAAA,EAAAA,MACF,CAGA,SAASC,IACHhZ,EAAU4W,SAAW3W,EAAe4W,QACtC7W,EAAU4W,UAAY,GAExBmC,EAAAA,EAAAA,MACF,CAEA,SAASD,IACP9Y,EAAU8W,WAAY,EACtB9W,EAAU4W,SAAW3W,EAAe4W,MACpC,MAAMz2D,EAAWhuD,EAAAA,GAAAA,kBAAyBguD,SACpCF,EAAWC,EAAAA,eAAAA,wBACZC,EAASnvD,SAASivD,IAAWE,EAASjgD,KAAK+/C,GAChD64D,EAAAA,EAAAA,MACF,gCC3GO,IAAK54D,mBAsBX,SAtBWA,GAAAA,EAAc,wDAAdA,EAAc,oEAAdA,EAAc,8CAAdA,EAAc,sCAAdA,EAAc,6BAAdA,EAAc,yCAAdA,EAAc,2BAAdA,EAAc,+CAAdA,EAAc,wCAAdA,EAAc,oCAAdA,EAAc,oCAAdA,EAAc,uCAAdA,EAAc,4CAAdA,EAAc,2CAAdA,EAAc,yCAAdA,EAAc,+CAAdA,EAAc,4CAAdA,EAAc,sCAAdA,EAAc,4BAAdA,EAAc,2BAAdA,EAAc,kCAsBzB,CAtBWA,IAAAA,EAAc,kECYnB,MAAM84D,EAKX/2G,YAAY,GAAwD,IAAxD,MAAEoG,EAAK,SAAEnU,EAAQ,KAAEunE,GAAmC,EAChEt5D,KAAKkG,MAAQA,EACblG,KAAKjO,UAAW+kH,EAAAA,EAAAA,IAAW/kH,GAC3BiO,KAAKs5D,KAAOA,CACd,4ECjBK,SAASrb,EAAe5d,GAC7B,MAAM02E,EAASC,EAAAA,EAAY32E,GAC3B,GAAc,MAAV02E,EACF,OAEF,MAAMz0B,EAAO,MAAKy0B,EAAO7wG,oBAAoB6wG,EAAOz9C,QACpDh2D,EAAAA,EAAAA,GAAgBg/E,GAAK,EACvB,0ECRO,MAAM00B,EAAkD,CAC7D,CAACj5D,EAAAA,eAAAA,yBAAyC,IAAI84D,EAAAA,EAAW,CACvD3wG,MAAO,kCACPnU,SAAUgsD,EAAAA,eAAAA,wBACVub,KACE,02CAeJ,CAACvb,EAAAA,eAAAA,+BAA+C,IAAI84D,EAAAA,EAAW,CAC7D3wG,MAAO,8DACPnU,SAAUgsD,EAAAA,eAAAA,8BACVub,KACE,+hKAiDJ,CAACvb,EAAAA,eAAAA,oBAAoC,IAAI84D,EAAAA,EAAW,CAClD3wG,MAAO,+BACPnU,SAAUgsD,EAAAA,eAAAA,mBACVub,KAIG,uTAAoDjpE,EAAAA,YAAAA,4cAIyBA,EAAAA,YAAAA,4fAKvCA,EAAAA,YAAAA,iJACKA,EAAAA,YAAAA,6wBAO8CA,EAAAA,YAAAA,6EACzCA,EAAAA,YAAAA,iZAI8CA,EAAAA,YAAAA,ozBAQ5FA,EAAAA,YAAAA,4TAIP,CAAC0tD,EAAAA,eAAAA,gBAAgC,IAAI84D,EAAAA,EAAW,CAC9C3wG,MAAO,mBACPnU,SAAUgsD,EAAAA,eAAAA,eACVub,KACE,ogEAmBJ,CAACvb,EAAAA,eAAAA,YAA4B,IAAI84D,EAAAA,EAAW,CAC1C3wG,MAAO,kBACPnU,SAAUgsD,EAAAA,eAAAA,WACVub,KACE,ouCAcJ,CAACvb,EAAAA,eAAAA,kBAAkC,IAAI84D,EAAAA,EAAW,CAChD3wG,MAAO,0CACPnU,SAAUgsD,EAAAA,eAAAA,iBACVub,KACE,i7CAeJ,CAACvb,EAAAA,eAAAA,WAA2B,IAAI84D,EAAAA,EAAW,CACzC3wG,MAAO,aACPnU,SAAUgsD,EAAAA,eAAAA,UACVub,KACE,kvCAaJ,CAACvb,EAAAA,eAAAA,oBAAoC,IAAI84D,EAAAA,EAAW,CAClD3wG,MAAO,wBACPnU,SAAUgsD,EAAAA,eAAAA,mBACVub,KACG,4FAA2FjpE,EAAAA,YAAAA,kKAExEA,EAAAA,YAAAA,mqCAYmCA,EAAAA,YAAAA,UAAsBA,EAAAA,YAAAA,iBAA6BA,EAAAA,YAAAA,yWAM9G,CAAC0tD,EAAAA,eAAAA,iBAAiC,IAAI84D,EAAAA,EAAW,CAC/C3wG,MAAO,2CACPnU,SAAUgsD,EAAAA,eAAAA,gBACVub,KACE,mrBAUJ,CAACvb,EAAAA,eAAAA,eAA+B,IAAI84D,EAAAA,EAAW,CAC7C3wG,MAAQ,sCAAqCxR,EAAAA,SAAAA,WAC7C3C,SAAUgsD,EAAAA,eAAAA,cACVub,KAEG,oGAA0B5kE,EAAAA,SAAAA,0qBAQyCrE,EAAAA,YAAAA,uBAAmCA,EAAAA,YAAAA,gBAE3G,CAAC0tD,EAAAA,eAAAA,eAA+B,IAAI84D,EAAAA,EAAW,CAC7C3wG,MAAO,sBACPnU,SAAUgsD,EAAAA,eAAAA,cACVub,KACE,ypCAeJ,CAACvb,EAAAA,eAAAA,iBAAiC,IAAI84D,EAAAA,EAAW,CAC/C3wG,MAAO,mBACPnU,SAAUgsD,EAAAA,eAAAA,gBACVub,KAMG,wlBAAkEjpE,EAAAA,YAAAA,0aAKlCA,EAAAA,YAAAA,6IAC2CA,EAAAA,YAAAA,4IAEvDA,EAAAA,YAAAA,qDAEzB,CAAC0tD,EAAAA,eAAAA,mBAAmC,IAAI84D,EAAAA,EAAW,CACjD3wG,MAAO,6BACPnU,SAAUgsD,EAAAA,eAAAA,kBACVub,KACE,0nCAcJ,CAACvb,EAAAA,eAAAA,mBAAmC,IAAI84D,EAAAA,EAAW,CACjD3wG,MAAO,uCACPnU,SAAUgsD,EAAAA,eAAAA,kBACVub,KAMG,+jBAA+FjpE,EAAAA,YAAAA,ilBAQpG,CAAC0tD,EAAAA,eAAAA,kBAAkC,IAAI84D,EAAAA,EAAW,CAChD3wG,MAAO,oBACPnU,SAAUgsD,EAAAA,eAAAA,iBACVub,KACE,ytBAUJ,CAACvb,EAAAA,eAAAA,oBAAoC,IAAI84D,EAAAA,EAAW,CAClD3wG,MAAO,oCACPnU,SAAUgsD,EAAAA,eAAAA,mBACVub,KAEG,uGAA6BjpE,EAAAA,YAAAA,6NAEyBA,EAAAA,YAAAA,gBAA4BA,EAAAA,YAAAA,iZAQvF,CAAC0tD,EAAAA,eAAAA,mBAAmC,IAAI84D,EAAAA,EAAW,CACjD3wG,MAAO,0BACPnU,SAAUgsD,EAAAA,eAAAA,kBACVub,KACE,85CAqBJ,CAACvb,EAAAA,eAAAA,gBAAgC,IAAI84D,EAAAA,EAAW,CAC9C3wG,MAAO,mBACPnU,SAAUgsD,EAAAA,eAAAA,eACVub,KAGG,oGAAMjpE,EAAAA,YAAAA,WAAAA,qEACKA,EAAAA,YAAAA,0TAKEA,EAAAA,YAAAA,4ZAOlB,CAAC0tD,EAAAA,eAAAA,WAA2B,IAAI84D,EAAAA,EAAW,CACzC3wG,MAAO,cACPnU,SAAUgsD,EAAAA,eAAAA,UACVub,KACE,+mBAUJ,CAACvb,EAAAA,eAAAA,WAA2B,IAAI84D,EAAAA,EAAW,CACzC3wG,MAAO,iBACPnU,SAAUgsD,EAAAA,eAAAA,UACVub,KAKG,gbAAmCjpE,EAAAA,YAAAA,kDACFA,EAAAA,YAAAA,uHACOA,EAAAA,YAAAA,qHACcA,EAAAA,YAAAA,sUAInBA,EAAAA,YAAAA,yJACqCA,EAAAA,YAAAA,qIAG7E,CAAC0tD,EAAAA,eAAAA,cAA8B,IAAI84D,EAAAA,EAAW,CAC5C3wG,MAAO,iBACPnU,SAAUgsD,EAAAA,eAAAA,aACVub,KAAM,+ECzaH,MAAM29C,GAASxyG,WAAAA,IAAsB/P,EAAAA,UAAWnD,GAAS,IAAIqrB,EAAAA,EAAKrrB,oDCDlE,MAAMqrB,EAUX9c,YAAYvO,GAA+D,IAA/C2lH,EAA4B,UAAH,6CAAG,GAAIC,EAAW,UAAH,6CAAG,GACrEn3G,KAAKzO,KAAOA,EACZyO,KAAKk3G,UAAYA,EACjBl3G,KAAKm3G,SAAWA,CAClB,CAEAC,YAAY1hE,GACV11C,KAAKk3G,UAAUn5G,KAAK23C,EACtB,iCCpBK,IAAK2hE,EAmEA3iH,EASA4iH,sCAVZ,SAlEYD,GAAAA,EAAY,yBAAZA,EAAY,iDAAZA,EAAY,8CAAZA,EAAY,yCAAZA,EAAY,mBAAZA,EAAY,gDAAZA,EAAY,kDAAZA,EAAY,gDAAZA,EAAY,wCAAZA,EAAY,wCAAZA,EAAY,uCAAZA,EAAY,0CAAZA,EAAY,0CAAZA,EAAY,iCAAZA,EAAY,wDAAZA,EAAY,qDAAZA,EAAY,2DAAZA,EAAY,6CAAZA,EAAY,2CAAZA,EAAY,0CAAZA,EAAY,iDAAZA,EAAY,uCAAZA,EAAY,4BAAZA,EAAY,gCAAZA,EAAY,+BAAZA,EAAY,iDAAZA,EAAY,2BAAZA,EAAY,8BAAZA,EAAY,4BAAZA,EAAY,uCAAZA,EAAY,uCAAZA,EAAY,+CAAZA,EAAY,2CAAZA,EAAY,0BAAZA,EAAY,uDAAZA,EAAY,+BAAZA,EAAY,4BAAZA,EAAY,wBAAZA,EAAY,iCAAZA,EAAY,qCAAZA,EAAY,6CAAZA,EAAY,qBAAZA,EAAY,4BAAZA,EAAY,iCAAZA,EAAY,4BAAZA,EAAY,oDAAZA,EAAY,kBAAZA,EAAY,mDAAZA,EAAY,+CAAZA,EAAY,+CAAZA,EAAY,6DAAZA,EAAY,oBAAZA,EAAY,kBAAZA,EAAY,6BAAZA,EAAY,0CAAZA,EAAY,gBAkExB,CAlEYA,IAAAA,EAAY,KA0EvB,SAPW3iH,GAAAA,EAAQ,cAARA,EAAQ,sBAARA,EAAQ,qBAARA,EAAQ,qBAARA,EAAQ,gBAARA,EAAQ,oBAOnB,CAPWA,IAAAA,EAAQ,KAoBnB,SAXW4iH,GAAAA,EAAY,kBAAZA,EAAY,UAAZA,EAAY,oBAAZA,EAAY,cAAZA,EAAY,kBAAZA,EAAY,2BAAZA,EAAY,yBAAZA,EAAY,6BAAZA,EAAY,wBAAZA,EAAY,gBAWvB,CAXWA,IAAAA,EAAY,mEC1DjB,MAAMvH,EAKXj3F,KAAwB,KAGxBqoF,SAAW,EAGXjM,QAAU,EASV3jG,KAAqB8lH,EAAAA,aAAAA,KAMrBvtF,MAAwB,GAMxBytF,iBAAmB,EAMnBC,iBAAmB,EAEnB13G,YAAY3M,GACNA,EAAE2lB,OACJ9Y,KAAK8Y,KAAO3lB,EAAE2lB,MAEZ3lB,EAAEguG,WACJnhG,KAAKmhG,SAAWhuG,EAAEguG,UAEhBhuG,EAAE+hG,UACJl1F,KAAKk1F,QAAU/hG,EAAE+hG,SAEf/hG,EAAEk1G,mBACJroG,KAAKqoG,iBAAmBl1G,EAAEk1G,kBAExBl1G,EAAE5B,OACJyO,KAAKzO,KAAO4B,EAAE5B,MAEZ4B,EAAE22B,QACJ9pB,KAAK8pB,MAAQ32B,EAAE22B,OAEb32B,EAAEokH,mBACJv3G,KAAKu3G,iBAAmBpkH,EAAEokH,kBAExBpkH,EAAEqkH,mBACJx3G,KAAKw3G,iBAAmBrkH,EAAEqkH,iBAE9B,kGC3EK,MAAMC,EAAsC,CAAC,EAMpD,SAASC,EAAkBvkH,GACzB,IAAKA,EAAE5B,KACL,MAAM,IAAI6f,MAAO,mEASnB,OANIqmG,EAAUtkH,EAAE5B,OACdkS,QAAQgd,KAAM,sBAAqBttB,EAAE5B,gDAGvCkmH,EAAUtkH,EAAE5B,MAAQ,IAAIw+G,EAAAA,EAAS58G,GAE1BskH,EAAUtkH,EAAE5B,KACrB,CAGA0lH,EAAAA,EAAOviH,EAAAA,SAAAA,OAAgByiH,SAAY,yzFAoCnCF,EAAAA,EAAOviH,EAAAA,SAAAA,WAAoByiH,SAAY,mwDAuBvCF,EAAAA,EAAOviH,EAAAA,SAAAA,QAAiByiH,SAAY,m7DAyBpCF,EAAAA,EAAOviH,EAAAA,SAAAA,UAAmByiH,SAAY,wqEA4BtCF,EAAAA,EAAOviH,EAAAA,SAAAA,UAAmByiH,SAAY,60EA8BtCF,EAAAA,EAAOviH,EAAAA,SAAAA,UAAmByiH,SAAY,i/EAkCtC,IAAK,MAAMjzG,KAAYkkG,EAAAA,EAAmB,CACxC,MAAM1yD,EAAMgiE,EAAkBxzG,GAExBkkB,EAAWstB,EAAI58B,KACrB,GAAiB,OAAbsP,EAEF,IAAK,MAAMtP,KAAQ9kB,OAAOpC,OAAO8C,EAAAA,UAC/BuiH,EAAAA,EAAOn+F,GAAMs+F,YAAY1hE,EAAInkD,WAG/B0lH,EAAAA,EAAO7uF,GAAUgvF,YAAY1hE,EAAInkD,KAErC,gECnNO,MAAM62G,EAA0C,CACrD,CACEtvF,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,cACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,0BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,wBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACNysG,SAAU,EACVjM,QAAS,EACT3jG,KAAM8lH,EAAAA,aAAAA,qBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,MAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,OAEzBt2G,KAAM8lH,EAAAA,aAAAA,WACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,YAC9BC,iBAAkB,IAClBC,iBAAkB,KAEpB,CACE1+F,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,OAEzBt2G,KAAM8lH,EAAAA,aAAAA,yBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,YAC9BC,iBAAkB,KAClBC,iBAAkB,KAEpB,CACE1+F,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,0BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,EACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,yBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,YAC9BC,iBAAkB,GAClBC,iBAAkB,GAEpB,CACE1+F,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,EACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,YACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,EACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,qBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACNysG,SAAU,GACVjM,QAAS,EACT3jG,KAAM8lH,EAAAA,aAAAA,oBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,MAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACNysG,SAAU,EACVjM,QAAS,EACT3jG,KAAM8lH,EAAAA,aAAAA,sBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,aAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACN2zG,iBAAkB,CAChByH,kBAAmB,EACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,sBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,MACNnD,KAAM8lH,EAAAA,aAAAA,YACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,SAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,UACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,OAEzBt2G,KAAM8lH,EAAAA,aAAAA,+BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,UACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,OAEzBt2G,KAAM8lH,EAAAA,aAAAA,6BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,OACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,kBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,OACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,KAEzBt2G,KAAM8lH,EAAAA,aAAAA,oBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,YAC9BC,iBAAkB,IAClBC,iBAAkB,GAEpB,CACE1+F,KAAMpkB,EAAAA,SAAAA,OACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,wBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,YAC9BC,iBAAkB,IAClBC,iBAAkB,IAEpB,CACE1+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,gBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,KAEzBt2G,KAAM8lH,EAAAA,aAAAA,8BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,EACnBjI,sBAAuB,KAEzBt2G,KAAM8lH,EAAAA,aAAAA,kBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,UAEhC,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,iBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,UAEhC,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNnD,KAAM8lH,EAAAA,aAAAA,eACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,yBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,YAC9BC,iBAAkB,EAClBC,iBAAkB,GAEpB,CACE1+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,OAEzBt2G,KAAM8lH,EAAAA,aAAAA,wBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNnD,KAAM8lH,EAAAA,aAAAA,YACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,2BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNnD,KAAM8lH,EAAAA,aAAAA,iBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,KAEzBt2G,KAAM8lH,EAAAA,aAAAA,iBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNnD,KAAM8lH,EAAAA,aAAAA,mBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,kBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,2BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNwgG,QAAS,EACTiM,SAAU,EACV5vG,KAAM8lH,EAAAA,aAAAA,gBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,MAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,EACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,iBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,OAEzBt2G,KAAM8lH,EAAAA,aAAAA,iBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNnD,KAAM8lH,EAAAA,aAAAA,YACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,UAEhC,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNysG,SAAU,GACVjM,QAAS,GACT3jG,KAAM8lH,EAAAA,aAAAA,sBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,MAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNysG,SAAU,EACVjM,QAAS,EACT3jG,KAAM8lH,EAAAA,aAAAA,0BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,aAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,KAEzBt2G,KAAM8lH,EAAAA,aAAAA,wBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,iBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,YAC9BC,iBAAkB,IAClBC,iBAAkB,GAEpB,CACE1+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,mBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,iBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNysG,SAAU,EACVjM,QAAS,EACT3jG,KAAM8lH,EAAAA,aAAAA,4BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,MAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,YACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,4BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAAsBA,EAAAA,aAAAA,YAC9BC,iBAAkB,KAClBC,iBAAkB,KAEpB,CACE1+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,GAEzBt2G,KAAM8lH,EAAAA,aAAAA,0BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACN2zG,iBAAkB,CAChByH,kBAAmB,GACnBjI,sBAAuB,MAEzBt2G,KAAM8lH,EAAAA,aAAAA,0BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,SACNysG,SAAU,EACVjM,QAAS,EACT3jG,KAAM8lH,EAAAA,aAAAA,gCACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,aAEV,CACEx+F,KAAM,KACNvnB,KAAM8lH,EAAAA,aAAAA,SACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,WAEV,CACEx+F,KAAM,KACNvnB,KAAM8lH,EAAAA,aAAAA,MACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,QAEV,CACEx+F,KAAM,KACNvnB,KAAM8lH,EAAAA,aAAAA,aACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,eAEV,CACEx+F,KAAM,KACNvnB,KAAM8lH,EAAAA,aAAAA,mBACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,cAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,UACNnD,KAAM8lH,EAAAA,aAAAA,+BACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,UAEV,CACEx+F,KAAMpkB,EAAAA,SAAAA,OACNnD,KAAM8lH,EAAAA,aAAAA,aACNvtF,MAAO,CAACwtF,EAAAA,aAAAA,oHCnbL,SAASK,EAAiBhyG,GAc/B,OACE,gCACE,gBAAC,IAAO,CAACO,MAAO,wBAAM4yF,wBAAyB,CAAEC,OAfrD,WACE,MAAM50D,EAAMn0C,EAAAA,GAAAA,uBAA8B2V,EAAM49B,QAAS59B,EAAMiyG,cAC/D,OAAW,MAAPzzE,EACK,GAGJx+B,EAAM49B,QAAQW,YAAYC,IAIxB0E,EAAAA,EAAAA,GAAsBljC,EAAM49B,QAASY,GAAK,GAHxC,EAIX,CAI6D0zE,OACvD,gBAAC,IAAM,CAACz5G,QAASuH,EAAMvH,SAAUuH,EAAM2zD,OAI/C,qDC1BKw+C,+EAQE,SAASC,IACd,MAAOv4B,EAAMw4B,IAAWprH,EAAAA,EAAAA,UAASkrH,EAAS35G,MAE1C,SAAS85G,EAAWz4B,GAClBw4B,EAAQx4B,EACV,CAEA,OACE,gCACGA,IAASs4B,EAAS35G,MACjB,gBAAC,IAAG,CAAC3S,GAAI,CAAEG,QAAS,OAAQmB,MAAO,gBACjC,gBAAC,IAAM,CAACsR,QAAS,IAAM65G,EAAWH,EAASI,OAAO,kBAClD,gBAAC,IAAM,CAAC95G,QAAS,IAAM65G,EAAWH,EAASK,QAAQ,cACnD,gBAAC,IAAM,CAAC/5G,QAAS,IAAM65G,EAAWH,EAASx6E,WAAW,iBACtD,gBAAC,IAAM,CAACl/B,QAAS,IAAM65G,EAAWH,EAAShiF,YAAY,mBAAiBF,EAAAA,EAAW,YAGtF4pD,IAASs4B,EAAS35G,MACjB,gCACE,gBAAC,IAAM,CAACC,QAAS,IAAM65G,EAAWH,EAAS35G,OAAO,gBACjDqhF,IAASs4B,EAASI,MAAQ,gBAAC,IAAQ,MACnC14B,IAASs4B,EAASK,OAAS,gBAAC,IAAW,MACvC34B,IAASs4B,EAASx6E,UAAY,gBAAC,IAAQ,MACvCkiD,IAASs4B,EAAShiF,WAAa,gBAAC,IAAS,OAKpD,EApCa,SAARgiF,GAAAA,EAAQ,YAARA,EAAQ,YAARA,EAAQ,cAARA,EAAQ,oBAARA,EAAQ,uBAARA,IAAAA,EAAQ,4LCcb,MAAMx9G,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXvI,SAAU,CACR9F,MAAOoO,EAAM62B,OAAOkhF,MACpBtzG,WAAY,SACZkyB,OAAQ,MACRx2B,QAAS,MACToZ,OAAQ,eAKd,SAASqkG,EAAWlmH,GACdA,EAASX,OAAS8lH,EAAAA,aAAAA,aACpBt/G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,QACL9F,EAASX,OAAS8lH,EAAAA,aAAAA,mBAC3Bt/G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,aAEdD,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,SAAe,CAAE9F,YAEnC,CAEA,SAASmmH,EAAenmH,EAAoB8I,GAC1C,IAAIkvE,EAAI,IAWR,OAVIh4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,WAAuBptC,EAAI,KACnDh4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,OAAmBptC,EAAI,KAC/Ch4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,YAAwBptC,EAAI,KACpDh4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,SAAqBptC,EAAI,KACjDh4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,eAA2BptC,EAAI,KACvDh4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,cAA0BptC,EAAI,KACtDh4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,gBAA4BptC,EAAI,KACxDh4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,cAA0BptC,EAAI,KACtDh4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,UAAsBptC,EAAI,KAClDh4E,EAAS43B,MAAMj7B,SAASyoH,EAAAA,aAAAA,WAAuBptC,EAAI,KAClDh4E,EAEH,wBAAM,aAAYA,EAASX,KAAMjC,IAAK4C,EAASX,KAAMyJ,UAAWA,EAAWoD,QAAS,IAAMg6G,EAAWlmH,IACnG,yBAAIg4E,IAHc,4BAAM,IAM9B,CAEA,SAASouC,EAAU3yG,GACjB,MAAM4yG,EAAuB,SACvBC,EAAoC,CACxCC,EAAG,EACH7iG,EAAG,EACHyd,EAAG,EACHqlF,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,EACH/S,EAAG,EACH77B,EAAG,EACHE,EAAG,EACH2uC,EAAG,GACH5uC,EAAG,GACH6uC,EAAG,GACHC,EAAG,GACHhvC,EAAG,GACHivC,EAAG,GACHC,EAAG,GACHC,EAAG,GACH/uC,EAAG,GACHE,EAAG,GACH8uC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHxzC,EAAG,GACHyzC,EAAG,GACHlvC,EAAG,IAECtvE,EAAUT,IAEVk/G,EAAa1nH,IACjB,MAAM85E,EAAyC,GACzCxvE,EAA6B,GACnC,IAAIC,EAAgC,KACpC,KAAkD,QAA1CA,EAAQk8G,EAAqBkB,KAAK3nH,KACxCsK,EAAQ2B,KAAK1B,GAEf,GAAuB,IAAnBD,EAAQpN,OAEV,OADA48E,EAAM7tE,KAAKjM,GACJ85E,EAGT,IAAK,IAAI/6E,EAAI,EAAGA,EAAIuL,EAAQpN,OAAQ6B,IAAK,CACvC,MAAM6oH,EAAe,IAAN7oH,EAAU,EAAIuL,EAAQvL,EAAI,GAAGytC,MAAQ,EAC9Cq7E,EAAOv9G,EAAQvL,GAAGytC,MACxBstC,EAAM7tE,KAAKjM,EAAEqoB,MAAMu/F,EAAQC,IAC3B,MAAMC,EAAYpB,EAAU1mH,EAAEsK,EAAQvL,GAAGytC,QACzCstC,EAAM7tE,KAAKs6G,EAAeZ,EAAAA,EAAU9xG,EAAMmT,KAAKo+F,UAAU0C,IAAa7+G,EAAQ7I,UAChF,CAEA,OADA05E,EAAM7tE,KAAKjM,EAAEqoB,MAAM/d,EAAQA,EAAQpN,OAAS,GAAGsvC,MAAQ,IAChDstC,CAAK,EAGRA,EAAuB,GACvB32D,EAAQtP,EAAMmT,KAAKq+F,SAAS95G,MAAM,MACxC,IAAIxM,EAAI,EACR,IAAK,MAAMmwB,KAAQ/L,EACjB22D,EAAM7tE,KACJ,gBAAC,IAAU,CAACzO,IAAKuB,EAAGrF,GAAI,CAAEwT,WAAY,MAAOC,WAAY,QACtDu6G,EAAUx4F,KAGfnwB,IAGF,OAAO,gCAAG+6E,EACZ,CAEA,SAASiuC,EAASl0G,GAChB,MAAMm0G,EAAkBn0G,EAAMmT,KAAKo+F,UAAUnpH,KAAKgsH,GAE9C,gBAAC,WAAc,CAACzqH,IAAKyqH,GACnB,gBAAC,IAAM,CAAC37G,QAAS,IAAMg6G,EAAWX,EAAAA,EAAUsC,KAAYA,GACxD,8BAKN,OAAO,gCAAGD,EACZ,CAEO,SAASE,IACd,MAAMlhG,EAAOm+F,EAAAA,EAAOjnH,EAAAA,GAAAA,MACpB,OACE,gCACE,gBAAC,IAAU,KAAE8oB,EAAKvnB,MACjBnG,EAAAA,EAAAA,gBAA2B,gBAACyuH,EAAQ,CAAC/gG,KAAMA,IAAW,gBAACw/F,EAAS,CAACx/F,KAAMA,IAG9E,sQC/HO,SAASmhG,EAAgBt0G,GAC9B,MAAOu0G,EAAUC,IAAevtH,EAAAA,EAAAA,WAAS,GACnCkZ,GAAWC,EAAAA,EAAAA,GAAY,KAMvBw9B,EAAUT,EAAAA,EAAUn9B,EAAMskC,aAChC,GAAe,MAAX1G,EACF,MAAM,IAAInyB,MAAO,+DAA8DzL,EAAMskC,eAGvF,MAAM/3C,EAAWulH,EAAAA,EAAU9xG,EAAMskC,aACjC,GAAgB,MAAZ/3C,EACF,MAAM,IAAIkf,MAAO,gEAA+DzL,EAAMskC,eAIxF,MAAMmwE,EAAWpqH,EAAAA,GAAAA,KAAY2V,EAAMskC,aAAej6C,EAAAA,GAAAA,KAAY2V,EAAMskC,aAAe,KAM7EowE,EAAkBD,EAAWzxE,EAAAA,EAAiByxE,GAAY,KAEhEpqH,EAAAA,GAAAA,UAAkBm6C,EAAAA,EAAAA,GAA0BxkC,EAAMskC,aAsHlD,MAAMqwE,EAA6B,MAAZF,EACjB/wB,EAAY9lD,EAAQuB,eAE1B,OACE,gCACGw1E,GACC,gCACE,gBAAC,IAAU,KAAC,cAAYF,GACxB,gBAAC,IAAU,KAAC,6BACZ,gBAAC,IAAG,CAACzuH,QAAQ,QACX,gBAAC,IAAO,CACNua,MACE,gCAAE,iBACc,gBAAC,IAAK,CAAC7R,MAAOkvC,EAAQlvC,MAAQg1F,IAAa,iEAK7D,gBAAC,IAAU,KAAC,uBACU,gBAAC,IAAU,CAAC3lE,WAAY6f,EAAQpvC,sBAI1D,gBAAC,IAAU,KAAC,6BACZ,gBAAC,IAAG,CAACxI,QAAQ,QACX,gBAAC,IAAO,CACNua,MACE,gCAAE,sQAOJ,gBAAC,IAAU,KAAC,kBACK,gBAAC,IAAK,CAAC7R,MAAOkvC,EAAQlvC,WAI3C,gBAAC,IAAU,KAAC,6BACZ,4BAGJ,gBAAC,IAAG,CAAC7I,GAAI,CAAEG,QAAS,OAAQmB,MAAO,gBAChCwtH,GACC,gBAAC,IAAG,CAAC9uH,GAAI,CAAEG,QAAS,OAAQ8a,oBAAqB,YAC/C,gBAAC,IAAM,CAACrI,QAhElB,SAAcmH,GACPA,EAAE1G,WAIKw7G,IAEVrqH,EAAAA,GAAAA,UACE,IAAIuqH,EAAAA,EAAY,CACdtsC,aAAa,EACbhkC,YAAatkC,EAAMskC,eAGvBj6C,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,MAElB,GAgDiC,QACvB,gBAAC,IAAM,CAACoG,QAAS,IAAM+7G,GAAY,IAAO,QAC1C,gBAAC,IAAY,CACXlwE,YAAatkC,EAAMskC,YACnB1G,QAASA,EACT2G,OAAQpkC,EACRM,KAAM8zG,EACN7zG,QAAS,IAAM8zG,GAAY,MAIhC52E,EAAQa,qBACP,gBAAC,IAAgB,CACfb,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,QAC/BjmC,QAjLV,SAA0BmH,GACnBA,EAAE1G,YAGP7O,EAAAA,GAAAA,mBACA8V,IACF,EA4KUwzD,KAAM,wBAGT/1B,EAAQe,kCACP,gBAAC,IAAgB,CACff,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,kBAC/BjmC,QAjLV,SAAuCmH,GAChCA,EAAE1G,YAGP7O,EAAAA,GAAAA,gCACA8V,IACF,EA4KUwzD,KAAM,sCAGT/1B,EAAQgB,wBACP,gBAAC,IAAgB,CACfhB,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,WAC/BjmC,QAjLV,SAA6BmH,GACtBA,EAAE1G,YAGP7O,EAAAA,GAAAA,sBACA8V,IACF,EA4KUwzD,KAAM,2BAGT/1B,EAAQiB,wBACP,gBAAC,IAAgB,CACfjB,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,UAC/BjmC,QAjLV,SAA6BmH,GACtBA,EAAE1G,YAGP7O,EAAAA,GAAAA,sBACA8V,IACF,EA4KUwzD,KAAM,4BAGT/1B,EAAQiB,wBACP,gBAAC,IAAgB,CACfjB,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,YAC/BjmC,QAzKV,SAAqCmH,GAC9BA,EAAE1G,YAGP7O,EAAAA,GAAAA,8BACA8V,IACF,EAoKUwzD,KAAM,qCAGT/1B,EAAQkB,kBACP,gBAAC,IAAgB,CACflB,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,KAC/BjmC,QAzLV,SAAuBmH,GAChBA,EAAE1G,YAGP7O,EAAAA,GAAAA,gBACA8V,IACF,EAoLUwzD,KAAM,qBAGT/1B,EAAQmB,wBACP,gBAAC,IAAgB,CACfnB,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,WAC/BjmC,QAzKV,SAA6BmH,GACtBA,EAAE1G,YAGP7O,EAAAA,GAAAA,sBACA8V,IACF,EAoKUwzD,KAAM,2BAGT/1B,EAAQoB,kCACP,gBAAC,IAAgB,CACfpB,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,kBAC/BjmC,QAzKV,SAAuCmH,GAChCA,EAAE1G,YAGP7O,EAAAA,GAAAA,gCACA8V,IACF,EAoKUwzD,KAAM,sCAGT/1B,EAAQqB,wBACP,gBAAC,IAAgB,CACfrB,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,WAC/BjmC,QAzKV,SAA6BmH,GACtBA,EAAE1G,YAGP7O,EAAAA,GAAAA,sBACA8V,IACF,EAoKUwzD,KAAM,2BAGT/1B,EAAQsB,sBACP,gBAAC,IAAgB,CACftB,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,QAC/BjmC,QAzKV,SAA2BmH,GACpBA,EAAE1G,YAGP7O,EAAAA,GAAAA,oBACA8V,IACF,EAoKUwzD,KAAM,yBAGT/1B,EAAQsB,sBACP,gBAAC,IAAgB,CACftB,QAASA,EACTq0E,aAAcjvE,EAAAA,EAAiBtE,EAAAA,QAAAA,UAC/BjmC,QAjNV,SAAmCmH,GAC5BA,EAAE1G,YAGP7O,EAAAA,GAAAA,4BACA8V,IACF,EA4MUwzD,KAAM,mCAGoB,MAA7BpnE,EAASm2G,kBAA4B,gBAAC,IAAM,CAACjqG,QA7KpD,SAA2BmH,GACzB,GAAKA,EAAE1G,UAAP,CAGA,IAAK3M,EAASm2G,iBACZ,MAAM,IAAIj3F,MAAO,mCAAkCzL,EAAMskC,gDAE3DlyC,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,aAAmB,CAAE9F,YAJnC,CAKF,GAqKgF,uBAIlF,kICzTO,SAASsoH,EAAY70G,GAC1B,MAAM80G,EAAezqH,EAAAA,GAAAA,kBACf0qH,EAAWD,EAAa3nH,UAAY,EAC1C,GAAI4nH,EACF,OAAO,gBAAC,IAAM,KAAC,8BAGjB,MAAMpwG,EAAOta,EAAAA,GAAAA,0BAUb,OACE,gBAAC,IAAO,CAACkW,MAAO,gBAAC,IAAO,KAAG,2DACzB,4BACE,2BACA,gBAAC,IAAU,KACT,yBAAG,0EAEL,2BACA,gBAAC,IAAM,CAACQ,UAAW1W,EAAAA,GAAAA,UAAiBsa,GAAOlM,QAhBjD,WACMs8G,GACC1qH,EAAAA,GAAAA,UAAiBsa,KACtBta,EAAAA,GAAAA,UAAiBsa,EAAM,WACvBmwG,EAAa3nH,WACb6S,EAAMG,WACR,GAU+D,yBAChC20G,EAAa3nH,SAAS,OAAQ2nH,EAAa3nH,SAAW,EAAE,OAC/E,gBAAC,IAAK,CAACqY,MAAOb,EAAMmzD,aAAa,MAK3C,sSCPO,SAASk9C,EAAgB,GAAqC,IAArC,IAAEjlE,GAAa,EAkD7C,MAAMklE,EA7CN,WACE,MAAMprH,EAA6B,GAEnC,GAAIkmD,EAAI5rB,MAAMj7B,SAASyoH,EAAAA,aAAAA,SAAuB,CAC5C,KAAKt1F,EAAAA,EAAAA,GAAc,eAAe0G,SAASgtB,EAAInkD,MAC7C,MAAM,IAAI6f,MAAO,iBAAgBskC,EAAInkD,oDAEvC/B,EAAQuO,KAAK,gBAAC,IAAe,CAACzO,IAAI,kBAAkB26C,YAAayL,EAAInkD,OACvE,CAkCA,OAhCImkD,EAAI5rB,MAAMj7B,SAASyoH,EAAAA,aAAAA,MACrB9nH,EAAQuO,KAAK,gBAAC,IAAW,CAACzO,IAAI,cAAcomD,IAAKA,KAG/CA,EAAI5rB,MAAMj7B,SAASyoH,EAAAA,aAAAA,WACrB9nH,EAAQuO,KAAK,gBAAC,IAAgB,CAACzO,IAAI,sBAGjComD,EAAI5rB,MAAMj7B,SAASyoH,EAAAA,aAAAA,QACrB9nH,EAAQuO,KAAK,gBAAC,IAAa,CAACzO,IAAI,mBAG9BomD,EAAI5rB,MAAMj7B,SAASyoH,EAAAA,aAAAA,UACrB9nH,EAAQuO,KAAK,gBAAC,IAAe,CAACzO,IAAI,kBAAkBomD,IAAKA,KAGvDA,EAAI5rB,MAAMj7B,SAASyoH,EAAAA,aAAAA,aACrB9nH,EAAQuO,KAAK,gBAAC,IAAkB,CAACzO,IAAI,qBAAqBomD,IAAKA,KAG7DA,EAAI5rB,MAAMj7B,SAASyoH,EAAAA,aAAAA,eACrB9nH,EAAQuO,KAAK,gBAAC,IAAgB,CAACzO,IAAI,sBAGjComD,EAAI5rB,MAAMj7B,SAASyoH,EAAAA,aAAAA,aACrB9nH,EAAQuO,KAAK,gBAAC,IAAkB,CAACzO,IAAI,qBAAqBomD,IAAKA,KAG7DA,EAAI5rB,MAAMj7B,SAASyoH,EAAAA,aAAAA,SACrB9nH,EAAQuO,KAAK,gBAAC,IAAc,CAACzO,IAAI,oBAG5BE,CACT,CAEsCqrH,GAChCC,EAAaC,EAAAA,EAAAA,MAAqBjpH,GAAMA,EAAEkpH,cAAgBtlE,EAAInkD,OAC9D6uC,GAASxwC,EAAAA,EAAAA,IAAUkrH,EAAaA,EAAW35E,SAAW,IAEtDpxC,EAA+B,OAAXqwC,IAAmB66E,EAAAA,EAAAA,IAAoB76E,GAEjE,OACE,gCACE,gBAAC,IAAM,CAAChiC,QAAS,IAAMrG,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OAAY,mBACjD,gBAAC,IAAU,CAAC7L,QAAQ,KAAKX,GAAI,CAAE+D,GAAI,IAChCQ,IAAsB3E,EAAAA,EAAAA,mBACrB,gBAAC,IAAO,CAAC8a,MAAQ,yBAAwBwvC,EAAInkD,SAC3C,4BACE,gBAAC,IAAe,CAAC/B,QAASkmD,EAAInkD,SAIlCmkD,EAAInkD,MAGPqpH,EAGP,mKCxFO,SAASM,EAAYv1G,GAC1B,SAASw1G,EAAMrhG,GACb9pB,EAAAA,GAAAA,UACE,IAAIorH,EAAAA,GAAU,CACZC,UAAWvhG,EACX5nB,SAAUyT,EAAM+vC,IAAInkD,KACpB08E,aAAa,KAGjBj+E,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,KAChB,CAEA,MAAMsS,GAAOsW,EAAAA,EAAAA,IAAc06F,EAAAA,GAAQC,EAAAA,QAAAA,UAAmB51G,EAAM+vC,KAE5D,OACE,gBAAC,IAAG,CAAClqD,GAAI,CAAEG,QAAS,OAAQmB,MAAO,gBACjC,gBAAC,IAAM,CAACsR,QAAS,IAAM+8G,EAAMI,EAAAA,QAAAA,WAAmB,mBAC9B,gBAAC,IAAK,CAACpwG,MAAOb,EAAMmzD,aAAa,IAAQ,WAE3D,gBAAC,IAAM,CAACr/D,QAAS,IAAM+8G,EAAMI,EAAAA,QAAAA,UAAkB,kBAC9B,gBAAC,IAAK,CAACpwG,MAAOb,EAAMmzD,aAAa,IAAQ,WAE1D,gBAAC,IAAM,CAACr/D,QAAS,IAAM+8G,EAAMI,EAAAA,QAAAA,YAAoB,oBAC9B,gBAAC,IAAK,CAACpwG,MAAOb,EAAMmzD,aAAa,IAAQ,WAE5D,gBAAC,IAAM,CAACr/D,QAAS,IAAM+8G,EAAMI,EAAAA,QAAAA,UAAkB,kBAC9B,gBAAC,IAAK,CAACpwG,MAAOb,EAAMmzD,aAAa,IAAQ,WAIhE,iICvCO,SAAS+9C,IAEd,MACM11G,GAAWC,EAAAA,EAAAA,GAAY,KA4B7B,OACE,gBAAC,IAAM,CAAC3H,QA3BV,SAAmBmH,GACjB,IAAKA,EAAE1G,UACL,OAMF,GAHI7O,EAAAA,GAAAA,GAAAA,QAAoB,IACtBA,EAAAA,GAAAA,GAAAA,QAAoB,GAElBA,EAAAA,GAAAA,GAAAA,SAAqBA,EAAAA,GAAAA,GAAAA,IACvB,OAGF,MAAMsa,GAAOk9F,EAAAA,EAAAA,KACbx3G,EAAAA,GAAAA,UAAiBsa,EAAM,mBACvBta,EAAAA,GAAAA,GAAAA,QAAoBA,EAAAA,GAAAA,GAAAA,IAGpB8V,KAEAxC,EAAAA,EAAAA,GACE,gCAAE,+DAC4D,gBAAC,IAAK,CAAC6H,MAAOb,KAGhF,EAG8Bld,MA9Bb,CAAEzB,QAAS,UA8BmB,8BAChB,gBAAC,IAAK,CAACwf,OAAOq8F,EAAAA,EAAAA,KAA0B/pC,aAAa,IAGtF,mKCjCO,SAASg+C,EAAoB91G,GAClC,MAAOw7B,EAAUu6E,IAAe9uH,EAAAA,EAAAA,UAAS,IAEzC,SAAS+uH,KACPC,EAAAA,EAAAA,IAAez6E,EAAUx7B,EAAMhS,IAAKgS,EAAM2E,MAC1C3E,EAAMU,SACR,CAUA,OACE,gBAAC,IAAK,CAACD,KAAMT,EAAMS,KAAMC,QAASV,EAAMU,SACtC,gBAAC,IAAU,KAAC,iDACoC6jF,EAAAA,EAAAA,IAAUvkF,EAAMhS,KAAK,cAAY,IAC/E,gBAAC,IAAK,CAACwX,MAAOxF,EAAM2E,KAAMmzD,aAAa,IAAQ,KAEjD,2BACA,2BACA,gBAAC,IAAU,KAAC,4CACZ,2BAEA,gBAAC,IAAS,CACRryD,WAAS,EACT+6E,QArBN,SAAiBr2D,GACXA,EAAMxgC,MAAQqyB,EAAAA,EAAAA,OAAWg6F,GAC/B,EAoBM9rF,SAlBN,SAAkBC,GAChB4rF,EAAY5rF,EAAMK,OAAO1zB,MAC3B,EAiBMjG,KAAK,OACL6+B,YAAY,kBACZ1C,WAAY,CACV8I,aACE,gBAAC,IAAM,CAACr9B,QAASu9G,EAAqBj1G,UAAW1W,EAAAA,GAAAA,UAAiB2V,EAAM2E,OAAsB,KAAb62B,GAAiB,UAQ9G,8KC3CO,SAAS06E,EAAUl2G,GACxB,MAAM80G,EAAezqH,EAAAA,GAAAA,kBACrB,GAAIyqH,EAAa9nH,QAAUC,EAAAA,EAAAA,mBACzB,OAAO,gBAAC,IAAM,KAAC,4BAGjB,MAAM0X,EAAOta,EAAAA,GAAAA,wBAOPmY,EAAkD,IAAzC3T,EAAAA,GAAAA,oBAA6C,GAAM,UAASA,EAAAA,GAAAA,sBAE3E,OACE,gBAAC,IAAO,CACN0R,MACE,gBAAC,IAAO,KAAG,4EAA2EiC,SAGxF,4BACE,2BACA,gBAAC,IAAU,KACT,yBAAG,8CAEL,2BACA,gBAAC,IAAM,CAACzB,UAAW1W,EAAAA,GAAAA,UAAiBsa,GAAOlM,QAnBjD,YACE09G,EAAAA,EAAAA,MACAn2G,EAAMG,UACR,GAgB+D,wBAClCokF,EAAAA,EAAAA,IAAUuwB,EAAa9nH,QAAQ,QACnDu3F,EAAAA,EAAAA,IAAgC,EAAtBuwB,EAAa9nH,QAAY,OACpC,gBAAC,IAAK,CAACwY,MAAOb,EAAMmzD,aAAa,MAK3C,mKCnCO,SAASs+C,KACdh2G,EAAAA,EAAAA,GAAY,KACZ,MAAMi2G,EAAShoH,OAAOpC,OAAOw8E,EAAAA,GAS7B,OACE,gBAAC,IAAG,CAAC5iF,GAAI,CAAEG,QAAS,OAAQmB,MAAO,gBAChCkvH,EAAOjuH,KAAKkuH,GACX,gBAAC,IAAO,CAAC3sH,IAAK2sH,EAAMvuC,SAAUxnE,MAAO+1G,EAAMtuC,aACzC,gBAAC,IAAM,CAACvvE,QAAUmH,GAX1B,SAAiBA,EAAkC02G,GAC5C12G,EAAE1G,YACPo9G,EAAMnuC,SACN/1E,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,MACdhI,EAAAA,GAAAA,OAAe,EACjB,CAMgCksH,CAAQ32G,EAAG02G,IAChCA,EAAMzlH,KAAK,MAAGoK,EAAAA,EAAAA,IAAcq7G,EAAM/tC,YAAYl+E,EAAAA,KAAS,0BAMpE,2RCCO,SAASmsH,EAAgBx2G,GAC9B,MAAMyuB,GAAcxnC,EAAAA,EAAAA,WAAS,GAAO,GAGpC,SAASwvH,IACP,GAAIpsH,EAAAA,GAAAA,YAEF+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,kBACT,GACLhI,EAAAA,GAAAA,OAAAA,UAA0B,KAC1BA,EAAAA,GAAAA,OAAAA,SAAyB,KACzBA,EAAAA,GAAAA,OAAAA,WAA2B,KAC3BA,EAAAA,GAAAA,OAAAA,SAAyB,IACzB,CAEAA,EAAAA,GAAAA,oBACAsT,EAAAA,EAAAA,GAAgB,yDAChB8wB,GAAaliB,IAASA,IAEtB,MAAMmqG,EAAchiH,SAAS+wD,eAAe,qBACxCixD,aAAuBC,cACzBD,EAAYjxC,QACZixC,EAAYjxC,QAEhB,MACE9nE,EAAAA,EAAAA,GAAgB,0FAEpB,CA6DA,SAASi5G,IACP,MAAOn2G,EAAM6D,IAAWrd,EAAAA,EAAAA,WAAS,GACjC,OAAKoD,EAAAA,GAAAA,uBAUH,gCACE,gBAAC,IAAM,CAAC0W,UAAW1W,EAAAA,GAAAA,0BAAmCA,EAAAA,GAAAA,YAAoBoO,QAAS,IAAM6L,GAAQ,IAAO,wBAGxG,gBAAC,IAAsB,CAAC7D,KAAMA,EAAMC,QAAS,IAAM4D,GAAQ,MAZ3D,gCACE,gBAAC,IAAU,KACT,yBAAG,qEAab,CAaA,SAASuyG,IACP,MAAMvxG,EAAUhX,EAAAA,EAAS5D,EAAAA,YAAAA,uBACpBL,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,yBAC5BsvB,EAAAA,EAAAA,IAAY1U,GAGXjb,EAAAA,GAAAA,cAAAA,MAA2B5B,GAAMA,EAAEmD,OAASC,EAAAA,iBAAAA,gBAC5CxB,EAAAA,GAAAA,oBAAAA,MAAiC5B,GAAMA,EAAEmD,OAASC,EAAAA,iBAAAA,iBAEnDmR,EAAAA,EAAAA,IAAkB,CAAEpR,KAAMC,EAAAA,iBAAAA,aAA+BC,MAAO,IAGlEsG,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,YAChB,CAwIA,OAAQ2N,EAAM+vC,IAAInkD,MAChB,KAAK8lH,EAAAA,aAAAA,iBACH,OAjKGrnH,EAAAA,GAAAA,oBAIH,gBAAC,IAAM,CAACoO,QApFZ,WACErG,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,SAChB,EAkFqCxM,GAAI,CAAEuD,GAAI,IAAK,wBAHzC,iCAkKT,KAAKsoH,EAAAA,aAAAA,iBACH,OAAQ7iH,EAAAA,GAAAA,mBAAsC,KAAQ,kCAAU,gBAAC+nH,EAAiB,MAEpF,KAAKlF,EAAAA,aAAAA,YACH,OAnPJ,WACE,IAAKrnH,EAAAA,GAAAA,wBAAsE,IAArCwE,EAAAA,GAAAA,gBACpC,OAAO,iCAET,MAAM8kE,EAAOtpE,EAAAA,GAAAA,YAAqB,iCAAmC,gCACrE,OACE,gCACE,2BACA,gBAAC,IAAM,CAACoO,QAASg+G,GAAoB9iD,GAG3C,CAwOWmjD,GAET,KAAKpF,EAAAA,aAAAA,kBACH,OAvMA,gCACE,2BACA,gBAAC,IAAM,CAACj5G,QAnCZ,WACE63E,EAAAA,GAAAA,KAAoB,oDAAqDC,EAAAA,aAAAA,QAAsB,MAC/FmK,EAAAA,EAAAA,KACIrwF,EAAAA,GAAAA,YAAAA,KAA0B,GAAGA,EAAAA,GAAAA,YAAmBoJ,EAAAA,GAAAA,UAChDpJ,EAAAA,GAAAA,cAAqB,GAAK,GAAyB,IAApBA,EAAAA,GAAAA,YACjCA,EAAAA,GAAAA,IAAAA,cAA2B,oBAE7BA,EAAAA,GAAAA,IAAAA,SAAsB,mBACtBA,EAAAA,GAAAA,IAAAA,UAAuB,mBACvBA,EAAAA,GAAAA,IAAAA,SAAsB,mBACtBA,EAAAA,GAAAA,IAAAA,SAAsB,mBACtBA,EAAAA,GAAAA,IAAAA,WAAwB,mBACxBA,EAAAA,GAAAA,IAAAA,UAAuB,mBACvB,IAAK,MAAMulB,KAAQvlB,EAAAA,GAAAA,aACjB,GAAIulB,aAAgB7hB,EAAAA,EAClB1D,EAAAA,GAAAA,UAA+C,KAA9BulB,EAAK0rF,uBAAgC,aACjD,CACL,MAAM7gE,GAASxwC,EAAAA,EAAAA,IAAU2lB,GACzB,KAAM6qB,aAAkB7oC,EAAAA,GAAgB,MAAM,IAAI6Z,MAAO,UAASmE,8BAClEvlB,EAAAA,GAAAA,YAAAA,YAAiD,KAAlBowC,EAAOkhE,SACxC,CAGEtxG,EAAAA,GAAAA,cACFA,EAAAA,GAAAA,YAAAA,MAA2B,MAGzBA,EAAAA,GAAAA,cACFA,EAAAA,GAAAA,YAAAA,OAAyD,IAA7BA,EAAAA,GAAAA,YAAAA,QAEhC,GAKiC,gBAuMjC,KAAKqnH,EAAAA,aAAAA,+BACH,OApJJ,WACE,MAAMqF,EAAW,gBAAC,IAAM,CAACt+G,QAAS,IAAMrG,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,cAAmB,sBAEnEugF,EAAS,gBAAC,IAAU,CAAC/sF,GAAI,CAAEwT,WAAY,MAAOC,WAAY,QAC7D,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,gCAAgC,2BAChC,iCACH,OAAIjP,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,cAA+B,GAEtD,gCACE,gBAAC,IAAU,KACT,yBAAG,kSAML,2BACCkrH,EACD,2BACCnkC,GAIHvoF,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,cAA+B,GAEtD,gCACE,gBAAC,IAAU,KACT,yBAAG,mTAML,2BACCkrH,EACD,2BACCnkC,GAIHvoF,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,uBAEzB,gCACE,gBAAC,IAAU,KACT,yBAAG,oDAEL,2BACCqsH,EACD,2BACCnkC,GAKFvoF,EAAAA,GAAAA,iBAeHA,EAAAA,GAAAA,cAAAA,QAA6B5B,GAAMA,EAAEmD,OAASC,EAAAA,iBAAAA,oBAAoCxC,OAAS,GAC3FgB,EAAAA,GAAAA,oBAAAA,QAAmC5B,GAAMA,EAAEmD,OAASC,EAAAA,iBAAAA,oBAAoCxC,OAAS,EAG/F,gCACE,gBAAC,IAAU,KACT,yBAAG,mHAUT,gCACE,gBAAC,IAAU,KACT,yBAAG,gJAKL,gBAAC,IAAM,CAACoP,QAASo+G,GAAa,wBAC7BjkC,GArCD,gCACE,gBAAC,IAAU,KAAC,iEAEV,2BACA,2BAAM,oCAER,2BACCA,EAiCT,CA0BWokC,GAET,KAAKtF,EAAAA,aAAAA,aACH,OAzBA,gCACE,gBAAC,IAAU,KACT,gBAAC,IAAe,CAAC7nH,QAAS,oEAyBhC,KAAK6nH,EAAAA,aAAAA,eACH,OAAO,gBAAC,IAAU,MAEpB,QAEE,OADA5zG,QAAQC,MAAO,YAAWiC,EAAM+vC,IAAInkD,4CAC7B,iCAEb,oMC1TA,SAASqrH,EAAaj3G,GACpB,MAAOS,EAAM6D,IAAWrd,EAAAA,EAAAA,WAAS,GAC3B0d,GAAOuyG,EAAAA,EAAAA,IAAsBl3G,EAAMhS,KACzC,OACE,gCACE,gBAAC,IAAM,CAACyK,QAAS,IAAM6L,GAAQ,GAAOvD,UAAW1W,EAAAA,GAAAA,UAAiBsa,IAAO,aAC7D4/E,EAAAA,EAAAA,IAAUvkF,EAAMhS,KAAK,aAC/B,gBAAC,IAAK,CAACwX,MAAOb,EAAMmzD,aAAa,KAEnC,gBAAC,IAAmB,CAACr3D,KAAMA,EAAMC,QAAS,IAAM4D,GAAQ,GAAQtW,IAAKgS,EAAMhS,IAAK2W,KAAMA,IAG5F,CAEO,SAASwyG,EAAmBn3G,GACjC,MAAMG,GAAWC,EAAAA,EAAAA,GAAY,KAEvBg3G,EAA2C,GACjD,IAAK,IAAIlsH,EAAI8U,EAAM+vC,IAAI8hE,iBAAkB3mH,GAAK8U,EAAM+vC,IAAI6hE,iBAAkB1mH,GAAK,EAC7EksH,EAAsBh/G,KAAK,gBAAC6+G,EAAY,CAACttH,IAAKuB,EAAG8C,IAAK9C,KAGxD,OACE,gCACE,2BACA,gBAAC,IAAG,CAACrF,GAAI,CAAEG,QAAS,OAAQmB,MAAO,gBAAkBiwH,GACrD,2BACA,gBAAC,IAAU,KACT,yBAAG,wFAEL,2BACA,gBAAC,IAAS,CAACj3G,SAAUA,IACrB,2BACA,gBAAC,IAAS,CAACA,SAAUA,IACrB,2BACA,gBAAC,IAAW,CAACA,SAAUA,IAG7B,6ICnBO,SAASk3G,EAAUr3G,GAMxB,OAAI3V,EAAAA,GAAAA,eACK,gBAAC,IAAM,KAAC,0BAIf,gBAAC,IAAM,CAAC0W,UAAW1W,EAAAA,GAAAA,UAAiB4C,EAAAA,EAAAA,eAA0BwL,QAVhE,YA9BK,WACL,GAAIpO,EAAAA,GAAAA,eAEF,YADAsT,EAAAA,EAAAA,GAAiB,kCAGnB,IAAKtT,EAAAA,GAAAA,UAAiB4C,EAAAA,EAAAA,eAEpB,YADA0Q,EAAAA,EAAAA,GAAgB,iDAGlBtT,EAAAA,GAAAA,UAAiB4C,EAAAA,EAAAA,cAAyB,SAE1C,MAAMqqH,GAAUrtH,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,SAC1B,IAAKotH,EACH,MAAM,IAAI7rG,MAAM,6BAGlBphB,EAAAA,GAAAA,kBAAyBgxC,iBAAiBjjC,KAAKk/G,EAAQ97E,UACvD87E,EAAQj8E,iBAAiBjjC,KAAK/N,EAAAA,GAAAA,kBAAyBmxC,WACvD79B,EAAAA,EAAAA,GACE,4KAIJ,CAQI45G,GACAv3G,EAAMG,UACR,GAO8E,yBAE1E,gBAAC,IAAK,CAACqF,MAAOvY,EAAAA,EAAAA,cAAyB6qE,aAAa,IAG1D,0NCjCA,SAASjoC,EAAO2nF,GACd,MAAM7yG,EAAO1X,EAAAA,EAAAA,WACR5C,EAAAA,GAAAA,UAAiBsa,KAItBta,EAAAA,GAAAA,UAAiBsa,EAAM,SACvBta,EAAAA,GAAAA,OAAcmtH,GACT/xH,EAAAA,EAAAA,6BAAqCkY,EAAAA,EAAAA,GAAiB,kBAAiB65G,MAC5EplH,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,MAChB,CAEO,SAASolH,IACd,MAAOh3G,EAAM6D,IAAWrd,EAAAA,EAAAA,WAAS,IAC1BywH,EAAaC,IAAkB1wH,EAAAA,EAAAA,UAAS8H,EAAAA,SAAAA,UAG/C,SAAS6oH,EAAYzkG,GACnB,MAAMxO,EAAO1X,EAAAA,EAAAA,WACR5C,EAAAA,GAAAA,UAAiBsa,KAGlBlf,EAAAA,EAAAA,2BACFoqC,EAAO1c,IAGT7O,GAAQ,GACRqzG,EAAexkG,IACjB,CAEA,OAfA/S,EAAAA,EAAAA,GAAY,KAgBV,gCACE,gBAAC,IAAU,CAAC5Z,QAAQ,MAAK,iBACzB,gBAAC,IAAG,CAAC6Z,GAAI,GACP,gBAAC,IAAU,KAAC,8DACkD,IAC5D,gBAAC,IAAK,CAACmF,MAAOvY,EAAAA,EAAAA,WAAsB6qE,aAAa,IAAQ,KAE1DryE,EAAAA,EAAAA,gBACC,gCACG4I,OAAOpC,OAAO8C,EAAAA,UACZrH,QAAQyrB,GAAiBA,GAAQ9oB,EAAAA,GAAAA,OACjCjC,KAAK+qB,IAEJ,QAActY,IADAxM,OAAO2H,QAAQjH,EAAAA,UAAU1G,MAAMM,GAAUA,EAAM,KAAOwqB,IAC3C,MAAM,IAAI1H,MAAO,gCAA+B0H,MACzE,OACE,gBAAC,WAAc,CAACxpB,IAAKwpB,GACnB,gBAAC,IAAM,CAAC1a,QAAS,IAAMm/G,EAAYzkG,GAAmBttB,GAAI,CAAEwB,EAAG,IAC7D,gBAAC,IAAU,KAAC,aAAW8rB,IAEzB,2BACe,KAKzB,gBAAC,IAAQ,CAAC2c,YAAazlC,EAAAA,GAAAA,KAAa0lC,SAAW5c,GAAmBykG,EAAYzkG,MAGlF,gBAAC,IAAuB,CACtBA,KAAMukG,EACN7nF,OAAQ,IAAMA,EAAO6nF,GACrBj3G,KAAMA,EACNC,QAAS,IAAM4D,GAAQ,KAI/B,uHC7EO,SAASuzG,EAAwB73G,GACtC,MAAM2E,EAAO1X,EAAAA,EAAAA,WAKb,OACE,gBAAC,IAAK,CAACwT,KAAMT,EAAMS,KAAMC,QAASV,EAAMU,SACtC,gBAAC,IAAU,KAAC,+BACmBV,EAAMmT,KAAK,wBAAqB,gBAAC,IAAK,CAAC3N,MAAOb,EAAMmzD,aAAa,IAAQ,KAExG,2BACA,2BACA,gBAAC,IAAM,CAACr/D,QAXZ,WACEuH,EAAM6vB,QACR,GAUM,gBAAC,IAAU,KAAC,WAEd,gBAAC,IAAM,CAACp3B,QAAS,IAAMuH,EAAMU,WAAW,UAG9C,8KCTO,SAASo3G,EAAmB93G,GACjC,SAAS+3G,EAAKrC,GACZrrH,EAAAA,GAAAA,UACE,IAAIorH,EAAAA,GAAU,CACZC,UAAWA,EACXnpH,SAAUyT,EAAM+vC,IAAInkD,KACpB08E,aAAa,KAGjBj+E,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,KAChB,CAEA,MAAM2lH,GAAqB/8F,EAAAA,EAAAA,IAAc06F,EAAAA,GAAQsC,EAAAA,oBAAAA,gBAAqCj4G,EAAM+vC,KACtFmoE,GAAej9F,EAAAA,EAAAA,IAAc06F,EAAAA,GAAQsC,EAAAA,oBAAAA,UAA+Bj4G,EAAM+vC,KAC1EooE,GAAiBl9F,EAAAA,EAAAA,IAAc06F,EAAAA,GAAQsC,EAAAA,oBAAAA,YAAiCj4G,EAAM+vC,KAC9EqoE,GAAiBn9F,EAAAA,EAAAA,IAAc06F,EAAAA,GAAQsC,EAAAA,oBAAAA,YAAiCj4G,EAAM+vC,KAC9EsoE,GAAiBp9F,EAAAA,EAAAA,IAAc06F,EAAAA,GAAQsC,EAAAA,oBAAAA,YAAiCj4G,EAAM+vC,KAE9EuoE,EAAyB,2BACzBC,EAA0B,4BAEhC,OACE,gBAAC,IAAG,CAAC1yH,GAAI,CAAEG,QAAS,OAAQmB,MAAO,gBACjC,gBAAC,IAAO,CAACoZ,MAAO+3G,GACd,gBAAC,IAAM,CAAC7/G,QAAS,IAAMs/G,EAAKE,EAAAA,oBAAAA,kBAAsC,kCAEpE,gBAAC,IAAO,CAAC13G,MAAO+3G,GACd,gBAAC,IAAM,CAAC7/G,QAAS,IAAMs/G,EAAKE,EAAAA,oBAAAA,iBAAqC,gCAE/D,gBAAC,IAAK,CAACzyG,MAAOwyG,EAAoBlgD,aAAa,IAAQ,YAG3D,gBAAC,IAAO,CAACv3D,MAAO+3G,GACd,gBAAC,IAAM,CAAC7/G,QAAS,IAAMs/G,EAAKE,EAAAA,oBAAAA,WAA+B,yBAEzD,gBAAC,IAAK,CAACzyG,MAAO0yG,EAAcpgD,aAAa,IAAQ,YAGrD,gBAAC,IAAO,CAACv3D,MAAO+3G,GACd,gBAAC,IAAM,CAAC7/G,QAAS,IAAMs/G,EAAKE,EAAAA,oBAAAA,aAAiC,2BAE3D,gBAAC,IAAK,CAACzyG,MAAO2yG,EAAgBrgD,aAAa,IAAQ,YAGvD,gBAAC,IAAO,CAACv3D,MAAOg4G,GACd,gBAAC,IAAM,CAAC9/G,QAAS,IAAMs/G,EAAKE,EAAAA,oBAAAA,aAAiC,2BAE3D,gBAAC,IAAK,CAACzyG,MAAO4yG,EAAgBtgD,aAAa,IAAQ,YAGvD,gBAAC,IAAO,CAACv3D,MAAOg4G,GACd,gBAAC,IAAM,CAAC9/G,QAAS,IAAMs/G,EAAKE,EAAAA,oBAAAA,aAAiC,2BAE3D,gBAAC,IAAK,CAACzyG,MAAO6yG,EAAgBvgD,aAAa,IAAQ,YAK7D,gCCpFO,IAAK0gD,mBAWX,SAXWA,GAAAA,EAAe,iBAAfA,EAAe,iBAAfA,EAAe,iBAAfA,EAAe,iBAAfA,EAAe,iBAAfA,EAAe,6BAAfA,EAAe,+BAAfA,EAAe,gCAAfA,EAAe,4BAAfA,EAAe,qBAW1B,CAXWA,IAAAA,EAAe,mECGpB,MAAMC,EAOXt+G,YAAY/N,EAA2B23B,GACrC1pB,KAAKjO,UAAW+kH,EAAAA,EAAAA,IAAW/kH,GAC3BiO,KAAK0pB,IAAMA,CACb,yLCAF,SAAS20F,EAAY9sH,GAA6C,IAAtB+sH,EAAS,UAAH,+CAC5CA,GAAWlzH,EAAAA,EAAAA,kBACbmzH,EAAYhtH,GAEditH,EAAmBjtH,EACrB,CAEA,SAASgtH,EAAYhtH,GACnB,MAAMm4B,EAAM+0F,EAASltH,IACrB+R,EAAAA,EAAAA,GACE,gCAAE,wCAEA,2BACA,2BACA,yBAAIomB,EAAIA,KACR,2BACA,2BAAM,6BACqBA,EAAI33B,SAAS,6BAG9C,CAGA,SAASysH,EAAmBjtH,GAEtBmtH,EAAMntH,IACGvB,EAAAA,GAAAA,kBACRguD,SAASjgD,KAAKxM,EACrB,CAGA,SAASmtH,EAAMntH,GAEb,OADavB,EAAAA,GAAAA,kBACDguD,SAASnvD,SAAS0C,EAChC,CAGA,SAASkjF,IACP,GAAI18E,EAAAA,EAAAA,SAAkBC,EAAAA,GAAAA,SAEtB,GAAIhI,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,YAA6B,GAAO,CAE7D,MAAMmtH,GAAc/uH,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,aAC9B,KAAM8uH,aAAuB7uH,EAAAA,GAC3B,MAAM,IAAIshB,MAAM,gEAIhBphB,EAAAA,GAAAA,OAAAA,SAAyB2uH,EAAY9hB,uBACR,IAA5B7sG,EAAAA,GAAAA,YAAAA,OAAkC0uH,EAAMP,EAAAA,gBAAAA,UAEzCE,EAAYF,EAAAA,gBAAAA,QAAqD,IAA5BnuH,EAAAA,GAAAA,YAAAA,MAG7B0uH,EAAMP,EAAAA,gBAAAA,aACdE,EAAYF,EAAAA,gBAAAA,WAEhB,MAAO,IAAKO,EAAMP,EAAAA,gBAAAA,UAA4BnuH,EAAAA,GAAAA,OAAAA,SAAyB,GAAI,CACzEquH,EAAYF,EAAAA,gBAAAA,SACZ,MAAMtgE,EAAW7tD,EAAAA,GAAAA,kBACZ6tD,EAASntD,SAAS7B,SAAS8B,EAAAA,qBAAAA,SAC9BktD,EAASntD,SAASqN,KAAKpN,EAAAA,qBAAAA,OAE3B,MAAY+tH,EAAMP,EAAAA,gBAAAA,UAA4BnuH,EAAAA,GAAAA,OAAAA,SAAyB,GACrEquH,EAAYF,EAAAA,gBAAAA,UACFO,EAAMP,EAAAA,gBAAAA,eAAiCnuH,EAAAA,GAAAA,OAAAA,SAAyB,GAC1EquH,EAAYF,EAAAA,gBAAAA,eACFO,EAAMP,EAAAA,gBAAAA,UAA4BnuH,EAAAA,GAAAA,OAAAA,SAAyB,IACrEquH,EAAYF,EAAAA,gBAAAA,UACFO,EAAMP,EAAAA,gBAAAA,cAAgCnuH,EAAAA,GAAAA,OAAAA,SAAyB,IACzEquH,EAAYF,EAAAA,gBAAAA,cACFO,EAAMP,EAAAA,gBAAAA,UAA4BnuH,EAAAA,GAAAA,OAAAA,SAAyB,IACrEquH,EAAYF,EAAAA,gBAAAA,UACFO,EAAMP,EAAAA,gBAAAA,UAA4BnuH,EAAAA,GAAAA,OAAAA,SAAyB,IACrEquH,EAAYF,EAAAA,gBAAAA,UACFO,EAAMP,EAAAA,gBAAAA,iBAAmCnuH,EAAAA,GAAAA,OAAAA,SAAyB,KAC5EquH,EAAYF,EAAAA,gBAAAA,eAEhB,CAGA,MAAMM,EAA6C,CAEjD,CAACN,EAAAA,gBAAAA,SAA0B,IAAIC,EAAAA,EAC7BD,EAAAA,gBAAAA,QACA,qUASF,CAACA,EAAAA,gBAAAA,SAA0B,IAAIC,EAAAA,EAC7BD,EAAAA,gBAAAA,QACC,0DAAyD9tH,EAAAA,YAAAA,mNAQ5D,CAAC8tH,EAAAA,gBAAAA,SAA0B,IAAIC,EAAAA,EAC7BD,EAAAA,gBAAAA,QAGG,wMAAyE9tH,EAAAA,YAAAA,uBAI9E,CAAC8tH,EAAAA,gBAAAA,SAA0B,IAAIC,EAAAA,EAC7BD,EAAAA,gBAAAA,QAEG,4FAAmC9tH,EAAAA,YAAAA,yCAIxC,CAAC8tH,EAAAA,gBAAAA,SAA0B,IAAIC,EAAAA,EAC7BD,EAAAA,gBAAAA,QACA,uIAMF,CAACA,EAAAA,gBAAAA,cAA+B,IAAIC,EAAAA,EAClCD,EAAAA,gBAAAA,aAKG,mUAAG9tH,EAAAA,YAAAA,YAGR,CAAC8tH,EAAAA,gBAAAA,aAA8B,IAAIC,EAAAA,EACjCD,EAAAA,gBAAAA,YAOG,sYAAO9tH,EAAAA,YAAAA,WAGZ,CAAC8tH,EAAAA,gBAAAA,gBAAiC,IAAIC,EAAAA,EACpCD,EAAAA,gBAAAA,eACA,iJAOF,CAACA,EAAAA,gBAAAA,YAA6B,IAAIC,EAAAA,EAChCD,EAAAA,gBAAAA,WAEA,sNAMF,CAACA,EAAAA,gBAAAA,SAA0B,IAAIC,EAAAA,EAC7BD,EAAAA,gBAAAA,QAEA,ySC7KJ,SAASS,EAAe3zG,GACtB,IAAK,MAAM4zG,KAAkB5zG,EAAQvS,cACnC,GAAImmH,IAAmBrtH,EAAAA,iBAAAA,oBAEpBxB,EAAAA,GAAAA,cAAAA,MAA2BsS,GACnBA,EAAI/Q,MAAQstH,IAGrB,OAAO,EAEX,OAAO,CACT,CAEO,MAAMC,EAA0B,CACrC,CACE54G,MAAO,2BACPoD,UAAW,KACT,MAAM82B,GAASxwC,EAAAA,EAAAA,IAAU,QACzB,SAAKwwC,IAAWpsC,OAAOojB,OAAOgpB,EAAQ,oBAC/BA,aAAkBtwC,EAAAA,GAAUswC,EAAOi2C,cAAc,GAG5D,CACEnwE,MAAO,+BACPoD,UAAW,KACT,MAAM82B,GAASxwC,EAAAA,EAAAA,IAAU,QACzB,SAAKwwC,IAAWpsC,OAAOojB,OAAOgpB,EAAQ,uBAC/BA,aAAkBtwC,EAAAA,GAAUswC,EAAOrwC,iBAAiB,GAG/D,CACEmW,MAAO,8CACPoD,UAAW,IACFtZ,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,WAGpC,CACE6V,MAAQ,sCAAqC7V,EAAAA,YAAAA,WAC7CiZ,UAAW,IACFs1G,EAAe3qH,EAAAA,EAAS5D,EAAAA,YAAAA,YAGnC,CACE6V,MAAO,iDACPoD,UAAW,IACFtZ,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,UAGpC,CACE6V,MAAQ,sCAAqC7V,EAAAA,YAAAA,UAC7CiZ,UAAW,IACFs1G,EAAe3qH,EAAAA,EAAS5D,EAAAA,YAAAA,WAGnC,CACE6V,MAAO,uCACPoD,UAAW,IACFtZ,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,eAGpC,CACE6V,MAAQ,sCAAqC7V,EAAAA,YAAAA,eAC7CiZ,UAAW,IACFs1G,EAAe3qH,EAAAA,EAAS5D,EAAAA,YAAAA,gBAGnC,CACE6V,MAAO,+CACPoD,UAAW,IACFtZ,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,aAGpC,CACE6V,MAAQ,sCAAqC7V,EAAAA,YAAAA,aAC7CiZ,UAAW,IACFs1G,EAAe3qH,EAAAA,EAAS5D,EAAAA,YAAAA,cAGnC,CACE6V,MAAO,sBACPoD,UAAW,IAEFtZ,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,WAGpC,CACE6V,MAAQ,yCAAwC7V,EAAAA,YAAAA,WAChDiZ,UAAW,IACFtZ,EAAAA,GAAAA,cAAAA,MAA2BsS,GAAoB,gBAAZA,EAAI/Q,QAGlD,CACE2U,MAAO,gDACPoD,UAAW,KACF,mGCtFN,SAASy1G,IACd,MAAMlzG,EAVR,SAA0BmzG,GACxB,IAAInzG,GAAK,EACT,IAAK,IAAIhb,EAAI,EAAGA,EAAImuH,EAAWhwH,OAAQ6B,IACjCmuH,EAAWnuH,GAAGyY,cAAauC,EAAIhb,GAGrC,OAAOgb,CACT,CAGYozG,CAAiBH,EAAAA,GACrBE,EAAaF,EAAAA,EAAAA,KAAe,CAACI,EAAsBruH,KACvD,GAAIA,GAAKgb,EAAI,EACX,OACE,gBAAC,IAAU,CAACvc,IAAKuB,GAAG,IAChBquH,EAAU51G,YAAc,IAAM,IAAI,KAAG41G,EAAUh5G,MAGvD,IAEF,OACE,gCACE,gBAAC,IAAU,CAAC/Z,QAAQ,MAAK,cACzB,gBAAC,IAAG,CAAC6Z,GAAI,GACP,gBAAC,IAAU,KAAC,+IAIZ,2BAEA,gBAAC,IAAU,KAAC,yBACXg5G,GAIT,mFCnBA,MAAMG,EAKJC,OAAc,CAAC,EAEft/G,YAAYu/G,EAAkBC,EAASC,EAAgBC,GACrDx/G,KAAKs/G,GAAKA,EACVt/G,KAAKq/G,GAAKA,EACVr/G,KAAKu/G,KAAOA,EACZv/G,KAAKw/G,eAAiBA,EACtBxrH,OAAO4wE,OAAO5kE,KAAKo/G,OAAQI,EAC7B,CAEA1iH,IAAI2iH,EAAmBnwH,GACrB,OAAOowH,QAAQ5iH,IAAIkD,KAAKs/G,GAAIhwH,IAAQowH,QAAQ5iH,IAAIkD,KAAKw/G,eAAgBlwH,EACvE,CAEAqwH,QAAQF,GACN,MAAO,IAAIC,QAAQC,QAAQ3/G,KAAKs/G,OAAQI,QAAQC,QAAQ3/G,KAAKw/G,gBAC/D,CAEAI,yBAAyBH,EAAmBnwH,GAC1C,GAAK0Q,KAAKlD,IAAI2iH,EAAUnwH,GACxB,OAAI0E,OAAOojB,OAAOpX,KAAKo/G,OAAQ9vH,IAC/B0Q,KAAKxC,IAAIiiH,EAAUnwH,EAAK0Q,MADoBhM,OAAO4rH,yBAAyB5/G,KAAKo/G,OAAQ9vH,EAG3F,CAEAyZ,eAAe02G,EAAmBI,EAAgBC,GAChD,MAAM,IAAIC,UAAU,mCACtB,CAEAnkH,IAAI6jH,EAAmBI,EAAgBC,GAErC,MAAM,IAAIC,UAAU,mCACtB,CAEAviH,IAAIiiH,EAAmBnwH,EAAyB0wH,GAC9C,MAAMC,EAAOjgH,KAAKo/G,OAAO9vH,GACzB,GAAI2wH,EAAM,OAAOA,EAEjB,MAAMC,EAAalsH,OAAO4rH,yBAAyB5/G,KAAKs/G,GAAIhwH,GAC5D,IAAK4wH,EAAY,OAAOA,EACxB,MAAM1P,EAAQ0P,EAAWzjH,MAEzB,GAAqB,mBAAV+zG,EAAsB,CAC/B,MAAM2P,EAAY,IAAIngH,KAAKu/G,KAAMjwH,GAC3B8wH,EAAeD,EAAU7iH,KAAK,KAC9B+iH,EAAM,CAAEh2F,aAAcrqB,KAAKq/G,GAAIiB,SAAUhxH,EAAK8wH,gBAG9CG,EAAY/P,EAAM6P,GAClBG,EAAkB,WAItB,OAFAC,EAAAA,GAAAA,cAAsBJ,GACtBI,EAAAA,GAAAA,iBAAyBJ,GAAKK,EAAAA,EAAAA,IAAWP,IAClCI,KAAQ,UACjB,EAEA,OADAvsH,OAAO+U,eAAe/I,KAAKo/G,OAAQ9vH,EAAK,IAAK4wH,EAAYzjH,MAAO+jH,IACzDA,CACT,CACA,GAAqB,iBAAVhQ,EACT,OAASxwG,KAAKo/G,OAAO9vH,GAAsCqxH,EACzD3gH,KAAKq/G,GACL7O,EACA,IAAIxwG,KAAKu/G,KAAMjwH,IAInB,MADAmU,QAAQgd,KAAM,sCAAsC,QAASzgB,KAAKu/G,KAAM,OAAQjwH,EAAK,SAAUkhH,GACzF,IAAIp/F,MAAM,mDAClB,EAGK,SAASuvG,EACdtB,EACAC,EACAC,GAEK,IADLC,EAA0C,UAAH,6CAAG,CAAC,EAE3C,MAAMoB,EAAU,IAAIzB,EAAeE,EAAIC,EAAIC,EAAMC,GAGjD,OAAO,IAAIqB,MAAM,CAAC,EAAGD,EACvB,CAWO,SAASE,EAAoBC,EAAaC,GAC/C,IAAK,MAAO1xH,GAAK,QAAEmwF,EAAO,YAAEwhC,EAAW,WAAEC,MAAiBltH,OAAO2H,QAAQqlH,GACvEhtH,OAAO+U,eAAeg4G,EAAKzxH,EAAK,CAC9BmN,MAAQ4jH,GAA0B,KAChC,MAAMI,EAAAA,GAAAA,oBACJJ,EACC,uBAAsB5gC,MAAYyhC,EAAaD,EAAe,cAAaA,eAC5E,mBACD,EAEHE,cAAc,EACdC,YAAY,GAGlB,gDC/HO,MAAMC,EAEXC,UAAW,EAGXC,UAAY,GAGZC,KAAsB,8YC2BjB,MAAMf,EAAU,CACrBgB,SACAz0G,SACA00G,kBACAC,aACAC,aACAC,aAuKF,SAAsBxB,EAAuByB,GAC3C,MAAMrrF,EAA+B,CAAEsrF,WAAY,OAA6BH,EAAWvB,EAAKyB,IAChG,GAA8B,iBAAnBA,IAAgCA,EAAgB,OAAOrrF,EAElE,MAAM,WAAEsrF,GAAeD,EAEvB,YADmBthH,IAAfuhH,IAA0BtrF,EAAOsrF,WAAaL,EAAgBrB,EAAK,iBAAkB0B,IAClFtrF,CACT,EA7KEurF,aAgLF,SAAsB5hG,GAEpB,OAAOA,EAAK/pB,QAAO,CAACk3G,EAAK0U,KACvB,GAAY,OAARA,EACF,OAAQ1U,EAAO,OAEjB,QAAY/sG,IAARyhH,EACF,OAAQ1U,EAAO,YAEjB,MAAM2U,GAAYC,EAAAA,EAAAA,GAASF,GAI3B,OAAIC,aAAqBhnH,KAAO,IAAIgnH,GAAWlzH,OAMrCu+G,EAAQ,UALK,IAAI2U,GACtBn0H,KAAKf,GACI,GAAEA,EAAE,SAASA,EAAE,OAExBsQ,KAAK,UAIN4kH,aAAqBlqF,IACfu1E,EAAQ,UAAS,IAAI2U,GAAW5kH,KAAK,UAEtB,iBAAd4kH,EACD3U,EAAO/xG,KAAK4mH,UAAUF,GAGxB3U,EAAQ,GAAE2U,GAAW,GAC5B,GACL,EA9MEG,oBACAC,sBACAC,iCAkRF,SAA0ClC,EAAuBmC,GAC/D,MAAMt6C,EAAUm4C,EAAIh2F,aAAao4F,UAAUv6C,QAC3C,IAAKs6C,EACH,OAAOp6G,MAAM8/D,IAAYA,EAAU,EAAI,EAAIA,EAE7C,MAAMw6C,EAA2C,EAAnBF,EAC9B,GAAIp6G,MAAMo6G,IAAqBE,EAAwB,EACrD,MAAMJ,EAAoBjC,EAAM,yBAAwBmC,yCAE1D,GAAIE,EAAwBx6C,EAC1B,MAAMo6C,EACJjC,EACC,iCAAgCA,EAAIC,wBAAwBkC,WAA0Bt6C,MAG3F,OAAOw6C,CACT,EAjSEC,cAgTF,SAAuBtC,GACrB,MAAMhB,EAAKgB,EAAIh2F,aACf,GAAIg1F,EAAGuD,IAAItB,SAET,MADA3iG,EAAI0hG,GAAK,IAAM,8CACT,IAAIwC,EAAAA,EAAYxD,GAExB,GAAIA,EAAGuD,IAAIrB,WAA8B,WAAjBlB,EAAIC,SAAuB,CACjD3hG,EAAI0hG,GAAK,IAAM,mDACf,MAAMjpD,EAAMkrD,EACVjC,EACC,sLAGoBhB,EAAGuD,IAAIrB,2BAA2BlB,EAAIC,WAC3D,eAGF,MADAwC,EAAAA,EAAAA,GAAiBzD,GACXjoD,CACR,CACF,EAlUE2rD,uBAmSF,SAAgC1C,GAC9B,GAAwB,IAApBrwH,EAAAA,GAAAA,UAAqD,IAA5BA,EAAAA,GAAAA,cAAqB,GAChD,MAAMsyH,EACJjC,EACC,mKAED,aAGN,EA3SE2C,eAoUF,SAAwB3C,EAAuBx9F,GAC7C,MAAMw8F,EAAKgB,EAAIh2F,aACf,OAAO,IAAIkY,SAAQ,SAAUC,EAASygF,GACpC5D,EAAG6D,MAAQxkH,OAAO68B,YAAW,KAC3B8jF,EAAG6D,MAAQ,KACX7D,EAAG8D,iBAAc3iH,EACjB6+G,EAAGuD,IAAIrB,UAAY,GACflC,EAAGuD,IAAItB,SAAU2B,EAAO,IAAIJ,EAAAA,EAAYxD,IACvC78E,GAAS,GACb3f,GACHw8F,EAAG8D,YAAcF,EACjB5D,EAAGuD,IAAIrB,UAAYlB,EAAIC,QACzB,GACF,EAhVE8C,iBAmVF,SAA0B/C,EAAuBgD,GAC/C,MAAMhE,EAAKgB,EAAIh2F,aACTizE,EAAS+iB,EAAIC,SACnB,IAAIjB,EAAGiE,iBAAiBhmB,KACxB+hB,EAAGiE,iBAAiBhmB,IAAU,EAE9B+hB,EAAGkE,gBAAkBjvH,KAAK6c,IAAIkuG,EAAGkE,gBAAkBF,EAASG,EAAAA,GAAAA,KAGxDnE,EAAGkE,gBAAkB,iBAAmBlE,EAAGoD,UAAUpvH,UAAU,CACjEsrB,EAAI0hG,GAAK,IAAM,uCACf,MAAMjpD,EAAMkrD,EACVjC,EACC,0KAGUhB,EAAGoD,UAAUv6C,sCACHgiB,EAAAA,EAAAA,IAAUm1B,EAAGkE,uDAChBr5B,EAAAA,EAAAA,IAAUm1B,EAAGoD,UAAUpvH,sVAYzC,aAGF,MADAyvH,EAAAA,EAAAA,GAAiBzD,GACXjoD,CACR,CACF,EArXEqsD,YACAC,iBAsXF,SACErD,EACAsD,EACAC,EACAC,GAEA,MAAMxE,EAAKgB,EAAIh2F,aAEf,QAAiB7pB,IAAbmjH,EAAwB,OAAOtE,EAAGyE,IACtC,GAAwB,iBAAbH,EAAuB,OAAOA,EACzC,GAAwB,iBAAbA,EAGT,MAAO,CACLI,WAAYJ,EACZxiF,cAJ6B3gC,IAAdojH,EAA0BvD,EAAIh2F,aAAa8W,SAAWsgF,EAAOpB,EAAK,WAAYuD,GAK7FxjG,UAJqB5f,IAAVqjH,EAAsB,GAAKlC,EAAWtB,EAAKwD,IAO1D,MAAMvB,EAAoBjC,EAAK,gEAAiE,OAClG,EAzYE/qH,KAgaF,SACE+qH,EACAl/E,EACA6iF,GAEiB,IADf97C,QAASs6C,EAAgB,MAAE/pC,EAAOwrC,eAAgBC,GAAkC,UAAH,6CAAG,CAAC,EAEvF,MAAM7E,EAAKgB,EAAIh2F,aACT69C,EAAUu4C,EAAQ8B,iCAAiClC,EAAKmC,GACxDyB,EAAiBj3G,EAAOqzG,EAAK,sBAAuB6D,GAAgB,GAC1E,GAAID,EAAiB,EACnB,MAAM3B,EAAoBjC,EAAM,4CAA2C4D,KAE7E,MAAM7jF,EAASqjF,EAAUpD,EAAKl/E,GAC9B,KAAMf,aAAkBtwC,EAAAA,GACtB,MAAMwyH,EAAoBjC,EAAK,sCAKjC,MAAM8D,GAAclnB,EAAAA,EAAAA,IAAqB78D,EAAQpwC,EAAAA,IAAUi0H,EAAiB,IAGtEG,GAAU7mB,EAAAA,EAAAA,IAAiBn9D,GACjC,IAAKgkF,EAAQv6F,IACX,MAAMy4F,EAAoBjC,EAAK+D,EAAQ16F,KAAO,IAYhD,OATA/K,EACE0hG,GACA,IACG,iBAAgBjgF,EAAOe,iBAAgBzQ,EAAAA,EAAAA,IACxB,IAAdyzF,GACA,UACME,EAAAA,EAAAA,IAAcn8C,QAGnBu4C,EAAQuC,eAAe3C,EAAmB,IAAd8D,GAAoBplC,MAAK,WAC1D,MAAMulC,GAAa1nB,EAAAA,EAAAA,IAAuBx8D,EAAQpwC,EAAAA,IAC5CoyB,EAAO9tB,KAAK4Q,SAClB,IAAIq/G,GAAqBznB,EAAAA,EAAAA,IAAwB18D,EAAQpwC,EAAAA,IAAUk4E,EACnE,MAAMs8C,EAAqBD,EAAqB,EAChD,GAAIniG,EAAOkiG,EAAY,CAErB,MAAMG,GAAgB1nB,EAAAA,EAAAA,IAA4B38D,EAAQpwC,EAAAA,IAC1D,IAAI00H,EAAkBpwH,KAAKmkB,KAAK,EAAIgsG,GAChCr8G,MAAMs8G,KAERA,EAAkB,KAGpB,IAAIC,EAAevkF,EAAO3tC,eAAiBgyH,EAAgBv8C,EAGvDy8C,GAAgB,IAClBA,EAAe,EACfJ,EAAqBC,GAEnBG,EAAevkF,EAAO3tC,iBACxBkyH,EAAevkF,EAAO3tC,gBAExB2tC,EAAO3tC,gBAAkBkyH,EACrBvkF,EAAO3tC,eAAiB,IAC1B2tC,EAAO3tC,eAAiB,GAG1B,IAAImyH,EAAcD,EAAenwH,EAAAA,GAAAA,oBA6BjC,OA5BIwvH,IACFY,EAAcD,EAAenwH,EAAAA,GAAAA,iBAG/BxE,EAAAA,GAAAA,UAAiB40H,EAAa,WAC9BvF,EAAGoD,UAAUoC,iBAAmBD,EAChC50H,EAAAA,GAAAA,wBAAiC40H,EACjCvF,EAAGoD,UAAUqC,WAAW1kF,EAAOe,SAAUyjF,EAAa18C,GACtDl4E,EAAAA,GAAAA,eAAsBu0H,GAClBP,GAAQh0H,EAAAA,GAAAA,oBAA2B,MACvCqvH,EAAGoD,UAAUsC,iBAAmBR,EAChC5lG,EACE0hG,GACA,IACG,wBAAuBjgF,EAAOe,kBAAiBr2B,EAAAA,EAAAA,IAAY85G,WAAoBp9F,EAAAA,EAAAA,IAC9E+8F,cACUF,EAAAA,EAAAA,IAAcn8C,QAE9B9nC,EAAO4kF,QAAQpyH,EAAAA,EAAAA,oBAAgC0B,KAAK6c,IAAI+2D,EAASw8C,IAC7DjsC,IACFwsC,EAAAA,EAAAA,IAAgC7kF,EAAQukF,GAEtCX,IACF5jF,EAAOrwC,mBAAoB,EAE3BqgF,EAAAA,EAAAA,SAAAA,wBAA0C,EAC1CA,EAAAA,EAAAA,iBAEKw0C,CACT,CAWE,OATA50H,EAAAA,GAAAA,eAAsBw0H,GACtBnF,EAAGoD,UAAUsC,iBAAmBP,EAChC7lG,EACE0hG,GACA,IACG,mBAAkBjgF,EAAOe,sBAAqB3Z,EAAAA,EAAAA,IAAUg9F,cAA8BH,EAAAA,EAAAA,IACrFn8C,QAGC,CAEX,GACF,EA5gBEg9C,WA8gBF,SAAoB7E,EAAuB8E,GACzC,MAAMt5G,EAAI61G,EAAgBrB,EAAK,aAAc8E,GAC7C,GAAIt5G,EAAIjZ,EAAAA,EAAAA,kBACN,MAAM0vH,EACJjC,EACC,kCAAiCx0G,+BAA+BjZ,EAAAA,EAAAA,sBAGrE,OAAOiZ,CACT,EAthBE6L,OAwhBF,SAAgB2oG,EAAuBltH,GACrC,MAMMuQ,EAAQ0hH,EANK,CACjBhgG,QAAI5kB,EACJ7H,SAAK6H,EACLb,WAAOa,EACPsY,UAAMtY,GAE6BrN,GACrC,GAAIuQ,EAAO,MAAM4+G,EAAoBjC,EAAM,+BAA8B38G,IAAS,QAClF,OAAOvQ,CACT,EAjiBEitC,OAmiBF,SAAgBigF,EAAuBvuH,GACrC,MAgBM4R,EAAQ0hH,EAhBK,CACjBjkF,cAAU3gC,EACVu/F,QAAIv/F,EACJ81E,iBAAa91E,EACb+1E,iBAAa/1E,EACbg2E,kBAAch2E,EACdi2E,kBAAcj2E,EACdk2E,iBAAal2E,EACb61E,oBAAgB71E,EAChB1N,cAAU0N,EACV6kH,mBAAe7kH,EACfohG,aAASphG,EACT7N,YAAQ6N,EACR8kH,sBAAkB9kH,EAClB0gC,uBAAmB1gC,GAEgB1O,GACrC,GAAI4R,EAAO,MAAM4+G,EAAoBjC,EAAM,+BAA8B38G,IAAS,QAClF,OAAO5R,CACT,EAtjBEkjG,KAkkBF,SAAcqrB,EAAuBhvB,GACnC,MAAM3tF,EAAQ0hH,EAAW,CAAEr2B,QAAS,EAAG35F,UAAW,EAAG6/F,YAAa,GAAK5D,GACvE,GAAI3tF,EAAO,MAAM4+G,EAAoBjC,EAAM,2BAA0B38G,IAAS,QAC9E,OAAO2tF,CACT,EArkBEk0B,WAukBF,SAAoBlF,EAAuBrzH,GACzC,MAAM0W,EAAQ0hH,EAAW,IAAI7yB,EAAAA,EAAcvlG,GAC3C,GAAI0W,EAAO,MAAM4+G,EAAoBjC,EAAM,mCAAkC38G,IAAS,QACtF,OAAO1W,CACT,EA1kBEw4H,SA4kBF,SAAkBnF,EAAuB9jF,GACvC,MAAM74B,EAAQ0hH,EAAW,IAAItwB,EAAAA,EAAe,GAAI,IAAI,GAAO,EAAO,CAAEO,WAAY,MAAQ94D,GACxF,GAAI74B,EAAO,MAAM4+G,EAAoBjC,EAAM,qCAAoC38G,IAAS,QACxF,OAAO64B,CACT,EA/kBE5d,MACA8mG,WACA17B,aACA27B,iBAyoBF,SAA0BrF,EAAuBsF,GAC/C,GAAqB,iBAAVA,EACT,OAVJ,SAA+B7B,GAC7B,IAAK,MAAM1jF,KAAU7tC,EAAAA,EAAAA,MAAiB,CACpC,MAAMqzH,GAAgBC,EAAAA,EAAAA,IAAuB/B,EAAK1jF,GAClD,GAAIwlF,EAAe,OAAOA,CAC5B,CACA,OAAO,IACT,CAIWE,CAAsBH,GACxB,CACL,MAAMh0H,EAAUo0H,EAAwB1F,EAAKsF,EAAM5B,WAAY4B,EAAMxkF,SAAUwkF,EAAMvlG,MACrF,OAAgB,OAAZzuB,EAAyB,KACtBA,EAAQC,SAASgiE,OAAOn3D,KACjC,CACF,EAhpBEspH,0BACAC,uCAupBF,SAAgDL,GAC9C,MAAqB,iBAAVA,EAA4B,wCAAuCA,IAEtE,8BAA6BA,EAAM5B,wBAAwB4B,EAAMxkF,wBAAuB8kF,EAAAA,EAAAA,GAC9FN,EAAMvlG,OAEV,EA5pBE8lG,0BAsqBF,SAAmCN,GACjC,MAAMO,EAAWP,EAAcQ,UAC/B,MAAO,CACLhmG,KAAMwlG,EAAcxlG,KAAKjG,QACzBpoB,SAAU6zH,EAAc7zH,SACxBs0H,KAAMT,EAAcS,KAAKt4H,KAAK4S,GAAM,GAAKA,IACzC2lH,iBAAkBV,EAAcU,iBAChCC,iBAAkBX,EAAcW,iBAChCC,mBAAoBZ,EAAcY,mBAClCzB,gBAAiBa,EAAcb,gBAC/BF,gBAAiBe,EAAcf,gBAC/B4B,kBAAmBb,EAAca,kBACjC3C,IAAK8B,EAAc9B,IACnBzwH,SAAUuyH,EAAcvyH,SACxB+sC,OAAQwlF,EAAcxlF,OACtBsmF,eACGP,GAAaA,EAASQ,YAEnB,CACEhmH,EAAGwlH,EAASxlH,EACZ+iE,EAAGyiD,EAASziD,EACZ52E,MAAOq5H,EAASr5H,MAChBC,OAAQo5H,EAASp5H,QALnB,KAONmZ,MAAO0/G,EAAc1/G,MACrBgiE,QAAS09C,EAAc19C,QACvB0+C,UAAWhB,EAAcgB,UAE7B,EAjsBEC,oBA0sBF,SAA6BxG,EAAuBjgF,GAClD,OAAIA,aAAkB7oC,EAAAA,IACpBonB,EAAI0hG,GAAK,IAAO,sCACT,EAIX,GAlsBO,SAASyG,EAAazG,EAAuB0G,EAAiB9qF,GACnE,GAAiB,iBAANA,EACT,MAAMqmF,EAAoBjC,EAAM,GAAE0G,8BAAoCC,EAAU/qF,KAAM,OAC1F,CAIO,SAASgrF,EACd5G,EACA9uH,EACA21H,EACAC,GAEA,GAAmB,iBAARD,GAA4B,OAARA,EAC7B,MAAM5E,EACJjC,EACC,QAAe,OAAR6G,EAAe,cAAgBA,kBAAoB31H,wBAC3D,QAGJ,IAAK,MAAOjC,EAAK+xB,KAAQrtB,OAAO2H,QAAQwrH,GAAgB,CACtD,IAAKnzH,OAAOojB,OAAO8vG,EAAK53H,GACtB,MAAMgzH,EACJjC,EACC,gCAA+B9uH,kCAAqCjC,KACrE,QAGJ,MAAM83H,EAAUF,EAAgC53H,GAChD,UAAW+xB,UAAe+lG,EACxB,MAAM9E,EACJjC,EACC,yBAAwB+G,2BAAgC93H,QAAUiC,qCAAwC8vB,KAC3G,OAGN,CACF,CAEA,MAeM2lG,EAAa/qF,GACP,OAANA,EAAoB,gBACdz7B,IAANy7B,EAAwB,gBACX,mBAANA,EAAyB,iBAC5B,sBAAqBA,cAnBHA,KAC1B,MAAMorF,EAAQv1H,GACRA,EAAE9C,OAAS,GAAW8C,EAAEqoB,MAAM,EAAG,IAAM,MACpCroB,EAET,GAAiB,iBAANmqC,EAAgB,OAAOroB,OAAOqoB,GACzC,GAAiB,iBAANA,EACT,MAAU,KAANA,EAAiB,eACb,IAAGorF,EAAKprF,MAElB,MAAMqrF,EAAO9rH,KAAK4mH,UAAUnmF,GAC5B,OAAKqrF,EACG,IAAGD,EAAKC,MADE,KACM,EAOmBC,CAAmBtrF,KAIhE,SAASwlF,EAAOpB,EAAuB0G,EAAiB9qF,GAGtD,MAFiB,iBAANA,IAAgBA,GAAQ,IACnC6qF,EAAazG,EAAK0G,EAAS9qF,GACpBA,CACT,CAGA,SAASjvB,EAAOqzG,EAAuB0G,EAAiB9qF,GACtD,GAAiB,iBAANA,EAAgB,CACzB,MAAMt7B,EAAI4gB,WAAW0a,GACrB,IAAK7zB,MAAMzH,GAAI,OAAOA,CACxB,MAAO,GAAiB,iBAANs7B,EAAgB,CAChC,GAAI7zB,MAAM6zB,GAAI,MAAMqmF,EAAoBjC,EAAM,IAAG0G,cACjD,OAAO9qF,CACT,CACA,MAAMqmF,EAAoBjC,EAAM,IAAG0G,0BAAgCC,EAAU/qF,KAAM,OACrF,CAGA,SAASylF,EAAgBrB,EAAuB0G,EAAiB9qF,GAC/D,MAAMpwB,EAAImB,EAAOqzG,EAAK0G,EAAS9qF,GAC/B,KAAK2gB,EAAAA,EAAAA,GAAkB/wC,GACrB,MAAMy2G,EAAoBjC,EAAM,GAAE0G,uCAA6Cl7G,IAAK,QAEtF,OAAOA,CACT,CAGA,SAAS81G,EAAWtB,EAAuBjgG,GACzC,IAmSF,SAAsBA,GAEpB,OAAOw1B,MAAMyK,QAAQjgC,IAASA,EAAKwe,OADdqjF,GAAgC,iBAARA,GAAmC,iBAARA,GAAmC,kBAARA,GAErG,CAtSOuF,CAAapnG,GAAO,MAAMkiG,EAAoBjC,EAAK,wCAAyC,QACjG,OAAOjgG,CACT,CAEA,SAASwhG,EAAWvB,EAAuByB,GACzC,MAAMrrF,EAA6B,CACjCyxC,QAAS,EACT0+C,WAAW,EACXa,mBAAmB,GAErB,SAASC,EAAax/C,EAAkB6+C,GAClC7+C,UACFzxC,EAAOyxC,QAAUw5C,EAAgBrB,EAAK0G,EAAS7+C,GAEnD,CACA,GAA8B,iBAAnB45C,GAAkD,OAAnBA,EAExC,OADA4F,EAAa5F,EAAgB,WACtBrrF,EAGT,MAAMwzE,EAAU6X,EAIhB,GAHA4F,EAAazd,EAAQ/hC,QAAS,sBAC9BzxC,EAAOmwF,YAAc3c,EAAQ2c,UAC7BnwF,EAAOgxF,oBAAsBxd,EAAQwd,uBACTjnH,IAAxBypG,EAAQ0d,aAAqD,OAAxB1d,EAAQ0d,cAC/ClxF,EAAOkxF,YAAc36G,EAAOqzG,EAAK,yBAA0BpW,EAAQ0d,aAC/DlxF,EAAOkxF,YAAcnE,EAAAA,GAAAA,MACvB,MAAMlB,EACJjC,EACC,+CAA8CmD,EAAAA,GAAAA,cAA+B/sF,EAAOkxF,eAI3F,OAAOlxF,CACT,CA8CA,SAAS4rF,EAAkBhD,EAAgC31F,GAAuC,IAA1BlzB,EAAO,UAAH,6CAAG,UAC7E,GAAI6oH,aAAcuI,EAAAA,EAChB,IAAK,MAAOC,EAAW/qC,KAAWuiC,EAAGoD,UAAUqF,aAC7Cp+F,EAAMA,EAAIj5B,QAAQ,IAAIs3H,OAAOF,EAAW,KAAM/qC,EAAO/qF,UAGzD,MAAQ,GAAEyE,YAAe6oH,EAAG9tH,QAAQ8tH,EAAGl+E,mBAAmBk+E,EAAGyE,WAAWp6F,GAC1E,CAGA,SAAS44F,EAAoBjC,EAAuB32F,GAAuC,IAA1BlzB,EAAO,UAAH,6CAAG,UACtE,MAAMwxH,GAAW,IAAI52G,OAAQ62G,MAC7B,QAAiBznH,IAAbwnH,EAAwB,MAAM,IAAI52G,MAAM,kCAC5C,MAAM62G,EAAQD,EAAS3qH,MAAM,MAAM8c,MAAM,GACnCklG,EAAKgB,EAAIh2F,aACT69F,EAAS7H,EAAID,aACb+H,EAAY,GAClB,IAAK,MAAMC,KAAaH,EAAO,CAC7B,MAAMl2H,EAAW,MAEf,IAAK,MAAOwqF,EAAKO,KAAWuiC,EAAGoD,UAAUqF,aAAc,GAAIM,EAAUv5H,SAAS0tF,GAAM,OAAOO,EAAO/qF,SAElG,GAAIq2H,EAAUv5H,SAASwwH,EAAGoD,UAAU1wH,UAAW,OAAOstH,EAAGoD,UAAU1wH,SACnE,IAAK,MAAM+qF,KAAUuiC,EAAGoD,UAAUqF,aAAal2H,SAC7C,GAAIw2H,EAAUv5H,SAASiuF,EAAO/qF,UAAW,OAAO+qF,EAAO/qF,QAE1D,EARgB,GASjB,IAAKA,EAAU,SAEf,IAAIs2H,EAAO,CAAErnG,KAAM,KAAMu/F,KAAM,WAC/B,MAAM+H,EAAaC,EAAqBH,GACpCE,IACFD,EAAOC,GAGT,MAAME,EAAcC,EAAsBL,GACtCI,IACFH,EAAOG,GAGTL,EAAUpqH,KAAM,GAAEhM,MAAas2H,EAAKrnG,QAAQqnG,EAAK9H,OACnD,CAEA5hG,EAAI0hG,GAAK,IAAM32F,IACf,IAAIg/F,EAAa,GAAER,MAAWx+F,IAE9B,OADyB,IAArBy+F,EAAUn5H,SAAc05H,GAAc,eAAcP,EAAU7qH,KAAK,SAChE+kH,EAAkBhD,EAAIqJ,EAAWlyH,GAMxC,SAAS+xH,EAAqBvnG,GAC5B,MAAM2nG,EAAY3nG,EAAK3kB,MAAM,kBACvBusH,EAAY5nG,EAAK3kB,MAAM,kBAC7B,OAAIssH,GAAaC,EAAkB,CAAE5nG,KAAM2nG,EAAU,GAAIpI,KAAMqI,EAAU,IAClE,IACT,CACA,SAASH,EAAsBznG,GAC7B,MAAM2nG,EAAY3nG,EAAK3kB,MAAM,iBACvBwsH,EAAM7nG,EAAK8nG,YAAY,KAC7B,OAAIH,IAAsB,IAATE,EAAmB,CAAE7nG,KAAM2nG,EAAU,GAAIpI,KAAMv/F,EAAK7G,MAAM,EAAG0uG,IACvE,IACT,CACF,CA0IA,SAASpF,EAAUpD,EAAuBl/E,GACxC,MAAMf,GAASxwC,EAAAA,EAAAA,IAAUuxC,GACzB,GAAc,MAAVf,EAEF,MAAMkiF,EAAoBjC,EAAM,sBADP,KAAbl/E,EAAkB,oBAAsB,IAAMA,EAAW,MAGvE,OAAOf,CACT,CAmKA,SAASglF,EAAW2D,EAAgBC,GAClC,GAAsB,iBAAXA,GAAkC,OAAXA,EAChC,MAAQ,iCAA2C,OAAXA,EAAkB,cAAgBA,KAE5E,IAAK,MAAM15H,KAAOy5H,EAChB,KAAMz5H,KAAO05H,GAAS,MAAQ,YAAW15H,kCAE3C,OAAO,CACT,CAoBA,SAASqvB,EAAI0hG,EAAuBxoD,GAClCwoD,EAAIh2F,aAAa1L,IAAI0hG,EAAID,aAAcvoD,EACzC,CAEO,SAAS4tD,EAASpF,EAAuB0G,EAAiBh1H,GAC/D+0H,EAAazG,EAAK0G,EAASh1H,GAC3B,MAAMgwC,GAAOu6C,EAAAA,EAAAA,IAAgBvqF,EAAUsuH,EAAIh2F,aAAa94B,MACxD,GAAIwwC,EAAM,OAAOA,EACjB,MAAMugF,EAAoBjC,EAAM,WAAU0G,4BAAkCh1H,IAC9E,CAEO,SAASg4F,EAAWs2B,EAAuB0G,EAAiBh1H,GACjE,MAAMgwC,EAAO0jF,EAASpF,EAAK0G,EAASh1H,GACpC,IAAImrF,EAAAA,EAAAA,IAAmBn7C,GAAO,OAAOA,EACrC,MAAMugF,EAAoBjC,EAAM,WAAU0G,wBAA8Bh1H,IAC1E,CAYO,SAASg0H,EACd1F,EACAhgF,EACAc,EACAwgF,GAEA,IAAK/rE,MAAMyK,QAAQshE,GACjB,MAAMlB,EAAQ6B,oBACZjC,EACA,8HAKJ,MAAMt+E,EAAOgoD,EAAWs2B,EAAK,WAAYhgF,GAEzB,MAAZc,IACFA,EAAWk/E,EAAIh2F,aAAa8W,UAE9B,MAAMf,EAASqgF,EAAQgD,UAAUpD,EAAKl/E,GAEtC,OAAO8nF,EAAAA,EAAAA,IAAmBlnF,EAAM4/E,EAAYvhF,EAC9C,CAyFO,SAAS8oF,EAAmB3jH,GAA4E,IAAhE85G,EAAwC,UAAH,6CAAG,KAAM8J,EAAc,UAAH,6CAAG,GACzG,GAAI5jH,aAAas9G,EAAAA,EAAa,CAE5B,GAAuB,KAAnBt9G,EAAE6jH,aAAqB,OACtB/J,IACHA,EAAK95G,EACLA,EAAI85G,EAAG+J,aAEX,CACA,GAAI/J,GAAmB,iBAAN95G,EAAgB,CAC/B,MAAM8jH,EAAahH,EAAkBhD,EAAI,GAAI,IACxC95G,EAAE1W,SAASw6H,KAAa9jH,EAAI88G,EAAkBhD,EAAI95G,GACzD,MAAO,GAAIA,aAAa+jH,YAAa,CACnC,MAAM5/F,EAAO,GAAEnkB,EAAEsyD,2CACjBtyD,EAAI85G,EAAKgD,EAAkBhD,EAAI31F,EAAK,UAAa,oBAAmBA,GACtE,MAAO,GAAInkB,aAAa6L,MAAO,CAE7B,GAAe,aAAX7L,EAAEhU,MAAqC,aAAdgU,EAAEsyD,QAAwB,OACvD,MAAMnuC,EAAO,GAAEnkB,EAAEsyD,UAAUtyD,EAAE0iH,MAAS,aAAY1iH,EAAE0iH,MAAMtzG,aAAe,KACzEpP,EAAI85G,EAAKgD,EAAkBhD,EAAI31F,GAAQ,qBAAoBA,GAC7D,CACA,GAAiB,iBAANnkB,EAAgB,CACzB9B,QAAQC,MAAM,oBAAqB6B,GACnC,MAAMmkB,EAAO,iKACsDnkB,sBAAsBA,IACzFA,EAAI85G,EAAKgD,EAAkBhD,EAAI31F,EAAK,WAAaA,CACnD,EACApmB,EAAAA,EAAAA,GAAgB6lH,EAAc5jH,EAChC,CAGA,IAAIgkH,EAAmB,EAMhB,SAASC,EAAa/sH,GAC3B,OAAO,gBAAC,IAAc,CAACnN,IAAM,gBAAei6H,KAAuB9sH,EACrE,wECj0BA,IAAIgtH,EAAa,EAGV,SAASC,IACd,IAAIC,EAAcF,EAIdG,GAAQ,EACZ,IAAK,IAAI/4H,EAAI,EAAGA,EAAI,KAAO,CACzB,IAAKwB,EAAAA,EAAAA,IAAkBs3H,EAAc94H,GAAI,CACvC+4H,GAAQ,EACRD,GAA4B94H,EAC5B,KACF,CAEIA,IAAMykB,OAAO+1B,iBAAmB,EAClCx6C,EAAI,IAEFA,CAEN,CAEA,OAAI+4H,GACFH,EAAaE,EAAc,EACvBF,GAAcn0G,OAAO+1B,mBACvBo+E,EAAa,GAGRE,IAEC,CAEZ,CAEO,SAASE,IACdJ,EAAa,CACf,mFC9BO,MAAMjG,EAAmB,CAC9BhxD,KAAM,IACNs3D,IAAK,GACLC,gBAAiB,GACjBC,kBAAmB,GACnBC,IAAK,KACLC,KAAM,GACNC,YAAa,EACbC,KAAM,IACNC,cAAe,EACfC,OAAQ,IACRC,cAAe,EACfC,KAAM,GACNC,cAAe,GACfC,YAAa,IACbC,IAAK,EACLC,KAAM,IACNC,MAAO,EACPC,IAAK,GACLC,KAAM,GACNC,cAAe,IACfC,YAAa,IACbC,gBAAiB,IACjBt7H,UAAW,GACXu7H,gBAAiB,IACjBC,iBAAkB,IAClBC,WAAY,GACZC,UAAW,GACXC,aAAc,EACdC,WAAY,GACZC,SAAU,GACVC,UAAW,GACXC,SAAU,EACVC,aAAc,IACdC,kBAAmB,IACnBC,eAAgB,KAChBC,wBAAyB,IACzBC,yBAA0B,IAC1BC,MAAO,IACPC,UAAW,EACXC,UAAW,EACXC,UAAW,GACXC,iBAAkB,GAClBC,YAAa,IACbC,iBAAkB,GAClBC,mBAAoB,GACpBC,WAAY,EACZC,kBAAmB,GACnBC,oBAAqB,EAErBC,eAAgB,EAChBC,eAAgB,EAChBC,eAAgB,EAEhBC,YAAa,EAEbC,mBAAoB,EAEpBC,YAAa,GACbC,aAAc,GACdC,aAAc,GACdC,0BAA2B,EAC3BC,sBAAuB,EACvBC,YAAa,EACbC,eAAgB,GAChBC,YAAa,EACbC,iBAAkB,EAClBC,eAAgB,IAChBC,gCAAiC,IACjCC,6BAA8B,IAC9BC,yBAA0B,EAC1BC,6BAA8B,GAC9BC,iBAAkB,GAGpB,SAASC,EAAQ1jH,GACf,MAAO,KACL,GAAwB,IAApBta,EAAAA,GAAAA,SAAuB,OAAOsa,EAClC,MAAM2jH,EAAMj+H,EAAAA,GAAAA,cAAqB,GACjC,OAAIi+H,GAAO,EAAiB,GAAP3jH,EACT,IAAR2jH,EAAyB,EAAP3jH,EACfA,CAAI,CAEf,CAGA,MAyBMmuE,EAAQ,CACZy1C,aAAc,EACdC,cAAe,IACfC,gBAAiB,IACjBC,UAAW,IACXC,gBAAiB,IACjBC,WAAY/K,EAAiBmI,SAC7B6C,SAAUhL,EAAiBmI,SAC3B8C,gBAAiBjL,EAAiBmI,SAClC+C,YAAalL,EAAiBmI,SAC9BgD,YAAanL,EAAiBmI,SAC9BiD,YAAapL,EAAiBmI,SAC9BkD,aAAcrL,EAAiBmI,SAC/BmD,gBAAiBtL,EAAiBmI,SAClCoD,YAAavL,EAAiBmI,SAC9BqD,SAAUxL,EAAiBoI,aAC3BqD,UAAWzL,EAAiBoI,aAC5BsD,SAAU1L,EAAiBoI,aAC3BuD,UAAW3L,EAAiBoI,aAC5BwD,WAAY5L,EAAiBoI,aAC7ByD,YAAa7L,EAAiBoI,aAC9B0D,UAAW9L,EAAiBoI,aAC5B2D,cAAe/L,EAAiBoI,aAChC4D,YAAahM,EAAiBoI,aAC9B6D,qBAAsBjM,EAAiBoI,aACvC8D,2BAA4BlM,EAAiBoI,aAC7C+D,mBAAoBnM,EAAiBoI,aACrCgE,eAAgBpM,EAAiBoI,cAI7B39C,EAAc,CAClB4hD,iBAAkB7B,EAAQxK,EAAiBoJ,gBAC3CkD,WAAY9B,EAAQxK,EAAiBoJ,gBACrCmD,aAAc/B,EAAQxK,EAAiBoJ,gBACvCoD,aAAchC,EAAQxK,EAAiBsJ,gBACvCmD,YAAajC,EAAQxK,EAAiBoJ,gBACtCsD,gBAAiBlC,EAAQxK,EAAiBoJ,gBAC1CuD,iBAAkBnC,EAAQxK,EAAiBoJ,gBAC3CwD,uBAAwBpC,EAAQxK,EAAiBoJ,gBACjDyD,oBAAqBrC,EAAQxK,EAAiBoJ,gBAC9C0D,QAAStC,EAAQxK,EAAiBoJ,gBAClC2D,WAAYvC,EAAQxK,EAAiBoJ,gBACrC4D,gBAAiBxC,EAAQxK,EAAiBoJ,gBAC1C6D,sBAAuBzC,EAAQxK,EAAiBoJ,eAAiB,GACjE8D,mBAAoB1C,EAAQxK,EAAiBoJ,eAAiB,GAC9D+D,YAAa3C,EAAQxK,EAAiBoJ,eAAiB,GACvDgE,OAAQ5C,EAAQxK,EAAiBoJ,eAAiB,GAClDiE,WAAY7C,EAAQxK,EAAiBoJ,eAAiB,GACtDkE,eAAgB9C,EAAQxK,EAAiBqJ,gBACzCkE,iBAAkB/C,EAAQxK,EAAiBqJ,gBAC3CmE,sBAAuBhD,EAAQxK,EAAiBqJ,eAAiB,GACjEoE,wBAAyBjD,EAAQxK,EAAiBqJ,eAAiB,GACnEqE,eAAgBlD,EAAQxK,EAAiBqJ,gBACzCsE,eAAgBnD,EAAQxK,EAAiBqJ,gBACzCuE,QAASpD,EAAQxK,EAAiBqJ,gBAClCwE,cAAerD,EAAQxK,EAAiBqJ,eAAiB,GACzDyE,gBAAiBtD,EAAQxK,EAAiBqJ,eAAiB,GAC3D0E,oBAAqBvD,EAAQxK,EAAiBqJ,eAAiB,GAC/D2E,wBAAyBxD,EAAQxK,EAAiBqJ,gBAClDltG,YAAaquG,EAAQxK,EAAiBqJ,gBACtC4E,eAAgBzD,EAAQxK,EAAiBqJ,gBACzC6E,cAAe1D,EAAQxK,EAAiBqJ,eAAiB,GACzD8E,gBAAiB3D,EAAQxK,EAAiBqJ,eAAiB,GAC3D+E,oBAAqB5D,EAAQxK,EAAiBqJ,eAAiB,GAC/DgF,gBAAiB7D,EAAQxK,EAAiBsJ,gBAC1CgF,cAAe9D,EAAQxK,EAAiBsJ,gBACxCiF,YAAa/D,EAAQxK,EAAiBsJ,gBACtCkF,eAAgBhE,EAAQxK,EAAiBsJ,gBACzCmF,cAAejE,EAAQxK,EAAiBsJ,gBACxCoF,sBAAuBlE,EAAQxK,EAAiBsJ,gBAChDqF,oBAAqBnE,EAAQxK,EAAiBsJ,gBAC9CsF,wBAAyBpE,EAAQxK,EAAiBsJ,gBAClDuF,4BAA6BrE,EAAQxK,EAAiBsJ,gBACtDwF,sBAAuBtE,EAAQxK,EAAiBsJ,gBAChDyF,qBAAsBvE,EAAQxK,EAAiBsJ,eAAiB,GAChE0F,yBAA0BxE,EAAQxK,EAAiBsJ,eAAiB,GACpE2F,sBAAuBzE,EAAQxK,EAAiBsJ,eAAiB,GACjE4F,qBAAsB1E,EAAQxK,EAAiBsJ,gBAC/CriH,qBAAsBujH,EAAQxK,EAAiBsJ,gBAC/CzhC,UAAW2iC,EAAQxK,EAAiBsJ,gBACpC1pH,qBAAsB4qH,EAAQxK,EAAiBsJ,gBAC/C6F,UAAW3E,EAAQ,IACnB4E,SAAU5E,EAAQ,IAClB6E,WAAY7E,EAAQxK,EAAiBoJ,eAAiB,GACtDkG,gBAAiB9E,EAAQxK,EAAiBoJ,eAAiB,GAC3DmG,SAAU/E,EAAQ,IAClBgF,mBAAoBhF,EAAQ,IAC5BiF,eAAgBjF,EAAQ,KAIpBh5B,EAAO,CACX9O,WAAYs9B,EAAiBuJ,YAAc,EAC3CmG,OAAQ1P,EAAiBuJ,YAAc,EACvCoG,eAAgB3P,EAAiBuJ,YAAc,EAC/CqG,aAAc,EACdC,mBAAoB7P,EAAiBuJ,YAAc,EACnDuG,wBAAyB9P,EAAiBuJ,YAAc,EACxDwG,qBAAsB/P,EAAiBuJ,YAAc,EACrD76B,iBAAkBsxB,EAAiBuJ,YAAc,EACjD16B,qBAAsBmxB,EAAiBuJ,YAAc,EACrD56B,sBAAuBqxB,EAAiBuJ,YAAc,EACtDz6B,cAAekxB,EAAiBuJ,YAAc,EAC9CyG,aAAchQ,EAAiBuJ,YAAc,EAC7C0G,aAAcjQ,EAAiBuJ,YAAc,EAC7C2G,cAAelQ,EAAiBuJ,YAAc,EAC9C4G,kBAAmBnQ,EAAiBuJ,YAAc,EAClD6G,iBAAkBpQ,EAAiBuJ,YAAc,EACjD8G,iBAAkBrQ,EAAiBuJ,YAAc,EACjD+G,kBAAmBtQ,EAAiBuJ,YAAc,EAClDgH,kBAAmBvQ,EAAiBuJ,YACpCl6B,aAAc2wB,EAAiBuJ,YAC/BiH,mBAAoBxQ,EAAiBuJ,YAAc,EACnDkH,oBAAqBzQ,EAAiBuJ,YAAc,EACpDmH,oBAAqB1Q,EAAiBuJ,YACtCoH,aAAc,GAIV3kG,EAAc,CAClB4kG,cAAe5Q,EAAiBwJ,mBAAqB,EACrDqH,iBAAkB7Q,EAAiBwJ,mBAAqB,GACxDsH,kBAAmB9Q,EAAiBwJ,mBAAqB,GACzDuH,gBAAiB/Q,EAAiBwJ,mBAAqB,GACvDwH,eAAgBhR,EAAiBwJ,mBAAqB,EACtDyH,sBAAuBjR,EAAiBwJ,mBAAqB,GAC7D0H,cAAelR,EAAiBwJ,mBAAqB,GACrDzuG,YAAailG,EAAiBwJ,mBAC9B2H,sBAAuBnR,EAAiBwJ,mBAAqB,EAC7D4H,iBAAkBpR,EAAiBwJ,mBAAqB,EACxDn1G,cAAe2rG,EAAiBwJ,mBAChC6H,qBAAsBrR,EAAiBwJ,mBACvC8H,gCAAiCtR,EAAiBwJ,mBAClD+H,iBAAkBvR,EAAiBwJ,mBACnCgI,wBAAyBxR,EAAiBwJ,mBAC1CiI,kBAAmBzR,EAAiBwJ,mBACpCkI,sBAAuB1R,EAAiBwJ,mBACxCmI,mBAAoB3R,EAAiBwJ,mBACrCoI,mBAAoB5R,EAAiBwJ,mBACrCqI,mBAAoB7R,EAAiBwJ,mBACrCsI,eAAgB9R,EAAiBwJ,mBACjCuI,QAAS/R,EAAiBwJ,mBAC1BwI,eAAgBhS,EAAiBwJ,mBACjCyI,cAAejS,EAAiBwJ,mBAChC0I,oBAAqBlS,EAAiBwJ,mBACtCnuG,aAAc2kG,EAAiBwJ,mBAC/B2I,YAAanS,EAAiBwJ,mBAC9B53F,YAAaouF,EAAiBwJ,mBAC9B4I,2BAA4BpS,EAAiBwJ,mBAC7C6I,mBAAoBrS,EAAiBwJ,mBACrC8I,aAActS,EAAiBwJ,mBAC/B+I,QAASvS,EAAiBwJ,mBAC1BgJ,WAAYxS,EAAiBwJ,mBAC7BiJ,WAAYzS,EAAiBwJ,mBAC7BkJ,uBAAwB1S,EAAiBwJ,mBACzCmJ,wBAAyB3S,EAAiBwJ,mBAC1CmH,aAAc,GAGViC,EAAe,CACnBC,qBAAsB7S,EAAiBqK,yBACvCyI,gBAAiB9S,EAAiBsK,8BAI9Bl7C,EAAiB,CACrBp7D,QAASgsG,EAAiBgJ,mBAC1B+J,gBAAiB/S,EAAiBgJ,mBAAqB,EACvDxqF,QAASwhF,EAAiBgJ,mBAAqB,EAC/CvqF,eAAgBuhF,EAAiBgJ,mBAAqB,EACtDgK,qBAAsBhT,EAAiBgJ,mBAAqB,EAC5DiK,oBAAqBjT,EAAiBgJ,mBAAqB,EAC3DkK,iBAAkBlT,EAAiBgJ,mBAAqB,GAIpDnjD,EAAS,CACbstD,cAAenT,EAAiBiJ,WAChCmK,UAAWpT,EAAiBiJ,WAC5BoK,mBAAoBrT,EAAiBiJ,WACrCqK,iBAAkBtT,EAAiBiJ,WACnCsK,iBAAkBvT,EAAiBiJ,WACnCuK,sBAAuBxT,EAAiBiJ,WACxCj3F,OAAQguF,EAAiBiJ,WACzBwK,iBAAkBzT,EAAiBiJ,WACnCyK,iBAAkB1T,EAAiBiJ,WACnC0K,gBAAiB3T,EAAiBiJ,WAClCp8B,QAASmzB,EAAiBiJ,WAC1B2K,UAAW5T,EAAiBiJ,WAC5B4K,uBAAwB7T,EAAiBiJ,WACzC6K,yBAA0B9T,EAAiBiJ,WAC3C8K,kBAAmB/T,EAAiBiJ,WACpC+K,uBAAwBhU,EAAiBiJ,WACzCgL,2BAA4BjU,EAAiBiJ,WAC7CiL,4BAA6BlU,EAAiBiJ,YAI1CkL,EAAS,CACbC,UAAWpU,EAAiByJ,YAC5B4K,WAAYrU,EAAiB0J,aAC7B4K,eAAgBtU,EAAiB2J,aACjC4K,oBAAqBvU,EAAiB4J,0BACtC4K,gBAAiBxU,EAAiB6J,sBAClC4K,UAAWzU,EAAiB8J,YAC5B4K,iBAAkB1U,EAAiB+J,eACnC4K,cAAe3U,EAAiBgK,YAChC4K,YAAa5U,EAAiBiK,iBAC9B4K,eAAgB7U,EAAiBkK,eACjC4K,WAAY9U,EAAiBuK,kBA2FlBwK,EAAgC,CAC3CrpF,YApEkB,CAClBspF,eAAgB,EAChBtK,aAAc,EACduK,gBAAiBjV,EAAiBuG,gBAClC2O,gBAAiBlV,EAAiBuG,gBAClC7qD,eAAgBskD,EAAiBwG,kBACjC2O,kBAAmBnV,EAAiBwG,kBACpC4O,UAAWpV,EAAiBuG,gBAC5B8O,cAAerV,EAAiBuG,gBAChC+O,gBAAiBtV,EAAiBuG,gBAClCgP,oBAAqBvV,EAAiBuG,gBACtC5tE,mBAAoBqnE,EAAiBuG,gBACrCiP,sBAAuBxV,EAAiBwG,kBACxCtrD,SAAU8kD,EAAiBwG,kBAC3B5sD,MAAOomD,EAAiBwG,kBACxBiP,eAAgBzV,EAAiBuG,gBACjCmP,YAAa1V,EAAiBuG,gBAC9BoP,eAAgB3V,EAAiBwG,kBACjCoP,WAAY5V,EAAiBwG,kBAC7BztE,eAAgBinE,EAAiBwG,kBACjCqP,aAAc7V,EAAiBwG,kBAC/BjrD,eAAgBykD,EAAiBwG,kBACjCsP,cAAe9V,EAAiBwG,kBAChCuP,WAAY/V,EAAiBwG,kBAC7BmK,aAAc,EACd1yD,aAAc+hD,EAAiBwG,kBAC/B9nD,YAAashD,EAAiBwG,kBAC9BzkE,mBAAoBi+D,EAAiBwG,kBACrCwP,eAAgBhW,EAAiBwG,kBACjCyP,qBAAsBjW,EAAiBwG,kBACvC0P,YAAalW,EAAiBwG,kBAC9BzpD,aAAcijD,EAAiBwG,kBAC/B2P,aAAcnW,EAAiBuG,gBAC/B6P,WAAYpW,EAAiBuG,gBAC7B8P,YAAarW,EAAiBuG,gBAC9B+P,qBAAsBtW,EAAiBwG,kBACvC+P,qBAAsBvW,EAAiBwG,kBACvCgQ,oBAAqBxW,EAAiBwG,kBACtCiQ,oBAAqBzW,EAAiBwG,kBACtCkQ,eAAgB1W,EAAiBwG,kBACjCmQ,qBAAsB3W,EAAiBwG,kBACvCx0E,kBAAmBguE,EAAiBwG,kBACpCoQ,iBAAkB5W,EAAiBwG,kBACnChqD,YAAawjD,EAAiBwG,kBAC9BzqD,wBAAyBikD,EAAiBwG,kBAC1CvqD,uBAAwB+jD,EAAiBwG,kBACzCqQ,wBAAyB7W,EAAiBuG,gBAC1CuQ,aAAc9W,EAAiBuG,gBAC/BwQ,aAAc/W,EAAiBwG,kBAC/BwQ,kBAAmBhX,EAAiBwG,kBACpCrnD,WAAY6gD,EAAiBwG,kBAC7ByQ,OAAQjX,EAAiBwG,kBACzB0Q,WAAYlX,EAAiBwG,kBAC7B3yE,SAAUmsE,EAAiBwG,kBAC3B2Q,UAAWnX,EAAiBuG,gBAC5B6Q,kBAAmBpX,EAAiBuG,gBACpC8Q,mBAAoBrX,EAAiBuG,gBACrC+Q,gBAAiBtX,EAAiBuG,gBAClCgR,cAAevX,EAAiBuG,gBAChCiR,qBAAsBxX,EAAiBwG,kBACvCiR,yBAA0BzX,EAAiBuG,iBAS3CmR,QAxUc,CACdC,SAAU,EACVC,aAAc,EACdC,oBAAqB,EACrBC,aAAc,EACdj8B,aAAc,EACdE,WAAY,EACZE,YAAa,EACbE,aAAc,EACd47B,oBAAqB,EACrBC,kBAAmB,EACnBC,mBAAoB,EACpBC,oBAAqB,EACrBl5B,UAAW,EACXm5B,SAAU,EACVC,YAAa,EACbC,YAAa,EACbp7B,aAAc,EACdq7B,gBAAiB,EACjBC,oBAAqB,EACrB95B,aAAc,EACdC,gBAAiB,GAoTjBzpB,QACAxK,cACA+mB,OACAxlE,cACA4mG,eACAxjD,iBACAvJ,SACAsuD,SACAqE,GAlGS,CACTC,SAAU,EACVC,SAAU,EACVC,WAAY,EACZC,UAAW,EACXC,UAAW,EACXC,YAAa,EACbC,YAAa,EACbC,cAAe,EACfC,WAAY,GA0FZC,SAtFe,CACfC,0BAA2B,KAC3BC,yBAA0B,KAC1BC,0BAA2B,EAC3BC,kBAAmB,KAoFnBC,QAAS,EACTC,SAAU,EACVC,KAAMzZ,EAAiBgH,KACvBl1H,KAAMkuH,EAAiB0G,KACvBgT,mBAAoB1Z,EAAiB2G,YACrCgT,YAAa3Z,EAAiB2G,YAC9BiT,oBAAqB5Z,EAAiB2G,YACtCkT,kBAAmB7Z,EAAiB2G,YACpCmT,MAAO,EACPC,OAAQ,EACRC,MAAO,IACPC,cAAe,GACfC,KAAMla,EAAiB4G,KACvBuT,cAAena,EAAiB6G,cAChCuT,sBAAuBpa,EAAiB6G,cACxCwT,OAAQra,EAAiB8G,OACzBwT,cAAeta,EAAiB+G,cAChCwT,MAAO,EACPC,OAAQ,EACRC,OAAQ,EACRC,QAAS,EACTC,SAAU,EACVC,WAAY,EACZC,UAAW,EACXC,aAAc,EACdC,cAAe,EACfC,aAAc,IACdC,KAAMjb,EAAiBkH,YACvBgU,SAAUlb,EAAiBkH,YAC3BiU,SAAUnb,EAAiBkH,YAC3BkU,UAAWpb,EAAiBkH,YAC5BmU,SAAUrb,EAAiBkH,YAC3BoU,UAAWtb,EAAiBkH,YAC5BqU,IAAKvb,EAAiBmH,IACtBlR,KAAM+J,EAAiBoH,KACvBoU,MAAOxb,EAAiBqH,MACxBoU,KAAMzb,EAAiBuH,KACvBmU,QAAS1b,EAAiBuH,KAC1BoU,KAAM,EACNC,OAAQ,EACRC,IAAK7b,EAAiBsH,IACtBwU,GAAI9b,EAAiBgH,KACrB+U,GAAI/b,EAAiBgH,KACrBgV,iBAAkBhc,EAAiBiH,cACnCgV,cAAejc,EAAiBwH,cAChC0U,YAAalc,EAAiByH,YAC9B0U,gBAAiBnc,EAAiB0H,gBAClC0U,sBAAuB,IACvBC,sBAAuB,IACvB5xH,sBAAuB,EACvBw1G,UAAW,EACXqc,wBAAyBtc,EAAiB5zH,UAC1CmwI,uBAAwBvc,EAAiB5zH,UACzCowI,2BAA4Bxc,EAAiB5zH,UAC7CqwI,0BAA2Bzc,EAAiB5zH,UAC5CswI,8BAA+B1c,EAAiB5zH,UAChDuwI,kBAAmB3c,EAAiB5zH,UACpCwwI,gBAAiB5c,EAAiB5zH,UAClCywI,0BAA2B7c,EAAiB5zH,UAC5C0wI,gBAAiB9c,EAAiB2H,gBAClCoV,iBAAkB/c,EAAiB4H,iBACnCoV,aAAchd,EAAiB5zH,UAC/B6wI,WAAYjd,EAAiB6H,WAC7B3W,UAAW8O,EAAiB8H,UAC5BoV,wBAAyBld,EAAiBuI,wBAC1C4U,yBAA0Bnd,EAAiBwI,yBAC3C4U,uBAAwBpd,EAAiBqI,kBACzCgV,8BAA+B,GAC/BC,uBAAwB,IACxBC,sBAAuB,EACvBnlB,eAAgB4H,EAAiBsI,eACjCkV,aAAcxd,EAAiBsI,eAC/BmV,oBAAqBzd,EAAiBsI,eACtCoV,MAAO,EACPC,aAAc,EACdC,KAAM,EACNC,KAAM,EACN/lI,MAAO,EACPgmI,UAAW,EACXC,SAAU,EACVC,cAAe,EACfC,GAAIje,EAAiB0I,UACrBwV,cAAele,EAAiB2I,UAChCwV,WAAYne,EAAiB2I,UAC7ByV,cAAe,EACfC,aAAcre,EAAiB4I,UAC/B0V,YAAate,EAAiB8I,YAC9ByV,YAAave,EAAiB8I,YAC9B0V,cAAexe,EAAiB8I,YAChC2V,qBAAsBze,EAAiB4I,UACvC8V,gBAAiB1e,EAAiB4I,UAClC+V,sBAAuB3e,EAAiB4I,UACxCgW,iBAAkB5e,EAAiB4I,UACnC1G,iBAAkBlC,EAAiB6I,iBACnCgW,aAAc,EACdn4C,UAAW,EACXtpF,cAAe,EACf0hI,QAAS,EACTC,QAAS,EACTC,oBAAqBhf,EAAiB8I,YACtCmW,OAAQ,EACRC,KAAM,EACNC,iBAAkBnf,EAAiB+I,iBACnCqW,UAAWpf,EAAiBoJ,eAAiB,EAC7CiW,gBAAiBrf,EAAiBmJ,oBAClCmW,GAAI,EACJC,aAAc,EACdC,mBAAoB,EACpBC,KAAM,EACNtlD,MAAO,EACPulD,SAAU,EACVC,WAAY,EACZC,UAAW,EACXC,SAAU,EACVC,UAAW,EACXC,YAAa,EACbC,MAAO,EACPC,MAAO,EACPhjD,QAAS,EACTijD,OAAQ,EACRC,aAAc,EACdC,QAAS,EACTC,MAAO,CAAEC,MAAO,GAChBC,UAAW,EACXC,SAAU,EAEVC,SAAU,CACRC,WAAY,EACZC,WAAY,EACZC,WAAY,EACZ1gH,WAAY,CACV2gH,oBAAqB,EACrBC,oBAAqB,EACrBtgD,gBAAiB,GAEnB5rE,OAAQ,CACNq8E,eAAgB,EAChB8vC,aAAc,GAEhB3rI,QAAS,CACP0rH,WAAY,EACZnhG,QAAS,EACTqhH,YAAa,EACbC,YAAa,EACbC,YAAa,EACbC,SAAU,EACVC,SAAU,EACVC,WAAY,GAEdC,aAAc,CACZ31C,cAAe,EACf41C,iBAAkB,EAClBC,eAAgB,EAChBC,gBAAiB,EACjBC,gBAAiB,EACjBC,UAAW,GAEbC,eAAgB,CACdC,aAAc,EACdN,iBAAkB,EAClBC,eAAgB,EAChBC,gBAAiB,EACjBK,iBAAkB,EAClBC,gBAAiB,EACjBC,kBAAmB,EACnBL,UAAW,GAEbnwC,KAAM,CACJywC,cAAe,EACfC,YAAa,EACbC,gBAAiB,EACjBl/G,UAAW,EACXm/G,oBAAqB,EACrBC,oBAAqB,GAEvBC,KAAM,CACJC,mBAAoB,EACpBC,WAAY,EACZC,SAAU,EACVC,gBAAiB,EACjBC,aAAc,EACdC,aAAc,KAOb,SAAS1lB,EAAWnB,GAAkD,IAAlC8mB,EAAmB,UAAH,8CACzD,GAAoB,IAAhB9mB,EAAKvwH,OAAc,MAAM,IAAIoiB,MAAO,uCAExC,IAAI81G,EAAsBqR,EAE1B,IAAK,MAAM+N,KAAU/mB,EAAM,CACzB,MAAM3rD,EAAOszD,EAAIof,GACjB,QAAa9lI,IAATozD,EAAoB,CAEtB,MAAM2yE,EAAa,kCAAiChnB,EAAKjiH,KAAK,QAC9D,GAAI+oI,EAAkB,MAAME,EAC5B,OAAO,CACT,CACA,IAAI3yE,GAAwB,iBAATA,EAKnB,MAAuB,mBAATA,EAAsBA,IAASA,EAJ3CszD,EAAMtzD,CAKV,CACA,MAAM,IAAIxiD,MAAO,gCAA+BmuG,EAAKjiH,KAAK,yCAC5D,wEChoBO,MAAMkpI,EAAgC,GAEtC,SAASC,EAAgBp8G,GAC9B,GAAIm8G,EAAcx4I,MAAM4rB,GAAMA,EAAEgsG,cAAc9B,MAAQz5F,EAAay5F,MAAM,OAEzE,MAAM4iB,EAAa,IAAIp7I,KAMvB,IALAk7I,EAAcG,QAAQ,CACpBC,YAAaF,EACb9gB,cAAev7F,EAAao4F,YAGvB+jB,EAAcx3I,OAAS5D,EAAAA,EAAAA,0BAC5Bo7I,EAActtH,KAElB,iDCNO,MAAM2pG,EAWXuG,aAAe,GAEftpH,YAAYu/G,GACVr/G,KAAK8jH,IAAMzE,EAAGyE,IACd9jH,KAAKzO,KAAO8tH,EAAG9tH,KACfyO,KAAKmhC,SAAWk+E,EAAGl+E,SACnBnhC,KAAKopH,aAAe/J,EAAG+J,aAEvBp1H,OAAOmM,OAAOH,KAChB,EAGFhM,OAAOmM,OAAO0iH,GACd7uH,OAAOmM,OAAO0iH,EAAYgkB,8FCfnB,MAAMjf,EAKX7qC,KAAO,GAMPmmC,MAAuB,KAGvBC,iBAA4D3iH,EAG5DsmI,YAAuC,CAAC,EAOxCxjB,iBAA4C,CAAC,EAG7CC,gBAA0BC,EAAAA,GAAAA,KAM1B4F,aAAe,GAMf2d,UAAqC,CAAC,EAMtCC,OAAS,GAeT5H,YAAmC5+H,EAEnCV,YAAYmnI,EAAiCnjB,EAAaojB,GACxDlnI,KAAKzO,KAAO01I,EAAiBl1I,SAC7BiO,KAAKmhC,SAAW8lG,EAAiB7mG,OAEjC,MAAM+mG,EAAe7yI,KAAKguB,MAAMwhG,GAChC,GAA4B,iBAAjBqjB,GAA6B/+H,MAAM++H,GAC5C,MAAM,IAAI/1H,MAAO,+CAA8C0yG,KAEjE9jH,KAAK8jH,IAAMqjB,EACXF,EAAiBnjB,IAAMqjB,EAGvB,MAAM/mG,GAASxwC,EAAAA,EAAAA,IAAUoQ,KAAKmhC,UAC9B,GAAc,MAAVf,EACF,MAAM,IAAIhvB,MAAO,oDAAmDpR,KAAKmhC,YAE3E,MAAM27C,EAAS18C,EAAOzuC,QAAQ6L,IAAIwC,KAAKzO,MACvC,IAAKurF,EACH,MAAM,IAAI1rE,MAAO,0DAAyDpR,KAAKzO,QAEjFyO,KAAK+8E,KAAOD,EAAOC,KACnB/8E,KAAKyiH,UAAYwkB,EACjBjnI,KAAKogB,KAAO6mH,EAAiB7mH,KAAKjG,QAClCna,KAAK4iH,IAAM,IAAIvB,EAAAA,EACiB,mBAArB6lB,IACTlnI,KAAK4iH,IAAIpB,KAAO0lB,EAAiBlnI,MAErC,CAGAyjH,YACE,MAAMrjF,GAASxwC,EAAAA,EAAAA,IAAUoQ,KAAKmhC,UAC9B,GAAc,MAAVf,EAAgB,MAAM,IAAIhvB,MAAO,UAASpR,KAAKzO,YAAYyO,KAAK8jH,0CACpE,OAAO1jF,CACT,CAMAgnG,YAGE,OAFepnI,KAAKyjH,YACE9xH,QAAQ6L,IAAIwC,KAAKzO,QAErCkS,QAAQC,MACN,6GAEK,KAGX,CAEA2jI,UAAUhnG,GACR,OAA+B,MAAxBrgC,KAAK8mI,YAAYzmG,EAC1B,CAEA1hB,IAAI4hG,EAAcj+B,GACZtiF,KAAKqnI,UAAU9mB,KACbA,GAAQj+B,EACVtiF,KAAKyiH,UAAU9jG,IAAK,GAAE4hG,MAASj+B,OACtBi+B,EACTvgH,KAAKyiH,UAAU9jG,IAAI4hG,GAEnBvgH,KAAKyiH,UAAU9jG,IAAI2jE,KAGzB,CAEAy7C,MAAMz7C,GACJtiF,KAAKyiH,UAAU9jG,IAAI2jE,EACrB,kDCtJK,MAAMjwF,EAAgB,IAAI6I,kKCY1B,SAAS4nH,EAAiBzD,GAC/B,OAAIzhB,EAAAA,GAAAA,WACFv/F,EAAAA,EAAAA,KAAiB,oDACV,IAETipI,EAA2BjoB,IAEpB,EACT,CAEO,SAASkoB,EAAsBzjB,GACpC,MAAMzE,EAAKhtH,EAAAA,EAAAA,IAAkByxH,GAC7B,OAAIzE,aAAcuI,EAAAA,IAChB0f,EAA2BjoB,IACpB,EAIX,CAEA,SAASioB,EAA2BjoB,GAAwB,MAG1D,IAAIA,EAAGuD,IAAItB,SAAX,CAOA,GAJIjC,EAAG6D,OAAOtR,aAAayN,EAAG6D,OAChB,QAAd,EAAA7D,EAAG8D,mBAAW,OAAd,OAAA9D,EAAiB,IAAIwD,EAAAA,EAAYxD,IACjCA,EAAGuD,IAAIrB,UAAY,GAEM,mBAAdlC,EAAG+f,OAAuB,CACnC,IACE,MAAMA,EAAS/f,EAAG+f,OAClB/f,EAAG+f,YAAS5+H,EACZ4+H,GAGF,CAFE,MAAO75H,IACP2jH,EAAAA,EAAAA,IAAmB3jH,EAAG85G,EAAI,qCAC5B,CACA,GAAIA,EAAGuD,IAAItB,SAET,MAEJ,CACAjC,EAAGuD,IAAItB,UAAW,EAWpB,SAA4Bj3F,GAC1B,MAAM01E,EAAK11E,EAAa8W,SAGlBf,GAASxwC,EAAAA,EAAAA,IAAUmwG,GACzB,GAAc,MAAV3/D,EAEF,YADA38B,QAAQC,MAAO,0DAAyDq8F,KAK1E,MAAMynC,EAAKn9G,EAAao4F,UAClBglB,EAAQrnG,EAAOsnG,iBAAiBlqI,IAAIgqI,EAAGG,WACxCF,GAGHA,EAAM/qI,OAAO2tB,EAAay5F,KACP,IAAf2jB,EAAM17I,MACRq0C,EAAOsnG,iBAAiBhrI,OAAO8qI,EAAGG,YAJpClkI,QAAQC,MAAO,0CAAyC8jI,EAAGG,aAS7DvnG,EAAOshE,eAAckmC,EAAAA,EAAAA,GAAWxnG,EAAOwhE,QAAU4lC,EAAGn0I,SAAWm0I,EAAGt/D,UAElE71E,EAAAA,EAAAA,OAAqBg4B,EAAay5F,MAClC2iB,EAAAA,EAAAA,GAAgBp8G,EAClB,CArCEw9G,CAAmBxoB,EArBQ,CAsB7B,mtBC6CO,MAAMyoB,GAAiB,CAC5BpzI,SAAQ,WACR+5E,UAAS,YACT0Y,gBAAe,kBACfo0B,QAAO,UACPl3E,QAAO,UACPgzE,aAAY,eACZnhC,aAAY,eACZ0nC,oBAAmB,sBACnB56E,YAAWA,EAAAA,aAEb,IAAK,MAAM3hB,KAAOrtB,OAAOpC,OAAOk2I,IAAQ9zI,OAAOmM,OAAOkhB,GACtDrtB,OAAOmM,OAAO2nI,IAIP,MAAMxoB,GAA0B,CACrCrxC,aAAa85D,EAAAA,EAAAA,KACb/yC,MAAMgzC,EAAAA,EAAAA,KACNx4G,aAAay4G,EAAAA,EAAAA,KACbr1D,gBAAgBs1D,EAAAA,EAAAA,KAChB7+D,QAAQ8+D,EAAAA,EAAAA,KACRj5F,aAAak5F,EAAAA,EAAAA,KACbzQ,QAAQ0Q,EAAAA,EAAAA,KACRjS,cAAckS,EAAAA,EAAAA,KACdtM,IAAIuM,EAAAA,EAAAA,KACJtE,UAAUuE,EAAAA,EAAAA,KACV/vD,OAAOgwD,EAAAA,EAAAA,KACP/L,UAAUgM,EAAAA,EAAAA,KACVxN,SAASyN,EAAAA,EAAAA,KACT5L,QAAS,IAAMA,EAAAA,QACfC,SAAU,IAAMA,EAAAA,SAChBC,KAAO5c,GAASuD,IACd,MAAMziF,EAAWyiF,EAAYnD,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,SACrFf,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAChCosE,EAAgB,GACtB,IAAK,IAAI18G,EAAI,EAAGA,EAAIuvC,EAAOY,iBAAiBhyC,OAAQ6B,IAAK,CACvD,MAAMiB,GAAI82I,EAAAA,EAAAA,IAAmBxoG,EAAQvvC,GACrC,GAAU,OAANiB,EAAY,SAChB,MAAMxD,EAAQwD,EAAEqvC,SACF,OAAV7yC,GACJi/G,EAAIxvG,KAAKzP,EACX,CAEA,OADAmyH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWjgF,EAAOY,iBAAiBhyC,0BAA0BoxC,EAAOe,aACrFosE,CAAG,EAEZixB,aAAc,IAAM,IAAMxuI,EAAAA,GAAAA,eAC1BsF,KACG+qH,GACD,SAACuD,GAAyB,IAAdilB,EAAO,UAAH,6CAAG,CAAC,EAClB,MAAM1nG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAE3CklB,EAAiC,CAAC,EAExC,OADA7hB,EAAAA,EAAAA,IAAiB5G,EAAK,OAAQwoB,EAAMC,GAC7BroB,EAAAA,GAAAA,KAAaJ,EAAKl/E,GAAU,EAAO0nG,EAC5C,EACF3L,mBAAqB7c,GAAQ,CAACuD,EAAWmlB,KACvC,MAAM5nG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3ColB,EAAavoB,EAAAA,GAAAA,OAAeJ,EAAK,aAAc0oB,GAG/C3oG,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wCACf,EAEV,GAAIj4G,MAAM4gI,GACR,MAAMvoB,EAAAA,GAAAA,oBACJJ,EACC,+DAA8D2oB,uBAInE,GAAIA,EAAa,GAAKA,EAAa5oG,EAAO3tC,eACxC,OAAQ,EACH,GAAmB,IAAfu2I,EACT,OAAO,EAGT,MAAMvkB,GAAgB1nB,EAAAA,EAAAA,IAA4B38D,EAAQpwC,EAAAA,IAE1D,OAAsB,IAAlBy0H,GAAiD,IAA1BrkF,EAAO3tC,gBACxB,EAGHu2I,GAAc5oG,EAAO3tC,eAAiBgyH,EAAc,EAE7D0Y,YAAc9c,GAASuD,IACrB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAE3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,GAKjBitG,EAAAA,EAAAA,IAA4B38D,EAAQpwC,EAAAA,KAJzCywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAGyC,EAEpD+c,oBAAsB/c,GAAQ,CAAC4oB,EAAUrlB,KACvC,IAAI17C,EAAUu4C,EAAAA,GAAAA,OAAeJ,EAAK,UAAW4oB,GAC7C,GAAIrlB,EAAW,CACb,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAGT,MAAMoE,GAAgB1nB,EAAAA,EAAAA,IAA4B38D,EAAQpwC,EAAAA,IAEtDy0H,EAAgB,IAElBv8C,EAAU5zE,KAAK6c,IAAI+2D,EAAS5zE,KAAKmkB,KAAK,EAAIgsG,IAE9C,CAEA,OAAO7xH,EAAAA,EAAAA,oBAAgCs1E,CAAO,EAEhDm1D,kBAAoBhd,GAASuD,IAC3B,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAE3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,GAKjB8sG,EAAAA,EAAAA,IAAuBx8D,EAAQpwC,EAAAA,KAJpCywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAGoC,EAE/Cid,MACGjd,GACD,WAAe,IAAd6oB,EAAQ,UAAH,6CAAG,EACP,MAAMrmH,EAAO49F,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6oB,GAEzC,OADAzoB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,iBAAe3vF,EAAAA,EAAAA,IAAiC7N,GAAM,QACvE49F,EAAAA,GAAAA,eAAuBJ,EAAKx9F,GAAMk8D,MAAK,WAC5C,OAAOx8C,QAAQC,SAAQ,EACzB,GACF,EACF+6F,OACGld,GACD,WAAe,IAAd6oB,EAAQ,UAAH,6CAAG,EACP,MAAMrmH,EAAO49F,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6oB,GAEzC,OADAzoB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,iBAAe3vF,EAAAA,EAAAA,IAAiC7N,GAAM,QACvE,IAAI0f,SAASC,GAAYjH,YAAW,IAAMiH,GAAQ,IAAO3f,IAClE,EACF66G,KACGrd,GACD,SAACuD,GAAyB,IAAdilB,EAAO,UAAH,6CAAG,CAAC,EAClB,MAAM1nG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CklB,EAAiC,CAAC,GACxC7hB,EAAAA,EAAAA,IAAiB5G,EAAK,OAAQwoB,EAAMC,GACpC,MAAM5gE,EAAUu4C,EAAAA,GAAAA,iCAAyCJ,EAAKwoB,EAAK3gE,SAC7D+7C,EAAiBxD,EAAAA,GAAAA,OAAeJ,EAAK,sBAAuBwoB,EAAK5kB,gBAAkB,GACzF,GAAIA,EAAiB,EACnB,MAAMxD,EAAAA,GAAAA,oBAA4BJ,EAAM,4CAA2C4D,KAGrF,MAAM7jF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB99E,QAAQC,QAAQ,GAGzB,MAAM2mG,GAAOv5I,EAAAA,EAAAA,IAAUywH,EAAIh2F,aAAa8W,UACxC,GAAa,OAATgoG,EACF,MAAM,IAAI/3H,MAAM,6BAIlB,MAAMgzG,GAAU3mB,EAAAA,EAAAA,IAAiBr9D,GACjC,IAAKgkF,EAAQv6F,IACX,MAAM42F,EAAAA,GAAAA,oBAA4BJ,EAAK+D,EAAQ16F,KAAO,IAGxD,MAAMk7G,GAAWznC,EAAAA,EAAAA,IAAkB/8D,EAAQpwC,EAAAA,IAAUi0H,EAAiB,IAStE,OARAxD,EAAAA,GAAAA,IACEJ,GACA,IACG,iBAAgBjgF,EAAOe,iBAAgBzQ,EAAAA,EAAAA,IAC3B,IAAXk0G,GACA,UACMvgB,EAAAA,EAAAA,IAAcn8C,SAEnBu4C,EAAAA,GAAAA,eAAuBJ,EAAgB,IAAXukB,GAAiB7lD,MAAK,WACvD,MAAMqqD,EAAchpG,EAAO3tC,gBAAkB,EAAI,EAAI2tC,EAAO3tC,gBAC5D42I,EAAAA,EAAAA,IAA0BjpG,EAAQ8nC,EAASihE,EAAKr2I,UAChD,MAAMw2I,EAAalpG,EAAO3tC,eAC1B4tH,EAAIh2F,aAAao4F,UAAU8mB,WAAWnpG,EAAOe,SAAU+mC,GACvD,MAAMhlD,GAAU45E,EAAAA,EAAAA,IAAwB18D,EAAQpwC,EAAAA,IAAUk4E,EACpDshE,EAAiBF,EAAaF,EAAc,EAalD,OAZA3oB,EAAAA,GAAAA,IACEJ,GACA,IACG,uBAAsBjgF,EAAOe,uBAAsBvgC,EAAAA,EAAAA,IAAc4oI,EAAgB,eAAchiH,EAAAA,EAAAA,IAC9FtE,sBACkBmhG,EAAAA,EAAAA,IAAcn8C,SAEtCm4C,EAAIh2F,aAAao4F,UAAUsC,iBAAmB7hG,EAC9ClzB,EAAAA,GAAAA,eAAsBkzB,GAClB2lH,EAAKpwD,QACPgxD,EAAAA,EAAAA,IAAgCrpG,EAAQkpG,EAAaF,GAEhD7mG,QAAQC,QAAQ8mG,EAAaF,EACtC,GACF,EACFzL,cACGtd,GACD,SAACqpB,EAAOC,GAA4B,IAAfC,EAAS,UAAH,6CAAG,EAC5B,MAAMT,EAAO1oB,EAAAA,GAAAA,OAAeJ,EAAK,WAAYqpB,GACvCnpI,EAAOkgH,EAAAA,GAAAA,OAAeJ,EAAK,aAAcspB,GACzC91I,EAAQ4sH,EAAAA,GAAAA,OAAeJ,EAAK,QAASupB,GAGrCxpG,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAK8oB,GACtC,KAAM/oG,aAAkBtwC,EAAAA,GAGtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,GAAE8oB,6CACnB,EAET,GAAI5oI,EAAO,IAAMy5C,SAASz5C,GACxB,MAAMkgH,EAAAA,GAAAA,oBAA4BJ,EAAM,4DAA2D9/G,MAGrG,IAAK+U,OAAOu0H,UAAUh2I,IAAUA,EAAQ,EACtC,MAAM4sH,EAAAA,GAAAA,oBAA4BJ,EAAM,uDAAsDxsH,KAGhG,OAAOi2I,EAAAA,EAAAA,IAAkB1pG,EAAQ7/B,EAAM1M,EACzC,EACF+pI,sBACGvd,GACD,SAAC4oB,EAAUrlB,GAA2B,IAAfgmB,EAAS,UAAH,6CAAG,EAC1B1hE,EAAUu4C,EAAAA,GAAAA,OAAeJ,EAAK,UAAW4oB,GAC7C,GAAIrlB,EAAW,CACb,MAAM/vH,EAAQ4sH,EAAAA,GAAAA,OAAeJ,EAAK,QAASupB,GACrCzoG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAEtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAGT,MAAM0pB,EAAmBz1I,KAAKmkB,MAC5BuxH,EAAAA,EAAAA,IAA2B5pG,EAAQA,EAAO5tC,SAAU4tC,EAAO3tC,eAAgBoB,IAG7Eq0E,EAAU5zE,KAAK6c,IAAI+2D,EAAS6hE,EAC9B,CAEA,OAAO,EAAIn3I,EAAAA,EAAAA,oBAAgCs1E,CAC7C,EACF21D,OACGxd,GACD/9E,eAAOshF,GAAyB,IAAdilB,EAAO,UAAH,6CAAG,CAAC,EACxB,MAAM1nG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CklB,EAAiC,CAAC,GACxC7hB,EAAAA,EAAAA,IAAiB5G,EAAK,OAAQwoB,EAAMC,GACpC,MAAM5gE,EAAUu4C,EAAAA,GAAAA,iCAAyCJ,EAAKwoB,EAAK3gE,SAC7D+7C,EAAiBxD,EAAAA,GAAAA,OAAeJ,EAAK,sBAAuBwoB,EAAK5kB,gBAAkB,GACzF,GAAIA,EAAiB,EACnB,MAAMxD,EAAAA,GAAAA,oBAA4BJ,EAAM,4CAA2C4D,KAGrF,MAAM7jF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB99E,QAAQC,QAAQ,GAIzB,MAAM4hF,GAAU1mB,EAAAA,EAAAA,IAAmBt9D,GACnC,IAAKgkF,EAAQv6F,IACX,MAAM42F,EAAAA,GAAAA,oBAA4BJ,EAAK+D,EAAQ16F,KAAO,IAGxD,MAAMm7G,GAAaznC,EAAAA,EAAAA,IAAoBh9D,EAAQpwC,EAAAA,IAAUi0H,EAAiB,IAS1E,OARAxD,EAAAA,GAAAA,IACEJ,GACA,IACG,iBAAgBjgF,EAAOe,iBAAgBzQ,EAAAA,EAAAA,IACzB,IAAbm0G,GACA,UACMxgB,EAAAA,EAAAA,IAAcn8C,QAEnBu4C,EAAAA,GAAAA,eAAuBJ,EAAkB,IAAbwkB,GAAmB9lD,MAAK,WACzD,MAAMoqD,GAAOv5I,EAAAA,EAAAA,IAAUywH,EAAIh2F,aAAa8W,UACxC,GAAa,OAATgoG,EAEF,OADA1oB,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,gCAChB99E,QAAQC,QAAQ,GAEzB,MAAMynG,EAAY,GAAKd,EAAKr2I,SAAW,GAAK,GACtCo3I,EAAYt3I,EAAAA,EAAAA,mBAA+Bs1E,EAAU+hE,EAC3D7pG,EAAOy9F,OAAOqM,GACd7pB,EAAIh2F,aAAao4F,UAAU0nB,aAAa/pG,EAAOe,SAAU+mC,GACzD,MAAMhlD,GAAU45E,EAAAA,EAAAA,IAAwB18D,EAAQpwC,EAAAA,IAAUk4E,EAW1D,OAVAu4C,EAAAA,GAAAA,IACEJ,GACA,IACG,IAAGjgF,EAAOe,wCAAwCf,EAAOw2C,2BAA0BpvD,EAAAA,EAAAA,IAClFtE,sBACkBmhG,EAAAA,EAAAA,IAAcn8C,QAEtCm4C,EAAIh2F,aAAao4F,UAAUsC,iBAAmB7hG,EAC9ClzB,EAAAA,GAAAA,eAAsBkzB,GAEfqf,QAAQC,QAAQ0nG,EAAY11I,EAAAA,GAAAA,iBACrC,GACF,EACFspI,cACGzd,GACD,SAAC4oB,GAAyB,IAAfW,EAAS,UAAH,6CAAG,EAClB,MAAM1hE,EAAUu4C,EAAAA,GAAAA,OAAeJ,EAAK,UAAW4oB,GACzCp1I,EAAQ4sH,EAAAA,GAAAA,OAAeJ,EAAK,QAASupB,GACrCK,EAAY,GAAKp2I,EAAQ,GAAK,GACpC,OAAOjB,EAAAA,EAAAA,mBAA+Bs1E,EAAU+hE,EAAYz1I,EAAAA,GAAAA,gBAC9D,EACFgpI,MAAQnd,GAAQ,KACdI,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,2BACvB,MAAM+pB,GAAMC,EAAAA,EAAAA,IACVhqB,EAAIh2F,aAAao4F,UAAUv6C,SAAU7tD,EAAAA,EAAAA,GAA2BrqB,EAAAA,GAAAA,OAAAA,aAA4B,IAE9F,OAAOywH,EAAAA,GAAAA,eAAuBJ,EAAK,KAAOiqB,SAAQ,WAChD7pB,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,oCACvB+pB,GACF,GAAE,EAEJ3M,cAAe,IAAM,KACZ8M,EAAAA,EAAAA,MAETxM,MACG1d,GACD,WAAa,2BAATjgG,EAAI,yBAAJA,EAAI,gBACN,GAAoB,IAAhBA,EAAKpxB,OACP,MAAMyxH,EAAAA,GAAAA,oBAA4BJ,EAAK,8BAEzCA,EAAIh2F,aAAa0zG,MAAMtd,EAAAA,GAAAA,aAAqBrgG,GAC9C,EACF49G,OACG3d,GACD,SAACmqB,GACC,MAAMC,EAAShqB,EAAAA,GAAAA,OAAeJ,EAAK,SAAUmqB,GAC7C,GAAsB,iBAAXC,EACT,MAAMhqB,EAAAA,GAAAA,oBAA4BJ,EAAK,iDACxC,2BAJUjgG,EAAI,iCAAJA,EAAI,kBAKfigG,EAAIh2F,aAAa0zG,OAAMf,EAAAA,EAAAA,UAASyN,EAAQrqH,GAC1C,EACF69G,OACG5d,GACD,WAAa,2BAATjgG,EAAI,yBAAJA,EAAI,gBACN,GAAoB,IAAhBA,EAAKpxB,OACP,MAAMyxH,EAAAA,GAAAA,oBAA4BJ,EAAK,8BAEzC,MAAM9qH,EAAMkrH,EAAAA,GAAAA,aAAqBrgG,GAC7B7qB,EAAI2qB,WAAW,UAAY3qB,EAAI2qB,WAAW,QAC5CnkB,EAAAA,EAAAA,MAAgB,GAAEskH,EAAIh2F,aAAa94B,SAASgE,KAG1CA,EAAI2qB,WAAW,WACjBnkB,EAAAA,EAAAA,QAAkB,GAAEskH,EAAIh2F,aAAa94B,SAASgE,KAG5CA,EAAI2qB,WAAW,QACjBnkB,EAAAA,EAAAA,KAAe,GAAEskH,EAAIh2F,aAAa94B,SAASgE,KAGzCA,EAAI2qB,WAAW,QACjBnkB,EAAAA,EAAAA,KAAe,GAAEskH,EAAIh2F,aAAa94B,SAASgE,KAG7CwG,EAAAA,EAAAA,MAAgB,GAAEskH,EAAIh2F,aAAa94B,SAASgE,IAC9C,EACF2oI,QACG7d,GACD,SAACmqB,GACC,MAAMC,EAAShqB,EAAAA,GAAAA,OAAeJ,EAAK,SAAUmqB,GAAS,2BAD3CpqH,EAAI,iCAAJA,EAAI,kBAEf,MAAM7qB,GAAMynI,EAAAA,EAAAA,UAASyN,EAAQrqH,GAEzB7qB,EAAI2qB,WAAW,UAAY3qB,EAAI2qB,WAAW,QAC5CnkB,EAAAA,EAAAA,MAAgB,GAAExG,KAGhBA,EAAI2qB,WAAW,WACjBnkB,EAAAA,EAAAA,QAAkB,GAAExG,KAGlBA,EAAI2qB,WAAW,QACjBnkB,EAAAA,EAAAA,KAAe,GAAExG,KAGfA,EAAI2qB,WAAW,QACjBnkB,EAAAA,EAAAA,KAAe,GAAExG,KAGnBwG,EAAAA,EAAAA,MAAgB,GAAExG,IACpB,EACF4oI,SAAW9d,GAAQ,KACjBA,EAAIh2F,aAAao4F,UAAU0b,UAAU,EAEvCC,WAAa/d,GAASqqB,IACpB,MAAMrqG,EAAKogF,EAAAA,GAAAA,OAAeJ,EAAK,KAAMqqB,GACrC,GAAW,QAAPrqG,EAAc,CAChB,IAAK,MAAMA,KAAMrsC,OAAOmY,KAAKw+H,IAC3BtqB,EAAIh2F,aAAay8G,YAAYzmG,IAAM,EAErCogF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,sCAC1B,KAAO,SAAyB7/G,IAArBmqI,GAAatqG,GACtB,MAAMogF,EAAAA,GAAAA,oBAA4BJ,EAAM,qBAAoBhgF,MAE5DggF,EAAIh2F,aAAay8G,YAAYzmG,IAAM,EACnCogF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,wBAAuBhgF,KACjD,GAEFg+F,UAAYhe,GAASqqB,IACnB,MAAMrqG,EAAKogF,EAAAA,GAAAA,OAAeJ,EAAK,KAAMqqB,GACrC,GAAW,QAAPrqG,EAAc,CAChB,IAAK,MAAMA,KAAMrsC,OAAOmY,KAAKw+H,WACpBtqB,EAAIh2F,aAAay8G,YAAYzmG,GAEtCogF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,qCAC1B,MAAO,QAAyB7/G,IAArBmqI,GAAatqG,GACtB,MAAMogF,EAAAA,GAAAA,oBAA4BJ,EAAM,qBAAoBhgF,aAEvDggF,EAAIh2F,aAAay8G,YAAYzmG,GACpCogF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,uBAAsBhgF,KAAK,EAErDi+F,aAAeje,GAASqqB,IACtB,MAAMrqG,EAAKogF,EAAAA,GAAAA,OAAeJ,EAAK,KAAMqqB,GACrC,QAAyBlqI,IAArBmqI,GAAatqG,GACf,MAAMogF,EAAAA,GAAAA,oBAA4BJ,EAAM,qBAAoBhgF,MAE9D,OAAQggF,EAAIh2F,aAAay8G,YAAYzmG,EAAG,EAE1Ck+F,cACGle,GACD,SAACsD,EAAUxiF,GAA4B,2BAAfwgF,EAAU,iCAAVA,EAAU,kBAChC,MAAMgE,EAAQlF,EAAAA,GAAAA,iBAAyBJ,EAAKsD,EAAUxiF,EAAUwgF,GAC1DslB,EAAmBxmB,EAAAA,GAAAA,iBAAyBJ,EAAKsF,GACvD,OAAwB,MAApBshB,GACFxmB,EAAAA,GAAAA,IAAYJ,GAAK,IAAMI,EAAAA,GAAAA,uCAA+CkF,KAC/D,IAGFshB,EAAiB5gB,KAAKt4H,KAAK4S,GAAM,GAAKA,GAC/C,EACFsiI,KACG5iB,GACD,SAACsD,EAAUxiF,GAA4B,2BAAfwgF,EAAU,iCAAVA,EAAU,kBAChC,MAAMgE,EAAQlF,EAAAA,GAAAA,iBAAyBJ,EAAKsD,EAAUxiF,EAAUwgF,GAC1DslB,EAAmBxmB,EAAAA,GAAAA,iBAAyBJ,EAAKsF,GAC/B,MAApBshB,EAKJ2D,EAAAA,GAAAA,KAAkB3D,GAJhBxmB,EAAAA,GAAAA,IAAYJ,GAAK,IAAMI,EAAAA,GAAAA,uCAA+CkF,IAK1E,EACFud,SACG7iB,GACD,SAACwqB,EAAIC,GAA8C,UAA1CC,EAAO,UAAH,6CAAG1qB,EAAIh2F,aAAao4F,UAAUqB,IACzC,MAAMnjH,EAAI8/G,EAAAA,GAAAA,OAAeJ,EAAK,IAAKwqB,GAC7BnnE,EAAI+8C,EAAAA,GAAAA,OAAeJ,EAAK,IAAKyqB,GAC7BhnB,EAAMrD,EAAAA,GAAAA,OAAeJ,EAAK,MAAO0qB,GACjC9D,EAAmBxmB,EAAAA,GAAAA,iBAAyBJ,EAAKyD,GAC/B,MAApBmjB,EAIsB,QAA1B,EAAAA,EAAiB7gB,iBAAS,OAA1B,EAA4B4kB,YAAYrqI,EAAG+iE,GAHzC+8C,EAAAA,GAAAA,IAAYJ,GAAK,IAAMI,EAAAA,GAAAA,uCAA+CqD,IAI1E,EACFqf,WACG9iB,GACD,SAAC4qB,EAAIC,GAA8C,UAA1CH,EAAO,UAAH,6CAAG1qB,EAAIh2F,aAAao4F,UAAUqB,IACzC,MAAMqnB,EAAI1qB,EAAAA,GAAAA,OAAeJ,EAAK,IAAK4qB,GAC7Bx3I,EAAIgtH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK6qB,GAC7BpnB,EAAMrD,EAAAA,GAAAA,OAAeJ,EAAK,MAAO0qB,GACjC9D,EAAmBxmB,EAAAA,GAAAA,iBAAyBJ,EAAKyD,GAC/B,MAApBmjB,EAIsB,QAA1B,EAAAA,EAAiB7gB,iBAAS,OAA1B,EAA4BglB,QAAQD,EAAG13I,GAHrCgtH,EAAAA,GAAAA,IAAYJ,GAAK,IAAMI,EAAAA,GAAAA,uCAA+CqD,IAI1E,EACFsf,UACG/iB,GACD,WAA2C,IAA1C0qB,EAAO,UAAH,6CAAG1qB,EAAIh2F,aAAao4F,UAAUqB,IACjC,MAAMA,EAAMrD,EAAAA,GAAAA,OAAeJ,EAAK,MAAO0qB,GAEvCM,EAAAA,GAAAA,KAAwBvnB,EAC1B,EACFuf,SACGhjB,GACD,SAACn6G,GAAiD,UAA1C6kI,EAAO,UAAH,6CAAG1qB,EAAIh2F,aAAao4F,UAAUqB,IACxC,MAAMA,EAAMrD,EAAAA,GAAAA,OAAeJ,EAAK,MAAO0qB,GACjC9D,EAAmBxmB,EAAAA,GAAAA,iBAAyBJ,EAAKyD,GAC/B,MAApBmjB,GAIJA,EAAiB/gI,MAAyB,iBAAVA,EAAqBA,GAAQsjH,EAAAA,EAAAA,IAAatjH,GAChD,QAA1B,EAAA+gI,EAAiB7gB,iBAAS,OAA1B,EAA4BtgH,YAJ1B26G,EAAAA,GAAAA,IAAYJ,GAAK,IAAMI,EAAAA,GAAAA,uCAA+CqD,IAK1E,EACF2a,KAAOpe,GAASuD,IACd,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAE3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wCAChB,EAET,GAAIjgF,EAAOi2C,eAET,OADAoqC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,gCAA+BjgF,EAAOe,gBACvD,EAET,IAAKnxC,EAAAA,GAAAA,WAAkBW,EAAAA,qBAAAA,MACrB,MAAM8vH,EAAAA,GAAAA,oBAA4BJ,EAAK,uCAEzC,GAAIjgF,EAAOu2C,cAAgBv2C,EAAOkrG,qBAChC,MAAM7qB,EAAAA,GAAAA,oBAA4BJ,EAAK,kDAIzC,OAFAjgF,EAAOi2C,gBAAiB,EACxBoqC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,+BAA8BjgF,EAAOe,oCACtD,CAAI,EAEbu9F,SAAWre,GAASuD,IAClB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wCAChB,EAET,IAAKrwH,EAAAA,GAAAA,WAAkBW,EAAAA,qBAAAA,UACrB,MAAM8vH,EAAAA,GAAAA,oBAA4BJ,EAAK,6CASzC,OAPKjgF,EAAOk2C,YAKVmqC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,oCAAmCjgF,EAAOe,gBAJlEs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,6BAA4BjgF,EAAOe,qCAC3Df,EAAOk2C,aAAc,IACnBl2C,EAAOu2C,gBAIJ,CAAI,EAEbgoD,SAAWte,GAASuD,IAClB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wCAChB,EAET,IAAKrwH,EAAAA,GAAAA,WAAkBW,EAAAA,qBAAAA,UACrB,MAAM8vH,EAAAA,GAAAA,oBAA4BJ,EAAK,6CASzC,OAPKjgF,EAAOm2C,YAKVkqC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,oCAAmCjgF,EAAOe,gBAJlEs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,6BAA4BjgF,EAAOe,qCAC3Df,EAAOm2C,aAAc,IACnBn2C,EAAOu2C,gBAIJ,CAAI,EAEbioD,UAAYve,GAASuD,IACnB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wCAChB,EAET,IAAKrwH,EAAAA,GAAAA,WAAkBW,EAAAA,qBAAAA,WACrB,MAAM8vH,EAAAA,GAAAA,oBAA4BJ,EAAK,8CASzC,OAPKjgF,EAAOo2C,aAKViqC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,qCAAoCjgF,EAAOe,gBAJnEs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,8BAA6BjgF,EAAOe,sCAC5Df,EAAOo2C,cAAe,IACpBp2C,EAAOu2C,gBAIJ,CAAI,EAEbkoD,SAAWxe,GAASuD,IAClB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wCAChB,EAET,IAAKrwH,EAAAA,GAAAA,WAAkBW,EAAAA,qBAAAA,UACrB,MAAM8vH,EAAAA,GAAAA,oBAA4BJ,EAAK,6CASzC,OAPKjgF,EAAOq2C,aAKVgqC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,qCAAoCjgF,EAAOe,gBAJnEs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,6BAA4BjgF,EAAOe,sCAC3Df,EAAOq2C,cAAe,IACpBr2C,EAAOu2C,gBAIJ,CAAI,EAEbmoD,UAAYze,GAASuD,IACnB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,KAAMf,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wCAChB,EAET,IAAKrwH,EAAAA,GAAAA,WAAkBW,EAAAA,qBAAAA,WACrB,MAAM8vH,EAAAA,GAAAA,oBAA4BJ,EAAK,8CASzC,OAPKjgF,EAAOs2C,YAKV+pC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,sCAAqCjgF,EAAOe,gBAJpEs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,8BAA6BjgF,EAAOe,uCAC5Df,EAAOs2C,aAAc,IACnBt2C,EAAOu2C,gBAIJ,CAAI,EAEbooD,IACG1e,GACD,SAACkrB,GAA8C,IAAjCC,EAAiB,UAAH,6CAAG,EAC7B,MAAMzpG,EAAO0+E,EAAAA,GAAAA,WAAmBJ,EAAK,aAAckrB,GAC7CE,EAAUhrB,EAAAA,GAAAA,WAAmBJ,EAAKmrB,GAAgB,2BAFrB3nB,EAAK,iCAALA,EAAK,kBAGxC,MAAMzjG,EAAOqgG,EAAAA,GAAAA,WAAmBJ,EAAKwD,GAC/B6nB,EAAerrB,EAAIh2F,aAAao5F,YAEtC,OAAOkoB,EAAAA,EAAAA,IAAoB,MAAOD,EAAc3pG,EAAM3hB,EAAMigG,EAAIh2F,aAAcohH,EAChF,EACFhyB,KACG4G,GACD,SAACkrB,EAAa3nB,GAA4C,IAAjC4nB,EAAiB,UAAH,6CAAG,EACxC,MAAMzpG,EAAO0+E,EAAAA,GAAAA,WAAmBJ,EAAK,aAAckrB,GAC7CpqG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3C6nB,EAAUhrB,EAAAA,GAAAA,WAAmBJ,EAAKmrB,GAAgB,2BAHV3nB,EAAK,iCAALA,EAAK,kBAInD,MAAMzjG,EAAOqgG,EAAAA,GAAAA,WAAmBJ,EAAKwD,GAC/BzjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAOwqG,EAAAA,EAAAA,IAAoB,OAAQvrG,EAAQ2B,EAAM3hB,EAAMigG,EAAIh2F,aAAcohH,EAC3E,EACFzM,MACG3e,GACD,SAACkrB,GAA8C,IAAjCC,EAAiB,UAAH,6CAAG,EAC7B,MAAMzpG,EAAO0+E,EAAAA,GAAAA,WAAmBJ,EAAK,aAAckrB,GAC7CE,EAAUhrB,EAAAA,GAAAA,aAAqBJ,EAAKmrB,GAAgB,2BAFvB3nB,EAAK,iCAALA,EAAK,kBAGxC,MAAMzjG,EAAOqgG,EAAAA,GAAAA,WAAmBJ,EAAKwD,GACrCtoF,YAAW,KACT,MAAMmwG,GAAe97I,EAAAA,EAAAA,IAAUywH,EAAIh2F,aAAa8W,UAChD,GAAoB,MAAhBuqG,EACF,MAAMjrB,EAAAA,GAAAA,oBAA4BJ,EAAK,uDAGzC,OAAOsrB,EAAAA,EAAAA,IAAoB,QAASD,EAAc3pG,EAAM3hB,EAAMigG,EAAIh2F,aAAcohH,EAAQ,GACvFA,EAAQ1pB,YAEXtB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,iBAAgBt+E,SAAY0pG,EAAQ1pB,wBAExDe,EAAAA,EAAAA,GAAiBzC,EAAIh2F,eACvBo2F,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,cAE3B,EACF4e,KACG5e,GACD,SAACsD,GAAkE,IAAxDxiF,EAAW,UAAH,6CAAGk/E,EAAIh2F,aAAa8W,SAAQ,2BAAKwgF,EAAU,iCAAVA,EAAU,kBAC5D,MAAMgE,EAAQlF,EAAAA,GAAAA,iBAAyBJ,EAAKsD,EAAUxiF,EAAUwgF,GAChE,IAAI93F,EACJ,MAAM+hH,EAA6B,iBAAVjmB,EACzB,GAAIimB,EAEF/hH,GAAM09G,EAAAA,EAAAA,GAAsB5hB,OACvB,CAEL,QAAiBnlH,IAAbmjH,EACF,MAAMlD,EAAAA,GAAAA,oBAA4BJ,EAAK,sDAGzC,MAAMonB,EAAQhnB,EAAAA,GAAAA,wBAAgCJ,EAAKsF,EAAM5B,WAAY4B,EAAMxkF,SAAUwkF,EAAMvlG,MAC3F,GAAc,OAAVqnH,EAEF,OADAhnB,EAAAA,GAAAA,IAAYJ,GAAK,IAAMI,EAAAA,GAAAA,uCAA+CkF,MAC/D,EAGT97F,GAAM,EACN,IAAK,MAAMi6F,KAAO2jB,EAAMt7H,OACtB0d,KAAQ09G,EAAAA,EAAAA,GAAsBzjB,EAElC,CAEA,OAAIj6F,GACE+hH,EACFnrB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,2BAA0BsF,MAElDlF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWsD,UAAiBxiF,kBAAwB8kF,EAAAA,EAAAA,GAActE,SAErF,IAEHiqB,EACFnrB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,sBAAqBsF,MAE7ClF,EAAAA,GAAAA,IACEJ,GACA,IAAO,2BAA0BsD,UAAiBxiF,kBAAwB8kF,EAAAA,EAAAA,GAActE,QAGrF,EAEX,EACFud,QACG7e,GACD,WAAgE,IAA/DuD,EAAY,UAAH,6CAAGvD,EAAIh2F,aAAa8W,SAAU0qG,IAAe,UAAH,+CAClD,MAAM1qG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CkoB,IAAgBD,EAChBzrG,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAEtC,IAAI4qG,EAAgB,EAEpB,IAAK,MAAMtE,KAASrnG,EAAOsnG,iBAAiB91I,SAC1C,IAAK,MAAMkyH,KAAO2jB,EAAMt7H,OAClB2/H,GAAehoB,GAAOzD,EAAIh2F,aAAay5F,OAC3CyjB,EAAAA,EAAAA,GAAsBzjB,KACpBioB,GAKN,OAFAtrB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,2BAA0BjgF,EAAOe,eAElD4qG,EAAgB,CACzB,EACF5M,KAAO9e,GAAQ,KAGb,MAFAI,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,gBACvByC,EAAAA,EAAAA,GAAiBzC,EAAIh2F,cACf,IAAIw4F,EAAAA,EAAYxC,EAAIh2F,aAAa,EAEzCg1G,IAAMhf,GAAQ,CAAC2rB,EAAQC,EAAcC,KACnC,MAAM7uB,EAAcoD,EAAAA,GAAAA,OAAeJ,EAAK,cAAe4rB,GACjDE,EAAS1rB,EAAAA,GAAAA,OAAeJ,EAAK,SAAU6rB,GAAW7rB,EAAIh2F,aAAa8W,UACnEirG,EAAa3rB,EAAAA,GAAAA,UAAkBJ,EAAKhD,GACpCgvB,EAAe5rB,EAAAA,GAAAA,UAAkBJ,EAAK8rB,GACtCr2D,EAAQlgC,MAAMyK,QAAQ2rF,GAAUA,EAAS,CAACA,GAC1CM,EAAmB,GACnBC,EAAkC,GAExC,IAAK,MAAMtzD,KAAQnD,EAAO,CACxB,MAAM/zC,EAAO0+E,EAAAA,GAAAA,SAAiBJ,EAAK,QAASpnC,GAC5C,IAAIiE,EAAAA,GAAAA,IAAmBn7C,KAASyqG,EAAAA,GAAAA,GAAiBzqG,GAC/CwqG,EAAaxuI,KAAKgkC,OADpB,CAIA,IAAKA,EAAK/vC,SAAS,QACjB,MAAMyuH,EAAAA,GAAAA,oBAA4BJ,EAAK,gDAEzCisB,EAAKvuI,KAAKgkC,EAJV,CAKF,CAEA,IAAI0qG,GAAa,EAEjB,IAAK,MAAMC,KAAmBH,EAAc,CAC1C,MAAMI,EAAoBN,EAAaO,eAAeF,GACtD,IAAKC,EAAmB,CACtBlsB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,SAAQqsB,uBAChCD,GAAa,EACb,QACF,CAEA,MAAMh2G,EAAS21G,EAAWS,mBAAmBH,EAAiBC,EAAkBn9I,SAChFixH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,eAAcqsB,UAAwBL,EAAalrG,eAAeirG,EAAWjrG,aACjG1K,EAAO2mD,aACTqjC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWqsB,wBAAsCN,EAAWjrG,YAExF,CAGA,IAAK,MAAM2rG,KAAeR,EACFD,EAAaruF,SAAShwD,MAAM6pE,GAAYA,IAAYi1E,IAOtDV,EAAWpuF,SAAShwD,MAAM6pE,GAAYA,IAAYi1E,IAEpErsB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,SAAQysB,sBAAgCV,EAAWjrG,gBAK7EirG,EAAWpuF,SAASjgD,KAAK+uI,GACzBrsB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,SAAQysB,sBAAgCV,EAAWjrG,iBAbzEs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,SAAQysB,uBAChCL,GAAa,GAejB,OAAOA,CAAU,EAEnBnN,GAAKjf,GAAQ,CAACuD,EAAWmpB,KACvB,MAAM5rG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3Cp6E,EAAYi3E,EAAAA,GAAAA,OAAeJ,EAAK,YAAa0sB,GAAc,IAC3D3sG,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAEhC6rG,EAAe,IAChB5sG,EAAOpjB,UAAUjvB,KAAKi6B,GAAaA,EAASqY,QAC5CD,EAAO4d,YACP5d,EAAO1vC,YACP0vC,EAAOzuC,QAAQwa,UACfi0B,EAAO6sG,UAAU9gI,QAGtB,OAAKq9B,EACEwjG,EAAa3/I,QAAQ0E,IAAc,IAAMA,GAAUlD,SAAS26C,KAAYr7C,OADxD6+I,EAAa7+I,MACiD,EAEvFqxI,iBAAkB,IAAM,IACfgH,EAAAA,EAAAA,KAAmBgB,IAAE,CAC1BZ,YAAaY,EAAGZ,eACbnmB,EAAAA,GAAAA,0BAAkC+mB,EAAG5hB,mBAG5C2Z,GACGlf,GACD,WAA2C,IAA1CuD,EAAY,UAAH,6CAAGvD,EAAIh2F,aAAa8W,SAC5B,MAAMA,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAChC+rG,EAA2B,GACjC,IAAK,MAAMzF,KAASrnG,EAAOsnG,iBAAiB91I,SAC1C,IAAK,MAAMkrF,KAAU2qD,EAAM71I,SACzBs7I,EAAUnvI,KAAK,CACbhM,SAAU+qF,EAAO/qF,SACjBm2E,QAAS4U,EAAO5U,QAChB9nD,KAAM08D,EAAO18D,KAAKjG,QAClB2pG,IAAKhnC,EAAOgnC,IACZ8C,UAAW9pC,EAAO8pC,YAIxB,OAAOsmB,CACT,EACFzN,cAAgBpf,GAASuD,IACvB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAEjD,OADenD,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACxBk1C,cAAc,EAE9BqpD,YAAcrf,GAAQ,IAAMA,EAAIh2F,aAAa8W,SAC7Cw+F,gBAAkBtf,GAAQ,KACxBrwH,EAAAA,GAAAA,oBACAywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWrwH,EAAAA,GAAAA,OAAAA,YAC5BA,EAAAA,GAAAA,OAAAA,SAET4vI,sBAAuB,IAAM,KACpB,CACLp9G,OAAQxyB,EAAAA,GAAAA,MAAAA,eACRm9I,MAAOn9I,EAAAA,GAAAA,MAAAA,cACPmb,MAAOnb,EAAAA,GAAAA,MAAAA,cACPo9I,OAAQp9I,EAAAA,GAAAA,MAAAA,eAGZ6vI,sBAAuB,IAAM,KACpB,CACLwN,WAAYr9I,EAAAA,GAAAA,MAAAA,mBACZ21G,aAAc31G,EAAAA,GAAAA,MAAAA,2BACdqzH,QAASrzH,EAAAA,GAAAA,MAAAA,sBACTs9I,SAAUt9I,EAAAA,GAAAA,MAAAA,uBACVu9I,UAAWv9I,EAAAA,GAAAA,MAAAA,0BAGfie,sBACGoyG,GACD,WAA4E,IAA3E8E,EAAK,UAAH,6CAAGn1H,EAAAA,GAAAA,SAAiBw9I,EAAO,UAAH,6CAAGx9I,EAAAA,GAAAA,cAAqBA,EAAAA,GAAAA,UAAmB,EACpE,GAAIA,EAAAA,GAAAA,cAAqB,IAAM,GAAyB,IAApBA,EAAAA,GAAAA,SAClC,MAAMywH,EAAAA,GAAAA,oBAA4BJ,EAAK,kCACzC,MAAMx0G,EAAIvX,KAAKguB,MAAMm+F,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,IACxCv5G,EAAMtX,KAAKguB,MAAMm+F,EAAAA,GAAAA,OAAeJ,EAAK,MAAOmtB,IAClD,GAAI3hI,EAAI,GAAKA,EAAI,GAAI,MAAM,IAAIuF,MAAM,8BACrC,GAAIxF,EAAM,EAAG,MAAM,IAAIwF,MAAM,oBAE7B,OAAOpd,OAAO4wE,OAAO,CAAC,GAAG32D,EAAAA,EAAAA,IAAsBpC,EAAGD,GACpD,EACF63G,UAAYpD,GAASuD,IACnB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,UACzEf,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,MAAO,CACLA,SAAUf,EAAOe,SACjB4+D,GAAI3/D,EAAO2/D,GACXzpB,YAAal2C,EAAOk2C,YACpBC,YAAan2C,EAAOm2C,YACpBC,aAAcp2C,EAAOo2C,aACrBC,aAAcr2C,EAAOq2C,aACrBC,YAAat2C,EAAOs2C,YACpBL,eAAgBj2C,EAAOi2C,eACvBvjF,SAAUstC,EAAOttC,SACjBuyH,cAAejlF,EAAOilF,cACtBzjB,QAASxhE,EAAOwhE,QAChBjvG,OAAQytC,EAAOztC,OACf2yH,iBAAkBllF,EAAOklF,iBACzBpkF,kBAAmBd,EAAOc,kBAC1BnxC,kBAAmBqwC,EAAOrwC,kBAC1BimB,eAAgBoqB,EAAOpqB,eACvB4gE,eAAgBx2C,EAAOw2C,eACvBC,cAAez2C,EAAOy2C,cACtBpkF,eAAgB2tC,EAAO3tC,eACvBD,SAAU4tC,EAAO5tC,SACjB84I,qBAAsBlrG,EAAOkrG,qBAC7B30D,cAAev2C,EAAOu2C,cACtBkmB,qBAAsBz8D,EAAOy8D,qBAC7B4wC,aAAcrtG,EAAOqtG,aACtB,EAEH3N,wBAA0Bzf,GAASuD,IACjC,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5B,EAEc,QAAnBA,EAAOe,UAETs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,6BAA2Bv1G,EAAAA,EAAAA,IAAY9a,EAAAA,GAAAA,WACxDA,EAAAA,GAAAA,QAETywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,aAAWv1G,EAAAA,EAAAA,IAAYs1B,EAAO3tC,wBAAwB2tC,EAAOe,cAC9Ef,EAAO3tC,iBAZZguH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAWmB,EAE9B0f,uBAAyB1f,GAASuD,IAChC,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5B,GAETqgF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,aAAWqtB,EAAAA,EAAAA,IAAettG,EAAOw2C,wBAAwBx2C,EAAOe,cACjFf,EAAOw2C,iBAPZ6pC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAMmB,EAE9B2f,2BAA6B3f,GAASuD,IACpC,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5B,GAETqgF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,aAAWqtB,EAAAA,EAAAA,IAAettG,EAAOpqB,wBAAwBoqB,EAAOe,cACjFf,EAAOpqB,iBAPZyqG,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAMmB,EAE9B4f,0BAA4B5f,GAASuD,IACnC,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5B,GAETqgF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,aAAWqtB,EAAAA,EAAAA,IAAettG,EAAOy2C,sBAAsBz2C,EAAOe,aAC/Ef,EAAOy2C,gBAPZ4pC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAMkB,EAE7B6f,8BAAgC7f,GAASuD,IACvC,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5B,GAETqgF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,aAAW56G,EAAAA,EAAAA,IAAqB26B,EAAOy8D,qBAAsB,WAAWz8D,EAAOe,cAChGf,EAAOy8D,uBAPZ4jB,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAMyB,EAEpC8f,kBAAoB9f,GAASuD,IAC3B,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5B,GAETqgF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,aAAWv1G,EAAAA,EAAAA,IAAYs1B,EAAO5tC,kBAAkB4tC,EAAOe,cACxEf,EAAO5tC,WAPZiuH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAMa,EAExB+f,gBAAkB/f,GAASuD,IACzB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5B,GAETqgF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWjgF,EAAOqtG,qBAAqBrtG,EAAOe,cAC/Df,EAAOqtG,eAPZhtB,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAMiB,EAE5BggB,0BAA4BhgB,GAASuD,IACnC,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5B,GAETqgF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWjgF,EAAOkrG,6BAA6BlrG,EAAOe,cACvEf,EAAOkrG,uBAPZ7qB,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,EAMyB,EAEpCigB,gBAAkBjgB,GAASuD,IACzB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAEtC,OADAs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,aAAWn2B,EAAAA,EAAAA,IAAU9pD,EAAOztC,YAC7CytC,EAAOztC,MAAM,EAEtB4tI,iBAAmBlgB,GAASuD,IAC1B,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAEtC,OADAs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,aAAWn2B,EAAAA,EAAAA,IAAU9pD,EAAOwhE,aAC7CxhE,EAAOwhE,OAAO,EAEvB4+B,aAAengB,GAASuD,IACtB,MAAMziF,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GACjD,OAA+B,QAAxBh0H,EAAAA,EAAAA,IAAUuxC,EAAkB,EAErCs/F,WAAapgB,GAAQ,CAACstB,EAAW/pB,KAC/B,MAAM7xH,EAAW0uH,EAAAA,GAAAA,OAAeJ,EAAK,WAAYstB,GAC3CxsG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,UACzEf,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAChCY,GAAOu6C,EAAAA,GAAAA,IAAgBvqF,EAAUsuH,EAAIh2F,aAAa94B,MACxD,IAAKwwC,EAAM,OAAO,EAClB,IAAIm7C,EAAAA,GAAAA,IAAmBn7C,GAAO,OAAO3B,EAAOzuC,QAAQmL,IAAIilC,GACxD,IAAIyqG,EAAAA,GAAAA,GAAiBzqG,GAAO,OAAO3B,EAAO6sG,UAAUnwI,IAAIilC,GACxD,GAAIA,EAAK/vC,SAAS,SAAW+vC,EAAK/vC,SAAS,QAAS,OAAOouC,EAAO4d,SAASnvD,SAASkzC,GACpF,IAAI6rG,EAAAA,GAAAA,GAAqB7rG,GAAO,QAAS3B,EAAOpjB,UAAUhvB,MAAK,QAAC,GAAEqyC,GAAI,SAAKA,IAAO0B,CAAI,IACtF,MAAM8rG,EAAY9rG,EAAK/hB,cACvB,OAAOogB,EAAO1vC,SAAS3C,KAAK+/I,GAAgBA,EAAY9tH,gBAAenxB,SAASg/I,EAAU,EAE5Fn5B,UACG2L,GACD,SAAChgF,EAAIc,GAA4B,2BAAfwgF,EAAU,iCAAVA,EAAU,kBAC1B,MAAMgE,EAAQlF,EAAAA,GAAAA,iBAAyBJ,EAAKhgF,EAAIc,EAAUwgF,GAC1D,OAAgD,OAAzClB,EAAAA,GAAAA,iBAAyBJ,EAAKsF,EACvC,EACF+a,wBAAyB,IAAM,KACtBqN,EAAAA,EAAAA,MAETpN,yBAA0B,IAAM,KACvBqN,EAAAA,EAAAA,MAETpN,uBAAyBvgB,GAAS4tB,IAChC,MAAMt6I,EAAM8sH,EAAAA,GAAAA,OAAeJ,EAAK,MAAO4tB,GAEjC3jI,GAAOuyG,EAAAA,EAAAA,IAAsBlpH,GACnC,OAAI2W,IAASnG,KACPxQ,GAAMq6I,EAAAA,EAAAA,MACRvtB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,0BAAyB1sH,wDAEjD8sH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,0BAAyB1sH,qCAE5CwQ,KAGFmG,CAAI,EAEbsxG,eAAiByE,GAAQ,CAAC6tB,EAAOD,KAC/B,MAAM18I,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACnCv6I,EAAM8sH,EAAAA,GAAAA,OAAeJ,EAAK,MAAO4tB,GACvC,IAAIE,EAAcv6H,OAAOriB,GAEzB,GADA48I,EAAcA,EAAY19I,QAAQ,OAAQ,IACvB,IAAf09I,EAEF,OADA1tB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,+BAA8B8tB,OAC/C,GAGT,GAAIn+I,EAAAA,GAAAA,iBAAAA,SAAkC+9I,EAAAA,EAAAA,MAMpC,OALAttB,EAAAA,GAAAA,IACEJ,GACA,IACG,0CAAwC0tB,EAAAA,EAAAA,iDAEtC,GAGT,MAAMzjI,GAAOuyG,EAAAA,EAAAA,IAAsBlpH,GACnC,GAAI2W,IAASnG,IAOX,OANIxQ,GAAMq6I,EAAAA,EAAAA,MACRvtB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,0BAAyB1sH,wDAEjD8sH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,0BAAyB1sH,qCAG5C,GAGT,GAAI3D,EAAAA,GAAAA,MAAesa,EAEjB,OADAm2G,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,8CAA4Cv1G,EAAAA,EAAAA,IAAYR,OACzE,GAET,MAAM8jI,GAAUC,EAAAA,EAAAA,IAAyB,CACvCtuC,IAAIuuC,EAAAA,EAAAA,MACJntG,SAAUgtG,EACV7oB,iBAAkB,GAClBD,eAAe,EACfkpB,aAAa,EACbrtG,mBAAmB,EACnBvuC,OAAQgB,KAEV66I,EAAAA,EAAAA,IAAgBJ,GAEhBp+I,EAAAA,GAAAA,iBAAAA,KAA6Bo+I,EAAQjtG,UACrC,MAAMs5E,EAAezqH,EAAAA,GAAAA,kBAKrB,OAJAyqH,EAAaz5E,iBAAiBjjC,KAAKqwI,EAAQjtG,UAC3CitG,EAAQptG,iBAAiBjjC,KAAK08G,EAAat5E,UAC3CnxC,EAAAA,GAAAA,UAAiBsa,EAAM,WACvBm2G,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,uCAAsC+tB,EAAQjtG,kBAAiBr2B,EAAAA,EAAAA,IAAYR,OAC5F8jI,EAAQjtG,QAAQ,EAGzB0/F,8BAAgCxgB,GAAQ,CAACuD,EAAWqqB,KAClD,MAAM9sG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CjwH,EAAM8sH,EAAAA,GAAAA,OAAeJ,EAAK,MAAO4tB,GACvC,IACE,OAAOpN,EAAAA,EAAAA,IAA8B1/F,EAAUxtC,EAIjD,CAHE,MAAOyjE,GAEP,OADAqpD,EAAAA,GAAAA,IAAYJ,GAAK,IAAMzsG,OAAOwjD,MACtB,CACV,GAGF0pE,uBAAyBzgB,GAAQ,CAACuD,EAAWqqB,KAC3C,MAAM9sG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CjwH,EAAM8sH,EAAAA,GAAAA,OAAeJ,EAAK,MAAO4tB,GACvC,IAEE,OADAnN,EAAAA,EAAAA,IAAuB3/F,EAAUxtC,IAC1B,CAIT,CAHE,MAAOyjE,GAEP,OADAqpD,EAAAA,GAAAA,IAAYJ,GAAK,IAAMzsG,OAAOwjD,MACvB,CACT,GAGF2pE,sBAAwB1gB,GAAQ,CAACuD,EAAW6qB,KAC1C,MAAMttG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3C8qB,EAAUjuB,EAAAA,GAAAA,OAAeJ,EAAK,UAAWouB,GAC/C,IAEE,OADA1N,EAAAA,EAAAA,IAAsB5/F,EAAUutG,IACzB,CAIT,CAHE,MAAOt3E,GAEP,OADAqpD,EAAAA,GAAAA,IAAYJ,GAAK,IAAMzsG,OAAOwjD,MACvB,CACT,GAGF4pE,aAAe3gB,GAAS6tB,IACtB,MAAM38I,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACzC,IAAIC,EAAcv6H,OAAOriB,GACzB48I,EAAcA,EAAY19I,QAAQ,SAAU,IAC5C,MAAM2vC,GAASxwC,EAAAA,EAAAA,IAAUu+I,GACzB,KAAM/tG,aAAkBtwC,EAAAA,GAEtB,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,+BAA8B8tB,QAC/C,EAGT,IAAK/tG,EAAOc,mBAAyC,SAApBd,EAAOe,SAEtC,OADAs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,yCAChB,EAGT,MAAMl/E,EAAWf,EAAOe,SAGxB,GAAIf,EAAOilF,cAET,OADA5E,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,yEAChB,EAIT,GAAIl/E,IAAak/E,EAAIh2F,aAAa8W,SAEhC,OADAs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,yDAChB,EAIT,GAAIjgF,EAAOsnG,iBAAiB37I,KAAO,EAEjC,OADA00H,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yBAAwBl/E,8CACzC,EAIT,IAAIyoF,GAAQ,EACZ,IAAK,IAAI/4H,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,iBAAAA,SAAkCa,EACpD,GAAIswC,GAAYnxC,EAAAA,GAAAA,iBAAwBa,GAAI,CAC1C+4H,GAAQ,EACR55H,EAAAA,GAAAA,iBAAAA,OAA+Ba,EAAG,GAClC,KACF,CAGF,IAAK+4H,EAKH,OAJAnJ,EAAAA,GAAAA,IACEJ,GACA,IAAO,6BAA4Bl/E,4DAE9B,GAITwtG,EAAAA,EAAAA,IAAaxtG,GAGbyoF,GAAQ,EACR,MAAMnP,EAAezqH,EAAAA,GAAAA,kBACrB,IAAK,IAAIa,EAAI,EAAGA,EAAI4pH,EAAaz5E,iBAAiBhyC,SAAU6B,EAC1D,GAAIswC,GAAYs5E,EAAaz5E,iBAAiBnwC,GAG5C,OAFA4pH,EAAaz5E,iBAAiBtjC,OAAO7M,EAAG,GACxC4vH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,mBAAkB8tB,OACnC,EAKX,OADA1tB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yBAAwBl/E,4DACzC,CAAK,EAEd8/F,oBAAqB,IAAM,KACzB,MAAMp3G,EAAgB,GAItB,OAHA75B,EAAAA,GAAAA,iBAAAA,SAAgC,SAAUmxC,GACxCtX,EAAI9rB,KAAKojC,EACX,IACOtX,CAAG,EAEZy3G,UAAYjhB,GAAQ,CAACuuB,EAAa9gJ,KAChC,MAAMo3H,EAAazE,EAAAA,GAAAA,WAAmBJ,EAAKuuB,GAC3C,GAAoB,iBAAT9gJ,GAAqC,iBAATA,EACrC,MAAM2yH,EAAAA,GAAAA,oBACJJ,EACC,+EAGL,OAAOihB,EAAAA,GAAAA,IAAUpc,EAAYp3H,EAAK,EAEpCozI,MAAQ7gB,GAAQ,CAACstB,EAAWkB,EAAOC,KACjC,MAAMC,EAAWtuB,EAAAA,GAAAA,SAAiBJ,EAAK,WAAYstB,GAC7C7/I,EAAO2yH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQwuB,GAAS,IAC5CG,EAAOvuB,EAAAA,GAAAA,OAAeJ,EAAK,OAAQyuB,GAAS,KAE5C1uG,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKA,EAAIh2F,aAAa8W,UAEvD,IAAI+7C,EAAAA,GAAAA,IAAmB6xD,GAAW,CAChC,GAAa,MAATC,EAEF,YADA5uG,EAAOi9C,kBAAkB0xD,EAAUjhJ,GAGrC,MAAMmhJ,EAAiB7uG,EAAOzuC,QAAQ6L,IAAIuxI,GACpCG,EAAeD,EAAiBA,EAAelyD,KAAO,GAE5D,YADA38C,EAAOi9C,kBAAkB0xD,EAAUG,EAAephJ,EAEpD,CACA,KAAK0+I,EAAAA,GAAAA,GAAiBuC,GACpB,MAAMtuB,EAAAA,GAAAA,oBAA4BJ,EAAM,8CAA6C0uB,iBAEvF,GAAa,MAATC,EAEF,YADA5uG,EAAO+uG,gBAAgBJ,EAAUjhJ,GAGnC,MAAMshJ,EAAmBhvG,EAAO6sG,UAAUzvI,IAAIuxI,GACxCM,GAAeD,aAAgB,EAAhBA,EAAkB91E,OAAQ,GAC/Cl5B,EAAO+uG,gBAAgBJ,EAAmB,MAATC,EAAelhJ,EAAOuhJ,EAAevhJ,EAAK,EAE7EqzI,aAAe9gB,GAAQ,CAACuuB,EAAa9gJ,KACnC,MAAMo3H,EAAazE,EAAAA,GAAAA,WAAmBJ,EAAKuuB,GAC3C,GAAoB,iBAAT9gJ,GAAqC,iBAATA,EACrC,MAAM2yH,EAAAA,GAAAA,oBACJJ,EACC,+EAGL,OAAO8gB,EAAAA,GAAAA,IAAajc,EAAYp3H,EAAK,EAEvCyzI,SAAWlhB,GAASuuB,IAClB,MAAM1pB,EAAazE,EAAAA,GAAAA,WAAmBJ,EAAKuuB,GAC3C,OAAOrN,EAAAA,GAAAA,GAASrc,EAAW,EAE7Bkc,KAAO/gB,GAASstB,IAAc,MAC5B,MAAM5rG,EAAO0+E,EAAAA,GAAAA,SAAiBJ,EAAK,WAAYstB,GAC/C,OAAKzwD,EAAAA,GAAAA,IAAmBn7C,KAAUyqG,EAAAA,GAAAA,GAAiBzqG,IAEjB,QAA3B,EADQs+E,EAAIh2F,aAAao5F,YAClBmpB,eAAe7qG,UAAK,aAA3B,EAA6BvyC,UAAW,GAFkB,EAEhB,EAEnD6xI,KAAOhhB,GAASuuB,IACd,MAAM1pB,EAAazE,EAAAA,GAAAA,WAAmBJ,EAAKuuB,GAC3C,OAAOU,EAAAA,GAAAA,IAASpqB,EAAW,EAE7B5pH,MAAQ+kH,GAASkvB,IACf,MAAMxtG,EAAO0+E,EAAAA,GAAAA,SAAiBJ,EAAK,OAAQkvB,GAC3C,KAAKryD,EAAAA,GAAAA,IAAmBn7C,MAAUyqG,EAAAA,GAAAA,GAAiBzqG,GACjD,MAAM0+E,EAAAA,GAAAA,oBAA4BJ,EAAM,mCAAkCkvB,KAE5E,MAAMnvG,EAASigF,EAAIh2F,aAAao5F,YAC1BxqC,EAAO74C,EAAOwsG,eAAe7qG,GACnC,IAAKk3C,EAAM,MAAMwnC,EAAAA,GAAAA,oBAA4BJ,EAAM,GAAEt+E,uBAA0B3B,EAAOe,YAEtF83C,EAAKzpF,QAAU,EAAE,EAEnB8zI,UAAYjjB,GAASuuB,IACnB,MAAM1pB,EAAazE,EAAAA,GAAAA,WAAmBJ,EAAKuuB,GAC3C,OAAOtL,EAAAA,GAAAA,IAAUpe,EAAW,EAE9Bsc,cAAgBnhB,GAASuuB,IACvB,MAAM1pB,EAAazE,EAAAA,GAAAA,WAAmBJ,EAAKuuB,GAC3C,OAAOY,EAAAA,GAAAA,IAAWtqB,EAAW,EAE/Buc,GAAKphB,GAAQ,CAACqqB,EAAK9mB,KACjB,MAAMmrB,EAAWtuB,EAAAA,GAAAA,SAAiBJ,EAAK,KAAMqqB,GACvCvpG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,UACzErvC,EAAI2uH,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACjC,IAAK4tG,EAEH,OADAtuB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,gCAA+B0uB,OAChD,EAGT,MAAMj0G,EAAShpC,EAAEmrF,WAAW8xD,GAK5B,OAJKj0G,EAAOjR,KACV42F,EAAAA,GAAAA,IAAYJ,GAAK,IAAMvlF,EAAOpR,IAAM,KAG/BoR,EAAOjR,GAAG,EAEnB63G,cAAgBrhB,GAAQ,CAACkrB,EAAa3nB,KACpC,MAAMG,EAAatD,EAAAA,GAAAA,WAAmBJ,EAAK,aAAckrB,GACnDpqG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAEjD,OADenD,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACxBuzE,UAAUqP,EAAW,EAErC4d,WAAathB,GAAQ,CAACkrB,EAAa3nB,KACjC,MAAM7hF,EAAO0+E,EAAAA,GAAAA,WAAmBJ,EAAK,aAAckrB,GAC7CpqG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,IAAIsuG,GAAM,EAEV,MAAMC,GAAUC,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,cAAa7tG,IAClD,IAAK,MAAOzyC,EAAKm4I,KAAUrnG,EAAOsnG,iBAChC,GAAKgI,EAAQG,KAAKvgJ,GAAlB,CACAmgJ,GAAM,EACN,IAAK,MAAM3rB,KAAO2jB,EAAMt7H,QACtBo7H,EAAAA,EAAAA,GAAsBzjB,EAHQ,CAMlC,OAAO2rB,CAAG,EAEZ7N,cAAgBvhB,GAAQ,IAAMA,EAAIh2F,aAAa94B,KAC/CswI,aAAexhB,GAAQ,CAACkrB,EAAa3nB,KACnC,MAAM7hF,EAAO0+E,EAAAA,GAAAA,WAAmBJ,EAAK,aAAckrB,GAC7CpqG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,UACzEf,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAChC27C,EAAS18C,EAAOzuC,QAAQ6L,IAAIukC,GAClC,IAAK+6C,EAAQ,OAAO,EAEpB,OADiBA,EAAOQ,YAAYl9C,EAAOzuC,WAEzC8uH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,qCAAoCt+E,QAAWZ,OAChE,EAEM,EAEjBukF,iBACGrF,GACD,SAAChgF,EAAIc,GAAsB,2BAAT/gB,EAAI,iCAAJA,EAAI,kBACpB,MAAMulG,EAAQlF,EAAAA,GAAAA,iBAAyBJ,EAAKhgF,EAAIc,EAAU/gB,GACpDwlG,EAAgBnF,EAAAA,GAAAA,iBAAyBJ,EAAKsF,GACpD,OAAsB,OAAlBC,EAA+B,KAC5BnF,EAAAA,GAAAA,0BAAkCmF,EAC3C,EACFkc,YACGzhB,GACD,WAA2C,IAA1CuD,EAAY,UAAH,6CAAGvD,EAAIh2F,aAAa8W,SAC5B,MAAMA,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5Bj8B,IAGqC,KAAvC84F,EAAAA,EAAAA,IAAqB78D,EAAQpwC,EAAAA,KAPlCywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,oCAChBl8G,IAOX,EACF49H,YACG1hB,GACD,WAA2C,IAA1CuD,EAAY,UAAH,6CAAGvD,EAAIh2F,aAAa8W,SAC5B,MAAMA,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5Bj8B,IAGkC,KAApCg5F,EAAAA,EAAAA,IAAkB/8D,EAAQpwC,EAAAA,KAP/BywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,oCAChBl8G,IAOX,EACF69H,cACG3hB,GACD,WAA2C,IAA1CuD,EAAY,UAAH,6CAAGvD,EAAIh2F,aAAa8W,SAC5B,MAAMA,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAC3CxjF,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAMf,aAAkBtwC,EAAAA,EAIpB2wH,EAAAA,GAAAA,oBAA4BJ,EAAKjgF,GAC5Bj8B,IAGoC,KAAtCi5F,EAAAA,EAAAA,IAAoBh9D,EAAQpwC,EAAAA,KAPjCywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,oCAChBl8G,IAOX,EACF89H,qBAAsB,IAAM,KAE1B,IAAIr8E,EAAQ,EACZ,IAAK,MAAMk3B,KAAUzqF,EAAAA,EAAAA,SACnBuzD,GAASk3B,EAAO2lC,UAAUoC,gBAAkB/nC,EAAO2lC,UAAUgE,kBAG/D,MAAO,CAAC7gE,EAAO51D,EAAAA,GAAAA,wBAAiCA,EAAAA,GAAAA,qBAA8B,KAAM,EAEtFkyI,gBACG7hB,GACD,SAAChgF,EAAIc,GAAsB,2BAAT/gB,EAAI,iCAAJA,EAAI,kBACpB,MAAMulG,EAAQlF,EAAAA,GAAAA,iBAAyBJ,EAAKhgF,EAAIc,EAAU/gB,GACpDwlG,EAAgBnF,EAAAA,GAAAA,iBAAyBJ,EAAKsF,GACpD,OAAqB,MAAjBC,GACFnF,EAAAA,GAAAA,IAAYJ,GAAK,IAAMI,EAAAA,GAAAA,uCAA+CkF,MAC9D,GAEHC,EAAcf,gBAAkBe,EAAca,iBACvD,EACF0b,sBAAuB,IAAM,KAC3B,IAAIv8E,EAAQ,EACZ,IAAK,MAAMy5D,KAAMhtH,EAAAA,EAAAA,SACfuzD,GAASy5D,EAAGoD,UAAUsC,gBAAkB1F,EAAGoD,UAAUgE,kBAEvD,OAAO7gE,CAAK,EAEdw8E,iBACG/hB,GACD,SAAChgF,EAAIc,GAAsB,2BAAT/gB,EAAI,iCAAJA,EAAI,kBACpB,MAAMulG,EAAQlF,EAAAA,GAAAA,iBAAyBJ,EAAKhgF,EAAIc,EAAU/gB,GACpDwlG,EAAgBnF,EAAAA,GAAAA,iBAAyBJ,EAAKsF,GACpD,OAAqB,MAAjBC,GACFnF,EAAAA,GAAAA,IAAYJ,GAAK,IAAMI,EAAAA,GAAAA,uCAA+CkF,MAC9D,GAEHC,EAAcb,gBAAkBa,EAAca,iBACvD,EACF4b,aACGhiB,GACD,SAAC8E,GAA8D,IAA1D2qB,EAAoB,UAAH,6CAAG,EAAGC,EAAe,UAAH,6CAAG,IAAMlG,EAAS,uCACxD,MAAMh+H,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B6qB,EAAmBvvB,EAAAA,GAAAA,OAAeJ,EAAK,mBAAoByvB,GAC3DG,EAAcxvB,EAAAA,GAAAA,OAAeJ,EAAK,cAAe0vB,GACvD,OAAO1N,EAAAA,EAAAA,IAAax2H,EAAGmkI,EAAkBC,IAAepG,EAC1D,EACF3/C,UACGm2B,GACD,SAAC8E,GAA8B,IAA1B2qB,EAAoB,UAAH,6CAAG,EACvB,MAAMjkI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B6qB,EAAmBvvB,EAAAA,GAAAA,OAAeJ,EAAK,mBAAoByvB,GACjE,OAAO5lD,EAAAA,EAAAA,IAAUr+E,EAAGmkI,EACtB,EACFpvI,cACGy/G,GACD,SAAC8E,GAAgD,IAA5C2qB,EAAoB,UAAH,6CAAG,EAAGI,EAAa,UAAH,6CAAG,IACvC,MAAMrkI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B6qB,EAAmBvvB,EAAAA,GAAAA,OAAeJ,EAAK,mBAAoByvB,GAC3DK,EAAY1vB,EAAAA,GAAAA,OAAeJ,EAAK,YAAa6vB,GACnD,OAAOtvI,EAAAA,EAAAA,IAAciL,EAAGmkI,EAAkBG,EAC5C,EAEF7N,QAAUjiB,GAAQ,CAAC8E,EAAIqlB,KACrB4F,GACE,aACA,iGAEF,MAAMvkI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7BslB,EAAShqB,EAAAA,GAAAA,OAAeJ,EAAK,SAAUmqB,GAC7C,OAAO6F,KAAQxkI,GAAG4+H,OAAOA,EAAO,EAElClI,QAAUliB,GAAQ,CAACiwB,EAAeC,KAChC,MAAMC,EAAe/vB,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBiwB,GACnDG,IAAmBF,EACzB,OAAO7/G,EAAAA,EAAAA,IAAiC8/G,EAAcC,EAAe,EAEvEjO,oBAAqB,IAAM,KACzB4N,GAAmB,2BAA4B,+CACxCpgJ,EAAAA,GAAAA,sBAETwzI,MAAQnjB,GAASqwB,IACf,MAAM74E,EAAU4oD,EAAAA,GAAAA,OAAeJ,EAAK,UAAWqwB,IAC/CptI,EAAAA,EAAAA,GAAgBu0D,GAAS,EAAK,EAEhC8lB,MACG0iC,GACD,SAACqwB,GAAgE,IAAtDC,EAAW,UAAH,6CAAGz6D,EAAAA,aAAAA,QAAsB06D,EAAY,UAAH,6CAAG,IACtD,MAAM/4E,EAAU4oD,EAAAA,GAAAA,OAAeJ,EAAK,UAAWqwB,GACzCvkJ,GAAU61B,EAAAA,GAAAA,GAAc,gBAAgB6uH,YAAYxwB,EAAKswB,GACzD/yD,EAAyB,OAAdgzD,EAAqB,KAAOnwB,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuwB,GAC7E36D,EAAAA,GAAAA,KAAoBpe,EAAS1rE,EAAyByxF,EACxD,EACF6kD,OAASpiB,GAAQ,CAACywB,EAAMC,KACtB,MAAM9mC,EAAiD,CAAC,EACxD8mC,IAAa9mC,EACb,MAAM3nB,EAAMm+B,EAAAA,GAAAA,OAAeJ,EAAK,MAAOywB,GAIvC,IAHAE,EAAAA,EAAAA,IAAOD,EAAUE,EAAAA,IAAez6I,GAC9BiqH,EAAAA,GAAAA,oBAA4BJ,EAAM,6BAA4B7pH,uBAA2B,eAErEgK,IAAlBuwI,EAASv6I,KAAoB,EAC/Bw6I,EAAAA,EAAAA,IAAOD,EAASv6I,KAAM06I,EAAAA,IAAe16I,GACnCiqH,EAAAA,GAAAA,oBAA4BJ,EAAM,kCAAiC7pH,uBAA2B,UAEhGyzG,EAAQzzG,KAAOu6I,EAASv6I,KACxB,MAAM26I,EAAa,CAAC,UAAW,OAAQ,UACvC,IAAK,CAAC,UAAW,OAAQ,UAAUtiJ,SAASo7G,EAAQzzG,MAClD,MAAMiqH,EAAAA,GAAAA,oBACJJ,EACC,mCAAkCpW,EAAQzzG,wBAAwB26I,EAAW7zI,KAAK,UAGlE,WAAjB2sG,EAAQzzG,QACVw6I,EAAAA,EAAAA,IAAOD,EAASzmC,QAAS8mC,EAAAA,IAAc56I,GACrCiqH,EAAAA,GAAAA,oBACEJ,EACC,qCAAoC7pH,oEACrC,UAGJyzG,EAAQK,QAAUymC,EAASzmC,QAAQv8G,KAAI,CAACg9G,EAAQl6G,IAAM4vH,EAAAA,GAAAA,OAAeJ,EAAM,mBAAkBxvH,KAAMk6G,KAEvG,CACA,OAAO,IAAIxoE,SAAQ,SAAUC,GAC3B6uG,EAAAA,EAAAA,KAAiB,CACf/uD,IAAKA,EACL2nB,UACAznE,QAASA,GAEb,GAAE,EAEJkgG,KAAOriB,GAAQ,CAACixB,EAAMC,EAAS3tB,KAC7B,MAAMrnC,EAAMkkC,EAAAA,GAAAA,OAAeJ,EAAK,MAAOixB,GACjCnhH,EAASswF,EAAAA,GAAAA,SAAiBJ,EAAK,SAAUkxB,GACzCpwG,EAAWyiF,EAAYnD,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,SACrFf,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACtC,OAAKhR,KAAYq8G,EAAAA,GAAAA,GAAiBr8G,KAAY+sD,EAAAA,GAAAA,IAAmB/sD,IAI1D,IAAIoS,SAAQ,SAAUC,GAC3BgvG,IAAAA,IACEj1D,GACA,SAAUzuF,GAER,OADYsyC,EAAOysG,mBAAmB18G,EAAQriC,GACtCsvF,aACNqjC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,iDAAgDlwF,UAAegR,OAChFqB,GAAQ,KAEjBi+E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,+CAA8ClwF,UAAegR,OAC9EqB,GAAQ,GACjB,GACA,QACAivG,MAAK,SAAUlsI,GAEf,OADAk7G,EAAAA,GAAAA,IAAYJ,GAAK,IAAM7kH,KAAK4mH,UAAU78G,KAC/Bi9B,GAAQ,EACjB,GACF,KApBEi+E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yBAAwBlwF,uCACzCoS,QAAQC,SAAQ,GAmBvB,EAEJmgG,iBAAkB,IAAM,IACfruI,KAAKC,MAAM3B,EAAAA,EAAAA,kBAA8B4B,EAAAA,GAAAA,sBAElDouI,UAAW,IAAM,KACf,MAAM90I,EAAO,CAEXs3B,IAAIssH,EAAAA,EAAAA,WAAU1hJ,EAAAA,GAAAA,IACdooB,QAAQs5H,EAAAA,EAAAA,WAAU1hJ,EAAAA,GAAAA,QAClB2I,KAAK+4I,EAAAA,EAAAA,WAAU1hJ,EAAAA,GAAAA,KACf2P,OAAO+xI,EAAAA,EAAAA,WAAU1hJ,EAAAA,GAAAA,OACjB8oB,KAAM9oB,EAAAA,GAAAA,KAEN2hJ,gBAAiB3hJ,EAAAA,GAAAA,gBACjBmb,MAAOnb,EAAAA,GAAAA,MACPkC,SAAUlC,EAAAA,GAAAA,SACVgsC,cAAehsC,EAAAA,GAAAA,cACf4hJ,MAAMF,EAAAA,EAAAA,WAAU1hJ,EAAAA,GAAAA,MAChB6P,SAAU7P,EAAAA,GAAAA,SAAAA,QACV6hJ,QAAS7hJ,EAAAA,GAAAA,SAmBX,OA0FJ,SACEk3H,EACA4qB,GAEA,IAAK,MAAOvgJ,EAAM0O,KAASjM,OAAO2H,QAAQm2I,GACxC99I,OAAO+U,eAAem+G,EAAK31H,EAAM,CAC/BiM,IAAK,KACH4yI,GAAmBnwI,EAAKo/E,WAAYp/E,EAAK43D,SAClC53D,EAAKxD,OAEdb,IAAMa,GAAgBwD,EAAKxD,MAAQA,EACnC2kH,YAAY,GAGlB,CAzHI2wB,CAAwBjkJ,EAAM,CAC5BkkJ,qBAAsB,CACpB3yD,WAAY,sCACZxnB,QAAS,qGACTp7D,MAAOzM,EAAAA,GAAAA,sBAETiiJ,yBAA0B,CACxB5yD,WAAY,0CACZxnB,QAAS,sGACTp7D,MAAOzM,EAAAA,GAAAA,0BAETkiJ,SAAU,CACR7yD,WAAY,0BACZxnB,QAAS,4CACTp7D,MAAOzM,EAAAA,GAAAA,YAGJlC,CAAI,EAEb+0I,gBAAiB,IAAM,KAAM,CAC3BsP,aAAcn+I,OAAO4wE,OAAO,CAAC,EAAG50E,EAAAA,GAAAA,cAChCoiJ,WAAYp+I,OAAO4wE,OAAO,CAAC,EAAG50E,EAAAA,GAAAA,gBAEhCovI,OAAS/e,GAASnsH,IAChB,GAAiB,mBAANA,EACT,MAAMusH,EAAAA,GAAAA,oBAA4BJ,EAAK,+BAEzCA,EAAIh2F,aAAa+0G,OAAS,KACxBlrI,GAAG,CACJ,EAEH4uI,GAAKziB,GAAQ,CAACqpB,EAAOwC,EAASD,KAC5B,MAAM9qG,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,OAAQqpB,GACvCtpG,EAASqgF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GAChCkxG,EAAa5xB,EAAAA,GAAAA,SAAiBJ,EAAK,SAAU6rB,GAC7CoG,EAAkB7xB,EAAAA,GAAAA,SAAiBJ,EAAK,cAAe4rB,GAE7D,KACIO,EAAAA,GAAAA,GAAiB6F,MAAgBn1D,EAAAA,GAAAA,IAAmBm1D,MACpD7F,EAAAA,GAAAA,GAAiB8F,MAAqBp1D,EAAAA,GAAAA,IAAmBo1D,GAE3D,MAAM7xB,EAAAA,GAAAA,oBAA4BJ,EAAM,0DAE1C,GAAIgyB,IAAeC,EAEjB,YADA7xB,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,sEAGzB,MAAMssB,EAAoBvsG,EAAOwsG,eAAeyF,GAChD,IAAK1F,EACH,MAAMlsB,EAAAA,GAAAA,oBAA4BJ,EAAM,oBAAmBgyB,uBAAgClxG,KAG7F,GADgBwrG,EAAkB4F,iBAAiBnyG,GACtC,CACX,MAAM,YAAEg9C,GAAgBh9C,EAAOysG,mBAAmByF,EAAiB3F,EAAkBn9I,SAGrF,OAFI4tF,GAAaqjC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,6BAA4BiyB,QAAsBnxG,WAC3Fs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,SAAQgyB,QAAiBC,QAAsBnxG,KAEzE,CACAs/E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,4CAA2CgyB,iCAAyC,EAE9GtP,aAAc,IAAM,KAAM,CACxByP,aAAcxiJ,EAAAA,GAAAA,aACdyiJ,cAAeziJ,EAAAA,GAAAA,cACf0iJ,YAAa1iJ,EAAAA,GAAAA,SACb2iJ,UAAW,IAAIz3I,IAAIlL,EAAAA,GAAAA,cAAAA,KAA0BsS,GAAQ,CAACA,EAAI/Q,KAAM+Q,EAAI7Q,UACpEmhJ,QAAS,IAAI13I,IAAIlL,EAAAA,GAAAA,eAEnBgzI,mBAAqB3iB,GAAS6tB,IAC5B,MAAM38I,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACzC,OAAOxtB,EAAAA,GAAAA,IAAWnvH,EAAK8L,MAAM,MAAM,EAAK,EAE1C0mI,UAAW,IAAOtnI,IAChBV,EAAAA,EAAAA,UAAkBytH,EAAAA,EAAAA,IAAa/sH,GAAO,EAExCunI,SAAW3jB,GAAS5jH,IAClB4jH,EAAIh2F,aAAa0zG,OAAMvU,EAAAA,EAAAA,IAAa/sH,GAAO,EAE7CgnI,MAAOoP,EAAAA,MACJC,EAAAA,EAAAA,MAQE,SAASC,GAAmB1zB,GACjC,OAAOsB,EAAAA,EAAAA,GAAQtB,EAAIC,GAAI,GAAI,CAAEl/F,KAAMi/F,EAAGj/F,KAAKjG,QAAS2pG,IAAKzE,EAAGyE,IAAKgkB,UACnE,EANAhnB,EAAAA,EAAAA,GAAoBxB,GAAI,CACtB0zB,aAAc,CAAEvzD,QAAS,QAASwhC,YAAa,0CAOjD,MAAM0pB,GAAe32I,OAAOi/I,YAAY,IAExC,SAASC,EAAiBhsB,EAAaisB,GACrC,MAAMC,EAA0B,GAChC,IAAK,MAAO9jJ,EAAKmN,KAAUzI,OAAO2H,QAAQurH,GAC5B,SAAR53H,IAEuB,mBAATmN,EAChB22I,EAAcr1I,KAAKo1I,EAAS7jJ,GACH,iBAATmN,GAChB22I,EAAcr1I,QAAQm1I,EAAiBz2I,EAAOnN,EAAM,OAGxD,OAAO8jJ,CACT,CAd4CF,CAAiB5zB,GAAI,KAAKvxH,KAAKK,GAAM,CAACA,GAAG,MAgB/EilJ,GAA0B,IAAIr7G,IAgBpC,SAASo4G,GAAmB/wD,EAAoBxnB,GACzCw7E,GAAwBv2I,IAAIuiF,KAC/Bg0D,GAAwBpvG,IAAIo7C,GAC5BtjF,EAAAA,EAAAA,KAAe,6CAA4CsjF,KAC3DtjF,EAAAA,EAAAA,KAAe,6EACfA,EAAAA,EAAAA,KAAc87D,GACd97D,EAAAA,EAAAA,KAAe,6FACfA,EAAAA,EAAAA,KAAe,4FAEnB,uHC9xDO,SAASksI,IACd,MAAMqL,EAAyB,SAAUjzB,GACvCkzB,EAAelzB,EAEjB,EACMkzB,EAAiB,SAAUlzB,GAE/B,KADsC,IAApBrwH,EAAAA,GAAAA,UAAyBA,EAAAA,GAAAA,cAAqB,GAAK,GAEnE,MAAMywH,EAAAA,GAAAA,oBAA4BJ,EAAK,6CAA8C,cAEvF,MAAM7wF,EAAcx/B,EAAAA,GAAAA,YACpB,IAAKw/B,EACH,MAAMixF,EAAAA,GAAAA,oBAA4BJ,EAAK,qEACzC,OAAO7wF,CACT,EAEMgkH,EAA6B,SAAUnzB,EAAuB7pH,EAAcjF,GAChF,MAAMi+B,EAAcx/B,EAAAA,GAAAA,YACpB,GAAoB,OAAhBw/B,EAAsB,MAAM,IAAIpe,MAAM,gCAC1C,MAAM8M,EAAWsR,EAAY1P,2BAA2BtpB,EAAMjF,GAC9D,IAAK2sB,EACH,MAAMuiG,EAAAA,GAAAA,oBAA4BJ,EAAM,wBAAuB7pH,aAAgBjF,MAEjF,MAAMk5B,EAAY+E,EAAYrR,gBAAgBD,GAC9C,IAAKuM,EACH,MAAMg2F,EAAAA,GAAAA,oBAA4BJ,EAAM,wBAAuB7pH,aAAgBjF,MAGjF,OAAOk5B,CACT,EAEA,MAAO,CACL2pG,cAAe,IAAM,MAAQpkI,EAAAA,GAAAA,YAC7BqkI,iBAAmBhU,GAAQ,IACLkzB,EAAelzB,GAChBt2F,8BAErBuqG,kBAAoBjU,GAAQ,IACNkzB,EAAelzB,GAChBr2F,+BAErBuqG,gBAAkBlU,GAAQ,IACJkzB,EAAelzB,GAChBp2F,6BAErBuqG,eAAiBnU,GAASozB,IACxB,MAAMC,EAAcjzB,EAAAA,GAAAA,OAAeJ,EAAK,cAAeozB,GACvDH,EAAuBjzB,GACvB,MAAM5jG,EAAS+2H,EAA2BnzB,EAAK,WAAYqzB,GAC3D,KAAMj3H,aAAkBpB,EAAAA,GAAiB,MAAM,IAAIjK,MAAM,oCACzD,OAAOqL,EAAOhB,QAAQ,EAExBg5G,sBAAwBpU,GAAQ,IACVkzB,EAAelzB,GAChBn2F,mCAErBwqG,cAAgBrU,GAAQ,IACFkzB,EAAelzB,GAChBl2F,2BAErB5L,YAAc8hG,GAAQ,CAACszB,EAAOzF,KAC5B,MAAM13I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACnC1+G,EAAc+jH,EAAelzB,GACnC,IACE,OAAO7wF,EAAYpF,uBAAuB5zB,EAAMjF,EAAM8uH,EAAIh2F,aAG5D,CAFE,MAAO9kB,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,GAEFovH,sBAAwBtU,GAAQ,IACVkzB,EAAelzB,GAChB7hG,cAErBo2G,iBAAmBvU,GAAQ,KACzB,MAAM7wF,EAAc+jH,EAAelzB,GACnC,OAAO7wF,EAAY5F,2BAA2B4F,EAAY/S,OAAO,EAEnE5E,cAAgBwoG,GAAQ,CAACszB,EAAOzF,KAC9B,MAAM13I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACnC1+G,EAAc+jH,EAAelzB,GACnC,IACE,MAAMx9F,EAAO2M,EAAYhF,yBAAyBx6B,EAAAA,GAAQwG,EAAMjF,GAChE,GAAoB,iBAATsxB,EAAmB,CAC5B,MAAMyH,EAAgB,yBAAwB9zB,YAAejF,KAE7D,OADAkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM/1F,KACf,CACV,CACE,OAAOzH,CAIX,CAFE,MAAOtd,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,GAEFsvH,qBAAuBxU,GAAQ,KAC7B,MAAM7wF,EAAc+jH,EAAelzB,GACnC,IAIE,OADE,IADA/rH,KAAK6c,IAAIqe,EAAYjT,kBAAoBiT,EAAYhT,mBAAoBgT,EAAYlT,qBAKzF,CAFE,MAAO/W,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,GAEFuvH,gCAAkCzU,GAAQ,CAACszB,EAAOzF,KAChD,MAAM1+G,EAAc+jH,EAAelzB,GAC7B7pH,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACzC,IACE,MAAM1rH,EAASgN,EAAY9E,2CAA2C16B,EAAAA,GAAQwG,EAAMjF,GACpF,GAAsB,iBAAXixB,EAAqB,CAC9B,MAAM8H,EAAgB,yBAAwB9zB,YAAejF,KAE7D,OADAkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM/1F,IAChB,EAAE,GAAI,EACf,CACE,OAAO9H,CAIX,CAFE,MAAOjd,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,GAEFwvH,iBAAmB1U,GAAQ,CAACszB,EAAOzF,EAAO0F,KACxCN,EAAuBjzB,GACvB,MAAM7pH,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACnCzxH,EAAS+2H,EAA2BnzB,EAAK7pH,EAAMjF,GAC/CE,OAAmB+O,IAAXozI,EAAuBn3H,EAAOhrB,MAAQgvH,EAAAA,GAAAA,OAAeJ,EAAK,QAASuzB,GAC3EptH,EAAmBlyB,KAAKoO,IAAI+Z,EAAOvG,UAAWzkB,EAAQ,GAC5D,OAAOgrB,EAAOpG,SAAWmQ,EAAmBhyB,EAAAA,GAAAA,eAAgC,EAE9EwgI,wBAA0B3U,GAAQ,CAACszB,EAAOzF,KACxC,MAAM1+G,EAAc+jH,EAAelzB,GAC7B7pH,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACzC,IACE,OAAO1+G,EAAY5E,mCAAmCp0B,EAAMjF,EAAM8uH,EAAIh2F,aAGxE,CAFE,MAAO9kB,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,GAEF0vH,kBAAoB5U,GAAQ,CAACszB,EAAOzF,KAClC,MAAM13I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GAGzC,OAFAoF,EAAuBjzB,GACRmzB,EAA2BnzB,EAAK7pH,EAAMjF,GACvC2a,QAAQ,EAExBgpH,sBAAwB7U,GAAQ,CAACszB,EAAOzF,KACtC,MAAM13I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GAGzC,OAFAoF,EAAuBjzB,GACRmzB,EAA2BnzB,EAAK7pH,EAAMjF,GACvCE,KAAK,EAErB0jI,mBAAqB9U,GAAQ,CAACszB,EAAOzF,KACnC,MAAM13I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GAGzC,OAFAoF,EAAuBjzB,GACRmzB,EAA2BnzB,EAAK7pH,EAAMjF,GACvCwkB,SAAS,EAEzBq/G,mBAAqB/U,GAAQ,CAACszB,EAAOzF,KACnC,MAAM13I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GAGzC,OAFAoF,EAAuBjzB,GACRmzB,EAA2BnzB,EAAK7pH,EAAMjF,GACvC4kB,SAAS,EAEzBk/G,mBACGhV,GACD,SAACszB,EAAOzF,GAA6B,IAAtB2F,IAAa,UAAH,+CACvB,MAAMr9I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACnCn4H,IAAc89H,EACpBP,EAAuBjzB,GACvB,MAAM5jG,EAAS+2H,EAA2BnzB,EAAK7pH,EAAMjF,GACrDkrB,EAAO1G,UAAYA,CACrB,EACFu/G,eACGjV,GACD,SAACszB,EAAOzF,GAAsB,IAAf0F,EAAS,UAAH,6CAAG,EACtB,MAAMp9I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACnCz8I,EAAQgvH,EAAAA,GAAAA,OAAeJ,EAAK,QAASuzB,GAC3CN,EAAuBjzB,GACvB,MAAM5jG,EAAS+2H,EAA2BnzB,EAAK7pH,EAAMjF,GACrD,GAAIE,EAAQ,GAAKA,EAAQgrB,EAAOvQ,SAC9B,MAAMu0G,EAAAA,GAAAA,oBAA4BJ,EAAM,+BAA8B5jG,EAAOvQ,gBAAgBza,KAE/FgrB,EAAOhrB,MAAQA,CACjB,EACF8jI,QAAUlV,GAAQ,IACIkzB,EAAelzB,GAChBxkG,KAErB25G,eAAiBnV,GAAQ,IACHkzB,EAAelzB,GAChBtkG,YAErB05G,cAAgBpV,GAASyzB,IACvB,MAAM/0H,EAAY0hG,EAAAA,GAAAA,OAAeJ,EAAK,YAAayzB,GAC7CtkH,EAAc+jH,EAAelzB,GACnC,IACE,OAAO7wF,EAAY3E,yBAAyB9L,EAAWshG,EAAIh2F,aAG7D,CAFE,MAAO9kB,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,GAEFmwH,oBACGrV,GACD,SAACyzB,GAA2B,IAAfC,EAAS,UAAH,6CAAG,EACpB,MAAMvkH,EAAc+jH,EAAelzB,GAC7BthG,EAAY0hG,EAAAA,GAAAA,OAAeJ,EAAK,YAAayzB,GAC7Cn9H,EAAQ8pG,EAAAA,GAAAA,OAAeJ,EAAK,QAAS0zB,GAC3C,IACE,OAAOvkH,EAAY1E,+BAA+B/L,EAAWpI,EAAO0pG,EAAIh2F,aAG1E,CAFE,MAAO9kB,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,CACF,EACFsZ,aACGwhG,GACD,SAACyzB,GAA2B,IAAfC,EAAS,UAAH,6CAAG,EACpB,MAAMvkH,EAAc+jH,EAAelzB,GAC7BthG,EAAY0hG,EAAAA,GAAAA,OAAeJ,EAAK,YAAayzB,GAC7Cn9H,EAAQ8pG,EAAAA,GAAAA,OAAeJ,EAAK,QAAS0zB,GAC3C,IACE,OAAOvkH,EAAYzE,wBAAwBhM,EAAWpI,EAAO0pG,EAAIh2F,aAGnE,CAFE,MAAO9kB,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,CACF,EACFowH,YAActV,GAAQ,CAACszB,EAAOzF,KAC5B,MAAM1+G,EAAc+jH,EAAelzB,GAC7B7pH,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACzC,IACE,OAAO1+G,EAAYxE,uBAAuBx0B,EAAMjF,EAAM8uH,EAAIh2F,aAG5D,CAFE,MAAO9kB,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,GAEF6vB,YAAcirF,GAAQ,CAACszB,EAAOzF,EAAO8F,KACnC,MAAMxkH,EAAc+jH,EAAelzB,GAC7B7pH,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCpiJ,EAAOkvH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ6tB,GACnCniJ,EAAO00H,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ2zB,GACzC,IACE,OAAOxkH,EAAYvE,uBAAuBz0B,EAAMjF,EAAMxF,EAAMs0H,EAAIh2F,aAGlE,CAFE,MAAO9kB,GACP,MAAMk7G,EAAAA,GAAAA,oBAA4BJ,EAAKzsG,OAAOrO,GAChD,GAEFqwH,2BAA6BvV,GAAS4zB,IACpC,MAAMzkH,EAAc+jH,EAAelzB,GAC7Bj4F,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GAC5D,OAAOzkH,EAAY7S,OAAOyL,GAAUnP,MAAM,EAE5C48G,mBAAqBxV,GAAS4zB,IAC5B,MAAMzkH,EAAc+jH,EAAelzB,GAC7Bj4F,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GAC5D,OAAOzkH,EAAY7S,OAAOyL,GAAU5N,KAAK,EAE3Cs7G,aAAezV,GAAS4zB,IACtB,MAAMzkH,EAAc+jH,EAAelzB,GAC7Bj4F,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GAC5D,OAAOzkH,EAAY7S,OAAOyL,GAAUhP,KAAK,EAE3C28G,QAAU1V,GAAQ,IACIkzB,EAAelzB,GAChBvnG,KAErBk9G,WAAa3V,GAAS4zB,IACpB,MAAMzkH,EAAc+jH,EAAelzB,GAC7Bj4F,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GAE5D,OADAzkH,EAAY1W,KAAOsP,GACZ,CAAI,EAEb6tG,WAAa5V,GAAQ,KACnB,MAAM7wF,EAAc+jH,EAAelzB,GACnC,MAAO,CAAC7wF,EAAYzS,QAASyS,EAAY1S,WAAW,EAEtDo5G,uBAAyB7V,GAAQ,IACXkzB,EAAelzB,GAChBl1F,kCAAkCk1F,EAAIh2F,cAE3D8rG,wBAA0B9V,GAAQ,QACR,IAApBrwH,EAAAA,GAAAA,UAAyBA,EAAAA,GAAAA,cAAqB,GAAK,IACZ,IAArCwE,EAAAA,GAAAA,kBAGAxE,EAAAA,GAAAA,cAGFA,EAAAA,GAAAA,OAAAA,UAA0B,KAC1BA,EAAAA,GAAAA,OAAAA,SAAyB,KACzBA,EAAAA,GAAAA,OAAAA,WAA2B,KAC3BA,EAAAA,GAAAA,OAAAA,SAAyB,KAEzBA,EAAAA,GAAAA,YAAqB,IAAI0rB,EAAAA,EACzB+kG,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,yDAEhB,IAEPI,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,0EAChB,KAKb8T,aAAe9T,GAAQ,KACrB,MAAM7wF,EAAc+jH,EAAelzB,GACnC,OAAkD,IAA3C/rH,KAAKguB,MAAMkN,EAAYpT,aAAe,EAAS,EAG5D,iGChUO,SAAS8rH,IACd,MAAMgM,EAAoB,SAAU7zB,EAAuBl/E,EAAkBpvC,GAC3E,MACMi2B,EADSy4F,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACdgzG,YAAYpiJ,GACpC,GAAgB,MAAZi2B,EACF,MAAMy4F,EAAAA,GAAAA,oBAA4BJ,EAAM,yBAAwBtuH,iBAAwBovC,MAG1F,OAAOnZ,CACT,EAEA,MAAO,CACLxQ,QAAU6oG,GAAQ,CAACxX,EAAQ8kC,EAAW/pB,KACpC,MAAM7xH,EAAW0uH,EAAAA,GAAAA,OAAeJ,EAAK,WAAYstB,GAC3CxsG,EAAWyiF,EAAYnD,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,SACrFnZ,EAAWksH,EAAkB7zB,EAAKl/E,EAAUpvC,GAElD,GAAsB,iBAAX82G,GAAyC,iBAAXA,IAAwBjzD,MAAMyK,QAAQwoD,GAC7E,MAAM,IAAIz3F,MAAM,0DAIlB,MAAMgjI,EAA8B,iBAAXvrC,EAAsBA,EAASrtG,KAAK4mH,UAAUvZ,GACjEwrC,EAAUrsH,EAASsX,OAEnBS,EAAO0gF,EAAAA,GAAAA,UAAkBJ,EAAKl/E,GACpC,GAAInZ,EAASoa,WAAWgyG,GAAY,CAClC,MAAM90G,EAAStvC,EAAAA,GAAAA,yBAAgCqkJ,EAASrsH,EAASzQ,iBAGjE,OAFAkpG,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,2CAA0CtuH,eAAsButC,MACxFS,EAAKu0G,eAAeviJ,GACbutC,CACT,CAeE,QAdEtX,EAAS8Z,MACP9Z,EAAS8Z,OAAS9Z,EAASka,kBAC7Bu+E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,4BAA2BtuH,gDACnDguC,EAAKu0G,eAAeviJ,IAEpB0uH,EAAAA,GAAAA,IACEJ,GACA,IACG,4BAA2BtuH,cAC1Bi2B,EAASka,iBAAmBla,EAAS8Z,8BAKtC,EACT,EAEFy0F,gBAAkBlW,GAAQ,CAACstB,EAAW/pB,KACpC,MAAM7xH,EAAW0uH,EAAAA,GAAAA,OAAeJ,EAAK,WAAYstB,GAC3CxsG,EAAWyiF,EAAYnD,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,SAE3F,OADiB+yG,EAAkB7zB,EAAKl/E,EAAUpvC,GAClCowC,SAAS,EAE3BH,QAAUq+E,GAAQ,CAACstB,EAAW/pB,KAC5B,MAAM7xH,EAAW0uH,EAAAA,GAAAA,OAAeJ,EAAK,WAAYstB,GAC3CxsG,EAAWyiF,EAAYnD,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,SAErFrzC,EADWomJ,EAAkB7zB,EAAKl/E,EAAUpvC,GAC5BiwC,UACtB,GAAI4T,MAAMyK,QAAQvyD,GAAO,CAIvB,MAAM6wC,EAAO7wC,EAAKqsB,QAClB,IAAK,IAAItpB,EAAI,EAAGA,EAAI8tC,EAAK3vC,SAAU6B,EAC7B/C,EAAK+C,GAAGiP,cAAgB81C,QAC1BjX,EAAK9tC,GAAK/C,EAAK+C,GAAGspB,SAItB,OAAOwkB,CACT,CAAO,OAAO7wC,CAAI,EAEpBm0C,eAAiBo+E,GAAQ,CAACstB,EAAW/pB,KACnC,MAAM7xH,EAAW0uH,EAAAA,GAAAA,OAAeJ,EAAK,WAAYstB,GAC3CxsG,EAAWyiF,EAAYnD,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,SAE3F,OADiB+yG,EAAkB7zB,EAAKl/E,EAAUpvC,GAClCkwC,gBAAgB,EAElCu0F,qBAAuBnW,GAAQ,CAACstB,EAAW/pB,KACzC,MAAM7xH,EAAW0uH,EAAAA,GAAAA,OAAeJ,EAAK,WAAYstB,GAC3CxsG,EAAWyiF,EAAYnD,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GAAavD,EAAIh2F,aAAa8W,SACrFnZ,EAAWksH,EAAkB7zB,EAAKl/E,EAAUpvC,GAClD,OAAOi2B,EAASka,iBAAmBla,EAAS8Z,KAAK,EAEnD20F,oBAAsBpW,GAASszB,IAC7B,MAAMn9I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,IACzC3zG,EAAAA,EAAAA,IAAsBxpC,EAAK,EAE7BkgI,iBAAkB,IAAM,IAAM90F,EAAAA,EAAAA,KAAiC/pC,GAAMA,EAAEtG,OAE3E,gPChCO,SAAS62I,IACd,SAASzP,EAAkB5kD,GAAmD,IAA1BwgE,IAAW,UAAH,+CAC1D,IAAKn1D,EAAAA,GAAAA,wBAAiCA,EAAAA,GAAAA,YAAoB,OAAO,EACjE,IAAKrL,EAAiB,OAAO,EAC7B,GAAwB,IAApBqL,EAAAA,GAAAA,WAA0Bm1D,EAAU,MAAM,IAAInjI,MAAM,8CACxD,GAAI5c,EAAAA,GAAAA,mBAAsC,IACxC,MAAM,IAAI4c,MAAO,8CAA6CguE,EAAAA,GAAAA,YAEhE,GAAIm1D,EAAU,CACZ,IAAKn1D,EAAAA,GAAAA,UAAiB,OAAQ,OAAO,EAErCA,EAAAA,GAAAA,iBAAwBrL,GAAiB,GACzCqL,EAAAA,GAAAA,UAAiB,MAAO,cAC1B,MACEA,EAAAA,GAAAA,iBAAwBrL,GAAiB,GAE3C,OAAO,CACT,CAEA,SAAS6kD,EAAUp8E,GAEjB,OADoBy8E,IACD5/E,QAAQv8C,IAAI0/C,EACjC,CAgDA,SAASy8E,IACP,MAAM/pF,EAAckwC,EAAAA,GAAAA,YACpB,GAAoB,OAAhBlwC,EAAsB,MAAM,IAAI99B,MAAM,0CAC1C,OAAO89B,CACT,CAEA,SAASgqF,EAAY/gF,GACnB,MACMniD,EADcijI,IACS7pF,UAAU5xC,IAAI26C,GAC3C,QAAiB33C,IAAbxK,EAAwB,MAAM,IAAIob,MAAO,sBAAqB+mC,MAClE,OAAOniD,CACT,CAEA,SAAS2kI,EAAUxiF,EAAsB/vB,GACvC,MAAMpyB,EAAWkjI,EAAY/gF,GACvBnD,EAASh/C,EAASI,QAAQgyB,GAChC,IAAK4sB,EAAQ,MAAM,IAAI5jC,MAAO,GAAEpb,EAASzE,6BAA6B62B,MACtE,OAAO4sB,CACT,CAEA,SAAS2kF,EAAaxhF,EAAsB/vB,GAC1C,MAAMpyB,EAAWkjI,EAAY/gF,GACvBtI,EAAY75C,EAAS85C,WAAW1nB,GACtC,IAAKynB,EAAW,MAAM,IAAIz+B,MAAO,GAAEpb,EAASzE,sCAAsC62B,MAClF,OAAOynB,CACT,CAEA,SAASgqF,EAAY1hF,EAAsB/vB,EAAoBosH,GAG7D,OAFkB7a,EAAaxhF,EAAc/vB,GAClB4nB,UAAUwkG,EAEvC,CAEA,SAAS5a,EAAWzhF,EAAsB7B,GACxC,MACMvD,EADWmmF,EAAY/gF,GACJzB,SAASl5C,IAAI84C,GACtC,QAAgB91C,IAAZuyC,EAAuB,MAAM,IAAI3hC,MAAO,0BAAyBklC,MACrE,OAAOvD,CACT,CAEA,SAAS0hG,EAAYp0B,EAAuBU,GAC1C,IAAK3hC,EAAAA,GAAAA,YAAoB,MAAMqhC,EAAAA,GAAAA,oBAA4BJ,EAAK,2BAChE,GAAKU,IACA3hC,EAAAA,GAAAA,YAAAA,QAAAA,IAA+B2hC,GAClC,MAAMN,EAAAA,GAAAA,oBAA4BJ,EAAK,sCAE3C,CAwBA,MAAMq0B,EAA0C,CAC9Cra,wBACGha,GACD,SAACs0B,EAAeV,GAAwB,IAAbW,EAAO,UAAH,6CAAG,EAChCH,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDzrH,EAAMi4F,EAAAA,GAAAA,OAAeJ,EAAK,SAAUu0B,GAC1C,GAAIpsH,EAAM,EACR,MAAMi4F,EAAAA,GAAAA,oBAA4BJ,EAAK,sCAEzC,MAAMxwE,EAAY8pF,EAAaxhF,EAAc/vB,GAC7C,OAAOutB,EAAAA,EAAAA,IAAqB9F,EAAWrnB,EACzC,EACF8xG,aAAeja,GAAQ,CAACs0B,EAAeV,KACrCQ,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GAGzD,OAFiB3yH,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,KAC3C/a,EAAY/gF,GACDrI,UAAU,EAExC6pF,aAAetZ,GAAQ,CAACs0B,EAAeV,KACrCQ,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAEM+5C,EAAY8pF,EAFGlZ,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,IACxC3yH,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,IAE5D,MAAO,CACLxiJ,MAAOo+C,EAAUp+C,MACjBqnB,KAAM+2B,EAAU/2B,KAChB/sB,KAAM8jD,EAAU9jD,KAChBqoD,SAAUvE,EAAUuE,SACpBX,mBAAoB5D,EAAU4D,mBAC/B,EAEHomF,YAAcxZ,GAAQ,CAACs0B,EAAeV,EAAWY,KAC/CJ,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAGMi6C,EAAW8pF,EAHIpZ,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,IACxC3yH,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,IACvCjyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,iBAEjF3lG,EAAc+pF,IACdhpF,GAAUyhG,EAAAA,EAAAA,WAAU3hG,EAASE,SACnC,MAAO,CACLoE,YAAatE,EAASsE,YACtB7B,iBAAkBzC,EAASyC,iBAC3BK,kBAAmB9C,EAAS8C,kBAC5BthD,KAAMw+C,EAASx+C,KACf+hD,OAAQvD,EAASuD,OACjBiO,QAASxR,EAASwR,QAClBX,OAAQ1R,EAAYmK,QAAQv8C,IAAIhH,EAAAA,eAAAA,sBAAuCi6C,EAAS6Q,YAASpgD,EACzFqgD,YAAa3R,EAAYmK,QAAQv8C,IAAIhH,EAAAA,eAAAA,uBAAwCi6C,EAAS8Q,iBAAcrgD,EACpGoyC,iBAAkB7C,EAAS6C,iBAC3BkQ,iBAAkB/S,EAAS+S,iBAC3B7S,QAASA,EACV,EAEH2pF,WAAavZ,GAAQ,CAACs0B,EAAeV,EAAWa,KAC9CL,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDr+F,EAAcmqE,EAAAA,GAAAA,OAAeJ,EAAK,cAAey0B,GACjD1sH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDlhG,EAAU6mF,EAAWzhF,EAAc7B,GACnCpH,EAAc+pF,IACd/lF,EAAWH,EAAQG,SAAS9qB,GAClC,MAAO,CACL72B,KAAMwhD,EAAQxhD,KACdqvD,OAAQ1R,EAAYmK,QAAQv8C,IAAIhH,EAAAA,eAAAA,sBAAuCi9C,EAAQ6N,YAASpgD,EACxFqgD,YAAa3R,EAAYmK,QAAQv8C,IAAIhH,EAAAA,eAAAA,uBAAwCi9C,EAAQ8N,iBAAcrgD,EACnG2kD,OAAQpS,EAAQoS,OAChBC,gBAAiBlS,EAASkS,gBAC1B3kD,OAAOixI,EAAAA,EAAAA,WAAU3+F,EAAQtyC,OACzB86C,eAAgBxI,EAAQwI,eACxB/I,iBAAkBU,EAASV,iBAC3BK,kBAAmBK,EAASL,kBAC5BS,OAAQJ,EAASI,OACjBV,iBAAkBM,EAASN,iBAC3BkQ,iBAAkB5P,EAAS4P,iBAC3B6B,oBAAqB5R,EAAQ4R,oBAC7B5N,sBAAuBhE,EAAQgE,sBAC/BD,iBAAkB/D,EAAQ+D,iBAC3B,EAEHtB,kBAAoB6qE,GAAQ,CAACs0B,EAAeV,KAC1CQ,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtD/kG,EAAc+pF,KACpBzjF,EAAAA,EAAAA,IAAkBtG,EAAagqF,EAAY/gF,GAAe/vB,EAAS,EAErEgyG,iBACG/Z,GACD,SAACs0B,EAAeV,GAA8B,IAAnBW,EAAO,UAAH,6CAAG,EAChCH,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDzrH,EAAMi4F,EAAAA,GAAAA,OAAeJ,EAAK,SAAUu0B,GACpC1lG,EAAc+pF,IACpB,GAAIzwG,EAAM,EACR,MAAMi4F,EAAAA,GAAAA,oBAA4BJ,EAAK,uCAEzCtqE,EAAAA,EAAAA,IAAiB7G,EAAagqF,EAAY/gF,GAAewhF,EAAaxhF,EAAc/vB,GAAWI,EACjG,EACFi5C,aAAe4+C,GAAQ,CAACs0B,EAAeV,EAAWY,EAAeD,EAAMG,KACrEN,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDO,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,gBACjFrsH,EAAMi4F,EAAAA,GAAAA,OAAeJ,EAAK,MAAOu0B,GACjCviG,EAAQouE,EAAAA,GAAAA,OAAeJ,EAAK,QAAS00B,GACrChlG,EAAW8pF,EAAY1hF,EAAc/vB,EAAUosH,IACrDpiG,EAAAA,EAAAA,IAAarC,EAAUvnB,EAAK6pB,EAAM,EAEpC6vB,YACGm+C,GACD,CAACs0B,EAAeV,EAAWa,EAAcF,EAAMG,EAAQC,KACrDP,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtD39F,EAAcmqE,EAAAA,GAAAA,OAAeJ,EAAK,cAAey0B,GACjDtsH,EAAMi4F,EAAAA,GAAAA,OAAeJ,EAAK,MAAOu0B,GACjCviG,EAAQouE,EAAAA,GAAAA,OAAeJ,EAAK,QAAS00B,GACrC/hG,IAAQgiG,EACRjiG,EAAU6mF,EAAWzhF,EAAc7B,IACzCxD,EAAAA,EAAAA,IAAYC,EAAS3qB,EAAUI,EAAK6pB,EAAOW,EAAI,EAEnDuS,mBAAqB86D,GAAQ,CAACs0B,EAAeG,KAC3CL,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDr+F,EAAcmqE,EAAAA,GAAAA,OAAeJ,EAAK,cAAey0B,GACvD5b,EAAY/gF,GAAcoN,mBAAmBjP,EAAY,EAE3DkjF,eAAiBnZ,GAAQ,CAACs0B,EAAeV,EAAWgB,KAClDR,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAEMkzF,IAAYisD,EACZplG,EAAY8pF,EAHGlZ,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,IACxC3yH,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,IAG5D,IAAKrb,EAAU9iI,EAAAA,eAAAA,aACb,MAAM2qH,EAAAA,GAAAA,oBAA4BJ,EAAM,qDAC1C9sE,EAAAA,EAAAA,IAAe1D,EAAWm5C,EAAQ,EAEpCywC,qBAAuBpZ,GAAQ,CAACs0B,EAAeV,EAAWY,EAAeK,KACvET,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDO,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,gBACjFhlG,EAAY8pF,EAAaxhF,EAAc/vB,GACvC2nB,EAAW8pF,EAAY1hF,EAAc/vB,EAAUosH,GAC/ChqC,GAASxoF,EAAAA,EAAAA,GAAc,qBAAqB6uH,YAAYxwB,EAAK60B,GACnE,IAAKtc,EAAU9iI,EAAAA,eAAAA,aACb,MAAM2qH,EAAAA,GAAAA,oBAA4BJ,EAAM,qDAC1C3sE,EAAAA,EAAAA,IAAqB7D,EAAWE,EAAUy6D,EAAO,EAEnDkvB,YAAcrZ,GAAQ,CAACs0B,EAAeV,EAAWY,EAAeD,KAC9DH,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnD3+I,EAAWijI,IAAiB7pF,UAAU5xC,IAAI26C,GAChD,IAAKniD,EAAU,MAAMyqH,EAAAA,GAAAA,oBAA4BJ,EAAM,kCAAiCloE,KACxF,MAAM/vB,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDO,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,gBACjFrsH,EAAMi4F,EAAAA,GAAAA,OAAeJ,EAAK,MAAOu0B,GACvC,GAAIpsH,EAAM,IAAMlT,OAAO0kC,SAASxxB,GAC9B,MAAM,IAAIpX,MAAM,sEAClB,MAAM2+B,EAAW8pF,EAAY1hF,EAAc/vB,EAAUosH,IACrD3gG,EAAAA,EAAAA,IAAY79C,EAAU+5C,EAAUvnB,EAAI,EAEtC+3C,aAAe8/C,GAAQ,CAACs0B,EAAeV,EAAWY,EAAeD,KAC/DH,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnD3+I,EAAWijI,IAAiB7pF,UAAU5xC,IAAI26C,GAChD,IAAKniD,EAAU,MAAMyqH,EAAAA,GAAAA,oBAA4BJ,EAAM,kCAAiCloE,KACxF,MAAMjJ,EAAc+pF,IACd7wG,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDO,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,gBACjFrsH,EAAMi4F,EAAAA,GAAAA,OAAeJ,EAAK,MAAOu0B,GACjC/kG,EAAY8pF,EAAaxhF,EAAc/vB,GACvC2nB,EAAW8pF,EAAY1hF,EAAc/vB,EAAUosH,IACrDxgG,EAAAA,EAAAA,IAAa9E,EAAal5C,EAAU65C,EAAWE,EAAUvnB,EAAI,EAE/Dw3C,YACGqgD,GACD,CAACs0B,EAAeV,EAAWa,EAAcK,EAAeC,KACtDX,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtD39F,EAAcmqE,EAAAA,GAAAA,OAAeJ,EAAK,cAAey0B,GACjDv+F,EAAekqE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgB80B,GACnD3+F,EAAkBiqE,EAAAA,GAAAA,OAAeJ,EAAK,kBAAmB+0B,GACzDlmG,EAAc+pF,KACpB5iF,EAAAA,EAAAA,IAAYnH,EAAagqF,EAAY/gF,GAAe/vB,EAAUkuB,EAAaC,EAAcC,EAAgB,EAE7GipB,uBAAyB4gD,GAAQ,CAACs0B,EAAeV,EAAWa,EAAcO,KACxEZ,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtD39F,EAAcmqE,EAAAA,GAAAA,OAAeJ,EAAK,cAAey0B,GACjD1hG,EAAMqtE,EAAAA,GAAAA,OAAeJ,EAAK,MAAOg1B,IACvCh9F,EAAAA,EAAAA,IAAuBuhF,EAAWzhF,EAAc7B,GAAcluB,EAAUgrB,EAAI,EAE9E8mF,eACG7Z,GACD,CAACi1B,EAAiBC,EAAaC,EAAiBC,EAAaZ,EAAeD,KAC1EH,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAM4/I,EAAiBj1B,EAAAA,GAAAA,OAAeJ,EAAK,iBAAkBi1B,GACvDnzH,GAAaH,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAKk1B,EAAa,cACrE79F,EAAiBwhF,EAAYzY,EAAAA,GAAAA,OAAeJ,EAAK,iBAAkBm1B,IACnE79F,GAAa31B,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAKo1B,EAAa,cACrEjB,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,gBACjFrsH,EAAMi4F,EAAAA,GAAAA,OAAeJ,EAAK,MAAOu0B,IAEvCn9F,EAAAA,EAAAA,IAAeC,EAAgBC,EAAYkiF,EAAY6b,EAAgBvzH,EAAYqyH,GAAehsH,EAAI,EAE1G2xG,qBACG9Z,GACD,CAACi1B,EAAiBC,EAAaC,EAAiBC,EAAaZ,KAC3DJ,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAM4/I,EAAiBj1B,EAAAA,GAAAA,OAAeJ,EAAK,iBAAkBi1B,GACvDnzH,GAAaH,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAKk1B,EAAa,cACrE79F,EAAiB+oE,EAAAA,GAAAA,OAAeJ,EAAK,iBAAkBm1B,GACvD79F,GAAa31B,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAKo1B,EAAa,cACrEjB,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,iBACvF38F,EAAAA,EAAAA,IAAqBR,EAAgBC,EAAYkiF,EAAY6b,EAAgBvzH,EAAYqyH,GAAc,EAE3Gj1E,wBAA0B8gD,GAAQ,CAACs0B,EAAeV,EAAWY,EAAeQ,KAC1EZ,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDO,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,gBACjFzhG,EAAMqtE,EAAAA,GAAAA,OAAeJ,EAAK,MAAOg1B,IACvC78F,EAAAA,EAAAA,IAAwBqhF,EAAY1hF,EAAc/vB,EAAUosH,GAAephG,EAAI,EAEjF0mF,qBAAuBzZ,GAAQ,CAACs0B,EAAeV,EAAWY,EAAec,KACvElB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDO,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,gBACjFn8F,IAAOi9F,EACb,IAAKzc,EAAY/gF,GAAcoG,YAAY,eACzC,MAAMkiE,EAAAA,GAAAA,oBAA4BJ,EAAM,oDAAmDloE,MAC7FM,EAAAA,EAAAA,IAAqBohF,EAAY1hF,EAAc/vB,EAAUosH,GAAe97F,EAAG,EAE7EqhF,qBAAuB1Z,GAAQ,CAACs0B,EAAeV,EAAWY,EAAec,KACvElB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDO,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,gBACjFn8F,IAAOi9F,EACb,IAAKzc,EAAY/gF,GAAcoG,YAAY,gBACzC,MAAMkiE,EAAAA,GAAAA,oBAA4BJ,EAAM,qDAAoDloE,MAC9FS,EAAAA,EAAAA,IAAqBihF,EAAY1hF,EAAc/vB,EAAUosH,GAAe97F,EAAG,EAE7EshF,oBAAsB3Z,GAAQ,CAACs0B,EAAeG,EAAca,KAC1DlB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDr+F,EAAcmqE,EAAAA,GAAAA,OAAeJ,EAAK,cAAey0B,GACjDp8F,IAAOi9F,EACb,IAAKzc,EAAY/gF,GAAcoG,YAAY,eACzC,MAAMkiE,EAAAA,GAAAA,oBAA4BJ,EAAM,oDAAmDloE,MAC7FW,EAAAA,EAAAA,IAAoB8gF,EAAWzhF,EAAc7B,GAAcoC,EAAG,EAEhEuhF,oBAAsB5Z,GAAQ,CAACs0B,EAAeG,EAAca,KAC1DlB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,cACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDr+F,EAAcmqE,EAAAA,GAAAA,OAAeJ,EAAK,cAAey0B,GACjDp8F,IAAOi9F,EACb,IAAKzc,EAAY/gF,GAAcoG,YAAY,gBACzC,MAAMkiE,EAAAA,GAAAA,oBAA4BJ,EAAM,qDAAoDloE,MAC9FY,EAAAA,EAAAA,IAAoB6gF,EAAWzhF,EAAc7B,GAAcoC,EAAG,GAiJ5Dk9F,EAA4C,IAC7ClB,EA7IH9Z,kBAAoBva,GAASs0B,IAC3BF,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WAEAojI,EADIzY,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,IAEzCx+F,iBAElB0kF,mBAAqBxa,GAASs0B,IAC5BF,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WAEAojI,EADIzY,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,IAEzCx1F,YAElB27E,gBAAkBza,GAAQ,CAACs0B,EAAekB,KACxCpB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDz9F,GAAel1B,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw1B,EAAe,gBACvF,OArYJ,SAAyB7/I,EAAoBkhD,GAC3C,MAAMC,EAAeC,EAAAA,GAAsBphD,EAASQ,MACpD,QAAqBgK,IAAjB22C,EAA4B,MAAM,IAAI/lC,MAAO,kCAAiCpb,EAASQ,SAE3F,IADoB2gD,EAAasW,cAChB5+D,SAASqoD,GAAe,MAAM,IAAI9lC,MAAO,sBAAqB8lC,MAE/E,OADiBI,EAAAA,EAAYJ,GACb5sC,IAClB,CA8XWwwH,CAAgB5B,EAAY/gF,GAAejB,EAAa,EAEjE6jF,cAAgB1a,GAAQ,CAACs0B,EAAekB,KACtCpB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDz9F,GAAel1B,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw1B,EAAe,gBACvF,OAlYJ,SAAuB7/I,EAAoBkhD,GACzC,OAAOlhD,EAASuhD,WAAWz6C,IAAIo6C,EACjC,CAgYW6jF,CAAc7B,EAAY/gF,GAAejB,EAAa,EAE/D+jF,yBAA2B5a,GAAQ,CAACs0B,EAAeV,EAAWD,KAC5DS,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDloJ,EAAO00H,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ2zB,GACzC,GAAIjoJ,EAAO,EAAG,MAAM,IAAIqlB,MAAM,oEAC9B,MAAM4jC,EAAS2lF,EAAUxiF,EAAc/vB,GACjC6sB,EAAmB3gD,KAAKguB,MAAM0yB,EAAOjpD,KAAOokD,EAAAA,mBAElD,IAAI5vC,EAAO,EACX,IAAK,IAAI1P,EAAI,EAAGA,EAAI9E,EAAOokD,EAAAA,oBAAmCt/C,EAC5D0P,GAAQjM,KAAKoO,IAHQ,KAGYuyC,EAAmBpkD,GAEtD,OAAOs/C,EAAAA,kBAAkC5vC,CAAI,EAE/Cy6H,qBAAuB3a,GAAQ,CAACs0B,EAAeV,EAAW6B,EAAMC,KAC9DtB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtD9iG,EAASsvE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU01B,GACvCzqF,GAAMtpC,EAAAA,EAAAA,GAAc,mBAAmB6uH,YAAYxwB,EAAKy1B,EAAM,OAEpE,GAAIxqF,IAAQvK,EAAAA,gBAAAA,WAA4B,OAAO,EAC/C,GAAI5P,EAAS,IAAM77B,OAAOu0H,UAAU14F,GAClC,MAAMsvE,EAAAA,GAAAA,oBACJJ,EACC,mFAAkFlvE,MAGvF,MAAM6D,EAAS2lF,EAAUxiF,EAAc/vB,GAEjC4tH,EAAoB7kG,EAAS6D,EAAOuV,iBAAiBe,GAE3D,GAAItW,EAAOuV,iBAAiBxJ,EAAAA,gBAAAA,YAA8Bi1F,EACxD,MAAMv1B,EAAAA,GAAAA,oBACJJ,EACC,oBAAmB/0D,kBAAoBna,eAAoB6kG,0BAEhE,OAAOhhG,EAAOqW,cAAcC,EAAKna,EAAO,EAE1CopF,aAAela,GAAQ,CAACs0B,EAAeV,EAAWgC,KAChDxB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjBmgJ,IAAcl1F,EAAAA,gBAAAA,WACd,MAAM5I,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDj7G,GAAWhX,EAAAA,EAAAA,GAAc,mBAAmB6uH,YAAYxwB,EAAK41B,EAAW,YAG9E,OADetb,EAAUxiF,EAAc/vB,GACzBqiC,mBAAmBzxB,EAAS,EAE5CwhG,kBAAoBna,GAAQ,CAACs0B,EAAeV,EAAWD,KACrDS,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtDloJ,EAAO00H,EAAAA,GAAAA,OAAeJ,EAAK,OAAQ2zB,GACzC,GAAIjoJ,EAAO,EAAG,MAAM,IAAIqlB,MAAM,oEAC9B,MAAM4jC,EAAS2lF,EAAUxiF,EAAc/vB,GACjC8mB,EAAc+pF,KACpBlkF,EAAAA,EAAAA,GAAkB7F,EAAa8F,EAAQjpD,EAAK,EAE9C42E,WAAa09C,GAAQ,CAACs0B,EAAeV,EAAWiC,KAC9CzB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtD3+F,EAAkBmrE,EAAAA,GAAAA,OAAeJ,EAAK,kBAAmB61B,GAE/D,GAAI5gG,EAAkB,EACpB,MAAM,IAAIlkC,MAAM,iFAElB,MAAM89B,EAAc+pF,IACdjkF,EAAS2lF,EAAUxiF,EAAc/vB,GAEvC,OAAOitB,EAAAA,EAAAA,IAAWnG,EAAa8F,EAAQM,EAAgB,EAEzDmlF,OAASpa,GAAQ,CAACs0B,EAAeV,KAC/BQ,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GAEtD/kG,EAAc+pF,IACdjkF,EAAS2lF,EAAUxiF,EAAc/vB,GACvC,OAAO8sB,EAAAA,EAAAA,IAAOhG,EAAa8F,EAAO,EAEpC0lF,WAAara,GAASs0B,IACpBF,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDzlG,EAAc+pF,KACpB/iF,EAAAA,EAAAA,IAAWhH,EAAagqF,EAAY/gF,GAAc,EAEpDd,SAAWgpE,GAAQ,CAACs0B,EAAekB,KACjCpB,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAAMqiD,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDz9F,GAAel1B,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw1B,EAAe,iBACvF7+F,EAAAA,EAAAA,IAASkiF,EAAY/gF,GAAejB,EAAa,EAEnDyjF,UAAYta,GAAQ,CAACs0B,EAAeV,KAClCQ,EAAYp0B,EAAKvqH,EAAAA,eAAAA,WACjB,MAEMk/C,EAAS2lF,EAFMla,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,IACxC3yH,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,IAE5D,MAAO,CACLn7H,KAAMk8B,EAAOl8B,KACb/sB,KAAMipD,EAAOjpD,KACb09D,UAAWzU,EAAOyU,UAClBC,UAAW1U,EAAO0U,UAClBpzD,aAAc0+C,EAAO1+C,aACrBqzD,UAAW3U,EAAO2U,UAClBC,UAAW5U,EAAO4U,UAClBK,gBAAiBjV,EAAOiV,gBACxBnJ,wBAAyB9sD,OAAO4wE,OAAO,CAAC,EAAG5vB,EAAO8L,yBAClDwJ,aAAct2D,OAAO4wE,OAAO,CAAC,EAAG5vB,EAAOsV,cACxC,EAQHkuE,eAAgB,IAAM,MAAQxoI,EAAAA,GAAAA,YAC9Bk+H,aAAe7N,GAAQ,KACrBo0B,EAAYp0B,IAKLqxB,EAAAA,EAAAA,YAAUyE,EAAAA,EAAAA,MAAKhmG,EAAe,qBAAsB,yBAA0B,qBAEvFsoF,gBAAkBpY,GAAS+1B,IACzB3B,EAAYp0B,GACZ,MAAMg2B,GAAer0H,EAAAA,EAAAA,GAAc,gBAAgB6uH,YAAYxwB,EAAK+1B,EAAe,gBACnF,OAAO1E,EAAAA,EAAAA,WAAUpiG,EAAAA,GAAe+mG,GAAc,EAEhD3d,gBAAkBrY,GAASw0B,IACzBJ,EAAYp0B,GACZ,MAAMm0B,GAAexyH,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKw0B,EAAe,gBACvF,OAAOnD,EAAAA,EAAAA,WAAUx9F,EAAAA,EAAasgG,GAAc,EAE9Crb,eAAiB9Y,GAAQ,CAAC+1B,EAAezB,KACvCF,EAAYp0B,GACZ,MAAMg2B,GAAer0H,EAAAA,EAAAA,GAAc,gBAAgB6uH,YAAYxwB,EAAK+1B,EAAe,gBAC7Ej+F,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDzlG,EAAc+pF,KACpBhqF,EAAAA,EAAAA,IAAYC,EAAamnG,EAAcl+F,EAAa,EAEtDihF,WAAa/Y,GAAQ,CAACs0B,EAAeV,KACnCQ,EAAYp0B,GACZ,MAAMloE,EAAesoE,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,GACnDvsH,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GACtD/kG,EAAc+pF,IACdjjI,EAAWkjI,EAAY/gF,IAC7BjI,EAAAA,EAAAA,IAAehB,EAAal5C,EAAUoyB,EAAS,EAEjDm0B,eAAiB8jE,GAASi2B,IACxB7B,EAAYp0B,GACZ,MAAM7jE,GAAax6B,EAAAA,EAAAA,GAAc,kBAAkB6uH,YAAYxwB,EAAKi2B,EAAa,cAE3Ez+E,EADcohE,IACQ18E,eAAeC,GAC3C,GAAIqb,EAAS,MAAM,IAAIzmD,MAAO,oBAAmBorC,MAAeqb,IAAU,EAE5EwhE,aAAehZ,GAASk2B,IACtB9B,EAAYp0B,GACZ,MAAM1jE,GAAc36B,EAAAA,EAAAA,GAAc,mBAAmB6uH,YAAYxwB,EAAKk2B,EAAc,eAE9E1+E,EADcohE,IACQv8E,gBAAgBC,EAAa,GACzD,GAAIkb,EAAS,MAAM,IAAIzmD,MAAO,qBAAoBurC,MAAgBkb,IAAU,EAE9EkH,eAAiBshD,GAASm2B,IACxB/B,EAAYp0B,GACZ,MAAM9vE,EAAOkwE,EAAAA,GAAAA,OAAeJ,EAAK,OAAQm2B,GACnCnhI,EAAM86B,EAAAA,gBACZ,GAAII,EAAO,GAAKA,EAAOl7B,EACrB,MAAM,IAAIjE,MAAO,gFAA+EiE,KAClG,MAAM65B,EAAc+pF,IACpB,IAAK/pF,EAAY6B,OAAQ,MAAM0vE,EAAAA,GAAAA,oBAA4BJ,EAAM,sCACjE/vE,EAAAA,EAAAA,IAAepB,EAAaqB,EAAK,EAEnC2uB,eAAiBmhD,GAAS01B,IACxBtB,EAAYp0B,GACZ,MAAMnxE,EAAc+pF,IACdtmE,EAAezjB,EAAYyM,wBAClBn7C,MAAXu1I,IAAsBA,EAAUpjF,GACpC,MAAMxhB,EAASsvE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU01B,IACtCvmG,IAAS0B,EAAAA,EAAAA,IAAehC,EAAaiC,GAC5C,OAAO3B,CAAK,EAEd0pF,YAAc7Y,GAASs0B,IACrBF,EAAYp0B,GAzfhB,SAAyBrqH,GACvB,MAAM2mB,GAASrc,EAAAA,EAAAA,IAActK,EAASI,SAEtC,MAAO,CACL7E,KAAMyE,EAASzE,KACfiF,KAAMR,EAASQ,KACfgoD,UAAWxoD,EAASwoD,UACpBC,WAAYzoD,EAASyoD,WACrBxoD,eAAgBD,EAASC,eACzBuhD,eAAgBxhD,EAASwhD,eACzB8C,iBAAkBtkD,EAASskD,iBAC3BC,kBAAmBvkD,EAASukD,kBAC5ByE,iBAAkBhpD,EAASgpD,iBAC3BC,kBAAmBjpD,EAASipD,kBAC5BE,WAAYnpD,EAASmpD,WACrBxiC,OAAQA,EACR+5B,SAAU,IAAI1gD,EAAS0gD,SAASvqC,QAChCsqC,cAAezgD,EAASygD,cACxBE,YAAa3gD,EAAS2gD,YAE1B,CAweW8/F,CADUvd,EADIzY,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBs0B,MAI3D1b,eAAiB5Y,GAAQ,KACvBo0B,EAAYp0B,GACZ,MAAMnxE,EAAc+pF,IACpB,MAAO,CACL1nI,KAAM29C,EAAY39C,KAClBi+C,MAAON,EAAYM,MACnB0J,QAAShK,EAAYgK,QACrBC,SAAUjK,EAAYiK,SACtBpI,OAAQ7B,EAAY6B,OACpBH,YAAa1B,EAAY0B,YACzBF,UAAWxB,EAAYwB,UACvBiE,kBAAmBzF,EAAYyF,kBAC/BhD,eAAgBzC,EAAYyC,eAC5BV,aAAc/B,EAAY+B,aAC1BQ,uBAAwBvC,EAAYuC,uBACpCT,WAAY9B,EAAY8B,WACxBR,aAActB,EAAYsB,aAC1B4I,YAAalK,EAAYkK,YACzBs9F,iBAAkBxnG,EAAYwL,oBAAsBvK,EAAAA,sBACpDja,MAAOgZ,EAAYhZ,MAAM+jB,WACzB7K,UAAW,IAAIF,EAAYE,UAAUjjC,QACtC,EAEHwsH,kBACGtY,GACD,SAACs2B,GAAgD,IAA9BC,IAAY,UAAH,+CAC1B,MAAM7iE,EAAkB0sC,EAAAA,GAAAA,OAAeJ,EAAK,kBAAmBs2B,GACzDpC,IAAaqC,EACnB,OAAOje,EAAkB5kD,EAAiBwgE,EAC5C,EACF3b,UAAYvY,GAASi2B,IACnB7B,EAAYp0B,GAELuY,GADY52G,EAAAA,EAAAA,GAAc,kBAAkB6uH,YAAYxwB,EAAKi2B,EAAa,gBAGnFzd,cAAgBxY,GAASi2B,IAGvB,OAFA7B,EAAYp0B,GAhoBO7jE,GAioBAx6B,EAAAA,EAAAA,GAAc,kBAAkB6uH,YAAYxwB,EAAKi2B,EAAa,cAhoB5E75F,EAAAA,EAAYD,GAAYnK,MADjC,IAAuBmK,CAkoBa,EAElCs8E,gBAAkBzY,GAASk2B,IAGzB,OAFA9B,EAAYp0B,GAjoBS1jE,GAkoBD36B,EAAAA,EAAAA,GAAc,mBAAmB6uH,YAAYxwB,EAAKk2B,EAAc,eAjoBlEtd,IACD1/E,SAASoD,GAAalrD,MAF3C,IAAyBkrD,CAmoBc,EAErCo8E,oBAAsB1Y,GAASk2B,IAC7B9B,EAAYp0B,GAjoBhB,SAA6B1jE,GAC3B,MAAMzN,EAAc+pF,IAEpB,OADaj8E,EAAAA,EAAAA,IAAqB9N,EAAa4N,EAAAA,EAAaH,GAAc,EAE5E,CA+nBWo8E,EADa/2G,EAAAA,EAAAA,GAAc,mBAAmB6uH,YAAYxwB,EAAKk2B,EAAc,iBAGtFp6F,mBAAqBkkE,GAAQ,KAC3Bo0B,EAAYp0B,GACQ4Y,IACD98E,sBAErB68E,sBAAwB3Y,GAAQ,KAC9Bo0B,EAAYp0B,GACZ,MAAMnxE,EAAc+pF,IACpB,IAEE,OADAnnF,EAAAA,EAAAA,IAAsB5C,IACf,CAGT,CAFE,MAAOkoB,GACP,OAAO,CACT,GAEFsH,SAAW2hD,GAASw2B,IAClBpC,EAAYp0B,GACZ,MAAMnxE,EAAc+pF,IACpB,GAAI/pF,EAAY6B,OAAQ,MAAM0vE,EAAAA,GAAAA,oBAA4BJ,EAAK,iCAC/D,MAAM3vE,EAAY+vE,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw2B,GAEnD,OADApmG,EAAAA,EAAAA,IAASvB,EAAawB,IACf,CAAI,EAEb6oF,WAAalZ,GAASw2B,IACpBpC,EAAYp0B,GACZ,MAAM3vE,EAAY+vE,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw2B,GACnD,OAAOviG,EAAAA,EAAAA,IAAW2kF,IAAkBvoF,EAAU,EAEhD4oF,cAAgBjZ,GAASw2B,IACvBpC,EAAYp0B,GACZ,MAAM3vE,EAAY+vE,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw2B,GACnD,OAAOjiG,EAAAA,EAAAA,IAAcqkF,IAAkBvoF,EAAU,EAEnD0sB,MAAQijD,GAAQ,CAACy2B,EAAcC,KAC7BtC,EAAYp0B,GAppBhB,SAAe97G,EAA0ByyI,GACvC,GAAI5uI,MAAM4uI,IAAeA,EAAa,EACpC,MAAM,IAAI5lI,MAAM,oEAElB,MAAM89B,EAAc+pF,IACpB,GAAI/pF,EAAYM,MAAQwnG,EAAY,OAAO,EAC3C,MAAM/rI,EAAUhX,EAAAA,EAASsQ,GAEzB,IADa0G,EAAQw1B,UACXo7B,aAAc,OAAO,EAC/B,GAAIujB,EAAAA,GAAAA,YAAmB76E,GAAc,OAAO,EAE5C,MAAM24D,EAAU85E,EAAa7mG,EAAAA,yBAI7B,OAHAllC,EAAQ9W,kBAAoB+oE,EAC5BhuB,EAAYM,MAAQN,EAAYM,MAAQwnG,GAEjC,CACT,CAuoBW55E,EAFap7C,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKy2B,GAC/Cr2B,EAAAA,GAAAA,OAAeJ,EAAK,aAAc02B,KAGvD5iB,aAAe9T,GAAQ,KACrBo0B,EAAYp0B,GAC2C,IAAhD/rH,KAAKguB,MAAM22G,IAAiB78G,aAAe,KAyBtD,OApBA0kG,EAAAA,EAAAA,GAAoB80B,EAAe,CACjCqB,UAAW,CACTx3D,QAAS,QACTwhC,YAAa,qGACbC,YAAY,GAEdg2B,YAAa,CACXz3D,QAAS,QACTwhC,YAAa,+DACbC,YAAY,GAEdi2B,kBAAmB,CAAE13D,QAAS,QAASwhC,YAAa,gDACpDm2B,sBAAuB,CAAE33D,QAAS,QAASwhC,YAAa,+BACxDo2B,iBAAkB,CAAE53D,QAAS,QAASwhC,YAAa,4CACnDq2B,iBAAkB,CAAE73D,QAAS,QAASwhC,YAAa,4CACnDs2B,yBAA0B,CAAE93D,QAAS,QAASwhC,YAAa,mDAC3Du2B,iBAAkB,CAAE/3D,QAAS,QAASwhC,YAAa,4CACnDw2B,eAAgB,CAAEh4D,QAAS,QAASwhC,YAAa,0CACjDy2B,gBAAiB,CAAEj4D,QAAS,QAASwhC,YAAa,6CAE7C20B,CACT,sHC1xBO,SAAS9C,IACd,MAAO,CACLjP,MAAO,CACLC,MAAO,IAAM,IAAM9zI,EAAAA,GAAAA,OAErBuzI,YAAa,IAAM,IAAMoU,EAAAA,EAAAA,OACzBl3D,QAAS,IAAM,IAAMzwF,EAAAA,GAAAA,YAAmBoJ,EAAAA,GAAAA,0BACxCsqI,OAASrjB,GAASu3B,IAKhB,MAAMvpH,EAAIupH,EACVvpH,EAAEwpH,6BAA0Br3I,EAC5B,MAAMs3I,EAAgBz9I,SACtBy9I,EAAcD,6BAA0Br3I,EAExCs3I,EAAcD,yBAA0B,EACpCxpH,EAAEwpH,yBAA2Bx3B,EAAIh2F,aAAao4F,UAAUpvH,WAAamwH,EAAAA,GAAAA,MACvExzH,EAAAA,GAAAA,YAAmBoJ,EAAAA,GAAAA,QAErBi1B,EAAEwpH,6BAA0Br3I,EAC5Bs3I,EAAcD,6BAA0Br3I,CAAS,EAEnDmjI,aAAc,IAAM,KAElB,IAAIhjI,GAAI,EACR,MAAMo3I,EAAQ,SAAU76I,GACR,IAAVA,IACJyD,GAAKA,EACLo3I,EAAM76I,EAAQ,GAChB,EACA66I,EAAM,GACNt0I,QAAQgd,KAAK,0CACT9f,IACF8C,QAAQgd,KAAK,6BACbzwB,EAAAA,GAAAA,YAAmBoJ,EAAAA,GAAAA,mBACrB,EAEFwqI,QAAUvjB,GAAS23B,IACjB,MAAM78G,EAAQslF,EAAAA,GAAAA,OAAeJ,EAAK,QAAS23B,GAE3C,QADiBC,EAAAA,YAAmB98G,EAAO,kEAE3CnrC,EAAAA,GAAAA,YAAmBoJ,EAAAA,GAAAA,gBACZ,EAAI,EAGjB,oFC3DO,SAASy5I,EAAMxyB,GACpB,MAAM63B,EAAQtiG,MAAMyK,QAAQggE,GAAOA,EAAMA,EAAIh2F,aAAajK,KAC1D,OAAQ+3H,IAEN,GADAA,GAASh2B,EAAAA,EAAAA,GAASg2B,IACbviG,MAAMyK,QAAQ83F,GAAS,MAAM,IAAI/mI,MAAM,sCAC5C,MAAMgP,EAAiC,CAAC,EAExC,IAAK,MAAMiO,KAAK8pH,EAAQ,CACtB,IAAI57G,EAAc3oB,OACE,iBAATya,EAAE,GACXkO,EAAIjnB,OACqB,kBAAT+Y,EAAE,GAClBkO,EAAIw0E,QACKn7D,MAAMyK,QAAQhyB,EAAE,MACzBkO,EAAI,CAAC3oB,SAEP,MAAMwkI,EAAY/pH,EAAE,GAAGr/B,OAAS,EAAI,EAAI,EACxCoxB,EAAK,IAAI8vF,OAAOkoC,GAAa/pH,EAAE,IAAMkO,CACvC,CACA,MAAM87G,EAAgBC,IAAOl4H,EAAM,CAAEm4H,KAAML,IAC3C,IAAK,MAAM7pH,KAAK8pH,EACTnkJ,OAAOojB,OAAOihI,EAAK,KAAOhqH,EAAE,KAAQr6B,OAAOojB,OAAOihI,EAAK,IAAMhqH,EAAE,MAAKgqH,EAAIhqH,EAAE,IAAMA,EAAE,IAEzF,IAAK,MAAM/+B,KAAO0E,OAAOmY,KAAKksI,GAAM,CAClC,IAAK/oJ,EAAI4wB,WAAW,KAAM,SAC1B,MAAMzjB,EAAQ47I,EAAI/oJ,UACX+oJ,EAAI/oJ,GACX,MAAM8oJ,EAA2B,IAAf9oJ,EAAIN,OAAe,EAAI,EACzCqpJ,EAAI/oJ,EAAI6qB,MAAMi+H,IAAc37I,CAC9B,CACA,OAAO47I,CAAG,CAEd,yRCuBO,SAAS7P,IACd,MAAMgQ,EAAsB,SAAUn4B,GACpC,IAAKjhC,EAAAA,GAAAA,WAAkBzuF,EAAAA,qBAAAA,UACrB,MAAM8vH,EAAAA,GAAAA,oBAA4BJ,EAAM,gCAE5C,EACMo4B,EAA4C,CAChDvU,WAAY,IAAM,KAAM,CACtBpxI,SAAU,EACVyjF,aAAa,EACbF,gBAAgB,EAChBl1C,SAAU,GACVs1C,cAAc,EACdspB,GAAI,GACJslB,eAAe,EACf1yH,OAAQ,EACR2yH,iBAAkB,GAClB1jB,QAAS,EACTprB,cAAc,EACdE,aAAa,EACbJ,aAAa,EACbp1C,mBAAmB,EACnBnxC,mBAAmB,EACnBimB,eAAgB,EAChB4gE,eAAgB,EAChBC,cAAe,EACfpkF,eAAgB,EAChBD,SAAU,EACV84I,qBAAsB,EACtB30D,cAAe,EACfkmB,qBAAsB,EACtB4wC,aAAc,IAEhBtJ,WAAY,IAAM,MAEhB/+G,GAAI,CAAEnd,QAAS,EAAGoN,IAAK,GACvB+C,OAAQ,CAAExf,QAAS,EAAGC,SAAU,EAAGC,QAAS,EAAGE,UAAW,EAAGD,QAAS,EAAGE,SAAU,EAAGqhB,aAAc,GACpG3hB,IAAK,CAAEC,QAAS,EAAGC,SAAU,EAAGC,QAAS,EAAGE,UAAW,EAAGD,QAAS,EAAGE,SAAU,EAAGqhB,aAAc,GACjG3a,OAAOC,EAAAA,EAAAA,MACPkZ,KAAMpkB,EAAAA,SAAAA,SAENi9I,gBAAiB,EACjBxmI,MAAO,EACPjZ,SAAUmlH,EAAAA,aAAAA,aACVr7E,cAAe,EACf41G,KAAM,CAAC,EACP/xI,SAAU,GACVgyI,QAAS,IAEXzN,WAAY,IAAM,MAChBh/G,GAAI,CAAEnd,QAAS,EAAGoN,IAAK,GACvB+C,OAAQ,CAAExf,QAAS,EAAGC,SAAU,EAAGC,QAAS,EAAGE,UAAW,EAAGD,QAAS,EAAGE,SAAU,EAAGqhB,aAAc,GACpG3hB,IAAK,CAAEC,QAAS,EAAGC,SAAU,EAAGC,QAAS,EAAGE,UAAW,EAAGD,QAAS,EAAGE,SAAU,EAAGqhB,aAAc,GACjG3a,OAAOC,EAAAA,EAAAA,MACPkZ,KAAMpkB,EAAAA,SAAAA,WAERgvB,WAAY,CACV2gH,oBAAsBhkB,GAASq4B,IAC7B,MAAMrkJ,EAAQosH,EAAAA,GAAAA,OAAeJ,EAAK,QAASq4B,GAE3C,OADAF,EAAoBn4B,IACbgkB,EAAAA,EAAAA,GAAoBhwI,EAAM,EAEnCiwI,oBAAsBjkB,GAASs4B,IAC7B,MAAM5tI,EAAM01G,EAAAA,GAAAA,OAAeJ,EAAK,MAAOs4B,GAEvC,OADAH,EAAoBn4B,IACbikB,EAAAA,EAAAA,GAAoBv5H,EAAI,EAEjCi5E,gBAAkBq8B,GAAQ,CAAC01B,EAAS6C,KAClC,MAAMznG,EAASsvE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU01B,GACvCr+H,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAEnC,OADAJ,EAAoBn4B,IACbr8B,EAAAA,EAAAA,IAAgB7yC,EAAQz5B,EAAO,GAG1CU,OAAQ,CACNq8E,eACG4rB,GACD,SAACw4B,GAAoB,IAAdC,EAAQ,UAAH,6CAAG,EACb,MAAMngJ,EAAM8nH,EAAAA,GAAAA,OAAeJ,EAAK,MAAOw4B,GACjCt4I,EAAOkgH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQy4B,GAEzC,OADAN,EAAoBn4B,IACb5rB,EAAAA,EAAAA,IAAe97F,EAAK4H,EAC7B,EACFgkI,aACGlkB,GACD,SAAC04B,GAAsB,IAAdD,EAAQ,UAAH,6CAAG,EACf,MAAMh6H,EAAQ2hG,EAAAA,GAAAA,OAAeJ,EAAK,QAAS04B,GACrCx4I,EAAOkgH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQy4B,GAEzC,OADAN,EAAoBn4B,IACbkkB,EAAAA,EAAAA,IAAazlH,EAAOve,EAC7B,GAEJ3H,QAAS,CACP0rH,WAAajE,GAAQ,CAAC24B,EAASJ,KAC7B,MAAMx4G,EAASqgF,EAAAA,GAAAA,OAAeJ,EAAK24B,GAC7BthI,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAEnC,OADAJ,EAAoBn4B,IACbzjB,EAAAA,EAAAA,IAAuBx8D,EAAQ1oB,EAAO,EAE/CyL,QAAUk9F,GAAQ,CAAC24B,EAASJ,KAC1B,MAAMx4G,EAASqgF,EAAAA,GAAAA,OAAeJ,EAAK24B,GAC7BthI,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAEnC,OADAJ,EAAoBn4B,IACbvjB,EAAAA,EAAAA,IAAwB18D,EAAQ1oB,EAAO,EAEhD8sH,YAAcnkB,GAAQ,CAAC24B,EAASJ,KAC9B,MAAMx4G,EAASqgF,EAAAA,GAAAA,OAAeJ,EAAK24B,GAC7BthI,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAEnC,OADAJ,EAAoBn4B,IACbtjB,EAAAA,EAAAA,IAA4B38D,EAAQ1oB,EAAO,EAKpD+sH,YACGpkB,GACD,SAAC24B,EAAS/P,EAAU2P,GAAwB,IAAfhP,EAAS,UAAH,6CAAG,EACpC,MAAMxpG,EAASqgF,EAAAA,GAAAA,OAAeJ,EAAK24B,GAC7BthI,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAC7B1wE,EAAUu4C,EAAAA,GAAAA,OAAeJ,EAAK,UAAW4oB,GACzCp1I,EAAQ4sH,EAAAA,GAAAA,OAAeJ,EAAK,QAASupB,GAE3C,OADA4O,EAAoBn4B,IACb44B,EAAAA,EAAAA,GAAsB74G,EAAQ8nC,EAASxwD,EAAQ7jB,EACxD,EACF6wI,YACGrkB,GACD,SAAC24B,EAASJ,EAASM,GAA6B,IAAftP,EAAS,UAAH,6CAAG,EACxC,MAAMxpG,EAASqgF,EAAAA,GAAAA,OAAeJ,EAAK24B,GAC7B55D,EAASqhC,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAC7BO,EAAc14B,EAAAA,GAAAA,OAAeJ,EAAK,cAAe64B,GACjDE,EAAa34B,EAAAA,GAAAA,OAAeJ,EAAK,wBAAyBjgF,EAAO3tC,gBACjEoB,EAAQ4sH,EAAAA,GAAAA,OAAeJ,EAAK,QAASupB,GAE3C,OADA4O,EAAoBn4B,IACb2pB,EAAAA,EAAAA,IAA2B5pG,EAAQ+4G,EAAaC,EAAYvlJ,EAAOurF,EAC5E,EACFulD,SAAWtkB,GAAQ,CAAC24B,EAASJ,KAC3B,MAAMx4G,EAASqgF,EAAAA,GAAAA,OAAeJ,EAAK24B,GAC7BthI,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAEnC,OADAJ,EAAoBn4B,GAC0B,KAAvCpjB,EAAAA,EAAAA,IAAqB78D,EAAQ1oB,EAAc,EAEpDktH,SAAWvkB,GAAQ,CAAC24B,EAASJ,KAC3B,MAAMx4G,EAASqgF,EAAAA,GAAAA,OAAeJ,EAAK24B,GAC7BthI,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAEnC,OADAJ,EAAoBn4B,GACuB,KAApCljB,EAAAA,EAAAA,IAAkB/8D,EAAQ1oB,EAAc,EAEjDmtH,WAAaxkB,GAAQ,CAAC24B,EAASJ,KAC7B,MAAMx4G,EAASqgF,EAAAA,GAAAA,OAAeJ,EAAK24B,GAC7BthI,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAEnC,OADAJ,EAAoBn4B,GACyB,KAAtCjjB,EAAAA,EAAAA,IAAoBh9D,EAAQ1oB,EAAc,GAGrDotH,aAAc,CACZ31C,cACGkxB,GACD,SAACuzB,EAAQ3F,EAAMrE,GAAsB,IAAdkP,EAAQ,UAAH,6CAAG,EAC7B,MAAMrnJ,EAAQgvH,EAAAA,GAAAA,OAAeJ,EAAK,QAASuzB,GACrCjgJ,EAAM8sH,EAAAA,GAAAA,OAAeJ,EAAK,MAAO4tB,GACjCp6I,EAAQ4sH,EAAAA,GAAAA,OAAeJ,EAAK,QAASupB,GACrCrpI,EAAOkgH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQy4B,GAEzC,OADAN,EAAoBn4B,IACbjf,EAAAA,EAAAA,IAAuB3vG,EAAOkC,EAAKE,EAAO0M,EACnD,EACFwkI,iBACG1kB,GACD,SAACg5B,GAAoD,IAApCC,EAAe,UAAH,6CAAG,EAAGC,EAAY,UAAH,6CAAG,EAC7C,MAAMn1C,EAAgBqc,EAAAA,GAAAA,OAAeJ,EAAK,gBAAiBg5B,GACrDh1C,EAAcoc,EAAAA,GAAAA,OAAeJ,EAAK,cAAei5B,GACjDn4C,EAAWsf,EAAAA,GAAAA,OAAeJ,EAAK,WAAYk5B,GAEjD,OADAf,EAAoBn4B,IACb7hB,EAAAA,EAAAA,IAA0B4F,EAAeC,EAAalD,EAC/D,EACF6jC,eACG3kB,GACD,SAACm5B,GAAkD,IAApCF,EAAe,UAAH,6CAAG,EAAGC,EAAY,UAAH,6CAAG,EAC3C,MAAMh1C,EAAckc,EAAAA,GAAAA,OAAeJ,EAAK,cAAem5B,GACjDn1C,EAAcoc,EAAAA,GAAAA,OAAeJ,EAAK,cAAei5B,GACjDn4C,EAAWsf,EAAAA,GAAAA,OAAeJ,EAAK,WAAYk5B,GAEjD,OADAf,EAAoBn4B,IACb1hB,EAAAA,EAAAA,IAAwB4F,EAAaF,EAAalD,EAC3D,EACF8jC,gBACG5kB,GACD,SAACo5B,GAAkD,IAAnCC,EAAc,UAAH,6CAAG,EAAGH,EAAY,UAAH,6CAAG,EAC3C,MAAM70C,EAAe+b,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBo5B,GACnDE,EAAal5B,EAAAA,GAAAA,OAAeJ,EAAK,aAAcq5B,GAC/Cv4C,EAAWsf,EAAAA,GAAAA,OAAeJ,EAAK,WAAYk5B,GAEjD,OADAf,EAAoBn4B,IACbvhB,EAAAA,EAAAA,IAAyB4F,EAAci1C,EAAYx4C,EAC5D,EACF+jC,gBAAkB7kB,GAAQ,CAAC8E,EAAI2zB,KAC7B,MAAMjtI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B5kH,EAAOkgH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQy4B,GAEzC,OADAN,EAAoBn4B,IACbjiB,EAAAA,EAAAA,IAAkBvyF,EAAGtL,EAAK,EAEnC4kI,UAAY9kB,GAAQ,KAClBm4B,EAAoBn4B,GACbrsH,OAAO4wE,OAAO,CAAC,EAAGhxE,EAAAA,MAG7BwxI,eAAgB,CACdC,aACGhlB,GACD,SAACuzB,EAAQgG,EAAUC,EAASjQ,GAAsB,IAAdkP,EAAQ,UAAH,6CAAG,EAC1C,MAAMrnJ,EAAQgvH,EAAAA,GAAAA,OAAeJ,EAAK,QAASuzB,GACrChyC,EAAU6e,EAAAA,GAAAA,OAAeJ,EAAK,UAAWu5B,GACzCjnJ,EAAS8tH,EAAAA,GAAAA,OAAeJ,EAAK,SAAUw5B,GACvChmJ,EAAQ4sH,EAAAA,GAAAA,OAAeJ,EAAK,QAASupB,GACrCrpI,EAAOkgH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQy4B,GAEzC,OADAN,EAAoBn4B,IACby5B,EAAAA,EAAAA,IAAwBroJ,EAAOmwG,EAASjvG,EAAQkB,EAAO0M,EAChE,EACFwkI,iBACG1kB,GACD,SAACg5B,GAAoD,IAApCC,EAAe,UAAH,6CAAG,EAAGC,EAAY,UAAH,6CAAG,EAC7C,MAAMn1C,EAAgBqc,EAAAA,GAAAA,OAAeJ,EAAK,gBAAiBg5B,GACrDh1C,EAAcoc,EAAAA,GAAAA,OAAeJ,EAAK,cAAei5B,GACjDn4C,EAAWsf,EAAAA,GAAAA,OAAeJ,EAAK,WAAYk5B,GAEjD,OADAf,EAAoBn4B,IACb05B,EAAAA,EAAAA,IAA4B31C,EAAeC,EAAalD,EACjE,EACF6jC,eACG3kB,GACD,SAACm5B,GAAkD,IAApCF,EAAe,UAAH,6CAAG,EAAGC,EAAY,UAAH,6CAAG,EAC3C,MAAMh1C,EAAckc,EAAAA,GAAAA,OAAeJ,EAAK,cAAem5B,GACjDn1C,EAAcoc,EAAAA,GAAAA,OAAeJ,EAAK,cAAei5B,GACjDn4C,EAAWsf,EAAAA,GAAAA,OAAeJ,EAAK,WAAYk5B,GAEjD,OADAf,EAAoBn4B,IACb25B,EAAAA,EAAAA,IAA0Bz1C,EAAaF,EAAalD,EAC7D,EACF8jC,gBACG5kB,GACD,SAACo5B,GAAkD,IAAnCC,EAAc,UAAH,6CAAG,EAAGH,EAAY,UAAH,6CAAG,EAC3C,MAAM70C,EAAe+b,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBo5B,GACnDE,EAAal5B,EAAAA,GAAAA,OAAeJ,EAAK,aAAcq5B,GAC/Cv4C,EAAWsf,EAAAA,GAAAA,OAAeJ,EAAK,WAAYk5B,GAEjD,OADAf,EAAoBn4B,IACb45B,EAAAA,EAAAA,IAA2Bv1C,EAAci1C,EAAYx4C,EAC9D,EACFmkC,iBACGjlB,GACD,SAAC65B,GAAoC,IAApBC,EAAc,UAAH,6CAAG,EAC7B,MAAMp1C,EAAgB0b,EAAAA,GAAAA,OAAeJ,EAAK,gBAAiB65B,GACrDE,EAAa35B,EAAAA,GAAAA,OAAeJ,EAAK,aAAc85B,GAErD,OADA3B,EAAoBn4B,IACbg6B,EAAAA,EAAAA,IAA4Bt1C,EAAeq1C,EACpD,EACF7U,gBAAkBllB,GAAQ,CAACi6B,EAAU1G,KACnC,MAAMh7C,EAAU6nB,EAAAA,GAAAA,OAAeJ,EAAK,UAAWi6B,GACzC7oJ,EAAQgvH,EAAAA,GAAAA,OAAeJ,EAAK,QAASuzB,GAC3C4E,EAAoBn4B,GACpB,MAAM/sB,EAAMlU,EAAAA,GAAAA,YAAAA,WAA8BwZ,GAC1C,IAAKtF,EACH,MAAMmtB,EAAAA,GAAAA,oBAA4BJ,EAAM,yBAAwBznB,KAElE,OAAOtF,EAAI8O,QAAQ3wG,EAAM,EAE3B+zI,kBACGnlB,GACD,SAAC8E,GAAkB,IAAd2zB,EAAQ,UAAH,6CAAG,EACX,MAAMjtI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B5kH,EAAOkgH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQy4B,GAEzC,OADAN,EAAoBn4B,IACbk6B,EAAAA,EAAAA,IAAsB1uI,EAAGtL,EAClC,EACF4kI,UAAY9kB,GAAQ,KAClBm4B,EAAoBn4B,GACbrsH,OAAO4wE,OAAO,CAAC,EAAGxtE,EAAAA,MAG7B49F,KAAM,CACJywC,cAAgBplB,GAASm6B,IACvB,MAAMxlD,EAAOyrB,EAAAA,GAAAA,KAAaJ,EAAKm6B,GAE/B,OADAhC,EAAoBn4B,IACbvoB,EAAAA,EAAAA,IAAuB9C,EAAK,EAErC0wC,YAAcrlB,GAAQ,CAACm6B,EAAOC,EAASC,KACrC,MAAM1lD,EAAOyrB,EAAAA,GAAAA,KAAaJ,EAAKm6B,GACzBvqD,EAASwwB,EAAAA,GAAAA,WAAmBJ,EAAKo6B,GACjC1oD,EAAO0uB,EAAAA,GAAAA,SAAiBJ,EAAKq6B,GAEnC,OADAlC,EAAoBn4B,IACbtrB,EAAAA,EAAAA,IAAqBC,EAAM/E,EAAQ8B,EAAK,EAEjD4zC,gBAAkBtlB,GAAQ,CAACm6B,EAAOC,EAASC,KACzC,MAAM1lD,EAAOyrB,EAAAA,GAAAA,KAAaJ,EAAKm6B,GACzBvqD,EAASwwB,EAAAA,GAAAA,WAAmBJ,EAAKo6B,GACjC1oD,EAAO0uB,EAAAA,GAAAA,SAAiBJ,EAAKq6B,GAEnC,OADAlC,EAAoBn4B,IACbjwB,EAAAA,EAAAA,IAAyB4E,EAAM/E,EAAQ8B,EAAK,EAErDtrE,UAAY45F,GAAQ,CAACm6B,EAAOC,EAASC,KACnC,MAAM1lD,EAAOyrB,EAAAA,GAAAA,KAAaJ,EAAKm6B,GACzBvqD,EAASwwB,EAAAA,GAAAA,WAAmBJ,EAAKo6B,GACjC1oD,EAAO0uB,EAAAA,GAAAA,SAAiBJ,EAAKq6B,GAEnC,OADAlC,EAAoBn4B,IACblwB,EAAAA,EAAAA,IAAmB6E,EAAM/E,EAAQ8B,EAAK,EAE/C6zC,oBAAsBvlB,GAASw4B,IAC7B,MAAMlgJ,EAAM8nH,EAAAA,GAAAA,OAAeJ,EAAK,MAAOw4B,GAEvC,OADAL,EAAoBn4B,IACbzqB,EAAAA,EAAAA,IAA6Bj9F,EAAI,EAE1CktI,oBAAsBxlB,GAASs6B,IAC7B,MAAMhmD,EAAS8rB,EAAAA,GAAAA,OAAeJ,EAAK,SAAUs6B,GAE7C,OADAnC,EAAoBn4B,IACb3rB,EAAAA,EAAAA,IAAuBC,EAAO,GAGzCmxC,KAAM,CACJC,mBAAqB1lB,GAAQ,CAACu6B,EAASC,KACrCrC,EAAoBn4B,GACpB,MAAM3oG,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu6B,GAC7B3+B,GAAQ5tC,EAAAA,EAAAA,GAAUoyC,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw6B,IACzD,IAAK5+B,EAAO,MAAM,IAAI7qG,MAAO,uBAAsBypI,KACnD,OAAO5+B,EAAM/tC,YAAYx2D,EAAO,EAElCsuH,WAAa3lB,GAAQ,CAACu6B,EAASC,KAC7BrC,EAAoBn4B,GACpB,MAAM3oG,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu6B,GAC7B3+B,GAAQ5tC,EAAAA,EAAAA,GAAUoyC,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw6B,IACzD,IAAK5+B,EAAO,MAAM,IAAI7qG,MAAO,uBAAsBypI,KACnD,OAAOC,EAAAA,EAAAA,IAAwBpjI,EAAQukG,EAAM,EAE/CgqB,SAAW5lB,GAAQ,CAACu6B,EAASG,EAAYC,KACvCxC,EAAoBn4B,GACpB,MAAM3oG,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu6B,GAC7Bv/B,GAAY4/B,EAAAA,EAAAA,GAAe1/B,EAAAA,QAASkF,EAAAA,GAAAA,OAAeJ,EAAK,YAAa06B,IAC3E,IAAK1/B,EAAW,MAAM,IAAIjqG,MAAO,8BAA6B2pI,KAC9D,MAAMG,GAAel5H,EAAAA,EAAAA,GAAc,gBAAgB6uH,YAAYxwB,EAAK26B,GACpE,OAAOG,EAAAA,EAAAA,IAAuBzjI,EAAQ2jG,EAAW6/B,EAAa,EAEhEhV,gBAAkB7lB,GAAQ,CAACu6B,EAASG,EAAYC,KAC9CxC,EAAoBn4B,GACpB,MAAM3oG,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu6B,GAC7Bv/B,GAAY4/B,EAAAA,EAAAA,GAAer9B,EAAAA,oBAAqB6C,EAAAA,GAAAA,OAAeJ,EAAK,YAAa06B,IACvF,IAAK1/B,EAAW,MAAM,IAAIjqG,MAAO,kCAAiC2pI,KAClE,MAAMG,GAAel5H,EAAAA,EAAAA,GAAc,gBAAgB6uH,YAAYxwB,EAAK26B,GACpE,OAAOG,EAAAA,EAAAA,IAAuBzjI,EAAQ2jG,EAAW6/B,EAAa,EAEhE/U,aAAe9lB,GAAQ,CAACu4B,EAASwC,EAAW1C,KAC1CF,EAAoBn4B,GACpB,MAAMjhC,EAASqhC,EAAAA,GAAAA,OAAeJ,EAAKu4B,GAC7ByC,GAAWJ,EAAAA,EAAAA,GAAe9zD,EAAAA,gBAAiBs5B,EAAAA,GAAAA,OAAeJ,EAAK,YAAa+6B,IAClF,IAAKC,EAAU,MAAM,IAAIjqI,MAAO,8BAA6BgqI,KAC7D,MAAM/mJ,EAAQosH,EAAAA,GAAAA,OAAeJ,EAAK,QAASq4B,GACrC//I,GAAM2iJ,EAAAA,EAAAA,IAAoBl8D,EAAQi8D,GAClCtwI,GAAMwwI,EAAAA,EAAAA,IAAoBn8D,EAAQi8D,EAAUhnJ,GAElD,OADAsE,EAAI+qB,WAAa3Y,EACVpS,CAAG,EAEZytI,aAAe/lB,GAAQ,CAACu6B,EAASY,EAAcC,EAAe/C,KAC5DF,EAAoBn4B,GACpB,MAAM3oG,EAAS+oG,EAAAA,GAAAA,OAAeJ,EAAKu6B,GAC7Bc,GAAeT,EAAAA,EAAAA,GAAe52G,EAAAA,QAASo8E,EAAAA,GAAAA,OAAeJ,EAAK,gBAAiBo7B,IAClF,IAAKC,EAAc,MAAM,IAAItqI,MAAO,6BAA4BqqI,KAChE,MAAMziH,EAAW2P,EAAAA,EAAiB+yG,GAC5BzxG,EAAcw2E,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBm7B,GAClDj4G,EAAUvvC,OAAOpC,OAAOkxC,EAAAA,GAAW90C,MAAM6J,GAAMA,EAAEtG,OAAS04C,IAChE,IAAK1G,EAAS,MAAM,IAAInyB,MAAO,yBAAwB64B,KACvD,MAAM51C,EAAQosH,EAAAA,GAAAA,OAAeJ,EAAK,QAASq4B,GAC3C,OAAOiD,EAAAA,EAAAA,IAA0BjkI,EAAQ6rB,EAASvK,EAAU3kC,EAAM,IASxE,OAHAysH,EAAAA,EAAAA,GAAoB23B,EAAkB3S,KAAM,CAC1C8V,WAAY,CAAEn8D,QAAS,QAASwhC,YAAa,6DAExCw3B,CACT,6ICpaO,SAASzQ,IAEd,MAAM6T,EAAU,SAAUx7B,GACxB,IAAKrwH,EAAAA,GAAAA,KAAa,MAAMywH,EAAAA,GAAAA,oBAA4BJ,EAAK,wBAAyB,cAClF,OAAOrwH,EAAAA,GAAAA,IACT,EAEM8rJ,EAAgB,SAAUz7B,EAAuB9uH,GACrD,MAAMyjG,EAAO6mD,EAAQx7B,GACrB,IAAK,MAAMpwB,KAAU+E,EAAKnG,QAAS,GAAIoB,EAAO1+F,OAASA,EAAM,OAAO0+F,EACpE,MAAMwwB,EAAAA,GAAAA,oBAA4BJ,EAAM,yBAAwB9uH,KAClE,EAWA,MAAO,CACL20F,WAAam6B,GAAS07B,IACpB,MAAM9wI,GAAU+W,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAK07B,GAC9D,IAAK/rJ,EAAAA,GAAAA,kBAA2BiF,EAAAA,EAAAA,MAAAA,SAA6BgW,GAAU,OAAO,EAC9E,GAAIjb,EAAAA,GAAAA,KAAa,OAAO,EACxB,IAAKA,EAAAA,GAAAA,SAAAA,SAAyBib,GAAU,OAAO,EAE/C,MAAMupE,EAAYvpE,IAAY5a,EAAAA,YAAAA,SAAuB4a,IAAY5a,EAAAA,YAAAA,aAEjE,OADAL,EAAAA,GAAAA,UAAiBib,EAASupE,IACnB,CAAI,EAEb0+C,OAAQ,IAAM,MACLljI,EAAAA,GAAAA,KAETmjI,eAAiB9S,GAAQ,IACVw7B,EAAQx7B,GACTxxB,QAAQ9gG,KAAKkiG,GAAWA,EAAO1+F,OAE7C6hI,aAAe/S,GAAQ,CAAC27B,EAAavN,KACnC,MAAMz5C,EAAO6mD,EAAQx7B,GACf47B,EAAax7B,EAAAA,GAAAA,OAAeJ,EAAK,aAAc27B,GAC/CtN,EAAUjuB,EAAAA,GAAAA,OAAeJ,EAAK,UAAWouB,GACzCx+C,EAAS+E,EAAKnG,QAAQ7gG,MAAMhB,GAAMA,EAAEuE,OAAS0qJ,IACnD,IAAKA,EACH,MAAMx7B,EAAAA,GAAAA,oBAA4BJ,EAAM,yCAE1C,IAAKquB,EACH,MAAMjuB,EAAAA,GAAAA,oBAA4BJ,EAAM,sCAE1C,GAAIquB,IAAYuN,EACd,MAAMx7B,EAAAA,GAAAA,oBAA4BJ,EAAM,4DAA2DquB,KAErG,OAAKz+C,EAID+E,EAAKnG,QAAQ9gG,KAAKf,GAAMA,EAAEuE,OAAM1C,SAAS6/I,IAC3CjuB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,wEAAuEquB,OACxF,IAETz+C,EAAO1+F,KAAOm9I,EACdjuB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,mCAAkC47B,iBAA0BvN,OAC7E,IATLjuB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,8DAA6D47B,OAC9E,EAQE,EAEb5oB,mBAAqBhT,GAAQ,KAC3B,MAAMrrB,EAAO6mD,EAAQx7B,GACrB,MAAO,CACLp1G,QAAS+pF,EAAK5T,QACd5M,UAAWwgB,EAAKhG,cAChBG,cAAe6F,EAAK7F,cACpB9pB,MAAO2vB,EAAKxF,WACZT,QAASiG,EAAKjG,QACdE,gBAAiB+F,EAAK/F,gBACtBkD,sBAAuB6C,EAAK7C,wBAC5B/8F,UAAW4/F,EAAKvF,eAChBJ,qBAAsB2F,EAAK3F,qBAC3BC,wBAAyB0F,EAAK1F,wBAC9B2F,YAAaD,EAAKlG,OAClBotD,oBAAqBlnD,EAAK9F,eAC1Bu2C,cAAezwC,EAAKxC,mBACrB,EAEH8gC,wBAA0BjT,GAAQ,KAChCw7B,EAAQx7B,GACR,MAAM87B,EAA2C,CAAC,EAClD,IAAK,MAAMnnD,KAAQhhG,OAAOmY,KAAKhX,EAAAA,IAC7BgnJ,EAAInnD,GAAQhhG,OAAO4wE,OAAO,CAAC,EAAGzvE,EAAAA,GAAS6/F,IAGzC,OAAOmnD,CAAG,EAEZ5oB,qBAAuBlT,GAAS27B,IAC9B,MAAMC,EAAax7B,EAAAA,GAAAA,OAAeJ,EAAK,aAAc27B,GAC/ChnD,EAAO6mD,EAAQx7B,GACfpwB,EAAS6rD,EAAcz7B,EAAK47B,GAClC,MAAO,CACL1qJ,KAAM0+F,EAAO1+F,KACbwgG,KAAM9B,EAAO8B,KACba,cAAe3C,EAAO2C,cACtBt9F,KAAM26F,EAAO36F,KACbC,IAAK06F,EAAO16F,IACZC,IAAKy6F,EAAOz6F,IACZC,IAAKw6F,EAAOx6F,IACZC,IAAKu6F,EAAOv6F,IACZC,IAAKs6F,EAAOt6F,IAEZ49F,SAAUtD,EAAOsD,SACjBC,QAASvD,EAAOuD,QAChBC,QAASxD,EAAOwD,QAChBC,QAASzD,EAAOyD,QAChBC,QAAS1D,EAAO0D,QAChBC,QAAS3D,EAAO2D,QAEhBC,UAAW5D,EAAO4D,UAClBC,SAAU7D,EAAO6D,SACjBC,SAAU9D,EAAO8D,SACjBC,SAAU/D,EAAO+D,SACjBC,SAAUhE,EAAOgE,SACjBC,SAAUjE,EAAOiE,SAEjBkoD,cAAensD,EAAOyE,uBAAuBzE,EAAOkE,iBACpDkoD,aAAcpsD,EAAOyE,uBAAuBzE,EAAOmE,gBACnDkoD,aAAcrsD,EAAOyE,uBAAuBzE,EAAOoE,gBACnDkoD,aAActsD,EAAOyE,uBAAuBzE,EAAOqE,gBACnDkoD,aAAcvsD,EAAOyE,uBAAuBzE,EAAOsE,gBACnDkoD,aAAcxsD,EAAOyE,uBAAuBzE,EAAOuE,gBAEnDL,gBAAiBlE,EAAOkE,gBACxBC,eAAgBnE,EAAOmE,eACvBC,eAAgBpE,EAAOoE,eACvBC,eAAgBrE,EAAOqE,eACvBC,eAAgBtE,EAAOsE,eACvBC,eAAgBvE,EAAOuE,eAEvBj7C,SAAU02C,EAAO12C,SAASp/B,QAC1BzhB,cAAeu3F,EAAOv3F,cAAcyhB,QAEpCurH,YAAaz1C,EAAO8E,qBAAqBC,GACzC2wC,gBAAiB11C,EAAOG,yBAAyB4E,GACjDvuE,UAAWwpE,EAAOE,mBAAmB6E,GACtC,EAEH9C,iBAAmBmuB,GAAQ,IACZw7B,EAAQx7B,GACTnuB,mBAEdG,qBAAuBguB,GAAQ,IAChBw7B,EAAQx7B,GACThuB,uBAEdF,sBAAwBkuB,GAAQ,IACjBw7B,EAAQx7B,GACTluB,wBAEdG,cAAgB+tB,GAAS27B,IACvB,MAAMC,EAAax7B,EAAAA,GAAAA,OAAeJ,EAAK,aAAc27B,GAE/CU,EADOb,EAAQx7B,GACE/tB,cAAc2pD,GACrC,MAAmB,KAAfA,GACF57B,EAAIh2F,aAAa1L,IAAI,sBAAsB,IAAO,2DAC3C,GACE+9H,GACTr8B,EAAIh2F,aAAa1L,IAAI,sBAAsB,IAAO,uCAAsCs9H,OACjFS,IAEPr8B,EAAIh2F,aAAa1L,IACf,sBACA,IAAO,kCAAiCs9H,2BAEnCS,EACT,EAEFlpB,aAAenT,GAAQ,KACrB,MACMnkB,EADO2/C,EAAQx7B,GACFptB,kBAEnB,OADAiJ,EAAMyqC,QAAQ,cACPzqC,CAAK,EAEdw3B,cAAgBrT,GAAQ,CAAC27B,EAAaW,KACpC,MAAMV,EAAax7B,EAAAA,GAAAA,OAAeJ,EAAK,aAAc27B,GAC/C7oD,EAAWstB,EAAAA,GAAAA,OAAeJ,EAAK,WAAYs8B,GAC3C3nD,EAAO6mD,EAAQx7B,GACfpwB,EAAS6rD,EAAcz7B,EAAK47B,GAClC,IAAKjnD,EAAK/B,kBAAkBpkG,SAASskG,GAMnC,OALAktB,EAAIh2F,aAAa1L,IACf,sBACA,IACG,iCAAgCs9H,uBAAgC9oD,QAAe8oD,yBAE7EhsD,EAAO2E,aAAa,cAE7B,MAAMjyE,EAAUstE,EAAO2E,aAAazB,GAapC,OAZIxwE,EACF09F,EAAIh2F,aAAa1L,IACf,sBACA,IAAO,sCAAqCs9H,UAAmB9oD,YAGjEktB,EAAIh2F,aAAa1L,IACf,sBACA,IAAO,iCAAgCs9H,UAAmB9oD,aAAoB8oD,yBAI3Et5H,CAAO,EAEhB8wG,aAAepT,GAASs8B,IACtB,MAAMxpD,EAAWstB,EAAAA,GAAAA,OAAeJ,EAAK,WAAYs8B,GACjDd,EAAQx7B,GACR,MAAMtuB,EAtMU,SAAUsuB,EAAuB9uH,GACnD,MAAMwgG,EAAOmB,EAAAA,EAAgB3hG,GAC7B,IAAKwgG,EACH,MAAM0uB,EAAAA,GAAAA,oBAA4BJ,EAAM,kBAAiB9uH,MAG3D,OAAOwgG,CACT,CA+LiB6qD,CAAYv8B,EAAKltB,GACxBx0D,EAAO3qC,OAAO4wE,OAAO,CAAC,EAAGmtB,GAE/B,OADApzD,EAAKvpC,UAAYpB,OAAO4wE,OAAO,CAAC,EAAGmtB,EAAK38F,WACjCupC,CAAI,EAEbg1F,kBAAoBtT,GAAQ,KAC1Bw7B,EAAQx7B,GACDrsH,OAAOmY,KAAKgqF,EAAAA,IAErBy9B,iBAAmBvT,GAASw8B,IAC1B,MAAMC,EAAYr8B,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw8B,GAC7C7nD,EAAO6mD,EAAQx7B,GACf/sB,EAAM6C,EAAAA,EAAmB2mD,GAC/B,OAAY,OAARxpD,EAAqBnvF,IAClB6wF,EAAK3B,eAAeC,EAAI,EAEjCugC,iBAAmBxT,GAASw8B,IAC1B,MAAMC,EAAYr8B,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw8B,GACnDhB,EAAQx7B,GACR,MAAM/sB,EAAM6C,EAAAA,EAAmB2mD,GAC/B,OAAW,MAAPxpD,EAAoB,GACjBA,EAAInxD,SAAS,EAEtB2xF,kBAAoBzT,GAASw8B,IAC3B,MAAMC,EAAYr8B,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw8B,GACnDhB,EAAQx7B,GACR,MAAM08B,EAAY5mD,EAAAA,EAAmB2mD,GACrC,IAAKC,EACH,MAAMt8B,EAAAA,GAAAA,oBAA4BJ,EAAM,sBAAqBy8B,KAE/D,MAAME,EAA4BD,EAAUp9I,MAC5C,OAAO3L,OAAO4wE,OAAO,CAAC,EAAGo4E,EAAU,EAErCjpB,kBAAoB1T,GAAQ,CAAC27B,EAAaa,KACxC,MAAMZ,EAAax7B,EAAAA,GAAAA,OAAeJ,EAAK,aAAc27B,GAC/Cc,EAAYr8B,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw8B,GACnDhB,EAAQx7B,GACR,MAAMpwB,EAAS6rD,EAAcz7B,EAAK47B,GAC5Bc,EAAY5mD,EAAAA,EAAmB2mD,GACrC,IAAKC,EAAW,OAAO,EACvB,MAAMlzH,EAAMomE,EAAOqG,WAAWymD,GAa9B,OAZIlzH,EACFw2F,EAAIh2F,aAAa1L,IACf,0BACA,IAAO,cAAam+H,uBAA+Bb,OAGrD57B,EAAIh2F,aAAa1L,IACf,0BACA,IAAO,uBAAsBm+H,uBAA+Bb,OAIzDpyH,CAAG,EAEZgpE,aAAewtB,GAAS27B,IACtB,MAAMC,EAAax7B,EAAAA,GAAAA,OAAeJ,EAAK,aAAc27B,GAC/ChnD,EAAO6mD,EAAQx7B,GACfpwB,EAAS6rD,EAAcz7B,EAAK47B,GAClC,GAAKhsD,EAAO4F,YACZ,OAAOb,EAAKnC,aAAa5C,EAAQowB,EAAIh2F,aAAa,EAEpD2pG,mBAAqB3T,GAAS27B,IAC5B,MAAMC,EAAax7B,EAAAA,GAAAA,OAAeJ,EAAK,aAAc27B,GACrDH,EAAQx7B,GACR,MAAMpwB,EAAS6rD,EAAcz7B,EAAK47B,GAClC,GAAKhsD,EAAO4F,YACZ,MAAO,CACL9G,QAASkB,EAAO2C,iBACb3C,EAAO+F,sBACX,EAEHi+B,oBAAsB5T,GAAS48B,IAC7B,MAAMC,IAAWD,EACXjoD,EAAO6mD,EAAQx7B,GACjB68B,GACFloD,EAAK1F,yBAA0B,EAC/B+wB,EAAIh2F,aAAa1L,IAAI,4BAA4B,IAAM,yCAEvDq2E,EAAK1F,yBAA0B,EAC/B+wB,EAAIh2F,aAAa1L,IAAI,4BAA4B,IAAM,0CACzD,EAEFu1G,oBAAsB7T,GAAS88B,IAC7B,MAAM3rD,EAAYivB,EAAAA,GAAAA,OAAeJ,EAAK,YAAa88B,GAC7CnoD,EAAO6mD,EAAQx7B,GACrB,GAA2B,MAAvBlrH,EAAAA,GAASq8F,GACX,MAAMivB,EAAAA,GAAAA,oBAA4BJ,EAAM,iBAAgB7uB,KAG1D,MAAMkL,EAAcvnG,EAAAA,GAAS6/F,EAAK5T,SAAS/b,MAG3C,OAAOq3B,GAFYvnG,EAAAA,GAASq8F,GAAWnsB,MAEJq3B,EAAY,EAEjDy3B,aAAe9T,GAAQ,KACrB,MAAMrrB,EAAO6mD,EAAQx7B,GACrB,OAA2C,IAApC/rH,KAAKguB,MAAM0yE,EAAK54E,aAAe,EAAS,EAGrD,8KCvTO,SAASssH,IACd,MAAM0U,EAA0B/8B,IAC9B,IAAKrwH,EAAAA,GAAAA,oBACH,MAAMywH,EAAAA,GAAAA,oBACJJ,EACA,mJAEJ,EAGIg9B,EAA0Br5I,IAA8Bs5I,EAAAA,EAAAA,MAA2BzuJ,SAASmV,GAElG,MAAO,CACL24H,0BAA4Btc,GAASk9B,IACnC,MAAMv5I,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAEnE,GADAH,EAAuB/8B,IAClBg9B,EAAuBr5I,GAC1B,MAAMy8G,EAAAA,GAAAA,oBAA4BJ,EAAM,gBAAer8G,KAGzD,OADqB,IAAIw5I,EAAAA,EAAsB16I,EAAAA,EAAckB,IACzCsG,IAAI,EAG1BsyH,yBAA2Bvc,GAASk9B,IAClC,MAAMv5I,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAEnE,GADAH,EAAuB/8B,IAClBg9B,EAAuBr5I,GAC1B,MAAMy8G,EAAAA,GAAAA,oBAA4BJ,EAAM,gBAAer8G,KAEzD,MAAMy5I,EAAe,IAAID,EAAAA,EAAsB16I,EAAAA,EAAckB,IAC7D,OAAO05I,EAAAA,EAAAA,IAA+BD,EAAa,EAGrD5gB,0BAA4Bxc,GAAQ,KAClC+8B,EAAuB/8B,IACDi9B,EAAAA,EAAAA,OAIxBxgB,kBACGzc,GACD,SAACk9B,GAA4B,IAAlBI,IAAS,UAAH,+CACf,MAAM35I,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAC7DrrH,IAAUyrH,EAEhB,GADAP,EAAuB/8B,GACnBrwH,EAAAA,GAAAA,OAAgB0E,EAAAA,SAAAA,SAClB,MAAM+rH,EAAAA,GAAAA,oBAA4BJ,EAAK,+DAEzC,IAAKg9B,EAAuBr5I,GAE1B,OADAy8G,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,gBAAer8G,OAChC,EAGT,MAAM45I,EAAc5tJ,EAAAA,GAAAA,MAEd6tJ,EAAe,IAAIL,EAAAA,EAAsB16I,EAAAA,EAAckB,IAC7D,OAAIhU,EAAAA,GAAAA,MAAe6tJ,EAAavzI,MAC9Bm2G,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,wCAAuCr8G,OACxD,IAGJm+E,EAAAA,EAAAA,IAAuB07D,EAAajtE,eAKzC5gF,EAAAA,GAAAA,UACE,IAAI8tJ,EAAAA,EAAa,CACf7vE,aAAa,EACb2C,aAAc5sE,KAIdkuB,GACFliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACL4lJ,IACT5tJ,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAGhByoH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,+BAA8Br8G,QAC/C,IApBLy8G,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yCAAwCr8G,OACzD,EAoBX,EAEN,4IC5EO,SAAS2kI,IAEd,MAAMoV,EAAiB,SAAU19B,EAAuBxvH,GACtD,GAAIA,EAAI,GAAKA,GAAKuuF,EAAAA,GAAAA,aAAAA,OAChB,MAAMqhC,EAAAA,GAAAA,oBAA4BJ,EAAK,sDAAwDxvH,GAGjG,IAAI0C,EAAAA,EAAAA,MAAqB,CACvB,MAAMyqJ,EAAK5+D,EAAAA,GAAAA,aAAoBvuF,GAC/B,GAAkB,iBAAPmtJ,EAAiB,MAAM,IAAI5sI,MAAM,iCAC5C,MAAM4uF,GAAUpwG,EAAAA,EAAAA,IAAUouJ,GAC1B,KAAMh+C,aAAmBzoG,EAAAA,GAAgB,MAAM,IAAI6Z,MAAM,kDACzD,GAAe,MAAX4uF,EACF,MAAMygB,EAAAA,GAAAA,oBACJJ,EACC,0CAAyCxvH,wDAI9C,OAAOmvG,CACT,CAAO,CACL,MAAMzqF,EAAO6pE,EAAAA,GAAAA,aAAoBvuF,GACjC,KAAM0kB,aAAgB7hB,EAAAA,GAAc,MAAM,IAAI0d,MAAM,8BACpD,OAAOmE,CACT,CACF,EAEA,MAAO,CACL4lH,SAAU,IAAM,IACP/7C,EAAAA,GAAAA,aAAAA,OAETy8C,YAAa,IAAM,KACbtoI,EAAAA,EAAAA,MACK6D,EAAAA,GAAAA,WAEF+M,IAETi3H,aAAc,IAAM,KACXz9B,EAAAA,EAAAA,MAET09B,oBAAqB,IAAM,KACrB9nI,EAAAA,EAAAA,OACKyqG,EAAAA,EAAAA,OAEAE,EAAAA,EAAAA,MAGXo9B,aAAejb,GAAS49B,IACtB,MAAMptJ,EAAI4vH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK49B,GAC7B1oI,EAAOwoI,EAAe19B,EAAKxvH,GAC3BqtJ,GAAc3qJ,EAAAA,EAAAA,MACds2B,EAAiB,CACrBt4B,KAAMgkB,aAAgBhe,EAAAA,EAAgBge,EAAK4rB,SAAW5rB,EAAKhkB,KAC3DE,MAAO8jB,EAAK9jB,MACZkC,IAAK4hB,aAAgBhe,EAAAA,EAAgBge,EAAK5iB,OAAS4iB,EAAK5hB,IACxDE,MAAO0hB,EAAK1hB,MACZw5I,WAAY93H,aAAgBhe,EAAAA,EAAgBge,EAAK+rF,SAAW/rF,EAAK0rF,uBACjEk9C,WAAY5oI,EAAKwrF,kBACjB6E,gBAAiBrwF,aAAgBhe,EAAAA,EAAgBge,EAAKgsF,qBAAuBhsF,EAAKyrF,qBASpF,OANIk9C,GAAe3oI,aAAgBhe,EAAAA,IACjCsyB,EAAIryB,MAAQ+d,EAAK/d,MACjBqyB,EAAI42E,aAAelrF,EAAKkrF,aACxB52E,EAAI+3E,QAAUrsF,EAAKqsF,SAGd/3E,CAAG,EAEZw1E,aACGghB,GACD,SAAC49B,GAAe,IAAX94B,EAAK,UAAH,6CAAG,EACR,MAAMt0H,EAAI4vH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK49B,GAC7BpyI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B5vG,EAAOwoI,EAAe19B,EAAKxvH,GACjC,OAAOouG,EAAAA,EAAAA,IAAqB1pF,EAAM1J,EACpC,EACF0zF,WACG8gB,GACD,SAAC49B,GAAe,IAAX94B,EAAK,UAAH,6CAAG,EACR,MAAMt0H,EAAI4vH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK49B,GAC7BpyI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B5vG,EAAOwoI,EAAe19B,EAAKxvH,GACjC,OAAOyuG,EAAAA,EAAAA,IAAmB/pF,EAAM1J,EAClC,EACF4zF,YACG4gB,GACD,SAAC49B,GAAe,IAAX94B,EAAK,UAAH,6CAAG,EACR,MAAMt0H,EAAI4vH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK49B,GAC7BpyI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B5vG,EAAOwoI,EAAe19B,EAAKxvH,GACjC,OAAO2uG,EAAAA,EAAAA,IAAoBjqF,EAAM1J,EACnC,EACF8zF,aACG0gB,GACD,SAAC49B,GAAe,IAAX94B,EAAK,UAAH,6CAAG,EACR,MAAMt0H,EAAI4vH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK49B,GAC7BpyI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GACnC,KAAK5xH,EAAAA,EAAAA,MACH,OAAO,EAET,MAAMgiB,EAAOwoI,EAAe19B,EAAKxvH,GACjC,KAAM0kB,aAAgBhe,EAAAA,GAEpB,OADAkpH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,2CAChB,EAET,MAAMx2F,GAAM61E,EAAAA,EAAAA,IAAqBnqF,EAAM1J,GAIvC,OAHIge,IACFo0E,EAAAA,EAAAA,MAEKp0E,CACT,EACF0xG,oBACGlb,GACD,SAAC49B,GAAe,IAAX94B,EAAK,UAAH,6CAAG,EACR,MAAMt0H,EAAI4vH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK49B,GAC7BpyI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B5vG,EAAOwoI,EAAe19B,EAAKxvH,GACjC,OAAO0kB,EAAKipF,0BAA0B3yF,EAAGuzE,EAAAA,GAAAA,MAAAA,wBAC3C,EACFo8C,kBACGnb,GACD,SAAC49B,GAAe,IAAX94B,EAAK,UAAH,6CAAG,EACR,MAAMt0H,EAAI4vH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK49B,GAC7BpyI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B5vG,EAAOwoI,EAAe19B,EAAKxvH,GACjC,OAAO0kB,EAAKopF,wBAAwB9yF,EAAGuzE,EAAAA,GAAAA,MAAAA,sBACzC,EACFq8C,mBACGpb,GACD,SAAC49B,GAAe,IAAX94B,EAAK,UAAH,6CAAG,EACR,MAAMt0H,EAAI4vH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK49B,GAC7BpyI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GAC7B5vG,EAAOwoI,EAAe19B,EAAKxvH,GACjC,OAAO0kB,EAAKupF,yBAAyBjzF,EAAGuzE,EAAAA,GAAAA,MAAAA,uBAC1C,EACFs8C,oBACGrb,GACD,SAAC49B,GAAe,IAAX94B,EAAK,UAAH,6CAAG,EACR,MAAMt0H,EAAI4vH,EAAAA,GAAAA,OAAeJ,EAAK,IAAK49B,GAC7BpyI,EAAI40G,EAAAA,GAAAA,OAAeJ,EAAK,IAAK8E,GACnC,KAAK5xH,EAAAA,EAAAA,MACH,OAAO4Q,IAET,MAAMoR,EAAOwoI,EAAe19B,EAAKxvH,GACjC,OAAM0kB,aAAgBhe,EAAAA,EAIfge,EAAKypF,0BAA0BnzF,IAHpC40G,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,2CACf,EAGZ,EACF7d,UAAW,IAAM,KACVjvG,EAAAA,EAAAA,MAGE6rF,EAAAA,GAAAA,YAAAA,OAFE,EAIXqhB,aAAc,IAAM,KACbltG,EAAAA,EAAAA,MAGE6rF,EAAAA,GAAAA,YAAAA,SAFE,EAIXu8C,SACGtb,GACD,SAACi6B,GAAyB,IAAfvG,EAAS,UAAH,6CAAG,EAClB,MAAMn7C,EAAU6nB,EAAAA,GAAAA,OAAeJ,EAAK,UAAWi6B,GACzC3jI,EAAQ8pG,EAAAA,GAAAA,OAAeJ,EAAK,QAAS0zB,GAC3C,OAAKxgJ,EAAAA,EAAAA,MAIE6rF,EAAAA,GAAAA,YAAAA,eAAkCwZ,EAASjiF,GAHzCxS,GAIX,EACFy3H,YACGvb,GACD,SAACi6B,GAA0C,IAAhC8D,EAAa,UAAH,6CAAG,GAAIrK,EAAS,UAAH,6CAAG,EACnC,MAAMn7C,EAAU6nB,EAAAA,GAAAA,OAAeJ,EAAK,UAAWi6B,GACzC35C,EAAY8f,EAAAA,GAAAA,OAAeJ,EAAK,YAAa+9B,GAC7CznI,EAAQ8pG,EAAAA,GAAAA,OAAeJ,EAAK,QAAS0zB,GAC3C,SAAKxgJ,EAAAA,EAAAA,QAGEmtG,EAAAA,EAAAA,IAAoB9H,EAAS+H,EAAWhqF,EACjD,EACFmlH,gBAAiB,IAAM,KAChBvoI,EAAAA,EAAAA,MAGES,OAAOpC,OAAOuuG,EAAAA,GAAcpyG,KAAK8uD,GAAyBA,EAAQtrD,OAFhE,GAIXwqI,oBAAsB1b,GAASi6B,IAC7B,MAAM1hD,EAAU6nB,EAAAA,GAAAA,OAAeJ,EAAK,UAAWi6B,GACzC7oJ,EAAQ2tF,EAAAA,GAAAA,YAAAA,SAA4BwZ,GAC1C,QAAcp4F,IAAV/O,EACF,MAAMgvH,EAAAA,GAAAA,oBAA4BJ,EAAM,yBAAwBznB,KAElE,OAAOnnG,CAAK,EAEdwwG,aAAc,IAAM,KACb1uG,EAAAA,EAAAA,MAGE6rF,EAAAA,GAAAA,YAAAA,eAFE,EAIX8iB,gBAAiB,IAAM,KAChB3uG,EAAAA,EAAAA,MAGE6rF,EAAAA,GAAAA,YAAAA,kBAFE,EAKf,6IC5NO,SAASkpD,IACd,MAAM+V,EAAgCrqJ,OAAOpC,OAAO6lH,EAAAA,GAAWpqH,QAC5D6E,GAAuBA,EAASm2G,mBAsBnC,MAAO,CACLguB,qBAAsB,IAAM,KACnBioB,EAAAA,EAAAA,GACLD,EAA8BtwJ,KAAKwwJ,KAC5BA,EAAEzlI,MACA,CACLA,KAAMylI,EAAEzlI,KACRvnB,KAAMgtJ,EAAEhtJ,SAKhB+kI,gBAAkBjW,GAAS26B,IACzB,MAAME,GAAel5H,EAAAA,EAAAA,GAAc,gBAAgB6uH,YAAYxwB,EAAK26B,GACpE,MAjC8B,EAAC36B,EAAuB66B,KACxD,MAAMhpJ,EAAWulH,EAAAA,EAAUyjC,GAC3B,QAAiB16I,IAAbtO,EAAwB,MAAMuuH,EAAAA,GAAAA,oBAA4BJ,EAAM,aAAYnuH,uBAChF,QAAkCsO,IAA9BtO,EAASm2G,iBACX,MAAMoY,EAAAA,GAAAA,oBAA4BJ,EAAM,aAAYnuH,sCACtD,MAAM21G,EAAwB31G,EAASm2G,iBAAiBR,sBAClD96F,GAAa66F,EAAAA,EAAAA,GAAoBC,GACjCvoE,GAASwoE,EAAAA,EAAAA,GAAgBD,GACzB37F,EAAWha,EAASm2G,iBAAiByH,kBAC3C,MAAO,CACL59G,SAAUsJ,KAAKC,MAAMD,KAAK4mH,UAAUlwH,IACpCotC,OAAQ,CACNk/G,UAAUt2C,EAAAA,EAAAA,IAAmC5oE,EAAQpzB,EAAU27F,GAC/D42C,UAAUz2C,EAAAA,EAAAA,IAAmC1oE,EAAQpzB,EAAU27F,GAC/D62C,QAAQv2C,EAAAA,EAAAA,IAA+Bl0G,EAAAA,EAAS5D,EAAAA,YAAAA,kBAA+Bw3G,IAEjF96F,WAAYA,EACb,EAgBQ4xI,CAA0Bt+B,EAAK66B,EAAa,EAGzD,sjBCEO,SAASnT,IACd,MAAM6W,EAAgB,SAAUC,GAE9B,IAAKA,EAAU,OACf,MAAMpiE,EAAOzsF,EAAAA,GAAAA,kBACP8sF,EAASL,EAAK9qF,QAAQ6L,IAAIqhJ,GAChC,IAAK/hE,EAAQ,OACb,MAAMzpF,EAAWypF,EAAOQ,YAAYb,EAAK9qF,SACzC,IAAK0B,EACH,OAAO0I,EAAAA,EAAAA,MAAgB,uBAAsB8iJ,oDAG/C,GAAIxrJ,EADiBopF,EAAK9pF,OAAS8pF,EAAKmlB,QACV,KAC5B,OAAO7lG,EAAAA,EAAAA,MAAgB,uBAAsB8iJ,+CAG/C,MAAM5X,EAAmB,IAAI6X,EAAAA,EAAchiE,EAAQzpF,EAAU,KAC7D0rJ,EAAAA,EAAAA,IAAkB9X,EAAkBxqD,EACtC,EAEMuiE,EAA4C,CAChD9sB,sBAAwB7R,GAAS4+B,IAC/Bx+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAM6+B,IAAcD,EACdp1H,EAAgB,GACtB,IAAK,IAAIh5B,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,cAAAA,SAA+Ba,EACjDg5B,EAAI9rB,KAAK/N,EAAAA,GAAAA,cAAqBa,GAAGU,MAEnC,GAAI2tJ,EACF,IAAK,IAAIruJ,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,oBAAAA,SAAqCa,EACvDg5B,EAAI9rB,KAAK/N,EAAAA,GAAAA,oBAA2Ba,GAAGU,MAG3C,OAAOs4B,CAAG,EAEZsoG,oBAAqB,IAAM,IAClB,IAAIniI,EAAAA,GAAAA,aAAoBjC,KAAI,QAAE8d,EAAGD,GAAI,QAAM,CAAEC,IAAGD,MAAK,IAE9DwmH,wBAA0B/R,GAASk9B,IACjC98B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMr8G,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAEnE,OADYz6I,EAAAA,EAAckB,GACfnE,SAASsa,OAAO,EAE7Bk4G,4BAA8BhS,GAAS8+B,IACrC1+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMj/B,GAAUp/D,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAK8+B,GACxDl0I,EAAUhX,EAAAA,EAASmtF,GACzB,OAAO6B,EAAAA,EAAAA,IAAgCh4E,EAAQ,EAEjDqnH,sBAAwBjS,GAASk9B,IAC/B98B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMr8G,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAEnE,OADYz6I,EAAAA,EAAckB,GACftE,QAAQya,OAAO,EAE5Bq4G,yBAA2BnS,GAASk9B,IAClC98B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMr8G,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAEnE,OADYz6I,EAAAA,EAAckB,GACfzE,SAAW/K,EAAAA,GAAAA,qBAAsC,EAE9D+9H,qBAAuBlS,GAASk9B,IAC9B98B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMr8G,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAC7Dj7I,EAAMQ,EAAAA,EAAckB,GAC1B,OAAOH,EAAAA,EAAAA,IAAWvB,GAAKlC,SAAS,EAElCqyH,sBAAwBpS,GAASk9B,IAC/B98B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMr8G,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAC7Dj7I,EAAMQ,EAAAA,EAAckB,GAC1B,OAAOH,EAAAA,EAAAA,IAAWvB,GAAKpC,OAAO,EAEhCwyH,qBAAuBrS,GAASk9B,IAC9B98B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMr8G,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAC7Dj7I,EAAMQ,EAAAA,EAAckB,GAC1B,OAAOhQ,OAAO4wE,OAAO,CAAC,EAAGtiE,EAAI3C,MAAM,EAErC8K,qBAAuB41G,GAAQ,CAAC8+B,EAAU5B,KACxC98B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMj/B,GAAUp/D,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAK8+B,GACxDn7I,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAC7D/8G,EAAMvsC,EAAAA,EAASmtF,GACf9+E,EAAMQ,EAAAA,EAAckB,GAEpBugF,GAActB,EAAAA,EAAAA,IAAgCziD,GAEpD,IAAKxwC,EAAAA,GAAAA,SAAAA,SAAyBoxF,GAE5B,OADAq/B,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,0CAAyCj/B,oCAC1D,EAGT,IAAKmD,EAAY11F,SAASmV,GAExB,OADAy8G,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWj/B,yBAA+Bp9E,sBAC3D,EAIT,GADoB1B,EAAI/Q,OAASC,EAAAA,iBAAAA,kBACf,CAChB,IAAK,IAAI0oC,EAAI,EAAGA,EAAIlqC,EAAAA,GAAAA,oBAAAA,SAAqCkqC,EACvD,GAAIlqC,EAAAA,GAAAA,oBAA2BkqC,GAAG3oC,OAAS+Q,EAAI/Q,KAE7C,OADAkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yBAAwBr8G,sBACzC,EAGX,IAAK,IAAIk2B,EAAI,EAAGA,EAAIlqC,EAAAA,GAAAA,cAAAA,SAA+BkqC,EACjD,GAAIlqC,EAAAA,GAAAA,cAAqBkqC,GAAG3oC,OAAS+Q,EAAI/Q,KAEvC,OADAkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yBAAwBr8G,sBACzC,CAGb,CAEA,GAAIw8B,EAAIrsC,kBAAmB0P,EAAAA,EAAAA,IAAWvB,GAAKpC,QAEzC,OADAugH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,2CAA0C7/E,EAAIjvC,YAC/D,EAGT,MAAMs4B,GAAMpf,EAAAA,EAAAA,IAAqBnI,EAAKk+B,GAAK,GAE3C,OADAigF,EAAAA,GAAAA,IAAYJ,GAAK,IAAMx2F,MACnBA,EAAI3J,WAAW,mBACjBlwB,EAAAA,GAAAA,oBAAqE,GAA1C4C,EAAAA,EAAAA,gCACpB,EAGT,EAEFy4F,UAAYg1B,GAAS++B,IACnB3+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMw+B,IAAWO,IACbp1D,EAAAA,EAAAA,IAAsBy2B,EAAAA,GAAAA,OAAeJ,EAAK,WAAY++B,GAAY/+B,EAAIh2F,aAAa94B,MAEvF,GAAiB,OAAbstJ,EAAmB,MAAMp+B,EAAAA,GAAAA,oBAA4BJ,EAAM,gCAA+B++B,KAE9F3+B,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,8DACvBj9G,EAAAA,EAAAA,KAAqB,GACjBy7I,GAAUtjH,YAAW,IAAMqjH,EAAcC,IAAW,IAAI,EAE9Dz7I,qBAAuBi9G,GAAS++B,IAC9B3+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMw+B,IAAWO,IACbp1D,EAAAA,EAAAA,IAAsBy2B,EAAAA,GAAAA,OAAeJ,EAAK,WAAY++B,GAAY/+B,EAAIh2F,aAAa94B,MAEvF,GAAiB,OAAbstJ,EAAmB,MAAMp+B,EAAAA,GAAAA,oBAA4BJ,EAAM,gCAA+B++B,KAE9F,GAA0C,IAAtCpvJ,EAAAA,GAAAA,oBAAAA,OAEF,OADAywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wDAChB,EAETrwH,EAAAA,GAAAA,oBAAqE,GAA1C4C,EAAAA,EAAAA,+BAC3B6tH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wEACvBj9G,EAAAA,EAAAA,MACIy7I,GAAUtjH,YAAW,IAAMqjH,EAAcC,IAAW,IAAI,EAG9D7uB,aAAe3P,GAAS26B,IACtBv6B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAM66B,EAAez6B,EAAAA,GAAAA,OAAeJ,EAAK,eAAgB26B,GACnD9oJ,EAAW8B,OAAOpC,OAAO6lH,EAAAA,GAAWzpH,MAAMuwJ,GAAMA,EAAEhtJ,OAAS2pJ,IACjE,OAAKhpJ,EAIDA,EAAS4mB,MAAQ9oB,EAAAA,GAAAA,OAAgBkC,EAAS4mB,MAC5C2nG,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,qBAAoB66B,QAAmBlrJ,EAAAA,GAAAA,UACxD,IAELkC,EAASX,OAAS8lH,EAAAA,aAAAA,aACpBt/G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,QACL9F,EAASX,OAAS8lH,EAAAA,aAAAA,mBAC3Bt/G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,aAEdD,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,SAAe,CAAE9F,aAEjClC,EAAAA,GAAAA,oBAA2B4C,EAAAA,EAAAA,8BAA0C,MAC9D,IAfL6tH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,qBAAoB66B,OACrC,EAcE,EAEbrrB,iBACGxP,GACD,SAACg/B,EAAiBC,GAA8B,IAAlB3B,IAAS,UAAH,+CAClCl9B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMk/B,EAAiB9+B,EAAAA,GAAAA,OAAeJ,EAAK,iBAAkBg/B,GACvDhkC,GAAY4/B,EAAAA,EAAAA,GAAer9B,EAAAA,oBAAqB6C,EAAAA,GAAAA,OAAeJ,EAAK,YAAai/B,IACvF,IAAKjkC,EAEH,OADAoF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,uBAAsBi/B,QACvC,EAET,MAAMptH,IAAUyrH,EACVC,EAAc5tJ,EAAAA,GAAAA,MAEpB,OAAQuvJ,EAAev/H,eACrB,KAAKq3F,EAAAA,aAAAA,sBAAAA,cACH,GAAIrnH,EAAAA,GAAAA,MAAe0E,EAAAA,SAAAA,MAKjB,OAJA+rH,EAAAA,GAAAA,IACEJ,GACA,IAAO,mEAAkE3rH,EAAAA,SAAAA,aAEpE,EAET1E,EAAAA,GAAAA,aAAoBqnH,EAAAA,aAAAA,uBACpB,MACF,KAAKA,EAAAA,aAAAA,0BAAAA,cACH,GAAIrnH,EAAAA,GAAAA,MAAe0E,EAAAA,SAAAA,SAKjB,OAJA+rH,EAAAA,GAAAA,IACEJ,GACA,IAAO,oEAAmE3rH,EAAAA,SAAAA,gBAErE,EAET1E,EAAAA,GAAAA,SAAkBqnH,EAAAA,aAAAA,0BAClB,MACF,KAAKA,EAAAA,aAAAA,gCAAAA,cACH,GAAIrnH,EAAAA,GAAAA,MAAe0E,EAAAA,SAAAA,SAKjB,OAJA+rH,EAAAA,GAAAA,IACEJ,GACA,IAAO,4EAA2E3rH,EAAAA,SAAAA,gBAE7E,EAET1E,EAAAA,GAAAA,SAAkBqnH,EAAAA,aAAAA,gCAClB,MACF,QAEE,OADAoJ,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,6BAA4Bk/B,SAC7C,EAkBX,OAfAvvJ,EAAAA,GAAAA,UACE,IAAIorH,EAAAA,GAAU,CACZC,YACAnpH,SAAUlC,EAAAA,GAAAA,SACVi+E,aAAa,KAGb/7C,GACFliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACL4lJ,IACT5tJ,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAEhByoH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,WAAUhF,QAAgBkkC,OAC3C,CACT,EAEFzvB,WACGzP,GACD,SAACm/B,EAAUC,GAAyB,IAAlB9B,IAAS,UAAH,+CACtBl9B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMq/B,EAAUj/B,EAAAA,GAAAA,OAAeJ,EAAK,UAAWm/B,GACzCnkC,GAAY4/B,EAAAA,EAAAA,GAAe1/B,EAAAA,QAASkF,EAAAA,GAAAA,OAAeJ,EAAK,OAAQo/B,IACtE,IAAKpkC,EAEH,OADAoF,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,iBAAgBo/B,QACjC,EAET,MAAMvtH,IAAUyrH,EACVC,EAAc5tJ,EAAAA,GAAAA,MAEpB,OAAQ0vJ,EAAQ1/H,eACd,KAAKq3F,EAAAA,aAAAA,qBAAAA,cACH,GAAIrnH,EAAAA,GAAAA,MAAe0E,EAAAA,SAAAA,MAMjB,OALA+rH,EAAAA,GAAAA,IACEJ,GACA,IACG,0BAAyBhJ,EAAAA,aAAAA,iDAA8D3iH,EAAAA,SAAAA,aAErF,EAET1E,EAAAA,GAAAA,SAAkBqnH,EAAAA,aAAAA,qBAClB,MACF,KAAKA,EAAAA,aAAAA,oBAAAA,cACH,GAAIrnH,EAAAA,GAAAA,MAAe0E,EAAAA,SAAAA,MAMjB,OALA+rH,EAAAA,GAAAA,IACEJ,GACA,IACG,0BAAyBhJ,EAAAA,aAAAA,gDAA6D3iH,EAAAA,SAAAA,aAEpF,EAET1E,EAAAA,GAAAA,SAAkBqnH,EAAAA,aAAAA,oBAClB,MACF,KAAKA,EAAAA,aAAAA,gBAAAA,cACH,GAAIrnH,EAAAA,GAAAA,MAAe0E,EAAAA,SAAAA,SAMjB,OALA+rH,EAAAA,GAAAA,IACEJ,GACA,IACG,0BAAyBhJ,EAAAA,aAAAA,4CAAyD3iH,EAAAA,SAAAA,gBAEhF,EAET1E,EAAAA,GAAAA,SAAkBqnH,EAAAA,aAAAA,gBAClB,MACF,KAAKA,EAAAA,aAAAA,sBAAAA,cACH,GAAIrnH,EAAAA,GAAAA,MAAe0E,EAAAA,SAAAA,SAMjB,OALA+rH,EAAAA,GAAAA,IACEJ,GACA,IACG,0BAAyBhJ,EAAAA,aAAAA,kDAA+D3iH,EAAAA,SAAAA,gBAEtF,EAET1E,EAAAA,GAAAA,SAAkBqnH,EAAAA,aAAAA,sBAClB,MACF,KAAKA,EAAAA,aAAAA,4BAAAA,cACH,GAAIrnH,EAAAA,GAAAA,MAAe0E,EAAAA,SAAAA,SAMjB,OALA+rH,EAAAA,GAAAA,IACEJ,GACA,IACG,0BAAyBhJ,EAAAA,aAAAA,wDAAqE3iH,EAAAA,SAAAA,gBAE5F,EAET1E,EAAAA,GAAAA,SAAkBqnH,EAAAA,aAAAA,4BAClB,MACF,QAEE,OADAoJ,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,qBAAoBq/B,4BACrC,EAYX,OATA1vJ,EAAAA,GAAAA,UAAiB,IAAIorH,EAAAA,GAAU,CAAEC,YAAWnpH,SAAUlC,EAAAA,GAAAA,SAAiBi+E,aAAa,KAChF/7C,GACFliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACL4lJ,IACT5tJ,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAEhByoH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,oBAAmBhF,QAAgBqkC,OACpD,CACT,EAEF3vB,aAAe1P,GAAS4zB,IACtBxzB,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMj4F,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GAE5D,OAAQ7rH,GACN,KAAK1zB,EAAAA,SAAAA,MACL,KAAKA,EAAAA,SAAAA,UACL,KAAKA,EAAAA,SAAAA,SACL,KAAKA,EAAAA,SAAAA,SACL,KAAKA,EAAAA,SAAAA,OACL,KAAKA,EAAAA,SAAAA,SACH,OAAI1E,EAAAA,GAAAA,MAAe4C,EAAAA,EAAAA,YACjB6tH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,iCAChB,IAETrwH,EAAAA,GAAAA,UAAiB4C,EAAAA,EAAAA,WAAsB,SACvC5C,EAAAA,GAAAA,KAAco4B,EACdq4F,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,eAAcj4F,MACtCp4B,EAAAA,GAAAA,oBAA2B4C,EAAAA,EAAAA,8BAA0C,MAC9D,GACT,QACE,MAAM6tH,EAAAA,GAAAA,oBAA4BJ,EAAM,uBAAsBj4F,OAAc,EAIlF6nG,YAAc5P,GAAQ,KAGpB,GAFAI,EAAAA,GAAAA,uBAA+BJ,GAE3BrwH,EAAAA,GAAAA,eAEF,OADAywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,oCAChB,EAGT,GAAIrwH,EAAAA,GAAAA,MAAe4C,EAAAA,EAAAA,cAEjB,OADA6tH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,iDAChB,EAETrwH,EAAAA,GAAAA,UAAiB4C,EAAAA,EAAAA,cAAyB,SAE1C,MAAMqqH,GAAUrtH,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,SAC1B,IAAKotH,EAAS,MAAMwD,EAAAA,GAAAA,oBAA4BJ,EAAK,iDAMrD,OAJArwH,EAAAA,GAAAA,kBAAyBgxC,iBAAiBjjC,KAAKk/G,EAAQ97E,UACvD87E,EAAQj8E,iBAAiBjjC,KAAK/N,EAAAA,GAAAA,kBAAyBmxC,UACvDnxC,EAAAA,GAAAA,oBAA2B4C,EAAAA,EAAAA,8BAA0C,KACrE6tH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,sCAChB,CAAI,EAEb6P,gBAAkB7P,GAASs/B,IACzBl/B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMytB,EAAcrtB,EAAAA,GAAAA,OAAeJ,EAAK,cAAes/B,GAAc3/H,cAErE,IAAKhwB,EAAAA,GAAAA,eAEH,OADAywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,qCAChB,EAGT,MAAMhxH,EAAO2E,OAAOpC,OAAOg9E,EAAAA,GAAc5gF,MAAM6C,GAAMA,EAAEg+E,QAAQ7uD,gBAAkB8tH,IACjF,OAAY,MAARz+I,GACFoxH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,0BAAyBytB,QAC1C,GAGL99I,EAAAA,GAAAA,MAAeX,EAAKgjD,OACtBouE,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,iCAAgChxH,EAAKw/E,mBAAkB/jE,EAAAA,EAAAA,IAAYzb,EAAKgjD,YACzF,GAGLriD,EAAAA,GAAAA,WAAkBX,EAAKw/E,UACzB4xC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yBAAwBhxH,EAAKw/E,sBAC9C,IAGT7+E,EAAAA,GAAAA,kBAAyBg/E,YAAY3/E,EAAKw/E,UAEtCI,EAAAA,EAAAA,GAAoBj/E,EAAAA,GAAAA,cAAuBA,EAAAA,GAAAA,YAAAA,cAAmCX,EAAKw/E,SACrF7+E,EAAAA,GAAAA,YAAkB,GAGpBA,EAAAA,GAAAA,UAAiBX,EAAKgjD,MAAO,SAC7BouE,EAAAA,GAAAA,IACEJ,GACA,IAAO,2BAA0BhxH,EAAKw/E,0EAExC7+E,EAAAA,GAAAA,oBAA2B4C,EAAAA,EAAAA,8BAA0C,MAC9D,EAAI,EAEbu9H,iBAAmB9P,GAAQ,KACzBI,EAAAA,GAAAA,uBAA+BJ,GACxBrwH,EAAAA,GAAAA,mBAA0BmxC,UAEnCmvF,QAAUjQ,GAASuD,IACjBnD,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMl/E,EAAWs/E,EAAAA,GAAAA,OAAeJ,EAAK,WAAYuD,GACjD,IAAKziF,EACH,MAAMs/E,EAAAA,GAAAA,oBAA4BJ,EAAM,sBAAqBl/E,MAG/D,MAAMhR,GAASvgC,EAAAA,EAAAA,IAAUuxC,GACzB,GAAc,MAAVhR,EACF,MAAMswF,EAAAA,GAAAA,oBAA4BJ,EAAM,sBAAqBl/E,MAI/D,GAAiB,SAAbA,EAKF,OAJAnxC,EAAAA,GAAAA,mBAA0Bq1H,eAAgB,EAC1Cr1H,EAAAA,GAAAA,cAAuBA,EAAAA,GAAAA,kBAAyBmxC,SAChDnxC,EAAAA,GAAAA,mBAA0Bq1H,eAAgB,EAC1CtpH,EAAAA,EAAAA,OAAgBrB,EAAAA,KACT,EAIT,MAAM0lC,EAASpwC,EAAAA,GAAAA,mBACf,IAAK,IAAIa,EAAI,EAAGA,EAAIuvC,EAAOY,iBAAiBhyC,OAAQ6B,IAAK,CACvD,MAAMkzE,GAAQ6kE,EAAAA,EAAAA,IAAmBxoG,EAAQvvC,GACzC,GAAc,OAAVkzE,GACAA,EAAM5iC,UAAYA,EAKpB,OAJAnxC,EAAAA,GAAAA,mBAA0Bq1H,eAAgB,EAC1Cr1H,EAAAA,GAAAA,cAAuBmgC,EAAOgR,SAC9BnxC,EAAAA,GAAAA,mBAA0Bq1H,eAAgB,EAC1CtpH,EAAAA,EAAAA,OAAgBrB,EAAAA,KACT,CAEX,CAGA,MAAMqpE,GAAQn0E,EAAAA,EAAAA,IAAUuxC,GACxB,SAAc,OAAV4iC,GAAkBA,aAAiBj0E,EAAAA,GAAUi0E,EAAMh0E,qBACrDC,EAAAA,GAAAA,mBAA0Bq1H,eAAgB,EAC1Cr1H,EAAAA,GAAAA,cAAuBmgC,EAAOgR,SAC9BnxC,EAAAA,GAAAA,mBAA0Bq1H,eAAgB,EAC1CtpH,EAAAA,EAAAA,OAAgBrB,EAAAA,KACT,EAIG,EAEd61H,WAAalQ,GAAQ,KACnBI,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMjgF,EAASpwC,EAAAA,GAAAA,mBACf,OAAOywH,EAAAA,GAAAA,KAAaJ,EAAKjgF,EAAOe,UAAU,EAAK,EAEjDqvF,gBAAkBnQ,GAAQ/9E,UACxBm+E,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMu/B,EAAa5vJ,EAAAA,GAAAA,mBACnB,KAAM4vJ,aAAsB9vJ,EAAAA,GAE1B,OADA2wH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,wCAChB99E,QAAQC,UAEjB,MAAMpC,EAASw/G,EACTC,GAAe5iD,EAAAA,EAAAA,IAAqB78D,EAAQpwC,EAAAA,IAAU,EAAK,IAG3Do0H,GAAU7mB,EAAAA,EAAAA,IAAiBn9D,GACjC,IAAKgkF,EAAQv6F,IACX,MAAM42F,EAAAA,GAAAA,oBAA4BJ,EAAK+D,EAAQ16F,KAAO,IAQxD,OALA+2F,EAAAA,GAAAA,IACEJ,GACA,IAAO,2BAA0BjgF,EAAOe,iBAAgBzQ,EAAAA,EAAAA,IAAiCmvH,GAAa,OAGjGp/B,EAAAA,GAAAA,eAAuBJ,EAAKw/B,GAAa9gE,MAAK,WAInD,GAHA0hC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,uCAAsCjgF,EAAOe,cACrEf,EAAOrwC,mBAAoB,EAEvBF,EAAAA,EAAAA,cAA+BuwC,EAAOe,SACxC,OAAOppC,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,SAAe,CAAE4Z,OAAO,EAAOC,OAAO,IAG7Du+D,EAAAA,EAAAA,SAAAA,wBAA0C,EAC1CA,EAAAA,EAAAA,eACF,GAAE,EAEJuiD,UAAYtS,GAAQ,KAClBI,EAAAA,GAAAA,uBAA+BJ,GACxBrwH,EAAAA,GAAAA,OAET4iI,SAAWvS,GAASs9B,IAClBl9B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMnuF,IAAUyrH,EAChB,GAA2B,OAAvB3tJ,EAAAA,GAAAA,YACF,MAAMywH,EAAAA,GAAAA,oBAA4BJ,EAAK,yBAGzC,OAAKrwH,EAAAA,GAAAA,OAAgBkiC,GACnBliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACP,MACEhI,EAAAA,GAAAA,OAAiBkiC,IAC1BliC,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,UACP,GAEG,EAEd24H,YAActQ,GAAQ,KACpBI,EAAAA,GAAAA,uBAA+BJ,GAC3BrwH,EAAAA,GAAAA,aAAsB+H,EAAAA,EAAAA,SAAkBC,EAAAA,GAAAA,cAAqBD,EAAAA,EAAAA,SAAkBC,EAAAA,GAAAA,SACjFyoH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,0DAGzBrwH,EAAAA,GAAAA,aAAoB,EAEtB4gI,OAASvQ,GAAQ,KACfI,EAAAA,GAAAA,uBAA+BJ,GACD,OAAvBrwH,EAAAA,GAAAA,aAA+B+H,EAAAA,EAAAA,SAAkBC,EAAAA,GAAAA,cAAqBD,EAAAA,EAAAA,SAAkBC,EAAAA,GAAAA,UAEjG64H,WAAaxQ,GAAQ,KACnBI,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMy/B,EAAoC,OAAvB9vJ,EAAAA,GAAAA,YAEnB,OADAA,EAAAA,GAAAA,YAAkB,GACX8vJ,CAAU,EAEnB/uB,iBAAmB1Q,GAAQ,KACzBI,EAAAA,GAAAA,uBAA+BJ,GAG/B,MAAM5F,EAAezqH,EAAAA,GAAAA,kBACrB,GAAIyqH,EAAa3nH,UAAY,EAE3B,OADA2tH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yCACjB,EAGT,MAAM/1G,EAAOta,EAAAA,GAAAA,0BACb,OAAIA,EAAAA,GAAAA,MAAesa,GACjBm2G,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,sCAAoCv1G,EAAAA,EAAAA,IAAYR,QACjE,IAGTmwG,EAAa3nH,UAAY,EACzB9C,EAAAA,GAAAA,UAAiBsa,EAAM,WAEvBta,EAAAA,GAAAA,oBAAqE,EAA1C4C,EAAAA,EAAAA,+BAC3B6tH,EAAAA,GAAAA,IACEJ,GACA,IAAO,8DAA6D5F,EAAa3nH,qBAE5E,EAAI,EAEbm+H,wBAA0B5Q,GAAQ,KAChCI,EAAAA,GAAAA,uBAA+BJ,GAExBrwH,EAAAA,GAAAA,2BAET8gI,eAAiBzQ,GAAQ,KACvBI,EAAAA,GAAAA,uBAA+BJ,GAG/B,MAAM5F,EAAezqH,EAAAA,GAAAA,kBACrB,GAAIyqH,EAAa9nH,QAAUC,EAAAA,EAAAA,mBAEzB,OADA6tH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,uCACjB,EAGT,MAAM/1G,EAAOta,EAAAA,GAAAA,wBACb,OAAIA,EAAAA,GAAAA,MAAesa,GACjBm2G,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,sCAAoCv1G,EAAAA,EAAAA,IAAYR,QACjE,IAGTmwG,EAAa9nH,QAAU,EACvB3C,EAAAA,GAAAA,UAAiBsa,EAAM,WAEvBta,EAAAA,GAAAA,oBAAqE,EAA1C4C,EAAAA,EAAAA,+BAC3B6tH,EAAAA,GAAAA,IACEJ,GACA,IAAO,2DAAyDn2B,EAAAA,EAAAA,IAAUuwB,EAAa9nH,qBAElF,EAAI,EAEbq+H,sBAAwB3Q,GAAQ,KAC9BI,EAAAA,GAAAA,uBAA+BJ,GAExBrwH,EAAAA,GAAAA,yBAETqgI,oBAAsBhQ,GAASm7B,IAC7B/6B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMp2E,GAAcjoB,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKm7B,GAElE,OAAOjqI,EAAAA,EAAAA,IAAiBo3B,EAAAA,GACrBt7C,QAAQ4oJ,GAAcnzG,EAAAA,EAAUmH,GAAa/F,YAAY+xG,EAAU,MACnEloJ,KAAKkoJ,GAAcA,EAAU,GAAG1kJ,MAAK,EAE1C6+H,uBAAyB/P,GAAQ,CAACm7B,EAAcC,KAC9Ch7B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMp2E,GAAcjoB,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKm7B,GAC5DE,GAAe15H,EAAAA,EAAAA,GAAc,WAAW6uH,YAAYxwB,EAAKo7B,EAAe,gBACxEl4G,EAAUT,EAAAA,EAAUmH,GAE1B,IAAK1G,EAAQW,YAAYw3G,GACvB,MAAMj7B,EAAAA,GAAAA,oBAA4BJ,EAAM,YAAWp2E,8BAAwCyxG,MAG7F,MAAMpwF,EAAM3iB,EAAAA,EAAiB+yG,GAgB7B,MAfY,CACVnqJ,KAAMo3C,EAAAA,EAAiB+yG,GAAcnqJ,KACrC8zC,aAAcsD,EAAAA,EAAiB+yG,GAAcr2G,aAC7C06G,OAAQp3G,EAAAA,EAAiB+yG,GAAcp2G,WAAa/B,EAAQO,iBAC5DsC,mBAAoBuC,EAAAA,EAAiB+yG,GAAct1G,mBACnD45G,eAAgB,CACdpnJ,QAAS0yD,EAAI9lB,gBAAkB,EAAI8lB,EAAI9lB,gBAAkBjC,EAAQQ,iBAAmB,EACpFlrC,SAAUyyD,EAAI5lB,iBAAmB,EAAI4lB,EAAI5lB,iBAAmBnC,EAAQQ,iBAAmB,EACvFjrC,QAASwyD,EAAI1lB,gBAAkB,EAAI0lB,EAAI1lB,gBAAkBrC,EAAQQ,iBAAmB,EACpF/qC,UAAWsyD,EAAIxlB,kBAAoB,EAAIwlB,EAAIxlB,kBAAoBvC,EAAQQ,iBAAmB,EAC1FhrC,QAASuyD,EAAItlB,gBAAkB,EAAIslB,EAAItlB,gBAAkBzC,EAAQQ,iBAAmB,EACpF9qC,SAAUqyD,EAAIplB,iBAAmB,EAAIolB,EAAIplB,iBAAmB3C,EAAQQ,iBAAmB,EACvFzpB,aAAc,GAGR,EAEZ42G,eACG7Q,GACD,SAACm7B,GAAgC,IAAlBmC,IAAS,UAAH,+CACnBl9B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMp2E,GAAcjoB,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKm7B,GAC5DtpH,IAAUyrH,EAEV35G,EAAUh0C,EAAAA,GAAAA,KAAYi6C,GAE5B,IAAKjG,EACH,MAAMy8E,EAAAA,GAAAA,oBAA4BJ,EAAM,8BAA6Bp2E,MAGvE,MAAMg2G,EAAajwJ,EAAAA,GAAAA,MAgBnB,OAdAA,EAAAA,GAAAA,UACE,IAAIuqH,EAAAA,EAAY,CACdtsC,aAAa,EACbhkC,YAAaA,KAGb/X,GACFliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACLioJ,IACTjwJ,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAEhByoH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,qBAAoBp2E,qBAA+BjG,QACpE,CACT,EACFmtF,eAAiB9Q,GAAQ,CAACm7B,EAAc0E,KACtCz/B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMp2E,GAAcjoB,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKm7B,GAC5DhrC,EAAQiQ,EAAAA,GAAAA,OAAeJ,EAAK,QAAS6/B,GAG3C,IAAIr2H,EACJ,OAFA75B,EAAAA,GAAAA,UAAkBm6C,EAAAA,EAAAA,GAA0BF,GAEpCumE,EAAMxwF,eACZ,IAAK,WACH6J,EAAM75B,EAAAA,GAAAA,qBAA2B,GACjC,MACF,IAAK,sBACH65B,EAAM75B,EAAAA,GAAAA,+BAAqC,GAC3C,MACF,IAAK,KACH65B,EAAM75B,EAAAA,GAAAA,eAAqB,GAC3B,MACF,IAAK,oBACH65B,EAAM75B,EAAAA,GAAAA,6BAAmC,GACzC,MACF,IAAK,mBACH65B,EAAM75B,EAAAA,GAAAA,4BAAkC,GACxC,MACF,IAAK,WACH65B,EAAM75B,EAAAA,GAAAA,qBAA2B,GACjC,MACF,IAAK,sBACH65B,EAAM75B,EAAAA,GAAAA,+BAAqC,GAC3C,MACF,IAAK,WACH65B,EAAM75B,EAAAA,GAAAA,qBAA2B,GACjC,MACF,IAAK,QACH65B,EAAM75B,EAAAA,GAAAA,kBAAwB,GAC9B,MACF,IAAK,WACH65B,EAAM75B,EAAAA,GAAAA,qBAA2B,GACjC,MACF,IAAK,qBACH65B,EAAM75B,EAAAA,GAAAA,6BAAmC,GACzC,MACF,IAAK,SACH65B,EAAM75B,EAAAA,GAAAA,mBAAyB,GAC/B,MACF,IAAK,mBACH65B,EAAM75B,EAAAA,GAAAA,2BAAiC,GACvC,MACF,QAEE,OADAywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,iBAAgB7P,SACjC,EAUX,OARI3mF,EACF42F,EAAAA,GAAAA,IACEJ,GACA,IAAO,kCAAiCp2E,qBAA+Bj6C,EAAAA,GAAAA,KAAYi6C,QAGrFw2E,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,6CAA4Cp2E,cAAwBumE,cAEvF3mF,CAAG,EAEZunG,QAAU/Q,GAASm7B,IACjB/6B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMp2E,GAAcjoB,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKm7B,GAClExrJ,EAAAA,GAAAA,QAAei6C,EAAY,EAE7BonF,cAAgBhR,GAASm7B,IACvB/6B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMp2E,GAAcjoB,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKm7B,GAClE,OAAO14G,EAAAA,EAAUmH,GAAa91C,gBAAgB,EAEhDm9H,gBAAkBjR,GAASm7B,IACzB/6B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMp2E,GAAcjoB,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKm7B,GAClE,OAAO14G,EAAAA,EAAUmH,GAAa51C,KAAK,EAErCk9H,oBAAsBlR,GAASm7B,IAC7B/6B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMp2E,GAAcjoB,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKm7B,GAClE,OAAO14G,EAAAA,EAAUmH,GAAanF,cAAc,EAE9C0sF,wBAA0BnR,GAAQ,KAChCI,EAAAA,GAAAA,uBAA+BJ,GAE/BjwC,EAAAA,EAAAA,SAAAA,wBAA0C,EAC1CA,EAAAA,EAAAA,gBAEOpgF,EAAAA,GAAAA,mBAAAA,SAET2vB,YAAc0gG,GAAS8+B,IACrB1+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMj/B,GAAUp/D,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAK8+B,GAE9D,IAAKnvJ,EAAAA,GAAAA,mBAAAA,SAAmCoxF,GAEtC,OADAq/B,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yCAAwCj/B,QACzD,EAET,MAAM5gD,EAAMvsC,EAAAA,EAASmtF,IACrBzhE,EAAAA,EAAAA,IAAY6gB,GAGZ,IAAK,IAAI3vC,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,mBAAAA,SAAoCa,GAClDb,EAAAA,GAAAA,mBAA0Ba,IAAMuwF,GAAWntF,EAAAA,EAASjE,EAAAA,GAAAA,mBAA0Ba,IAAI4wF,YACpFzxF,EAAAA,GAAAA,mBAAAA,OAAiCa,EAAG,GACpCA,KAKJ,OAFAb,EAAAA,GAAAA,oBAAqE,EAA1C4C,EAAAA,EAAAA,+BAC3B6tH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,eAAcj/B,iBAC/B,CAAI,EAEbqwC,eACGpR,GACD,SAAC8+B,EAAUxL,GAAyB,IAAlBgK,IAAS,UAAH,+CACtBl9B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMj/B,GAAUp/D,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAK8+B,GACxD3oJ,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCzhH,IAAUyrH,EACV1yI,EAAUhX,EAAAA,EAASmtF,GAGzB,GAAIpxF,EAAAA,GAAAA,MAAeib,EAAQ1Z,OAASvB,EAAAA,GAAAA,iBAAwBuB,KAE1D,OADAkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,uBAAsBj/B,6CACvC,EAGT,IAAKpxF,EAAAA,GAAAA,SAAAA,SAAyBoxF,GAE5B,OADAq/B,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,4BAA2Bj/B,QAC5C,EAGT,MAAMw8D,EAAc5tJ,EAAAA,GAAAA,MAEpB,OAAQwG,EAAKwpB,eACX,IAAK,UACL,IAAK,oBACL,IAAK,mBACH,OAAK0hE,EAAAA,EAAaz2E,EAAQ1Z,MAAMmvC,kBAIhC1wC,EAAAA,GAAAA,UACE,IAAIi3F,EAAAA,EAAY,CACdhZ,aAAa,EACbiZ,gBAAiBC,EAAAA,gBAAAA,QACjBl8E,QAASA,EAAQ1Z,QAGjB2gC,GACFliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACL4lJ,IACT5tJ,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAEhByoH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,+CAA8Cp1G,EAAQ1Z,WACvE,IAlBLkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWp1G,EAAQ1Z,oDACpC,GAkBX,IAAK,QACL,IAAK,YACL,IAAK,aACH,OAAKmwF,EAAAA,EAAaz2E,EAAQ1Z,MAAM8xF,gBAIhCrzF,EAAAA,GAAAA,UACE,IAAIi3F,EAAAA,EAAY,CACdhZ,aAAa,EACbiZ,gBAAiBC,EAAAA,gBAAAA,MACjBl8E,QAASA,EAAQ1Z,QAGjB2gC,GACFliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACL4lJ,IACT5tJ,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAEhByoH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,4CAA2Cp1G,EAAQ1Z,WACpE,IAlBLkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWp1G,EAAQ1Z,iDACpC,GAkBX,IAAK,WACL,IAAK,eACL,IAAK,gBACH,OAAKmwF,EAAAA,EAAaz2E,EAAQ1Z,MAAM+xF,mBAIhCtzF,EAAAA,GAAAA,UACE,IAAIi3F,EAAAA,EAAY,CACdhZ,aAAa,EACbiZ,gBAAiBC,EAAAA,gBAAAA,SACjBl8E,QAASA,EAAQ1Z,QAGjB2gC,GACFliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACL4lJ,IACT5tJ,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAEhByoH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,2CAA0Cp1G,EAAQ1Z,WACnE,IAlBLkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWp1G,EAAQ1Z,gDACpC,GAkBX,QAEE,OADAkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,uBAAsB7pH,OACvC,EAEb,EACFk7H,cAAgBrR,GAAS8+B,IACvB1+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMj/B,GAAUp/D,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAK8+B,GAE9D,OADgBlrJ,EAAAA,EAASmtF,GACVjtF,gBAAgB,EAEjCw9H,gBAAkBtR,GAAS8+B,IACzB1+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMj/B,GAAUp/D,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAK8+B,GAE9D,OADgBlrJ,EAAAA,EAASmtF,GACV/sF,KAAK,EAEtBu9H,oBAAsBvR,GAAS8+B,IAC7B1+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMj/B,GAAUp/D,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAK8+B,GAE9D,OADgBlrJ,EAAAA,EAASmtF,GACVt8C,cAAc,EAE/B+sF,gBAAkBxR,GAAQ,CAAC8+B,EAAUvK,KACnCn0B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMj/B,GAAUp/D,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAK8+B,GACxD32H,EAAMi4F,EAAAA,GAAAA,OAAeJ,EAAK,MAAOu0B,GACjC3pI,EAAUhX,EAAAA,EAASmtF,GACzB,IAAKpxF,EAAAA,GAAAA,SAAAA,SAAyBib,EAAQ1Z,MAEpC,OADAkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,wBAAuBj/B,oCACxC,EAET,GAAIpxF,EAAAA,GAAAA,MAAeib,EAAQ1Z,OAASvB,EAAAA,GAAAA,iBAAwBuB,KAE1D,OADAkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,wBAAuBj/B,6CACxC,EAET,GAAIn2E,EAAQ1Z,OAASlB,EAAAA,YAAAA,uBAAqC4a,EAAQ1Z,OAASlB,EAAAA,YAAAA,aAEzE,OADAowH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,wBAAuBj/B,6CACxC,EAET,GAAmB,iBAAR54D,GAAoBA,GAAO,GAAKpgB,MAAMogB,GAE/C,OADAi4F,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,6BAA4B73F,SAC7C,EAET,GAAIx4B,EAAAA,GAAAA,MAAew4B,EAEjB,OADAi4F,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,2CAAyCv1G,EAAAA,EAAAA,IAAY0d,UAAY44D,QAClF,EAGT,GAAIn2E,EAAQ5W,OAAQ4vF,EAAAA,EAAAA,MAQlB,OAPAw8B,EAAAA,GAAAA,IACEJ,GACA,IACG,gEACCp1G,EAAQ5W,gBACA4vF,EAAAA,EAAAA,WAEP,EAET,MAAM/mB,GAAUinB,EAAAA,EAAAA,IAAO37D,EAAKvd,GAE5B,OADAw1G,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,IAAEv1G,EAAAA,EAAAA,IAAY0d,kBAAoB44D,WAAgBp2E,EAAAA,EAAAA,IAAiBkyD,mBACpF,CAAI,EAEb40D,cACGzR,GACD,SAACs/B,GAAgC,IAAlBhC,IAAS,UAAH,+CACnBl9B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMytB,EAAcrtB,EAAAA,GAAAA,OAAeJ,EAAK,cAAes/B,GAAc3/H,cAC/DkS,IAAUyrH,EAEVC,EAAc5tJ,EAAAA,GAAAA,MAEdmD,EAAIa,OAAOpC,OAAOuuJ,EAAAA,GAAUnyJ,MAAMmF,GAAMA,EAAE5B,KAAKyuB,gBAAkB8tH,IAEvE,GAAS,MAAL36I,EAEF,OADAstH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,0CAAyCytB,OAC1D,EAGT,GAAI99I,EAAAA,GAAAA,WAAkBmD,EAAE5B,MAEtB,OADAkvH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yBAAwBltH,EAAE5B,mBAC3C,EAGT,MAAMysB,EAAS7qB,EAAE6qB,OACjB,OAAe,OAAXA,GACFyiG,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,0BAAyBltH,EAAE5B,mBAC5C,GAGJysB,EAAOqkC,OAKZryD,EAAAA,GAAAA,UACE,IAAIowJ,EAAAA,EAAkB,CACpBtS,YAAa36I,EAAE5B,KACf08E,aAAa,KAGb/7C,GACFliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACL4lJ,IACT5tJ,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAEhByoH,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,4BAA2BytB,QAC5C,IAlBLrtB,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,uCAAsCltH,EAAE5B,gBAAgBysB,EAAOvsB,gBAChF,EAkBX,EACFsgI,YAAc1R,GAAQ,CAACw6B,EAAY8C,KACjCl9B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMryC,EAAYyyC,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw6B,GAC7C3oH,OAAmB1xB,IAAXm9I,KAAgCA,EACxCC,EAAc5tJ,EAAAA,GAAAA,MAEO,OAAvBA,EAAAA,GAAAA,aAA6BA,EAAAA,GAAAA,YAAkB,GACnDA,EAAAA,GAAAA,aAAoBqnH,EAAAA,aAAAA,OAGpB,MAAM4E,GAAQ5tC,EAAAA,EAAAA,GAAUL,GACxB,GAAa,MAATiuC,EAAe,MAAMwE,EAAAA,GAAAA,oBAA4BJ,EAAM,mBAAkBryC,MAE7EyyC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,wBAAuBpE,EAAMzlH,YACrD,MAAM6pJ,EAAYpkC,EAAMnuC,OAAO,EAAGuyC,EAAIh2F,cAQtC,OAPI6H,GACFliC,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,OACL4lJ,IACT5tJ,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAETqoJ,CAAS,EAElBruB,eAAiB3R,GAASw6B,IACxBp6B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMryC,EAAYyyC,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw6B,GAG7C5+B,GAAQ5tC,EAAAA,EAAAA,GAAUL,GACxB,GAAa,MAATiuC,EAAe,MAAMwE,EAAAA,GAAAA,oBAA4BJ,EAAM,mBAAkBryC,MAE7E,OAAOiuC,EAAM/tC,YAAYl+E,EAAAA,GAAO,EAElCiiI,cAAgB5R,GAASw6B,IACvBp6B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMryC,EAAYyyC,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw6B,GAG7C5+B,GAAQ5tC,EAAAA,EAAAA,GAAUL,GACxB,GAAa,MAATiuC,EAAe,MAAMwE,EAAAA,GAAAA,oBAA4BJ,EAAM,mBAAkBryC,MAE7E,MAAMsyE,GAA4BxF,EAAAA,EAAAA,IAAwB9qJ,EAAAA,GAAQisH,GAElE,OAAOjoH,OAAO4wE,OAAO,CAAC,EAAGq3C,EAAO,CAC9B9wG,MAAOm1I,EAA0Bn1I,MACjCuY,WAAY48H,EAA0B58H,WACtC5iB,YAAaw/I,EAA0Bn9H,QACvCpiB,aAAcu/I,EAA0Bl9H,OACxCpiB,YAAas/I,EAA0Bj9H,OACvCpiB,cAAeq/I,EAA0Bh9H,OACzCpiB,YAAao/I,EAA0B/8H,OACvCpiB,aAAcm/I,EAA0B98H,OACxCiqD,iBAAkB6yE,EAA0B78H,QAC5C,EAEJitG,mBAAqBrQ,GAAQ,KAC3BI,EAAAA,GAAAA,uBAA+BJ,GAG1BrwH,EAAAA,GAAAA,eAIEgE,OAAOpC,OAAOg9E,EAAAA,GAAc7gF,KAAKoF,GAAMA,EAAE07E,WAH9C4xC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,oCAChB,KAIXoQ,sBAAwBpQ,GAASs/B,IAC/Bl/B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMytB,EAAcrtB,EAAAA,GAAAA,OAAeJ,EAAK,cAAes/B,GAAc3/H,cAGrE,IAAKhwB,EAAAA,GAAAA,eAIH,OAHAywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,qCAGf,EAGV,MAAMhxH,EAAO2E,OAAOpC,OAAOg9E,EAAAA,GAAc5gF,MAAM6C,GAAMA,EAAEg+E,QAAQ7uD,gBAAkB8tH,IAMjF,GAAY,MAARz+I,EACF,MAAMoxH,EAAAA,GAAAA,oBACJJ,EACC,qBAAoBytB,4GAKzB,OAAI99I,EAAAA,GAAAA,WAAkBX,EAAKw/E,UACzB4xC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yBAAwBhxH,EAAKw/E,qBAC9C,GAEFx/E,EAAKgjD,KAAK,EAEnB0gF,SAAW1S,GAAQ,CAACkgC,EAASnB,KAC3B3+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMmgC,EAAS//B,EAAAA,GAAAA,OAAeJ,EAAK,SAAUkgC,GACvC1B,IAAWO,IACbp1D,EAAAA,EAAAA,IAAsBy2B,EAAAA,GAAAA,OAAeJ,EAAK,WAAY++B,GAAY/+B,EAAIh2F,aAAa94B,MAEvF,GAAiB,OAAbstJ,EAAmB,MAAMp+B,EAAAA,GAAAA,oBAA4BJ,EAAM,gCAA+B++B,MAC9FvpI,EAAAA,EAAAA,IAAa,EAAM7lB,EAAAA,GAAAA,SAAiBwwJ,GAChC3B,GAAUtjH,YAAW,IAAMqjH,EAAcC,IAAW,IAAI,EAE9D7rB,mBAAqB3S,GAAQ,CAACkgC,EAASnB,KACrC3+B,EAAAA,GAAAA,uBAA+BJ,GAC/B,MAAMmgC,EAAS//B,EAAAA,GAAAA,OAAeJ,EAAK,SAAUkgC,GAC7C,GAAIC,EAAS,IAAMA,EAAS,IAAMlrI,OAAOu0H,UAAU2W,GACjD,MAAM,IAAIpvI,MAAO,8BAA6BmvI,KAEhD,MAAM1B,IAAWO,IACbp1D,EAAAA,EAAAA,IAAsBy2B,EAAAA,GAAAA,OAAeJ,EAAK,WAAY++B,GAAY/+B,EAAIh2F,aAAa94B,MAEvF,GAAiB,OAAbstJ,EAAmB,MAAMp+B,EAAAA,GAAAA,oBAA4BJ,EAAM,gCAA+B++B,KAE9F,MAAMzvJ,GAAKC,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,aACrB,KAAMF,aAAcG,EAAAA,GAAS,MAAM,IAAIshB,MAAM,qEAEvCphB,EAAAA,GAAAA,OAAAA,QAAwBL,EAAGktG,uBAC1BltG,EAAG0mF,gBAIHrmF,EAAAA,GAAAA,aACEA,EAAAA,GAAAA,YAAAA,SAA4BC,EAAAA,mBAAAA,oBAQrCN,EAAGI,mBAAoB,GACvBkK,EAAAA,EAAAA,MACA4b,EAAAA,EAAAA,IAAa,EAAO7lB,EAAAA,GAAAA,SAAiBwwJ,GACjC3B,GAAUtjH,YAAW,IAAMqjH,EAAcC,IAAW,MAPtDp+B,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,oDAOmC,EAE9D4S,eAAgB,IAAM,IACfjjI,EAAAA,GAAAA,YACEA,EAAAA,GAAAA,YAAAA,UADyB,KAGlC6iI,WAAaxS,GAAQ,KACnBI,EAAAA,GAAAA,uBAA+BJ,IAC/Bl/B,EAAAA,EAAAA,MACOtL,EAAAA,GAAAA,cAETi9C,gBAAkBzS,GAAQ,KACxBI,EAAAA,GAAAA,uBAA+BJ,IACxBz5G,EAAAA,EAAAA,QAWX,OANAk6G,EAAAA,EAAAA,GAAoBk+B,EAAgB,CAClCyB,oBAAqB,CACnBhhE,QAAS,QACTwhC,YAAa,4EAGV+9B,CACT,wLC/qCO,SAAS7W,IACd,MAAMuY,EAAuB,SAAUrgC,GACrC,GAAwB,KAApBrwH,EAAAA,GAAAA,WAA2BA,EAAAA,GAAAA,cAAqB,IAClD,MAAMywH,EAAAA,GAAAA,oBACJJ,EACA,iJAGN,EAEMsgC,EAAoB,SAAUtgC,EAAuBugC,GACzD,GAAIA,GAAgB5wJ,EAAAA,GAAAA,QAAAA,QAAyB4wJ,EAAe,EAAG,CAC7D,MAAMl3H,EAAO,0BAAyBk3H,IAEtC,MADAngC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM32F,IACjB+2F,EAAAA,GAAAA,oBAA4BJ,EAAK32F,EACzC,CACF,EAEMm3H,EAAgD,CACpDlqB,cAAgBtW,GAAQ,KACtBqgC,EAAqBrgC,GACdrwH,EAAAA,GAAAA,QAAAA,QAET4mI,UAAYvW,GAASygC,IACnB,MAAMF,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACzDJ,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GACvB5wJ,EAAAA,GAAAA,QAAe4wJ,GAAcG,UAAU,EAEzClqB,mBAAqBxW,GAASygC,IAC5B,MAAMF,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GAGzD,OAFAJ,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAChB5wJ,EAAAA,GAAAA,QAAe4wJ,GAAcI,eAAe,EAErDlqB,iBAAmBzW,GAASygC,IAC1B,MAAMF,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GAGzD,OAFAJ,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAChB5wJ,EAAAA,GAAAA,QAAe4wJ,GAAcK,aAAa,EAEnDlqB,iBAAmB1W,GAAQ,CAACygC,EAAejG,KACzC,MAAM+F,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACnD9yE,EAAYyyC,EAAAA,GAAAA,OAAeJ,EAAK,YAAaw6B,GACnD6F,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GACvB,MAAM3kC,GAAQ5tC,EAAAA,EAAAA,GAAUL,GACxB,OAAa,MAATiuC,GACGjsH,EAAAA,GAAAA,QAAe4wJ,GAAc7uB,YAAY9V,EAAMzlH,KAAK,EAE7DwgI,sBAAwB3W,GAAQ,CAACygC,EAAezB,EAAiBC,KAC/D,MAAMsB,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACnDvB,EAAiB9+B,EAAAA,GAAAA,OAAeJ,EAAK,iBAAkBg/B,GACvDrkJ,EAAYylH,EAAAA,GAAAA,OAAeJ,EAAK,YAAai/B,GAGnD,OAFAoB,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAChB5wJ,EAAAA,GAAAA,QAAe4wJ,GAAcM,qBAAqB3B,EAAgBvkJ,EAAU,EAErFw6B,OAAS6qF,GAAQ,CAACygC,EAAe7M,KAC/B,MAAM2M,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACnD14H,GAAWpG,EAAAA,EAAAA,GAAc,YAAY6uH,YAAYxwB,EAAK4zB,GAG5D,OAFAyM,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAChB5wJ,EAAAA,GAAAA,QAAe4wJ,GAAcprH,OAAOpN,EAAS,EAEtD6uG,iBAAmB5W,GAAQ,CAACygC,EAAetF,KACzC,MAAMoF,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACnD72G,GAAcjoB,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKm7B,GAClEkF,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAGvB,IAAK,IAAI/vJ,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,QAAAA,SAAyBa,EAAG,CAC9C,GAAIA,IAAM+vJ,EACR,SAEF,MAAM78E,EAAQ/zE,EAAAA,GAAAA,QAAea,GAC7B,IAAIswJ,EAAAA,EAAAA,GAAoBp9E,EAAM7+C,cAAgB6+C,EAAM7+C,YAAY+kB,cAAgBA,EAC9E,MAAMw2E,EAAAA,GAAAA,oBACJJ,EACC,UAASugC,6BAAwC32G,oBAA8Bp5C,iCAGtF,CAEA,OAAOb,EAAAA,GAAAA,QAAe4wJ,GAAc1vB,eAAejnF,EAAY,EAEjEitF,iBAAmB7W,GAAQ,CAACygC,EAAehK,EAAcsE,KACvD,MAAMwF,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACnDv8I,GAAcyd,EAAAA,EAAAA,GAAc,eAAe6uH,YAAYxwB,EAAKy2B,GAC5DuE,EAAW56B,EAAAA,GAAAA,OAAeJ,EAAK,WAAY+6B,GAIjD,GAHAsF,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,IAElB3sJ,EAAAA,EAASsQ,GAAamkB,SACzB,MAAM+3F,EAAAA,GAAAA,oBAA4BJ,EAAM,2BAA0B97G,6BAIpE,IAAK,IAAI1T,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,QAAAA,SAAyBa,EAAG,CAC9C,GAAIA,IAAM+vJ,EACR,SAEF,MAAM78E,EAAQ/zE,EAAAA,GAAAA,QAAea,GAC7B,IAAIuwJ,EAAAA,EAAAA,GAAoBr9E,EAAM7+C,cAAgB6+C,EAAM7+C,YAAY3gB,cAAgBA,EAC9E,MAAMk8G,EAAAA,GAAAA,oBACJJ,EACC,UAASugC,6BAAwCr8I,oBAA8B1T,iCAGtF,CAEA,GAAIb,EAAAA,GAAAA,MAAeA,EAAAA,GAAAA,KAAAA,SAAuBuU,EACxC,MAAMk8G,EAAAA,GAAAA,oBACJJ,EACC,UAASugC,6BAAwCr8I,gDAItD,OAAOvU,EAAAA,GAAAA,QAAe4wJ,GAAcnvB,eAAeltH,EAAa82I,EAAS,EAE3ElkB,gBAAkB9W,GAAQ,CAACygC,EAAetB,EAAUC,KAClD,MAAMmB,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACnDpB,EAAUj/B,EAAAA,GAAAA,OAAeJ,EAAK,UAAWm/B,GACzC1lI,EAAO2mG,EAAAA,GAAAA,OAAeJ,EAAK,OAAQo/B,GAIzC,OAHAiB,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAEhB5wJ,EAAAA,GAAAA,QAAe4wJ,GAAcS,aAAa3B,EAAS5lI,EAAK,EAEjEu2E,QAAUgwB,GAASygC,IACjB,MAAMF,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACzDJ,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAEvB,MAAMU,EAAKtxJ,EAAAA,GAAAA,QAAe4wJ,GAC1B,OAAuB,OAAnBU,EAAGp8H,YAA6B,KAC7Bo8H,EAAGp8H,YAAYq8H,QAAQD,EAAG,EAEnClqB,UAAY/W,GAASygC,IACnB,MAAMF,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACzDJ,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAEvB,MAAMU,EAAKtxJ,EAAAA,GAAAA,QAAe4wJ,GAc1B,MAZa,CACXx7H,IAAIssH,EAAAA,EAAAA,WAAU4P,EAAGl8H,IACjBhN,QAAQs5H,EAAAA,EAAAA,WAAU4P,EAAGlpI,QACrBzf,KAAK+4I,EAAAA,EAAAA,WAAU4P,EAAG3oJ,KAClBgH,OAAO+xI,EAAAA,EAAAA,WAAU4P,EAAG3hJ,OACpBmZ,KAAMwoI,EAAGxoI,KACTk+D,MAAOsqE,EAAGtqE,MACVC,KAAMqqE,EAAGrqE,KACTuqE,OAAQF,EAAGE,OACXplI,aAAcklI,EAAGllI,aAGR,EAEbi7G,uBAAyBhX,GAASygC,IAChC,MAAMF,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACzDJ,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAEvB,MAAMt1I,EAAO,GACb,IAAK,IAAIza,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,QAAe4wJ,GAAcloJ,cAAc1J,OAAQ6B,IACrEya,EAAKvN,KAAK/N,EAAAA,GAAAA,QAAe4wJ,GAAcloJ,cAAc7H,GAAGU,MAE1D,OAAO+Z,CAAI,EAEbgsH,yBAA2BjX,GAASygC,IAClC,MAAMF,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACzDJ,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAEvB,MAAMa,EAAkBzxJ,EAAAA,GAAAA,QAAe4wJ,GAAcc,sBAC/Cp2I,EAAO,GACb,IAAK,IAAIza,EAAI,EAAGA,EAAI4wJ,EAAgBzyJ,OAAQ6B,IAAK,CAC/C,MAAMyR,EAAMm/I,EAAgB5wJ,GAC5Bya,EAAKvN,KAAK,CACRxM,KAAM+Q,EAAI/Q,KACV+Y,KAAMhI,EAAI/C,UAEd,CAEA,OAAO+L,CAAI,EAEbisH,kBAAoBlX,GAAQ,CAACygC,EAAevD,KAC1C,MAAMqD,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACnD98I,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAInE,GAHAmD,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAEnB5wJ,EAAAA,GAAAA,QAAe4wJ,GAAc5pE,MAAQ,EACvC,MAAMypC,EAAAA,GAAAA,oBAA4BJ,EAAM,iCAAgCugC,KAG1E,MAAMt+I,EAAMQ,EAAAA,EAAckB,GAC1B,IAAK1B,EACH,MAAMm+G,EAAAA,GAAAA,oBAA4BJ,EAAM,gBAAer8G,KAGzD,OAAOhU,EAAAA,GAAAA,QAAe4wJ,GAAce,mBAAmBr/I,EAAI,EAE7Dm1H,2BAA6BpX,GAASk9B,IACpCmD,EAAqBrgC,GACrB,MAAMr8G,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAEnE,OAD0Bz6I,EAAAA,EAAckB,GAC7BzE,QAAQ,EAErBm4H,4BAA8BrX,GAASk9B,IACrCmD,EAAqBrgC,GACrB,MAAMr8G,GAAUge,EAAAA,EAAAA,GAAc,oBAAoB6uH,YAAYxwB,EAAKk9B,GAC7Dj7I,EAAoBQ,EAAAA,EAAckB,GACxC,OAAOH,EAAAA,EAAAA,IAAWvB,GAAKpC,OAAO,EAEhCs3H,uBAAyBnX,GAAQ,CAACygC,EAAec,EAASC,KACxD,MAAMjB,EAAengC,EAAAA,GAAAA,OAAeJ,EAAK,eAAgBygC,GACnDrkI,EAASgkG,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuhC,GAC7C,IAAI55H,EAUJ,GAREA,OADuB,IAAd65H,EACE,SAEAphC,EAAAA,GAAAA,OAAeJ,EAAK,WAAYwhC,GAE7CnB,EAAqBrgC,GACrBsgC,EAAkBtgC,EAAKugC,GAGR,sBAAXnkI,EACF,IAAK,IAAI5rB,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,QAAAA,SAAyBa,EAAG,CAC9C,GAAIA,IAAM+vJ,EACR,SAEF,MAAM78E,EAAQ/zE,EAAAA,GAAAA,QAAea,GAC7B,IAAIixJ,EAAAA,EAAAA,GAAwB/9E,EAAM7+C,cAAgB6+C,EAAM7+C,YAAYmG,aAAerD,EACjF,MAAMy4F,EAAAA,GAAAA,oBACJJ,EACC,UAASugC,6CAAwD/vJ,uCAGxE,CAGF,OAAOb,EAAAA,GAAAA,QAAe4wJ,GAAcpxH,YAAY/S,EAAQuL,EAAS,GASrE,OAJA84F,EAAAA,EAAAA,GAAoB+/B,EAAiB,CACnCkB,eAAgB,CAAEtiE,QAAS,QAASwhC,YAAa,oBACjD+gC,eAAgB,CAAEviE,QAAS,QAASwhC,YAAa,sBAE5C4/B,CACT,wJCjQO,SAASxY,IACd,SAAS4Z,EAAqB5hC,GAC5B,IAAKrwH,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,cAA+B,GACzD,MAAMivH,EAAAA,GAAAA,oBAA4BJ,EAAK,iCAE3C,CAEA,MAAO,CACLuX,UAAYvX,GAAQ,KAClB4hC,EAAqB5hC,GACdj5C,EAAAA,GAAAA,SAETywD,WAAaxX,GAAQ,KACnB4hC,EAAqB5hC,GACdj5C,EAAAA,GAAAA,UAET0wD,eAAiBzX,GAAQ,CAAC6hC,EAAQC,KAEhC,MAAMt5E,EAAQ43C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS6hC,GACrCp5E,EAAQ23C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS8hC,GAC3CF,EAAqB5hC,GACrB,MAAM58C,EAAW2D,EAAAA,GAAAA,aAAyByB,EAAOC,GAEjD,IAAKrF,EAAU,MAAMg9C,EAAAA,GAAAA,oBAA4BJ,EAAM,0BAAyBx3C,MAAUC,OAC1F,GAAIrF,EAASA,WAAWjtE,MAAQwvE,EAAAA,EAAAA,QAC9B,MAAMy6C,EAAAA,GAAAA,oBACJJ,EACC,2BAA0Bx3C,MAAUC,wDAIzC,MAAMV,EAAUhB,EAAAA,GAAAA,UACVvkD,EAAOulD,EAAU,IAAM,IAE7B,OADIA,IAAShB,EAAAA,GAAAA,iBAA8B,GACpCq5C,EAAAA,GAAAA,eAAuBJ,EAAKx9F,GAAMk8D,MAAK,WAG5C,OAFA3X,EAAAA,GAAAA,OAAmB3D,EAAU48C,EAAIh2F,aAAao4F,UAAUv6C,SACxDu4C,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,yBAAwBA,EAAIh2F,aAAao4F,UAAUv6C,qBACpE3lC,QAAQC,SACjB,GAAE,EAEJu1F,oBAAsB1X,GAAQ,KAC5B4hC,EAAqB5hC,GACrBI,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWl7C,EAAAA,GAAAA,qBAC5BA,EAAAA,GAAAA,KAAejxE,GAAMA,EAAEyqC,UAEhCq5F,gBAAkB3X,GAAQ,KACxB4hC,EAAqB5hC,GACrBI,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,YAAWj5C,EAAAA,GAAAA,UAAAA,qBAC5BA,EAAAA,GAAAA,UAAAA,KAA2Ba,IACzB,IAAKA,EAAGtpC,UAAWspC,EAAGxE,WAAW9kC,YAG5Cs5F,UAAY5X,GAAQ,KAClB4hC,EAAqB5hC,GACrBI,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,2BACxBj5C,EAAAA,GAAAA,OAAmB,EAErB8wD,iBAAmB7X,GAAQ,CAAC6hC,EAAQC,EAAQC,EAAWC,KACrD,MAAMx5E,EAAQ43C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS6hC,GACrCp5E,EAAQ23C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS8hC,GACrCt+E,EAAW48C,EAAAA,GAAAA,OAAeJ,EAAK,WAAY+hC,GAC3CE,EAAa7hC,EAAAA,GAAAA,OAAeJ,EAAK,aAAcgiC,GACrDJ,EAAqB5hC,GACrB,MAAM58C,GAAWc,EAAAA,EAAAA,IAAa+9E,GAC9B,IAAK7+E,EAAU,MAAMg9C,EAAAA,GAAAA,oBAA4BJ,EAAM,wBAAuBiiC,KAE9E,OADYl7E,EAAAA,GAAAA,SAAqByB,EAAOC,EAAOjF,EAAUJ,EAC/C,EAEZ00D,cAAgB9X,GAAQ,CAAC6hC,EAAQC,EAAQC,EAAWC,KAClD,MAAMx5E,EAAQ43C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS6hC,GACrCp5E,EAAQ23C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS8hC,GACrCt+E,EAAW48C,EAAAA,GAAAA,OAAeJ,EAAK,WAAY+hC,GAC3CE,EAAa7hC,EAAAA,GAAAA,OAAeJ,EAAK,aAAcgiC,GACrDJ,EAAqB5hC,GACrB,MAAM58C,GAAWc,EAAAA,EAAAA,IAAa+9E,GAC9B,IAAK7+E,EAAU,MAAMg9C,EAAAA,GAAAA,oBAA4BJ,EAAM,wBAAuBiiC,KAC9E,OAAOl7E,EAAAA,GAAAA,MAAkByB,EAAOC,EAAOjF,EAAUJ,EAAS,EAE5D20D,YAAc/X,GAAQ,CAAC6hC,EAAQC,KAC7B,MAAMt5E,EAAQ43C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS6hC,GACrCp5E,EAAQ23C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS8hC,GAC3CF,EAAqB5hC,GACrB,MAAM58C,EAAW2D,EAAAA,GAAAA,aAAyByB,EAAOC,GACjD,QAAiBtoE,IAAbijE,EAAwB,OAAOA,EAAS9kC,MAC5B,EAElB05F,eAAiBhY,GAAQ,CAAC6hC,EAAQC,KAChC,MAAMt5E,EAAQ43C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS6hC,GACrCp5E,EAAQ23C,EAAAA,GAAAA,OAAeJ,EAAK,QAAS8hC,GAE3C,OADAF,EAAqB5hC,GACdj5C,EAAAA,GAAAA,OAAmByB,EAAOC,EAAM,EAEzCwvD,WAAajY,GAAQ,KAGjBrwH,EAAAA,GAAAA,kBAC4F,GAA5FA,EAAAA,GAAAA,cAAAA,QAA6B5B,GAAMA,EAAEmD,OAASC,EAAAA,iBAAAA,oBAAoCxC,QACgB,GAAlGgB,EAAAA,GAAAA,oBAAAA,QAAmC5B,GAAMA,EAAEmD,OAASC,EAAAA,iBAAAA,oBAAoCxC,UAGxF2wB,EAAAA,EAAAA,IAAY1rB,EAAAA,EAAS5D,EAAAA,YAAAA,wBAGlBL,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,eACvBxB,EAAAA,GAAAA,oBAAAA,MAAiC5B,GAAMA,EAAEmD,OAASC,EAAAA,iBAAAA,kBAEnDmR,EAAAA,EAAAA,IAAkB,CAAEpR,KAAMC,EAAAA,iBAAAA,aAA+BC,MAAO,IAChEgvH,EAAAA,GAAAA,IACEJ,GACA,IAAO,IAAGhwH,EAAAA,YAAAA,sCAAkDmB,EAAAA,iBAAAA,+BAMhEyC,EAAAA,EAAS5D,EAAAA,YAAAA,uBAAmCq4B,UAC5C14B,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,cAA+B,IAI9D,uJCpHO,SAASi3I,IAEd,MAAM8Z,EAAoB,SAAUliC,GAClC,IAAKrwH,EAAAA,GAAAA,cACH,MAAMywH,EAAAA,GAAAA,oBAA4BJ,EAAM,yCAAwCA,EAAIC,cAEtF,IAAKtwH,EAAAA,GAAAA,gBACH,MAAMywH,EAAAA,GAAAA,oBAA4BJ,EAAM,6CAA4CA,EAAIC,aAE5F,EAEMkiC,EAAqB,SAAUniC,EAAuB9nC,GAC1D,MAAME,EAAQgqE,EAAAA,GAAiBlqE,GAC/B,GAAa,MAATE,EACF,MAAMgoC,EAAAA,GAAAA,oBAA4BJ,EAAM,0BAAyB9nC,MAGnE,OAAOE,CACT,EAEA,MAAO,CACLy1C,aAAc,IAAM,KAAMwjB,EAAAA,EAAAA,WAAUgR,EAAAA,GACpCv0B,cAAe,IAAM,IAAMn+H,EAAAA,GAAAA,cAC3Bo+H,gBAAiB,IAAM,IAAMp+H,EAAAA,GAAAA,gBAC7Bq+H,UAAW,IAAM,IAAMr+H,EAAAA,GAAAA,UACvBs+H,gBAAiB,IAAM,IAAMt+H,EAAAA,GAAAA,gBAC7Bu+H,WAAalO,GAAQ,KACnBkiC,EAAkBliC,GACXrsH,OAAOpC,OAAO+wJ,EAAAA,cAEvBn0B,SAAWnO,GAASuiC,IAClB,MAAMrqE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAI7C,OAHAL,EAAkBliC,GACJmiC,EAAmBniC,EAAK9nC,GAEzBlmC,KAAK,EAEpBo8E,gBAAkBpO,GAASuiC,IACzB,MAAMrqE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAI7C,OAHAL,EAAkBliC,GACJmiC,EAAmBniC,EAAK9nC,GAEzBhnF,IAAI,EAEnBm9H,YAAcrO,GAASuiC,IACrB,MAAMrqE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAI7C,OAHAL,EAAkBliC,GACJmiC,EAAmBniC,EAAK9nC,GAEzBm2C,aAAa,EAE5BC,YAActO,GAASuiC,IACrB,MAAMrqE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAI7C,OAHAL,EAAkBliC,GACJmiC,EAAmBniC,EAAK9nC,GAEzBo2C,aAAa,EAE5BC,YAAcvO,GAASuiC,IACrB,MAAMrqE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAC7CL,EAAkBliC,GAClB,MAAM5nC,EAAQgqE,EAAAA,GAAiBlqE,GAC/B,GAAa,MAATE,EACF,MAAMgoC,EAAAA,GAAAA,oBAA4BJ,EAAM,yBAAwB9nC,KAElE,MAAO,CAACE,EAAMoqE,aAAcpqE,EAAMqqE,YAAarqE,EAAMsqE,kBAAmBtqE,EAAMuqE,iBAAiB,EAEjGn0B,aAAexO,GAASuiC,IACtB,MAAMrqE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAI7C,OAHAL,EAAkBliC,GACJmiC,EAAmBniC,EAAK9nC,GAEzB0qE,SAAS,EAExBn0B,gBAAkBzO,GAAQ,CAACuiC,EAASM,EAASC,KAC3C,MAAM5qE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAC7C,IAAIxmG,EAASqkE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU6iC,GAC3C,MAAME,EAAU3iC,EAAAA,GAAAA,OAAeJ,EAAK,UAAW8iC,GAC/CZ,EAAkBliC,GAClB,MAAM5nC,EAAQ+pE,EAAmBniC,EAAK9nC,GAGtC,IAAIp0C,EAFJiY,EAAS9nD,KAAKguB,MAAM85B,GAGpB,MAAMinG,EAAmBD,EAAQpjI,cACjC,GAAIqjI,EAAiBx0J,SAAS,KAC5Bs1C,EAAMm/G,EAAAA,aAAAA,SACD,KAAID,EAAiBx0J,SAAS,KAGnC,OAAOsV,IAFPggC,EAAMm/G,EAAAA,aAAAA,KAGR,CAEA,MAAMz5H,GAAM05H,EAAAA,EAAAA,IAAsB9qE,EAAOr8B,EAAQjY,GACjD,OAAW,MAAPta,EACK1lB,IAGF0lB,CAAG,EAEZklG,YAAc1O,GAAQ,CAACuiC,EAASM,EAASC,KACvC,MAAM5qE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAC7C,IAAIxmG,EAASqkE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU6iC,GAC3C,MAAME,EAAU3iC,EAAAA,GAAAA,OAAeJ,EAAK,UAAW8iC,GAC/CZ,EAAkBliC,GAClB,MAAM5nC,EAAQ+pE,EAAmBniC,EAAK9nC,GAGtC,IAAIp0C,EAFJiY,EAAS9nD,KAAKguB,MAAM85B,GAGpB,MAAMinG,EAAmBD,EAAQpjI,cACjC,GAAIqjI,EAAiBx0J,SAAS,KAC5Bs1C,EAAMm/G,EAAAA,aAAAA,SACD,KAAID,EAAiBx0J,SAAS,KAGnC,OAAO,EAFPs1C,EAAMm/G,EAAAA,aAAAA,KAGR,CAEA,MAAMz5H,GAAM25H,EAAAA,EAAAA,IAAuB/qE,EAAOr8B,EAAQjY,GAClD,OAAW,MAAPta,EACK,EAGFA,CAAG,EAEZmlG,SAAW3O,GAAQ,CAACuiC,EAASM,KAC3B,MAAM3qE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GACvCxmG,EAASqkE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU6iC,GAC7CX,EAAkBliC,GAClB,MAAM5nC,EAAQ+pE,EAAmBniC,EAAK9nC,GAEtC,OADYy2C,EAAAA,EAAAA,IAASv2C,EAAOr8B,EAAQikE,EAAK,CAAC,GAC7B5nC,EAAMi2C,cAAgB,CAAC,EAEtCO,UAAY5O,GAAQ,CAACuiC,EAASM,KAC5B,MAAM3qE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GACvCxmG,EAASqkE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU6iC,GAC7CX,EAAkBliC,GAClB,MAAM5nC,EAAQ+pE,EAAmBniC,EAAK9nC,GAGtC,OAFY02C,EAAAA,EAAAA,IAAUx2C,EAAOr8B,EAAQikE,EAAK,CAAC,GAE9B5nC,EAAMk2C,cAAgB,CAAC,EAEtCO,SAAW7O,GAAQ,CAACuiC,EAASM,KAC3B,MAAM3qE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GACvCxmG,EAASqkE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU6iC,GAE7C,GADAX,EAAkBliC,GACM,IAApBrwH,EAAAA,GAAAA,UACEA,EAAAA,GAAAA,cAAqB,IAAM,EAC7B,MAAMywH,EAAAA,GAAAA,oBACJJ,EACA,2EAIN,MAAM5nC,EAAQ+pE,EAAmBniC,EAAK9nC,GAGtC,OAFYkrE,EAAAA,EAAAA,IAAWhrE,EAAOr8B,EAAQikE,EAAK,CAAC,GAE/B5nC,EAAMk2C,cAAgB,CAAC,EAEtCQ,UAAY9O,GAAQ,CAACuiC,EAASM,KAC5B,MAAM3qE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GACvCxmG,EAASqkE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU6iC,GAE7C,GADAX,EAAkBliC,GACM,IAApBrwH,EAAAA,GAAAA,UACEA,EAAAA,GAAAA,cAAqB,IAAM,EAC7B,MAAMywH,EAAAA,GAAAA,oBACJJ,EACA,2EAIN,MAAM5nC,EAAQ+pE,EAAmBniC,EAAK9nC,GAGtC,OAFY42C,EAAAA,EAAAA,IAAU12C,EAAOr8B,EAAQikE,EAAK,CAAC,GAE9B5nC,EAAMi2C,cAAgB,CAAC,EAEtCU,WAAa/O,GAAQ,CAACuiC,EAASM,EAASnO,EAAQpB,EAAO+P,KACrD,MAAMnrE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GACvCxmG,EAASqkE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU6iC,GACvC7wG,EAAQouE,EAAAA,GAAAA,OAAeJ,EAAK,QAAS00B,GACrCv+I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCxvG,EAAMs8E,EAAAA,GAAAA,OAAeJ,EAAK,MAAOqjC,GAEvC,GADAnB,EAAkBliC,GACM,IAApBrwH,EAAAA,GAAAA,UACEA,EAAAA,GAAAA,cAAqB,IAAM,EAC7B,MAAMywH,EAAAA,GAAAA,oBACJJ,EACA,2EAIN,MAAM5nC,EAAQ+pE,EAAmBniC,EAAK9nC,GAEtC,IAAIorE,EACAC,EACJ,MAAMC,EAAQrtJ,EAAKwpB,cACnB,GAAI6jI,EAAMh1J,SAAS,UAAYg1J,EAAMh1J,SAAS,OAC5C80J,EAAYG,EAAAA,UAAAA,cACP,GAAID,EAAMh1J,SAAS,UAAYg1J,EAAMh1J,SAAS,QACnD80J,EAAYG,EAAAA,UAAAA,eACP,GAAID,EAAMh1J,SAAS,SAAWg1J,EAAMh1J,SAAS,OAClD80J,EAAYG,EAAAA,UAAAA,YACP,KAAID,EAAMh1J,SAAS,UAAWg1J,EAAMh1J,SAAS,QAGlD,MAAM4xH,EAAAA,GAAAA,oBAA4BJ,EAAM,uBAAsB7pH,KAF9DmtJ,EAAYG,EAAAA,UAAAA,QAGd,CAEA,MAAMC,EAAO5/G,EAAInkB,cACjB,GAAI+jI,EAAKl1J,SAAS,KAChB+0J,EAAWN,EAAAA,aAAAA,SACN,KAAIS,EAAKl1J,SAAS,KAGvB,MAAM4xH,EAAAA,GAAAA,oBAA4BJ,EAAM,0BAAyBl8E,KAFjEy/G,EAAWN,EAAAA,aAAAA,KAGb,CAEA,OAAOl0B,EAAAA,EAAAA,IAAW32C,EAAOr8B,EAAQ/J,EAAOsxG,EAAWC,EAAUvjC,EAAI,EAEnEgP,YAAchP,GAAQ,CAACuiC,EAASM,EAASnO,EAAQpB,EAAO+P,KACtD,MAAMnrE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GACvCxmG,EAASqkE,EAAAA,GAAAA,OAAeJ,EAAK,SAAU6iC,GACvC7wG,EAAQouE,EAAAA,GAAAA,OAAeJ,EAAK,QAAS00B,GACrCv+I,EAAOiqH,EAAAA,GAAAA,OAAeJ,EAAK,OAAQszB,GACnCxvG,EAAMs8E,EAAAA,GAAAA,OAAeJ,EAAK,MAAOqjC,GAEvC,GADAnB,EAAkBliC,GACM,IAApBrwH,EAAAA,GAAAA,UACEA,EAAAA,GAAAA,cAAqB,IAAM,EAC7B,MAAMywH,EAAAA,GAAAA,oBACJJ,EACA,2EAIN,MAAM5nC,EAAQ+pE,EAAmBniC,EAAK9nC,GACtC,GAAInwE,MAAMg0C,IAAWh0C,MAAMiqC,GACzB,MAAMouE,EAAAA,GAAAA,oBACJJ,EACC,oDAAmDjkE,YAAiB/J,KAGzE,IAAIsxG,EACAC,EACJ,MAAMC,EAAQrtJ,EAAKwpB,cACnB,GAAI6jI,EAAMh1J,SAAS,UAAYg1J,EAAMh1J,SAAS,OAC5C80J,EAAYG,EAAAA,UAAAA,cACP,GAAID,EAAMh1J,SAAS,UAAYg1J,EAAMh1J,SAAS,QACnD80J,EAAYG,EAAAA,UAAAA,eACP,GAAID,EAAMh1J,SAAS,SAAWg1J,EAAMh1J,SAAS,OAClD80J,EAAYG,EAAAA,UAAAA,YACP,KAAID,EAAMh1J,SAAS,UAAWg1J,EAAMh1J,SAAS,QAGlD,MAAM4xH,EAAAA,GAAAA,oBAA4BJ,EAAM,uBAAsB7pH,KAF9DmtJ,EAAYG,EAAAA,UAAAA,QAGd,CAEA,MAAMC,EAAO5/G,EAAInkB,cACjB,GAAI+jI,EAAKl1J,SAAS,KAChB+0J,EAAWN,EAAAA,aAAAA,SACN,KAAIS,EAAKl1J,SAAS,KAGvB,MAAM4xH,EAAAA,GAAAA,oBAA4BJ,EAAM,0BAAyBl8E,KAFjEy/G,EAAWN,EAAAA,aAAAA,KAGb,CACA,MAAMvjJ,EAAS,CACb04E,MAAOA,EACPr8B,OAAQA,EACR/J,MAAOA,EACP77C,KAAMmtJ,EACNx/G,IAAKy/G,GAEP,OAAOv0B,EAAAA,EAAAA,IAAYtvH,EAAQsgH,EAAI,EAEjCiP,UAAYjP,GAAQ,KAElB,GADAkiC,EAAkBliC,GACM,IAApBrwH,EAAAA,GAAAA,UACEA,EAAAA,GAAAA,cAAqB,IAAM,EAC7B,MAAMywH,EAAAA,GAAAA,oBAA4BJ,EAAK,kEAI3C,MAAM2jC,EAAqB,CAAC,EAEtBC,EAAoBC,EAAAA,GAAAA,OAC1B,IAAK,MAAM3rE,KAAUvkF,OAAOmY,KAAK83I,GAAoB,CACnD,MAAME,EAAYF,EAAkB1rE,GACpC,GAAI4rE,EAAUrkJ,cAAgB81C,OAASuuG,EAAUn1J,OAAS,EAAG,CAC3Dg1J,EAAOzrE,GAAU,GACjB,IAAK,IAAI1nF,EAAI,EAAGA,EAAIszJ,EAAUn1J,SAAU6B,EACtCmzJ,EAAOzrE,GAAQx6E,KAAK,CAClBq+C,OAAQ+nG,EAAUtzJ,GAAGurD,OACrB/J,MAAO8xG,EAAUtzJ,GAAGwhD,MACpB77C,KAAM2tJ,EAAUtzJ,GAAG2F,KACnBwiC,SAAUmrH,EAAUtzJ,GAAGszC,KAG7B,CACF,CAEA,OAAO6/G,CAAM,EAEfz0B,cAAgBlP,GAASuiC,IACvB,MAAMrqE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAC7C,IAAK5yJ,EAAAA,GAAAA,gBACH,MAAMywH,EAAAA,GAAAA,oBAA4BJ,EAAK,iDAIzC,OAFcmiC,EAAmBniC,EAAK9nC,GAEzBuqD,GAAK,GAAG,EAEvBtT,YAAcnP,GAASuiC,IACrB,MAAMrqE,EAASkoC,EAAAA,GAAAA,OAAeJ,EAAK,SAAUuiC,GAC7C,IAAK5yJ,EAAAA,GAAAA,gBACH,MAAMywH,EAAAA,GAAAA,oBAA4BJ,EAAK,iDAEzC,MAAM5nC,EAAQ+pE,EAAmBniC,EAAK9nC,GAEtC,IAAI6rE,EAAW,GAEf,OADA3rE,EAAMpqF,EAAK+1J,GAAY3rE,EAAM4rE,QAAYD,GAAY3rE,EAAM4rE,QACpDD,EAAW,GAAG,EAEvB30B,qBAAuBpP,GAAQ,IACzBrwH,EAAAA,GAAAA,WACFywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uCAChB,GAGLrwH,EAAAA,GAAAA,OAAes0J,EAAAA,EAAAA,OACjB7jC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,kDAChB,IAGTrwH,EAAAA,GAAAA,WAAmB,EACnBA,EAAAA,GAAAA,WAAiBs0J,EAAAA,EAAAA,MAA4B,SAC7C7jC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,8BAChB,GAETqP,2BAA6BrP,GAAQ,KACnCkiC,EAAkBliC,GAEdrwH,EAAAA,GAAAA,iBACFywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,8CAChB,GAGLrwH,EAAAA,GAAAA,OAAeu0J,EAAAA,EAAAA,OACjB9jC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,yDAChB,IAGTrwH,EAAAA,GAAAA,iBAAyB,EACzBA,EAAAA,GAAAA,WAAiBu0J,EAAAA,EAAAA,MAA8B,SAC/C9jC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,sCAChB,IAETsP,mBAAqBtP,GAAQ,IACvBrwH,EAAAA,GAAAA,eACFywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,mCAChB,GAGLrwH,EAAAA,GAAAA,OAAew0J,EAAAA,EAAAA,OACjB/jC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,qDAChB,IAGTrwH,EAAAA,GAAAA,eAAuB,GACvBy0J,EAAAA,EAAAA,MACAz0J,EAAAA,GAAAA,WAAiBw0J,EAAAA,EAAAA,MAAyB,SAC1C/jC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,kCAChB,GAETuP,eAAiBvP,GAAQ,IACnBrwH,EAAAA,GAAAA,iBACFywH,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,+BAChB,GAGLrwH,EAAAA,GAAAA,OAAe00J,EAAAA,EAAAA,OACjBjkC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,iDAChB,IAGTrwH,EAAAA,GAAAA,iBAAyB,EACzBA,EAAAA,GAAAA,WAAiB00J,EAAAA,EAAAA,MAA4B,SAC7CjkC,EAAAA,GAAAA,IAAYJ,GAAK,IAAM,uBAChB,GAGb,6IC3YO,SAASkoB,IACd,MAAO,CACL9L,WAAY,IAAM,IACT,CAAC/9H,OAAOimJ,WAAYjmJ,OAAOkmJ,aAEpC3oB,SAAU,IAAM,KACP,IAAK7wI,EAAAA,EAAAA,QAGdgxI,UAAW,IAAM,KACR,IAAKhxI,EAAAA,EAAAA,SAGd8wI,SAAW7b,GAASwkC,KAElB59B,EAAAA,EAAAA,IAAiB5G,EAAK,WAAYwkC,EADyB,CAAC,GAE5D,MAAMC,EAAM,oDACNC,EAAe,IAAK35J,EAAAA,EAAAA,OACpB45J,EAAmB,GACzB,IAAK,MAAM11J,KAAO0E,OAAOmY,KAAK04I,GACvBE,EAAaz1J,GAGNw1J,EAAIjV,KAAKgV,EAASv1J,IAAQ,IAGpCy1J,EAAaz1J,GAAOu1J,EAASv1J,GAF7B01J,EAAOjnJ,KAAM,kBAAiBzO,OAASu1J,EAASv1J,MAFhD01J,EAAOjnJ,KAAM,gBAAezO,MAQV,IAAlB01J,EAAOh2J,QACTgF,OAAO4wE,OAAOx5E,EAAAA,EAAAA,MAAgB25J,GAC9BxwE,EAAAA,GAAAA,OACAksC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,4BAExBI,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,gCAA+B2kC,EAAO1nJ,KAAK,SACrE,EAGF++H,UAAYhc,GAAS4kC,KAEnBh+B,EAAAA,EAAAA,IAAiB5G,EAAK,YAAa4kC,EADiC,CAAC,GAErE,MAAMC,EAAgB,IAAK95J,EAAAA,EAAAA,QACrB45J,EAAmB,GACzB,IAAK,MAAM11J,KAAO0E,OAAOmY,KAAK84I,GACtBC,EAAsB51J,GAIzB41J,EAAsB51J,GAAO21J,EAAU31J,GAFxC01J,EAAOjnJ,KAAM,gBAAezO,MAMV,IAAlB01J,EAAOh2J,QACTgF,OAAO4wE,OAAOx5E,EAAAA,EAAAA,OAAiB85J,GAC/B3wE,EAAAA,GAAAA,OACAksC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,6BAExBI,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,iCAAgC2kC,EAAO1nJ,KAAK,SACtE,EAGF6+H,WAAa9b,GAAQ,KACnBj1H,EAAAA,EAAAA,MAAiB,IAAK+5J,EAAAA,GACtB5wE,EAAAA,GAAAA,OACAksC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,kCAAgC,EAG1Dic,YAAcjc,GAAQ,KACpBj1H,EAAAA,EAAAA,OAAkB,IAAKg6J,EAAAA,GACvB7wE,EAAAA,GAAAA,OACAksC,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,mCAAiC,EAG3Dkc,YAAa,IAAM,KAKA,CACf98C,QALc7sF,EAAAA,EAAAA,cAMdk7E,QALa4R,EAAAA,EAAAA,KAMb2lE,SALeppE,UAAUW,UAAU58D,cAAcnxB,SAAS,cAAgB,QAAU,YAWxF2tI,cAAgBnc,GAAQ,KACtBI,EAAAA,GAAAA,IAAYJ,GAAK,IAAO,sBACxBtkH,EAAAA,EAAAA,OAAgB,EAGtB,iDCtGA,MAAMupJ,EAAqB,aAAIC,GAAY,IAAI,KAAe,IAiBvD,SAASpjC,EAASqjC,GACvB,GAAiB,MAAbA,EAAmB,OAAO,KAC9B,MAZsBvpH,EAYFupH,IAVP,iBAANvpH,GACPjoC,OAAOojB,OAAO6kB,EAAG,eACjBjoC,OAAOojB,OAAO6kB,EAAG,WACjBjoC,OAAOojB,OAAO6kB,EAAG,WACjBjoC,OAAOojB,OAAO6kB,EAAG,UAOf,OAAOupH,EAbavpH,MAgBtB,GAAIjoC,OAAOojB,OAAOouI,EAAW,UAAgC,UAApBA,EAAUC,MAAmB,CACpE,MAAMC,EAAiB,GACjB12J,EAASs2J,EAAmBK,YAAYH,EAAW,UACzD,GAAsB,iBAAXx2J,EACT,IAAK,IAAI6B,EAAI,EAAGA,EAAI7B,EAAQ6B,IACtBy0J,EAAmBM,YAAYJ,EAAW30J,KAC5C60J,EAAI70J,GAAKsxH,EAASmjC,EAAmBK,YAAYH,EAAW30J,KAIlE,OAAO60J,CACT,CAAO,CAEL,MAAMx+B,EAA+B,CAAC,EACtC,IAAK,MAAM53H,KAAO0E,OAAOmY,KAAKq5I,EAAU1T,YAAa,CACnD,MAAMzwH,EAAMmkI,EAAU1T,WAAWxiJ,GACjC43H,EAAI53H,GAAO6yH,EAAS9gG,EACtB,CACA,OAAO6lG,CACT,CACF,4GCfO,MAAM2+B,EACFtpE,GACAupE,OAA8BvpE,GASnCwpE,EAAc,IAAI7qJ,IAClB8qJ,EAAU,IAAIC,sBAAsBC,IAAmB,WAElB1lJ,KAAd,QAAvB,EAAAulJ,EAAYvoJ,IAAI0oJ,UAAO,aAAvB,EAAyBC,UAC3BJ,EAAYrpJ,OAAOwpJ,EACrB,IAGK,SAASE,EAAQtpE,EAAgBnrF,GAEtC,OAAImrF,EAAOupE,MAEXvpE,EAAOupE,IAAMC,EAAqBxpE,EAAQnrF,EAAS,KAF5BmrF,EAAOupE,IAAIE,MAIpC,CAOA,SAASC,EAAkB1pE,EAAgB2pE,GACzC,IAAK3pE,EAAOupE,IAAK,MAAM,IAAIj1I,MAAO,oDAAmD0rE,EAAO/qF,aAC5F,GAAI00J,EAAUz3J,OAAQ,CACpB8tF,EAAO4pE,WAAWziH,IAAIwiH,EAAUA,EAAUz3J,OAAS,IACnD,IAAK,MAAM23J,KAAaF,EAAWE,EAAU7+B,aAAalsH,IAAIkhF,EAAOupE,IAAI9pE,IAAKO,EAChF,CAGAA,EAAOgrC,aAAalsH,IAAIkhF,EAAOupE,IAAI9pE,IAAKO,EAC1C,CAOA,SAASwpE,EAAqBxpE,EAAgBnrF,EAAsC80J,GAAmC,MAErH,GAAI3pE,EAAOupE,IAET,OADAG,EAAkB1pE,EAAQ2pE,GACnB3pE,EAAOupE,IAIhB,MAAMO,GAAMnrJ,EAAAA,EAAAA,IAAMqhF,EAAOC,KAAM,CAAE8pE,WAAY,SAAUC,YAAa,SAAUC,QAAQ,IAMhFC,EAA4B,GAElCC,EAAAA,GAAYL,EAAK,CACfM,kBAAkB3xI,GAEXA,EAAK42H,QACV6a,EAAYjpJ,KAAK,CACfhM,SAAUwjB,EAAK42H,OAAO1vI,MACtBglB,MAAOlM,EAAK42H,OAAOgb,MAAM,GAAK,EAC9B/c,IAAK70H,EAAK42H,OAAOgb,MAAM,GAAK,GAEhC,EACAC,uBAAuB7xI,GAChBA,EAAK42H,QACV6a,EAAYjpJ,KAAK,CACfhM,SAAUwjB,EAAK42H,OAAO1vI,MACtBglB,MAAOlM,EAAK42H,OAAOgb,MAAM,GAAK,EAC9B/c,IAAK70H,EAAK42H,OAAOgb,MAAM,GAAK,GAEhC,EACAE,qBAAqB9xI,GACdA,EAAK42H,QACV6a,EAAYjpJ,KAAK,CACfhM,SAAUwjB,EAAK42H,OAAO1vI,MACtBglB,MAAOlM,EAAK42H,OAAOgb,MAAM,GAAK,EAC9B/c,IAAK70H,EAAK42H,OAAOgb,MAAM,GAAK,GAEhC,IAIFH,EAAY74J,MAAK,CAACC,EAAGC,IAAMA,EAAEozB,MAAQrzB,EAAEqzB,QACvC,IAAI6lI,EAAUxqE,EAAOC,KAErB,IAAK,MAAMxnE,KAAQyxI,EAAa,CAC9B,MAAMj1J,GAAWi4F,EAAAA,EAAAA,IAAsBz0E,EAAKxjB,SAAU2I,EAAAA,GAAM,OAC5D,IAAK3I,EAAU,MAAM,IAAIqf,MAAO,2BAA0BmE,EAAKxjB,YAG/D,MAAMw1J,EAAiB51J,EAAQ6L,IAAIzL,GAC9Bw1J,IAELd,EAAU1oJ,KAAK++E,GACfyqE,EAAelB,IAAMC,EAAqBiB,EAAgB51J,EAAS80J,GACnEA,EAAUvtI,MACVouI,EAAUA,EAAQ99G,UAAU,EAAGj0B,EAAKkM,OAAS8lI,EAAelB,IAAI9pE,IAAM+qE,EAAQ99G,UAAUj0B,EAAK60H,KAC/F,CAEA,MAAMod,EAAoC,QAA3B,EAAGzB,EAAYvoJ,IAAI8pJ,UAAQ,aAAxB,EAA0BnB,QAC5C,GAAIqB,EACF1qE,EAAOupE,IAAMmB,MACR,CAML,MAAMC,EAAeH,EAAW,mBAAkBxqE,EAAO18C,UAAU08C,EAAO/qF,WAEpEwqF,EAAMmrE,IAAIC,gBAtIX,IAAIlyE,KAAK,CAsIiCgyE,GAtIzB,CAAEjxJ,KAAM,qBAuIxB+vJ,EAASV,EAAgBtpE,GAAKyC,OAAOz5E,IAIzC,MAHAu3E,EAAO8qE,mBACPnkJ,QAAQC,MAAO,8CAA6Co5E,EAAO/qF,eAAe+qF,EAAO18C,WACzF38B,QAAQC,MAAM6B,GACRA,CAAC,IAMTmiJ,IAAIG,gBAAgBtrE,GACpBO,EAAOupE,IAAM,IAAIyB,EAAAA,EAAavrE,EAAKgqE,GACnCR,EAAYnqJ,IAAI0rJ,EAAS,IAAIS,QAAQjrE,EAAOupE,MAC5CL,EAAQgC,SAASlrE,EAAOupE,IAAKiB,EAC/B,CAGA,OADAd,EAAkB1pE,EAAQ2pE,GACnB3pE,EAAOupE,GAChB,uHCnKA,MAAM4B,EAAgB,iBAMf,SAASC,EAAQr8I,GACtB,IAAIs8I,EAAOC,EAAAA,GAAAA,IAAmBv8I,GAC9B,OAAIs8I,IACJA,EAAO,IAAIE,EACXD,EAAAA,GAAAA,IAAmBv8I,EAAGs8I,GACfA,EACT,CAEO,MAAME,EACXv6J,KAAmB,GACnBw6J,UAAwB,GAEnB,SAAS9Y,EAAW3jI,GACzB,MAAO,CACLq1H,MAAQzkI,GAAmB6kI,EAAUz1H,EAAGpP,GACxC8rJ,SAAW9rJ,GAAmB0kI,EAAat1H,EAAGpP,GAC9C2kI,KAAM,IAAMG,EAAS11H,GACrBw1H,KAAM,IAAMiO,EAASzjI,GACrB28I,UAAW,IA+Cf,SAAuB38I,GACrB,MAAM,UAAEy8I,GAAcJ,EAAQr8I,GAC9B,OAAO,IAAI02B,SAAe1Y,GAAQy+H,EAAUvqJ,KAAK8rB,IACnD,CAlDqB4+H,CAAc58I,GAC/B68I,KAAM,IAmDV,SAAoB78I,GAClB,MAAMs8I,EAAOC,EAAAA,GAAAA,IAAmBv8I,GAChC,QAAKs8I,GACEA,EAAKr6J,KAAKkB,QAAU5D,EAAAA,EAAAA,eAC7B,CAvDgBu9J,CAAW98I,GACvB+8I,MAAO,IAwDX,SAAqB/8I,GACnB,MAAMs8I,EAAOC,EAAAA,GAAAA,IAAmBv8I,GAChC,OAAKs8I,GACuB,IAArBA,EAAKr6J,KAAKkB,MACnB,CA5DiB65J,CAAYh9I,GACzBvQ,MAAO,IAAMgoI,EAAUz3H,GAE3B,CAEO,SAASy1H,EAAUz1H,EAAepP,GACvC,GAAqB,iBAAVA,GAAuC,iBAAVA,EACtC,MAAM,IAAI2U,MACP,0CAAyC3U,4DAG9C,MAAM,KAAE3O,EAAI,UAAEw6J,GAAcJ,EAAQr8I,GAEpC,IADA/d,EAAKiQ,KAAKtB,GACH6rJ,EAAUt5J,OAAS,GAAG,CAAF,MAAiB,QAAf,EAAAs5J,EAAUpvI,aAAK,OAAf,GAAoB,CACjD,OAAIprB,EAAKkB,OAAS5D,EAAAA,EAAAA,gBAAiC0C,EAAKwxB,QACjD,IACT,CAEO,SAAS6hH,EAAat1H,EAAepP,GAC1C,GAAoB,iBAATA,GAAqC,iBAATA,EACrC,MAAM,IAAI2U,MACP,0CAAyC3U,4DAG9C,MAAM,KAAE3O,EAAI,UAAEw6J,GAAcJ,EAAQr8I,GACpC,GAAI/d,EAAKkB,QAAU5D,EAAAA,EAAAA,gBAA0B,OAAO,EAEpD,IADA0C,EAAKiQ,KAAKtB,GACH6rJ,EAAUt5J,OAAS,GAAG,CAAF,MAAiB,QAAf,EAAAs5J,EAAUpvI,aAAK,OAAf,GAAoB,CACjD,OAAO,CACT,CAEO,SAASqoH,EAAS11H,GACvB,MAAMs8I,EAAOC,EAAAA,GAAAA,IAAmBv8I,GAChC,IAAKs8I,IAASA,EAAKr6J,KAAKkB,OAAQ,OAAOi5J,EACvC,MAAMa,EAAYX,EAAKr6J,KAAKwxB,QAE5B,OADK6oI,EAAKr6J,KAAKkB,QAAWm5J,EAAKG,UAAUt5J,QAAQo5J,EAAAA,GAAAA,OAAsBv8I,GAChEi9I,CACT,CAEO,SAASxZ,EAASzjI,GACvB,MAAMs8I,EAAOC,EAAAA,GAAAA,IAAmBv8I,GAChC,OAAKs8I,GAASA,EAAKr6J,KAAKkB,OACjBm5J,EAAKr6J,KAAK,GADsBm6J,CAEzC,CAmBO,SAAS3kB,EAAUz3H,GACxB,MAAMs8I,EAAOC,EAAAA,GAAAA,IAAmBv8I,GAC3Bs8I,IACAA,EAAKG,UAAUt5J,QAAQo5J,EAAAA,GAAAA,OAAsBv8I,GAClDs8I,EAAKr6J,KAAKkB,OAAS,EACrB,qXC9DO,MAAMo5J,EAAiB,IAAIltJ,IAE3B,SAAS6tJ,IACd,IAAK,MAAM1pC,KAAMhtH,EAAAA,EAAAA,UACfywH,EAAAA,EAAAA,GAAiBzD,GAGnB+oC,EAAe9sJ,OACjB,CAEAgnC,eAAe0mH,EAAsB3+H,GACnC,MAAM14B,EAAU04B,EAAao5F,YAAY9xH,QACnCmrF,EAASzyD,EAAa+8G,YAC5B,IAAKtqD,EAAQ,KAAM,wDACnB,MAAMwiC,EAAKj1F,EAAau4F,IAAIpB,KAC5B,IAAKlC,EAAI,KAAO,GAAExiC,EAAO/qF,iFAEzB,MAAMk3J,QAAqB7C,EAAAA,EAAAA,GAAQtpE,EAAQnrF,GAE3C,IAAKs3J,EAAc,KAAO,GAAEnsE,EAAO/qF,8DAEnC,GAAiC,mBAAtBk3J,EAAaC,KACtB,KAAO,GAAEpsE,EAAO/qF,yEACZk3J,EAAaC,KAAK5pC,EAC1B,CAEAh9E,eAAe6mH,EAAsB9+H,GACnC,MAAM0yD,EAAO1yD,EAAa0yD,KAC1B,IAAIqsE,EAGAC,EAAiBC,EACrB,IACE,MAAMC,EA8DV,SAAkCxsE,EAAc1yD,GAE9C,MAAMu8H,GAAYnrJ,EAAAA,EAAAA,IAAMshF,EAAM,CAC5B+pE,YAAa,EACb0C,eAAe,EACf3C,WAAY,WAGRzmH,EAAS/V,EAAao5F,YAC5B,GAAc,MAAVrjF,EACF,MAAM,IAAIhvB,MAAM,sDAOlB,IAAIq4I,EAAgB,GAChBC,GAAa,EA0EjB,IAvEAC,EAAAA,EAAAA,IAAW/C,EAAK,CACdM,kBAAoB3xI,IAClBm0I,GAAa,EACb,MAAME,GAAa5/D,EAAAA,EAAAA,IAAsBz0E,EAAK42H,OAAO1vI,MAAO/B,EAAAA,GAAM,WAClE,IAAKkvJ,EAAY,MAAM,IAAIx4I,MAAM,wCAA0Cw4I,GAC3E,MAAM9sE,EAbV,SAAmB8sE,GACjB,OAAOxpH,EAAOzuC,QAAQ6L,IAAIosJ,IAAe,IAC3C,CAWmBxiB,CAAUwiB,GACzB,IAAK9sE,EAAQ,MAAM,IAAI1rE,MAAM,4CAA8Cw4I,GAC3E,MAAMC,GAAYpuJ,EAAAA,EAAAA,IAAMqhF,EAAOC,KAAM,CACnC+pE,YAAa,EACb0C,eAAe,EACf3C,WAAY,WAGd,GAA+B,IAA3BtxI,EAAKu0I,WAAW96J,QAA4C,6BAA5BumB,EAAKu0I,WAAW,GAAGtzJ,KAAqC,CAE1F,MAAMuzJ,EAAYx0I,EAAKu0I,WAAW,GAAGE,MAAMz4J,KACrC04J,EAAoB,GACpBC,EAAyB,IAC/BP,EAAAA,EAAAA,IAAWE,EAAW,CACpBM,oBAAsB50I,IACpB00I,EAAQlsJ,KAAKwX,EAAKnb,GAAG7I,MACrB24J,EAAensJ,KAAKwX,EAAK,IAK7Bk0I,GAAkB,OAAMM,gCAGxBG,EAAe7kJ,SAASg7B,IACtBopH,IAAiB/nH,EAAAA,EAAAA,IAASrB,GAC1BopH,GAAiB,IAAI,IAIvBQ,EAAQ5kJ,SAASi4F,IACfmsD,GAAiB,aAAensD,EAAS,MAAQA,EACjDmsD,GAAiB,IAAI,IAIvBA,GAAkB,MAAKM,mCACzB,KAAO,CAIL,MAAMK,EAAwB,GAC9B70I,EAAKu0I,WAAWzkJ,SAASE,IACvB6kJ,EAAYrsJ,KAAKwH,EAAEykJ,MAAMz4J,KAAK,IAIhC,MAAM24J,EAAyB,IAC/BP,EAAAA,EAAAA,IAAWE,EAAW,CACpBM,oBAAsB50I,IAChB60I,EAAYv7J,SAAS0mB,EAAKnb,GAAG7I,OAC/B24J,EAAensJ,KAAKwX,EACtB,IAKJ20I,EAAe7kJ,SAASg7B,IACtBopH,IAAiB/nH,EAAAA,EAAAA,IAASrB,GAC1BopH,GAAiB,IAAI,GAEzB,MAKCC,EACH,MAAO,CAAE3sE,KAAMA,EAAMstE,WAAY,GAInC,IAAIC,EAAe,EACnB,GAAiB,YAAb1D,EAAIpwJ,MAAkC,MAAZowJ,EAAI2D,KAChC,MAAM,IAAIn5I,MAAM,qCAElB,IAAK,IAAIvgB,EAAI+1J,EAAI2D,KAAKv7J,OAAS,EAAG6B,GAAK,IAAKA,EACjB,sBAArB+1J,EAAI2D,KAAK15J,GAAG2F,OACdowJ,EAAI2D,KAAK7sJ,OAAO7M,EAAG,KACjBy5J,GAKN,MAAMD,GAAcZ,EAAcptJ,MAAM,QAAU,IAAIrN,OAASs7J,EAG/DvtE,GAAOr7C,EAAAA,EAAAA,IAASklH,GAShB,MAJY,CACV7pE,KAHFA,EAAO0sE,EAAgB1sE,EAIrBstE,WAAYA,EAGhB,CAxLgCG,CAAyBztE,EAAM1yD,GAC3Dg/H,EAAkBE,EAAoBxsE,KACtCusE,EAAiBC,EAAoBc,UAGvC,CAFE,MAAO9kJ,GACP,KAAO,+BAA8B8kB,EAAa94B,QAAQ84B,EAAa8W,gBAAgB57B,GACzF,CAIA,MAAMklJ,GAAY1X,EAAAA,EAAAA,GAAmB1oH,GA0BrC,IAAIqgI,EACJ,IACEA,EAAc,IAAInF,EAAAA,EAAY8D,GA3BhC,SAASsB,EAAa7zI,EAAkB8zI,GAAuD,IAApCC,EAAU,UAAH,6CAAGJ,EACnE,IAAK,MAAOl5J,EAAMjD,KAAU0F,OAAO2H,QAAQkvJ,GACzC,GAAqB,mBAAVv8J,EAAsB,CAC/B,MAAMw8J,EAAUxoH,iBACd,IAAI,2BADoBliB,EAAI,yBAAJA,EAAI,gBAG1B,MAAMitE,EAAWjtE,EAAKlH,MAChBud,QAAenoC,KAAS8xB,EAAKryB,KAAKk0H,GAAQnrG,EAAIi0I,eAAe9oC,MACnE,OAAO50B,EAASv2E,EAAIk0I,eAAev0H,GAGrC,CAFE,MAAOlxB,GACP6jJ,EAAe7jJ,CACjB,CACF,EACAuR,EAAIm0I,YAAYL,EAAUr5J,EAAMulB,EAAIo0I,oBAAoBJ,GAC1D,MAAWl1G,MAAMyK,QAAQ/xD,IAA2B,iBAAVA,EAExCwoB,EAAIm0I,YAAYL,EAAUr5J,EAAMulB,EAAIk0I,eAAe18J,KAGnDwoB,EAAIm0I,YAAYL,EAAUr5J,EAAMulB,EAAIk0I,eAAe,CAAC,IACpDL,EAAa7zI,EAAM8zI,EAAyB9Y,WAAWvgJ,GAAOs5J,EAAQt5J,IAG5E,GAI+D+3J,EAG/D,CAFE,MAAO/jJ,GACP,KAAO,mBAAkB8kB,EAAa94B,QAAQ84B,EAAa8W,gBAAgBvtB,OAAOrO,IACpF,CAEA,IAAI4lJ,GAAO,EACX,KAAOA,GAAM,CACX,GAAI/B,EAAc,MAAMA,EACxB,GAAI/+H,EAAau4F,IAAItB,SAAU,OAC/B,IAAK,IAAIzwH,EAAI,EAAGs6J,GAAQt6J,EAAI,EAAGA,IAAKs6J,EAAOT,EAAYzlJ,OACnDkmJ,SAAY,IAAI5oH,SAAS3oB,GAAM2hB,WAAW3hB,EAAGxuB,EAAAA,EAAAA,yBACnD,CACF,CA8IO,SAAS2zJ,EAAkBn5B,EAA8BxlF,EAAoBt2B,GAClF,OAAIs2B,EAAOe,WAAaykF,EAAcxlF,QAEpC38B,QAAQC,MACL,yDAAwD08B,EAAOe,4CAA4CykF,EAAcxlF,UAErH,GAsBX,SAAkC6mG,EAAiC7mG,EAAoBt2B,GACrF,MAAMzW,GAAWu0I,EAAAA,EAAAA,GAAWX,EAAiB5zI,SAAW4zI,EAAiB/+D,SACnEkjF,EAAehrH,EAAOztC,OAASytC,EAAOwhE,QAE5C,GAAIvuG,EAAW+3J,EAAe,KAQ5B,OAPAC,EACG,gCAA+BpkB,EAAiBl1I,uBAAsBk0H,EAAAA,EAAAA,GACrEghB,EAAiB7mH,kBACN8pE,EAAAA,EAAAA,IAAU72F,qBAA2B62F,EAAAA,EAAAA,IAAUkhE,gUAIvD,EAIT,MAAMtnC,GAAM4F,EAAAA,EAAAA,KACZ,IAAa,IAAT5F,EAKF,OAJAunC,EACG,yHAGI,EAGTjrH,EAAOshE,eAAckmC,EAAAA,EAAAA,GAAWxnG,EAAOwhE,QAAUvuG,IAIjD,MAAMg3B,EAAe,IAAIu9F,EAAAA,EAAaqf,EAAkBnjB,EAAKivB,EAAAA,GAuB7D,OApBA1gJ,EAAAA,EAAAA,IAAkByxH,EAAKz5F,IAGtBA,EAAa94B,KAAKS,SAAS,OAASg3J,EAAwBG,GAAuB9+H,GAGjF00D,MAAK,WAEAj1E,IAAWA,EAAO84G,IAAItB,WACxBx3G,EAAO24G,UAAUsC,iBAAmBkiB,EAAiBliB,gBACrDj7G,EAAO24G,UAAUoC,iBAAmBoiB,EAAiBpiB,kBAEvD/B,EAAAA,EAAAA,GAAiBz4F,GACjBA,EAAa1L,IAAI,IAAI,IAAM,2BAC7B,IACCqgE,OAAM,SAAUz5E,IACf2jH,EAAAA,EAAAA,IAAmB3jH,EAAG8kB,GACtBA,EAAa1L,IAAI,IAAI,IAAOpZ,aAAas9G,EAAAA,EAAc,iBAAmB,qCAC1EC,EAAAA,EAAAA,GAAiBz4F,EACnB,KACK,CACT,CAzEMihI,CAAyB1lC,EAAexlF,EAAQt2B,IAGlDs2B,EAAOmrH,UAAU3lC,GAIVA,EAAc9B,KAGhB,CACT,CAiEO,SAAS0nC,IAA6C,IAArB3rI,EAAY,UAAH,6CAAG,EAClD,MAAMgD,EAAQhD,EAAYjtB,EAAAA,EAAAA,cAA2B,IACrD,IAAK,MAAMysH,KAAMhtH,EAAAA,EAAAA,SACfgtH,EAAGoD,UAAUgE,mBAAqB5jG,CAEtC,CAKA,SAASwoI,EAAc3hI,GACrB6R,YAAW,KAAMj4B,EAAAA,EAAAA,GAAgBomB,IAAM,EACzC,CAEA,SAAS+hI,EAAerrH,GACtB,MAAMhgB,GAAOypE,EAAAA,EAAAA,IAAaz+F,EAAAA,EAAAA,gBAC1B,GAAoB,IAAhBg1B,EAAKpxB,OAAc,OAAO,KAE9B,MAAM86F,EAAMl2E,OAAOwM,EAAK,IAClB2pE,GAAaC,EAAAA,EAAAA,IAAsBF,GACzC,IAAKC,EAGH,OAFAshE,EAAe,oCAChBvhE,2DACQ,KAET,MAAMhN,EAAS18C,EAAOzuC,QAAQ6L,IAAIusF,GAClC,IAAKjN,EAGH,OAFAuuE,EAAe,oCAChBvhE,sBACQ,KAET,MAAMz2F,EAAWypF,EAAOQ,YAAYl9C,EAAOzuC,SAC3C,GAAiB,OAAb0B,EAGF,OAFAg4J,EAAe,oCAChBvhE,kBACQ,KAET1pE,EAAKd,QACL,MAAMkoH,EAAK,IAAIsX,EAAAA,EAAchiE,EAAQzpF,EAAU+sB,GAE/C,OADAonH,EAAG5gB,WAAY,EACR4gB,CACT,CAMO,SAASkkB,IACd,MAAMC,EAAiBjtJ,OAAOxM,SAASC,KAAK6tB,cAAcnxB,SAAS,cAC/D88J,IACF5vJ,EAAAA,EAAAA,KAAc,iDACd0H,QAAQxD,KAAK,oDAEf,IAAK,MAAMmgC,KAAU7tC,EAAAA,EAAAA,MAAiB,CAEpC6tC,EAAOwhE,QAAU,EAEjB,MAAMgqD,EAASxrH,EAAOyrH,aAEtB,GADAzrH,EAAOyrH,kBAAerrJ,GAClBmrJ,GAAmBC,EAAvB,CAIA,GAAwB,SAApBxrH,EAAOe,SAAqB,CAE9B,MAAMykF,EAAgB6lC,EAAerrH,GACjCwlF,GACFgmC,EAAOjlB,QAAQ/gB,EAEnB,CACA,IAAK,MAAMA,KAAiBgmC,EAC1B7M,EAAkBn5B,EAAexlF,IACjC0rH,EAAAA,EAAAA,IAAiClmC,EAVnC,CAYF,CACF,CAGO,SAAS+lB,EACdzjB,EACAihB,EACAplB,EACA3jG,EACAiK,EACAohH,GAEA,MAAM3uD,EAASqsD,EAAKx3I,QAAQ6L,IAAIumH,GAChC,IAAKjnC,EAEH,OADAzyD,EAAa1L,IAAIupG,GAAQ,IAAO,0BAAyBnE,UAAmBolB,EAAKhoG,cAC1E,EAIT,GACEsqG,EAAQhkB,mBAMF,QALN1B,EAAAA,EAAAA,IACE,CAAE17F,eAAci2F,SAAU,sBAAuBF,aAAc,gCAC/D2D,EACAolB,EAAKhoG,SACL/gB,GAIF,OADAiK,EAAa1L,IAAIupG,GAAQ,IAAO,IAAGnE,6BAAsColB,EAAKhoG,cACvE,EAGT,MAAM4qH,EAAiBtgB,EAAQ9jB,aAAe7qC,EAAOQ,YAAY6rD,EAAKx3I,SACtE,IAAKo6J,EAEH,OADA1hI,EAAa1L,IAAIupG,GAAQ,IAAO,yCAAwCnE,MACjE,EAIT,IAAKolB,EAAK9yD,eAER,OADAhsD,EAAa1L,IAAIupG,GAAQ,IAAO,mCAAkCihB,EAAKhoG,cAChE,EAQT,GAJiB4qH,EAAiBtgB,EAAQvjE,QAGrBihE,EAAKx2I,OAASw2I,EAAKvnC,QACV,KAM5B,OALAv3E,EAAa1L,IACXupG,GACA,IACG,sBAAqBnE,SAAkB0nB,EAAQvjE,gBAAgBihE,EAAKhoG,yDAElE,EAGT9W,EAAa1L,IACXupG,GACA,IAAO,IAAGnE,UAAmBolB,EAAKhoG,kBAAkBsqG,EAAQvjE,8BAA6B+9C,EAAAA,EAAAA,GAAc7lG,QAEzG,MAAM6mH,EAAmB,IAAI6X,EAAAA,EAAchiE,EAAQivE,EAAgB3rI,GAInE,OAHA6mH,EAAiB/+D,QAAUujE,EAAQvjE,QACnC++D,EAAiBrgB,UAAY6kB,EAAQ7kB,UAE9Bm4B,EAAkB9X,EAAkBkC,EAAM9+G,EACnD,0ECreO,IAAI2hI,EAAa,EAEjB,SAAS3hB,EAAaniE,GAE3B,OADA8jF,GAAc9jF,EACP,IAAO8jF,GAAc9jF,CAC9B,CAEO,SAASqiE,IACd,OAAO0hB,EAAAA,EAAAA,GAAID,EACb,gCCXO,SAASzhB,EAAmBllE,GACjC,MAAM1kE,EAAI,EAAIrM,KAAKqqB,IAAI0mD,GAAS,GAChC,OAAIj9D,MAAMzH,KAAOq5C,SAASr5C,GAAW,EAC9BA,CACT,gDCWO,SAAUu4E,EAAgB94C,SACxBA,EAAOzuC,cACPyuC,EAAO6sG,SAChB,wFCVO,SAASW,EAAqB7rG,GACnC,OAAOA,EAAK/vC,SAAS,OACvB,CAGO,SAASqvC,EAAwBU,GAA0E,IAA5Dn6B,EAAO,UAAH,6CAAG,GAC3D,MAAM6uB,GAAS6lD,EAAAA,EAAAA,IAAgBv6C,EAAMn6B,GACrC,OAAO6uB,GAAUm3G,EAAqBn3G,GAAUA,EAAS,IAC3D,oJCDO,MAAM/7B,EAAO,GAePwxJ,EAAqB,MAAItc,EAAAA,EAAAA,cAHZ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAGnBtyI,KAAK,QAG7D6uJ,EAAwB,oBAAmBD,WAGlDE,EAAsB,IAAIrkC,OAAOokC,EAAuB,KAEvD,SAASE,EAAgBtqH,GAC9B,OAAOqqH,EAAoBvc,KAAK9tG,EAClC,CAGA,MAAMuqH,EAAgB,oBACf,SAASC,EAAexqH,GAC7B,OAAQuqH,EAAczc,KAAK9tG,EAC7B,CAKO,SAASyqH,EAAiBzqH,GAA6C,IAA/Bn6B,EAAO,UAAH,6CAAGlN,EAQpD,OANIqnC,EAAK7hB,WAAW,OAClBtY,EAAOlN,EACPqnC,EAAOA,EAAKyH,UAAU,IAGpBzH,IAASA,EAAK/vC,SAAS,OAAM+vC,GAAc,KAC1CsqH,EAAgBtqH,GACd0qH,EAA0B1qH,EAAMn6B,GADJ,IAErC,CAGO,SAAS6kJ,EAA0BC,EAA0BC,GAClE,IAAKD,EAAU,OAAOC,EACtB,MAAMC,EAAgBF,EAASrvJ,MAAM,WAC/BwvJ,EAAgBF,EAAStvJ,MAAM,WAAWhQ,OAAO0jH,SACvD,KAAO67C,EAAc59J,QAAQ,CAE3B,MAAM89J,EAAUF,EAActtI,QAC9B,OAAQwtI,GACN,IAAK,KACH,MACF,IAAK,MACH,IAAKD,EAAc79J,OAAQ,OAAO,KAClC69J,EAAc3zI,MACd,MACF,QACE2zI,EAAc9uJ,KAAK+uJ,GAEzB,CACA,OAAOD,EAAcvvJ,KAAK,GAC5B,CAGO,SAASyvJ,EAAwBC,EAAsB5sH,GAC5D,IAAK,MAAM6sH,KAAkB7sH,EAAOzuC,QAAQwa,OAAQ,GAAI8gJ,EAAe/sI,WAAW8sI,GAAY,OAAO,EACrG,IAAK,MAAME,KAAgB9sH,EAAO6sG,UAAU9gI,OAAQ,GAAI+gJ,EAAahtI,WAAW8sI,GAAY,OAAO,EACnG,OAAO,CACT,CAGO,SAASG,EAAwBprH,GACtC,MAAMqrH,EAAkBrrH,EAAK1jB,QAAQ,KACrC,OAAyB,IAArB+uI,EAA+B,KAC5BrrH,EAAKyH,UAAU,EAAG4jH,EAAkB,EAC7C,CAEO,SAASC,EAAkBjtH,GAChC,MAAMktH,EAAS,IAAIt1H,IAAI,CAACt9B,IACxB,SAAS6yJ,EAAKxrH,GACZ,MAAMyrH,EAAiBzrH,EAAK+mF,YAAY,IAAK/mF,EAAK/yC,OAAS,GAC3D,IAAwB,IAApBw+J,EAAuB,OAC3B,MAAMC,EAAS1rH,EAAKyH,UAAU,EAAGgkH,EAAiB,GAC9CF,EAAOxwJ,IAAI2wJ,KACfH,EAAOrpH,IAAIwpH,GACXF,EAAKE,GACP,CACA,IAAK,MAAO17J,KAAamnF,EAAAA,EAAAA,GAAgB94C,GAASmtH,EAAKx7J,GACvD,OAAOu7J,CACT,CAGA,IAAKjB,EAAgB3xJ,KAAU6xJ,EAAe7xJ,GAAO,MAAM,IAAI0W,MAAM,uIC3FrE,MAAMs8I,EAAuB,WAAUxB,EAAAA,SAAwBA,EAAAA,QAGzDyB,EAAqB,IAAI5lC,OAAOokC,EAAAA,GAAuBuB,GAKtD,SAASE,EAAW7rH,GACzB,OAAO4rH,EAAmB9d,KAAK9tG,EACjC,CAEO,SAAS+0E,EAA6Bz3F,GAC3C,GAAIuuI,EAAWvuI,KAAUktI,EAAAA,EAAAA,IAAeltI,GAAQ,OAAOA,EACvD,MAAM,IAAIjO,MAAO,GAAEiO,sCACrB,CAEO,SAASwuI,EAAyC9rH,GACvD,MAAMtgB,EAAQsgB,EAAK+mF,YAAY,KAAO,EACtC,OAAO/mF,EAAKyH,UAAU/nB,EACxB,CAGA,SAASqsI,EAAa/rH,GACpB,MAAMtL,EAASk3H,EAAmBl0C,KAAK13E,GACvC,OAAOtL,EAASA,EAAOs3H,OAAS,IAClC,CAKO,SAASzxE,EAAgBv6C,GAAkE,IAApDn6B,EAAO,UAAH,6CAAG,GACnD,IAAI2kJ,EAAAA,EAAAA,IAAexqH,GAGjB,OAFIA,EAAK7hB,WAAW,OAAM6hB,EAAOA,EAAKyH,UAAU,IAEzCokH,EAAW7rH,GAASA,EAAoB,KAGjDn6B,EAAOomJ,EAAiBpmJ,GACxB,MAAMqmJ,EAAYH,EAAa/rH,GAC/B,IAAKksH,EAAW,OAAO,KACvB,MAAMjB,GAAYP,EAAAA,EAAAA,IAA0BwB,EAAUjB,UAAWplJ,GAEjE,OAAqB,OAAdolJ,EAAqB,KAAOkB,EAAYlB,EAAWiB,EAAUh1E,KACtE,CAGA,SAAS+0E,EAAiBjsH,GACxB,OAAOA,EAAKtxC,QAAQ,gBAAiB,GACvC,CAEO,SAASy9J,EAAgClB,EAAsB/zE,GAEpE,OAAQ+zE,EAAY/zE,CACtB,CAEO,SAASk1E,EAAwBnB,EAAsBjrH,GAC5D,OAAKA,EAAK7hB,WAAW8sI,GACdjrH,EAAKyH,UAAUwjH,EAAUh+J,QADQ,IAE1C,2ECzEO,SAASo/J,EAAkB1e,EAAiBtvG,GAAuD,IAAnCiuH,EAAa,UAAH,6CAAG3zJ,EAAAA,GAClF,MAAM3M,EAAsB,IAAImN,IAE5Bw0I,EAAQxvH,WAAW,OACrBmuI,EAAa3zJ,EAAAA,GACbg1I,EAAUA,EAAQlmG,UAAU,IAG9BkmG,EAAU2e,EAAa3e,EAMvB,MAAM4e,EAAgB,IAAIt2H,IAAI,CAAC,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAClF03G,EAAUA,EACPryI,MAAM,IACNtP,KAAKo8G,GACS,MAATA,EAAqB,KACZ,MAATA,EAAqB,IACrBmkD,EAAcxxJ,IAAIqtG,GAAc,KAAOA,EACpCA,IAER7sG,KAAK,IACR,MAAMixJ,EAAQ,IAAIxmC,OAAQ,IAAG2nB,MAE7B,IAAK,MAAO3tG,EAAMk3C,KAASC,EAAAA,EAAAA,GAAgB94C,GACrCmuH,EAAM1e,KAAK9tG,IAAOh0C,EAAI6N,IAAImmC,EAAMk3C,GAEtC,OAAOlrF,CACT,qFC/BO,SAASygK,EAAoBzsH,GAClC,GAAIA,EAAK/vC,SAAS,QAAS,OAAO,EAClC,MAAMy8J,EAAY1sH,EAAKyH,UAAUzH,EAAK1jB,QAAQ,MAC9C,MAAO,oCAAoCwxH,KAAK4e,EAClD,CAQO,SAASC,EAAoC3sH,GAClD,IAAI6rH,EAAAA,EAAAA,IAAW7rH,IAASysH,EAAoBzsH,KAASwqH,EAAAA,EAAAA,IAAexqH,GAAO,OAAOA,EAClF,MAAM,IAAI3wB,MAAO,GAAE2wB,6CACrB,mFCbO,MAAM4sH,EAA2C,CAAC,MAAO,WAMzD,SAAS3kE,EACdjoD,GAGuB,IAFvBn6B,EAAO,UAAH,6CAAG,GACPgnJ,EAAgC,uCAE5BA,IAAmB7sH,EAAK/vC,SAAS48J,KAAiB7sH,GAAc6sH,GACpE,MAAMn4H,GAAS6lD,EAAAA,EAAAA,IAAgBv6C,EAAMn6B,GACrC,OAAO6uB,GAAUymD,EAAmBzmD,GAAUA,EAAS,IACzD,CAGO,SAASymD,EAAmBn7C,GACjC,OAAO4sH,EAAsB98J,MAAM48J,GAAc1sH,EAAK/vC,SAASy8J,IACjE,wECrBO,SAASjiB,EAAiBzqG,GAC/B,OAAOA,EAAK/vC,SAAS,OACvB,CAGO,SAAS68J,EAAoB9sH,GAAsE,IAAxDn6B,EAAO,UAAH,6CAAG,GACvD,MAAM6uB,GAAS6lD,EAAAA,EAAAA,IAAgBv6C,EAAMn6B,GACrC,OAAO6uB,GAAU+1G,EAAiB/1G,GAAUA,EAAS,IACvD,2ECXO,MAAMq4H,EAAmB,WAA6B,IAA5BC,EAAS,UAAH,6CAAG,EACxC,MAAMC,EAAOp8J,EAAAA,EAAAA,eAA2Bm8J,EACxC,MAAO,CACL1tJ,eAAgBrR,EAAAA,GAAAA,MAAAA,eAA8Bg/J,EAC9C5tJ,cAAepR,EAAAA,GAAAA,MAAAA,cAA6Bg/J,EAC5C1tJ,cAAetR,EAAAA,GAAAA,MAAAA,cAA6Bg/J,EAC5CztJ,aAAcvR,EAAAA,GAAAA,MAAAA,aAA4Bg/J,EAE1Cp2J,QAAS5I,EAAAA,GAAAA,MAAAA,QAAuBg/J,EAChCn2J,SAAU7I,EAAAA,GAAAA,MAAAA,SAAwBg/J,EAClCl2J,QAAS9I,EAAAA,GAAAA,MAAAA,QAAuBg/J,EAChCh2J,UAAWhJ,EAAAA,GAAAA,MAAAA,UAAyBg/J,EACpCj2J,QAAS/I,EAAAA,GAAAA,MAAAA,QAAuBg/J,EAChC/1J,SAAUjJ,EAAAA,GAAAA,MAAAA,SAAwBg/J,EAElCluJ,YAAa9Q,EAAAA,GAAAA,MAAAA,YAA2Bg/J,EACxCjuJ,aAAc/Q,EAAAA,GAAAA,MAAAA,aAA4Bg/J,EAC1ChuJ,YAAahR,EAAAA,GAAAA,MAAAA,YAA2Bg/J,EACxC/tJ,cAAejR,EAAAA,GAAAA,MAAAA,cAA6Bg/J,EAC5C9tJ,YAAalR,EAAAA,GAAAA,MAAAA,YAA2Bg/J,EACxC7tJ,aAAcnR,EAAAA,GAAAA,MAAAA,aAA4Bg/J,EAE1CvtJ,YAAazR,EAAAA,GAAAA,MAAAA,YAA2Bg/J,EACxCxtJ,YAAaxR,EAAAA,GAAAA,MAAAA,YAA2Bg/J,EAExCttJ,YAAa1R,EAAAA,GAAAA,MAAAA,YAA2Bg/J,EACxCrtJ,cAAe3R,EAAAA,GAAAA,MAAAA,cAA6Bg/J,EAE5CntJ,mBAAoB7R,EAAAA,GAAAA,MAAAA,mBAAkCg/J,EACtDltJ,2BAA4B9R,EAAAA,GAAAA,MAAAA,2BAA0Cg/J,EACtE5qJ,sBAAuBpU,EAAAA,GAAAA,MAAAA,sBAAqCg/J,EAC5D3qJ,uBAAwBrU,EAAAA,GAAAA,MAAAA,uBAAsCg/J,EAC9DjtJ,wBAAyB/R,EAAAA,GAAAA,MAAAA,wBAAuCg/J,EAEhEptJ,WAAY5R,EAAAA,GAAAA,MAAAA,WAA0Bg/J,EAEtChtJ,wBAAyBhS,EAAAA,GAAAA,MAAAA,wBAAuCg/J,EAChE/sJ,yBAA0BjS,EAAAA,GAAAA,MAAAA,yBAAwCg/J,EAClE9sJ,qBAAsBlS,EAAAA,GAAAA,MAAAA,qBAAoCg/J,EAC1D7sJ,2BAA4BnS,EAAAA,GAAAA,MAAAA,2BAA0Cg/J,EAE1E,2ECnCO,MAAMxR,EAIX19I,YAAY8wE,GACV5wE,KAAK4wE,aAAeA,CACtB,CAEItmE,WACF,OAAOtK,KAAK4wE,aAAarxE,SAAW3M,EAAAA,EAAAA,4BACtC,CAEIiwB,WAEF,MAAMosI,EAAU36J,KAAK+gB,KAAI6B,EAAAA,EAAAA,KAAIljB,OAAOpC,OAAOoO,KAAK4wE,aAAajxE,OAAOtS,QAAQsT,GAAY,IAANA,KAAW,GAEvFJ,EAAOjM,KAAKsqG,KAAKqwD,GACvB,OAAQr8J,EAAAA,EAAAA,6BAAyC2N,EAAO3N,EAAAA,EAAAA,yBAAqC,CAC/F,gICtBK,MAAM0qJ,EAA2B,KACtC,MAAMhyI,EAA2B,GAEjC,IAAK,MAAOtH,EAAS1B,KAAQiP,EAAAA,EAAAA,IAAiBzO,EAAAA,GAAgB,CAC5D,GAAI9S,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,eAC3B,GAAIiS,EAAI7C,YAAc6C,EAAIzC,SAAShR,SAASwB,EAAAA,YAAAA,cAA2B,cAEvE,GAAIiS,EAAI7C,UAAW,SAErB6L,EAAKvN,KAAKiG,EACZ,CAEA,OAAOsH,EAAKje,QAAQujF,IAA0B5gF,EAAAA,GAAAA,gBAAuB4gF,IAAc,EAGxEs+E,EAAmB,IACvB,IAAK70I,EAAAA,EAAAA,GAA2BrqB,EAAAA,GAAAA,OAAAA,aAA4B,GAAK,GAAK,EAGlE0tJ,EAAkCp7I,GAC5BA,EAAIugB,KACHqsI,mXCHb,MAAMC,EAAyB,KACpC,MAAMC,EAA+C,CAAC,EACtD,IAAK,MAAM9sJ,KAAOtO,OAAOpC,OAAOkR,EAAAA,GAAgB,CAC9C,MAAMvR,EAAO+Q,EAAI/Q,KACXksJ,EAAe,IAAID,EAAAA,EAAsBl7I,GAC/C8sJ,EAAM79J,GAAQksJ,CAChB,CACA,OAAO2R,CAAK,EAGRC,EAAY/sJ,KACZtS,EAAAA,GAAAA,MAAesS,EAAIgI,QAGhB63E,EAAAA,EAAAA,IAAuB7/E,EAAIsuE,cAO9B0+E,EAAuB3pJ,IAC3B,MAAMrD,EAAMqD,EAAMrD,IAElB,OACE,gBAAC,IAAU,CAAClW,MAAOhB,EAAAA,EAAAA,MAAAA,OACjB,yBAAG,mBACH,2BACCkX,EAAI5C,QAAQ3R,KAAKqb,GAChB,wBAAM9Z,IAAK8Z,EAAQhc,MAAO,CAAEzB,QAAS,OAAQsa,WAAY,WACtDjW,EAAAA,GAAAA,gBAAuBoZ,GAAU,gBAAC,IAAQ,CAAC5d,GAAI,CAAEge,GAAI,KAAU,gBAAC,IAAoB,CAAChe,GAAI,CAAEge,GAAI,KAC/FJ,KAGM,EAIJmmJ,EAAe,KAC1B,MAAMC,GAAyB5iK,EAAAA,EAAAA,UAASuiK,KAA0B,IAE3DnoJ,EAAaC,IAAkBra,EAAAA,EAAAA,WAAS0wJ,EAAAA,EAAAA,MAA2B,KACnEmS,EAAWC,IAAgB9iK,EAAAA,EAAAA,WAAS,GACrC+iK,EAAuB7sJ,EAAAA,EAAckE,GACrClB,GAAWC,EAAAA,EAAAA,GAAY,KAYvB4+E,EAAmBC,IACvBx5F,EAAAA,EAAAA,2BAAsCw5F,EACtC9+E,GAAU,EAGZ,OACE,gBAAC,IAAS,CAAC5W,gBAAc,EAAC5C,SAAS,KAAKd,GAAI,CAAEwa,GAAI,IAChD,gBAAC,IAAM,CAAC5H,QAAS,IAAMrG,EAAAA,EAAAA,QAAe,QACtC,gBAAC,IAAU,CAAC5L,QAAQ,MAAK,uBACzB,gBAAC,IAAU,KAAC,8EAEV,2BAAM,iJAGN,2BACA,2BAAM,gQAMR,gBAAC,IAAG,CAACX,GAAI,CAAEuD,GAAI,IACb,gBAAC,IAAK,CAACvD,GAAI,CAAE2H,EAAG,IACd,gBAAC,IAAU,CAAChH,QAAQ,MAAK,uBACzB,gBAAC,IAAG,CAACX,GAAI,CAAEG,QAAS,OAAQ8a,oBAAqB,YAC/C,gBAAC,IAAM,CAACjb,GAAI,CAAEsB,MAAO,QAAUsR,QAAS,IAAMumF,EAAgBE,EAAAA,EAAAA,OAAyC,gBAGvG,gBAAC,IAAM,CAACr5F,GAAI,CAAEsB,MAAO,QAAUsR,QAAS,IAAMumF,EAAgBE,EAAAA,EAAAA,UAA4C,4BAK7Gy4D,EAAAA,EAAAA,MAA2BtuJ,OAAS,EACnC,gBAAC,IAAK,CAACxD,GAAI,CAAEE,GAAI,EAAGoB,MAAO,cAAenB,QAAS,OAAQ8a,oBAAqB,YAC9E,gBAAC,IAAI,CAACjb,GAAI,CAAEuB,OAAQ,IAAKua,UAAW,SAAUC,YAAc,aAAYnc,EAAAA,EAAAA,MAAAA,cA7C5D,MACpB,MAAMkgB,GAAOgyI,EAAAA,EAAAA,MACb,OAAQlyJ,EAAAA,EAAAA,6BACDy5F,EAAAA,EAAAA,KACIv5E,EAAKnd,MAAK,CAACC,EAAGC,IAAMmhK,EAAuBphK,GAAGkc,KAAOklJ,EAAuBnhK,GAAGic,OAE/EgB,CAAK,EAwCLk6E,GAAgBz3F,KAAI,CAACyZ,EAAG3W,IACvB,gBAAC,IAAc,CAACvB,IAAKuB,EAAI,EAAGuN,QAAS,IAAM6I,EAAeO,GAAIC,SAAUT,IAAgBQ,GACtF,gBAAC,IAAU,CACThc,GAAI,CACFY,MAAOijK,EAASG,EAAuBhoJ,IAAMpc,EAAAA,EAAAA,MAAAA,QAAyBA,EAAAA,EAAAA,MAAAA,WAGvEoc,OAKT,gBAAC,IAAG,CAAChc,GAAI,CAAEwB,EAAG,IACZ,gBAAC,IAAU,CAACb,QAAQ,KAAKX,GAAI,CAAEG,QAAS,OAAQsa,WAAY,SAAUpa,SAAU,SAC9E,gBAAC,IAAY,CAACL,GAAI,CAAEge,GAAI,KAAO,IAAExC,GAEnC,gBAAC,IAAM,CACL5I,QAAS,IAAMsxJ,GAAa,GAC5BlkK,GAAI,CAAEsB,MAAO,QACb4Z,UAAW2oJ,EAASG,EAAuBxoJ,KAC5C,uBAEC,gBAAC,IAAU,KACT,gBAAC,IAAK,CAACmE,MAAOqkJ,EAAuBxoJ,GAAasD,KAAMmzD,aAAa,KAC1D,KAGf,gBAAC,IAAiB,CAChBr3D,KAAMqpJ,EACNppJ,QAAS,IAAMqpJ,GAAa,GAC5BppJ,UAAW,KACTtW,EAAAA,GAAAA,UACE,IAAI8tJ,EAAAA,EAAa,CACfltE,aAAc5pE,EACdinE,aAAa,KAGjBj+E,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,KAAU,EAE1BwO,iBACE,gCAAE,4BACyB,yBAAG,OAAO,yDAAsD,yBAAG,OAAQ,IAAI,gBAEtGxW,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,mBACvB,gCACE,2BACA,2BAAM,6FAOhB,gBAAC,IAAG,CAAChG,GAAI,CAAEkc,UAAW,IAAKJ,UAAW,WACpC,gBAAC,IAAU,CAAClb,MAAOhB,EAAAA,EAAAA,MAAAA,MACjB,yBAAG,kBAAmB,KACrBslC,EAAAA,EAAAA,KACCgtH,EAAAA,EAAAA,IAA+B8R,EAAuBxoJ,MAKzD2oJ,EAAqBjwJ,QAAQ1Q,OAAS,GAAK,gBAACsgK,EAAmB,CAAChtJ,IAAKqtJ,IAEtE,2BAEA,gBAAC,IAAU,CAAC1wJ,WAAY,YACrB,MACC,MAAMgB,EACiC,iBAA9B0vJ,EAAqB1vJ,KAC1B,4BAAO0vJ,EAAqB1vJ,MAE5B0vJ,EAAqB1vJ,KAUzB,OAPE,gCACGA,EACD,2BACA,2BACC0vJ,EAAqBlvJ,MAI3B,EAhBA,OAsBT,gBAAC,IAAU,KAAC,4BAIhB,gBAAC,IAAG,CAACjV,GAAI,CAAEuD,GAAI,IACb,gBAAC,IAAU,CAAC5C,QAAQ,MAAK,iBAEzB,gBAAC,IAAK,CAACX,GAAI,CAAEuD,GAAI,EAAGoE,EAAG,EAAGrG,MAAO,gBAC/B,gBAAC,IAAU,KACT,yBAAG,qBAAqB,IAAEkD,EAAAA,GAAAA,QAC1B,2BACA,yBAAG,iCAAkC,KACpCyV,EAAAA,EAAAA,IAAuE,KAAjD,EAAI7S,EAAAA,EAAAA,eAA2B5C,EAAAA,GAAAA,SAAuB,GAAG,uBAIpF,gBAAC,IAAU,KAAC,oMAGV,2BACA,2BAAM,qMAKA,oECvMT,MAAM4P,EAAqB,KACzB,CACLyB,eAAgB,EAChBD,cAAe,EACfE,cAAe,EACfC,aAAc,EACd3I,QAAS,EACTkI,YAAa,EACbjI,SAAU,EACVkI,aAAc,EACdjI,QAAS,EACTkI,YAAa,EACbhI,UAAW,EACXiI,cAAe,EACflI,QAAS,EACTmI,YAAa,EACbjI,SAAU,EACVkI,aAAc,EACdU,mBAAoB,EACpBC,2BAA4B,EAC5BsC,sBAAuB,EACvBC,uBAAwB,EACxBtC,wBAAyB,EACzBN,YAAa,EACbD,YAAa,EACbI,WAAY,EACZD,cAAe,EACfD,YAAa,EACbM,wBAAyB,EACzBC,yBAA0B,EAC1BC,qBAAsB,EACtBC,2BAA4B,IAInBY,EAAmB,CAAC6sJ,EAAiBC,KACzC,CACLxuJ,eAAgBuuJ,EAAGvuJ,eAAiBwuJ,EAAGxuJ,eACvCD,cAAewuJ,EAAGxuJ,cAAgByuJ,EAAGzuJ,cACrCE,cAAesuJ,EAAGtuJ,cAAgBuuJ,EAAGvuJ,cACrCC,aAAcquJ,EAAGruJ,aAAesuJ,EAAGtuJ,aACnC3I,QAASg3J,EAAGh3J,QAAUi3J,EAAGj3J,QACzBkI,YAAa8uJ,EAAG9uJ,YAAc+uJ,EAAG/uJ,YACjCjI,SAAU+2J,EAAG/2J,SAAWg3J,EAAGh3J,SAC3BkI,aAAc6uJ,EAAG7uJ,aAAe8uJ,EAAG9uJ,aACnCjI,QAAS82J,EAAG92J,QAAU+2J,EAAG/2J,QACzBkI,YAAa4uJ,EAAG5uJ,YAAc6uJ,EAAG7uJ,YACjChI,UAAW42J,EAAG52J,UAAY62J,EAAG72J,UAC7BiI,cAAe2uJ,EAAG3uJ,cAAgB4uJ,EAAG5uJ,cACrClI,QAAS62J,EAAG72J,QAAU82J,EAAG92J,QACzBmI,YAAa0uJ,EAAG1uJ,YAAc2uJ,EAAG3uJ,YACjCjI,SAAU22J,EAAG32J,SAAW42J,EAAG52J,SAC3BkI,aAAcyuJ,EAAGzuJ,aAAe0uJ,EAAG1uJ,aACnCU,mBAAoB+tJ,EAAG/tJ,mBAAqBguJ,EAAGhuJ,mBAC/CC,2BAA4B8tJ,EAAG9tJ,2BAA6B+tJ,EAAG/tJ,2BAC/DsC,sBAAuBwrJ,EAAGxrJ,sBAAwByrJ,EAAGzrJ,sBACrDC,uBAAwBurJ,EAAGvrJ,uBAAyBwrJ,EAAGxrJ,uBACvDtC,wBAAyB6tJ,EAAG7tJ,wBAA0B8tJ,EAAG9tJ,wBACzDN,YAAamuJ,EAAGnuJ,YAAcouJ,EAAGpuJ,YACjCD,YAAaouJ,EAAGpuJ,YAAcquJ,EAAGruJ,YACjCI,WAAYguJ,EAAGhuJ,WAAaiuJ,EAAGjuJ,WAC/BD,cAAeiuJ,EAAGjuJ,cAAgBkuJ,EAAGluJ,cACrCD,YAAakuJ,EAAGluJ,YAAcmuJ,EAAGnuJ,YACjCM,wBAAyB4tJ,EAAG5tJ,wBAA0B6tJ,EAAG7tJ,wBACzDC,yBAA0B2tJ,EAAG3tJ,yBAA2B4tJ,EAAG5tJ,yBAC3DC,qBAAsB0tJ,EAAG1tJ,qBAAuB2tJ,EAAG3tJ,qBACnDC,2BAA4BytJ,EAAGztJ,2BAA6B0tJ,EAAG1tJ,6BAItDsnE,EAAmB,CAACmmF,EAAiB3zH,KACzC,CACL56B,gBAAiBuuJ,EAAGvuJ,eAAiB,GAAK46B,EAAI,EAC9C76B,eAAgBwuJ,EAAGxuJ,cAAgB,GAAK66B,EAAI,EAC5C36B,eAAgBsuJ,EAAGtuJ,cAAgB,GAAK26B,EAAI,EAC5C16B,cAAequJ,EAAGruJ,aAAe,GAAK06B,EAAI,EAC1CrjC,SAAUg3J,EAAGh3J,QAAU,GAAKqjC,EAAI,EAChCn7B,aAAc8uJ,EAAG9uJ,YAAc,GAAKm7B,EAAI,EACxCpjC,UAAW+2J,EAAG/2J,SAAW,GAAKojC,EAAI,EAClCl7B,cAAe6uJ,EAAG7uJ,aAAe,GAAKk7B,EAAI,EAC1CnjC,SAAU82J,EAAG92J,QAAU,GAAKmjC,EAAI,EAChCj7B,aAAc4uJ,EAAG5uJ,YAAc,GAAKi7B,EAAI,EACxCjjC,WAAY42J,EAAG52J,UAAY,GAAKijC,EAAI,EACpCh7B,eAAgB2uJ,EAAG3uJ,cAAgB,GAAKg7B,EAAI,EAC5CljC,SAAU62J,EAAG72J,QAAU,GAAKkjC,EAAI,EAChC/6B,aAAc0uJ,EAAG1uJ,YAAc,GAAK+6B,EAAI,EACxChjC,UAAW22J,EAAG32J,SAAW,GAAKgjC,EAAI,EAClC96B,cAAeyuJ,EAAGzuJ,aAAe,GAAK86B,EAAI,EAC1Cp6B,oBAAqB+tJ,EAAG/tJ,mBAAqB,GAAKo6B,EAAI,EACtDn6B,4BAA6B8tJ,EAAG9tJ,2BAA6B,GAAKm6B,EAAI,EACtE73B,uBAAwBwrJ,EAAGxrJ,sBAAwB,GAAK63B,EAAI,EAC5D53B,wBAAyBurJ,EAAGvrJ,uBAAyB,GAAK43B,EAAI,EAC9Dl6B,yBAA0B6tJ,EAAG7tJ,wBAA0B,GAAKk6B,EAAI,EAChEx6B,aAAcmuJ,EAAGnuJ,YAAc,GAAKw6B,EAAI,EACxCz6B,aAAcouJ,EAAGpuJ,YAAc,GAAKy6B,EAAI,EACxCr6B,YAAaguJ,EAAGhuJ,WAAa,GAAKq6B,EAAI,EACtCt6B,eAAgBiuJ,EAAGjuJ,cAAgB,GAAKs6B,EAAI,EAC5Cv6B,aAAckuJ,EAAGluJ,YAAc,GAAKu6B,EAAI,EACxCj6B,yBAA0B4tJ,EAAG5tJ,wBAA0B,GAAKi6B,EAAI,EAChEh6B,0BAA2B2tJ,EAAG3tJ,yBAA2B,GAAKg6B,EAAI,EAClE/5B,sBAAuB0tJ,EAAG1tJ,qBAAuB,GAAK+5B,EAAI,EAC1D95B,4BAA6BytJ,EAAGztJ,2BAA6B,GAAK85B,EAAI,mGC1HnE,MAAe6zH,EACpB1qI,GAAS,CAAEnd,QAAS,GAAIoN,IAAK,IAC7B+C,OAAiB,CACfxf,QAAS,EACTC,SAAU,EACVC,QAAS,EACTE,UAAW,EACXD,QAAS,EACTE,SAAU,EACVqhB,aAAc,GAEhB3hB,IAAc,CACZC,QAAS,EACTC,SAAU,EACVC,QAAS,EACTE,UAAW,EACXD,QAAS,EACTE,SAAU,EACVqhB,aAAc,GAGhB3a,OAAQC,EAAAA,EAAAA,MAGRlH,cAA2C,GAC3Cq3J,oBAAiD,GAGjDj3I,KAAiBpkB,EAAAA,SAAAA,SAEjBs7J,eAAiBC,EAAAA,GACjBC,gBAAkBD,EAAAA,GAClBE,eAAiBF,EAAAA,GACjBG,iBAAmBH,EAAAA,GACnBI,eAAiBJ,EAAAA,GACjBK,gBAAkBL,EAAAA,GAClBM,oBAAsBN,EAAAA,GACtBO,UAAYP,EAAAA,GACZnoI,aAAemoI,EAAAA,GACfj2I,oBAAsBi2I,EAAAA,GACtBtmF,kBAAoBsmF,EAAAA,GACpB3mF,gBAAkB2mF,EAAAA,GAClBx7D,eAAiBA,EAAAA,GAGjB/qB,mBACE1pE,KAAKL,OAAQC,EAAAA,EAAAA,KACf,2LCrDK,SAASowJ,EAA6Br3J,GACvCyP,MAAMzP,GACR8K,QAAQC,MAAM,iDAGhB1D,KAAKrH,IAAIC,SAAWD,EAChBqH,KAAKrH,IAAIC,QAAU,IACrBoH,KAAKrH,IAAIC,QAAU,GAGrBoH,KAAKoY,OAAOxf,SAAU67F,EAAAA,EAAAA,IAAez0F,KAAKrH,IAAIC,QAASoH,KAAKL,MAAM/G,QAAUpE,EAAAA,GAAAA,wBAC9E,CAEO,SAAS07J,EAA8Bv3J,GACxCyP,MAAMzP,GACR8K,QAAQC,MAAM,kDAGhB1D,KAAKrH,IAAIE,UAAYF,EACjBqH,KAAKrH,IAAIE,SAAW,IACtBmH,KAAKrH,IAAIE,SAAW,GAGtBmH,KAAKoY,OAAOvf,UAAW47F,EAAAA,EAAAA,IACrBz0F,KAAKrH,IAAIE,SACTmH,KAAKL,MAAM9G,SAAWrE,EAAAA,GAAAA,yBAE1B,CAEO,SAAS27J,EAA6Bx3J,GAC3C,GAAIyP,MAAMzP,GAER,YADA8K,QAAQC,MAAM,gDAGhB1D,KAAKrH,IAAIG,SAAWH,EAChBqH,KAAKrH,IAAIG,QAAU,IACrBkH,KAAKrH,IAAIG,QAAU,GAGrBkH,KAAKoY,OAAOtf,SAAU27F,EAAAA,EAAAA,IAAez0F,KAAKrH,IAAIG,QAASkH,KAAKL,MAAM7G,QAAUtE,EAAAA,GAAAA,wBAC5E,MAAMi8J,EAAQzwJ,KAAKolB,GAAGnd,QAAUjI,KAAKolB,GAAG/P,IACxCrV,KAAKolB,GAAG/P,IAAM/gB,KAAKC,MAAM,GAAKyL,KAAKoY,OAAOtf,QAAU,IACpDkH,KAAKolB,GAAGnd,QAAU3T,KAAKguB,MAAMtiB,KAAKolB,GAAG/P,IAAMo7I,EAC7C,CAEO,SAASL,EAA+Bz3J,GACzCyP,MAAMzP,GACR8K,QAAQC,MAAM,mDAGhB1D,KAAKrH,IAAIK,WAAaL,EAClBqH,KAAKrH,IAAIK,UAAY,IACvBgH,KAAKrH,IAAIK,UAAY,GAGvBgH,KAAKoY,OAAOpf,WAAYy7F,EAAAA,EAAAA,IACtBz0F,KAAKrH,IAAIK,UACTgH,KAAKL,MAAM3G,UAAYxE,EAAAA,GAAAA,0BAE3B,CAEO,SAAS67J,EAA6B13J,GACvCyP,MAAMzP,GACR8K,QAAQC,MAAM,iDAGhB1D,KAAKrH,IAAII,SAAWJ,EAChBqH,KAAKrH,IAAII,QAAU,IACrBiH,KAAKrH,IAAII,QAAU,GAGrBiH,KAAKoY,OAAOrf,SAAU07F,EAAAA,EAAAA,IAAez0F,KAAKrH,IAAII,QAASiH,KAAKL,MAAM5G,QAAUvE,EAAAA,GAAAA,wBAC9E,CAEO,SAAS87J,EAA8B33J,GACxCyP,MAAMzP,GACR8K,QAAQC,MAAM,kDAGhB1D,KAAKrH,IAAIM,UAAYN,EACjBqH,KAAKrH,IAAIM,SAAW,IACtB+G,KAAKrH,IAAIM,SAAW,GAGtB+G,KAAKoY,OAAOnf,UAAWw7F,EAAAA,EAAAA,IACrBz0F,KAAKrH,IAAIM,SACT+G,KAAKL,MAAM1G,SAAWzE,EAAAA,GAAAA,yBAE1B,CAEO,SAAS+7J,EAAkC53J,GAC5CyP,MAAMzP,GACR8K,QAAQC,MAAM,wDAGZ1T,EAAAA,GAAAA,cAAqB,GAAK,GAAKgQ,KAAKoY,OAAOkC,aAAe,GAAyB,IAApBtqB,EAAAA,GAAAA,YACjEgQ,KAAKrH,IAAI2hB,cAAgB3hB,EACzBqH,KAAKoY,OAAOkC,aAAehmB,KAAKC,MAAMyL,KAAKy0F,eAAez0F,KAAKrH,IAAI2hB,aAAc,IAErF,CACO,SAASk2I,EAAwBpqI,GACtCpmB,KAAKgwJ,eAAe5pI,EAASjD,QAAUnjB,KAAKL,MAAMmB,aAClDd,KAAKkwJ,gBAAgB9pI,EAAShD,OAASpjB,KAAKL,MAAMoB,cAClDf,KAAKmwJ,eAAe/pI,EAAS/C,OAASrjB,KAAKL,MAAMqB,aACjDhB,KAAKowJ,iBAAiBhqI,EAAS9C,OAAStjB,KAAKL,MAAMsB,eACnDjB,KAAKqwJ,eAAejqI,EAAS7C,OAASvjB,KAAKL,MAAMuB,aACjDlB,KAAKswJ,gBAAgBlqI,EAAS5C,OAASxjB,KAAKL,MAAMwB,cAClDnB,KAAKuwJ,oBAAoBnqI,EAAS3C,OACpC,CAGO,SAASzJ,EAAkCzkB,GAChD,MAAMm7J,EAAUn7J,EAAIyqB,cACpB,OAAI0wI,EAAQ7hK,SAAS,QACZmR,KAAKoY,OAAOxf,QAEjB83J,EAAQ7hK,SAAS,OACZmR,KAAKoY,OAAOvf,SAEjB63J,EAAQ7hK,SAAS,OACZmR,KAAKoY,OAAOtf,QAEjB43J,EAAQ7hK,SAAS,OACZmR,KAAKoY,OAAOpf,UAEjB03J,EAAQ7hK,SAAS,OACZmR,KAAKoY,OAAOrf,QAEjB23J,EAAQ7hK,SAAS,OACZmR,KAAKoY,OAAOnf,SAEjBy3J,EAAQ7hK,SAAS,OACZmR,KAAKoY,OAAOkC,aAEd,CACT,CAEO,SAASwN,EAA2BU,GACtB,iBAARA,GAIXxoB,KAAKolB,GAAGnd,SAAWugB,EACfxoB,KAAKolB,GAAGnd,QAAUjI,KAAKolB,GAAG/P,MAC5BrV,KAAKolB,GAAGnd,QAAUjI,KAAKolB,GAAG/P,MAL1B5R,QAAQgd,KAAM,4DAA2D+H,IAO7E,CAEO,SAASmhD,IACd3pE,KAAKoY,OAAOxf,QAAUtE,KAAK+gB,IACzB,EACA/gB,KAAKC,MAAMyL,KAAKy0F,eAAez0F,KAAKrH,IAAIC,QAASoH,KAAKL,MAAM/G,QAAUpE,EAAAA,GAAAA,0BAExEwL,KAAKoY,OAAOvf,SAAWvE,KAAK+gB,IAC1B,EACA/gB,KAAKC,MAAMyL,KAAKy0F,eAAez0F,KAAKrH,IAAIE,SAAUmH,KAAKL,MAAM9G,SAAWrE,EAAAA,GAAAA,2BAE1EwL,KAAKoY,OAAOtf,QAAUxE,KAAK+gB,IACzB,EACA/gB,KAAKC,MAAMyL,KAAKy0F,eAAez0F,KAAKrH,IAAIG,QAASkH,KAAKL,MAAM7G,QAAUtE,EAAAA,GAAAA,0BAExEwL,KAAKoY,OAAOpf,UAAY1E,KAAK+gB,IAC3B,EACA/gB,KAAKC,MACHyL,KAAKy0F,eAAez0F,KAAKrH,IAAIK,UAAWgH,KAAKL,MAAM3G,UAAYxE,EAAAA,GAAAA,4BAGnEwL,KAAKoY,OAAOrf,QAAUzE,KAAK+gB,IACzB,EACA/gB,KAAKC,MAAMyL,KAAKy0F,eAAez0F,KAAKrH,IAAII,QAASiH,KAAKL,MAAM5G,QAAUvE,EAAAA,GAAAA,0BAExEwL,KAAKoY,OAAOnf,SAAW3E,KAAK+gB,IAC1B,EACA/gB,KAAKC,MAAMyL,KAAKy0F,eAAez0F,KAAKrH,IAAIM,SAAU+G,KAAKL,MAAM1G,SAAWzE,EAAAA,GAAAA,2BAG1E,MAAMi8J,EAAgBn8J,KAAK6c,IAAInR,KAAKolB,GAAGnd,QAAUjI,KAAKolB,GAAG/P,IAAK,GAC9DrV,KAAKolB,GAAG/P,IAAM/gB,KAAKC,MAAM,GAAKyL,KAAKoY,OAAOtf,QAAU,IACpDkH,KAAKolB,GAAGnd,QAAU3T,KAAKguB,MAAMtiB,KAAKolB,GAAG/P,IAAMo7I,EAC7C,CAEO,SAASnnF,EAA8BtlE,GAAuC,IAAtB2sJ,EAAe,UAAH,8CACzE,QAAI3wJ,KAAKtH,cAAc7G,MAAMzD,GAAMA,EAAEmD,OAASyS,OAGzC2sJ,IAAgB3wJ,KAAK+vJ,oBAAoBl+J,MAAMzD,GAAMA,EAAEmD,OAASyS,IAIvE,sOCpKO,MAAM4sJ,UAAqBd,EAAAA,EAEhC5d,SAAW,EACXhjG,YAAkC,KAClC8lD,KAAoB,KACpBxlE,YAAkC,KAClCqhI,cAAgB,GAChBhxJ,SAA0B,GAC1BixJ,mBAAoC,GACpChsB,aAAyC,GACzCzW,WAAY,EACZ0iC,iBAAkB,EAClBjqD,YAAc,IAAIjH,EAAAA,EAClBmxD,iBAAkB,EAClBC,eAAgB,EAChBrf,KAA4C,CAAC,EAC7ChkE,MAAQ,EACR+jE,gBAAkB,EAClBz/I,SAAWmlH,EAAAA,aAAAA,aACXlsG,MAAQ,IAAOvY,EAAAA,EAAAA,UACfs+J,aAAe,IAAIC,EAAAA,EACnBC,aAAe,IAAID,EAAAA,EACnBnf,qBAAuB,EACvBC,yBAA2B,EAC3BO,cAAgB,EAChBC,eAAiB,EACjB4e,iBAA6B,GAC7BC,uBAAyB,EACzBC,QAAoB,GACpBC,oBAAsB,EACtBC,YAAc,IAAIx4G,EAAAA,EAClB3sC,SAAsB,GACtB7e,aAAoC,GACpCikK,uBAAmC,GAEnCC,WAAa,EACbpyE,SAAW,EACXvjD,cAAgB,EAEhB9W,YAA2B,KAC3BgN,OAAQ,EAER2/G,QAAU,EAGV+f,KAAOC,EAAAA,GACP/qE,UAAYgrE,EAAAA,GACZC,YAAcD,EAAAA,GACdE,WAAaF,EAAAA,GACbG,oBAAsBJ,EAAAA,GACtBK,8BAAgCL,EAAAA,GAChCM,cAAgBN,EAAAA,GAChBO,4BAA8BP,EAAAA,GAC9BQ,2BAA6BR,EAAAA,GAC7BS,oBAAsBT,EAAAA,GACtBU,8BAAgCV,EAAAA,GAChCW,oBAAsBX,EAAAA,GACtBY,iBAAmBZ,EAAAA,GACnBa,oBAAsBb,EAAAA,GACtBc,4BAA8Bd,EAAAA,GAC9Be,kBAAoBf,EAAAA,GACpBgB,0BAA4BhB,EAAAA,GAC5BiB,YAAcjB,EAAAA,GACdkB,qBAAuBC,EAAAA,EACvBC,qBAAuBC,EAAAA,EACvBC,cAAgBC,EAAAA,GAChBC,kBAAoBxB,EAAAA,GACpByB,UAAYzB,EAAAA,GACZ0B,UAAY1B,EAAAA,GACZ1hC,iBAAmBqjC,EAAAA,GACnBC,eAAiBL,EAAAA,GACjBM,YAAcN,EAAAA,GACdO,gBAAkBH,EAAAA,GAClBI,uBAAyB/B,EAAAA,GACzB7gC,sBAAwBwiC,EAAAA,GACxBviC,wBAA0BuiC,EAAAA,GAC1BK,aAAehC,EAAAA,EACfiC,YAAcV,EAAAA,GACd50B,aAAeg1B,EAAAA,GACfO,WAAalC,EAAAA,GACb3+B,OAASkgC,EAAAA,GACTY,cAAgBZ,EAAAA,GAChBa,YAAcpC,EAAAA,GACdqC,UAAYrC,EAAAA,GACZsC,wBAA0BtC,EAAAA,GAC1BuC,sBAAwBvC,EAAAA,GACxBwC,kBAAoBxC,EAAAA,GACpB/0F,SAAW+0F,EAAAA,GACXyC,iBAAmBtB,EAAAA,EACnBuB,iBAAmBrB,EAAAA,EACnBsB,cAAgB3C,EAAAA,GAChB4C,UAAYrB,EAAAA,GACZjuI,WAAa0sI,EAAAA,GACbr8H,OAASq8H,EAAAA,GACT6C,YAAc7C,EAAAA,GACd8C,gBAAkB9C,EAAAA,GAClB+C,kBAAoB/C,EAAAA,GACpBzgC,QAAUygC,EAAAA,GACVgD,OAAShD,EAAAA,GACTiD,oBAAsBtB,EAAAA,GACtBuB,kBAAoBlD,EAAAA,GACpBmD,cAAgBnD,EAAAA,GAChBoD,yBAA2BpD,EAAAA,GAC3BqD,aAAerD,EAAAA,GACfluJ,qBAAuBkuJ,EAAAA,GACvB9sH,mBAAqB8sH,EAAAA,GACrBsD,uBAAyBtD,EAAAA,GACzBlhC,YAAckhC,EAAAA,GACduD,2BAA6BvD,EAAAA,GAC7BwD,iBAAmBxD,EAAAA,GACnByD,eAAiBzD,EAAAA,GACjB0D,cAAgB1D,EAAAA,GAChB2D,aAAeC,EAAAA,EACfC,aAAe7D,EAAAA,GAEf/xJ,cACEyb,QAEAvb,KAAKq/E,YAAas2E,EAAAA,EAAAA,IAChB,MACE,IAAIrqK,MAAOswC,UACXqgD,UAAUW,UACVl+E,OAAOimJ,WACPjmJ,OAAOkmJ,aACPhuI,EAAAA,EAAAA,GAAa,IAAK,KAExB,CAEAgQ,SACE,MAAO,QACT,CAGA7L,SACE,OAAOC,EAAAA,EAAAA,IAAe,eAAgBhb,KACxC,CAGAib,gBAAgBxe,GAAoC,QAClD,MAAM2iF,GAASlkE,EAAAA,EAAAA,IAAiB01I,EAAcn0J,EAAM3O,MAEpDsxF,EAAOh6D,GAAK,CAAEnd,SAAkB,QAAT,EAAAm3E,EAAOh6D,UAAE,aAAT,EAAWnd,UAAW,GAAIoN,KAAc,QAAT,EAAA+pE,EAAOh6D,UAAE,aAAT,EAAW/P,MAAO,IACxE+pE,EAAOj0E,QAAU,EAEjBi0E,EAAO1mF,cAAgB0mF,EAAO1mF,cAAcrL,QAAQ6V,IAAawlB,EAAAA,EAAAA,GAAS,mBAAoBxlB,EAAS3R,QACvG6tF,EAAO2wE,oBAAsB3wE,EAAO2wE,oBAAoB1iK,QAAQ6V,IAC9DwlB,EAAAA,EAAAA,GAAS,mBAAoBxlB,EAAS3R,QAExC6tF,EAAOzV,oBAGH/zB,MAAMyK,QAAQ++B,EAAOqyE,eAGvBryE,EAAOqyE,YAAc,IAAIx4G,EAAAA,EAASmmC,EAAOqyE,YAA+B1jK,KAAI,QAAC,EAAE8d,EAAC,IAAED,GAAK,QAAK,CAACC,EAAGD,EAAI,MAGtG,IAAK,MAAOy3B,EAAmBuyH,KAAkB5hK,OAAO2H,QAAQyjF,EAAOwyD,OAChElpH,EAAAA,EAAAA,GAAS,cAAe2a,KAAuB3a,EAAAA,EAAAA,GAAS,UAAWktI,WAC/Dx2E,EAAOwyD,KAAKvuG,GAGvB,OAAO+7C,CACT,GAGFy2E,EAAAA,EAAAA,IAAU,IAAIjF,GAEdz1I,EAAAA,GAAAA,aAAsCy1I,gEClM/B,SAAS4E,IAAmD,IAAlBzG,EAAS,UAAH,6CAAG,EAExD/uJ,KAAKm0J,0BACLn0J,KAAKo0J,wBAELp0J,KAAKL,OAAQmvJ,EAAAA,EAAAA,GAAiBC,EAChC,wECPO,SAASgE,IACd,OAAyB,IAAlB/yJ,KAAKkyI,UAAoC,IAAlBlyI,KAAKkyI,UAAkBlyI,KAAKu1J,cAAc,GAAK,GAAKv1J,KAAKu1J,cAAc,GAAK,CAC5G,CAEO,SAASjB,IACdt0J,KAAKwvB,YAAc,IAAI9T,EAAAA,CACzB,6FCJO,SAASu3I,IACd,OAAyB,IAAlBjzJ,KAAKkyI,UAAkBlyI,KAAKu1J,cAAc,GAAK,CACxD,CAEO,SAAShB,EAAqCuB,EAAkBh8G,GACrE95C,KAAKkvC,YAAc,IAAI8J,EAAAA,EAAY,CACjCznD,KAAMukK,EACNh8G,WAAYA,KAGdsY,EAAAA,EAAAA,MAEsB,IAAlBpyD,KAAKkyI,UAA4C,IAA1BlyI,KAAKu1J,cAAc,KAC5Cv1J,KAAKkvC,YAAYmK,QAAQpV,IAAInuC,EAAAA,eAAAA,cAC7BkK,KAAKkvC,YAAYmK,QAAQpV,IAAInuC,EAAAA,eAAAA,YAG3BgkD,IACF95C,KAAKkvC,YAAYyC,gBAAkB,IACnC3xC,KAAKkvC,YAAY0B,aAAe,IAEpC,wJClBO,SAASuiH,IACd,OAAsB,IAAlBnzJ,KAAKkyI,YAGLlyI,KAAKu1J,cAAc,IAAM,IAItBv1J,KAAK4tE,OAAS34E,EAAAA,EAAAA,oBACvB,CAEO,SAAS++J,IACd,OAAyB,IAAlBh0J,KAAKkyI,UAAkBlyI,KAAKu1J,cAAc,IAAM,CACzD,CAEO,SAAS9B,IACd,MAAMz+D,EAAOh1F,KAAKg1F,KAClB,GAAa,OAATA,EAAe,MAAM,IAAI5jF,MAAM,4DAEnC,MAAMovB,EAAMvsC,EAAAA,EAAS+gG,EAAK5T,SAC1B,GAAW,MAAP5gD,EAAa,MAAM,IAAIpvB,MAAO,kCAAiC4jF,EAAK5T,WAExE,OAAO5gD,CACT,CAEO,SAASkzH,IACd,MAAM1+D,EAAOh1F,KAAKg1F,KAClB,OAAOA,EAAOA,EAAK5T,QAAU,EAC/B,CAEO,SAAS0yE,EAAgC1yE,GAC9C,MAAM4T,EAAOh1F,KAAKg1F,KAClB,QAAOA,GAAOA,EAAK5T,UAAYA,CACjC,CAEO,SAASqzE,EAA8BlwJ,EAA0B3L,IAElE6pF,EAAAA,EAAAA,GAAcziF,KAAKklB,cAAgBllB,KAAKklB,YAAY3gB,cAAgBA,GAAavE,KAAKgyJ,YAAW,GAErGhyJ,KAAKg1F,KAAO,IAAIpG,EAAAA,EAAKrqF,EAAa3L,GAElC,MAAM4nC,EAAMvsC,EAAAA,EAASsQ,GACrB,GAAW,MAAPi8B,EACF,MAAM,IAAIpvB,MAAO,4CAA2C7M,KAE9Di8B,EAAIrsC,iBAAmB,CACzB,CAEO,SAAS++H,IACd,OAAOniB,QAAQ/wG,KAAKg1F,KACtB,42BCHO,SAAS48D,IAEd,MAAMmE,GAAa1nB,EAAAA,EAAAA,IAAyB,CAC1CE,aAAa,EACbptG,SAAU,OACV4+D,IAAIuuC,EAAAA,EAAAA,MACJjpB,eAAe,EACf1yH,OAAQ,EACR2yH,iBAAkB,UAClBpkF,mBAAmB,IAErBlhC,KAAK6wJ,cAAgBhhK,EAAAA,EAAAA,MACrB2+I,EAAAA,EAAAA,IAAgBunB,GAEhB/1J,KAAK2zJ,kBAAkBjjK,SAASqN,KAAKpN,EAAAA,qBAAAA,KACvC,CAEO,SAASgT,IACd3D,KAAK6wJ,cAAgBhhK,EAAAA,EAAAA,KAErBmQ,KAAK2xI,gBAAkB,EAGvB3xI,KAAKoY,OAAOxf,QAAU,EAEtBoH,KAAKoY,OAAOvf,SAAW,EACvBmH,KAAKoY,OAAOtf,QAAU,EACtBkH,KAAKoY,OAAOpf,UAAY,EACxBgH,KAAKoY,OAAOrf,QAAU,EAEtBiH,KAAKoY,OAAOnf,SAAW,EAEvB+G,KAAKrH,IAAIC,QAAU,EACnBoH,KAAKrH,IAAIE,SAAW,EACpBmH,KAAKrH,IAAIG,QAAU,EACnBkH,KAAKrH,IAAIK,UAAY,EACrBgH,KAAKrH,IAAII,QAAU,EACnBiH,KAAKrH,IAAIM,SAAW,EAEpB+G,KAAKmL,MAAQ,IAAOvY,EAAAA,EAAAA,UAEpBoN,KAAK8Y,KAAOpkB,EAAAA,SAAAA,SACZsL,KAAK9N,SAAWmlH,EAAAA,aAAAA,aAEhBr3G,KAAK4xI,KAAO,CAAC,EAEb5xI,KAAKqxJ,iBAAmB,GAExBrxJ,KAAKH,SAAW,GAChBG,KAAK8wJ,mBAAqB,GAE1B9wJ,KAAK+vJ,oBAAsB,GAE3B,MAAMiG,EAAa1hK,KAAK6c,IAAI,EAAGnR,KAAKu1J,cAAc,KAAyB,KAAlBv1J,KAAKkyI,SAAkB,EAAI,IAAMlyI,KAAKwxJ,oBAC3FxxJ,KAAKuxJ,QAAQviK,OAASgnK,IAAYh2J,KAAKuxJ,QAAQviK,OAASgnK,GAC5D,IAAK,IAAInlK,EAAImP,KAAKuxJ,QAAQviK,OAAQ6B,EAAImlK,EAAYnlK,IAChDmP,KAAKuxJ,QAAQxzJ,KAAK,IAAIk4J,EAAAA,GAGxBj2J,KAAKuxJ,QAAQlsJ,SAASgkE,GAAYA,EAAO2N,OAAS,EAAI3N,EAAO43E,cAAgB53E,EAAO23E,kBAEpFhhJ,KAAK2xJ,YAAa,IAAIrmK,MAAOswC,UAG7B57B,KAAKgyI,qBAAuB,EAC5BhyI,KAAKwyI,aAAexyI,KAAK2xJ,WACzB3xJ,KAAKsxJ,uBAAyB,EAC9BtxJ,KAAKkxJ,aAAan3H,QAElB/5B,KAAK8kI,aAAa91I,OAAS,EAC3BgR,KAAK8mG,YAAYrnF,WAGjBzf,KAAKm0J,yBAAwB,GAC7Bn0J,KAAKolB,GAAGnd,QAAUjI,KAAKolB,GAAG/P,IAE1BrV,KAAKgyJ,YAAW,GAAM,EACxB,CAEO,SAASjtH,IAOd,GANA/kC,KAAK6xI,QAAU,EACf7xI,KAAK2D,uBACL3D,KAAK4tE,MAAQ,EAEb5tE,KAAKuxJ,QAAQlsJ,SAASgkE,GAAWA,EAAO5pD,aAElB,KAAlBzf,KAAKkyI,SACP,IAAK,IAAIrhJ,EAAI,EAAGA,EAAImP,KAAKuxJ,QAAQviK,OAAQ6B,IACvCmP,KAAKuxJ,QAAQ1gK,GAAGmmF,MAAQ1iF,KAAK+gB,IAAI,GAAIrV,KAAKuxJ,QAAQ1gK,GAAGmmF,OACrDh3E,KAAKuxJ,QAAQ1gK,GAAGomF,KAAO3iF,KAAK+gB,IAAI,GAAIrV,KAAKuxJ,QAAQ1gK,GAAGomF,MAIxDj3E,KAAKg1F,KAAO,MACZtG,EAAAA,EAAAA,MACA1uF,KAAKkvC,YAAc,KACnBlvC,KAAKwvB,YAAc,KAGnBxvB,KAAKixJ,eAAgB,EACrBjxJ,KAAKgxJ,iBAAkB,EACvBhxJ,KAAKquH,WAAY,EACjBruH,KAAK+wJ,iBAAkB,EAGvB/wJ,KAAKkvC,YAAc,KAEnBlvC,KAAKoxJ,aAAar3H,QAClB/5B,KAAKiyI,yBAA2B,EAChCjyI,KAAKyyI,cAAgBzyI,KAAK2xJ,WAC1B3xJ,KAAKtH,cAAgB,EACvB,CAEO,SAASs8J,EAAkCzwJ,GAC5CvE,KAAK8wJ,mBAAmBjiK,SAAS0V,IAAgBvE,KAAKH,SAAShR,SAAS0V,IAG5EvE,KAAK8wJ,mBAAmB/yJ,KAAKwG,EAC/B,CAGO,SAAS4wJ,EAA2Cx8J,GAAuC,IAA1B4H,EAAO,UAAH,6CAAG,EAC7E,OAAO21J,EAAAA,EAAAA,IAAwBv9J,EAAK4H,EACtC,CAEO,SAASwzJ,EAA+BjmB,GAE7C,OADa9tI,KAAK2zJ,kBACNjjK,SAAS7B,SAASi/I,EAChC,CAEO,SAAShxE,EAA6B3xD,GACvC/C,MAAM+C,GACR1H,QAAQC,MAAM,qCAGhB1D,KAAKmL,MAAQA,CACf,CAEO,SAASooJ,EAA8BpoJ,EAAeghI,GACvD/jI,MAAM+C,GACR1H,QAAQC,MAAM,uCAIhB1D,KAAKmL,MAAQnL,KAAKmL,MAAQA,EAC1BnL,KAAKq0J,kBAAkBlpJ,EAAOghI,GAChC,CAEO,SAAS+nB,EAA8B/oJ,EAAeghI,GACvD/jI,MAAM+C,GACR1H,QAAQC,MAAM,sCAGZ1D,KAAKmL,QAAUhH,KAAYgH,IAAUhH,MACzCnE,KAAKmL,MAAQnL,KAAKmL,MAAQA,EAC1BnL,KAAKq0J,mBAAmB,EAAIlpJ,EAAOghI,GACrC,CAEO,SAASmnB,EAA8BhpJ,GAC5C,OAAIlC,MAAMkC,IACR7G,QAAQC,MAAO,uCACR,GAEF1D,KAAKmL,OAASb,CACvB,CAEO,SAAS+pJ,EAAsC7rI,EAAa2jH,GAC3DnsI,KAAKkxJ,wBAAwBC,EAAAA,IACjC1tJ,QAAQgd,KAAM,+DACdzgB,KAAKkxJ,aAAe,IAAIC,EAAAA,GAEpBnxJ,KAAKoxJ,wBAAwBD,EAAAA,IACjC1tJ,QAAQgd,KAAM,+DACdzgB,KAAKoxJ,aAAe,IAAID,EAAAA,GAE1BnxJ,KAAKkxJ,aAAaiF,OAAO3tI,EAAK2jH,GAC9BnsI,KAAKoxJ,aAAa+E,OAAO3tI,EAAK2jH,EAChC,CAEO,SAASqoB,IACdx0J,KAAKkyB,OAAQ,CACf,CAEO,SAASgjI,IACdl1J,KAAKkyB,OAAQ,CACf,CAGO,SAAS/M,EAA+BqD,GAC7C,MAAmB,iBAARA,GACT/kB,QAAQgd,KAAM,0DAAyD+H,MAChE,IAGTxoB,KAAKolB,GAAGnd,SAAWugB,EACfxoB,KAAKolB,GAAGnd,SAAW,IACrBjI,KAAK2wH,eACE,GAIX,CAEO,SAASA,IACd,MAAMrmH,GAAOk9F,EAAAA,EAAAA,KAKb,OAJAvxB,EAAAA,GAAAA,KAAqB,iCAA+BnrE,EAAAA,EAAAA,IAAYR,KAAS4rE,EAAAA,aAAAA,QAAsB,KAE/Fl2E,KAAKk0J,UAAU5pJ,EAAM,mBACrBtK,KAAKolB,GAAGnd,QAAUjI,KAAKolB,GAAG/P,IACnB/K,CACT,CAMO,SAASwoJ,EAAgCl7C,GAAsD,IAAvBx1B,EAAO,UAAH,8CACjF,MAAMn4C,GAAcjoB,EAAAA,EAAAA,GAAc,eAAeo0I,UAAUp2J,KAAK9N,UAChE,IAAK+3C,EAAa,OAAO,EACzB,MAAM1G,EAAUT,EAAAA,EAAUmH,GAC1B,IAAI9F,EAAMyzE,EAEV,IAAK53G,KAAKi0J,YAAY1wH,EAASY,GAI7B,OAHKi+C,IACH9+E,EAAAA,EAAAA,GAAgB,yDAA0DulC,EAAAA,EAAAA,GAAsBtF,EAASY,KAEpG,EAGT,IAAKZ,EAAQW,YAAYC,GAEvB,OADA1gC,QAAQC,MAAO,WAAU6/B,EAAQhyC,+BAA+B4yC,sCACzD,EAGT,IAAIkyH,GAAU5sH,EAAAA,EAAAA,GAA6BtF,GAC3C,KAAOkyH,GAAW9yH,EAAQW,YAAYmyH,IAAYr2J,KAAKi0J,YAAY1wH,EAAS8yH,IAC1ElyH,EAAMkyH,EACNA,GAAU5sH,EAAAA,EAAAA,GAA6BtF,GAIzC,GAAInkC,KAAK4xI,KAAKruG,EAAQhyC,QAAU4yC,EAAI5yC,KAAM,CACxC,IAAK6wF,EAAM,CACT,MAAMi0E,GAAU5sH,EAAAA,EAAAA,GAA6BtF,GAC7C,GAAe,MAAXkyH,GAAoB9yH,EAAQW,YAAYmyH,GAErC,CACL,MAAMttH,GAAUF,EAAAA,EAAAA,GAAsBtF,EAAS8yH,IAC/C/yJ,EAAAA,EAAAA,GAAgB,sDAAwDylC,EAC1E,MAJEzlC,EAAAA,EAAAA,GAAgB,iFAKpB,CACA,OAAO,CACT,CAOA,OALAtD,KAAK4xI,KAAKruG,EAAQhyC,MAAQ4yC,EAAI5yC,KAEzB6wF,IACH9+E,EAAAA,EAAAA,GAAiB,kDAAiDigC,EAAQhyC,qBAAqB4yC,EAAI5yC,UAE9F,CACT,CAGO,SAASqiK,EAEdrwH,EACAq0E,GAEA,MAAM0+C,EAAcxzH,EAAAA,EAAUS,EAAQhyC,MAGtC,GAAmB,MAAf+kK,GAAuBA,EAAY/kK,MAAQgyC,EAAQhyC,KACrD,OAAOqmH,EAMT,MAAM2+C,EAAsBv2J,KAAK4xI,KAAKruG,EAAQhyC,MAC9C,IAAKglK,EAAqB,OAAO3+C,EACjC,MAAM4+C,EAAkB7tH,EAAAA,EAAiB4tH,GACzC,OACGC,EAAgB/uH,iBAAmBmwE,EAAanwE,iBAChD+uH,EAAgB7uH,WAAaiwE,EAAajwE,WAC1C6uH,EAAgBxuH,iBAAmB4vE,EAAa5vE,iBAChDwuH,EAAgB3uH,yBAA2B+vE,EAAa/vE,yBACxD2uH,EAAgB1uH,wBAA0B8vE,EAAa9vE,wBACvD0uH,EAAgBtuH,iBAAmB0vE,EAAa1vE,iBAChDsuH,EAAgBpuH,cAAgBwvE,EAAaxvE,cAC7CouH,EAAgBluH,2BAA6BsvE,EAAatvE,2BAC1DkuH,EAAgBhuH,2BAA6BovE,EAAapvE,2BAC1DguH,EAAgB9tH,iBAAmBkvE,EAAalvE,iBAE1Ce,EAAAA,EAAAA,GAA6B+sH,GAG/B5+C,CACT,CAEO,SAASwZ,GAA4B7tF,IACtCkzH,EAAAA,EAAAA,GAAcz2J,KAAKklB,cAAgBllB,KAAKklB,YAAY+kB,cAAgB1G,GACtEvjC,KAAKgyJ,YAAW,GAElB,IAAK,MAAM3oF,KAAUrpE,KAAKuxJ,SACpBpQ,EAAAA,EAAAA,GAAoB93E,EAAOnkD,cAAgBmkD,EAAOnkD,YAAY+kB,cAAgB1G,IAChF8lC,EAAO03E,YACPz9I,EAAAA,EAAAA,GAAiB,YAAWigC,kFAGzBvjC,KAAK4xI,KAAKruG,EACnB,CAOO,SAASsxH,KACd,OAAO9jD,QAAQ/8G,OAAOmY,KAAKnM,KAAK4xI,MAAM5iJ,OACxC,CAEO,SAASijK,KAA+D,IAAvB7vE,EAAO,UAAH,8CAC1D,OAAOpiF,KAAK8yJ,YAAYnqH,EAAAA,EAAiBtE,EAAAA,QAAAA,WAAoB+9C,EAC/D,CAEO,SAAS8vE,KAAyE,IAAvB9vE,EAAO,UAAH,8CACpE,OAAOpiF,KAAK8yJ,YAAYnqH,EAAAA,EAAiBtE,EAAAA,QAAAA,kBAA2B+9C,EACtE,CAEO,SAAS+vE,KAAyD,IAAvB/vE,EAAO,UAAH,8CACpD,OAAOpiF,KAAK8yJ,YAAYnqH,EAAAA,EAAiBtE,EAAAA,QAAAA,KAAc+9C,EACzD,CAEO,SAASgwE,KAAuE,IAAvBhwE,EAAO,UAAH,8CAClE,MAAMn4C,GAAcjoB,EAAAA,EAAAA,GAAc,eAAeo0I,UAAUp2J,KAAK9N,UAChE,IAAK+3C,EAAa,OAAO,EACzB,MAAM1G,EAAUT,EAAAA,EAAUmH,GAC1B,OAAIjqC,KAAKi0J,YAAY1wH,EAASoF,EAAAA,EAAiBtE,EAAAA,QAAAA,cACtCrkC,KAAK8yJ,YAAYnqH,EAAAA,EAAiBtE,EAAAA,QAAAA,aAAsB+9C,IAE1DA,IACH9+E,EAAAA,EAAAA,GAAgB,wDAEX,EAEX,CAEO,SAAS+uJ,KAAsE,IAAvBjwE,EAAO,UAAH,8CACjE,MAAMn4C,GAAcjoB,EAAAA,EAAAA,GAAc,eAAeo0I,UAAUp2J,KAAK9N,UAChE,IAAK+3C,EAAa,OAAO,EACzB,MAAM1G,EAAUT,EAAAA,EAAUmH,GAC1B,GAAIjqC,KAAKi0J,YAAY1wH,EAASoF,EAAAA,EAAiBtE,EAAAA,QAAAA,cAAuB,CACpE,MAAMF,EAAMwE,EAAAA,EAAiBtE,EAAAA,QAAAA,aAC7B,OAAOrkC,KAAK8yJ,YAAY3uH,EAAKi+C,EAC/B,CAIE,OAHKA,IACH9+E,EAAAA,EAAAA,GAAgB,wDAEX,CAEX,CAEO,SAASgvJ,KAA+D,IAAvBlwE,EAAO,UAAH,8CAC1D,OAAOpiF,KAAK8yJ,YAAYnqH,EAAAA,EAAiBtE,EAAAA,QAAAA,WAAoB+9C,EAC/D,CAEO,SAASmwE,KAAyE,IAAvBnwE,EAAO,UAAH,8CACpE,OAAOpiF,KAAK8yJ,YAAYnqH,EAAAA,EAAiBtE,EAAAA,QAAAA,kBAA2B+9C,EACtE,CAEO,SAASowE,KAA+D,IAAvBpwE,EAAO,UAAH,8CAG1D,OAAOpiF,KAAK8yJ,YAAYnqH,EAAAA,EAAiBtE,EAAAA,QAAAA,WAAoB+9C,EAC/D,CAEO,SAASqwE,KAA4D,IAAvBrwE,EAAO,UAAH,8CACvD,MAAMn4C,GAAcjoB,EAAAA,EAAAA,GAAc,eAAeo0I,UAAUp2J,KAAK9N,UAChE,IAAK+3C,EAAa,OAAO,EACzB,MAAM1G,EAAUT,EAAAA,EAAUmH,GAC1B,GAAIjqC,KAAKi0J,YAAY1wH,EAASoF,EAAAA,EAAiBtE,EAAAA,QAAAA,SAAkB,CAC/D,MAAMF,EAAMwE,EAAAA,EAAiBtE,EAAAA,QAAAA,QAC7B,OAAOrkC,KAAK8yJ,YAAY3uH,EAAKi+C,EAC/B,CAIE,OAHKA,IACH9+E,EAAAA,EAAAA,GAAgB,wDAEX,CAEX,CAEO,SAASovJ,KAA+D,IAAvBtwE,EAAO,UAAH,8CAC1D,MAAMn4C,GAAcjoB,EAAAA,EAAAA,GAAc,eAAeo0I,UAAUp2J,KAAK9N,UAChE,IAAK+3C,EAAa,OAAO,EACzB,MAAM1G,EAAUT,EAAAA,EAAUmH,GACpBjR,EAAWqL,EAAAA,QAAAA,SAEjB,QAAKd,EAAQW,YAAYlL,KAGrBh5B,KAAKi0J,YAAY1wH,EAASoF,EAAAA,EAAiB3P,KAC7Ch5B,KAAK4xI,KAAKruG,EAAQhyC,MAAQynC,EAErBopD,IACH9+E,EAAAA,EAAAA,GAAgB,4CAA8CtD,KAAK9N,WAG9D,IAEFkwF,IACH9+E,EAAAA,EAAAA,GAAgB,wDAGX,GAEX,CAEO,SAASqvJ,KAAuE,IAAvBvwE,EAAO,UAAH,8CAClE,MAAMn4C,GAAcjoB,EAAAA,EAAAA,GAAc,eAAeo0I,UAAUp2J,KAAK9N,UAChE,IAAK+3C,EAAa,OAAO,EACzB,MAAM1G,EAAUT,EAAAA,EAAUmH,GACpBjR,EAAWqL,EAAAA,QAAAA,WAEjB,QAAKd,EAAQW,YAAYlL,KAGrBh5B,KAAKi0J,YAAY1wH,EAASoF,EAAAA,EAAiB3P,KAC7Ch5B,KAAK4xI,KAAKruG,EAAQhyC,MAAQynC,EACrBopD,IACH9+E,EAAAA,EAAAA,GAAgB,sDAAwDtD,KAAK9N,WAGxE,IAEFkwF,IACH9+E,EAAAA,EAAAA,GAAgB,wDAGX,GAEX,CAEO,SAASsvJ,KAA6D,IAAvBxwE,EAAO,UAAH,8CACxD,MAAMn4C,GAAcjoB,EAAAA,EAAAA,GAAc,eAAeo0I,UAAUp2J,KAAK9N,UAChE,IAAK+3C,EAAa,OAAO,EACzB,MAAM1G,EAAUT,EAAAA,EAAUmH,GACpBjR,EAAWqL,EAAAA,QAAAA,OAEjB,QAAKd,EAAQW,YAAYlL,KAGrBh5B,KAAKi0J,YAAY1wH,EAASoF,EAAAA,EAAiB3P,KAC7Ch5B,KAAK4xI,KAAKruG,EAAQhyC,MAAQynC,EACrBopD,IACH9+E,EAAAA,EAAAA,GAAgB,wDAA0DtD,KAAK9N,WAE1E,IAEFkwF,IACH9+E,EAAAA,EAAAA,GAAgB,wDAEX,GAEX,CAEO,SAASuvJ,KAAqE,IAAvBzwE,EAAO,UAAH,8CAChE,MAAMn4C,GAAcjoB,EAAAA,EAAAA,GAAc,eAAeo0I,UAAUp2J,KAAK9N,UAChE,IAAK+3C,EAAa,OAAO,EACzB,MAAM1G,EAAUT,EAAAA,EAAUmH,GACpBjR,EAAWqL,EAAAA,QAAAA,SAEjB,QAAKd,EAAQW,YAAYlL,KAGrBh5B,KAAKi0J,YAAY1wH,EAASoF,EAAAA,EAAiB3P,KAC7Ch5B,KAAK4xI,KAAKruG,EAAQhyC,MAAQynC,EACrBopD,IACH9+E,EAAAA,EAAAA,GAAgB,kEAAoEtD,KAAK9N,WAEpF,IAEFkwF,IACH9+E,EAAAA,EAAAA,GAAgB,wDAEX,GAEX,CAGO,SAAS2wJ,GAAgC1wH,EAAkBvK,GAChE,MAAMgQ,EAASzF,EAAQQ,iBACjBkF,EAAajQ,EAASwM,gBAAkB,EAAIxM,EAASwM,gBAAkBwD,EAAS,EAChFE,EAAclQ,EAAS0M,iBAAmB,EAAI1M,EAAS0M,iBAAmBsD,EAAS,EACnFG,EAAanQ,EAAS4M,gBAAkB,EAAI5M,EAAS4M,gBAAkBoD,EAAS,EAChFI,EAAepQ,EAAS8M,kBAAoB,EAAI9M,EAAS8M,kBAAoBkD,EAAS,EACtFK,EAAarQ,EAAS8M,kBAAoB,EAAI9M,EAAS8M,kBAAoBkD,EAAS,EACpFM,EAActQ,EAASkN,iBAAmB,EAAIlN,EAASkN,iBAAmB8C,EAAS,EAEzF,OACEhpC,KAAKoY,OAAOxf,SAAWqwC,GACvBjpC,KAAKoY,OAAOvf,UAAYqwC,GACxBlpC,KAAKoY,OAAOtf,SAAWqwC,GACvBnpC,KAAKoY,OAAOpf,WAAaowC,GACzBppC,KAAKoY,OAAOrf,SAAWswC,GACvBrpC,KAAKoY,OAAOnf,UAAYqwC,GACxB/F,EAAQpvC,kBAAoB6kC,EAASoN,kBAEzC,CAGO,SAAS+tH,KAA2E,IAA/BzqF,IAAmB,UAAH,+CACtEA,GACF1pE,KAAK0pE,mBAGP,IAAK,MAAMgtF,KAAa12J,KAAKtH,cAG3B,GAFgBg+J,EAAUnlK,MAEXC,EAAAA,iBAAAA,mBAMfmR,EAAAA,EAAAA,IAAkB+zJ,GAAW,QAL3B,IAAK,IAAI7lK,EAAI,EAAGA,EAAI6lK,EAAUjlK,QAASZ,GACrC8R,EAAAA,EAAAA,IAAkB+zJ,GAAW,GAOnC12J,KAAK2pE,mBACP,CAEO,SAASyqF,KAId,IAAK,MAAOjkK,EAAIyb,KAAQ5L,KAAKyxJ,YAAa,CACxC,MAAM3lJ,EAAa,aAAe3b,EACT6b,EAAAA,EAAYF,IAKrC6qJ,EAAAA,EAAAA,GAAgBxmK,EAAIyb,GAHlBnI,QAAQC,MAAO,+BAA8BvT,IAIjD,EACA0wF,EAAAA,EAAAA,KACA7gF,KAAK2pE,mBACP,CAMO,SAASyrF,KACd,MAAMwB,EAA6B,GAE7BC,EAAmB72J,KAAKtH,cAAc1J,OAEtC8nK,EAAe9iK,OAAOmY,KAAKnM,KAAK4xI,MAChCmlB,EAAe/iK,OAAOpC,OAAOoO,KAAK4xI,MAYxC,SAASolB,EAA0B/sH,GACjC,MAAM6wE,EAAaC,EAAAA,EAAAA,MAAqBjpH,GAAMA,EAAEkpH,cAAgB/wE,IAE1DgtH,GADSrnK,EAAAA,EAAAA,IAAUkrH,EAAaA,EAAW35E,SAAW,IAC3BpxC,mBAAqB,IAAQ,EAC9D,OACE+mK,EAAajoK,SAASo7C,IAd1B,SAAuBA,GAErB,OADgBnH,EAAAA,EAAUmH,GACX91C,gBACjB,CAW0Ck9H,CAAcpnF,GAAer3C,EAAAA,EAAAA,0BAAsCqkK,CAE7G,CAGA,MAAMC,EAAgBjjK,EAAAA,EAAS5D,EAAAA,YAAAA,aAE5B6mK,EAAcz1E,WACdy1E,EAAcxuI,WACdwuI,EAAc11E,gBACfq1E,GAAoB,IACpB72J,KAAKmL,OAAS,OACdnL,KAAKoY,OAAOxf,SAAW,MACvBoH,KAAKoY,OAAOvf,UAAY,MACxBmH,KAAKoY,OAAOtf,SAAW,MACvBkH,KAAKoY,OAAOpf,WAAa,MACzBgH,KAAKoY,OAAOrf,SAAW,MAEvB69J,EAAgB74J,KAAKm5J,GAIvB,MAAMC,EAAcljK,EAAAA,EAAS5D,EAAAA,YAAAA,WAE1B8mK,EAAY11E,WACZ01E,EAAYzuI,WACZyuI,EAAY31E,gBACbq1E,GAAoBriK,EAAAA,GAAAA,yBACpBwL,KAAKmL,OAAS,OACbnL,KAAKoY,OAAOxf,SAAW,MACrBoH,KAAKoY,OAAOvf,UAAY,MACvBmH,KAAKoY,OAAOtf,SAAW,MACvBkH,KAAKoY,OAAOpf,WAAa,MACzBgH,KAAKoY,OAAOrf,SAAW,OAE3B69J,EAAgB74J,KAAKo5J,GAIvB,MAAMC,EAAcnjK,EAAAA,EAAS5D,EAAAA,YAAAA,cAE1B+mK,EAAY31E,WACZ21E,EAAY1uI,WACZ0uI,EAAY51E,gBACbq1E,GAAoB,IACpB72J,KAAKmL,OAAS,MACdnL,KAAKoY,OAAOxf,SAAW,KACvBoH,KAAKoY,OAAOvf,UAAY,KACxBmH,KAAKoY,OAAOtf,SAAW,KACvBkH,KAAKoY,OAAOpf,WAAa,KACzBgH,KAAKoY,OAAOrf,SAAW,KAEvB69J,EAAgB74J,KAAKq5J,GAIvB,MAAMC,EAAWpjK,EAAAA,EAAS5D,EAAAA,YAAAA,OAEvBgnK,EAAS51E,UACT41E,EAAS3uI,UACT2uI,EAAS71E,iBACVw1E,EAA0Bh0H,EAAAA,YAAAA,QAE1B4zH,EAAgB74J,KAAKs5J,GAIvB,MAAMC,EAAcrjK,EAAAA,EAAS5D,EAAAA,YAAAA,UAE1BinK,EAAY71E,UACZ61E,EAAY5uI,UACZ4uI,EAAY91E,iBACbw1E,EAA0Bh0H,EAAAA,YAAAA,WAE1B4zH,EAAgB74J,KAAKu5J,GAIvB,MAAMC,EAA0BtjK,EAAAA,EAAS5D,EAAAA,YAAAA,mBAEtCknK,EAAwB91E,UACxB81E,EAAwB7uI,UACxB6uI,EAAwB/1E,iBACzBw1E,EAA0Bh0H,EAAAA,YAAAA,uBAE1B4zH,EAAgB74J,KAAKw5J,GAIvB,MAAMC,EAAqBvjK,EAAAA,EAAS5D,EAAAA,YAAAA,iBAEjCmnK,EAAmB/1E,UACnB+1E,EAAmB9uI,UACnB8uI,EAAmBh2E,iBACpBw1E,EAA0Bh0H,EAAAA,YAAAA,kBAE1B4zH,EAAgB74J,KAAKy5J,GAIvB,MAAMC,EAASxjK,EAAAA,EAAS5D,EAAAA,YAAAA,KACnBonK,EAAOh2E,UAAag2E,EAAO/uI,UAAa+uI,EAAOj2E,iBAAkBw1E,EAA0Bh0H,EAAAA,YAAAA,MAC9F4zH,EAAgB74J,KAAK05J,GAIvB,MAAMC,EAAwBzjK,EAAAA,EAAS5D,EAAAA,YAAAA,oBAEpCqnK,EAAsBj2E,UACtBi2E,EAAsBhvI,UACtBgvI,EAAsBl2E,iBACvBw1E,EAA0Bh0H,EAAAA,YAAAA,qBAE1B4zH,EAAgB74J,KAAK25J,GAIvB,MAAMC,EAAyB1jK,EAAAA,EAAS5D,EAAAA,YAAAA,qBAErCsnK,EAAuBl2E,UACvBk2E,EAAuBjvI,UACvBivI,EAAuBn2E,iBACxBw1E,EAA0Bh0H,EAAAA,YAAAA,sBAE1B4zH,EAAgB74J,KAAK45J,GAIvB,MAAMC,EAAe3jK,EAAAA,EAAS5D,EAAAA,YAAAA,WAE3BunK,EAAan2E,UACbm2E,EAAalvI,UACbkvI,EAAap2E,iBACdw1E,EAA0Bh0H,EAAAA,YAAAA,YAE1B4zH,EAAgB74J,KAAK65J,GAIvB,MAAMC,EAA2B5jK,EAAAA,EAAS5D,EAAAA,YAAAA,uBAEvCwnK,EAAyBp2E,UACzBo2E,EAAyBnvI,UACzBmvI,EAAyBr2E,iBAC1Bw1E,EAA0Bh0H,EAAAA,YAAAA,wBAE1B4zH,EAAgB74J,KAAK85J,GAIvB,MAAMC,EAAgC7jK,EAAAA,EAAS5D,EAAAA,YAAAA,2BACzC0nK,GAAsBnoK,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,2BACtC,KAAMkoK,aAA+BjoK,EAAAA,GACnC,MAAM,IAAIshB,MAAO,GAAE/gB,EAAAA,YAAAA,qDACM,MAAvB0nK,EACFt0J,QAAQC,MAAO,kBAAiBrT,EAAAA,YAAAA,oCAE/BynK,EAA8Br2E,UAC9Bq2E,EAA8BpvI,UAC9BovI,EAA8Bt2E,iBAC/Bu2E,EAAoBhoK,oBACpBinK,EAA0Bh0H,EAAAA,YAAAA,sBAE1B4zH,EAAgB74J,KAAK+5J,GAIvB,MAAME,EAAgB/jK,EAAAA,EAAS5D,EAAAA,YAAAA,YACzB4nK,GAAmBroK,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,kBACnC,KAAMooK,aAA4BnoK,EAAAA,GAAS,MAAM,IAAIshB,MAAO,GAAE/gB,EAAAA,YAAAA,sCACtC,MAApB4nK,EACFx0J,QAAQC,MAAO,kBAAiBrT,EAAAA,YAAAA,qBAE/B2nK,EAAcv2E,UACdu2E,EAActvI,WACfuvI,EAAiBloK,mBAChBioK,EAAcx2E,gBAEfo1E,EAAgB74J,KAAKi6J,GAKvB,MAAME,EAAkBjkK,EAAAA,EAAS5D,EAAAA,YAAAA,cAC3B8nK,GAAkBvoK,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,oBAClC,KAAMsoK,aAA2BroK,EAAAA,GAAS,MAAM,IAAIshB,MAAO,GAAE/gB,EAAAA,YAAAA,wCACtC,MAAnB8nK,EACF10J,QAAQC,MAAO,kBAAiBrT,EAAAA,YAAAA,uBAE/B6nK,EAAgBz2E,UAChBy2E,EAAgBxvI,WACjByvI,EAAgBpoK,mBACfmoK,EAAgB12E,gBAEjBo1E,EAAgB74J,KAAKm6J,GAIvB,MAAME,EAAankK,EAAAA,EAAS5D,EAAAA,YAAAA,SACtBgoK,GAAgBzoK,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,eAChC,KAAMwoK,aAAyBvoK,EAAAA,GAAS,MAAM,IAAIshB,MAAO,GAAE/gB,EAAAA,YAAAA,mCACtC,MAAjBgoK,EACF50J,QAAQC,MAAO,kBAAiBrT,EAAAA,YAAAA,kBAE/B+nK,EAAW32E,UACX22E,EAAW1vI,WACZ2vI,EAActoK,mBACbqoK,EAAW52E,gBAEZo1E,EAAgB74J,KAAKq6J,GAIvB,MAAME,EAAerkK,EAAAA,EAAS5D,EAAAA,YAAAA,YAE3BioK,EAAa72E,WACb62E,EAAa5vI,WACb4vI,EAAa92E,gBACdxhF,KAAKmL,OAAS,KACdnL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,WAEbkiK,EAAgB74J,KAAKu6J,GAIvB,MAAMC,EAActkK,EAAAA,EAAS5D,EAAAA,YAAAA,WAE1BkoK,EAAY92E,WACZ82E,EAAY7vI,WACZ6vI,EAAY/2E,gBACbxhF,KAAKmL,OAAS,MACdnL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,UAEbkiK,EAAgB74J,KAAKw6J,GAIvB,MAAMC,EAAcvkK,EAAAA,EAAS5D,EAAAA,YAAAA,WAE1BmoK,EAAY/2E,WACZ+2E,EAAY9vI,WACZ8vI,EAAYh3E,gBACbxhF,KAAKmL,OAAS,KACdnL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,UAEbkiK,EAAgB74J,KAAKy6J,GAIvB,MAAMC,EAAWxkK,EAAAA,EAAS5D,EAAAA,YAAAA,QAEvBooK,EAASh3E,WACTg3E,EAAS/vI,WACT+vI,EAASj3E,gBACVxhF,KAAKmL,OAAS,KACdnL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,OAEbkiK,EAAgB74J,KAAK06J,GAIvB,MAAMC,EAAYzkK,EAAAA,EAAS5D,EAAAA,YAAAA,SAExBqoK,EAAUj3E,WACVi3E,EAAUhwI,WACVgwI,EAAUl3E,gBACXxhF,KAAKmL,OAAS,KACdnL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,QAEbkiK,EAAgB74J,KAAK26J,GAIvB,MAAMC,EAAc1kK,EAAAA,EAAS5D,EAAAA,YAAAA,WAE1BsoK,EAAYl3E,WACZk3E,EAAYjwI,WACZiwI,EAAYn3E,gBACbxhF,KAAKmL,OAAS,KACdnL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,UAEbkiK,EAAgB74J,KAAK46J,GAIvB,MAAMC,EAAwB3kK,EAAAA,EAAS5D,EAAAA,YAAAA,qBAEpCuoK,EAAsBn3E,WACtBm3E,EAAsBlwI,WACtBkwI,EAAsBp3E,gBACvBxhF,KAAKoY,OAAOxf,SAAW,KACvBoH,KAAKoY,OAAOvf,UAAY,KACxBmH,KAAKoY,OAAOtf,SAAW,KACvBkH,KAAKoY,OAAOpf,WAAa,KACzBgH,KAAKoY,OAAOrf,SAAW,KACvBiH,KAAK2xI,iBAAmB,IACxB3xI,KAAK4tE,QAAU,KACdkpF,EAAajoK,SAASwoH,EAAAA,aAAAA,eACtBy/C,EAAajoK,SAASwoH,EAAAA,aAAAA,cAEvBu/C,EAAgB74J,KAAK66J,GAIvB,MAAMC,EAAiB5kK,EAAAA,EAAS5D,EAAAA,YAAAA,cAE7BwoK,EAAep3E,WACfo3E,EAAenwI,WACfmwI,EAAer3E,gBAChBxhF,KAAKoY,OAAOxf,SAAW,KACvBoH,KAAKoY,OAAOvf,UAAY,KACxBmH,KAAKoY,OAAOtf,SAAW,KACvBkH,KAAKoY,OAAOpf,WAAa,KACzBgH,KAAKoY,OAAOrf,SAAW,KACvBiH,KAAK8Y,MAAQpkB,EAAAA,SAAAA,WACbsL,KAAK2xI,iBAAmB,GACxB3xI,KAAK4tE,QAAU,KACdkpF,EAAajoK,SAASwoH,EAAAA,aAAAA,eACtBy/C,EAAajoK,SAASwoH,EAAAA,aAAAA,cAEvBu/C,EAAgB74J,KAAK86J,GAIvB,MAAMC,EAAkB7kK,EAAAA,EAAS5D,EAAAA,YAAAA,eAE9ByoK,EAAgBr3E,WAChBq3E,EAAgBpwI,WAChBowI,EAAgBt3E,gBACjBxhF,KAAKoY,OAAOxf,SAAW,KACvBoH,KAAKoY,OAAOvf,UAAY,KACxBmH,KAAKoY,OAAOtf,SAAW,KACvBkH,KAAKoY,OAAOpf,WAAa,KACzBgH,KAAKoY,OAAOrf,SAAW,MACtBiH,KAAK8Y,MAAQpkB,EAAAA,SAAAA,OAAkBsL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,WAC7CsL,KAAKmL,OAAS,KACdnL,KAAK4tE,QAAU,KACdkpF,EAAajoK,SAASwoH,EAAAA,aAAAA,eACtBy/C,EAAajoK,SAASwoH,EAAAA,aAAAA,cAEvBu/C,EAAgB74J,KAAK+6J,GAIvB,MAAMC,EAAgB9kK,EAAAA,EAAS5D,EAAAA,YAAAA,aAE5B0oK,EAAct3E,WACds3E,EAAcrwI,WACdqwI,EAAcv3E,iBACdu1E,EAAaloK,SAASw1C,EAAAA,QAAAA,YACrB0yH,EAAaloK,SAASw1C,EAAAA,QAAAA,YACtB0yH,EAAaloK,SAASw1C,EAAAA,QAAAA,aACxBrkC,KAAKmL,OAAS,MACdnL,KAAK4tE,QAAU,IAEfgpF,EAAgB74J,KAAKg7J,GAIvB,MAAMC,EAAa/kK,EAAAA,EAAS5D,EAAAA,YAAAA,UAEzB2oK,EAAWv3E,WACXu3E,EAAWtwI,WACXswI,EAAWx3E,iBACXxhF,KAAK8Y,MAAQpkB,EAAAA,SAAAA,WAAsBsL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,UAAqBsL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,SACnFsL,KAAKoY,OAAOvf,UAAY,IACxBmH,KAAKoY,OAAOtf,SAAW,IACvBkH,KAAKoY,OAAOpf,WAAa,IACzBgH,KAAKoY,OAAOrf,SAAW,IACvBiH,KAAK4tE,QAAU,IAEfgpF,EAAgB74J,KAAKi7J,GAIvB,MAAMC,EAAgBhlK,EAAAA,EAAS5D,EAAAA,YAAAA,aAE5B4oK,EAAcx3E,WACdw3E,EAAcvwI,WACduwI,EAAcz3E,gBACfxhF,KAAKoY,OAAOvf,UAAY,IACxBmH,KAAKoY,OAAOtf,SAAW,IACvBkH,KAAKoY,OAAOpf,WAAa,IACzBgH,KAAKoY,OAAOrf,SAAW,IACvBiH,KAAK4tE,QAAU,GACf5tE,KAAKmL,OAAS,KAEdyrJ,EAAgB74J,KAAKk7J,GAIvB,MAAMC,EAAgBjlK,EAAAA,EAAS5D,EAAAA,YAAAA,YAC/B,IAAI8oK,EAAkB,EAClBC,EAAoB,EACpBC,EAAqB,EACzB,IAAK,IAAIxoK,EAAI,EAAGA,EAAImP,KAAK8kI,aAAa91I,SAAU6B,EAAG,CACjD,MAAMorC,EAAIj8B,KAAK8kI,aAAaj0I,GAC5B,GAAiB,iBAANorC,EAAgB,CACzB,MAAM+jE,GAAUpwG,EAAAA,EAAAA,IAAUqsC,GAC1B,GAAgB,OAAZ+jE,KAAsBA,aAAmBzoG,EAAAA,GAC3C,MAAM,IAAI6Z,MAAM,+CAClBioJ,GAAsBr5D,EAAQvuG,MAC9B0nK,GAAmBn5D,EAAQrtG,OAC3BymK,GAAqBp5D,EAAQnsG,KAC/B,MACEwlK,GAAsBp9H,EAAExqC,MACxB0nK,GAAmBl9H,EAAEtoC,IACrBylK,GAAqBn9H,EAAEpoC,KAE3B,EAEGqlK,EAAcz3E,WACdy3E,EAAcxwI,WACdwwI,EAAc13E,gBACfxhF,KAAKoY,OAAOxf,SAAW,IACvBugK,GAAmB,GACnBC,GAAqB,GACrBC,GAAsB,KAEtBzC,EAAgB74J,KAAKm7J,GAIvB,MAAMI,EAAerlK,EAAAA,EAAS5D,EAAAA,YAAAA,YAE3BipK,EAAa73E,WACb63E,EAAa5wI,WACb4wI,EAAa93E,gBACdxhF,KAAKmL,OAAS,KACdnL,KAAKoY,OAAOxf,SAAW,KACtBoH,KAAK8Y,MAAQpkB,EAAAA,SAAAA,WAAsBsL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,UAAqBsL,KAAK8Y,MAAQpkB,EAAAA,SAAAA,SAEnFkiK,EAAgB74J,KAAKu7J,GAIvB,MAAMC,EAActlK,EAAAA,EAAS5D,EAAAA,YAAAA,UACvBmpK,GAAiB5pK,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,gBACjC,KAAM2pK,aAA0B1pK,EAAAA,GAAS,MAAM,IAAIshB,MAAO,GAAE/gB,EAAAA,YAAAA,oCAY5D,OAXsB,MAAlBmpK,EACF/1J,QAAQC,MAAO,kBAAiBrT,EAAAA,YAAAA,mBAE/BkpK,EAAY93E,UACZ83E,EAAY7wI,WACb8wI,EAAezpK,mBACdwpK,EAAY/3E,gBAEbo1E,EAAgB74J,KAAKw7J,GAGhB3C,CACT,CAGO,SAASvB,GAAqCxpJ,GACnD7L,KAAKkyI,SAAWrmI,CAClB,CAEO,SAASkpJ,GAAsCxjK,GACpD,IAAK,MAAM+Q,KAAOtC,KAAK+vJ,oBACrB,GAAIztJ,EAAI/Q,MAAQA,EAEd,YADAkS,QAAQgd,KAAM,kBAAiBlvB,8BAKnC,IAAK,MAAM+Q,KAAOtC,KAAKtH,cACrB,GAAI4J,EAAI/Q,MAAQA,EAEd,YADAkS,QAAQgd,KAAM,kBAAiBlvB,8BAKnCyO,KAAK+vJ,oBAAoBhyJ,KAAK,IAAIoF,EAAAA,EAAwB5R,GAC5D,CAGO,SAAS0jK,GAEd31H,GAEQ,IADRvyB,EAAa,UAAH,6CAAG,EAEb,IAAKuyB,EAAQ,MAAQ,8BAErB,OAAQA,EAAO9oC,MACb,KAAKmqC,EAAAA,GAAAA,kBAA4C,CAC/C,IAAK1sC,EAAAA,EAASqrC,EAAO/tC,MACnB,OAAOyO,KAAKi1J,yBAAyB,CAAEz+J,KAAMmqC,EAAAA,GAAAA,uBAE/C,MAAMu8B,EAAUtqE,EAAAA,EAAAA,iCAA6Cma,EAE7D,OADA9Y,EAAAA,EAASqrC,EAAO/tC,MAAM4C,kBAAoB+oE,EAClC,UAASA,4BAAkC59B,EAAO/tC,MAC5D,CACA,KAAKovC,EAAAA,GAAAA,qBAA+C,CAClD,MAAM63B,EAAY5lE,EAAAA,EAAAA,iCAA6Cma,EAGzD0sJ,EAAkB,CACtBppK,EAAAA,YAAAA,aACAA,EAAAA,YAAAA,iBACAA,EAAAA,YAAAA,uBAEIwP,EAAWG,KAAKH,SAASsa,QAAQ9sB,QAAQ6G,IACrCulK,EAAgB5qK,SAASqF,KAInC,GAAuB,GAAnB2L,EAAS7Q,OACX,OAAOgR,KAAKi1J,yBAAyB,CAAEz+J,KAAMmqC,EAAAA,GAAAA,OAAkC5zB,GAGjF,MAAM2sJ,EAAiBplK,KAAKC,MAAMikE,EAAY34D,EAAS7Q,QACvD,IAAK,MAAMoyF,KAAWvhF,EACf5L,EAAAA,EAASmtF,KACdntF,EAAAA,EAASmtF,GAASjtF,kBAAoBulK,GAExC,MAAQ,UAASA,oDAAiE75J,EAASvC,KAAK,OAClG,CACA,KAAKqjC,EAAAA,GAAAA,kBAA4C,CAC/C,KAAKjY,EAAAA,EAAAA,GAAS,cAAe4W,EAAO/tC,MAClC,OAAOyO,KAAKi1J,yBAAyB,CAAEz+J,KAAMmqC,EAAAA,GAAAA,uBAE/C,MAAMu8B,EAAUtqE,EAAAA,EAAAA,iCAA6Cma,EAE7D,OADA+1B,EAAAA,EAAUxD,EAAO/tC,MAAM4C,kBAAoB+oE,EACnC,UAASA,4BAAkC59B,EAAO/tC,MAC5D,CACA,KAAKovC,EAAAA,GAAAA,MACL,QAAS,CACP,MAAMla,EAAY7zB,EAAAA,EAAAA,4BAAwCma,EAAavY,EAAAA,GAAAA,oBAEvE,OADAwL,KAAKuzJ,UAAU9sI,EAAW,kBAClB,WAAS3b,EAAAA,EAAAA,IAAY2b,IAC/B,EAEJ,CAEO,SAAS+O,GAA2B2nF,GACzC,OAAkB,MAAdlG,EAAAA,EAAOkG,IACT15G,QAAQgd,KAAM,6CAA4C08F,MACnD,IAETn9G,KAAK8Y,KAAOqkG,GAEL,EACT,CAEO,SAAS02C,GAAiC12C,GAC/C,OAAqB,MAAjB1F,EAAAA,EAAU0F,IACZ15G,QAAQgd,KAAM,uDAAsD08F,MAC7D,IAETn9G,KAAK9N,SAAWirH,GAET,EACT,CAEO,SAASk2C,KACd,OAAyB,KAAlBrzJ,KAAKkyI,UAAmBlyI,KAAKu1J,cAAc,IAAM,CAC1D,CAEO,SAASb,GAAgCj0E,GACzCzgF,KAAKsM,SAASzd,SAAS4xF,KAC1BzgF,KAAKsM,SAASvO,KAAK0iF,GACnBxK,EAAAA,GAAAA,KAAoB,kBAAmBC,EAAAA,aAAAA,QAAsB,KAEjE,CAEO,SAASy+E,GAAoCgF,GAClD,MAAM7uK,EAAc2C,EAAAA,EAAaksK,GAC5B7uK,IACAkV,KAAKvS,aAAaM,KAAKK,GAAMA,EAAEF,KAAIW,SAAS8qK,KAC/C35J,KAAKvS,aAAasQ,KAAK,CAAE7P,GAAIyrK,EAAe5uK,YAAY,IAAIO,MAAOswC,YACnEq6C,EAAAA,GAAAA,KAAqB,0BAAyBnrF,EAAYuB,QAAS6pF,EAAAA,aAAAA,QAAsB,MAE7F,CAEO,SAAS0+E,KACd,OAAO50J,KAAKkxJ,aAAa0I,MAC3B,CAEO,SAAStE,KACd,OAAyB,KAAlBt1J,KAAKkyI,UAAmBlyI,KAAKu1J,cAAc,IAAM,CAC1D,CAEO,SAASA,GAAkC1pJ,GAChD,OAAO7L,KAAKyxJ,YAAYj0J,IAAIqO,IAAM,CACpC,CAEO,SAAS6pJ,KACd,IAAIxjI,EAAQ,EAIZ,OAHKlyB,KAAKspE,gBAAgB93E,EAAAA,iBAAAA,sBAAuC,KAC/D0gC,EAAQlyB,KAAKkyB,MAAQ,EAAIt/B,EAAAA,EAAAA,gBAEpBs/B,CACT,8KC1rCO,SAASssG,IACd,OAAOx+H,KAAK2zJ,kBAAkB3yH,iBAAiBnyC,SAASgB,EAAAA,EAAAA,QAC1D,CAEO,SAASsgI,IACd,MAAM/vF,GAASxwC,EAAAA,EAAAA,IAAUoQ,KAAK6wJ,eAC9B,GAAe,OAAXzwH,EAAiB,MAAM,IAAIhvB,MAAO,sDAAqDpR,KAAK6wJ,iBAChG,OAAOzwH,CACT,CAEO,SAASuzH,IACd,MAAMl3E,GAAO7sF,EAAAA,EAAAA,IAAU,QACvB,GAAI6sF,aAAgB3sF,EAAAA,EAAQ,OAAO2sF,EACnC,MAAM,IAAIrrE,MAAM,wCAClB,CAEO,SAAS4/G,IAEd,MAAMvsB,EAAazkG,KAAK2zJ,kBAAkBhhK,OACpC6xG,EAAclwG,KAAKsqG,KAAK6F,GAIxBlkG,EAAOjM,KAAKoO,IAAI,KAAM8hG,GAE5B,OADaC,EAAa7xG,EAAAA,EAAAA,wBAAoC2N,EAAO/L,EAAAA,GAAAA,mBAEvE,CAEO,SAASy8H,IACd,OAAO,IAAM38H,KAAKoO,IAAI,IAAK1C,KAAK2zJ,kBAAkB7gK,SACpD,CAEO,SAASgiK,IACd,MAAM/2D,EAAW/9F,KAAK8kI,aAAa91I,OAC7BuC,GAAOgC,EAAAA,EAAAA,MAAuB,kBAAiBwqG,IAAc,gBAAeA,IAC5E39D,EAAS,IAAI7oC,EAAAA,EAAc,CAC/Bg3I,aAAa,EACbptG,SAAU5vC,EACVwuG,IAAIuuC,EAAAA,EAAAA,QAWN,OARAtuI,KAAK8kI,aAAa/mI,KAAKqiC,EAAOe,WAG9BqtG,EAAAA,EAAAA,IAAgBpuG,GACKpgC,KAAK2zJ,kBACb3yH,iBAAiBjjC,KAAKqiC,EAAOe,UAC1Cf,EAAOY,iBAAiBjjC,KAAKlO,EAAAA,EAAAA,MAEtBuwC,CACT,+BC3DO,SAAS0mD,EAA8BqkD,GACnB,OAArBnrI,KAAKklB,aACPllB,KAAKklB,YAAY20I,QAAO,GAE1B75J,KAAKklB,YAAcimH,CACrB,CACO,SAAS4mB,IAAkD,IAAlB3gF,EAAS,UAAH,6CAAG,EACvD,GAAyB,OAArBpxE,KAAKklB,YAAsB,OAC/B,MAAMs/B,EAAWxkD,KAAKklB,YAAYuE,QAAQ2nD,GACtC5sB,GACFxkD,KAAKgyJ,YAAW,EAEpB,CACO,SAASA,EAA+B8H,EAAoBC,GACxC,OAArB/5J,KAAKklB,cACTllB,KAAKklB,YAAY20I,OAAOC,IAAaC,GACrC/5J,KAAKklB,YAAc,KACnBllB,KAAKkyB,OAAQ,EACf,kTCyBO,MAAM+jI,UAAenG,EAAAA,EAC1B5qI,YAAiC,KAGjCs8H,OAAS,EASTxqE,MAAQ,IAGR56D,aAAe,EAOf66D,KAAO,EAEPn3E,cACEyb,QACAvb,KAAKghJ,eACP,CAEAr+I,kBAAoBq3J,EAAAA,EACpBtY,oBAAsBsY,EAAAA,EAEtBC,aACE,OAAQ,IAAMj6J,KAAKg3E,OAAS,GAC9B,CAEAkjF,YACE,OAAOl6J,KAAKi3E,KAAO,GACrB,CAEA6P,UAAUqkD,GACJnrI,KAAKklB,aAAallB,KAAKklB,YAAY20I,SACvC75J,KAAKklB,YAAcimH,CACrB,CAEA4V,WACM/gJ,KAAKklB,aAAallB,KAAKklB,YAAY20I,SACvC75J,KAAKklB,YAAc,IACrB,CAGA6sG,YAAYv7H,GAEV,OADAwJ,KAAK8mF,UAAU,IAAIqzE,EAAAA,EAAgB3jK,KAC5B,CACT,CAGA4jK,qBAAqBvuJ,GACnB,MAAM2c,EAAMl0B,KAAKguB,MAAMzW,GACvB,GAAI2c,EAAM,EACR,OAAO,EAGT,GAAIxoB,KAAKwhJ,OAASh5H,EAAM,IACtB,OAAOxoB,KAAKo6J,qBAAqB,IAAMp6J,KAAKwhJ,QAK9C,IAAI6Y,EAAW,EACXC,EAAat6J,KAAKwhJ,OAAS,EAC/B,IAAK,IAAI3wJ,EAAI,EAAGA,EAAIgb,IAAKhb,EACvBwpK,GAAY/lK,KAAKoO,IALN,KAKgB43J,KACzBA,EAGJ,OARiB,KAQVD,CACT,CAEAE,oBAAoBj4J,GAClBtC,KAAKrH,IAAIC,QAAU,EACnBoH,KAAKrH,IAAIE,SAAW,EACpBmH,KAAKrH,IAAIG,QAAU,EACnBkH,KAAKrH,IAAIK,UAAY,EACrBgH,KAAKrH,IAAII,QAAU,EACnBiH,KAAKrH,IAAIM,SAAW,EACpB+G,KAAK2C,kBAAkBL,GACvBtC,KAAKtH,cAAcqF,KAAK,CAAExM,KAAM+Q,EAAI/Q,KAAME,MAAO,IACjDuO,KAAK2pE,mBACP,CAGAlqD,WAEEzf,KAAKtH,cAAgB,GACrBsH,KAAK0pE,mBAGL1pE,KAAKrH,IAAIC,QAAU,EACnBoH,KAAKrH,IAAIE,SAAW,EACpBmH,KAAKrH,IAAIG,QAAU,EACnBkH,KAAKrH,IAAIK,UAAY,EACrBgH,KAAKrH,IAAII,QAAU,EACnBiH,KAAKrH,IAAIM,SAAW,EACpB+G,KAAK2pE,oBACL3pE,KAAKolB,GAAGnd,QAAUjI,KAAKolB,GAAG/P,IAG1BrV,KAAK+gJ,WACL/gJ,KAAKghJ,gBAGLhhJ,KAAK8Y,KAAOpkB,EAAAA,SAAAA,SAGZsL,KAAKg3E,MAAQ,IACbh3E,KAAKoc,aAAe,EACpBpc,KAAKi3E,KAAO3iF,KAAK+gB,IAAIrV,KAAKwhJ,OAAQ,EACpC,CAOA/3H,UAA6B,IAArB5J,EAAY,UAAH,6CAAG,EAElB,MAAMoM,EAAkB,IAAOr5B,EAAAA,EAAAA,cAE/B,GADAoN,KAAKoc,cAAgByD,EACjB7f,KAAKoc,aAAe6P,IAAoBjsB,KAAKklB,YAAa,OAC9D,MAAMs1I,EAAalmK,KAAK6c,IAAInR,KAAKoc,aAAc,IAC/Cpc,KAAKg3E,MAAQ1iF,KAAK+gB,IAChB,EACArV,KAAKg3E,MAAQ,MAAS38D,EAAAA,EAAAA,GAA2Bra,KAAKoY,OAAOkC,aAAc,KAAQkgJ,GAErFx6J,KAAKklB,YAAYuE,QAAQzpB,KAAMw6J,GAC/Bx6J,KAAKoc,cAAgBo+I,CACvB,CAEAxZ,gBAEE,OADAhhJ,KAAK8mF,UAAU,IAAI2zE,EAAAA,IACZ,CACT,CAEAxZ,cAEE,OADAjhJ,KAAK8mF,UAAU,IAAI4zE,EAAAA,IACZ,CACT,CAGAxZ,qBAAqB3B,EAAwBvkJ,GAG3C,IAAI06C,EAqBA2lE,EApBJ,OAAQkkC,EAAev/H,eACrB,KAAKq3F,EAAAA,aAAAA,sBAAAA,cACH,GAAIr3G,KAAK8Y,OAASpkB,EAAAA,SAAAA,MAAgB,OAAO,EACzCghD,EAAM2hE,EAAAA,aAAAA,sBACN,MAEF,KAAKA,EAAAA,aAAAA,0BAAAA,cACH,GAAIr3G,KAAK8Y,OAASpkB,EAAAA,SAAAA,SAAmB,OAAO,EAC5CghD,EAAM2hE,EAAAA,aAAAA,0BACN,MAEF,KAAKA,EAAAA,aAAAA,gCAAAA,cACH,GAAIr3G,KAAK8Y,OAASpkB,EAAAA,SAAAA,SAAmB,OAAO,EAC5CghD,EAAM2hE,EAAAA,aAAAA,gCAIV,IAAK3hE,EAAK,OAAO,EAKjB,OAAQ16C,EAAUglB,eAChB,IAAK,yBACL,KAAK26I,EAAAA,UAAAA,gBAAAA,cACHt/C,EAAYuC,EAAAA,oBAAAA,gBACZ,MACF,KAAK+8C,EAAAA,UAAAA,eAAAA,cACHt/C,EAAYuC,EAAAA,oBAAAA,eACZ,MACF,KAAK+8C,EAAAA,UAAAA,SAAAA,cACHt/C,EAAYuC,EAAAA,oBAAAA,SACZ,MACF,KAAK+8C,EAAAA,UAAAA,WAAAA,cACHt/C,EAAYuC,EAAAA,oBAAAA,WACZ,MACF,KAAK+8C,EAAAA,UAAAA,WAAAA,cACHt/C,EAAYuC,EAAAA,oBAAAA,WACZ,MACF,KAAK+8C,EAAAA,UAAAA,WAAAA,cACHt/C,EAAYuC,EAAAA,oBAAAA,WAGhB,QAAKvC,IAELr7G,KAAK8mF,UACH,IAAI8zE,EAAAA,EAAgB,CAClBv/C,UAAWA,EACXnpH,SAAUwjD,MAGP,EACT,CAGAlgB,OAAOqlI,GAIL,OAHA7qK,EAAAA,GAAAA,UAAiB4C,EAAAA,EAAAA,WAAsB,WACvCoN,KAAK8Y,KAAO+hJ,GAEL,CACT,CAEAlZ,mBAAmBr/I,GACjB,QAAKtS,EAAAA,GAAAA,UAAiBsS,EAAI/C,YAKtBS,KAAKspE,gBAAgBhnE,EAAI/Q,QAE7BvB,EAAAA,GAAAA,UAAiBsS,EAAI/C,SAAU,WAC/BS,KAAKu6J,oBAAoBj4J,IAClB,EACT,CAEAw4J,cAAcjvJ,GACZ7L,KAAKwhJ,OAASltJ,KAAK6c,IAAI,IAAK7c,KAAKguB,MAAMtiB,KAAKwhJ,OAAS31I,GACvD,CAMAqlH,eAAejnF,GAEb,QAD4Bj6C,EAAAA,GAAAA,KAAYi6C,KAGxCjqC,KAAK8mF,UAAU,IAAIi0E,EAAAA,EAAkB9wH,KAC9B,EACT,CAGAwnF,eAAeltH,EAA0B62I,GACvC,MAAM4f,EAA6C,CACjD,oBAAqB,UACrB,aAAc,QACd,gBAAiB,YAEfA,EAAmB5f,KAAYA,EAAY4f,EAAmB5f,IAClE,MAAMnwI,EAAUhX,EAAAA,EAASsQ,GACnB82I,GAAWr5H,EAAAA,EAAAA,GAAc,mBAAmBwsD,eAAe4sE,GACjE,IAAKC,EAAU,OAAO,EACtB,MAAMr5D,EAAc/2E,EAAQw1B,UAE5B,OAAQ46G,GACN,KAAKl0D,EAAAA,gBAAAA,MACH,IAAKnF,EAAYqB,eAAgB,OAAO,EACxC,MACF,KAAK8D,EAAAA,gBAAAA,QACH,IAAKnF,EAAYthD,iBAAkB,OAAO,EAC1C,MACF,KAAKymD,EAAAA,gBAAAA,SACH,IAAKnF,EAAYsB,kBAAmB,OAAO,EAW/C,OAPAtjF,KAAK8mF,UACH,IAAIm0E,EAAAA,EAAkB,CACpB/zE,gBAAiBm0D,EACjB92I,YAAaA,MAIV,CACT,CAGA88I,aAAa3B,EAAiB5lI,GAG5B,IAAI47B,EACJ,OAAQgqG,EAAQ1/H,eACd,KAAKq3F,EAAAA,aAAAA,qBAAAA,cACH,GAAIr3G,KAAK8Y,MAAQpkB,EAAAA,SAAAA,MAAgB,OAAO,EACxCghD,EAAM2hE,EAAAA,aAAAA,qBACN,MAEF,KAAKA,EAAAA,aAAAA,oBAAAA,cACH,GAAIr3G,KAAK8Y,MAAQpkB,EAAAA,SAAAA,MAAgB,OAAO,EACxCghD,EAAM2hE,EAAAA,aAAAA,oBACN,MAEF,KAAKA,EAAAA,aAAAA,gBAAAA,cACH,GAAIr3G,KAAK8Y,MAAQpkB,EAAAA,SAAAA,SAAmB,OAAO,EAC3CghD,EAAM2hE,EAAAA,aAAAA,gBACN,MAEF,KAAKA,EAAAA,aAAAA,sBAAAA,cACH,GAAIr3G,KAAK8Y,MAAQpkB,EAAAA,SAAAA,SAAmB,OAAO,EAC3CghD,EAAM2hE,EAAAA,aAAAA,sBACN,MAEF,KAAKA,EAAAA,aAAAA,4BAAAA,cACH,GAAIr3G,KAAK8Y,MAAQpkB,EAAAA,SAAAA,SAAmB,OAAO,EAC3CghD,EAAM2hE,EAAAA,aAAAA,4BAIV,IAAK3hE,EAAK,OAAO,EAGjB,MAAMwlH,EAAwBphJ,EAAKkG,cAGnC,IAAIq7F,EAcJ,OAbI6/C,EAAcrsK,SAAS,SACzBwsH,EAAYE,EAAAA,QAAAA,UAEV2/C,EAAcrsK,SAAS,SACzBwsH,EAAYE,EAAAA,QAAAA,SAEV2/C,EAAcrsK,SAAS,SACzBwsH,EAAYE,EAAAA,QAAAA,WAEV2/C,EAAcrsK,SAAS,SACzBwsH,EAAYE,EAAAA,QAAAA,WAGTF,IAELr7G,KAAK8mF,UACH,IAAI8zE,EAAAA,EAAgB,CAClBv/C,UAAWA,EACXnpH,SAAUwjD,MAIP,EACT,CAGAlmB,YAAY/S,EAAgBuL,GAC1B,IAAKh4B,EAAAA,GAAAA,YAAoB,OAAO,EAChC,OAAQysB,GACN,IAAK,WAEH,OADAzc,KAAK8mF,UAAU,IAAIq0E,EAAAA,EAAsB,CAAE3kK,KAAM,UAAWjF,KAAM,eAC3D,EACT,IAAK,iBACL,IAAK,iBAEH,OADAyO,KAAK8mF,UAAU,IAAIq0E,EAAAA,EAAsB,CAAE3kK,KAAM,UAAWjF,KAAM,qBAC3D,EACT,IAAK,cAEH,OADAyO,KAAK8mF,UAAU,IAAIq0E,EAAAA,EAAsB,CAAE3kK,KAAM,UAAWjF,KAAM,kBAC3D,EACT,IAAK,YAEH,OADAyO,KAAK8mF,UAAU,IAAIq0E,EAAAA,EAAsB,CAAE3kK,KAAM,UAAWjF,KAAM,gBAC3D,EACT,IAAK,kCAEH,OADAyO,KAAK8mF,UAAU,IAAIq0E,EAAAA,EAAsB,CAAE3kK,KAAM,UAAWjF,KAAM,sCAC3D,EACT,IAAK,uBACL,IAAK,uBAEH,OADAyO,KAAK8mF,UAAU,IAAIs0E,EAAAA,IACZ,EACT,IAAK,sBAEH,OADAp7J,KAAK8mF,UAAU,IAAIu0E,EAAAA,IACZ,EACT,IAAK,oBACH,QAAK1tI,EAAAA,EAAU3F,KACfhoB,KAAK8mF,UAAU,IAAIq0E,EAAAA,EAAsB,CAAE3kK,KAAM,YAAajF,KAAMy2B,MAC7D,GAEX,OAAO,CACT,CAEAszI,2BAAmC,MACjC,OAAOhnK,KAAK+gB,IAAI,EAAG/gB,KAAK6c,IAAI,GAAqB,QAAlB,EAAAnhB,EAAAA,GAAAA,mBAAkB,aAAlB,EAAoB4zB,4BAA4B5jB,QAAS,GAC1F,CAEAu7J,sBAAsB/kK,EAAcjF,GAClC,MAAMiqK,EAAKxrK,EAAAA,GAAAA,YACX,GAAW,OAAPwrK,EAAa,CACf,MAAMlxI,EAAgB,sBAEtB,OADA7mB,QAAQC,MAAO,sDAAqD4mB,MAC7D,IACT,CACA,MAAMmxI,EAAUD,EAAG9wI,2CAA2C1qB,KAAMxJ,EAAMjF,GAC1E,MAAuB,iBAAZkqK,GACTh4J,QAAQC,MAAO,sDAAqD+3J,MAC7D,MAELA,EAAQ,IAAM,EACT,OAEC,IAAE76J,EAAAA,EAAAA,IAAc66J,EAAQ,UAAS76J,EAAAA,EAAAA,IAAc66J,EAAQ,KAEnE,CAEAt2I,WAAWqD,GACT,MAAmB,iBAARA,GACT/kB,QAAQgd,KAAM,0DAAyD+H,MAChE,IAGTxoB,KAAKolB,GAAGnd,SAAWugB,EACfxoB,KAAKolB,GAAGnd,SAAW,IACrBjI,KAAKg3E,MAAQ1iF,KAAK6c,IAAI,IAAKnR,KAAKg3E,MAAQ,IACxCh3E,KAAKolB,GAAGnd,QAAUjI,KAAKolB,GAAG/P,KACnB,GAIX,CAEAuR,SACE,MAAO,QACT,CAGA7L,SACE,OAAOC,EAAAA,EAAAA,IAAe,SAAUhb,KAClC,CAGAib,gBAAgBxe,GAA8B,QAC5C,MAAM4sE,GAASnuD,EAAAA,EAAAA,IAAiB+6I,EAAQx5J,EAAM3O,MAU9C,OATc,QAAV,EAACu7E,EAAOjkD,UAAE,OAAT,EAAWnd,SAAqB,QAAV,EAACohE,EAAOjkD,UAAE,OAAT,EAAW/P,MAAKg0D,EAAOjkD,GAAK,CAAEnd,QAAS,GAAIoN,IAAK,KAE5Eg0D,EAAO3wE,cAAgB2wE,EAAO3wE,cAAcrL,QAAQ6V,IAClD8e,EAAAA,EAAAA,GAAc,oBAAoB0G,SAASxlB,EAAS3R,QAEtD83E,EAAO0mF,oBAAsB1mF,EAAO0mF,oBAAoB1iK,QAAQ6V,IAC9D8e,EAAAA,EAAAA,GAAc,oBAAoB0G,SAASxlB,EAAS3R,QAG/C83E,CACT,EAGFluD,EAAAA,GAAAA,OAAgC86I,yDCtezB,MAAMyF,EAAyB,EACzBC,EAAoB,6ICK1B,SAASh5J,EAAgCL,GAC9CtC,KAAKL,OAAQoD,EAAAA,EAAAA,IAAiB/C,KAAKL,MAAO2C,EAAI3C,MAChD,CAEO,SAAS+hJ,IAKd,MAAM13I,EAAgBhK,KAAKtH,cAAc3K,KAAKwX,GAAMA,EAAEhU,OAChDqqK,EAAgC,GAItC,SAASC,EAAqBv5J,GAC5B,GAAI0H,EAAcnb,SAASyT,EAAI/Q,MAAO,OAAO,EAC7C,GAAIqqK,EAAc/sK,SAASyT,GAAM,OAAO,EACxC,GAAIA,EAAI7C,UAAW,OAAO,EAG1B,MAAMq8J,EAAwB,CAC5B,UACA,WACA,UACA,YACA,UACA,WACA,cACA,eACA,cACA,gBACA,cACA,eACA,cACA,cACA,cACA,gBACA,cAEF,IAAK,MAAMv7J,KAAQu7J,EACjB,GAAwB,IAApBx5J,EAAI3C,MAAMY,GAAa,OAAO,EAGpC,OAAO,CACT,CAIA,GAAIvQ,EAAAA,GAAAA,KAAa,CACf,MAAMwwC,EAAMxwC,EAAAA,GAAAA,iBACN+rK,GAAW94E,EAAAA,EAAAA,IAAgCziD,GAEjD,IAAK,MAAMx8B,KAAW+3J,EAAU,CAC9B,MAAMz5J,EAAMQ,EAAAA,EAAckB,GACrB63J,EAAqBv5J,IAEtBk+B,EAAIrsC,kBAAmB0P,EAAAA,EAAAA,IAAWvB,GAAKpC,SACzC07J,EAAc79J,KAAKuE,EAEvB,CACF,CAEA,IAAK,MAAM8+E,KAAWpxF,EAAAA,GAAAA,SAAiB,CACrC,GAAIoxF,IAAY/wF,EAAAA,YAAAA,aAA0B,SAC1C,GAAI+wF,IAAY/wF,EAAAA,YAAAA,WAAwB,SACxC,MAAMmwC,EAAMvsC,EAAAA,EAASmtF,GACrB,GAAK5gD,EAEL,IAAK,MAAMx8B,KAAWw8B,EAAI9nC,cAAe,CACvC,MAAM4J,EAAMQ,EAAAA,EAAckB,GACrB63J,EAAqBv5J,IAEtBk+B,EAAIrsC,kBAAmB0P,EAAAA,EAAAA,IAAWvB,GAAKpC,SACzC07J,EAAc79J,KAAKuE,EAEvB,CACF,CAGA,IAAK0H,EAAcnb,SAAS2C,EAAAA,iBAAAA,MAAyBxB,EAAAA,GAAAA,SAAAA,SAAyBK,EAAAA,YAAAA,uBAAoC,CAChH,MAAMiS,EAAMQ,EAAAA,EAActR,EAAAA,iBAAAA,KAC1BoqK,EAAc79J,KAAKuE,EACrB,CAEA,OAAOs5J,CACT,+HCnFO,MAAM9Z,EAA2B3W,GAChC,OAANA,GAAcA,EAAE30I,OAASwlK,EAAAA,GAAAA,YAEpB,MAAMb,UAA8Bc,EAAAA,GACzCzlK,KAAmCwlK,EAAAA,GAAAA,YACnCE,aAAe,EAIfp8J,YAAYC,GACVwb,QACAvb,KAAKm8J,YAAap8J,aAAM,EAANA,EAAQvJ,OAAQ,UAClCwJ,KAAKqrB,YAAatrB,aAAM,EAANA,EAAQxO,OAAQ,gBACpC,CAEA6qK,aAAa/yF,GAAwB,MACnC,MAAMgvE,EAAwB,QAArB,EAAGroJ,EAAAA,GAAAA,mBAAkB,aAAlB,EAAoBw6B,yBAAyB6+C,EAAQrpE,KAAKm8J,WAAYn8J,KAAKqrB,YACvF,IAAKgtH,GAAsB,iBAARA,EAAkB,MAAM,IAAIjnI,MAAO,kBAAiBpR,KAAKqrB,mBAC5E,OAAOgtH,EAAMzlJ,EAAAA,EAAAA,aACf,CAEA62B,QAAQ4/C,EAAgB+H,GACtB,IAAKphF,EAAAA,GAAAA,YAAoB,OAAOq5E,EAAO03E,WACvC/gJ,KAAKk8J,cAAgB9qF,EACrB,MAAMprD,EAAch2B,EAAAA,GAAAA,YAAAA,2BAA8CgQ,KAAKm8J,WAAYn8J,KAAKqrB,YACxF,IAAKrF,EAAa,MAAM,IAAI5U,MAAO,iBAAgBpR,KAAKqrB,qBACxD,GAAwB,cAApBrrB,KAAKm8J,WAA4B,CACnC,MAAM1/I,EAASzsB,EAAAA,GAAAA,YAAAA,gBAAmCg2B,GAClD,IAAKvJ,EAAQ,MAAM,IAAIrL,MAAO,iBAAgBpR,KAAKqrB,4BACnD,GAAI5O,EAAO9F,OAAS,EAAG,OAAO0yD,EAAO03E,UACvC,CAEA,KAAO/gJ,KAAKk8J,aAAel8J,KAAKo8J,aAAa/yF,IAAS,CACpD,GAAwB,cAApBrpE,KAAKm8J,WAA4B,CACnC,MAAM1/I,EAASzsB,EAAAA,GAAAA,YAAAA,gBAAmCg2B,GAClD,IAAKvJ,EAAQ,MAAM,IAAIrL,MAAO,iBAAgBpR,KAAKqrB,4BACnD,GAAI5O,EAAO9F,OAAS,EAAG,OAAO0yD,EAAO03E,UACvC,CACA,MAAM36H,EAAWp2B,EAAAA,GAAAA,YAAAA,eAAkCq5E,EAAQrjD,GAAa,GACxE,GAAwB,YAApBhmB,KAAKm8J,WAA0B,OACjC,MAAMxjK,EAAqC,QAAlC,EAAG0nB,EAAAA,EAAergB,KAAKqrB,mBAAW,aAA/B,EAAiC1yB,IAC7C,IAAKA,EAAK,MAAM,IAAIyY,MAAO,uCAAsCpR,KAAKm8J,cAAcn8J,KAAKqrB,eACzFgxI,EAAAA,EAAAA,IAAiBhzF,GAAQizF,EAAAA,EAAAA,IAAe3jK,EAAK0wE,EAAO4wF,cAAc,GACpE,CAEwB,cAApBj6J,KAAKm8J,aACPE,EAAAA,EAAAA,IAAiBhzF,GAAQizF,EAAAA,EAAAA,IAAel2I,EAAUijD,EAAO4wF,cAAc,IAEzEj6J,KAAKk8J,cAAgBl8J,KAAKo8J,aAAa/yF,EACzC,CACF,CAEAk4E,QAAQl4E,GACN,MAAO,CACL7yE,KAAMwlK,EAAAA,GAAAA,YACNG,WAAYn8J,KAAKm8J,WACjB9wI,WAAYrrB,KAAKqrB,WACjB6wI,aAAcl8J,KAAKk8J,aACnBE,aAAcp8J,KAAKo8J,aAAa/yF,GAEpC,CAGAtuD,SACE,OAAOC,EAAAA,EAAAA,IAAe,wBAAyBhb,KACjD,CAGAib,gBAAgBxe,GACd,OAAOye,EAAAA,EAAAA,IAAiBigJ,EAAuB1+J,EAAM3O,KACvD,EAGFqtB,EAAAA,GAAAA,sBAA+CggJ,qJC5ExC,MAAMoB,EAAqBpxB,GAC1B,OAANA,GAAcA,EAAE30I,OAASwlK,EAAAA,GAAAA,MAOpB,MAAMpB,UAAwBqB,EAAAA,GACnCzlK,KAA6BwlK,EAAAA,GAAAA,MAI7Bl8J,YAAYC,GACVwb,QACAvb,KAAKq7G,WAAYt7G,aAAM,EAANA,EAAQs7G,YAAauC,EAAAA,oBAAAA,gBACtC59G,KAAK9N,UAAW6N,aAAM,EAANA,EAAQ7N,WAAYmlH,EAAAA,aAAAA,yBACtC,CAEAmlD,eAAenzF,GACb,OAAOizF,EAAAA,EAAAA,KAAenhB,EAAAA,EAAAA,IAAuB9xE,EAAQrpE,KAAKq7G,UAAWr7G,KAAK9N,UAAWm3E,EAAO4wF,cAAc,EAC5G,CAEAwC,QACE,OAAO/zI,EAAAA,EAAAA,GAAS,UAAW1oB,KAAKq7G,UAClC,CAEA5xF,QAAQ4/C,EAAgB+H,GACtB,MAAM7gC,EAAOvwC,KAAKw8J,eAAenzF,IACjCgzF,EAAAA,EAAAA,IAAiBhzF,EAAQ94B,EAAM6gC,EACjC,CAEAmwE,UACE,MAAO,CACL/qJ,KAAMwlK,EAAAA,GAAAA,MACN3gD,UAAWr7G,KAAKq7G,UAChBnpH,SAAU8N,KAAK9N,SAEnB,CAEA6oB,SACE,OAAOC,EAAAA,EAAAA,IAAe,kBAAmBhb,KAC3C,CAGAib,gBAAgBxe,GAGd,OAFMA,EAAM3O,KAAKutH,aAAaC,EAAAA,KAAU7+G,EAAM3O,KAAKutH,UAAY,oBACzD5+G,EAAM3O,KAAKoE,YAAYulH,EAAAA,IAAYh7G,EAAM3O,KAAKoE,SAAWmlH,EAAAA,aAAAA,4BACxDn8F,EAAAA,EAAAA,IAAiB0/I,EAAiBn+J,EAAM3O,KACjD,EAGFqtB,EAAAA,GAAAA,gBAAyCy/I,qLChDlC,MAAMzZ,EAAuBhW,GAC5B,OAANA,GAAcA,EAAE30I,OAASwlK,EAAAA,GAAAA,QAEpB,MAAMjB,UAA0BkB,EAAAA,GACrCzlK,KAA+BwlK,EAAAA,GAAAA,QAG/Bl8J,cAAiD,IAArCmqC,EAAc,UAAH,6CAAGjH,EAAAA,YAAAA,UACxBznB,QACAvb,KAAKiqC,YAAcA,CACrB,CAEAyyH,aACE,OAAO55H,EAAAA,EAAU9iC,KAAKiqC,YACxB,CAEA0yH,aAAatzF,EAAgB/d,GAC3B,MAAM/nB,EAAUvjC,KAAK08J,aACrB,OAAOJ,EAAAA,EAAAA,KACL3gB,EAAAA,EAAAA,IAA0BtyE,EAAQ9lC,EAASoF,EAAAA,EAAiB2iB,GAAM/nB,EAAQlvC,OAC1Eg1E,EAAO4wF,cACP,EAEJ,CAEAxwI,QAAQ4/C,EAAgB+H,GACtB,MAAM7tC,EAAUvjC,KAAK08J,aACfpxG,EAAMt7D,EAAAA,GAAAA,KAAYgQ,KAAKiqC,aAC7B,IAAKqhB,EAAK,OAAO+d,EAAO03E,WACxB,MAAMpqH,EAAQ32B,KAAK28J,aAAatzF,EAAQ/d,IACxC+wG,EAAAA,EAAAA,IAAiBhzF,EAAQ1yC,EAAOy6C,GAChC7tC,EAAQpvC,kBAAoBwiC,EAAMjT,WAAa0tD,GAC/CwrF,EAAAA,EAAAA,IAAiCr5H,EAAS5M,EAAMjT,WAAY0tD,EAC9D,CAEAmwE,UACE,MAAO,CACL/qJ,KAAMwlK,EAAAA,GAAAA,QACN/xH,YAAajqC,KAAKiqC,YAEtB,CAGAlvB,SACE,OAAOC,EAAAA,EAAAA,IAAe,oBAAqBhb,KAC7C,CAGAib,gBAAgBxe,GACd,MAAMqpI,GAAO5qH,EAAAA,EAAAA,IAAiB6/I,EAAmBt+J,EAAM3O,MACvD,OAAK46B,EAAAA,EAAAA,GAAS,cAAeo9G,EAAK77F,aAC3B67F,GADgD+2B,EAAAA,EAAAA,IAEzD,EAGF1hJ,EAAAA,GAAAA,kBAA2C4/I,gKCzDpC,MAAM+B,EAAqB3xB,GAC1B,OAANA,GAAcA,EAAE30I,OAASwlK,EAAAA,GAAAA,MAEpB,MAAM7B,UAAwB8B,EAAAA,GACnCzlK,KAA6BwlK,EAAAA,GAAAA,MAE7BE,aAAe,EACfp8J,YAAYkuE,GACVzyD,QACAvb,KAAKguE,UAAYA,GAAaS,EAAAA,UAAAA,QAChC,CAEAsuF,WACE,OAAO3uF,EAAAA,EAAOpuE,KAAKguE,UACrB,CAEAgvF,OAAO3zF,GACL,OAAOizF,EAAAA,EAAAA,KAAexhB,EAAAA,EAAAA,IAAwBzxE,EAAQrpE,KAAK+8J,YAAa1zF,EAAO4wF,cAAc,EAC/F,CAEAmC,eACE,OAAOp8J,KAAK+8J,WAAWl6I,KAAOjwB,EAAAA,EAAAA,aAChC,CAEA62B,QAAQ4/C,EAAgB+H,GAEtB,GADApxE,KAAKk8J,cAAgB9qF,EACjBpxE,KAAKk8J,aAAel8J,KAAKo8J,eAAgB,OAE7C,MAAMngD,EAAQj8G,KAAK+8J,WACbpmI,EAAQ32B,KAAKg9J,OAAO3zF,GACpB1mD,EAAUruB,KAAK4Q,SAAW+2G,EAAM/tC,YAAY7E,GAC9C1mD,GACF3yB,EAAAA,GAAAA,OAAgBisH,EAAMruC,MAAQvE,EAAO6wF,YACrClqK,EAAAA,GAAAA,iBAA0BisH,EAAMpuC,OAC3Bl3C,EAAMxrB,MAAQ,GACrBkxJ,EAAAA,EAAAA,IAAiBhzF,EAAQ1yC,EAAOhU,EAAU,EAAI,KAC9C3iB,KAAKk8J,cAAgBl8J,KAAKo8J,cAC5B,CAEA7a,UACE,MAAO,CACL/qJ,KAAMwlK,EAAAA,GAAAA,MACNhuF,UAAWhuE,KAAKguE,UAChBkuF,aAAcl8J,KAAKk8J,aACnBE,aAAcp8J,KAAKo8J,eAEvB,CAGArhJ,SACE,OAAOC,EAAAA,EAAAA,IAAe,kBAAmBhb,KAC3C,CAGAib,gBAAgBxe,GAAuC,MACrD,MAAMwgK,GAAY/hJ,EAAAA,EAAAA,IAAiBi/I,EAAiB19J,EAAM3O,MAE1D,OADAmvK,EAAUjvF,WAA0C,QAA9B,GAAAK,EAAAA,EAAAA,GAAU4uF,EAAUjvF,kBAAU,aAA9B,EAAgCx3E,OAAQi4E,EAAAA,UAAAA,SACvDwuF,CACT,EAGF9hJ,EAAAA,GAAAA,gBAAyCg/I,qJCzDlC,MAAM/Y,EAAuBjW,GAC5B,OAANA,GAAcA,EAAE30I,OAASwlK,EAAAA,GAAAA,QAEpB,MAAMf,UAA0BgB,EAAAA,GACrCzlK,KAA+BwlK,EAAAA,GAAAA,QAI/Bl8J,YAAYC,GACVwb,QACAvb,KAAKknF,iBAAkBnnF,aAAM,EAANA,EAAQmnF,kBAAmBC,EAAAA,gBAAAA,QAClDnnF,KAAKuE,aAAcxE,aAAM,EAANA,EAAQwE,cAAelU,EAAAA,YAAAA,QAC5C,CAEA6sK,YAAY7zF,GACV,OAAOizF,EAAAA,EAAAA,KAAehhB,EAAAA,EAAAA,IAAoBjyE,EAAQrpE,KAAKknF,iBAAkB7d,EAAO4wF,cAAc,EAChG,CAEAkD,kBAAkB9zF,GAChB,OAAOkyE,EAAAA,EAAAA,IAAoBlyE,EAAQrpE,KAAKknF,gBAAiBlnF,KAAKo9J,aAAa/oK,OAASg1E,EAAO4wF,YAC7F,CAEAmD,aACE,MAAMlpK,EAAID,EAAAA,EAAS+L,KAAKuE,aACxB,IAAKrQ,EAAG,MAAM,IAAIkd,MAAO,yDAAwDpR,KAAKuE,gBACtF,OAAOrQ,CACT,CAEAu1B,QAAQ4/C,EAAgB+H,GAAgB,MACtC,GAAIpxE,KAAKuE,eAA2B,QAAhB,EAAKvU,EAAAA,GAAAA,YAAW,aAAX,EAAaoxF,SAAS,OAAO/X,EAAO03E,WAE7D,MAAMpoJ,EAAMqH,KAAKk9J,YAAY7zF,IAC7BgzF,EAAAA,EAAAA,IAAiBhzF,EAAQ1wE,EAAKy4E,GAC9B,MAAMrmE,EAAM/K,KAAKm9J,kBAAkB9zF,GACnCrpE,KAAKo9J,aAAajpK,kBAAoB4W,EAAMqmE,CAC9C,CAEAmwE,UACE,MAAO,CACL/qJ,KAAMwlK,EAAAA,GAAAA,QACN90E,gBAAiBlnF,KAAKknF,gBACtB3iF,YAAavE,KAAKuE,YAEtB,CAGAwW,SACE,OAAOC,EAAAA,EAAAA,IAAe,oBAAqBhb,KAC7C,CAGAib,gBAAgBxe,GACd,MAAM4gK,GAAcniJ,EAAAA,EAAAA,IAAiB+/I,EAAmBx+J,EAAM3O,MAG9D,OAFAuvK,EAAYn2E,iBAAkBllE,EAAAA,EAAAA,GAAc,mBAAmBwsD,eAAe6uF,EAAYn2E,iBAAiB,GAC3Gm2E,EAAY94J,aAAcyd,EAAAA,EAAAA,GAAc,eAAewsD,eAAe6uF,EAAY94J,aAAa,GACxF84J,CACT,EAGFliJ,EAAAA,GAAAA,kBAA2C8/I,8FCrE3C,MAAMqC,EAAmB,aAAQ1qK,EAAAA,cAEpB21B,EAA0B4iH,GAC/B,OAANA,GAAcA,EAAE30I,OAASwlK,EAAAA,GAAAA,WAEpB,MAAMZ,UAA6Ba,EAAAA,GACxCzlK,KAAkCwlK,EAAAA,GAAAA,WAClCE,aAAe,EAEfE,eACE,OAAOkB,CACT,CAEA7zI,QAAQ4/C,EAAgB+H,GACtB,IAAKphF,EAAAA,GAAAA,YAAoB,OAAOq5E,EAAO03E,WACvC/gJ,KAAKk8J,cAAgB9qF,EACjBpxE,KAAKk8J,aAAel8J,KAAKo8J,iBAC3Bp8J,KAAKk8J,cAAgBl8J,KAAKo8J,eAC1BpsK,EAAAA,GAAAA,YAAAA,gCAEJ,CAEAuxJ,UACE,MAAO,CACL/qJ,KAAMwlK,EAAAA,GAAAA,WACNE,aAAcl8J,KAAKk8J,aACnBE,aAAcp8J,KAAKo8J,eAEvB,CAGArhJ,SACE,OAAOC,EAAAA,EAAAA,IAAe,uBAAwBhb,KAChD,CAGAib,gBAAgBxe,GACd,OAAOye,EAAAA,EAAAA,IAAiBkgJ,EAAsB3+J,EAAM3O,KACtD,EAGFqtB,EAAAA,GAAAA,qBAA8CigJ,qFCvCvC,MAAMX,UAA2BwB,EAAAA,GACtCzlK,KAAgCwlK,EAAAA,GAAAA,SAEhCvyI,QAAQ4/C,EAAgB+H,GACtB/H,EAAO2N,MAAQ1iF,KAAK+gB,IAClB,EACAg0D,EAAO2N,MAAQ,MAAS38D,EAAAA,EAAAA,GAA2BgvD,EAAOjxD,OAAOkC,aAAc,KAAQ82D,GAErF/H,EAAO2N,OAAS,GAAG3N,EAAO03E,UAChC,CAEAQ,UACE,MAAO,CAAE/qJ,KAAMwlK,EAAAA,GAAAA,SACjB,CAGAjhJ,SACE,OAAOC,EAAAA,EAAAA,IAAe,qBAAsBhb,KAC9C,CAGAib,gBAAgBxe,GACd,OAAOye,EAAAA,EAAAA,IAAiBu/I,EAAoBh+J,EAAM3O,KACpD,EAGFqtB,EAAAA,GAAAA,mBAA4Cs/I,8FC9BrC,MAAMx1I,EAAuBkmH,GAC5B,OAANA,GAAcA,EAAE30I,OAASwlK,EAAAA,GAAAA,QAEpB,MAAMX,UAA0BY,EAAAA,GACrCzlK,KAA+BwlK,EAAAA,GAAAA,QAC/Bl8J,cAAc,MACZyb,QACkB,QAAlB,EAAAvrB,EAAAA,GAAAA,mBAAkB,OAAlB,EAAoBg0B,eAAc,EACpC,CAEAyF,UAEA,CAEAowI,SAAe,MACK,QAAlB,EAAA7pK,EAAAA,GAAAA,mBAAkB,OAAlB,EAAoBg0B,eAAc,EACpC,CAEAu9H,UACE,MAAO,CAAE/qJ,KAAMwlK,EAAAA,GAAAA,QACjB,CAGAjhJ,SACE,OAAOC,EAAAA,EAAAA,IAAe,oBAAqBhb,KAC7C,CAGAib,gBAAgBxe,GACd,OAAOye,EAAAA,EAAAA,IAAiBmgJ,EAAmB5+J,EAAM3O,KACnD,EAGFqtB,EAAAA,GAAAA,kBAA2CkgJ,iGC5BpC,MAAMX,UAA0BuB,EAAAA,GACrCzlK,KAA+BwlK,EAAAA,GAAAA,QAE/BvyI,QAAQ4/C,EAAgB+H,GACtB/H,EAAO4N,KAAO3iF,KAAK6c,IACjB,IACAk4D,EAAO4N,KAAqE,MAA9D58D,EAAAA,EAAAA,GAA2BrqB,EAAAA,GAAAA,OAAAA,aAA4B,IAAgBohF,GAEnF/H,EAAO4N,MAAQ,KAAK5N,EAAO03E,UACjC,CAEAQ,UACE,MAAO,CAAE/qJ,KAAMwlK,EAAAA,GAAAA,QACjB,CAGAjhJ,SACE,OAAOC,EAAAA,EAAAA,IAAe,oBAAqBhb,KAC7C,CAGAib,gBAAgBxe,GACd,OAAOye,EAAAA,EAAAA,IAAiBw/I,EAAmBj+J,EAAM3O,KACnD,EAGFqtB,EAAAA,GAAAA,kBAA2Cu/I,8FCpBpC,MAAM2B,EAAmB,SAAChzF,EAAgBk0F,GAA4C,IAAnBh9J,EAAO,UAAH,6CAAG,GAC/Ei9J,EAAAA,EAAAA,IAAkBn0F,EAAQk0F,EAAch9J,GACxCvQ,EAAAA,GAAAA,UAAiButK,EAAapyJ,MAAQ5K,EAAM,WAC5C,MAAM02E,EAAO5N,EAAO6wF,aAEpBsD,EAAAA,EAAAA,IAAkBxtK,EAAAA,GAAQutK,EAAch9J,EAAO02E,GAE/CjnF,EAAAA,GAAAA,QAAAA,SAAwB8B,GAAMA,IAAMu3E,IAAUm0F,EAAAA,EAAAA,IAAkB1rK,EAAGyrK,EAAch9J,EAAO02E,EAAOnlF,EAAEmoK,eACnG,EAEO,MAAegC,EAKpBpC,SACE,EAIG,IAAKmC,GAUX,SAVWA,GAAAA,EAAc,kBAAdA,EAAc,kBAAdA,EAAc,cAAdA,EAAc,cAAdA,EAAc,oBAAdA,EAAc,kBAAdA,EAAc,0BAAdA,EAAc,wBAAdA,EAAc,kBAUzB,CAVWA,IAAAA,EAAc,4LCTnB,SAASyB,EAAsB93J,GACpC,MAAMG,GAAWC,EAAAA,EAAAA,KAGjB,SAAS4/F,IACP,OAAOrxG,KAAKoO,IAAI,GAAI1S,EAAAA,GAAAA,qBAA8B2rK,EAAAA,CACpD,CAGA,IAAI+B,GAAmB,EAClB1tK,EAAAA,GAAAA,UAAiB21G,OACpB+3D,GAAmB,GAEjB1tK,EAAAA,GAAAA,qBAA8B0rK,EAAAA,IAChCgC,GAAmB,GAiBrB,MAAMC,EAAgB,GACtB,IAAK,IAAI9sK,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,QAAAA,SAAyBa,EAAG,CAC9C,MAAMw4E,EAASr5E,EAAAA,GAAAA,QAAea,GAC9B8sK,EAAc5/J,KAAK,gBAAC,IAA2B,CAACugC,MAAOztC,EAAGiV,SAAUA,EAAUujE,OAAQA,IACxF,CAEA,OACE,gBAAC,IAAK,CAACjjE,KAAMT,EAAMS,KAAMC,QAASV,EAAMU,SACtC,gCACGrW,EAAAA,GAAAA,oBAA6B0rK,EAAAA,GAC5B,gCACE,gBAAC,IAAU,KAAC,sIAEeA,EAAAA,EAAuB,SAAOrrK,EAAAA,YAAAA,YAAwB,KAEjF,gBAAC,IAAM,CAACqW,SAAUg3J,EAAkBt/J,QA7B9C,WACMpO,EAAAA,GAAAA,qBAA8B0rK,EAAAA,IAE9B1rK,EAAAA,GAAAA,UAAiB21G,MACnB31G,EAAAA,GAAAA,UAAiB21G,IAAgB,WACjC31G,EAAAA,GAAAA,qBAA8B,EAC9BA,EAAAA,GAAAA,QAAAA,KAAoB,IAAIimK,EAAAA,GACxBnwJ,MAEAxC,EAAAA,EAAAA,GAAiB,oDAErB,GAkBwE,cAE5D,gBAAC,IAAK,CAAC6H,MAAOw6F,IAAgBloC,aAAa,MAIjD,2BACA,2BACA,gBAAC,IAAU,KAAC,uFACXkgG,GAIT,wJC7DO,SAASC,EAA4Bj4J,GAC1C,MAAO6iB,EAAK+4C,IAAU30E,EAAAA,EAAAA,UAAS,GAa/B,SAASkiI,IACP,GAAI1mH,MAAMogB,GACR,OAAOrkB,IAGT,MAAM05J,EAAY,IAAMl4J,EAAM0jE,OAAOm4E,OACrC,OAAIh5H,EAAMq1I,EACD15J,IAGFwB,EAAM0jE,OAAO+wF,qBAAqB5xI,EAC3C,CAYA,MAAMle,EAAOwkH,IACPgvC,GAAuB9tK,EAAAA,GAAAA,UAAiBsa,GAC9C,IAAIyzJ,EAAqB,iCAYzB,OAVEA,EADE31J,MAAMogB,GACa,gCAAE,iBAGrB,gCAAE,YACUA,EAAI,aACd,gBAAC,IAAK,CAACrd,MAAOb,EAAMmzD,aAAa,KAMrC,gBAAC,IAAK,CAACjyE,GAAI,CAAEuD,GAAI,EAAGoE,EAAG,IACrB,gBAAC,IAAU,CAAChH,QAAQ,KAAKC,MAAM,WAAU,4BACbuZ,EAAM24B,OAElC,gBAAC,IAAU,KAAC,8FACkF,KAC3F0/H,EAAAA,EAAAA,IAAmBr4J,EAAM0jE,OAAOm4E,QAAQ,KAG3C,gBAAC,IAAG,CAAC71J,QAAQ,OAAOC,cAAc,MAAMqa,WAAW,UACjD,gBAAC,IAAU,KAAC,uDACZ,gBAAC,IAAS,CAAC4pB,SA5DjB,SAA8BtqB,GAC5B,IAAIsG,EAAY2vB,SAASj2B,EAAE4qB,OAAO1zB,OAE9B2L,MAAMyD,KAAIA,EAAI,GACdA,EAAI,IAAGA,EAAI,GACf,MAAMgyJ,EAAY,IAAMl4J,EAAM0jE,OAAOm4E,OACjC31I,EAAIgyJ,IAAWhyJ,EAAIgyJ,GAEvBt8F,EAAO11D,EACT,EAmDiDrV,KAAM,SAAUiG,MAAO+rB,KAEpE,2BACA,gBAAC,IAAM,CAAC9hB,SAAUo3J,EAAqB1/J,QAvC3C,WACE,MAAMkM,EAAOwkH,IACT9+H,EAAAA,GAAAA,UAAiBsa,KACnB3E,EAAM0jE,OAAOyxF,cAActyI,GAC3Bx4B,EAAAA,GAAAA,UAAiBsa,EAAM,WACvB3E,EAAMG,WAEV,GAiCOi4J,GAIT,iGCpFO,SAASE,EAAS,GAA+C,IAA/C,KAAE73J,EAAI,QAAEC,GAAiB,EAChD,OACE,gBAAC,IAAK,CAACD,KAAMA,EAAMC,QAASA,GAC1B,gCACE,gBAAC,IAAU,CAACla,QAAQ,MAAK,kCACzB,2BACA,gBAAC,IAAU,KAAC,4OAKZ,2BACA,2BACA,gBAAC,IAAU,KAAC,iGAGZ,2BACA,2BACA,gBAAC,IAAU,KAAC,wJAIZ,2BACA,2BACA,gBAAC,IAAU,CAACA,QAAQ,MAAK,mCACzB,2BACA,gBAAC,IAAU,KAAC,wOAKZ,2BACA,2BACA,gBAAC,IAAU,KAAC,4SAKZ,2BACA,2BACA,gBAAC,IAAU,KAAC,oFACZ,2BACA,2BACA,gBAAC,IAAU,CAACA,QAAQ,MAAK,kBACzB,2BACA,gBAAC,IAAU,KAAC,iQAKZ,2BACA,2BACA,gBAAC,IAAU,KAAC,uJAIZ,2BACA,2BACA,gBAAC,IAAU,CAACA,QAAQ,MAAK,iDACzB,2BACA,gBAAC,IAAU,KAAC,iOAKZ,2BACA,2BACA,gBAAC,IAAU,CAACA,QAAQ,MAAK,8CACzB,2BACA,gBAAC,IAAU,KAAC,wFACZ,2BACA,2BACA,gBAAC,IAAU,CAACA,QAAQ,MAAK,qDACzB,2BACA,gBAAC,IAAU,KAAC,+BACmBkE,EAAAA,YAAAA,aAAyB,gKAGxD,2BACA,2BACA,gBAAC,IAAU,CAAClE,QAAQ,MAAK,6EACzB,2BACA,gBAAC,IAAU,KAAC,0JAIZ,2BACA,2BACA,gBAAC,IAAU,CAACA,QAAQ,MAAK,mBACzB,2BACA,gBAAC,IAAU,KAAC,oPAKZ,2BACA,2BACA,gBAAC,IAAU,KAAC,4DACgDkE,EAAAA,YAAAA,YAAwB,gIAM5F,kICpGO,SAAS6tK,EAAev4J,GAC7B,OACE,gBAAC,IAAK,CAACS,KAAMT,EAAMS,KAAMC,QAASV,EAAMU,SACtC,gBAAC,IAAU,CACT2B,KAAM,CACJ,CAAC,gCAAE,aAAmBrC,EAAM0jE,OAAOjxD,OAAOxf,QAAS,gCAAE,MAAQ4uB,EAAAA,EAAAA,IAAU7hB,EAAM0jE,OAAO1wE,IAAIC,SAAS,UACjG,CAAC,gCAAE,cAAoB+M,EAAM0jE,OAAOjxD,OAAOvf,SAAU,gCAAE,MAAQ2uB,EAAAA,EAAAA,IAAU7hB,EAAM0jE,OAAO1wE,IAAIE,UAAU,UACpG,CAAC,gCAAE,aAAmB8M,EAAM0jE,OAAOjxD,OAAOtf,QAAS,gCAAE,MAAQ0uB,EAAAA,EAAAA,IAAU7hB,EAAM0jE,OAAO1wE,IAAIG,SAAS,UACjG,CACE,gCAAE,eACF6M,EAAM0jE,OAAOjxD,OAAOpf,UACpB,gCAAE,MAAQwuB,EAAAA,EAAAA,IAAU7hB,EAAM0jE,OAAO1wE,IAAIK,WAAW,UAElD,CAAC,gCAAE,aAAmB2M,EAAM0jE,OAAOjxD,OAAOrf,QAAS,gCAAE,MAAQyuB,EAAAA,EAAAA,IAAU7hB,EAAM0jE,OAAO1wE,IAAII,SAAS,UACjG,CAAC,gCAAE,cAAoB4M,EAAM0jE,OAAOjxD,OAAOnf,SAAU,gCAAE,MAAQuuB,EAAAA,EAAAA,IAAU7hB,EAAM0jE,OAAO1wE,IAAIM,UAAU,WAEtGiN,MAAM,WAER,2BACA,gBAAC,IAAU,CACT8B,KAAM,CACJ,CAAC,gCAAE,+BAAoCpH,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAM/G,UACxE,CAAC,gCAAE,oCAAyCgI,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAMmB,cAC7E,CAAC,gCAAE,gCAAqCF,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAM9G,WACzE,CAAC,gCAAE,qCAA0C+H,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAMoB,eAC9E,CAAC,gCAAE,+BAAoCH,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAM7G,UACxE,CAAC,gCAAE,oCAAyC8H,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAMqB,cAC7E,CAAC,gCAAE,iCAAsCJ,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAM3G,YAC1E,CAAC,gCAAE,sCAA2C4H,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAMsB,gBAC/E,CAAC,gCAAE,+BAAoCL,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAM5G,UACxE,CAAC,gCAAE,oCAAyC6H,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAMuB,cAC7E,CAAC,gCAAE,gCAAqCN,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAM1G,WACzE,CAAC,gCAAE,qCAA0C2H,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAMwB,eAC9E,CAAC,gCAAE,yCAA8CP,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAM6B,cAClF,CAAC,gCAAE,yCAA8CZ,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAM8B,cAClF,CAAC,gCAAE,wBAA6Bb,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAMiC,aACjE,CAAC,gCAAE,6BAAkChB,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAM+B,cACtE,CAAC,gCAAE,+BAAoCd,EAAAA,EAAAA,IAAc+E,EAAM0jE,OAAO1pE,MAAMgC,iBAE1EuE,MAAM,iBAIPP,EAAM0jE,OAAOjtD,aAAe,IAC3B,gBAAC,IAAU,CAAC5wB,GAAI,CAAE6c,GAAI,IAAK,gBACZqoB,EAAAA,EAAAA,IAAiC/qB,EAAM0jE,OAAOjtD,aAAexpB,EAAAA,EAAAA,gBAKpF,6ICnDO,SAASurK,EAAyBx4J,GACvC,MAAMG,GAAWC,EAAAA,EAAAA,GAAY,KAGvBiE,EAAgBrE,EAAM0jE,OAAO3wE,cAAc3K,KAAKwX,GAAMA,EAAEhU,OAKxDqqK,EAAgBj2J,EAAM0jE,OAAOq4E,sBAEnC,OACE,gBAAC,IAAK,CAACt7I,KAAMT,EAAMS,KAAMC,QAASV,EAAMU,SACtC,gBAAC,IAAS,CAAC2L,UAAWC,EAAAA,EAAO/iB,gBAAc,EAAC5C,SAAS,KAAKd,GAAI,CAAEwa,GAAI,EAAGta,GAAI,EAAGyH,EAAG,IAC/E,gBAAC,IAAU,KAAC,0MAGV,2BACA,2BAAM,iLAGN,2BACA,2BAAM,8DAIV,gBAAC,IAAwB,CACvByW,SAAUgyJ,EAAc7tK,KAAKuU,GAAQA,EAAI/Q,OACzCyY,cAAeA,EACfU,YAAcpI,GACLtS,EAAAA,GAAAA,MAAesS,EAAI/C,SAE5BkL,qBAAuBnI,IACrBqD,EAAM0jE,OAAOs4E,mBAAmBr/I,GAChCwD,GAAU,EAEZA,SAAUA,EACVyE,YAAU,IAIlB,qQCWO,SAAS6zJ,EAAWz4J,GACzB,MAAO04J,EAAWC,IAAgB1xK,EAAAA,EAAAA,WAAS,IACpC4nC,EAAYC,IAAiB7nC,EAAAA,EAAAA,WAAS,IACtC2xK,EAAmBC,IAAwB5xK,EAAAA,EAAAA,WAAS,IAEpD6xK,EAAKC,IAAU9xK,EAAAA,EAAAA,UAAS,CAAC,SAAU,SAAU,WAqCpD,IAAI6jC,EAAW,EACXkuI,EAAa,iCACjB,MAAM74B,EAAOngI,EAAM0jE,OAAOnkD,YAC1B,GAAI4gH,EACF,OAAQA,EAAKtvI,MACX,KAAKwlK,EAAAA,GAAAA,YACL,KAAKA,EAAAA,GAAAA,MACL,KAAKA,EAAAA,GAAAA,WACHvrI,EAAWq1G,EAAKo2B,aAAep2B,EAAKs2B,aAAaz2J,EAAM0jE,QACvDs1F,EAAa,gBAAC,IAAW,CAACxyK,QAAQ,cAAcsQ,MAAkB,IAAXg0B,EAAgBrkC,MAAM,YAGnF,MAAMyU,EAvGR,SAA4BwoE,EAAgB54C,GAC1C,MAAMq1G,EAAOz8D,EAAOnkD,YACpB,IAAK4gH,EAAM,MAAO,iCAClB,OAAQA,EAAKtvI,MACX,KAAKwlK,EAAAA,GAAAA,QACH,MAAQ,gDAA+Cl2B,EAAK77F,cAC9D,KAAK+xH,EAAAA,GAAAA,QACH,MAAO,0EACT,KAAKA,EAAAA,GAAAA,MACH,MAAQ,4BAA2Bl2B,EAAK22B,QAAU,cAAgB,iBAAiB32B,EAAK5zI,WAC1F,KAAK8pK,EAAAA,GAAAA,SACH,MAAO,wHACT,KAAKA,EAAAA,GAAAA,QACH,MAAO,qIACT,KAAKA,EAAAA,GAAAA,YACH,MACG,kDAAiDl2B,EAAKz6G,6BAC1CzqB,EAAAA,EAAAA,IAAc6vB,KAE/B,KAAKurI,EAAAA,GAAAA,MAAsB,CACzB,MAAM//C,EAAQ6pB,EAAKi3B,WACnB,MACG,uCAAsC9gD,EAAMvuC,4BAA2B9sE,EAAAA,EAAAA,IACtEq7G,EAAM/tC,YAAY7E,uBACKzoE,EAAAA,EAAAA,IAAc6vB,IAE3C,CACA,KAAKurI,EAAAA,GAAAA,QAQH,MAAQ,kCANU,CAChB,CAAC70E,EAAAA,gBAAAA,OAAwB,aACzB,CAACA,EAAAA,gBAAAA,SAA0B,oBAC3B,CAACA,EAAAA,gBAAAA,UAA2B,iBAEN2+C,EAAK5+C,kBAAoB,iBACK4+C,EAAKvhI,eAE7D,KAAKy3J,EAAAA,GAAAA,WACH,MAEG,+MAAYp7J,EAAAA,EAAAA,IAAc6vB,KAGnC,CA4DemuI,CAAmBj5J,EAAM0jE,OAAQ54C,GAC9C,OACE,gCACE,gBAAC,IAAK,CAACjlC,GAAI,CAAE2H,EAAG,EAAGxH,QAAS,OAAQ8a,oBAAqB,UAAW3Z,MAAO,OAAQ+Z,IAAK,IACtF,4BACE,gBAAC,IAAY,CAACwiE,OAAQ1jE,EAAM0jE,SAC5B,gBAAC,IAAG,CAAC19E,QAAQ,OAAOH,GAAI,CAAEib,oBAAqB,UAAW3Z,MAAO,SAC/D,gBAAC,IAAM,CAACsR,QAAS,IAAMkgK,GAAa,IAAO,cAC3C,gBAAC,IAAO,CAACp4J,MAAOlW,EAAAA,GAAAA,MAAe4C,EAAAA,EAAAA,WAAuB,gBAAC,IAAU,KAAC,sBAAkC,IAClG,4BACE,gBAAC,IAAM,CACLwL,QAAS,IAAMq2B,GAAc,GAC7B/tB,SAAU1W,EAAAA,GAAAA,MAAe4C,EAAAA,EAAAA,WACzBpH,GAAI,CAAEsB,MAAO,OAAQC,OAAQ,SAC9B,YAKL,gBAAC,IAAO,CACNmZ,MAAOP,EAAM0jE,OAAO2N,MAAQ,EAAI,gBAAC,IAAU,KAAC,4CAAwD,IAEpG,4BACE,gBAAC,IAAM,CACL54E,QAAS,IAAMogK,GAAqB,GACpC93J,SAAUf,EAAM0jE,OAAO2N,MAAQ,EAC/BxrF,GAAI,CAAEsB,MAAO,OAAQC,OAAQ,SAC9B,4BAOT,4BACE,gBAAC,IAAe,CAACs8E,OAAQ1jE,EAAM0jE,SAC/B,gBAAC,IAAY,CAACA,OAAQ1jE,EAAM0jE,OAAQq1F,OAAQA,IAC5C,gBAAC,IAAM,CAACtgK,QApFhB,WAAyB,MACvB,OAAQqgK,EAAI,IACV,IAAK,SACH,MACF,IAAK,oBACCz8I,EAAAA,EAAAA,GAAc,eAAe0G,SAAS+1I,EAAI,IAAK94J,EAAM0jE,OAAO6nD,eAAeutC,EAAI,IAC9Eh7J,QAAQC,MAAO,0CAAyC+6J,EAAI,MACjE,MACF,IAAK,oBACCz8I,EAAAA,EAAAA,GAAc,eAAe0G,SAAS+1I,EAAI,IAAK94J,EAAM0jE,OAAOooD,eAAegtC,EAAI,GAAIA,EAAI,IACtFh7J,QAAQC,MAAO,0CAAyC+6J,EAAI,MACjE,MACF,IAAK,eACH94J,EAAM0jE,OAAO0oD,aAA6B,QAAjB,GAAA1jD,EAAAA,EAAAA,GAAUowF,EAAI,WAAG,aAAjB,EAAmBjoK,OAAQi4E,EAAAA,UAAAA,UACpD,MACF,IAAK,yBACH9oE,EAAM0jE,OAAO63E,qBAAqBud,EAAI,GAAIA,EAAI,IAC9C,MACF,IAAK,iBACH94J,EAAM0jE,OAAOg4E,aAAaod,EAAI,GAAIA,EAAI,IACtC,MACF,IAAK,8BACH94J,EAAM0jE,OAAO75C,YAAYivI,EAAI,GAAIA,EAAI,IACrC,MACF,IAAK,iBACH94J,EAAM0jE,OAAO23E,gBACb,MACF,IAAK,cACHr7I,EAAM0jE,OAAO43E,cACb,MACF,QACEx9I,QAAQC,MAAO,sDAAqD+6J,EAAI,MAE5E94J,EAAMG,UACR,EAkDkCta,GAAI,CAAEsB,MAAO,SAAU,YAGjD,gBAAC,IAAU,CAACmS,WAAY,YAAa4B,GACpC89J,IAGL,gBAAC,IAAc,CAACv4J,KAAMi4J,EAAWh4J,QAAS,IAAMi4J,GAAa,GAAQj1F,OAAQ1jE,EAAM0jE,SACnF,gBAAC,IAAW,CACVjjE,KAAMouB,EACNnuB,QAAS,IAAMouB,GAAc,GAC7B40C,OAAQ1jE,EAAM0jE,OACdvjE,SAAUH,EAAMG,WAElB,gBAAC,IAAwB,CACvBM,KAAMm4J,EACNl4J,QAAS,IAAMm4J,GAAqB,GACpCn1F,OAAQ1jE,EAAM0jE,SAItB,wJCxKO,SAASw1F,IACd,MAAOC,EAASC,IAAcnyK,EAAAA,EAAAA,WAAS,GACjCkZ,GAAWC,EAAAA,EAAAA,GAAY,KAE7B,OACE,gCACE,gBAAC,IAAS,CAAC7W,gBAAc,EAAC5C,SAAS,KAAKd,GAAI,CAAEwa,GAAI,IAChD,gBAAC,IAAU,CAAC7Z,QAAQ,MAAK,WACzB,gBAAC,IAAU,KAAC,qLAGV,2BACA,2BAAM,iEAEN,2BACA,6BAIJ,gBAAC,IAAM,CAACiS,QAAS,IAAM2gK,GAAW,IAAO,OACzC,gBAAC,IAAG,CAACpzK,QAAQ,OAAOH,GAAI,CAAEib,oBAAqB,iBAAkBlX,GAAI,IAClES,EAAAA,GAAAA,QAAAA,KAAmB,CAACq5E,EAAQx4E,IAC3B,gBAAC,IAAU,CAACvB,IAAKuB,EAAGiV,SAAUA,EAAUujE,OAAQA,OAGpD,gBAAC,IAAQ,CAACjjE,KAAM04J,EAASz4J,QAAS,IAAM04J,GAAW,KAGzD,4QCVA,MAAMC,EAAiB,IAAOpsK,EAAAA,EAAAA,cAMvB,SAASqsK,EAAat5J,GAC3B,MAAM5K,GAAUT,EAAAA,EAAAA,MAEhB,OACE,gBAAC,IAAK,CAAC9O,GAAI,CAAEG,QAAS,QAASD,GAAI,EAAGoB,MAAO,SAC3C,gBAAC,IAAS,KACR,gBAAC,IAAQ,CAACyE,KAAK,OAAOnF,MAAOhB,EAAAA,EAAAA,MAAAA,QAAwB0C,KAAM,CAAE0B,QAASmW,EAAM0jE,OAAOvwD,QACnF,gBAAC,IAAQ,CACPvnB,KAAK,KACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,GACP0C,KAAM,CACJ0B,QAAU,IAAE0vK,EAAAA,EAAAA,IAASv5J,EAAM0jE,OAAOjkD,GAAGnd,eAAci3J,EAAAA,EAAAA,IAASv5J,EAAM0jE,OAAOjkD,GAAG/P,UAGhF,gBAAC,IAAQ,CACP9jB,KAAK,UACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,KACP0C,KAAM,CAAE2D,MAAOkU,EAAM0jE,OAAOjxD,OAAOxf,QAASD,IAAKgN,EAAM0jE,OAAO1wE,IAAIC,WAEpE,gBAAC,IAAQ,CACPrH,KAAK,WACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CAAE2D,MAAOkU,EAAM0jE,OAAOjxD,OAAOvf,SAAUF,IAAKgN,EAAM0jE,OAAO1wE,IAAIE,YAErE,gBAAC,IAAQ,CACPtH,KAAK,UACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CAAE2D,MAAOkU,EAAM0jE,OAAOjxD,OAAOtf,QAASH,IAAKgN,EAAM0jE,OAAO1wE,IAAIG,WAEpE,gBAAC,IAAQ,CACPvH,KAAK,YACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CAAE2D,MAAOkU,EAAM0jE,OAAOjxD,OAAOpf,UAAWL,IAAKgN,EAAM0jE,OAAO1wE,IAAIK,aAEtE,gBAAC,IAAQ,CACPzH,KAAK,UACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CAAE2D,MAAOkU,EAAM0jE,OAAOjxD,OAAOrf,QAASJ,IAAKgN,EAAM0jE,OAAO1wE,IAAII,WAEpE,gBAAC,IAAQ,CACPxH,KAAK,WACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,IACP0C,KAAM,CAAE2D,MAAOkU,EAAM0jE,OAAOjxD,OAAOnf,SAAUN,IAAKgN,EAAM0jE,OAAO1wE,IAAIM,YAErE,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAC8B,QAAS,CAAEL,KAAMK,EAAQogG,WAClC,6BAGJ,gBAAC,IAAQ,CACP5pG,KAAK,QACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,QACP0C,KAAM,CAAE0B,SAAS2vK,EAAAA,EAAAA,IAAkBx5J,EAAM0jE,OAAO2N,UAElD,gBAAC,IAAQ,CACPzlF,KAAK,OACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,QACP0C,KAAM,CAAE0B,SAAS4vK,EAAAA,EAAAA,IAAoBz5J,EAAM0jE,OAAO4N,SAEpD,gBAAC,IAAQ,CACP1lF,KAAK,SACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,QACP0C,KAAM,CAAE0B,SAASwuK,EAAAA,EAAAA,IAAmBr4J,EAAM0jE,OAAOm4E,YAK3D,CAEO,SAAS6d,EAAgB15J,GAC9B,MAAM5K,GAAUT,EAAAA,EAAAA,MAEhB,IAAIxM,EAAmC,GACvC,IAAIgvK,EAAAA,EAAAA,GAAkBn3J,EAAM0jE,OAAOnkD,aAAc,CAC/C,MAAMyR,EAAQhxB,EAAM0jE,OAAOnkD,YAAY83I,OAAOr3J,EAAM0jE,QACpDv7E,EAAO,CACL,CAAE,SAAS,gBAAC,IAAK,CAACwB,IAAI,QAAQ6b,MAAOwrB,EAAMxrB,SAC3C,CAAE,eAAgB,IAAEqc,EAAAA,EAAAA,IAAUmP,EAAMxT,YACpC,CAAE,gBAAiB,IAAEqE,EAAAA,EAAAA,IAAUmP,EAAMvT,WACrC,CAAE,eAAgB,IAAEoE,EAAAA,EAAAA,IAAUmP,EAAMtT,WACpC,CAAE,iBAAkB,IAAEmE,EAAAA,EAAAA,IAAUmP,EAAMrT,WACtC,CAAE,eAAgB,IAAEkE,EAAAA,EAAAA,IAAUmP,EAAMpT,WACpC,CAAE,gBAAiB,IAAEiE,EAAAA,EAAAA,IAAUmP,EAAMnT,WAEzC,CACA,IAAI+4I,EAAAA,EAAAA,GAAkB52J,EAAM0jE,OAAOnkD,aAAc,CAC/C,MAAMo6I,EAAQ35J,EAAM0jE,OAAOnkD,YAAYs3I,eAAe72J,EAAM0jE,QAC5Dv7E,EAAO,CACL,CAAE,SAAS,gBAAC,IAAS,CAACwB,IAAI,aAAa6b,MAAO6zJ,EAAiBM,EAAMn0J,SACrE,CAAE,eAAgB,IAAEqc,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMn8I,kBACrD,CAAE,gBAAiB,IAAEqE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMl8I,iBACtD,CAAE,eAAgB,IAAEoE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMj8I,iBACrD,CAAE,iBAAkB,IAAEmE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMh8I,iBACvD,CAAE,eAAgB,IAAEkE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAM/7I,iBACrD,CAAE,gBAAiB,IAAEiE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAM97I,iBAE1D,CACA,IAAI49H,EAAAA,EAAAA,GAAoBz7I,EAAM0jE,OAAOnkD,aAAc,CACjD,MAAMo6I,EAAQ35J,EAAM0jE,OAAOnkD,YAAYg4I,YAAYv3J,EAAM0jE,QACnDnM,EAAUv3D,EAAM0jE,OAAOnkD,YAAYi4I,kBAAkBx3J,EAAM0jE,QACjEv7E,EAAO,CACL,CAAE,eAAgB,IAAE05B,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMn8I,kBACrD,CAAE,gBAAiB,IAAEqE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMl8I,iBACtD,CAAE,eAAgB,IAAEoE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMj8I,iBACrD,CAAE,iBAAkB,IAAEmE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMh8I,iBACvD,CAAE,eAAgB,IAAEkE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAM/7I,iBACrD,CAAE,gBAAiB,IAAEiE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAM97I,iBACtD,CAAE,cAAc,gBAAC,IAAc,CAACl0B,IAAI,kBAAkBo0B,WAAYs7I,EAAiB9hG,KAEvF,CAEAqiG,EAAa,IAAIpe,EAAAA,EAAAA,GAAoBx7I,EAAM0jE,OAAOnkD,aAAc,CAC9D,MAAMomC,EAAMt7D,EAAAA,GAAAA,KAAY2V,EAAM0jE,OAAOnkD,YAAY+kB,aACjD,IAAKqhB,EAAK,MAAMi0G,EAChB,MAAMD,EAAQ35J,EAAM0jE,OAAOnkD,YAAYy3I,aAAah3J,EAAM0jE,OAAQ/d,GAClEx9D,EAAO,CACL,CAAE,SAAS,gBAAC,IAAS,CAACwB,IAAI,aAAa6b,MAAO6zJ,EAAiBM,EAAMn0J,SACrE,CAAE,eAAgB,IAAEqc,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMn8I,kBACrD,CAAE,gBAAiB,IAAEqE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMl8I,iBACtD,CAAE,eAAgB,IAAEoE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMj8I,iBACrD,CAAE,iBAAkB,IAAEmE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAMh8I,iBACvD,CAAE,eAAgB,IAAEkE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAM/7I,iBACrD,CAAE,gBAAiB,IAAEiE,EAAAA,EAAAA,IAAUw3I,EAAiBM,EAAM97I,iBACtD,CAAE,cAAc,gBAAC,IAAc,CAACl0B,IAAI,kBAAkBo0B,WAAYs7I,EAAiBM,EAAM57I,cAE7F,CAEA,OACE,gBAAC,IAAK,CAACl4B,GAAI,CAAEG,QAAS,QAASD,GAAI,EAAGoB,MAAO,OAAQkS,WAAY,IAC/D,gBAAC,IAAS,KACR,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACjE,QAAS,CAAEL,KAAMK,EAAQogG,WAClC,gBAAC,IAAU,CAAChvG,QAAQ,MAAK,YAAUwZ,EAAM0jE,OAAOjtD,aAAe,GAAK,cAAgB,MAGvFtuB,EAAKC,KAAI,QAAEK,EAAGC,GAAE,SACf,gBAAC,IAAQ,CAACiB,IAAKlB,EAAEumB,WAAatmB,EAAEsmB,YAC9B,gBAAC,IAAS,CAAC5Z,QAAS,CAAEL,KAAMK,EAAQogG,WAClC,gBAAC,IAAU,KAAE/sG,IAEf,gBAAC,IAAS,CAAC+lE,MAAM,QAAQp5D,QAAS,CAAEL,KAAMK,EAAQogG,WAChD,gBAAC,IAAU,KAAE9sG,IAEN,KAKrB,wLCxKA,MAAMmxK,EAAsC,CAC1C,mBACA,kBACA,WACA,aACA,aACA,cAGIC,EAA+B,CAAC,iBAAkB,gBAAiB,kBAAmB,iBAEtFC,EAAuC,CAC3C,WACA,iBACA,cACA,YACA,kCACA,uBACA,sBACA,qBAaF,SAASC,EAAat2F,GAEpB,MAAMu2F,EAA+B,GACrC,IAAK,MAAMC,KAAe7vK,EAAAA,GAAAA,QACpBq5E,IAAWw2F,IAGX1e,EAAAA,EAAAA,GAAoB0e,EAAY36I,cAClC06I,EAAmB7hK,KAAK8hK,EAAY36I,YAAY+kB,aAKpD,OAF0Bj2C,OAAOmY,KAAKnc,EAAAA,GAAAA,MAEvB3C,QAAQk2C,IAAaq8H,EAAmB/wK,SAAS00C,IAClE,CAEA,SAASu8H,EAAiBz2F,GAExB,MAAM02F,EAAoB,CAAC1vK,EAAAA,YAAAA,aAAoCA,EAAAA,YAAAA,kBAC3DL,EAAAA,GAAAA,MACF+vK,EAAkBhiK,KAAK/N,EAAAA,GAAAA,KAAAA,SAEzB,IAAK,MAAM6vK,KAAe7vK,EAAAA,GAAAA,QACpBq5E,IAAWw2F,IAGXze,EAAAA,EAAAA,GAAoBye,EAAY36I,cAClC66I,EAAkBhiK,KAAK8hK,EAAY36I,YAAY3gB,aAInD,MAAM1E,EAAW,GACjB,IAAK,MAAM2gC,KAAOxwC,EAAAA,GAAAA,SACX+vK,EAAkBlxK,SAAS2xC,IAC9B3gC,EAAS9B,KAAKyiC,GAIlB,OAAO3gC,EAASxS,QAAQ4d,IACtB,MAAM+0J,EAAa/rK,EAAAA,EAASgX,GAC5B,IAAK+0J,EAAY,OAAO,EACxB,MAAMr4E,EAAUq4E,EAAWv/H,UAC3B,OAAOknD,EAAQjnD,kBAAoBinD,EAAQtE,gBAAkBsE,EAAQrE,iBAAiB,GAE1F,CAuBA,MAAM4Y,EAWF,CACF,SAAU,KACD,CAAE+jE,MAAO,CAAC,UAAWC,OAAQ,IAAM,CAAC,YAE7C,mBAAqB72F,IACnB,IAAIuoE,EAAO+tB,EAAat2F,GAGxB,OADoB,IAAhBuoE,EAAK5iJ,SAAc4iJ,EAAO,CAAC,WACxB,CAAEquB,MAAOruB,EAAMsuB,OAAQ,IAAM,CAAC,UAAW,EAElD,mBAAqB72F,IACnB,IAAIxpE,EAAWigK,EAAiBz2F,GAGhC,OAFwB,IAApBxpE,EAAS7Q,SAAc6Q,EAAW,CAAC,WAEhC,CACLogK,MAAOpgK,EACPqgK,OAASrkI,IACP,KAAK7Z,EAAAA,EAAAA,GAAc,eAAe0G,SAASmT,GAAK,MAAO,CAAC,UACxD,MACM8rD,EADU1zF,EAAAA,EAAS4nC,GACD4E,UAClBwpE,EAAoB,GAU1B,OATItiB,EAAQjnD,kBACVupE,EAAQlsG,KAAK,qBAEX4pF,EAAQtE,gBACV4mB,EAAQlsG,KAAK,cAEX4pF,EAAQrE,mBACV2mB,EAAQlsG,KAAK,iBAERksG,CAAO,EAEjB,EAEH,eAAgB,KACP,CAAEg2D,MAAOjsK,OAAOmY,KAAKiiE,EAAAA,GAAS8xF,OAAQ,IAAM,CAAC,YAEtD,yBAA2B72F,IACzB,IAAI82F,EAAyB,GAC7B,OAAQ92F,EAAOvwD,MACb,KAAKpkB,EAAAA,SAAAA,MACHyrK,EAAe,CAAC9oD,EAAAA,aAAAA,uBAChB,MACF,KAAK3iH,EAAAA,SAAAA,SACHyrK,EAAe,CAAC9oD,EAAAA,aAAAA,2BAChB,MACF,KAAK3iH,EAAAA,SAAAA,SACHyrK,EAAe,CAAC9oD,EAAAA,aAAAA,iCAChB,MACF,QACE8oD,EAAe,CAAC,oCAIpB,MAAO,CAAEF,MAAOT,EAA2BU,OAAQ,IAAMC,EAAc,EAEzE,iBAAmB92F,IACjB,IAAI+2F,EAAiB,GACrB,OAAQ/2F,EAAOvwD,MACb,KAAKpkB,EAAAA,SAAAA,MACH0rK,EAAO,CAAC/oD,EAAAA,aAAAA,qBAAmCA,EAAAA,aAAAA,qBAC3C,MACF,KAAK3iH,EAAAA,SAAAA,SACH0rK,EAAO,CAAC/oD,EAAAA,aAAAA,gBAA8BA,EAAAA,aAAAA,uBACtC,MACF,KAAK3iH,EAAAA,SAAAA,SACH0rK,EAAO,CAAC/oD,EAAAA,aAAAA,6BACR,MACF,QACE+oD,EAAO,CAAC,6BAIZ,MAAO,CAAEH,MAAOR,EAAoBS,OAAQ,IAAME,EAAM,EAE1D,8BAAgC/2F,IACvB,CACL42F,MAAOP,EACPQ,OAASrkI,GACI,sBAAPA,EA/GZ,SAA2BwtC,GACzB,MAAMmyF,EAAKxrK,EAAAA,GAAAA,YACX,GAAW,OAAPwrK,EACF,MAAO,CAAC,UAEV,IAAIx+I,EAAYw+I,EAAGzxI,8BACnB,IAAK,MAAM81I,KAAe7vK,EAAAA,GAAAA,QACxB,GAAIq5E,IAAWw2F,IAGX/d,EAAAA,EAAAA,GAAwB+d,EAAY36I,cAAuD,cAAvC26I,EAAY36I,YAAYi3I,WAA4B,CAC1G,MAAMhxB,EAAI00B,EAAY36I,YACtBlI,EAAYA,EAAU3vB,QAAQsT,GAAMA,GAAKwqI,EAAE9/G,YAC7C,CAEF,OAAyB,IAArBrO,EAAUhuB,OACL,CAAC,UAEHguB,CACT,CA6FiBqjJ,CAAkBh3F,GAElB,CAAC,YAKhB,iBAAkB,KACT,CAAE42F,MAAO,CAAC,UAAWC,OAAQ,IAAM,CAAC,YAE7CI,YAAa,KACJ,CAAEL,MAAO,CAAC,UAAWC,OAAQ,IAAM,CAAC,aAIzCK,EAWF,CACF,SAAU,KAAM,EAChB,mBAAqBl3F,GAAmBs2F,EAAat2F,GAAQr6E,OAAS,EACtE,mBAAqBq6E,GAAmBy2F,EAAiBz2F,GAAQr6E,OAAS,EAC1E,eAAgB,KAAM,EACtB,yBAA2Bq6E,GACzB,CAAC30E,EAAAA,SAAAA,MAAgBA,EAAAA,SAAAA,SAAmBA,EAAAA,SAAAA,UAAmB7F,SAASw6E,EAAOvwD,MACzE,iBAAmBuwD,GAAmB,CAAC30E,EAAAA,SAAAA,MAAgBA,EAAAA,SAAAA,SAAmBA,EAAAA,SAAAA,UAAmB7F,SAASw6E,EAAOvwD,MAC7G,8BAA+B,MAAQ9oB,EAAAA,GAAAA,YACvC,iBAAmBq5E,GAAmBA,EAAO2N,MAAQ,EACrDspF,YAAcj3F,GAAmBA,EAAO4N,KAAO,KA6C1C,SAAS6kB,EAAan2F,GAC3B,MAAM84J,EA3CR,SAAgBp1F,GACd,MAAMy8D,EAAOz8D,EAAOnkD,YACpB,GAAa,OAAT4gH,EAAe,MAAO,CAAC,SAAU,SAAU,UAC/C,OAAQA,EAAKtvI,MACX,KAAKwlK,EAAAA,GAAAA,QACH,MAAO,CAAC,mBAAoBl2B,EAAK77F,YAAa,UAChD,KAAK+xH,EAAAA,GAAAA,QAAwB,CAC3B,MAAMwE,EAAY,CAChB,CAACr5E,EAAAA,gBAAAA,OAAwB,aACzB,CAACA,EAAAA,gBAAAA,SAA0B,oBAC3B,CAACA,EAAAA,gBAAAA,UAA2B,iBAE9B,MAAO,CAAC,mBAAoB2+C,EAAKvhI,YAAai8J,EAAU16B,EAAK5+C,kBAAoB,GACnF,CACA,KAAK80E,EAAAA,GAAAA,YACH,MAAwB,cAApBl2B,EAAKq2B,WACA,CAAC,8BAA+B,oBAAqBr2B,EAAKz6G,YAE5D,CAAC,8BAA+By6G,EAAKz6G,WAAY,UAC1D,KAAK2wI,EAAAA,GAAAA,MACH,OAAKl2B,EAAK22B,QAOH,CAAC,iBANkC,CACxC,CAAClhD,EAAAA,QAAAA,UAAmB,iBACpB,CAACA,EAAAA,QAAAA,SAAkB,gBACnB,CAACA,EAAAA,QAAAA,WAAoB,kBACrB,CAACA,EAAAA,QAAAA,SAAkB,iBAEcuqB,EAAKzqB,WAAuByqB,EAAK5zI,UAP1C,CAAC,yBAA0B4zI,EAAKzqB,UAAWyqB,EAAK5zI,UAS5E,KAAK8pK,EAAAA,GAAAA,MACH,MAAO,CAAC,gBAAgBh6I,EAAAA,EAAAA,GAAc,aAAawsD,eAAes3D,EAAK93D,WAAW,GAAO,UAC3F,KAAKguF,EAAAA,GAAAA,QACH,MAAO,CAAC,8BAA+B,sBAAuB,UAChE,KAAKA,EAAAA,GAAAA,WACH,MAAO,CAAC,8BAA+B,uBAAwB,UACjE,KAAKA,EAAAA,GAAAA,SACH,MAAO,CAAC,iBAAkB,SAAU,UACtC,KAAKA,EAAAA,GAAAA,QACH,MAAO,CAAC,cAAe,SAAU,UAEvC,CAGcyE,CAAO96J,EAAM0jE,SAClBq3F,EAAIC,IAAS/zK,EAAAA,EAAAA,UAAS6xK,EAAI,KAC1B5iI,EAAI+kI,IAASh0K,EAAAA,EAAAA,UAAS6xK,EAAI,KAC1B3iI,EAAI+kI,IAASj0K,EAAAA,EAAAA,UAAS6xK,EAAI,IAE3BqC,EAAe9sK,OAAOmY,KAAKo0J,GAAOlzK,QAAQma,GAAO+4J,EAAM/4J,GAAmC7B,EAAM0jE,UAEhG03F,EAAW7kE,EAAMwkE,GACvB,QAAiBlgK,IAAbugK,EAAwB,MAAM,IAAI3vJ,MAAO,yBAAwBsvJ,MACrE,MAAMM,EAAUD,EAASp7J,EAAM0jE,QACzB43F,EAAWD,EAAQd,OAAOrkI,GAiChC,OA/BImlI,EAAQf,MAAMjxK,OAAS,IAAMgyK,EAAQf,MAAMpxK,SAASgtC,KACtD+kI,EAAMI,EAAQf,MAAM,IACpBt6J,EAAM+4J,OAAO,CAACgC,EAAIM,EAAQf,MAAM,GAAInkI,KAElCmlI,EAASjyK,OAAS,IAAMiyK,EAASpyK,SAASitC,KAC5C+kI,EAAMI,EAAS,IACft7J,EAAM+4J,OAAO,CAACgC,EAAI7kI,EAAIolI,EAAS,MA0B/B,gCACE,gBAAC,IAAM,CAACpxI,SAxBZ,SAAoBC,GAClB,MAAMjkB,EAAIikB,EAAMK,OAAO1zB,MACjBskK,EAAW7kE,EAAMrwF,GACvB,QAAiBrL,IAAbugK,EAAwB,MAAM,IAAI3vJ,MAAO,yBAAwBsvJ,MACrE,MAAMM,EAAUD,EAASp7J,EAAM0jE,QACzB43F,EAAWD,EAAQd,OAAOc,EAAQf,MAAM,KAAO,CAAC,UACtDY,EAAMI,EAAS,IACfL,EAAMI,EAAQf,MAAM,IACpBU,EAAM90J,GACNlG,EAAM+4J,OAAO,CAAC7yJ,EAAGm1J,EAAQf,MAAM,GAAIgB,EAAS,IAC9C,EAckCxkK,MAAOikK,EAAIl1K,GAAI,CAAEsB,MAAO,SACnDg0K,EAAa/yK,KAAKgkG,GACjB,gBAAC,IAAQ,CAACziG,IAAKyiG,EAAMt1F,MAAOs1F,GACzBA,QAIqB,IAAzBivE,EAAQf,MAAMjxK,QAAqC,WAArBgyK,EAAQf,MAAM,KAC7C,gCACE,gBAAC,IAAM,CAACpwI,SArBhB,SAAoBC,GAClB8wI,EAAM9wI,EAAMK,OAAO1zB,OACnBkJ,EAAM+4J,OAAO,CAACgC,EAAI5wI,EAAMK,OAAO1zB,MAAOq/B,GACxC,EAkBsCr/B,MAAOo/B,EAAIrwC,GAAI,CAAEsB,MAAO,SACnDk0K,EAAQf,MAAMlyK,KAAKmzK,GAClB,gBAAC,IAAQ,CAAC5xK,IAAK4xK,EAAQzkK,MAAOykK,GAC3BA,SAMY,IAApBD,EAASjyK,QAAgC,WAAhBiyK,EAAS,KACnC,gCACE,gBAAC,IAAM,CAACpxI,SA3BhB,SAAoBC,GAClB+wI,EAAM/wI,EAAMK,OAAO1zB,OACnBkJ,EAAM+4J,OAAO,CAACgC,EAAI7kI,EAAI/L,EAAMK,OAAO1zB,OACrC,EAwBsCA,MAAOq/B,EAAItwC,GAAI,CAAEsB,MAAO,SACnDm0K,EAASlzK,KAAKmzK,GACb,gBAAC,IAAQ,CAAC5xK,IAAK4xK,EAAQzkK,MAAOykK,GAC3BA,OAQjB,8KCvVO,SAAS3rI,EAAY5vB,GAC1B,SAAS6vB,EAAO1c,GACT9oB,EAAAA,GAAAA,UAAiB4C,EAAAA,EAAAA,cACpB0Q,EAAAA,EAAAA,GAAgB,gEAElBqC,EAAM0jE,OAAOvwD,KAAOA,EACpB9oB,EAAAA,GAAAA,UAAiB4C,EAAAA,EAAAA,WAAsB,WACvC+S,EAAM0jE,OAAO03E,WACbp7I,EAAMG,WACNH,EAAMU,SACR,CAEA,OACE,gBAAC,IAAK,CAACD,KAAMT,EAAMS,KAAMC,QAASV,EAAMU,SACtC,gCACE,gBAAC,IAAU,KAAC,2JAEiC,gBAAC,IAAK,CAAC8E,MAAOvY,EAAAA,EAAAA,WAAsB6qE,aAAa,IAAQ,wDAGrGryE,EAAAA,EAAAA,gBACC4I,OAAOpC,OAAO8C,EAAAA,UAAU3G,KAAK+qB,GAC3B,gBAAC,IAAM,CAACxpB,IAAKwpB,EAAM1a,QAAS,IAAMo3B,EAAO1c,IACtCA,KAIL,gBAAC,IAAQ,CAAC2c,YAAa9vB,EAAM0jE,OAAOvwD,KAAM4c,SAAW5c,GAAmB0c,EAAO1c,MAKzF,gCCnDO,SAASuB,EAA2BC,GAA0C,IAApBnD,EAAS,UAAH,6CAAG,EACxE,OAAO,EAAKA,EAAS7iB,KAAKoO,IAAI4X,EAAc,IAAQ,GACtD,kICIA,SAAS/Z,EAAKlM,GACZ,IAAIquF,EAAY,EAAIruF,EAAQ,IAI5B,OAHI+T,MAAMs6E,KACRA,EAAY,GAEPA,EAAYluF,EAAAA,GAAAA,kBACrB,CAEO,SAASouF,EAAsBzvF,EAAYkB,GAChD,OACIlB,EAAEilB,OAAOxf,QAAUzF,EAAEilB,OAAOkC,aAAe,GAAK1nB,EAAAA,EAAAA,cAClDO,EAAEwM,MAAM6B,aACR6Y,EAAAA,EAAAA,GAA2BlnB,EAAEilB,OAAOkC,aAAc,GAClD/Z,EAAKlM,IACLk2I,EAAAA,EAAAA,KAEJ,CAEO,SAASznD,EAA8B3vF,EAAYkB,GAUxD,MARG,IACElB,EAAEilB,OAAOvf,SACR1F,EAAEilB,OAAOtf,QACT3F,EAAEilB,OAAOpf,UACT7F,EAAEilB,OAAOrf,SACR5F,EAAEilB,OAAOxf,QAAUzF,EAAEilB,OAAOkC,eAAgBiwH,EAAAA,EAAAA,OACjD33I,EAAAA,EAAAA,cACA,IACSO,EAAEwM,MAAM6B,YAAcjB,EAAKlM,IAASgmB,EAAAA,EAAAA,GAA2BlnB,EAAEilB,OAAOkC,aAAc,EACnG,CAEO,SAAS0oE,EAA2B7vF,EAAYkB,GAWrD,MATG,IACElB,EAAEilB,OAAOvf,SACR1F,EAAEilB,OAAOtf,QACT3F,EAAEilB,OAAOpf,UACT7F,EAAEilB,OAAOrf,QACT5F,EAAEilB,OAAOnf,UACR9F,EAAEilB,OAAOxf,QAAUzF,EAAEilB,OAAOkC,eAAgBiwH,EAAAA,EAAAA,OACjD33I,EAAAA,EAAAA,cACA,IACSO,EAAEwM,MAAM6B,YAAcjB,EAAKlM,IAASgmB,EAAAA,EAAAA,GAA2BlnB,EAAEilB,OAAOkC,aAAc,EACnG,gCC7CO,SAASm6E,EAAe97F,GAA+B,IAAlB4H,EAAO,UAAH,6CAAG,EACjD,OAAOjM,KAAK+gB,IAAI/gB,KAAKC,MAAMgM,GAAQ,GAAKjM,KAAKqqB,IAAIhmB,EAAM,OAAS,MAAO,EACzE,CAEO,SAAS4rI,EAAazlH,GAAiC,IAAlBve,EAAO,UAAH,6CAAG,EACjD,OAAOjM,KAAKqE,KAAKmmB,EAAQve,EAAO,KAAO,IAAM,KAC/C,CAEO,SAAS40J,EAAuBx8J,GAAuC,IAA1B4H,EAAO,UAAH,6CAAG,EACzD,MAAM4gK,EAAe1sE,EAAe97F,EAAK4H,GACnC6gK,EAAYD,EAAe,EAEjC,IAAIE,EAAiB98B,EAAa48B,EAAc5gK,GAC5C8gK,EAAiB,IAAGA,EAAiB,GAEzC,IAAIC,EAAiB/8B,EAAa68B,EAAW7gK,GACzC+gK,EAAiB,IAAGA,EAAiB,GAEzC,MAAMC,EAAa9kK,GAAsD,KAA1BA,EAAQ4kK,IAA0BC,EAAiBD,GAClG,IAAI5wI,EAAW6wI,EAAiBD,GAAmB,EAAIE,EAAU5oK,GAAO,MAGpE83B,EAAW,IAAGA,EAAW,GACzBA,EAAW,MAAKA,EAAW,KAG/B,IAAI+wI,EAAoB7oK,EAAM0oK,EAC1BI,EAAsBH,EAAiB3oK,EAI3C,OAHI6oK,EAAoB,IAAGA,EAAoB,GAC3CC,EAAsB,IAAGA,EAAsB,GAE5C,CACLN,eACAC,YACAC,iBACAK,WAAY/oK,EACZ2oK,iBACAE,oBACAC,sBACAhxI,WAEJ,iICvCO,IAAIzgC,EAEJ,SAAS6lK,EAAU8L,GACxB3xK,EAAS2xK,CACX,CAEO,SAASC,EAAWvmK,GACzB,MAAM+jF,EAAS5jF,KAAKC,MAAMJ,EAAY+nC,EAAAA,IAGtC,OAFAg8C,EAAOj0E,MAAQoW,WAAW69D,EAAOj0E,MAAQ,IACzCi0E,EAAO9yE,UAAWo0E,EAAAA,EAAAA,IAAiBtB,EAAO9yE,UACnC8yE,CACT,uTCUA,MAAMyiF,EAAwB,KAC9B,SAASC,EAAcjqG,GACrBt8B,YAAW,KAAMj4B,EAAAA,EAAAA,GAAgBu0D,IAAU,IAC7C,CAGO,SAASl0D,KACd0N,EAAAA,EAAAA,MAEA,MAAM0wJ,EAAqB/xK,EAAAA,GAAAA,SAAAA,OAAuBA,EAAAA,GAAAA,oBAA2B3C,QAAO,SAAU4d,GAC5F,OAAOhX,EAAAA,EAASgX,GAASw1B,UAAU8iD,IACrC,IACAvzF,EAAAA,GAAAA,wBAGA+4J,EAAAA,EAAAA,MAEA,MAAMlrG,EAAW7tD,EAAAA,GAAAA,mBAEjBgyK,EAAAA,EAAAA,OAGAxzB,EAAAA,EAAAA,IAAgB3wF,IAChBokH,EAAAA,EAAAA,IAAqBpkH,GAEjB7tD,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,WAA4B,KACrDqsD,EAASntD,SAASqN,KAAKpN,EAAAA,qBAAAA,UACvBktD,EAASntD,SAASqN,KAAKpN,EAAAA,qBAAAA,YAErBX,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,UAA2B,KACpDxB,EAAAA,GAAAA,SAAgB,KAChB6tD,EAASntD,SAASqN,KAAKpN,EAAAA,qBAAAA,WAErBX,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,UAA2B,KACpDqsD,EAASntD,SAASqN,KAAKpN,EAAAA,qBAAAA,WACvBktD,EAASntD,SAASqN,KAAKpN,EAAAA,qBAAAA,YAGrBX,EAAAA,GAAAA,cAAqB,GAAK,GAAyB,IAApBA,EAAAA,GAAAA,WACjC6tD,EAASntD,SAASqN,KAAKpN,EAAAA,qBAAAA,WAIzBuxK,EAAAA,EAAAA,IAAmBlyK,EAAAA,GAAAA,mBAGnB,IAAK,MAAMuzC,KAAWvvC,OAAOpC,OAAOkxC,EAAAA,GAAYS,EAAQ5/B,uBACxD,IAAK,MAAMsH,KAAWjX,OAAOpC,OAAOqC,EAAAA,GAAWgX,EAAQtH,uBAG/B,OAApB5H,EAAAA,EAAAA,QACFA,EAAAA,EAAAA,cAAsB,GAExBA,EAAAA,EAAAA,QACAomK,EAAAA,GAAAA,QAGAz9J,EAAAA,EAAAA,KAEA1U,EAAAA,GAAAA,mBAA4BA,EAAAA,GAAAA,mBAAAA,OAAiC+xK,GAC7D,IAAK,MAAMx9J,KAAew9J,EAAoB9tK,EAAAA,EAASsQ,GAAai9E,gBAAiB,EACrFxxF,EAAAA,GAAAA,0BACAA,EAAAA,GAAAA,wBACAA,EAAAA,GAAAA,GAAAA,QAAoBA,EAAAA,GAAAA,GAAAA,IAGpBA,EAAAA,GAAAA,aAAoBA,EAAAA,GAAAA,SAGpB,MAAMglG,EAAOhlG,EAAAA,GAAAA,KACb,GAAIglG,EAAM,CACR,MAAM/pF,EAAUhX,EAAAA,EAAS+gG,EAAK5T,SAC1Bn2E,IAAS0U,EAAAA,EAAAA,IAAY1U,GACzB,MAAMm3J,EAAU,IAChB,IAAK,MAAMp1K,KAAKgoG,EAAKnG,QACnB7hG,EAAEmnG,iBAAmBiuE,EACrBp1K,EAAEonG,gBAAkBguE,EACpBp1K,EAAEqnG,gBAAkB+tE,EACpBp1K,EAAEsnG,gBAAkB8tE,EACpBp1K,EAAEunG,gBAAkB6tE,EACpBp1K,EAAEwnG,gBAAkB4tE,CAExB,CA4BA,GAzBwB,IAApBpyK,EAAAA,GAAAA,UAEF6tD,EAASG,SAASjgD,KAAKggD,EAAAA,eAAAA,+BAIrB/tD,EAAAA,GAAAA,aACFA,EAAAA,GAAAA,YAAAA,WAIsB,IAApBA,EAAAA,GAAAA,WACFA,EAAAA,GAAAA,MAAe6xK,IAEO,IAApB7xK,EAAAA,GAAAA,UAAyBA,EAAAA,GAAAA,cAAqB,GAAK,KACrDA,EAAAA,GAAAA,eAAuB,EACvBA,EAAAA,GAAAA,iBAAyB,GAIvBA,EAAAA,GAAAA,gBACFy0J,EAAAA,EAAAA,MAIEz0J,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,YAA6B,GAAO,CAC7D,MAAM6wK,GAAczyK,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,aACxByyK,GAAiB1yK,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,gBAC7BwyK,GAAeC,IACjBD,EAAYrhI,iBAAiBjjC,KAAKukK,EAAenhI,UACjDmhI,EAAethI,iBAAiBjjC,KAAKskK,EAAYlhI,UAErD,CAEInxC,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,cAA+B,KACxDmuB,EAAAA,EAAAA,IAAY1rB,EAAAA,EAAS5D,EAAAA,YAAAA,wBAGvB+2E,EAAAA,GAAAA,wBAEAyiD,EAAAA,EAAAA,KACA04C,EAAAA,EAAAA,QACA/6E,EAAAA,EAAAA,OACF,CAGO,SAASziD,EAAmBy9H,IACjCnxJ,EAAAA,EAAAA,MAEArhB,EAAAA,GAAAA,sBACA+4J,EAAAA,EAAAA,MAEA,MAAMlrG,EAAW7tD,EAAAA,GAAAA,kBAGO,OAApB+L,EAAAA,EAAAA,QACFA,EAAAA,EAAAA,cAAsB,GAExBA,EAAAA,EAAAA,QACAomK,EAAAA,GAAAA,QAGAH,EAAAA,EAAAA,OAGAxzB,EAAAA,EAAAA,IAAgB3wF,IAChBokH,EAAAA,EAAAA,IAAqBpkH,GAErB,IAAK,MAAMi/B,KAAUj/B,EAASlsD,QAAQC,SAAUkrF,EAAOzpF,SAAW,MAGlE6uK,EAAAA,EAAAA,IAAmBlyK,EAAAA,GAAAA,mBAEfA,EAAAA,GAAAA,cAAqB,IAAM,EAC7B6tD,EAAS4kH,UAAU,KACVzyK,EAAAA,GAAAA,cAAqB,GAAK,EACnC6tD,EAAS4kH,UAAU,IAEnB5kH,EAAS4kH,UAAU,GAErB5kH,EAAS/qD,SAAW,EAGpB,IAAK,MAAMywC,KAAWvvC,OAAOpC,OAAOkxC,EAAAA,GAAYS,EAAQwB,qBACxD,IAAK,MAAM95B,KAAWjX,OAAOpC,OAAOqC,EAAAA,GAAWgX,EAAQ85B,qBA2EvD,GAxEwB,OAApBhpC,EAAAA,EAAAA,QACFA,EAAAA,EAAAA,cAAsB,GAIpB/L,EAAAA,GAAAA,cAAqB,IAAM,GAC7BA,EAAAA,GAAAA,cAAAA,KAA0B,CACxBuB,KAAMC,EAAAA,iBAAAA,kBACNC,MAAOzB,EAAAA,GAAAA,cAAqB,OAIhC0U,EAAAA,EAAAA,KAEA1U,EAAAA,GAAAA,0BACAA,EAAAA,GAAAA,yBAEIA,EAAAA,GAAAA,cAAqB,GAAK,GAAyB,IAApBA,EAAAA,GAAAA,WACjC6tD,EAASntD,SAASqN,KAAKpN,EAAAA,qBAAAA,UAID,IAApBX,EAAAA,GAAAA,WAEF6tD,EAASG,SAASjgD,KAAKggD,EAAAA,eAAAA,+BACvB+jH,EACE,kJAMoB,IAApB9xK,EAAAA,GAAAA,UAA6C,IAApBA,EAAAA,GAAAA,UAC3B8xK,EAAc,6DAIQ,IAApB9xK,EAAAA,GAAAA,WACFA,EAAAA,GAAAA,MAAe6xK,IAEO,IAApB7xK,EAAAA,GAAAA,UAAyBA,EAAAA,GAAAA,cAAqB,GAAK,KACrDA,EAAAA,GAAAA,eAAuB,EACvBA,EAAAA,GAAAA,iBAAyB,GAIH,KAApBA,EAAAA,GAAAA,UACF8xK,EACE,gIAKoB,KAApB9xK,EAAAA,GAAAA,UAA0BA,EAAAA,GAAAA,cAAqB,IAAM,KACvD8xK,EAAc,+BAGQ,KAApB9xK,EAAAA,GAAAA,UACF8xK,EAAe,yBAAwBptK,EAAAA,SAAAA,aAIrC1E,EAAAA,GAAAA,eACFy0J,EAAAA,EAAAA,OAEAie,EAAAA,EAAAA,OAGFtwG,EAAAA,EAAAA,MAIIpiE,EAAAA,GAAAA,cAAqB,IAAM,GAAyB,IAApBA,EAAAA,GAAAA,SAAuB,CACzD,MAAMgwG,EAAUhwG,EAAAA,GAAAA,sBAEhBgwG,EAAQvuG,MAAQ,IAChBuuG,EAAQnsG,MAAQ,GAChBmsG,EAAQxoG,MAAQ,EAChBwoG,EAAQC,eAAejwG,EAAAA,GAAAA,MAAAA,oBACvBgwG,EAAQyB,sBACRxD,EAAAA,EAAAA,KACF,CAEwB,KAApBjuG,EAAAA,GAAAA,WACFA,EAAAA,GAAAA,MAAe4C,EAAAA,EAAAA,YAEjBw0E,EAAAA,GAAAA,qBAGgC,IAA5Bp3E,EAAAA,GAAAA,cAAqB,IAAawyK,GAASxyK,EAAAA,GAAAA,oBAA2B,KAG1Ew2I,EAAAA,EAAAA,OAAqB,EAAGA,EAAAA,EAAAA,SACxB3c,EAAAA,EAAAA,IACF,gCCrSO,IAAKl5H,mBAcX,SAdWA,GAAAA,EAAoB,gBAApBA,EAAoB,wBAApBA,EAAoB,wBAApBA,EAAoB,0BAApBA,EAAoB,wBAApBA,EAAoB,0BAApBA,EAAoB,2BAApBA,EAAoB,2BAApBA,EAAoB,oCAApBA,EAAoB,wBAApBA,EAAoB,wBAApBA,EAAoB,yBAApBA,EAAoB,oBAc/B,CAdWA,IAAAA,EAAoB,mECgBzB,MAAMgyK,EAKX7iK,YAAY,GAAiD,IAAjD,KAAEvO,EAAI,OAAEysB,EAAM,IAAE+gH,GAA+B,EACzD/+H,KAAKzO,MAAOm9J,EAAAA,EAAAA,IAAkBn9J,GAC9ByO,KAAKge,OAASA,EACdhe,KAAK++H,IAAMA,CACb,uFCnBK,SAAS6jC,IACd,MAAMlyK,EAAsB,GAC5B,IAAK,MAAOo9I,EAAaj/D,KAAYt9D,EAAAA,EAAAA,IAAiB4uI,EAAAA,GAAW,CAC/D,MAAMniI,EAAS6wD,EAAQ7wD,OAET,MAAVA,IAGAhuB,EAAAA,GAAAA,WAAkB89I,IAGjB9vH,EAAOqkC,OAEZ3xD,EAASqN,KAAK8wE,GAChB,CAEA,OAAOn+E,CACT,yLCTA,SAASmyK,EAAoBj3J,GAC3B,OAAO,WACL,OAAO5b,EAAAA,GAAAA,OAAAA,QAAwBA,EAAAA,GAAAA,OAAAA,aAA6B,GAAK4b,CACnE,CACF,CAQO,MAAMu0I,EAAkD,CAC7D,CAACxvJ,EAAAA,qBAAAA,MAA4B,IAAIgyK,EAAAA,EAAQ,CACvCpxK,KAAMZ,EAAAA,qBAAAA,KACNqtB,OAAQ,CACNvsB,MAAO,EACPkmE,QAAS,kFACTtV,IAAKwgH,EAAoB,GACzBhgJ,KAAMjwB,EAAAA,EAAAA,4BAERmsI,IAAK,CAAClb,EAAiBzjF,KACrB,GAAMA,aAAkBtwC,EAAAA,EAIxB,OAAIswC,EAAOi2C,gBACTt6E,EAAAA,EAAAA,MAAe,0FACfA,EAAAA,EAAAA,MAAe,4CAGbqkC,EAAOu2C,eAAiBv2C,EAAOkrG,sBACjClrG,EAAOi2C,gBAAiB,EACxBt6E,EAAAA,EAAAA,MAAe,0CAA4CqkC,EAAOe,eAClEplC,EAAAA,EAAAA,MAAe,iDAIjBA,EAAAA,EAAAA,MAAe,wDAfbA,EAAAA,EAAAA,MAAe,mCAeqD,IAG1E,CAACpL,EAAAA,qBAAAA,UAAgC,IAAIgyK,EAAAA,EAAQ,CAC3CpxK,KAAMZ,EAAAA,qBAAAA,SACNqtB,OAAQ,CACNvsB,MAAO,GACPkmE,QAAS,kEACTtV,IAAKwgH,EAAoB,IACzBhgJ,KAA6C,EAAvCjwB,EAAAA,EAAAA,4BAERmsI,IAAK,CAAClb,EAAiBzjF,KACfA,aAAkBtwC,EAAAA,EAIpBswC,EAAOk2C,YACTv6E,EAAAA,EAAAA,MAAe,mCAIjBqkC,EAAOk2C,aAAc,EACrBv6E,EAAAA,EAAAA,MAAe,wBACfqkC,EAAOu2C,iBAVL56E,EAAAA,EAAAA,MAAe,kDAUK,IAG1B,CAACpL,EAAAA,qBAAAA,UAAgC,IAAIgyK,EAAAA,EAAQ,CAC3CpxK,KAAMZ,EAAAA,qBAAAA,SACNqtB,OAAQ,CACNvsB,MAAO,IACPkmE,QAAS,qCACTtV,IAAKwgH,EAAoB,KACzBhgJ,KAAMjwB,EAAAA,EAAAA,yBAERmsI,IAAK,CAAClb,EAAiBzjF,KACfA,aAAkBtwC,EAAAA,EAIpBswC,EAAOm2C,YACTx6E,EAAAA,EAAAA,MAAe,mCAIjBqkC,EAAOm2C,aAAc,EACrBx6E,EAAAA,EAAAA,MAAe,yBACfqkC,EAAOu2C,iBAVL56E,EAAAA,EAAAA,MAAe,kDAUK,IAG1B,CAACpL,EAAAA,qBAAAA,WAAiC,IAAIgyK,EAAAA,EAAQ,CAC5CpxK,KAAMZ,EAAAA,qBAAAA,UACNqtB,OAAQ,CACNvsB,MAAO,IACPkmE,QAAS,oDACTtV,IAAKwgH,EAAoB,KACzBhgJ,KAAMjwB,EAAAA,EAAAA,uBAERmsI,IAAK,CAAClb,EAAiBzjF,KACfA,aAAkBtwC,EAAAA,EAIpBswC,EAAOo2C,aACTz6E,EAAAA,EAAAA,MAAe,oCAIjBqkC,EAAOo2C,cAAe,EACtBz6E,EAAAA,EAAAA,MAAe,0BACfqkC,EAAOu2C,iBAVL56E,EAAAA,EAAAA,MAAe,mDAUK,IAG1B,CAACpL,EAAAA,qBAAAA,UAAgC,IAAIgyK,EAAAA,EAAQ,CAC3CpxK,KAAMZ,EAAAA,qBAAAA,SACNqtB,OAAQ,CACNvsB,MAAO,IACPkmE,QAAS,iCACTtV,IAAKwgH,EAAoB,KACzBhgJ,KAAMjwB,EAAAA,EAAAA,uBAERmsI,IAAK,CAAClb,EAAiBzjF,KACfA,aAAkBtwC,EAAAA,EAIpBswC,EAAOq2C,aACT16E,EAAAA,EAAAA,MAAe,oCAIjBqkC,EAAOq2C,cAAe,EACtB16E,EAAAA,EAAAA,MAAe,0BACfqkC,EAAOu2C,iBAVL56E,EAAAA,EAAAA,MAAe,kDAUK,IAG1B,CAACpL,EAAAA,qBAAAA,WAAiC,IAAIgyK,EAAAA,EAAQ,CAC5CpxK,KAAMZ,EAAAA,qBAAAA,UACNqtB,OAAQ,CACNvsB,MAAO,IACPkmE,QAAS,6BACTtV,IAAKwgH,EAAoB,KACzBhgJ,KAAMjwB,EAAAA,EAAAA,uBAERmsI,IAAK,CAAClb,EAAiBzjF,KACfA,aAAkBtwC,EAAAA,EAIpBswC,EAAOs2C,YACT36E,EAAAA,EAAAA,MAAe,qCAIjBqkC,EAAOs2C,aAAc,EACrB36E,EAAAA,EAAAA,MAAe,2BACfqkC,EAAOu2C,iBAVL56E,EAAAA,EAAAA,MAAe,mDAUK,IAG1B,CAACpL,EAAAA,qBAAAA,WAAiC,IAAIgyK,EAAAA,EAAQ,CAC5CpxK,KAAMZ,EAAAA,qBAAAA,UACNqtB,OAAQ,CACNvsB,MAAO,GACPkmE,QAAS,+EACTtV,IAAKwgH,EAAoB,IACzBhgJ,KAAMjwB,EAAAA,EAAAA,4BAERmsI,IAAK,KACHhjI,EAAAA,EAAAA,MAAe,kCACfA,EAAAA,EAAAA,MAAe,mEAAmE,IAGtF,CAACpL,EAAAA,qBAAAA,WAAiC,IAAIgyK,EAAAA,EAAQ,CAC5CpxK,KAAMZ,EAAAA,qBAAAA,UACNqtB,OAAQ,CACNvsB,MAAO,IACPkmE,QAAS,gFACTtV,IAAKwgH,EAAoB,KACzBhgJ,KAAMjwB,EAAAA,EAAAA,uBAERmsI,IAAK,KACHhjI,EAAAA,EAAAA,MAAe,kCACfA,EAAAA,EAAAA,MAAe,oEAAoE,IAGvF,CAACpL,EAAAA,qBAAAA,gBAAsC,IAAIgyK,EAAAA,EAAQ,CACjDpxK,KAAMZ,EAAAA,qBAAAA,eACNqtB,OAAQ,CACNvsB,MAAO,GACPkmE,QAAS,0FACTtV,IAAKwgH,EAAoB,IACzBhgJ,KAAMjwB,EAAAA,EAAAA,yBAERmsI,IAAM3+G,IACJ,GAAoB,IAAhBA,EAAKpxB,OAEP,YADA+M,EAAAA,EAAAA,MAAe,2EAIjB,MAAM+mK,GAAelzK,EAAAA,EAAAA,IAAUwwB,EAAK,IAChB,MAAhB0iJ,EAKEA,aAAwBhzK,EAAAA,GAK9BiM,EAAAA,EAAAA,MAAe+mK,EAAa3hI,SAAW,KACvCplC,EAAAA,EAAAA,MAAe,+BAAiC+mK,EAAa9sJ,gBAC7Dja,EAAAA,EAAAA,MAAe,kCAAoC+mK,EAAalsF,gBAChE76E,EAAAA,EAAAA,MAAe,uBAAyB+mK,EAAar1B,cACrD1xI,EAAAA,EAAAA,MACG,qCAAmC20B,EAAAA,EAAAA,IACW,KAA7CusE,EAAAA,EAAAA,IAAqB6lE,EAAc9yK,EAAAA,KACnC,MAGJ+L,EAAAA,EAAAA,MACG,qCAAmC20B,EAAAA,EAAAA,IACQ,KAA1CysE,EAAAA,EAAAA,IAAkB2lE,EAAc9yK,EAAAA,KAChC,MAGJ+L,EAAAA,EAAAA,MACG,uCAAqC20B,EAAAA,EAAAA,IACQ,KAA5C0sE,EAAAA,EAAAA,IAAoB0lE,EAAc9yK,EAAAA,KAClC,OAvBF+L,EAAAA,EAAAA,MAAgB,yDALhBA,EAAAA,EAAAA,MAAe,6BA8BhB,IAGL,CAACpL,EAAAA,qBAAAA,UAAgC,IAAIgyK,EAAAA,EAAQ,CAC3CpxK,KAAMZ,EAAAA,qBAAAA,SACNqtB,OAAQ,CACNvsB,MAAO,GACPkmE,QAAS,kGACTtV,IAAKwgH,EAAoB,IACzBhgJ,KAAMjwB,EAAAA,EAAAA,4BAERmsI,IAAK,KACHhjI,EAAAA,EAAAA,MAAe,kCACfA,EAAAA,EAAAA,MAAe,2FACfA,EAAAA,EAAAA,MAAe,0EAA0E,IAG7F,CAACpL,EAAAA,qBAAAA,UAAgC,IAAIgyK,EAAAA,EAAQ,CAC3CpxK,KAAMZ,EAAAA,qBAAAA,SACNqtB,OAAQ,CACNvsB,MAAO,IACPkmE,QAAS,kDACTtV,IAAKwgH,EAAoB,KACzBhgJ,KAAMjwB,EAAAA,EAAAA,uBAERmsI,IAAK,KACHhjI,EAAAA,EAAAA,MAAe,kCACfA,EAAAA,EAAAA,MAAe,8CAA8C,IAGjE,CAACpL,EAAAA,qBAAAA,UAAgC,IAAIgyK,EAAAA,EAAQ,CAC3CpxK,KAAMZ,EAAAA,qBAAAA,SACNqtB,OAAQ,CACNvsB,MAAO,EACPkmE,QAAS,iGACTtV,IAhQG,WACL,OAAOryD,EAAAA,GAAAA,YAAAA,KAA0B,GAAKA,EAAAA,GAAAA,OAAAA,SAAyB,CACjE,EA+PI6yB,KAAMjwB,EAAAA,EAAAA,2BAAuC,IAE/CmsI,IAAK,KACHvtH,EAAAA,EAAAA,MAAoB,IAGxB,CAAC7gB,EAAAA,qBAAAA,QAA8B,IAAIgyK,EAAAA,EAAQ,CACzCpxK,KAAMZ,EAAAA,qBAAAA,OACNqtB,OAAQ,KACR+gH,IAAK,KACH,MAAMgkC,EAAYvuK,EAAAA,GAAAA,wBAGlB,KADExE,EAAAA,GAAAA,cAAAA,QAA+B+yK,GAAa/yK,EAAAA,GAAAA,MAAe,MAAQA,EAAAA,GAAAA,OAAAA,SAAyB,MAK5F,OAHA+L,EAAAA,EAAAA,MAAgB,kBAAiB/L,EAAAA,GAAAA,cAAAA,YAAiC+yK,KAClEhnK,EAAAA,EAAAA,MAAgB,WAAS+O,EAAAA,EAAAA,IAAY9a,EAAAA,GAAAA,uBACrC+L,EAAAA,EAAAA,MAAgB,kBAAiB/L,EAAAA,GAAAA,OAAAA,kBAInC+L,EAAAA,EAAAA,MAAe,wBACfA,EAAAA,EAAAA,MAAgB,MAAK1L,EAAAA,YAAAA,cAA0B,sQC5R9C,MAAMkyK,EAAe,IAAIvqI,IAEzB,SAASgrI,KACdj9J,EAAAA,EAAAA,GAAY,KAEZ,MAAMrV,EAAW,IAAIsD,OAAOpC,OAAOuuJ,EAAAA,IAChC9yJ,QAAQ41K,IACP,MAAMjlJ,EAASilJ,EAAKjlJ,OACpB,OAAe,OAAXA,IACAilJ,EAAK1xK,OAASZ,EAAAA,qBAAAA,UACTqtB,EAAOqkC,MAEL,IAEZl0D,MAAK,CAACC,EAAGC,KAAM,QACd,OAAI2B,EAAAA,GAAAA,WAAkB5B,EAAEmD,MAAc,EAClCvB,EAAAA,GAAAA,WAAkB3B,EAAEkD,OAAe,IACvB,QAAR,EAAAnD,EAAE4vB,cAAM,aAAR,EAAUvsB,QAAS,KAAc,QAAR,EAAApD,EAAE2vB,cAAM,aAAR,EAAUvsB,QAAS,EAAE,KAG1DgN,EAAAA,EAAAA,YAAU,KACR/N,EAAS2U,SAASlS,IAChBovK,EAAat+H,IAAI9wC,EAAE5B,KAAK,GACxB,IAGJ,MAAM2xK,EAA4Bt3J,GACzBtX,KAAKmkB,KAAKnkB,KAAK+gB,IAAIzJ,GAAO5b,EAAAA,GAAAA,OAAAA,QAAwBA,EAAAA,GAAAA,OAAAA,aAA6B,GAAI,IAkB5F,OACE,gBAAC,IAAS,CAACd,gBAAc,EAAC5C,SAAS,KAAKd,GAAI,CAAEwa,GAAI,EAAGta,GAAI,KACvD,gBAAC,IAAU,CAACS,QAAQ,MAAK,kBACzB,gBAAC,IAAU,KAAC,4RAMZ,gBAAC,IAAG,CAACX,GAAI,CAAEG,QAAS,OAAQ8a,oBAAqB,iBAAkB1X,GAAI,IACpE2B,EAAS3C,KAAK8gF,IACb,MAAM7wD,EAAS6wD,EAAQ7wD,OACvB,GAAe,OAAXA,EAAiB,OAAO,iCAC5B,MAAMmlJ,EA5Ba5xK,KACzB,MAAM6xK,GAAcp1K,EAAAA,EAAAA,MAAKgC,EAAAA,GAAAA,kBAAyBU,UAAWyC,GACpDA,EAAE+sB,WAAW3uB,IAAS4B,EAAEnB,SAAS,WAE1C,IAAKoxK,EAAa,OAAQ,EAE1B,MAAMv5I,EAAMu5I,EAAY/lK,MAAM,KAC9B,GAAkB,GAAdwsB,EAAI76B,OAAa,OAAQ,EAC7B,MAAMq0K,EAAe/tJ,OAAOuU,EAAI,GAAG1P,MAAM,GAAI,IAC7C,OAAI/R,MAAMi7J,IAAiBA,EAAe,GAAKA,GAAgB,KACrD,EAEHA,CAAY,EAgBSC,CAAkBz0F,EAAQt9E,MAEhD,OACE,gBAAC,IAAG,CACFygB,UAAWC,EAAAA,EACXzmB,GAAI,CAAE2H,EAAG,EAAG0U,QAAS7X,EAAAA,GAAAA,WAAkB6+E,EAAQt9E,MAAQ,IAAO,GAC9DjC,IAAKu/E,EAAQt9E,MAEb,gCACE,gBAAC,IAAU,CAACpF,QAAQ,KAAKX,GAAI,CAAEG,QAAS,OAAQsa,WAAY,SAAUpa,SAAU,SAC5EmE,EAAAA,GAAAA,WAAkB6+E,EAAQt9E,OAAS,gBAAC,IAAK,CAAC/F,GAAI,CAAEge,GAAI,MACnDwU,EAAOqkC,OAAS,gBAAC,IAAM,CAAC72D,GAAI,CAAEge,GAAI,MAAY,gBAAC,IAAI,CAAChe,GAAI,CAAEge,GAAI,KAChEqlE,EAAQt9E,OAETvB,EAAAA,GAAAA,WAAkB6+E,EAAQt9E,OAC1BysB,EAAOqkC,SACN4sB,EAAAA,EAAAA,GAAoBj/E,EAAAA,GAAAA,cAAuBA,EAAAA,GAAAA,YAAAA,cAAmC6+E,EAAQt9E,KAErF,gBAAC,IAAM,CACL/F,GAAI,CAAEuD,GAAI,EAAGjC,MAAO,QACpBsR,QAAU0xB,IACHA,EAAMjxB,YACX7O,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,MAAU,GAE3B,gBAKD,gBAAC,IAAM,CACLxM,GAAI,CAAEuD,GAAI,EAAGjC,MAAO,QACpBsR,QAAU0xB,IACHA,EAAMjxB,aACPowE,EAAAA,EAAAA,GAAoBj/E,EAAAA,GAAAA,cACtBA,EAAAA,GAAAA,YAAkB,GAEpBA,EAAAA,GAAAA,UAAiB,IAAIowJ,EAAAA,EAAkB,CAAEnyE,aAAa,EAAO6/D,YAAaj/D,EAAQt9E,QAClFvB,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,MAAU,GAE3B,mBAIJhI,EAAAA,GAAAA,WAAkB6+E,EAAQt9E,OAAoD,IAA3C2xK,EAAyBllJ,EAAOvsB,QAClE,gBAAC,IAAU,CAACrF,MAAOhB,EAAAA,EAAAA,MAAAA,MACjB,yBAAG,eAAe,IAAE83K,EAAyBllJ,EAAOvsB,OAAO,oBAG3C,IAAnB0xK,GACC,gBAAC,IAAU,CAAC/2K,MAAOhB,EAAAA,EAAAA,MAAAA,WACjB,yBAAG,uBAAuB,IAAE+3K,EAAc,MAI7Cl0F,EAAAA,EAAAA,GAAoBj/E,EAAAA,GAAAA,cAAuBA,EAAAA,GAAAA,YAAAA,cAAmC6+E,EAAQt9E,MACrF,gBAAC,IAAU,CAACnF,MAAOhB,EAAAA,EAAAA,MAAAA,WACjB,yBAAG,uBAAwB,KACxB,IAAM4E,EAAAA,GAAAA,YAAAA,cAAoCA,EAAAA,GAAAA,YAAAA,cAAiCsU,QAAQ,GAAG,KAG7F,gBAAC,IAAU,KAAE0Z,EAAO25C,UAElB,KAMlB,kIC7FO,SAAS9hD,EAAa2sJ,EAAkB5tJ,EAA0B2uJ,GAClEf,EAEkC,IAA5BxyK,EAAAA,GAAAA,cAAqB,IAA2B,IAAfuzK,IAC1CvzK,EAAAA,GAAAA,OAAAA,aAA6B,EAC7BA,EAAAA,GAAAA,IAAAA,aAA0B,GA7C9B,SAAwBwzK,GACtB,MAAMC,EAAgB,aAAeD,EAAc7uJ,WAC7C+uJ,EAAa13J,EAAAA,EAAYy3J,GAC/B,IAAKC,EAEH,YADAjgK,QAAQC,MAAO,4CAA2C8/J,KAK5D,IAAI53J,EAAM5b,EAAAA,GAAAA,cAAqBwzK,GAE3B53J,EAAM,EACJA,GAAO,GAAuB,KAAlB43J,GACdlgK,EAAAA,EAAAA,GACG,uDAAsDogK,EAAWnyK,mCAGpEqa,IACA5b,EAAAA,GAAAA,YAAAA,IAAuBwzK,EAAe53J,IACtCtI,EAAAA,EAAAA,GAAiB,GAAEogK,EAAWnyK,8BAA8Bqa,iDAG9D5b,EAAAA,GAAAA,YAAAA,IAAuBwzK,EAAe,GAChB,IAAlBA,GAAsD,IAA/BxzK,EAAAA,GAAAA,OAAAA,eACzBA,EAAAA,GAAAA,OAAAA,aAA6B,IAE/BsT,EAAAA,EAAAA,GACE,gCAAE,uDAEA,2BACA,2BACCogK,EAAWnyK,KACZ,2BACA,2BACCmyK,EAAWzjK,OAIpB,CAII0jK,CAAe/uJ,GAKE,IAAf2uJ,GAAmD,IAA/BvzK,EAAAA,GAAAA,OAAAA,eACtBA,EAAAA,GAAAA,OAAAA,aAA6B,GAG/BA,EAAAA,GAAAA,SAAkBuzK,EAEC,IAAfA,EACFxrK,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,sBAEdD,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAEhB+sC,EAAAA,EAAAA,GAAmBy9H,EACrB,6ECrEO,MAAMoB,EACXC,QAAU,MAOV/jK,cAAoH,IAAxGonH,EAAoG,UAAH,6CAAG,CAAC,EAC/GlnH,KAAK8jK,OAAS58C,EAAI48C,OAClB9jK,KAAKy2B,OAASywF,EAAIzwF,OAClBz2B,KAAKD,OAASmnH,EAAInnH,OAClBC,KAAK0D,MAAQwjH,EAAIxjH,MACjB1D,KAAK5F,GAAK8sH,EAAI9sH,EAChB,EA0BK,SAAS2pK,EAAW5wK,GACzB,MAAM6wK,EAAK7wK,EACX,MAA4B,iBAAd6wK,EAAG5jI,QAA8C,iBAAhB4jI,EAAGjyK,UAA+C,iBAAfiyK,EAAGx0K,OACvF,CAEO,SAASy0K,EAAe9wK,GAC7B,MAAM6wK,EAAK7wK,EACX,MAA4B,iBAAd6wK,EAAG5jI,QAA8C,iBAAhB4jI,EAAGjyK,QACpD,CAOO,SAASmyK,EAAa/wK,GAE3B,MAA4B,iBADjBA,EACMitC,MACnB,uHC1CA,SAAS18B,EAAMygK,EAAkB,GAAgC,IAAhC,GAAE/pK,GAAgB,EACjD,OAAO,IAAIwpK,EAAAA,GAAW,CAAElgK,MAAOygK,EAAU/pK,GAAIA,GAC/C,CAEO,MAAMgqK,EAAgF,CAC3FC,SAAU,SAAU36I,GAClB,KAAKq6I,EAAAA,EAAAA,IAAWr6I,EAAI3pB,QAAS,OAAO2D,EAAM,oBAAqBgmB,GAE/D,MAAM46I,EAAqB56I,EAAI3pB,OACzB0lH,GAAWnpC,EAAAA,EAAAA,IAAgBgoF,EAASvyK,UAC1C,IAAK0zH,EAAU,OAAO/hH,EAAM,oBAAqBgmB,GAEjD,MAAM0W,GAASxwC,EAAAA,EAAAA,IAAU00K,EAASlkI,QAClC,OAAKA,GAEDosG,EAAAA,EAAAA,GAAiB/mB,KAAavoC,EAAAA,EAAAA,IAAmBuoC,IACnDrlF,EAAOysG,mBAAmBpnB,EAAU6+C,EAAS90K,SACtC,IAAIo0K,EAAAA,GAAW,CAAEntI,OAAQ,KAAMr8B,GAAIsvB,EAAItvB,MAEzCsJ,EAAM,yBAA0BgmB,GANnBhmB,EAAM,0BAA2BgmB,EAOvD,EAEA66I,QAAS,SAAU76I,GACjB,KAAKu6I,EAAAA,EAAAA,IAAev6I,EAAI3pB,QAAS,OAAO2D,EAAM,4BAA6BgmB,GAE3E,MAAM46I,EAAyB56I,EAAI3pB,OAC7B0lH,GAAWnpC,EAAAA,EAAAA,IAAgBgoF,EAASvyK,UAC1C,IAAK0zH,EAAU,OAAO/hH,EAAM,oBAAqBgmB,GAEjD,MAAM0W,GAASxwC,EAAAA,EAAAA,IAAU00K,EAASlkI,QAClC,IAAKA,EAAQ,OAAO18B,EAAM,0BAA2BgmB,GAErD,KAAK8iH,EAAAA,EAAAA,GAAiB/mB,MAAcvoC,EAAAA,EAAAA,IAAmBuoC,GAAW,OAAO/hH,EAAM,yBAA0BgmB,GACzG,MAAMuvD,EAAO74C,EAAOwsG,eAAennB,GACnC,OAAKxsC,EACE,IAAI2qF,EAAAA,GAAW,CAAEntI,OAAQwiD,EAAKzpF,QAAS4K,GAAIsvB,EAAItvB,KADpCsJ,EAAM,qBAAsBgmB,EAEhD,EAEAszD,WAAY,SAAUtzD,GACpB,KAAKu6I,EAAAA,EAAAA,IAAev6I,EAAI3pB,QAAS,OAAO2D,EAAM,4BAA6BgmB,GAE3E,MAAM46I,EAAyB56I,EAAI3pB,OAC7B0lH,GAAWnpC,EAAAA,EAAAA,IAAgBgoF,EAASvyK,UAC1C,IAAK0zH,EAAU,OAAO/hH,EAAM,mBAAoBgmB,GAEhD,MAAM0W,GAASxwC,EAAAA,EAAAA,IAAU00K,EAASlkI,QAClC,IAAKA,EAAQ,OAAO18B,EAAM,0BAA2BgmB,GAErD,MAAM+M,EAAS2J,EAAO68C,WAAWwoC,GACjC,OAAIhvF,EAAO5M,IAAY,IAAI+5I,EAAAA,GAAW,CAAEntI,OAAQ,KAAMr8B,GAAIsvB,EAAItvB,KACvDsJ,EAAM+yB,EAAO/M,KAAO,SAAUA,EACvC,EAEA86I,aAAc,SAAU96I,GACtB,KAAKw6I,EAAAA,EAAAA,IAAax6I,EAAI3pB,QAAS,OAAO2D,EAAM,4BAA6BgmB,GAEzE,MAAM0W,GAASxwC,EAAAA,EAAAA,IAAU85B,EAAI3pB,OAAOqgC,QACpC,IAAKA,EAAQ,OAAO18B,EAAM,0BAA2BgmB,GAErD,MAAM+6I,EAAyB,IAAIrkI,EAAO6sG,UAAU9gI,UAAWi0B,EAAOzuC,QAAQwa,QAE9E,OAAO,IAAIy3J,EAAAA,GAAW,CAAEntI,OAAQguI,EAAcrqK,GAAIsvB,EAAItvB,IACxD,EAEAsqK,YAAa,SAAUh7I,GACrB,KAAKw6I,EAAAA,EAAAA,IAAax6I,EAAI3pB,QAAS,OAAO2D,EAAM,4BAA6BgmB,GAEzE,MAAM0W,GAASxwC,EAAAA,EAAAA,IAAU85B,EAAI3pB,OAAOqgC,QACpC,IAAKA,EAAQ,OAAO18B,EAAM,0BAA2BgmB,GAErD,MAAMi7I,EAA0B,IAAIvkI,EAAOzuC,WAAYyuC,EAAO6sG,WAAWl/I,KAAI,QAAEgE,EAAUknF,GAAK,QAAM,CAClGlnF,WACAvC,QAASypF,EAAKzpF,QACf,IACD,OAAO,IAAIo0K,EAAAA,GAAW,CAAEntI,OAAQkuI,EAAUvqK,GAAIsvB,EAAItvB,IACpD,EAEAwqK,aAAc,SAAUl7I,GACtB,KAAKu6I,EAAAA,EAAAA,IAAev6I,EAAI3pB,QAAS,OAAO2D,EAAM,4BAA6BgmB,GAC3E,MAAM46I,EAAyB56I,EAAI3pB,OAC7B0lH,GAAWnpC,EAAAA,EAAAA,IAAgBgoF,EAASvyK,UAC1C,IAAK0zH,EAAU,OAAO/hH,EAAM,mBAAoBgmB,GAEhD,MAAM0W,GAASxwC,EAAAA,EAAAA,IAAU00K,EAASlkI,QAClC,IAAKA,EAAQ,OAAO18B,EAAM,0BAA2BgmB,GAErD,KAAKwzD,EAAAA,EAAAA,IAAmBuoC,GAAW,OAAO/hH,EAAM,mCAAoCgmB,GACpF,MAAMozD,EAAS18C,EAAOzuC,QAAQ6L,IAAIioH,GAClC,IAAK3oC,EAAQ,OAAOp5E,EAAM,qBAAsBgmB,GAChD,MAAMr2B,EAAWypF,EAAOQ,YAAYl9C,EAAOzuC,SAC3C,OAAK0B,EACE,IAAIuwK,EAAAA,GAAW,CAAEntI,OAAQpjC,EAAU+G,GAAIsvB,EAAItvB,KAD5BsJ,EAAM,mCAAoCgmB,EAElE,EAEAm7I,kBAAmB,SAAUn7I,GAC3B,OAAO,IAAIk6I,EAAAA,GAAW,CAAEntI,OAAQquI,EAAAA,EAAY,GAAI1qK,GAAIsvB,EAAItvB,IAC1D,kGC3GK,MAAM2qK,EAEX9pJ,gBAAkB,KAIlBnb,YAAYigG,EAAYooD,GACtBnoJ,KAAKglK,OAASjlE,EACd//F,KAAKmoJ,KAAOA,CACd,CAEO8c,iBAAuB,MACb,QAAf,EAAAjlK,KAAKqqF,kBAAU,OAAf,EAAiB66E,OACnB,CAEOC,kBACL,MAAMC,EAAUL,EAAOM,SAAW,MAAQrlK,KAAKglK,OAAS,IAAMhlK,KAAKmoJ,KACnEnoJ,KAAKqqF,WAAa,IAAIi7E,UAAUF,GAEhCplK,KAAKqqF,WAAW1rF,iBAAiB,SAAU4G,GACzC0wE,EAAAA,GAAAA,KAAqB,wBAAuBmvF,eAAqB5pK,KAAK4mH,UAAU78G,KAAM2wE,EAAAA,aAAAA,MAAoB,OAE5Gl2E,KAAKqqF,WAAW1rF,iBAAiB,UAAW4mK,GAC5CvlK,KAAKqqF,WAAW1rF,iBAAiB,QAAQ,IACvCs3E,EAAAA,GAAAA,KACG,wCAAuCj2E,KAAKglK,UAAUhlK,KAAKmoJ,OAC5DjyE,EAAAA,aAAAA,QACA,OAGJl2E,KAAKqqF,WAAW1rF,iBAAiB,SAAS,IACxCs3E,EAAAA,GAAAA,KAAoB,+BAAgCC,EAAAA,aAAAA,QAAsB,MAE9E,EAGF,SAASqvF,EAAoChgK,GAC3C,MAAMmkB,EAAkBluB,KAAKC,MAAM8J,EAAEzX,MAErC,IAAK47B,EAAIo6I,SAAWM,EAAAA,EAAkB16I,EAAIo6I,QAAS,CACjD,MAAM0B,EAAW,IAAI5B,EAAAA,GAAW,CAAElgK,MAAO,2BAA4BtJ,GAAIsvB,EAAItvB,KAE7E,YADA4F,KAAK8+E,KAAKtjF,KAAK4mH,UAAUojD,GAE3B,CACA,MAAMA,EAAWpB,EAAAA,EAAkB16I,EAAIo6I,QAAQp6I,GAC1C87I,GACLxlK,KAAK8+E,KAAKtjF,KAAK4mH,UAAUojD,GAC3B,mFCjDA,IAAIplI,EAEG,SAASwtD,IACVxtD,GAAQA,EAAO6kI,iBACgB,IAA/B75K,EAAAA,EAAAA,oBACJg1C,EAAS,IAAI2kI,EAAAA,EAAO,YAAa35K,EAAAA,EAAAA,mBACjCg1C,EAAO+kI,kBACT,CAEO,SAASx3E,IACd,OAAOvtD,GAA+B5/B,MAArB4/B,EAAOiqD,YAA2D,GAAhCjqD,EAAOiqD,WAAWo7E,UACvE,+WC4DA,MAAMC,EACJC,WAAa,GACbC,eAAiB,GACjBC,cAAgB,GAChBC,aAAe,GACfC,YAAc,GACdC,kBAAoB,GACpBC,gBAAkB,GAClBC,aAAe,GACfC,YAAc,GACdC,aAAe,GACfllF,gBAAkB,IAClBmlF,gBAAkB,GAElBC,gBAA0D,IAA5CC,EAA6B,UAAH,8CACtCvmK,KAAK2lK,WAAanqK,KAAK4mH,UAAUpyH,EAAAA,IAGjC,MAAMw2K,EAAyBp7K,EAAAA,EAAAA,8BAkB/B,OAjBIm7K,IAA4Bn7K,EAAAA,EAAAA,+BAAyC,GACzE4U,KAAK4lK,gBAAiBa,EAAAA,EAAAA,MACtBr7K,EAAAA,EAAAA,8BAAyCo7K,EAEzCxmK,KAAK6lK,cAAgBrqK,KAAK4mH,UAAUt/E,EAAAA,GACpC9iC,KAAK8lK,aAAetqK,KAAK4mH,UAAUnuH,EAAAA,GACnC+L,KAAK+lK,YAAcvqK,KAAK4mH,UAAUpuH,OAAOi/I,YAAYh4I,EAAAA,GAAAA,YACrD+E,KAAKgmK,kBAAoBxqK,KAAK4mH,UAAUpuH,OAAOi/I,YAAY93I,EAAAA,GAAAA,YAC3D6E,KAAKimK,gBAAkBzqK,KAAK4mH,UAAU8hC,EAAAA,IACtClkJ,KAAKkmK,aAAe1qK,KAAK4mH,UAAUh3H,EAAAA,GACnC4U,KAAKmmK,YAAc3qK,KAAK4mH,UAAUxvH,EAAAA,EAAAA,eAClCoN,KAAKkhF,gBAAkB1lF,KAAK4mH,UAAUskD,EAAAA,IACtC1mK,KAAKqmK,gBAAkB7qK,KAAK4mH,UAAUh7C,EAAAA,IAElCp3E,EAAAA,GAAAA,OAAagQ,KAAKomK,aAAe5qK,KAAK4mH,UAAUjtH,EAAAA,KAEjCwxK,KAAKC,SAASC,mBAAmBrrK,KAAK4mH,UAAUpiH,QAErE,CAEA8mK,WAA+C,IAAtCC,IAAiB,UAAH,+CACrB,MAAMC,GAAU,IAAI17K,MAAOswC,UAC3B5rC,EAAAA,GAAAA,SAAkBg3K,EAClB,MAAM3rK,EAAa2E,KAAKsmK,gBACxB,OAAO,IAAI/jI,SAAQ,CAACC,EAASygF,MAC3BltC,EAAAA,EAAAA,IAAK16E,GACF0jF,MAAK,KACJ,MAAMkoF,EAAqB,CACzBC,iBAAkBl3K,EAAAA,GAAAA,WAClBouF,SAAUp+E,KAAKmnK,kBACfpxF,KAAM16E,EACN2rK,WAOF,OALA9nF,EAAAA,EAAAA,IAAc+nF,GAEVF,GACF9wF,EAAAA,GAAAA,KAAoB,cAAeC,EAAAA,aAAAA,KAAmB,KAEjD1zC,GAAS,IAEjBw8C,OAAO5nB,IACN3zD,QAAQC,MAAM0zD,GACP6rD,MACP,GAER,CAEAkkD,kBAA4C,IAA5BC,EAAa,UAAH,8CAExB,MAAMC,EAAY/yK,KAAKguB,MAAMh3B,KAAK0Z,MAAQ,KACpC7U,EAAKH,EAAAA,GAAAA,SACX,IAAI+B,EAAY,iBAAgBs1K,OAAel3K,KAAMH,EAAAA,GAAAA,cAAqBG,GAAM,SAEhF,OADIi3K,IAAYr1K,EAAW,WAAaA,GACjCA,CACT,CAEA8gI,aACE,MAAMx3H,EAAa2E,KAAKsmK,gBAExBgB,EADiBtnK,KAAKmnK,kBACH9rK,EACrB,CAEAksK,WAAW3xF,GAAkD,IAA9BmD,IAAS,UAAH,+CACnC,IAAKnD,GAA6B,KAAfA,EAAmB,MAAM,IAAIxkE,MAAM,yBACtD,OAAO2kE,EAAAA,EAAAA,IAAKH,GAAYmJ,MAAK,KACvBhG,GAAQx9C,YAAW,IAAMrpC,SAAS6mF,UAAU,KACzCx2C,QAAQC,YAEnB,CAEAglI,wBAAwB1xF,GACtB,GAAc,OAAVA,EAAgB,OAAOvzC,QAAQ0gF,OAAO,IAAI7xG,MAAM,qBACpD,MAAM6nE,EAAOnD,EAAM,GACnB,IAAKmD,EAAM,OAAO12C,QAAQ0gF,OAAO,IAAI7xG,MAAM,0BAE3C,MAAMq2J,EAAS,IAAIlyF,WACbmyF,EAAU,IAAInlI,SAAgB,CAACC,EAASygF,KAC5CwkD,EAAOE,OAAS,SAA4BpiK,GAC1C,MAAM4qB,EAAS5qB,EAAE4qB,OACjB,GAAe,OAAXA,EACF,OAAO8yF,EAAO,IAAI7xG,MAAM,yBAE1B,MAAMqlB,EAAStG,EAAOsG,OACtB,GAAsB,iBAAXA,EACT,OAAOwsF,EAAO,IAAI7xG,MAAM,yCAG1BoxB,EADiB/L,EAEnB,CAAC,IAGH,OADAgxI,EAAOG,WAAW3uF,GACXyuF,CACT,CAEAplI,8BAA8BszC,GAAyC,UACrE,IAAKA,GAA6B,KAAfA,EAAmB,MAAM,IAAIxkE,MAAM,yBAEtD,IAAIy2J,EAYAC,EAXJ,IACED,EAAUnpK,OAAOs3E,KAAKJ,GACtBiyF,EAAUA,EAAQlrK,MAGpB,CAFE,MAAO+G,GACPD,QAAQC,MAAMA,EAChB,CAEA,IAAKmkK,GAAuB,KAAZA,EACd,OAAOtlI,QAAQ0gF,OAAO,IAAI7xG,MAAM,wDAIlC,IACE02J,EAAatsK,KAAKC,MAAMosK,EAG1B,CAFE,MAAOnkK,GACPD,QAAQC,MAAMA,EAChB,CAEA,IAAKokK,GAAkC,wBAApBA,EAAWC,OAAmCD,EAAWh6K,KAC1E,OAAOy0C,QAAQ0gF,OAAO,IAAI7xG,MAAM,iCAGlC,MAAMtjB,EAAmB,CACvBq+F,OAAQvW,GAGJoyF,GAAiBpG,EAAAA,EAAAA,IAAWkG,EAAWh6K,KAAK63K,YAE5CrnF,EAA+B,CACnCe,WAAY2oF,EAAe3oF,WAC3BE,SAAUyoF,EAAezoF,SACzBvjD,cAAegsI,EAAehsI,cAE9B7wB,MAAO68J,EAAe78J,MACtBiN,OAAQ4vJ,EAAe5vJ,OAEvB1f,eAA2C,QAA5B,EAAAsvK,EAAetvK,qBAAa,aAA5B,EAA8BrC,QAAe,CAACuvD,EAAO39C,IAAa29C,EAAS39C,EAAQxW,OAAQ,KAAM,EAChHoO,UAAiC,QAAvB,EAAAmoK,EAAenoK,gBAAQ,aAAvB,EAAyB7Q,SAAU,EAC7CvB,cAAyC,QAA3B,EAAAu6K,EAAev6K,oBAAY,aAA3B,EAA6BuB,SAAU,EAErDylB,QAASuzJ,EAAe91B,SACxB+1B,aAAcD,EAAezS,cAAcvlK,EAAAA,GAAAA,UAAmB,EAC9DyhK,YAAa,IAAIuW,EAAevW,aAAap7J,QAAe,CAACuvD,EAAO,KAAF,IAAGsiH,EAAMt8J,GAAI,SAAMg6C,EAASh6C,CAAG,GAAG,IAItG,OADA9d,EAAKwwF,WAAaA,EACX/7C,QAAQC,QAAQ10C,EACzB,CAEAitB,SACE,OAAOC,EAAAA,EAAAA,IAAe,sBAAuBhb,KAC/C,CAEAib,gBAAgBxe,GACd,OAAOye,EAAAA,EAAAA,IAAiBwqJ,EAAqBjpK,EAAM3O,KACrD,EAIF,SAASq6K,EAAQprF,EAAcqrF,GAC7B,IAAK,MAAM1iJ,KAAU0iJ,EACnBrrF,EAAOA,EAAKtsF,QAAQi1B,EAAO,GAAIA,EAAO,IAExC,OAAOq3D,CACT,CAmcA,SAASsrF,EAAShtK,GAEhB,GA6FI4gF,UAAUW,UAAU/tF,SAAS,OAASotF,UAAUW,UAAU/tF,SAAS,YACrEiJ,aAAY,MACVwL,EAAAA,EAAAA,GAAgB,oEAAoE,GACnF,MAhGAjI,EAAY,OAAO,EACxBA,EAAaitK,mBAAmBC,OAAOvyF,KAAK36E,KAE5C,MAAMmtK,EAAUhtK,KAAKC,MAAMJ,EAAY+nC,EAAAA,IAavC,IAXAyyH,EAAAA,EAAAA,KAAU+L,EAAAA,EAAAA,IAAW4G,EAAQ7C,cAC7B8C,EAAAA,EAAAA,IAAeD,EAAQ5C,iBACvB1iI,EAAAA,EAAAA,GAAcslI,EAAQ3C,gBACtBjiF,EAAAA,EAAAA,GAAa4kF,EAAQ1C,cAEjB9xK,OAAOojB,OAAOoxJ,EAAS,oBACzBlhG,EAAAA,EAAAA,IAAgBkhG,EAAQnC,kBAExB5iK,QAAQgd,KAAM,0CACd6mD,EAAAA,EAAAA,IAAgB,KAEdtzE,OAAOojB,OAAOoxJ,EAAS,eACzB,KACEptK,EAAAA,EAAAA,IAAYotK,EAAQzC,YAItB,CAHE,MAAOxgK,GACP9B,QAAQgd,KAAM,qCACdrlB,EAAAA,EAAAA,IAAY,GACd,MAEAqI,QAAQgd,KAAM,kDACdrlB,EAAAA,EAAAA,IAAY,IAEd,GAAIpH,OAAOojB,OAAOoxJ,EAAS,qBACzB,KACE3sK,EAAAA,EAAAA,IAAkB2sK,EAAQxC,kBAI5B,CAHE,MAAOzgK,GACP9B,QAAQgd,KAAM,2CACd5kB,EAAAA,EAAAA,IAAkB,GACpB,MAEA4H,QAAQgd,KAAM,uDACd5kB,EAAAA,EAAAA,IAAkB,IAEpB,GAAI7H,OAAOojB,OAAOoxJ,EAAS,mBACzB,KACEE,EAAAA,EAAAA,IAAgBF,EAAQvC,gBAI1B,CAHE,MAAO1gK,GACP9B,QAAQC,MAAM,8BAA+B6B,IAC7CmjK,EAAAA,EAAAA,IAAgB,GAClB,MAEAA,EAAAA,EAAAA,IAAgB,IAElB,GAAI10K,OAAOojB,OAAOoxJ,EAAS,gBACzB,IAEEp9K,EAAAA,EAAAA,KAAco9K,EAAQtC,aAIxB,CAHE,MAAO3gK,GACP9B,QAAQC,MAAM,iEACdD,QAAQC,MAAM6B,EAChB,CAEF,GAAIvR,OAAOojB,OAAOoxJ,EAAS,mBACzB,IACE9B,EAAAA,GAA+BlrK,KAAKC,MAAM+sK,EAAQtnF,iBAIpD,CAHE,MAAO9pB,GACPsvG,EAAAA,IAA+B,IAAIp7K,MAAOswC,WAC1Cn4B,QAAQC,MAAM,qDAAuD0zD,EACvE,CAEF,GAAIpnE,EAAAA,GAAAA,MAAegE,OAAOojB,OAAOoxJ,EAAS,gBACxC,KACE75E,EAAAA,EAAAA,IAAa65E,EAAQpC,aAGvB,CAFE,MAAO7gK,GACP9B,QAAQC,MAAM,wCAA0C6B,EAC1D,CAEF,GAAIvR,OAAOojB,OAAOoxJ,EAAS,eACzB,IACE,MAAMG,EAAMntK,KAAKC,MAAM+sK,EAAQrC,YAAa/iI,EAAAA,KA3gBlD,SAAsCulI,GAEpC,MAAMC,EAAY54K,EAAAA,GAClB,GAAmB,iBAAR24K,EAAkB,CAoB3B,GAlBIA,GAAO,UAEwB,MAA7BC,EAAUvuD,iBAAgE,iBAA9BuuD,EAAUvuD,kBACxDuuD,EAAUvuD,gBAAkBuuD,EAAUvuD,gBAAgBvsH,KAAK4tJ,aAC1B,MAA7BktB,EAAUvuD,kBACZuuD,EAAUvuD,gBAAkB,KAM9BsuD,EAAM,WACsB,KAA1BC,EAAU3+H,aAAmD,MAA7B2+H,EAAUvuD,iBAAyD,KAA9BuuD,EAAUvuD,kBACjFuuD,EAAUh3B,KAAKg3B,EAAU3+H,aAAe2+H,EAAUvuD,wBAG7CuuD,EAAUvuD,iBAEfsuD,EAAM,SAAU,CAClB,IAAK,MAAMl2H,KAAKm2H,EAAU7Y,oBACT,mCAAXt9G,EAAElhD,OACJkhD,EAAElhD,KAAO,iCAGb,IAAK,MAAMkhD,KAAKm2H,EAAUlwK,cACT,mCAAX+5C,EAAElhD,OACJkhD,EAAElhD,KAAO,gCAGf,CACA,GAAIo3K,EAAM,SAAU,CACY,IAA1BC,EAAUp5I,cACZo5I,EAAUp5I,YAAc,MAEH,IAAnBo5I,EAAU5zE,OACZ4zE,EAAU5zE,KAAO,MAGnB,MAAMvY,EAAOmsF,EAAUjV,kBACvB,IAAK,IAAI9iK,EAAI,EAAGA,EAAI4rF,EAAKz+B,SAAShvD,OAAQ6B,IACpC4rF,EAAKz+B,SAASntD,GAAGkB,WACnB0qF,EAAKz+B,SAASntD,GAAK4rF,EAAKz+B,SAASntD,GAAGkB,SAG1C,CACA,GAAI42K,EAAM,SAAU,CAClB,MAAMP,EAA8B,CAClC,CAAC,mBAAoB,oBACrB,CAAC,iBAAkB,kBACnB,CAAC,oBAAqB,qBACtB,CAAC,oBAAqB,qBACtB,CAAC,oBAAqB,qBACtB,CAAC,qBAAsB,sBACvB,CAAC,wBAAyB,yBAC1B,CAAC,oBAAqB,qBACtB,CAAC,YAAa,aACd,CAAC,aAAc,cACf,CAAC,cAAe,eAChB,CAAC,aAAc,mBACf,CAAC,cAAe,oBAChB,CAAC,eAAgB,qBACjB,CAAC,aAAc,mBACf,CAAC,sBAAuB,uBACxB,CAAC,oBAAqB,qBACtB,CAAC,wBAAyB,8BAC1B,CAAC,8BAA+B,qCAElC,IAAK,MAAMhoI,KAAU7tC,EAAAA,EAAAA,MACnB,IAAK,MAAMuqF,KAAU18C,EAAOzuC,QAAQC,SAClCkrF,EAAOttF,QAAU24K,EAAQrrF,EAAOC,KAAMqrF,EAG5C,EACAS,EAAAA,EAAAA,KACAF,EAAM,CACR,CACA,GAAmB,iBAARA,EAAkB,OAS7B,GARIA,EAAM,KACRG,EAAAA,EAAAA,GAAS,IACT94K,EAAAA,GAAAA,0BACAA,EAAAA,GAAAA,yBAEE24K,EAAM,IACRC,EAAUz9J,MAAQoW,WAAWqnJ,EAAUz9J,QAErCw9J,EAAM,GACJ30K,OAAOojB,OAAO8sI,EAAAA,GAAa,aAAc,CAC3C,MAAMpyJ,EAAIoyJ,EAAAA,GAAAA,oBACHA,EAAAA,GAAAA,aACPA,EAAAA,GAAY7sC,EAAAA,aAAAA,kBAAiCvlH,CAC/C,CAEF,GAAI62K,EAAM,IAEJC,EAAUrX,SAAWqX,EAAUrX,QAAQviK,OAAS,EAClD,IAAK,MAAMq6E,KAAUu/F,EAAUrX,QAC7B,GAAKloF,EAAO3wE,eAAiD,IAAhC2wE,EAAO3wE,cAAc1J,OAClD,IAAK,MAAM4hF,KAAgBvH,EAAO3wE,cACN,mCAAtBk4E,EAAar/E,OACjBq/E,EAAar/E,KAAO,iCAe5B,GAVIo3K,EAAM,SACoBnoK,IAAxBooK,EAAUG,kBACLH,EAAUG,UAIjBJ,EAAM,KACRv9K,EAAAA,EAAAA,YAAuB,IAAK49K,EAAAA,KAG1BL,EAAM,GAAI,CACZ10K,EAAAA,EAAS5D,EAAAA,YAAAA,kBAAgC,IAAIkxF,EAAAA,EAAQlxF,EAAAA,YAAAA,kBAErD,IAAK,MAAM+vC,KAAU7tC,EAAAA,EAAAA,MACnB,IAAK,MAAMy1B,KAAYoY,EAAOpjB,UAGP,2CAAjBgL,EAASxxB,OACXwxB,EAASxxB,KAAO,0CAIxB,CAEA,MAAMyyK,EAAiB,KAErBL,EAAUxjJ,GAAK,CAAEnd,QAAS,EAAGoN,IAAK,GAClC,IAAK,MAAMg0D,KAAUu/F,EAAUrX,QAC7BloF,EAAOjkD,GAAK,CAAEnd,QAAS,EAAGoN,IAAK,GAIjCuzJ,EAAUjwK,IAAIC,QAAUgwK,EAAU9nK,YAClC8nK,EAAUjwK,IAAIE,SAAW+vK,EAAU7nK,aACnC6nK,EAAUjwK,IAAIG,QAAU8vK,EAAU5nK,YAClC4nK,EAAUjwK,IAAIK,UAAY4vK,EAAU3nK,cACpC2nK,EAAUjwK,IAAII,QAAU6vK,EAAU1nK,YAClC0nK,EAAUjwK,IAAIM,SAAW2vK,EAAUznK,aACnCynK,EAAUjwK,IAAI2hB,aAAesuJ,EAAUn7F,gBAAgB,EAIzD,GAAIk7F,EAAM,GAAI,CACZ,IAAIO,EAAY,IAAIl5K,EAAAA,GAAAA,eACpBk5K,EAAYA,EAAU77K,QAAQiV,GAAQA,EAAI/Q,OAASC,EAAAA,iBAAAA,oBACnD,MAAM23K,EAAS,IAAIhmK,EAAAA,EAAwB3R,EAAAA,iBAAAA,mBAC3C23K,EAAO13K,MAAQ,EAEf,IAAK,MAAM23K,KAAOF,EAChBC,EAAO13K,OAAS23K,EAAI33K,MAGtBzB,EAAAA,GAAAA,cAAuB,IAClBA,EAAAA,GAAAA,cAAAA,QAA6BsS,GAAQA,EAAI/Q,OAASC,EAAAA,iBAAAA,oBACrD23K,GAGFF,IACAj5K,EAAAA,GAAAA,0BACAA,EAAAA,GAAAA,uBACF,CAEA,GAAI24K,EAAM,MAEG/4K,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,SACZ,CACP,MAAMotH,GAAUoxB,EAAAA,EAAAA,IAAyB,CACvCtuC,IAAIuuC,EAAAA,EAAAA,MACJntG,SAAUtxC,EAAAA,EAAAA,QACVy1H,iBAAkB,GAClBD,eAAe,EACfkpB,aAAa,EACbrtG,mBAAmB,EACnBvuC,OAAQ,KAEV67I,EAAAA,EAAAA,IAAgBvxB,EAClB,CAEF,GAAI0rD,EAAM,GAAI,EAEZG,EAAAA,EAAAA,GAAS,IACT,MAAM9qJ,EAAS4qJ,EAAUS,kBACrBrrJ,GAAQhuB,EAAAA,GAAAA,kBAAyBg/E,YAAYhxD,GACjD,MAAMsrJ,EAAQV,EAAUW,sBACpBD,GAAOt5K,EAAAA,GAAAA,cAAAA,KAA0B,CAAEuB,KAAM+3K,EAAO73K,MAAO,GAC7D,CAQA,GAPIk3K,EAAM,KACRM,KACAO,EAAAA,EAAAA,MAEEb,EAAM,KACRC,EAAU1jJ,YAAc,MAEtByjJ,EAAM,GAAI,CACZ,MAAMc,EAAqB,CACzB,sBACA,qBACA,qBACA,oBACA,eACA,gBACA,eACA,iBACA,eACA,gBACA,mBACA,oBACA,mBACA,qBACA,mBACA,oBACA,mBACA,mBACA,mBACA,qBACA,kBACA,0BACA,kCACA,6BACA,8BACA,+BACA,+BACA,gCACA,4BACA,kCACA,cACA,eACA,cACA,gBACA,cACA,eACA,mBACA,cACA,YACA,WACA,eACA,cACA,yBACA,gCACA,sBACA,qBACA,qBACA,qBACA,qBACA,qBACA,kBACA,oBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,mBACA,gBACA,kBACA,oBACA,sBACA,wBACA,8BACA,YACA,YACA,aACA,0BACA,2BACA,kBACA,4BACA,0BACA,UACA,SACA,WACA,UACA,YACA,UACA,WACA,gBAEIC,EAAqB,CACzB,cACA,WACA,aACA,UACA,WACA,UACA,YACA,UACA,WACA,eACA,SACA,cACA,eACA,cACA,gBACA,cACA,eACA,mBACA,eACA,gBACA,eACA,iBACA,eACA,gBACA,mBACA,oBACA,mBACA,qBACA,mBACA,oBACA,sBACA,qBACA,qBACA,oBACA,mBACA,mBACA,mBACA,qBACA,kBACA,0BACA,kCACA,6BACA,8BACA,+BACA,+BACA,gCACA,4BACA,kCACA,YACA,YACA,cACA,sBACA,qBACA,kBACA,qBACA,oBACA,kBACA,kBACA,mBACA,QAEF,IAAIjmJ,EAASnO,OAAOszJ,EAAUn7F,kBAC1BrlE,MAAMqb,KAASA,EAAS,GAC5BmlJ,EAAUjwK,IAAI2hB,cAAgBmJ,EAC9B,IAAK,MAAM+sF,KAASi5D,SACXb,EAAUp4D,GAEnB,IAAK,MAAMnnC,KAAUu/F,EAAUrX,QAAS,CACtC,MAAMoY,EAAYtgG,EAClB,IAAI5lD,EAASnO,OAAOq0J,EAAUl8F,kBAC1BrlE,MAAMqb,KAASA,EAAS,GAC5BkmJ,EAAUhxK,IAAI2hB,cAAgBmJ,EAC9B,IAAK,MAAM+sF,KAASk5D,SACXrgG,EAAOmnC,EAElB,CACF,CACA,GAAIm4D,EAAM,GAER,IAAK,MAAMt/F,KAAUr5E,EAAAA,GAAAA,QAAgBq5E,EAAO2N,MAAQ,IAAM3N,EAAO2N,MAGnE,GAAI2xF,EAA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CT,IACA,4GACA,4FACA,IACA,4CAA2CA,kDAC3C,kBAAiBA,yEACjB,IACA,YACA,IACA,OAAMA,YACN,OAAMA,qBACN,IACA,OAAMA,WACN,OAAMA,iBACN,KAKMs2L,EAAsC,CACjDz4L,MAAO,CACL,oCACA,IACA,4FACA,uGACA,yHACA,kGACA,IACA,gCACA,IACA,mHACA,yHACA,4CACA,IACA,gCACA,IACA,6DACA,IACA,eACA,IACA,2HACA,4HACA,IACA,mCACA,IACA,8GACA,IACA,uHACA,uCACA,IACA,uDACA,KAEF04L,QAAS,CACP,iBACA,IACA,0GACA,mHACA,kHACA,gCACA,KAEFC,SAAU,CACR,kBACA,IACA,6FACA,IACA,+BACA,KAEF92H,IAAK,CACH,iCACA,IACA,yEACA,IACA,oHACA,oDACA,IACA,+FACA,IACA,wGACA,KAEF+2H,IAAK,CACH,oBACA,IACA,6EACA,IACA,iBACA,IACA,kBACA,IACA,sBACA,KAEFh4I,GAAI,CACF,kBACA,IACA,yGACA,iFACA,IACA,yBACA,IACA,eACA,IACA,aACA,KAEFi4I,MAAO,CACL,uCACA,IACA,+HACA,uDACA,kIACA,IACA,oCACA,IACA,gGACA,IACA,sCACA,KAEFj5L,MAAO,CACL,eACA,IACA,mIACA,uIACA,KAEFwyB,IAAK,CACH,aACA,IACA,mIACA,yIACA,KAEFwiG,QAAS,CACP,4BACA,IACA,+FACA,oIACA,8GACA,KAEFkkE,GAAI,CAAC,wBAAyB,IAAK,wEAAyE,KAC5GltB,SAAU,CACR,qCACA,IACA,mFACA,IACA,4GACA,IACA,kDACA,IACA,0CACA,IACA,0CACA,KAEFmtB,KAAM,CACJ,wCACA,IACA,oFACA,IACA,oBACA,IACA,WACA,IACA,wBACA,IACA,qFACA,KAEFC,KAAM,CACJ,cACA,IACA,gIACA,gCACA,KAEFh3D,KAAM,CACJ,cACA,IACA,6GACA,2CACA,KAEFpoI,KAAM,CACJ,cACA,IACA,uHACA,KAEFy4B,KAAM,CACJ,wBACA,IACA,yHACA,0HACA,mEACA,IACA,iBACA,IACA,wBACA,KAEFguD,QAAS,CACP,sBACA,IACA,6GACA,KAEFU,KAAM,CACJ,cACA,IACA,sGACA,KAEFt7C,SAAU,CAAC,kBAAmB,IAAK,4CAA6C,KAChF89F,KAAM,CACJ,oDACA,IACA,4EACA,IACA,6EACA,4EACA,iFACA,4DACA,IACA,uCACA,IACA,qEACA,IACA,wCACA,IACA,qFACA,KAEFC,QAAS,CACP,iBACA,IACA,4CACA,2HACA,uHACA,2EACA,KAEFI,GAAI,CACF,wCACA,IACA,iIACA,sDACA,IACA,8FACA,IACA,gFACA,IACA,yHACA,IACA,YACA,IACA,wEACA,IACA,2BACA,IACA,iEACA,IACA,yBACA,IACA,uFACA,IACA,oCACA,KAEFq1D,MAAO,CAAC,eAAgB,IAAK,wDAAyD,KAEtFC,IAAK,CACH,4CACA,IACA,6HACA,2HACA,gFACA,IACA,qBACA,IACA,2BACA,IACA,4HACA,iFACA,KAEF9xD,GAAI,CACF,yBACA,IACA,6FACA,6FACA,kCACA,IACA,kFACA,kBACA,aACA,IACA,qEACA,IACA,oCACA,KAEF+xD,KAAMX,EAAgC,QACtC30D,GAAI,CAAC,YAAa,IAAK,4DAA6D,KACpFkC,GAAI,CACF,mBACA,IACA,6GACA,IACA,kDACA,KAEF1C,IAAK,CACH,sDACA,IACA,gDACA,IACA,sHACA,2GACA,gEACA,2DACA,2FACA,IACA,kHACA,iFACA,KAEF9B,KAAM,CACJ,cACA,IACA,6HACA,2CACA,KAEF,eAAgB,CACd,mCACA,IACA,kGACA,wGACA,4EACA,IACA,uGACA,qGACA,0BACA,IACA,iHACA,yGACA,UACA,IACA,2GACA,sEACA,KAEFoC,IAAK,CACH,4CACA,IACA,8EACA,2GACA,oCACA,2FACA,IACA,6BACA,IACA,wCACA,KAEFy1D,MAAO,CAAC,eAAgB,IAAK,oEAAqE,KAElG7xD,KAAM,CACJ,sCACA,IACA,oHACA,uHACA,oEACA,IACA,8BACA,IACA,gFACA,IACA,+BACA,KAEF8xD,IAAK,CACH,aACA,IACA,yGACA,+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,GACjC,OAAOx7J,MAAMixF,UAAUxoH,QAAQsyL,MAAM3wM,KAAK8xI,WAAY88D,UACxD,EACA5uM,KAAK6vM,2BAA2B7vM,KAAKiuM,MAAO,UAAWnjD,GAEvDA,EAAU,SAAUqmD,EAAeC,GACjC,OAAOx7J,MAAMixF,UAAU/d,YAAY6nF,MAAM3wM,KAAK8xI,WAAY88D,UAC5D,EACA5uM,KAAK6vM,2BAA2B7vM,KAAKiuM,MAAO,cAAenjD,GAE3DA,EAAU,WAER,OADAl1G,MAAMixF,UAAU14I,KAAKk6H,KAAKroH,KAAK8xI,YACxB9xI,IACT,EACAA,KAAK6vM,2BAA2B7vM,KAAKiuM,MAAO,OAAQnjD,GAEpD9qJ,KAAKgrM,WAAWjtM,KAGd,kDACA,8CACA,kCACA,oEACA,YACA,wBACA,4BACA,yCACA,SACA,oBACA,+DACA,OACA,IACA,eACA,IACA,MAIA,mDACA,8CACA,+BACA,wFACA,wBACA,4BACA,gBACA,+DACA,kCACA,gBACA,kBACA,mDACA,IACA,IACA,cACA,IACA,MAKA,+BACA,mDACA,+BACA,sBACA,0DACA,IACA,wBACA,4BACA,yCACA,uDACA,IACA,8BACA,aACA,oBACA,qBACA,+CACA,iBACA,IACA,OACA,IACA,oBACA,KACA,sBACA,iBACA,MACA,IAKA,oCACA,wDACA,+BACA,sBACA,0DACA,IACA,wBACA,4BACA,yCACA,uDACA,IACA,8BACA,aACA,oBACA,qBACA,+CACA,YACA,IACA,OACA,IACA,aACA,KACA,sBACA,iBACA,MACA,IAIA,oDACA,8CACA,gCACA,kEACA,YACA,wBACA,4BACA,yCACA,SACA,oBACA,4CACA,OACA,IACA,IACA,MAIA,uDACA,8CACA,sBACA,0DACA,IACA,yCACA,wBACA,mDACA,4BACA,mCACA,mBACA,gBACA,IACA,yCACA,qEACA,yBACA,uBACA,qBACA,oBACA,2BACA,+BACA,uDACA,iCACA,8FACA,IACA,8BACA,oBACA,+DACA,wEACA,4CACA,eACA,IACA,0BACA,OACA,IACA,qBACA,gBACA,IACA,MAIA,gDACA,8CACA,gCACA,8DACA,eACA,wBACA,4BACA,yCACA,sBACA,SACA,oBACA,mDACA,OACA,IACA,YACA,IACA,MAIA,mDACA,8CACA,0CACA,kEACA,4DACA,gCACA,wBACA,WACA,oCACA,kBACA,kEACA,IACA,kBACA,IACA,yBACA,mDACA,IACA,gBACA,IACA,MAIA,wDACA,8CACA,0CACA,yGACA,kEACA,+BACA,wBACA,WACA,mCACA,eACA,kEACA,IACA,kBACA,IACA,wBACA,mDACA,IACA,gBACA,IACA,MAIA,iDACA,8CACA,+BACA,6DACA,wBACA,4BACA,+DACA,kCACA,iDACA,eACA,IACA,IACA,gBACA,IACA,MAEA,gBACA,oCACA,8CAEA,wCACA,2BACA,IAEA,0CACA,mBACA,kDACA,4CACA,sBACA,yBACA,sBACA,aACA,IACA,IACA,uBACA,IACA,eACA,KACA,QAEA,2DACA,8CACA,eACA,gBACA,0CACA,wFACA,IACA,wBACA,IACA,MACA,GAEJ,EAMAwnJ,EAAY1e,UAAUmmE,WAAa,SAAU7zH,GAC3C,IACI2xE,EADA0iD,EAAkBxtM,KAGtB8qJ,EAAU,SAAUruJ,GAElB,OADAA,EAAQmX,OAAOnX,GACX+wM,EAAgBiB,iBAElBzuM,KAAKlS,KAAO2O,EACLuD,MAGAvD,CAEX,EACAuD,KAAKqxM,OAASrxM,KAAKytM,qBAAqB3iD,GAAS,GACjD9qJ,KAAKirJ,YAAY9xE,EAAO,SAAUn5E,KAAKqxM,QAGvCrxM,KAAKirJ,YACHjrJ,KAAKqxM,OACL,eACArxM,KAAKytM,qBAAqB75L,OAAO09L,cAAc,GAC/C/rD,EAAYsmD,0BAoBd,IAfA,IAAI0F,EAAY,CACd,SACA,aACA,SACA,UACA,cACA,QACA,SACA,YACA,oBACA,oBACA,cACA,cACA,QAEO1gN,EAAI,EAAGA,EAAI0gN,EAAUviN,OAAQ6B,IACpCmP,KAAK6vM,2BAA2B7vM,KAAKqxM,OAAQE,EAAU1gN,GAAI+iB,OAAOizH,UAAU0qE,EAAU1gN,KAGxFi6J,EAAU,SAAU0mD,EAAeC,EAASxnG,GAG1C,OA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CZ,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SA4FGpzC,MAAK,IAAMmG,KAAK4Q,SAAW,KAC3BiV,MAAM,EAAG,GACT7c,KAAK,IA5FG,CACX,YACA,YACA,UACA,WACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,UACA,YACA,WACA,YACA,WACA,WACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,UACA,UACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,YACA,UACA,UACA,WACA,aAOKnP,MAAK,IAAMmG,KAAK4Q,SAAW,KAAK,IAGzC3T,KAAM,iCACNkwC,SAAU,GACVD,OAAQ,CAACqtG,EAAgBuwE,KACvB,IAAKxpK,MAAMyK,QAAQwuF,GAAQ,MAAM,IAAIz9H,MAAM,kCAC3C,MAAMtjB,EAAO+gJ,EAUb,MAPe,IAAI/gJ,EAAK,IACrBC,KAAI,CAACK,EAAGyC,IACM,MAANzC,EACHA,EACAwlB,OAAO09L,cAAeljN,EAAEiuC,WAAW,GAAK,IAASvuC,EAAK,GAAGuuC,WAAWxrC,EAAI/C,EAAK,GAAGkB,SAAW,GAAM,MAEtGsO,KAAK,MACU8hN,CAAG,kCC/2D3B,SAAS4F,IACP,OAAO,IAAIziL,SAAQ,CAACC,EAASygF,KACtBvkH,OAAOumN,WACVhiG,EAAO,8BAQT,MAAMiiG,EAAqCxmN,OAAOumN,UAAU7+M,KAAK,gBAAiB,GAGlF8+M,EAAiBC,gBAAkB,WACtBnlN,KAAKy2B,OACb2uL,kBAAkB,aACvB,EAEAF,EAAiBG,QAAU,SAAyCzmN,GAClEqkH,EAAQ,qBAAoBrkH,IAC9B,EAEAsmN,EAAiBI,UAAY,WAC3B,MAAMC,EAAKvlN,KAAKy2B,OACX8uL,EAIL/iL,EAAQ+iL,EAAGC,YAAY,CAAC,cAAe,aAAaC,YAAY,eAH9DxiG,EAAO,wCAIX,CAAC,GAEL,CAEO,SAAS+hE,IACd,OAAO,IAAIziJ,SAAQ,CAACC,EAASygF,KAC3B+hG,IACGjmI,MAAMwmI,GACE,IAAIhjL,SAAgB,CAACC,EAASygF,KACnC,MAAMyiG,EAA8BH,EAAG/nN,IAAI,QAC3CkoN,EAAQL,QAAU,SAAoCzmN,GACpDqkH,EAAO,gDAAkDrkH,EAC3D,EAEA8mN,EAAQJ,UAAY,WAClB9iL,EAAQxiC,KAAKy2B,OACf,CAAC,IACAsoD,MAAM1jF,GAAemnC,EAAQnnC,OAEjC2jF,OAAOplE,GAAMqpG,EAAOrpG,IAAG,GAE9B,CAEO,SAASm8D,EAAK16E,GACnB,OAAO2pN,IAAQjmI,MAAMwmI,GACZ,IAAIhjL,SAAc,CAACC,EAASygF,KAEjC,MAAMyiG,EAAUH,EAAGI,IAAItqN,EAAY,QAEnCqqN,EAAQL,QAAU,SAAU9/M,GAC1B09G,EAAO,mCAAqC19G,EAC9C,EAEAmgN,EAAQJ,UAAY,IAAM9iL,GAAS,KAGzC,CAEO,SAASojL,IACd,OAAOZ,IAAQjmI,MAAMwmI,IACnBA,EAAG7oN,OAAO,OAAO,GAErB,2eCzBA,MAAM0zE,EAuBF,CAEFy1I,aAAa,IAAIv6N,MAAOswC,UACxBq8E,WAAY,WAAyB,IAAfp4F,EAAY,UAAH,6CAAG,EAChC,MAAMgD,EAAOhD,EAAYjtB,EAAAA,EAAAA,cACG,MAAxB5C,EAAAA,GAAAA,gBACFA,EAAAA,GAAAA,cAAuB,GAEU,MAA/BA,EAAAA,GAAAA,uBACFA,EAAAA,GAAAA,qBAA8B,GAEO,MAAnCA,EAAAA,GAAAA,2BACFA,EAAAA,GAAAA,yBAAkC,GAEpCA,EAAAA,GAAAA,eAAwB6yB,EACxB7yB,EAAAA,GAAAA,sBAA+B6yB,EAC/B7yB,EAAAA,GAAAA,0BAAmC6yB,EAEnC9mB,EAAAA,EAAAA,QAAiB8jB,GAEjB7vB,EAAAA,GAAAA,YAAmB6vB,GAGf7vB,EAAAA,GAAAA,gBACF++L,EAAAA,EAAAA,IAAmBlvK,GAIjB7vB,EAAAA,GAAAA,MAAaA,EAAAA,GAAAA,KAAAA,QAAoB6vB,GAGrCunD,EAAAA,GAAAA,QAAoBvnD,GAGhB7vB,EAAAA,GAAAA,cACFA,EAAAA,GAAAA,YAAAA,YAA+B6vB,GAC/B7vB,EAAAA,GAAAA,YAAAA,WAIEA,EAAAA,GAAAA,aAAoBA,EAAAA,GAAAA,YAAAA,YAA+B6vB,GAGvD7vB,EAAAA,GAAAA,QAAAA,SAAwBq5E,GAAWA,EAAO5/C,QAAQ5J,KAGlDuwD,EAAO01I,qBAAqBjmM,GAC5BuwD,EAAO21I,iBAGPv6D,EAAAA,EAAAA,IAAwB3rI,IAGxB+/E,EAAAA,EAAAA,IAAuB//E,EACzB,EAOAmmM,SAAU,CACRC,gBAAiB,IACjBC,yBAA0B,GAC1BC,eAAgB,EAChBC,mBAAoB,GACpBC,2BAA4B,EAC5BC,2BAA4B,GAC5BC,2BAA4B,GAC5B/0F,wBAAyB,IACzBg1F,qBAAsB,EACtBxoK,SAAU,IACVyoK,gBAAiB,EACjBC,mBAAoB,IACpBC,oBAAqB,IAGvBb,qBAAsB,WAAyB,IAAfjmM,EAAY,UAAH,6CAAG,EAC1C,IAAK,MAAO+mM,EAAaC,KAAY7yN,OAAO2H,QAAQy0E,EAAO41I,UAAW,CACpE,QAAgBxlN,IAAZqmN,EAAuB,MAAM,IAAIz1M,MAAM,mCAC3Cg/D,EAAO41I,SAASY,GAAeC,EAAUhnM,CAC3C,CACF,EAMAkmM,cAAe,WAcb,GAbI31I,EAAO41I,SAASC,iBAAmB,IACJ,MAA7B76N,EAAAA,EAAAA,mBACFA,EAAAA,EAAAA,iBAA4B,IAEI,IAA9BA,EAAAA,EAAAA,kBAgPV,WAEE,GAAIA,EAAAA,EAAAA,iCAA2C,OAK/C,GADqB,CAAC4M,EAAAA,GAAAA,SAAuBA,EAAAA,GAAAA,YAC5BnJ,SAASkJ,EAAAA,EAAAA,QAAgB,OAE1C,MAAM+uN,EACJ,gCAAE,kBACe,8BAAQ,YAAiB,IACxC,gBAAC,IAAM,CACLt7N,GAAI,CAAE2a,GAAI,GACV/Z,MAAM,UACNL,KAAK,QACLqS,QAAS,KAEPhT,EAAAA,EAAAA,iBAA4B,EAAE,GAEjC,WAKL6qF,EAAAA,GAAAA,KAAoB6wI,EAAc5wI,EAAAA,aAAAA,QAAsB,IAC1D,CAzQQ6wI,GACA32I,EAAO41I,SAASC,gBAAkB,MAElC71I,EAAO41I,SAASC,gBAA8C,EAA5B76N,EAAAA,EAAAA,iBAClCyqF,EAAAA,GAAAA,UAAqBzqF,EAAAA,EAAAA,0BAIrBglF,EAAO41I,SAASx0F,yBAA2B,EAAG,CAChD,MAAMolC,EAAkB5mK,EAAAA,GAAAA,6BACxB,GAAI4mK,EAAgB5nK,OAAS,EAAG,CAC9B,MAAMg4N,EAAcpwD,EAAgBtiK,KAAKC,MAAMD,KAAK4Q,SAAW0xJ,EAAgB5nK,UAC/E4yF,EAAAA,EAAAA,IAAgBolI,EAClB,CACA52I,EAAO41I,SAASx0F,wBAA0B,GAC5C,CAEA,GAAIphD,EAAO41I,SAASQ,sBAAwB,EAAG,CAC7C,MAAMS,EAAiB3yN,KAAKC,MAAM,EAAI67E,EAAO41I,SAASQ,uBACtDhkI,EAAAA,EAAAA,IAA6BykI,GAC7B72I,EAAO41I,SAASQ,qBAAuB,CACzC,CAUA,GARIp2I,EAAO41I,SAAShoK,UAAY,KAC9By2B,EAAAA,EAAAA,MACIzkF,EAAAA,GAAAA,gBAAuBwB,EAAAA,iBAAAA,YACzB4+E,EAAO41I,SAAShoK,SAAW,KAE3BoyB,EAAO41I,SAAShoK,SAAW,KAG3BoyB,EAAO41I,SAASS,iBAAmB,EAAG,CACxC,GAAIz2N,EAAAA,GAAAA,YACF,IACEA,EAAAA,GAAAA,YAAAA,SAGF,CAFE,MAAOuV,IACPkZ,EAAAA,EAAAA,GAAe,8CAAgDlZ,EACjE,CAEF6qE,EAAO41I,SAASS,gBAAkB,CACpC,CAEIr2I,EAAO41I,SAASU,oBAAsB,IAEpCpyN,KAAK4Q,UAAY,MACnBi6B,EAAAA,EAAAA,MAEFixC,EAAO41I,SAASU,mBAAqB,KAGnCt2I,EAAO41I,SAASW,qBAAuB,KACzC1sN,EAAAA,EAAAA,KACAm2E,EAAO41I,SAASW,oBAAsB,IAE1C,EAEA3hC,KAAM,SAAU3pL,GAQd,IAPAylF,EAAAA,EAAAA,MACAi8H,EAAAA,EAAAA,MAGA3yB,EAAAA,EAAAA,MAGI/hB,EAAAA,EAAAA,IAAShtK,GAAa,CACxB2xF,EAAAA,GAAAA,QACA37E,EAAAA,EAAAA,MACArhB,EAAAA,GAAAA,0BACAA,EAAAA,GAAAA,wBACIA,EAAAA,GAAAA,gBACF4+L,EAAAA,EAAAA,MAIF5+L,EAAAA,GAAAA,aAAoBA,EAAAA,GAAAA,SAGpBogF,EAAOy1I,aAAc,IAAIv6N,MAAOswC,UAChC,MAAM+1H,EAAa3hK,EAAAA,GAAAA,WACbk3N,EAAc92I,EAAOy1I,YAAcl0D,EACnCw1D,EAAmB7yN,KAAKC,MAAM2yN,EAAct0N,EAAAA,EAAAA,eAG5Cw0N,EAA8B9yN,KAAKC,MAAM2yN,EAAc,KAG7D,IAAIG,EAAe,EAInB,GAHID,EAA8B,MAChCC,GAAgB/yN,KAAKC,MAAoC,IAA9B6yN,IAEzBA,EAA8B,GAAKA,GAA+B,IACpE,IAAK,IAAIv2N,EAAI,EAAGA,EAAIu2N,IAA+Bv2N,EAC7CyD,KAAK4Q,UAAY,KACnBmiN,IAIN,IAAK,IAAIx2N,EAAI,EAAGA,EAAIw2N,EAAcx2N,KAChCsuC,EAAAA,EAAAA,MAGF,IAAImoL,EAAoB,EACxB,MAAMC,EAAwBv3N,EAAAA,GAAAA,aAAAA,QAA8BA,EAAAA,GAAAA,qBAA+Bk3N,EAAc,IAMzG,GALAl3N,EAAAA,GAAAA,UAAiBu3N,EAAsB,YAGvC77D,EAAAA,EAAAA,MAE2B,OAAvB17J,EAAAA,GAAAA,YACFA,EAAAA,GAAAA,OAAe,EACfA,EAAAA,GAAAA,YAAmBm3N,QACd,GAAwB,IAApBn3N,EAAAA,GAAAA,SACT,IAAK,IAAIa,EAAI,EAAGA,EAAIb,EAAAA,GAAAA,SAAAA,OAAwBa,IAAK,CAC/C,MAAMuwF,EAAUpxF,EAAAA,GAAAA,SAAgBa,GAChC,IAAKmD,OAAOojB,OAAOnjB,EAAAA,EAAUmtF,GAAU,SACvC,MAAMn2E,EAAUhX,EAAAA,EAASmtF,GACzB,IAAKn2E,EAAQyd,SAAU,SAGvB,IADazd,EAAQw1B,UACXo7B,aAAc,SAExB,GAAI7rE,EAAAA,GAAAA,gBAAyBoxF,EAAS,SAEtC,MAAMuB,GAAOC,EAAAA,EAAAA,IAAsB5yF,EAAAA,GAAQib,EAAQ5W,OAC7CwuF,GAAOC,EAAAA,EAAAA,IAA8B9yF,EAAAA,GAAQib,EAAQ5W,OACrD0uF,GAAOC,EAAAA,EAAAA,IAA2BhzF,EAAAA,GAAQib,EAAQ5W,OAIlD0W,EAFiBzW,KAAK+gB,IAAIstE,EAAME,EAAME,GAAQ/yF,EAAAA,GAAAA,SAAAA,OAEvBm3N,EAC7Bl8M,EAAQ9W,kBAAoB4W,EAC5Bu8M,GAAqBv8M,CACvB,CAIF,MAAMy8M,GAAoC5nH,EAAAA,EAAAA,IAAuBunH,GAC3DM,GAAkBl0N,EAAAA,EAAAA,MACtB,gCACE,gBAAC,IAAM,CAACusG,OAAQ0nH,IAAqC,WAGvD,gBAAC,IAAK,CAACr8M,MAAOq8M,KAIhBhlI,EAAAA,EAAAA,IAA6B2kI,GAGzBn3N,EAAAA,GAAAA,gBACF++L,EAAAA,EAAAA,IAAmBo4B,GAIjBn3N,EAAAA,GAAAA,MAAaA,EAAAA,GAAAA,KAAAA,QAAoBm3N,GAGjCn3N,EAAAA,GAAAA,aAAoBA,EAAAA,GAAAA,YAAAA,YAA+Bm3N,GAGnDn3N,EAAAA,GAAAA,aAAoBA,EAAAA,GAAAA,YAAAA,YAA+Bm3N,GAEvD//I,EAAAA,GAAAA,QAAoB+/I,GAGpBn3N,EAAAA,GAAAA,QAAAA,SAAwBq5E,GAAWA,EAAO5/C,QAAQ09L,KAGlD,MAAMtkM,EAAOskM,EAAmBv0N,EAAAA,EAAAA,cAChC5C,EAAAA,GAAAA,gBAAyB,EACzBA,EAAAA,GAAAA,uBAAgC,EAChCA,EAAAA,GAAAA,2BAAoC,EAEpCA,EAAAA,GAAAA,eAAwB6yB,EACxB7yB,EAAAA,GAAAA,sBAA+B6yB,EAC/B7yB,EAAAA,GAAAA,0BAAmC6yB,EAEnC7yB,EAAAA,GAAAA,WAAoBogF,EAAOy1I,YAC3Bz1I,EAAO3uD,QACP,MAAMimM,GAAoBh3L,EAAAA,EAAAA,IAAiC7N,GAC3D0Y,YACE,IACEl9B,EAAAA,EAAAA,KACE,gCACE,gBAAC,IAAU,KAAC,eAAaqpN,EAAkB,6BAC3C,0BACE,0BACE,gBAAC,IAAU,KAAC,0BACa,gBAAC,IAAK,CAACv8M,MAAOo8M,MAGzC,0BACE,gBAAC,IAAU,KAAC,gCAA8BE,IAE5C,0BACE,gBAAC,IAAU,KAAC,cACC,gBAAC,IAAU,CAAC/jM,WAAY4jM,IAAqB,kDAMpE,IAEJ,MAEEt6H,EAAAA,GAAAA,QACA37E,EAAAA,EAAAA,MACA++D,EAAO3uD,QACPzxB,EAAAA,GAAAA,QACAkyK,EAAAA,EAAAA,IAAmBlyK,EAAAA,GAAAA,mBACnBA,EAAAA,GAAAA,2BAGAymH,EAAAA,EAAAA,OAEF67D,EAAAA,EAAAA,IACF,EAEA7wJ,MAAO,WAEL,MAAMkmM,GAAc,IAAIr8N,MAAOswC,UAC/B,IAAIviB,EAAOsuM,EAAcv3I,EAAOy1I,YAChC,MAAM78K,EAAS3vB,EAAOzmB,EAAAA,EAAAA,cAGtBymB,EAAO/kB,KAAKC,MAAM8kB,EAAOzmB,EAAAA,EAAAA,eAErBymB,EAAO,IAET+2D,EAAOy1I,YAAc8B,EAAc3+K,EACnCh5C,EAAAA,GAAAA,WAAoB23N,EAAc3+K,EAClConC,EAAO6nC,WAAW5+F,IAEpB3a,OAAO68B,WAAW60C,EAAO3uD,MAAO7uB,EAAAA,EAAAA,cAA0Bo2C,EAC5D,iCC/YK,SAAS02C,IACd,IACE,MAAOkoI,WAGT,CAFE,MACA,MAAO,KACT,CACF,uHCGAjrI,EAAAA,EAAAA,MACAkrI,WAAW91M,MAAQA,EACnB81M,WAAWC,SAAWA,EACtBA,EAAAA,OACE,gBAAC,KAAK,KACJ,gBAAC,IAAa,OAEhBztN,SAAS+wD,eAAe,SAG1B7vB,WAAWqyD,EAAAA,EAA4B,KAarCrZ,EAAAA,GAAAA,WAXF,YACEqxH,EAAAA,EAAAA,MACAkiB,EAAAA,OACE,gBAAC,KAAK,KACJ,gBAAC,IAAa,OAEhBztN,SAAS+wD,eAAe,QAE5B,IAOgDl5D,SAASC,KAAK+tB,WAAW,aACvExhB,OAAOqpN,eAAiB,WACtB,MAAO,yBACT,GAIArpN,OAAOq/H,MAAQ,KACb,MAAM,IAAI3sH,MAAM,2DAA2D,EAK7E1S,OAAO+jI,OAAS,KACd,MAAM,IAAIrxH,MAAM,6DAA6D,iDC5C1E,MACMwrC,EAAqB/wC,GADRA,IAA6ByJ,OAAOu0H,UAAUh+H,GACDg+H,CAAUh+H,IAAMA,EAAI,iGCUpF,SAASmqG,EAAkBrwG,GAChC,OACE,gCACE,gBAAC,IAAU,KAAC,wPAMZ,gBAAC,IAAgB,MACjB,gBAAC,IAAqBA,GAG5B,uHCbO,SAASqiN,EAAkBriN,GAChC,MAAOoqB,EAAKm7D,IAAUt+F,EAAAA,EAAAA,UAA8B,UAMpD,OALAmZ,EAAAA,EAAAA,GAAY,KAMV,gCACE,gBAAC,IAAI,CAAC5Z,QAAQ,YAAYsQ,MAAOszB,EAAKF,SAL1C,SAAsBC,EAA6BC,GACjDm7D,EAAOn7D,EACT,EAGkEvkC,GAAI,CAAEgf,SAAU,cAAele,SAAU,QACrG,gBAAC,IAAG,CAAC0jC,MAAO,SAAUvzB,MAAO,WAC7B,gBAAC,IAAG,CAACuzB,MAAO,kBAAmBvzB,MAAO,YAG/B,WAARszB,GAAoB,gBAAC,IAAiB,CAAC19B,cAAesT,EAAMtT,gBACpD,WAAR09B,GAAoB,gBAAC,IAAiB,MAG7C,2RCJA,MAAMz1B,GAAYC,EAAAA,EAAAA,GAAW,CAC3B0tN,SAAU,CACRv9I,aAAc,UAQX,SAASw9I,EAAsBviN,GACpC,MAAM5K,EAAUT,KACT8L,EAAM6D,GAAW8H,EAAAA,UAAe,GACjCo2M,EAAexiN,EAAMwiN,aAGrBC,EAAYD,EAAaviG,cAAcf,gBAAkBsjG,EAAaviG,cAAca,kBACpF4hG,EAAYF,EAAaviG,cAAcb,gBAAkBojG,EAAaviG,cAAca,kBAK1F,OACE,gCACE,gBAAC,IAAc,CAACroH,QAAS,IAAM6L,GAASiI,IAASA,IAAMF,UAAWC,EAAAA,GAChE,gBAAC,IAAY,CACX3J,QACE,gBAAC,IAAU,KAAC,KACP6/M,EAAaviG,cAAc7zH,SAAS,SAAO,KAC7C2+B,EAAAA,EAAAA,KAAiC,IAAIplC,MAAOswC,UAAYusL,EAAavhF,YAAYhrG,WAAW,WAIlGx1B,EAAO,gBAAC,IAAU,CAACha,MAAM,YAAe,gBAAC,IAAU,CAACA,MAAM,aAE7D,gBAAC,IAAQ,CAAC+lB,GAAI/L,EAAMy/K,QAAS,EAAG/kH,eAAa,GAC3C,gBAAC,IAAG,CAAC96D,GAAI,GACP,gBAAC,IAAK,CAACrL,QAAQ,OAAO5O,KAAK,SACzB,gBAAC,IAAS,KACR,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACiP,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,eAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,MAAE5jG,EAAAA,EAAAA,IAAc8jG,EAAaviG,cAAc19C,YAG1D,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACltE,UAAWD,EAAQktN,SAAUhqL,QAAS,GAC/C,gBAAC,IAAU,KAAC,YAASgoF,EAAAA,EAAAA,GAAckiG,EAAaviG,cAAcxlG,SAGlE,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACplB,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,mBAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,MACRv3L,EAAAA,EAAAA,IAAgF,IAA/Cy3L,EAAaviG,cAAca,sBAInE,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACzrH,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,oBAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,MACRv3L,EAAAA,EAAAA,IAAiF,IAAhDy3L,EAAaviG,cAAcY,uBAInE,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACxrH,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,+BAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KACT,gBAAC,IAAK,CAAChpD,MAAOg9M,EAAaviG,cAAcf,qBAI/C,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAC7pH,UAAWD,EAAQktN,SAAUhqL,QAAS,IACjD,gBAAC,IAAS,CAACjjC,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KAAC,KACH3sC,EAAAA,EAAAA,IAAU2gM,EAAaviG,cAAcb,iBAAmB,kBAKrE,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAC/pH,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,8BAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KACT,gBAAC,IAAS,CAAChpD,MAAOi9M,OAIxB,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACptN,UAAWD,EAAQktN,SAAUhqL,QAAS,IACjD,gBAAC,IAAS,CAACjjC,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KAAC,KAAO3sC,EAAAA,EAAAA,IAAU6gM,GAAa,wBAI9C,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACrtN,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,gCAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KACT,gBAAC,IAAK,CAAChpD,MAAOg9M,EAAaviG,cAAcW,sBAI/C,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACvrH,UAAWD,EAAQktN,SAAUhqL,QAAS,IACjD,gBAAC,IAAS,CAACjjC,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KAAC,KACH3sC,EAAAA,EAAAA,IAAU2gM,EAAaviG,cAAcU,kBAAoB,oBAM1E,gBAAC,IAAM,CAACloH,QA7GhB,WACEwsI,EAAAA,GAAAA,KAAkBu9E,EAAaviG,cACjC,GA2G0C,SAK5C,iGC1JO,SAAS0iG,IACd,OACE,gCACE,gBAAC,IAAU,KAAC,wCACX9hF,EAAAA,EAAAA,KAAmB5sH,GAClB,gBAAC,IAAqB,CAACtqB,IAAKsqB,EAAEgsG,cAAc9B,IAAKqkG,aAAcvuM,MAIvE,6KCCA,MAAMtf,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXkqE,KAAM,CACJ+F,aAAc,OACd/vE,QAASH,EAAMI,QAAQ,GACvBu2B,OAAQ32B,EAAMI,QAAQ,GACtBqE,WAAY,UAEdlT,KAAM,CACJe,MAAO,WAIN,SAASy7N,IACd,MAAMxtN,EAAUT,IACVkuN,EAAuBx4N,EAAAA,GAAAA,wBAAiCA,EAAAA,GAAAA,qBAA8B,KAE5F,OACE,gBAAC,IAAK,CAACjE,KAAK,QAAQgP,QAAS,CAAEL,KAAMK,EAAQhP,OAC3C,gBAAC,IAAS,KACR,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACimB,UAAU,KAAKmnE,MAAM,MAAMp+E,QAAS,CAAEL,KAAMK,EAAQ4pE,OAC7D,gBAAC,IAAU,CAACx4E,QAAQ,SAAQ,sDAE9B,gBAAC,IAAS,CAACgoE,MAAM,OAAOp5D,QAAS,CAAEL,KAAMK,EAAQ4pE,OAC/C,gBAAC,IAAU,CAACx4E,QAAQ,SAClB,gBAAC,IAAK,CAACgf,MAAOnb,EAAAA,GAAAA,2BAGlB,gBAAC,IAAS,CAACmkE,MAAM,OAAOp5D,QAAS,CAAEL,KAAMK,EAAQ4pE,OAC/C,gBAAC,IAAU,CAACx4E,QAAQ,SAAQ,IACzB,gBAAC,IAAS,CAACgf,MAAOq9M,IAAwB,QAOzD,6KC9BO,SAASxvI,EAAgBrzE,GAC9B,MAAOS,EAAM6D,GAAW8H,EAAAA,UAAe,GACjCquB,EAASz6B,EAAMy6B,OAKfqoL,EAAc,GAAEroL,EAAOe,WAAW,IAAI+uE,OADd,MAC8C/1F,MAC1E,EACA7lB,KAAK+gB,IAAI+qB,EAAOe,SAASnyC,OAHG,KAKxB05N,EAAa,CACjBj4L,SAAU2P,EAAOwhE,QAAUxhE,EAAOztC,OAClCqjE,WAAY,IAER2yJ,EAAa,GAAEF,MAAcj4L,EAAAA,EAAAA,GAAsBk4L,KAEzD,OACE,gBAAC,IAAG,CAAC12M,UAAWC,EAAAA,GACd,gBAAC,IAAc,CAAC7T,QAAS,IAAM6L,GAASiI,IAASA,KAC/C,gBAAC,IAAY,CAAC5J,QAAS,gBAAC,IAAU,CAAClb,MAAO,CAAE6R,WAAY,aAAe0pN,KACtEviN,EAAO,gBAAC,IAAU,CAACha,MAAM,YAAe,gBAAC,IAAU,CAACA,MAAM,aAE7D,gBAAC,IAAG,CAAC4Z,GAAI,GACP,gBAAC,IAAQ,CAACmM,GAAI/L,EAAMy/K,QAAS,EAAG/kH,eAAa,GAC3C,gBAAC,IAAsB,CAACzuE,cAAesT,EAAMtT,kBAKvD,sHC9CO,SAASu2N,EAAuBjjN,GACrC,MAAO1H,EAAMC,IAAWtR,EAAAA,EAAAA,UAAS,IAC1Bi8N,EAAaC,IAAkBl8N,EAAAA,EAAAA,UAASxB,EAAAA,EAAAA,6BAW/C,OACE,gCACGua,EAAMtT,cAAcrD,OAAS,GAC5B,gBAAC,IAAe,CACd+5N,mBAAoB,CAAC,GAAI,GAAI,GAAI,KACjC/2M,UAAU,MACV2E,MAAOhR,EAAMtT,cAAcrD,OAC3B65N,YAAaA,EACb5qN,KAAMA,EACN+qN,aAnBiB,CAACl5L,EAAgBm5L,KACxC/qN,EAAQ+qN,EAAQ,EAmBVC,oBAhByBp5L,IAC/B1kC,EAAAA,EAAAA,4BAAuCowC,SAAS1L,EAAMK,OAAO1zB,MAAO,IACpEqsN,EAAettL,SAAS1L,EAAMK,OAAO1zB,MAAO,KAC5CyB,EAAQ,EAAE,EAcJirN,iBAAkBC,EAAAA,IAGpB,GAEF,gBAAC,IAAI,CAACC,OAAK,EAAC5gN,gBAAc,GACvB9C,EAAMtT,cAAc8nB,MAAMlc,EAAO4qN,EAAa5qN,EAAO4qN,EAAcA,GAAa96N,KAAKsxH,GACpF,gBAAC,IAAqB,CAAC/vH,IAAM,GAAE+vH,EAAGyE,MAAOz5F,aAAcg1F,OAKjE,kMCfO,SAASiqG,EAAiB3jN,GAC/B,MAAOtY,EAAQ2sG,IAAaptG,EAAAA,EAAAA,UAAS,KAC9BqR,EAAMC,IAAWtR,EAAAA,EAAAA,UAAS,IAC1Bi8N,EAAaC,IAAkBl8N,EAAAA,EAAAA,UAASxB,EAAAA,EAAAA,6BAiBzCm+N,EAAyC,CAAC,EAChD,IAAK,MAAMlqG,KAAM15G,EAAMtT,cAAcT,SAAU,CAC7C,MAAMwuC,GAASxwC,EAAAA,EAAAA,IAAUyvH,EAAGl+E,UAC5B,GAAc,MAAVf,EAAgB,CAClB38B,QAAQgd,KAAM,sCAAqC4+F,EAAGl+E,YACtD,QACF,CAEA,IAAIrzC,EAAOy7N,EAAkBnpL,EAAOe,eAEvB3gC,IAAT1S,IACFy7N,EAAkBnpL,EAAOe,UAAY,CACnCf,OAAQA,EACR/tC,cAAe,IAEjBvE,EAAOy7N,EAAkBnpL,EAAOe,gBAErB3gC,IAAT1S,IAEEuxH,EAAGl+E,SAAStyC,SAASxB,IAAWgyH,EAAG9tH,KAAK1C,SAASxB,KACnDS,EAAKuE,cAAc0L,KAAKshH,EAG9B,CAGA,MAAMqwB,GAAUitD,EAAAA,EAAAA,IAA0Bve,IAAAA,aAAoB/wL,IACxDm8N,EAAWx1N,OAAOpC,OAAO23N,GAAmBl8N,QAAQS,IACxD,IAAKA,EAAM,OAAO,EAClB,GAAIA,EAAKsyC,OAAOe,SAAStyC,SAASxB,GAAS,OAAO,EAClD,IAAK,MAAMma,KAAK1Z,EAAKsyC,OAAOsnG,iBAAiBv7H,OAC3C,GAAIujI,EAAQG,KAAKroI,GAAI,OAAO,EAE9B,OAAO,CAAK,IAGd,OACE,gCACE,gBAAC,KAAI,CAACyzD,WAAS,GACb,gBAAC,KAAI,CAAC5rE,MAAI,EAACuoE,GAAI,GACb,gBAAC,IAAS,CACRn7D,MAAOpP,EACPwiC,SA/CV,SAA4BC,GAC1BkqE,EAAUlqE,EAAMK,OAAO1zB,OACvByB,EAAQ,EACV,EA6CUkN,WAAS,EACTunB,WAAY,CACVC,eAAgB,gBAAC,IAAU,MAC3BC,YAAY,GAEdzlC,MAAO,CACLq8N,WAAY,UAIlB,gBAAC,KAAI,CAACp6N,MAAI,EAACuoE,GAAI,GACZ4xJ,EAASx6N,OAAS,GACjB,gBAAC,IAAe,CACd+5N,mBAAoB,CAAC,GAAI,GAAI,GAAI,KACjC/2M,UAAU,MACV2E,MAAO6yM,EAASx6N,OAChB65N,YAAaA,EACb5qN,KAAMA,EACN+qN,aA5Ea,CAACl5L,EAAgBm5L,KACxC/qN,EAAQ+qN,EAAQ,EA4ENC,oBAzEqBp5L,IAC/B1kC,EAAAA,EAAAA,4BAAuCowC,SAAS1L,EAAMK,OAAO1zB,MAAO,IACpEqsN,EAAettL,SAAS1L,EAAMK,OAAO1zB,MAAO,KAC5CyB,EAAQ,EAAE,EAuEAirN,iBAAkBC,EAAAA,IAGpB,KAIN,gBAAC,IAAI,CAACC,OAAO,GACVG,EAASrvM,MAAMlc,EAAO4qN,EAAa5qN,EAAO4qN,EAAcA,GAAa96N,KAAKD,GAEvEA,GACE,gBAAC,IAAe,CAACwB,IAAKxB,EAAKsyC,OAAOe,SAAUf,OAAQtyC,EAAKsyC,OAAQ/tC,cAAevE,EAAKuE,mBAOnG,uUClGA,MAAMiI,GAAYC,EAAAA,EAAAA,GAAW,CAC3B0tN,SAAU,CACRv9I,aAAc,UAQX,SAASg/I,EAAsB/jN,GACpC,MAAM5K,EAAUT,KACT8L,EAAM6D,GAAW8H,EAAAA,UAAe,GAEjC0wG,EADe98G,EAAM0kB,aACIo4F,UAKzBknG,EAAapiF,EAAAA,EAAAA,KAA2B,KAAM9kB,EAAUqB,KAOxDskG,EAAY3lG,EAAUoC,gBAAkBpC,EAAUgE,kBAClD4hG,EAAY5lG,EAAUsC,gBAAkBtC,EAAUgE,kBAExD,OACE,gCACE,gBAAC,IAAc,CAACroH,QAAS,IAAM6L,GAASiI,IAASA,IAAMF,UAAWC,EAAAA,GAChE,gBAAC,IAAY,CACX3J,QACE,gBAAC,IAAU,KAAC,KACP3C,EAAM0kB,aAAa94B,KAAK,IAAEiK,KAAK4mH,UAAUz8G,EAAM0kB,aAAajK,SAIpEha,EAAO,gBAAC,IAAU,CAACha,MAAM,YAAe,gBAAC,IAAU,CAACA,MAAM,aAE7D,gBAAC,IAAQ,CAAC+lB,GAAI/L,EAAMy/K,QAAS,EAAG/kH,eAAa,GAC3C,gBAAC,IAAG,CAAC96D,GAAI,GACP,gBAAC,IAAK,CAACrL,QAAQ,OAAO5O,KAAK,SACzB,gBAAC,IAAS,KACR,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACiP,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,eAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,MAAE5jG,EAAAA,EAAAA,IAAc1+G,EAAM0kB,aAAao4F,UAAUv6C,YAG5D,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACltE,UAAWD,EAAQktN,SAAUhqL,QAAS,GAC/C,gBAAC,IAAU,KAAC,YAASgoF,EAAAA,EAAAA,GAActgH,EAAM0kB,aAAajK,SAG1D,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACplB,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,mBAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,MAAEv3L,EAAAA,EAAAA,IAA+D,IAA9B+xF,EAAUgE,sBAG5D,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACzrH,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,oBAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,MAAEv3L,EAAAA,EAAAA,IAAgE,IAA/B+xF,EAAU+D,uBAG5D,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACxrH,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,+BAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KACT,gBAAC,IAAK,CAAChpD,MAAOs3G,EAAUoC,qBAI9B,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAC7pH,UAAWD,EAAQktN,SAAUhqL,QAAS,IACjD,gBAAC,IAAS,CAACjjC,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KAAC,KAAO3sC,EAAAA,EAAAA,IAAUi7F,EAAUsC,iBAAmB,kBAI9D,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAC/pH,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,8BAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KACT,gBAAC,IAAS,CAAChpD,MAAOi9M,OAIxB,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACptN,UAAWD,EAAQktN,SAAUhqL,QAAS,IACjD,gBAAC,IAAS,CAACjjC,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KAAC,KAAO3sC,EAAAA,EAAAA,IAAU6gM,GAAa,wBAI9C,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACrtN,UAAWD,EAAQktN,UAC5B,gBAAC,IAAU,KAAC,gCAEd,gBAAC,IAAS,CAACjtN,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KACT,gBAAC,IAAK,CAAChpD,MAAOs3G,EAAU8D,sBAI9B,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACvrH,UAAWD,EAAQktN,SAAUhqL,QAAS,IACjD,gBAAC,IAAS,CAACjjC,UAAWD,EAAQktN,SAAU9zJ,MAAM,QAC5C,gBAAC,IAAU,KAAC,KAAO3sC,EAAAA,EAAAA,IAAUi7F,EAAU6D,kBAAoB,oBAMnE,gBAAC,IAAM,CAACloH,QA/GhB,WACEwsI,EAAAA,GAAAA,KAAkBnoB,EACpB,GA6G0C,OAClC,gBAAC,IAAU,CAACrkH,QA3GpB,WACMurN,MAAcrmN,EAAAA,EAAAA,GAAgB,iBACpC,GA0GU,gBAAC,IAAU,CAAClX,MAAM,aAM9B,8FCvKA,MAAMw9N,EAAS,CACb,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,+rIACA,gsIASWzwB,EAAa,IAAI1nL,EAAAA,EAEvB,SAASo4M,IACd,MAAOzjN,EAAM6D,IAAWrd,EAAAA,EAAAA,UAT1B,WACE,MAAMyhC,EAAI,IAAI/iC,KAEd,OAAwB,IAAjB+iC,EAAEy7L,YAAoC,IAAhBz7L,EAAE07L,SACjC,CAKmCC,KAC1Bn+M,EAAG6xB,IAAQ9wC,EAAAA,EAAAA,UAAS,GAe3B,OAbA6R,EAAAA,EAAAA,YAAU,KACR,MAAMrE,EAAKtC,aAAY,IAAM4lC,GAAM7xB,IAAOA,EAAI,GAAK+9M,EAAO56N,UAAS,KACnE,MAAO,IAAMmb,cAAc/P,EAAG,GAC7B,KAEHqE,EAAAA,EAAAA,YACE,IACE06L,EAAWxnL,WAAU,KACnB1H,GAAQ,EAAK,KAEjB,IAGG7D,EAGH,gBAAC,IAAK,CAACA,KAAMA,EAAMC,QAAS,IAAM4D,GAAQ,IACxC,uBAAK7c,MAAO,CAAEhB,MAAO,SAAWw9N,EAAO/9M,IACvC,uBAAKze,MAAO,CAAEzB,QAAS,SACrB,0BACEmB,MAAM,MACNC,OAAO,MACPG,IAAI,uDACJgZ,MAAM,uBACN+jN,MAAM,+FAXI,gCAgBpB,uUCnDA,MAAMC,EAAiB,IAAgE,IAA/D,KAAE9jN,EAAI,QAAEC,GAA8B,EAC5D,OACE,gBAAC,IAAK,CAACD,KAAMA,EAAMC,QAASA,GAC1B,gCACE,gBAAC,IAAU,CAACla,QAAQ,MAAK,iBACzB,0BACG6H,OAAOmY,KAAKnc,EAAAA,GAAAA,MAAajC,KAAKmsC,GAC7B,gBAAC,IAAU,CAAC5qC,IAAK4qC,GAAG,KAAGA,OAIvB,EAwBZ,SAASiwL,EAAgBxkN,GACvB,OACE,gBAAC,IAAK,CAACna,GAAI,CAAEG,QAAS,QAASmB,MAAO,OAAQpB,GAAIia,EAAMykN,SAAW,EAAI,IACrE,gBAAC,IAAS,KACPzkN,EAAMqC,KAAKja,KAAKD,IACf,MAAM,KAAEyS,EAAI,MAAE9D,EAAK,SAAE4tN,EAAW,KAAI,MAAEj+N,EAAQuZ,EAAMvZ,OAAU0B,EAE9D,OAAiB,OAAbu8N,GAAqBA,IAAa5tN,GAASzM,EAAAA,GAAAA,cAAqB,GAAK,EAErE,gBAAC,IAAQ,CAACV,IAAKiR,EAAMhP,KAAMgP,EAAMnU,MAAOA,EAAO0B,KAAM,CAAC,GACpD,gCACE,gBAAC,IAAU,CAAC1B,MAAOA,GACjB,wBAAMgB,MAAO,CAAEya,QAAS,MAAQjH,EAAAA,EAAAA,IAAcnE,IAAc,KAAEmE,EAAAA,EAAAA,IAAcypN,MAM/E,gBAAC,IAAQ,CAAC/6N,IAAKiR,EAAMhP,KAAMgP,EAAMnU,MAAOA,EAAO0B,KAAM,CAAE0B,SAASoR,EAAAA,EAAAA,IAAcnE,KAAY,KAK3G,CAEA,SAAS6tN,IACP,GAAIt6N,EAAAA,GAAAA,YAAAA,KAA0B,EAAG,CAC/B,MAAMsuC,EAAQ,UAAYtuC,EAAAA,GAAAA,SACpB4b,EAAMtX,KAAK6c,IAAInhB,EAAAA,GAAAA,cAAqBA,EAAAA,GAAAA,UAAmB,EAAuB,KAApBA,EAAAA,GAAAA,SAAyBmU,IAAW,GACpG,OACE,gBAAC,IAAK,CAAC3Y,GAAI,CAAEE,GAAI,EAAGyH,EAAG,IACrB,gBAAC,IAAU,CAAChH,QAAQ,MAAK,WACd6D,EAAAA,GAAAA,SAAgB,KAAGid,EAAAA,GAASqxB,GAAO/sC,KAAK,WAASqa,EAAI,KAEhE,gBAAC,IAAU,CAACpgB,GAAI,CAAEyT,WAAY,WAAY+jM,aAAc,eAAiB/1L,EAAAA,GAASqxB,GAAOr+B,MAG/F,CAEA,OAAO,gCACT,CAOA,SAASsqN,EAAW,GAAyD,IAAzD,KAAEnkN,EAAI,QAAEC,GAA2B,EACrD,SAASmkN,EAAkCt9N,GACzC,MAAMu9N,EAAiC,CAAC,CAAE,SAAS,gBAAC,IAAK,CAACn7N,IAAI,QAAQ6b,MAAOje,EAAI04D,UAwDjF,OAvDI14D,EAAIwL,eACN+xN,EAAM1sN,KAAK,CAAE,iBAAiB,gBAAC,IAAK,CAACzO,IAAI,MAAM6b,MAAOje,EAAIwL,kBAExDxL,EAAIsiC,aACNi7L,EAAM1sN,KAAK,CAAE,eAAe,gBAAC,IAAK,CAACzO,IAAI,QAAQ6b,MAAOje,EAAIsiC,gBAExDtiC,EAAI0sK,QACN6wD,EAAM1sN,KAAK,CAAE,UAAU,gBAAC,IAAK,CAACzO,IAAI,SAAS6b,MAAOje,EAAI0sK,WAEpD1sK,EAAI0lF,gBACN63I,EAAM1sN,KAAK,CAAE,oBAAoB,gBAAC,IAAK,CAACzO,IAAI,kBAAkB6b,MAAOje,EAAI0lF,mBAEvE1lF,EAAI44I,MACN2kF,EAAM1sN,KAAK,CAAE,gBAAgB,gBAAC,IAAK,CAACzO,IAAI,eAAe6b,MAAOje,EAAI44I,SAEhE54I,EAAIu4J,OACNglE,EAAM1sN,KAAK,CAAE,SAAS,gBAAC,IAAK,CAACzO,IAAI,QAAQ6b,MAAOje,EAAIu4J,UAElDv4J,EAAIgiD,aACNu7K,EAAM1sN,KAAK,CAAE,eAAe,gBAAC,IAAK,CAACzO,IAAI,OAAO6b,MAAOje,EAAIgiD,gBAEvDhiD,EAAI+uH,OACNwuG,EAAM1sN,KAAK,CAAE,UAAU,gBAAC,IAAK,CAACzO,IAAI,QAAQ6b,MAAOje,EAAI+uH,UAEnD/uH,EAAI8nG,MACNy1H,EAAM1sN,KAAK,CAAE,QAAQ,gBAAC,IAAK,CAACzO,IAAI,OAAO6b,MAAOje,EAAI8nG,SAEhD9nG,EAAI0L,SACN6xN,EAAM1sN,KAAK,CAAE,WAAW,gBAAC,IAAK,CAACzO,IAAI,UAAU6b,MAAOje,EAAI0L,YAEtD1L,EAAIguI,SACNuvF,EAAM1sN,KAAK,CAAE,iBAAiB,gBAAC,IAAK,CAACzO,IAAI,UAAU6b,MAAOje,EAAIguI,YAE5DhuI,EAAIw9N,kBACND,EAAM1sN,KAAK,CAAE,0BAA0B,gBAAC,IAAK,CAACzO,IAAI,mBAAmB6b,MAAOje,EAAIw9N,qBAE9Ex9N,EAAIy9N,iBACNF,EAAM1sN,KAAK,CAAE,mBAAmB,gBAAC,IAAK,CAACzO,IAAI,WAAW6b,MAAOje,EAAIy9N,oBAE/Dz9N,EAAIkpI,cACNq0F,EAAM1sN,KAAK,CAAE,gBAAgB,gBAAC,IAAK,CAACzO,IAAI,eAAe6b,MAAOje,EAAIkpI,iBAEhElpI,EAAI6zC,SACN0pL,EAAM1sN,KAAK,CAAE,WAAW,gBAAC,IAAK,CAACzO,IAAI,UAAU6b,MAAOje,EAAI6zC,YAEtD7zC,EAAIurF,OACNgyI,EAAM1sN,KAAK,CAAE,gBAAgB,gBAAC,IAAK,CAACzO,IAAI,SAAS6b,MAAOje,EAAIurF,UAE1DvrF,EAAIqkK,SACNk5D,EAAM1sN,KAAK,CAAE,WAAW,gBAAC,IAAK,CAACzO,IAAI,UAAU6b,MAAOje,EAAIqkK,YAEtDrkK,EAAI62E,OACN0mJ,EAAM1sN,KAAK,CAAE,SAAS,gBAAC,IAAK,CAACzO,IAAI,QAAQ6b,MAAOje,EAAI62E,UAG/C,gBAAC,IAAU,CAAC/7D,KAAMyiN,EAAO5O,MAAI,GACtC,CAEA,IAAIrsN,EACF,gCACE,gBAAC,IAAU,CAACrD,QAAQ,KAAKC,MAAM,WAAU,uDAGzC,2BACCo+N,EAAkCx6N,EAAAA,GAAAA,eAkBvC,OAfIA,EAAAA,GAAAA,YAAAA,KAA0B,IAC5BR,EACE,gCACGA,EACD,2BACA,2BACA,gBAAC,IAAU,CAACrD,QAAQ,KAAKC,MAAM,WAAU,gCAGzC,2BACCo+N,EAAkCx6N,EAAAA,GAAAA,gBAMvC,gBAAC,IAAK,CAACoW,KAAMA,EAAMC,QAASA,GACzB7W,EAGP,CAEO,SAASo7N,IACd,MAAOC,EAAWC,IAAgBl+N,EAAAA,EAAAA,WAAS,IACpCm+N,EAAeC,IAAoBp+N,EAAAA,EAAAA,WAAS,IACnDmZ,EAAAA,EAAAA,GAAY,KAEZ,MAAMklN,EAAW,CACf,CAAC,wCAAwCv6L,EAAAA,EAAAA,IAAiC1gC,EAAAA,GAAAA,wBAExEA,EAAAA,GAAAA,YAAAA,KAA0B,GAC5Bi7N,EAASltN,KAAK,CAAC,gCAAgC2yB,EAAAA,EAAAA,IAAiC1gC,EAAAA,GAAAA,4BAElFi7N,EAASltN,KAAK,CAAC,SAAS2yB,EAAAA,EAAAA,IAAiC1gC,EAAAA,GAAAA,iBAEzD,IAAIk7N,GAAmB,EAEvB,OADIl7N,EAAAA,GAAAA,cAAqB,GAAK,IAAGk7N,GAAmB,GAElD,gBAAC,IAAS,CAAC5+N,SAAS,KAAK4C,gBAAc,EAAC1D,GAAI,CAAEwa,GAAI,IAChD,gBAAC,IAAU,CAAC7Z,QAAQ,MAAK,SACzB,gBAAC,IAAG,CAACX,GAAI,CAAEG,QAAS,OAAQ8a,oBAAqB,UAAW+D,SAAU,cAAe9e,GAAI,EAAGmb,IAAK,IAC/F,gBAAC,IAAK,CAACrb,GAAI,CAAE2H,EAAG,IACd,gBAAC,IAAU,CAAChH,QAAQ,MAAK,WACzB,gBAAC,IAAK,KACJ,gBAAC,IAAS,KACR,gBAAC,IAAQ,CAACoF,KAAK,eAAenF,MAAOhB,EAAAA,EAAAA,MAAAA,QAAwB0C,KAAM,CAAE0B,QAASQ,EAAAA,GAAAA,QAC9E,gBAAC,IAAQ,CAACuB,KAAK,QAAQnF,MAAOhB,EAAAA,EAAAA,MAAAA,MAAsB0C,KAAM,CAAC,GACzD,gCACE,gBAAC,IAAK,CAACqd,MAAOnb,EAAAA,GAAAA,QACd,gBAAC,IAAU,CAACoO,QAAS,IAAM0sN,GAAa,GAAOt/N,GAAI,CAAE2H,EAAG,IACtD,gBAAC,IAAS,CAAC/G,MAAM,YAKtB4D,EAAAA,GAAAA,MAAmD,IAApCgE,OAAOmY,KAAKnc,EAAAA,GAAAA,MAAahB,OACvC,gBAAC,IAAQ,CAACuC,KAAK,gBAAgBnF,MAAOhB,EAAAA,EAAAA,MAAAA,QAAwB0C,KAAM,CAAC,GACnE,gCACE,wBAAMV,MAAO,CAAEhB,MAAOhB,EAAAA,EAAAA,MAAAA,UAA2B4I,OAAOmY,KAAKnc,EAAAA,GAAAA,MAAahB,OAAO,UACjF,gBAAC,IAAU,CAACoP,QAAS,IAAM4sN,GAAiB,GAAOx/N,GAAI,CAAE2H,EAAG,IAC1D,gBAAC,IAAS,CAAC/G,MAAM,YAKvB,iCAEF,gBAAC,IAAQ,CACPmF,KAAK,gBACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,QACP0C,KAAM,CAAE0B,QAAU,GAAEQ,EAAAA,GAAAA,iBAAAA,aAAoC+9I,EAAAA,EAAAA,WAE1D,gBAAC,IAAQ,CACPx8I,KAAO,WAA8B,IAApBvB,EAAAA,GAAAA,UAAyBA,EAAAA,GAAAA,cAAqB,GAAK,EAAI,UAAY,gBACpF5D,MAAOhB,EAAAA,EAAAA,MAAAA,QACP0C,KAAM,CACJ0B,QAAU,GAAEQ,EAAAA,GAAAA,aAAAA,SACU,IAApBA,EAAAA,GAAAA,UAAyBA,EAAAA,GAAAA,cAAqB,GAAK,EAC9C,MAAKoH,EAAAA,GAAAA,aACN,QAIV,gBAAC,IAAQ,CACP7F,KAAK,0BACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,QACP0C,KAAM,CAAE0B,QAASokB,OAAO5jB,EAAAA,GAAAA,cAAAA,cAKhC,gBAAC,IAAK,CAACxE,GAAI,CAAE2H,EAAG,IACd,gBAAC,IAAU,CAAChH,QAAQ,MAAK,UACzB,gBAAC,IAAK,KACJ,gBAAC,IAAS,KACR,gBAAC,IAAQ,CACPoF,KAAK,UACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,KACP0C,KAAM,CAAE2D,MAAOzB,EAAAA,GAAAA,OAAAA,QAAuB2I,IAAK3I,EAAAA,GAAAA,IAAAA,WAE7C,gBAAC,IAAQ,CACPuB,KAAK,WACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CAAE2D,MAAOzB,EAAAA,GAAAA,OAAAA,SAAwB2I,IAAK3I,EAAAA,GAAAA,IAAAA,YAE9C,gBAAC,IAAQ,CACPuB,KAAK,UACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CAAE2D,MAAOzB,EAAAA,GAAAA,OAAAA,QAAuB2I,IAAK3I,EAAAA,GAAAA,IAAAA,WAE7C,gBAAC,IAAQ,CACPuB,KAAK,YACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CAAE2D,MAAOzB,EAAAA,GAAAA,OAAAA,UAAyB2I,IAAK3I,EAAAA,GAAAA,IAAAA,aAE/C,gBAAC,IAAQ,CACPuB,KAAK,UACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CAAE2D,MAAOzB,EAAAA,GAAAA,OAAAA,QAAuB2I,IAAK3I,EAAAA,GAAAA,IAAAA,WAE7C,gBAAC,IAAQ,CACPuB,KAAK,WACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,IACP0C,KAAM,CAAE2D,MAAOzB,EAAAA,GAAAA,OAAAA,SAAwB2I,IAAK3I,EAAAA,GAAAA,IAAAA,YAE7CA,EAAAA,GAAAA,OAAAA,aAA6B,IAA0B,IAApBA,EAAAA,GAAAA,UAAyBA,EAAAA,GAAAA,cAAqB,GAAK,IACrF,gBAAC,IAAQ,CACPuB,KAAK,eACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,IACP0C,KAAM,CAAE2D,MAAOzB,EAAAA,GAAAA,OAAAA,aAA4B2I,IAAK3I,EAAAA,GAAAA,IAAAA,oBAQ5D,gBAAC,IAAK,CAACxE,GAAI,CAAE2H,EAAG,EAAGzH,GAAI,IACrB,gBAAC,IAAU,CAACS,QAAQ,KAAKC,MAAM,UAAUZ,GAAI,CAAEG,QAAS,OAAQsa,WAAY,SAAUpa,SAAU,SAAU,cAEvGmE,EAAAA,GAAAA,cAAqB,GAAK,GACzB,gBAAC,IAAO,CACNkW,MACE,gBAAC,IAAU,KAAC,qCAEV,2BACA,2BAAM,wIAGN,2BACA,2BAAM,2HAMV,gBAAC,IAAI,CAAC1a,GAAI,CAAE2a,GAAI,EAAGza,GAAI,IAAOU,MAAM,WAI1C,gBAAC,IAAG,CAACZ,GAAI,CAAEG,QAAS,OAAQ8a,oBAAqB,UAAWI,IAAK,IAC/D,gBAAC,IAAG,KACF,gBAACsjN,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,iBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,gBAET,CACEuQ,KAAM,gBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,eAET,CACEuQ,KAAM,gBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,cACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,cAA6BwE,EAAAA,GAAAA,iBAEzC,CACE+L,KAAM,iBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,aACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,aAA4BwE,EAAAA,GAAAA,mBAG1CpI,MAAOhB,EAAAA,EAAAA,MAAAA,OAET,gBAAC++N,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,gBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,QACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,QAAuBwE,EAAAA,GAAAA,wBAEnC,CACE+L,KAAM,qBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,YACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,YAA2BwE,EAAAA,GAAAA,cAGzCpI,MAAOhB,EAAAA,EAAAA,MAAAA,OAET,gBAAC++N,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,iBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,SACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,SAAwBwE,EAAAA,GAAAA,yBAEpC,CACE+L,KAAM,sBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,eAGX5D,MAAOhB,EAAAA,EAAAA,MAAAA,SAET,gBAAC++N,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,gBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,QACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,QAAuBwE,EAAAA,GAAAA,wBAEnC,CACE+L,KAAM,qBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,cAGX5D,MAAOhB,EAAAA,EAAAA,MAAAA,SAET,gBAAC++N,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,kBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,UACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,UAAyBwE,EAAAA,GAAAA,0BAErC,CACE+L,KAAM,uBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,gBAGX5D,MAAOhB,EAAAA,EAAAA,MAAAA,SAET,gBAAC++N,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,gBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,QACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,QAAuBwE,EAAAA,GAAAA,wBAEnC,CACE+L,KAAM,qBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,cAGX5D,MAAOhB,EAAAA,EAAAA,MAAAA,SAET,gBAAC++N,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,iBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,SACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,SAAwBwE,EAAAA,GAAAA,yBAEpC,CACE+L,KAAM,sBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,eAGX5D,MAAOhB,EAAAA,EAAAA,MAAAA,IACPg/N,UAAQ,KAIZ,gBAAC,IAAG,KACF,gBAACD,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,0BACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,mBACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,mBAAkCwE,EAAAA,GAAAA,kBAE9C,CACE+L,KAAM,6BACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,4BAET,CACEuQ,KAAM,gCACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,uBAET,CACEuQ,KAAM,kCACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,wBAET,CACEuQ,KAAM,kCACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,0BAGX5D,MAAOhB,EAAAA,EAAAA,MAAAA,UAET,gBAAC++N,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,0BACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,YACP5D,MAAOhB,EAAAA,EAAAA,MAAAA,KAET,CACEmV,KAAM,0BACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,YACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,YAA2BwE,EAAAA,GAAAA,mBACrCpI,MAAOhB,EAAAA,EAAAA,MAAAA,KAET,CACEmV,KAAM,SACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,WACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,WAA0BwE,EAAAA,GAAAA,iBACpCpI,MAAOhB,EAAAA,EAAAA,MAAAA,QAGXgB,MAAOhB,EAAAA,EAAAA,MAAAA,QAET,gBAAC++N,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,uBACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,eAET,CACEuQ,KAAM,cACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,YACPq6N,SAAUr6N,EAAAA,GAAAA,MAAAA,YAA2BwE,EAAAA,GAAAA,WACrCpI,MAAOhB,EAAAA,EAAAA,MAAAA,QAGXgB,MAAOhB,EAAAA,EAAAA,MAAAA,SAER4E,EAAAA,GAAAA,wBAAiCwE,EAAAA,GAAAA,gBAAmC,GACnE,gBAAC21N,EAAe,CACdniN,KAAM,CACJ,CACEzH,KAAM,6BACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,4BAET,CACEuQ,KAAM,0BACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,yBAET,CACEuQ,KAAM,2BACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,0BAET,CACEuQ,KAAM,6BACN9D,MAAOzM,EAAAA,GAAAA,MAAAA,uBAGX5D,MAAOhB,EAAAA,EAAAA,MAAAA,QACPg/N,UAAQ,OAOlB,gBAAC,IAAK,CAAC5+N,GAAI,CAAE2H,EAAG,EAAGzH,GAAI,IACrB,gBAAC,IAAU,CAACS,QAAQ,MAAK,eACzB,gBAAC,IAAK,KACJ,gBAAC,IAAS,KACP8+N,EAASl9N,KAAI,QAAEwD,EAAM/B,GAAQ,SAC5B,gBAAC,IAAQ,CAACF,IAAKiC,EAAMA,KAAMA,EAAMnF,MAAOhB,EAAAA,EAAAA,MAAAA,QAAwB0C,KAAM,CAAE0B,QAASA,IAAa,OAMtG,gBAAC86N,EAAc,MAEdY,GACC,gBAAC,IAAK,CAAC1/N,GAAI,CAAE2H,EAAG,EAAGzH,GAAI,IACrB,gBAAC,IAAU,CAACS,QAAQ,MAAK,uBACzB,gBAAC,IAAyB,CAAC0f,EAAG7b,EAAAA,GAAAA,YAIlC,gBAACu6N,EAAU,CAACnkN,KAAMykN,EAAWxkN,QAAS,IAAMykN,GAAa,KACzD,gBAACZ,EAAc,CAAC9jN,KAAM2kN,EAAe1kN,QAAS,IAAM2kN,GAAiB,KAG3E,0TCliBO,SAASG,EAAkB,GAOP,IAPO,gBAChCr2J,EAAe,cACfC,EAAa,QACb32D,EAAO,YACPk3D,EAAW,aACX81J,EAAY,SACZh+J,GACuB,EACvBkI,IAAgB,CAAC,EACjB81J,IAAiB,CAAC,EAClB,MAAMz9I,GAAe7Y,GAAmBC,IAAkB,GACpDruD,IAAaouD,EACnB,OACE,gBAAC,IAAO,KAAKs2J,EAAY,CAAEllN,MAAOynE,IAChC,4BACE,gBAAC,IAAM,KAAKrY,EAAW,CAAE5uD,SAAUA,EAAUtI,QAASA,IACnDgvD,IAKX,2EC7BO,MAAMi+J,UAAuBt5M,EAAAA,UAElCjS,YAAY6F,GACV4V,MAAM5V,GACN3F,KAAKk2B,MAAQ,CAAExyB,WAAOlD,EACxB,CACA8qN,kBAAkB5nN,GAChB1D,KAAKm3B,SAAS,CAAEzzB,UAChBD,QAAQgd,KAAK,kCACbhd,QAAQC,MAAMA,EAChB,CACAk1B,SACE,OAAI54B,KAAKk2B,MAAMxyB,MAGN,gBAAC,IAAU,CAACsO,UAAW,QAAQ,2DAEjC,gBAAC,IAAU,CAACA,UAAW,QAAShS,KAAK2F,MAAMynD,SACpD,iCC7BK,IAAK8oB,mBAKX,SALWA,GAAAA,EAAY,kBAAZA,EAAY,kBAAZA,EAAY,cAAZA,EAAY,YAKvB,CALWA,IAAAA,EAAY,oGCmBjB,MAAMq1I,UAAsBx5M,EAAAA,UACjCjS,YAAY6F,GACV4V,MAAM5V,GACN3F,KAAKk2B,MAAQ,CAAEs1L,UAAU,EAC3B,CAEAzxL,QACE/5B,KAAKm3B,SAAS,CAAEq0L,UAAU,GAC5B,CAEAF,kBAAkB5nN,EAAc+nN,GAC9BzrN,KAAKm3B,SAAS,CACZs0L,YACAxtN,KAAMlG,EAAAA,EAAAA,SAER0L,QAAQC,MAAMA,EAAO+nN,EACvB,CAEA7yL,SACE,GAAI54B,KAAKk2B,MAAMs1L,SAAU,CACvB,IAAIE,EACJ,GAAI1rN,KAAKk2B,MAAMxyB,MACb,IAEEgoN,GAAYC,EAAAA,EAAAA,GAAmB3rN,KAAKk2B,MAAMxyB,MAAO1D,KAAKk2B,MAAMu1L,UAAWzrN,KAAKk2B,MAAMj4B,KAGpF,CAFE,MAAO2tN,GACPnoN,QAAQC,MAAMkoN,EAChB,CAGF,OAAO,gBAAC,KAAY,CAACvgI,UAAWrrF,KAAK2F,MAAM0lF,UAAWqgI,UAAWA,EAAWG,WAAY,IAAM7rN,KAAK+5B,SACrG,CACA,OAAO/5B,KAAK2F,MAAMynD,QACpB,CAEAnyC,gCAAgCvX,GAC9B,MAAO,CAAE8nN,UAAU,EAAM9nN,QAC3B,u0BCkBF,MAAMooN,GAAe55N,SAEfoI,IAAYC,EAAAA,EAAAA,IACfC,IACCC,EAAAA,EAAAA,GAAa,CACXC,KAAM,CACJ,qBAAsB,OACtB,kBAAmB,OACnBy2B,OAAQ32B,EAAMI,QAAQ,GACtB2wE,SAAU,EACV5wE,QAAS,MACTu7D,UAAW,QACXgxH,UAAW,aACXp6L,MAAO,UAGb,CAAEyE,KAAM,aASH,IAAIwG,GAAkB,CAC3Bg0N,eAAe,EACf9tN,KAAM,KACJ,MAAM,IAAImT,MAAM,sCAAsC,EAExD46M,aAXoB,KACpB,MAAM,IAAI56M,MAAM,sCAAsC,EAWtD66M,OAAQ,KACN,MAAM,IAAI76M,MAAM,sCAAsC,EAExD86M,KAAM,KACJ,MAAM,IAAI96M,MAAM,sCAAsC,GAUnD,SAAS+6M,KACd,MAAMpxN,EAAUT,MAET8xN,EAAOC,IAAYz/N,EAAAA,EAAAA,WAA4B,IAAM,CAAC,CAAEqR,KAR3DquN,GAAAA,GAAqBt0N,EAAAA,GAAAA,SACE,OAAvBhI,EAAAA,GAAAA,YAAoCgI,EAAAA,GAAAA,KACjCA,EAAAA,GAAAA,aAODu0N,EAAkBH,EAAM,GASxBtmN,GAAWC,EAAAA,GAAAA,MAEVymN,GAAkBC,KAAuB7/N,EAAAA,EAAAA,UAAiB,IAE1D8/N,GAAmBC,KAAwB//N,EAAAA,EAAAA,WAAS,GAU3D,SAASggO,KACP,IAAK,MAAMxsL,KAAU7tC,EAAAA,EAAAA,MACnB6tC,EAAOsnG,iBAAiBpsI,QAE1Bu6E,EAAAA,GAAAA,WACAt6C,YAAW,IAAMuwL,GAAa/yI,UAAU,IAC1C,CAEA,SAAS8zI,GAA0Bt7N,GACjCkS,QAAQC,MAAO,oDAAmDnS,MACpE,CA4BA,SAAS85F,MACP/nF,EAAAA,EAAAA,GAAgB,gBAChBF,EAAAA,EAAAA,KAAqB,GA/CrBqpN,GAAoBD,GAAmB,GAiDvCz0N,GAAOk0N,OAAOj0N,EAAAA,GAAAA,SAChB,EA/CAyG,EAAAA,EAAAA,YAAU,IACDk4G,EAAAA,EAAAA,UAA0B7wG,IAChC,CAACA,IAcJ/N,GAAS,CACPg0N,eAAe,EACf9tN,KAAM,IAAMsuN,EAAgBtuN,KAC5B+tN,aAAevvN,GAAmBkwN,GAAqBlwN,GACvDwvN,OAAQ,CAAChuN,EAAYw+K,KACnB,IAAKiwC,GAAmB,OAAOG,GAA0B,UACzD,OAAQ5uN,GACN,KAAKjG,EAAAA,GAAAA,OACHhI,EAAAA,GAAAA,aAAoBqnH,EAAAA,aAAAA,cACpB,MACF,KAAKr/G,EAAAA,GAAAA,UACHiC,EAAAA,GAAAA,KA5CasyN,KACnBF,GAAUlzL,IACR,MAAMy6B,EAAO,CAAC24J,KAAoBpzL,GAElC,OADAy6B,EAAK5kE,OAASsF,KAAK6c,IAAIyiD,EAAK5kE,OA/BL,IAgChB4kE,CAAI,GACX,EA0CAk5J,CAAY,CAAE7uN,UAASw+K,GAA6B,EAEtDyvC,KAAM,KACJ,IAAKQ,GAAmB,OAAOG,GAA0B,QACzDR,GAAUD,GAAUA,EAAMjyM,MAAM,IAAG,IAIvC1b,EAAAA,EAAAA,YAAU,KACJ8tN,EAAgBtuN,OAASjG,EAAAA,GAAAA,UAAe0G,OAAO89E,SAAS,EAAG,EAAE,IAUnE,IAAIuwI,GAAW,gBAAC,IAAU,KAAC,eACvBC,IAAc,EACdC,IAAa,EACbC,IAAa,EACjB,OAAQX,EAAgBtuN,MACtB,KAAKjG,EAAAA,GAAAA,SACH+0N,GAAW,gBAAC,MAAY,CAAC1hI,UAAWA,KACpC2hI,IAAc,EACdC,IAAa,EACbC,IAAa,EACb,MAEF,KAAKl1N,EAAAA,GAAAA,SACH+0N,GAAW,gBAAC,IAAY,CAACn7M,MAAO26M,EAAgB36M,MAAOC,MAAO06M,EAAgB16M,QAC9Em7M,IAAc,EACdC,IAAa,EACb,MAEF,KAAKj1N,EAAAA,GAAAA,aACH+0N,GAAW,gBAAC,IAAgB,CAAC76N,SAAUq6N,EAAgBr6N,WACvD86N,IAAc,EACdC,IAAa,EACb,MAEF,KAAKj1N,EAAAA,GAAAA,qBACH+0N,GAAW,gBAAC,IAAoB,MAChCC,IAAc,EACdC,IAAa,EACb,MAEF,KAAKj1N,EAAAA,GAAAA,KACH+0N,GAAW,gBAAC,IAAkB,MAC9BC,IAAc,EACd,MAEF,KAAKh1N,EAAAA,GAAAA,SACH+0N,GAAW,gBAAC,IAAY,MACxB,MAEF,KAAK/0N,EAAAA,GAAAA,QACH+0N,GAAW,gBAAC,IAAU,MACtB,MAEF,KAAK/0N,EAAAA,GAAAA,YACH+0N,GAAW,gBAAC,IAAe,CAAC3lJ,YAAaA,EAAAA,KACzC,MAEF,KAAKpvE,EAAAA,GAAAA,MACH+0N,GAAW,gBAAC,IAAc,MAC1B,MAEF,KAAK/0N,EAAAA,GAAAA,aAAmB,OACtB+0N,GACE,gBAAC,IAAgB,CACfj3I,MAAOy2I,EAAgBz2I,OAAS,IAAI56E,IACpCimC,SAAUnxC,EAAAA,GAAAA,mBAA0BmxC,SACpCgwI,MAA8B,QAAxB,GAACo7C,EAAgBtiH,eAAO,SAAvB,GAAyBknE,OAGpC,MAEF,KAAKn5K,EAAAA,GAAAA,cACH+0N,GAAW,gBAAC,IAAiB,CAAC16N,cAAeA,EAAAA,IAC7C,MAEF,KAAK2F,EAAAA,GAAAA,QACH+0N,GAAW,gBAAC,IAAW,MACvB,MAEF,KAAK/0N,EAAAA,GAAAA,cACH+0N,GAAW,gBAAC,IAAY,MACxB,MAEF,KAAK/0N,EAAAA,GAAAA,SACH+0N,GAAW,gBAAC,IAAY,MACxB,MAEF,KAAK/0N,EAAAA,GAAAA,QACH+0N,GAAW,gBAAC,IAAW,CAAC9hN,QAASshN,EAAgBthN,UACjD,MAEF,KAAKjT,EAAAA,GAAAA,qBACH+0N,GAAW,gBAAC,IAAoB,CAAC9hN,QAASshN,EAAgBthN,UAC1D,MAEF,KAAKjT,EAAAA,GAAAA,WACH+0N,GAAW,gBAAC,IAAc,MAC1B,MAEF,KAAK/0N,EAAAA,GAAAA,cACH+0N,GAAW,gBAAC,IAAiB,MAC7B,MAEF,KAAK/0N,EAAAA,GAAAA,QACH+0N,GAAW,gBAAC,IAAW,MACvB,MAEF,KAAK/0N,EAAAA,GAAAA,KACH+0N,GAAW,gBAAC,IAAQ,MACpB,MAEF,KAAK/0N,EAAAA,GAAAA,YACH+0N,GAAW,gBAAC,IAAe,MAC3B,MAEF,KAAK/0N,EAAAA,GAAAA,YACH+0N,GAAW,gBAAC,IAAe,MAC3B,MAEF,KAAK/0N,EAAAA,GAAAA,SACH+0N,GAAW,gBAAC,IAAY,MACxB,MAEF,KAAK/0N,EAAAA,GAAAA,OACH+0N,GAAW,gBAAC,IAAgB,MAC5B,MAEF,KAAK/0N,EAAAA,GAAAA,YACH+0N,GAAW,gBAAC,IAAe,CAAC7gC,YAAahoC,EAAAA,KACzC,MAEF,KAAKlsJ,EAAAA,GAAAA,KACH+0N,GAAW,gBAAC,EAAA7iJ,EAAY,MACxB,MAEF,KAAKlyE,EAAAA,GAAAA,IACL,KAAKA,EAAAA,GAAAA,SACH+0N,GAAW,gBAAC,IAAe,CAACr3K,IAAK62K,EAAgBr6N,WACjD,MAEF,KAAK8F,EAAAA,GAAAA,QACH+0N,GACE,gBAAC,IAAe,CACdh3I,KAAM,IAAMF,EAAAA,GAAAA,WACZsV,OAAQ,MAENhK,EAAAA,EAAAA,MACAtL,EAAAA,GAAAA,YAAuB,EAEzBuV,UAAWwhI,GACXvhI,UAAWA,GACXC,mBAAoB,MAClB3nF,EAAAA,EAAAA,KACA5L,GAAOk0N,OAAOj0N,EAAAA,GAAAA,WACdy+G,EAAAA,EAAAA,KAAgB,IAItB,MAEF,KAAKz+G,EAAAA,GAAAA,cACH+0N,GACE,gBAAC,IAAiB,CAChBpmN,aAAc,MAEZw6E,EAAAA,EAAAA,MACAtL,EAAAA,GAAAA,YAAuB,EAEzBtvE,uBAAwB,MACtBnD,EAAAA,EAAAA,KAAsB,IAI5B,MAEF,KAAKpL,EAAAA,GAAAA,aACH+0N,GAAW,gBAAC,KAAgB,MAC5B,MAEF,KAAK/0N,EAAAA,GAAAA,aACH+0N,GAAW,gBAAC,KAAY,MACxB,MAEF,KAAK/0N,EAAAA,GAAAA,WACH+0N,GAAW,gBAAC,KAAU,CAACI,aAAcZ,EAAgB32I,WAAY4I,YAAa+tI,EAAgB/tI,YAC9FwuI,IAAc,EACdC,IAAa,EACbC,IAAa,EAIjB,OACE,gBAAC,KAAc,CAACztI,QAAS,EAAGvyF,IAAK,2CAC/B,gBAAC,KAAa,CAACoC,IAAKk9N,GAAkBnhI,UAAWA,IAC/C,gBAAC,KAAa,CAAC77F,QAAS09N,GAAaH,GAAW,MAC9C,gBAAC,MAAe,KACd,gBAAC,MAAgB,KACf,gBAAC,IAAQ,CAAC/9E,KAAMpxC,EAAAA,GAAAA,UAAsB,WAAa,aAC/CwvH,GACCxvH,EAAAA,GAAAA,UAOC,gBAAC,IAAuB,MANxB,gBAAC,KAAiB,CAChBwvH,WAAYA,EACZr3I,KAAM,IAAMF,EAAAA,GAAAA,WACZw3I,YAAaT,OAOpBI,GACC,gBAAC,IAAG,CAACrhO,QAAQ,OAAOC,cAAc,MAAMkB,MAAM,QAC5C,gBAAC,IAAW,CAACmR,KAAMsuN,EAAgBtuN,OACnC,gBAAC,IAAG,CAACjD,UAAWD,EAAQL,MAAOqyN,KAGjC,gBAAC,IAAG,CAAC/xN,UAAWD,EAAQL,MAAOqyN,IAEjC,gBAAC,KAAW,MACZ,uBAAK3/N,MAAO,CAAEzB,QAASshO,GAAa,UAAY,OAAQj0L,SAAU,aAChE,gBAAC,MAAa,MACd,gBAAC,KAAY,MACb,gBAAC,KAAa,MACd,gBAAC,KAAe,MAChB,gBAAC,MAAQ,OAEX,gBAAC,KAAI,UAKb,gBAAC,KAAO,MAGd,iDC9ZO,MAAM29E,EAAkB,aAAIllG,gRCmCnC,MAAMnX,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXy2B,UAAW,CACTw5C,aAAc,aAAelwE,EAAMy+D,QAAQ3wD,QAAQ4gJ,MAErDnsE,KAAM,CACJ99E,WAAY,MACZmyB,gBAAiB52B,EAAMy+D,QAAQ49G,WAAWovB,WAKzC,SAASqnB,IACd,MAAMvyN,EAAUT,IACVwL,GAAWC,EAAAA,EAAAA,KAEXwnN,EAAsB,aAEtBC,EAAiD,CACrD,CAAC3vH,EAAAA,GAAAA,OAAiC,CAChCruG,QACE,gCACE,gBAAC,IAAU,KAAC,oIAGV,2BACA,2BAAM,6FAEN,2BACA,2BAAM,wEAKZi+N,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,mBAA6C,CAC5CruG,QACE,gCACE,gBAAC,IAAU,KAAC,mDACZ,gBAAC,KAAQ,KACP,gBAAC,IAAa,CAACpD,MAAO,UACtB,gBAAC,IAAU,CAACA,MAAO,SAAS,UAG9B,gBAAC,IAAU,KAAC,+DAGhBqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,eAAyC,CACxCruG,QACE,gCACE,gBAAC,KAAQ,KACP,gBAAC,IAAa,CAACpD,MAAO,YACtB,gBAAC,IAAU,CAACA,MAAO,WAAW,UAEhC,gBAAC,IAAU,KAAC,uGAKhBqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,2BAAqD,CACpDruG,QACE,gCACE,gBAAC,IAAU,KAAC,sDACZ,gBAAC,KAAQ,KACP,gBAAC,IAAY,CAACpD,MAAO,UACrB,gBAAC,IAAU,CAACA,MAAO,SAAS,aAE9B,gBAAC,IAAU,KAAC,iCAGhBqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,eAAyC,CACxCruG,QACE,gCACE,gBAAC,KAAQ,KACP,gBAAC,IAAY,CAACpD,MAAO,YACrB,gBAAC,IAAU,CAACA,MAAO,WAAW,aAEhC,gBAAC,IAAU,KAAC,wGAKhBqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,cAAwC,CACvCruG,QACE,gCACE,gBAAC,IAAU,KAAC,uCACZ,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,mBACnD,gBAAC,IAAU,KAAC,2DAGhBu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,YAAsC,CACrCruG,QACE,gCACE,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,mBACnD,gBAAC,IAAU,KAAC,0GAC8F,IACxG,2BACA,2BAAM,oCAIR,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,kBAGvDu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,cAAwC,CACvCruG,QACE,gCACE,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,iBACnD,gBAAC,IAAU,KACR,IAAI,0GACmG,IAAI,iEAC9C,2BAC9D,2BAAM,oIAIR,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,oBAGvDu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,sBAAgD,CAC/CruG,QACE,gCACE,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,mBACnD,gBAAC,IAAU,KAAC,0LAEsE,2BAChF,2BAAM,iFACyE,KAGjF,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,2BACnD,gBAAC,IAAU,KAAC,mFAGhBu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,sBAAgD,CAC/CruG,QACE,gCACE,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,2BACnD,gBAAC,IAAU,KAAC,6HAEM,2BAChB,2BAAM,qHACa,KAGrB,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,8BAGvDu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,iBAA2C,CAC1CruG,QACE,gCACE,gBAAC,IAAU,KAAC,iPAKZ,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,+BAEnD,gBAAC,IAAU,KAAC,wBACZ,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,6BAEnD,gBAAC,IAAU,KACR,IAAI,4FAIP,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,+BAGvDu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,iBAA2C,CAC1CruG,QACE,gCACE,gBAAC,IAAU,KAAC,kFAEV,2BACA,2BAAM,gOAEM,2BACZ,2BAAM,oEAC4D,KAEpE,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,0BAGvDu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,cAAwC,CACvCruG,QACE,gCACE,gBAAC,IAAU,KAAC,SACZ,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,yBAEnD,gBAAC,IAAU,KAAC,8EACiE,2BAC3E,2BAAM,6TAKR,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,yBAEnD,gBAAC,IAAU,KACR,IAAI,oIAEmB,KAE1B,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,8BAEnD,gBAAC,IAAU,OAGfu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,oBAA8C,CAC7CruG,QACE,gCACE,gBAAC,IAAU,KAAC,4DACZ,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,sBAEnD,gBAAC,IAAU,KAAC,yBAGhBu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,0BAAoD,CACnDruG,QACE,gBAAC,IAAU,KAAC,iQAIV,2BACA,2BAAM,wMAGN,2BACA,2BAAM,iMAE4E,IAClF,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,sBAAkC,iEACtB,IAC/D,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,wBAAoC,+CAI3Fu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,gBAA0C,CACzCruG,QACE,gCACE,gBAAC,IAAU,KAAC,+CACZ,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,sBAEnD,gBAAC,IAAU,KAAC,sDAGhBu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,sBAAgD,CAC/CruG,QACE,gCACE,gBAAC,IAAU,KAAC,+LAGV,2BACA,2BAAM,8DACsD,KAE9D,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,mBAEnD,gBAAC,IAAU,KAAC,iFACZ,gBAAC,IAAU,CAACn2B,QAAS,CAAEL,KAAMK,EAAQm2B,YAAe,mBAAkBq8L,MAG1EE,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,oBAA8C,CAC7CruG,QACE,gCACE,gBAAC,IAAU,KAAC,oIAEY,4BAGxB,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQgiF,OAEjC,gBAAC,IAAY,CACXtgF,MAAQ,8FAQd,gBAAC,IAAU,KAAC,4IAGV,2BACA,2BAAM,yEAKZgxN,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,cAAwC,CACvCruG,QACE,gCACE,gBAAC,IAAU,KAAC,+OAIV,2BACA,2BAAM,6DAGR,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAc,oBAGvDu8L,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,mBAA6C,CAC5CruG,QACE,gCACE,gBAAC,IAAU,KAAC,0GAGZ,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAe,kBAAiBq8L,MAGzEE,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,+BAAyD,CACxDruG,QACE,gCACE,gBAAC,IAAU,KAAC,sIAEgB+9N,EAAmB,2DAAwD,2BACrG,2BAAM,mLAEgE,2BACtE,2BAAM,sEAC8D,KAEtE,gBAAC,KAAQ,KACP,gBAAC,IAAW,CAACnhO,MAAO,UACpB,gBAAC,IAAU,CAACA,MAAO,SAAS,oBAIlCqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,mBAA6C,CAC5CruG,QACE,gCACE,gBAAC,IAAU,KAAC,4JAGV,2BACA,2BAAM,kDAEN,2BACA,2BAAM,2DAEN,2BACA,2BAAM,oBAGR,gBAAC,KAAQ,KACP,gBAAC,IAAY,CAACpD,MAAO,UACrB,gBAAC,IAAU,CAACA,MAAO,SAAS,cAIlCqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,yBAAmD,CAClDruG,QACE,gCACE,gBAAC,IAAU,KAAC,+LAE0E,KAEtF,gBAAC,IAAU,CAACuL,QAAS,CAAEL,KAAMK,EAAQm2B,YAAe,mBAAkBq8L,MAG1EE,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,oBAA8C,CAC7CruG,QACE,gCACE,gBAAC,IAAU,KAAC,6JAEuC,2BACjD,2BAAM,kFAGR,gBAAC,KAAQ,KACP,gBAAC,IAAQ,CAACpD,MAAO,YACjB,gBAAC,IAAU,CAACA,MAAO,WAAW,kBAEhC,gBAAC,IAAU,KAAC,4DAEV,2BACA,2BAAM,8CAKZqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,sBAAgD,CAC/CruG,QACE,gCACE,gBAAC,IAAU,KAAC,8IAIZ,gBAAC,KAAQ,KACP,gBAAC,IAAe,CAACpD,MAAO,UACxB,gBAAC,IAAU,CAACA,MAAO,SAAS,YAE9B,gBAAC,IAAU,KAAC,0CAGhBqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,0BAAoD,CACnDruG,QACE,gBAAC,IAAU,KAAC,yGAIdi+N,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,2BAAqD,CACpDruG,QACE,gCACE,gBAAC,IAAU,KAAC,6MAGV,2BACA,2BAAM,eAGR,gBAAC,KAAQ,KACP,gBAAC,IAAgB,CAACpD,MAAO,UACzB,gBAAC,IAAU,CAACA,MAAO,SAAS,UAIlCqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,kBAA4C,CAC3CruG,QACE,gCACE,gBAAC,IAAU,KAAC,0MAGV,2BACA,2BAAM,oBAGR,gBAAC,KAAQ,KACP,gBAAC,IAAQ,CAACpD,MAAO,UACjB,gBAAC,IAAU,CAACA,MAAO,SAAS,mBAIlCqhO,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,uBAAiD,CAChDruG,QACE,gBAAC,IAAU,KAAC,yMAGV,2BACA,2BAAM,sGAEN,2BACA,2BAAM,4DAIVi+N,SAAS,GAEX,CAAC5vH,EAAAA,GAAAA,KAA+B,CAC9BruG,QAAS,gBAAC,IAAU,MACpBi+N,SAAS,KAIbhvN,EAAAA,EAAAA,YAAU,IACDk4G,EAAAA,EAAAA,UAA0B7wG,IAChC,CAACA,IAEJ,MAAMb,EAAO24F,EAAAA,GAAAA,SACPpuG,EAAUg+N,EAASvoN,GACzB,QAAgBzE,IAAZhR,EAAuB,MAAM,IAAI4hB,MAAM,yBAC3C,OACE,gCACE,gBAAC,IAAK,CAACjiB,QAAM,EAAC3D,GAAI,CAAEc,SAAU,OAAQ6G,EAAG,IACtC3D,EAAQA,QACRyV,IAAS44F,EAAAA,GAAAA,uBACR,gCACG54F,IAAS44F,EAAAA,GAAAA,OACR,gBAAC,IAAU,CAACz/F,QAASw4G,EAAAA,GAAmB,aAAW,YACjD,gBAAC,IAAY,QAGfpnH,EAAQi+N,SAAW7vH,EAAAA,GAAAA,WAAqB34F,KACxC,gBAAC,IAAU,CAAC7G,QAAS0/F,EAAAA,GAAmB,aAAW,QACjD,gBAAC,IAAe,QAKxB,2BACA,2BACA,gBAAC,IAAM,CAAC1/F,QAASs4G,EAAAA,IACdzxG,IAAS44F,EAAAA,GAAAA,sBAAuC,gBAAkB,oBAK7E,6KCxjBO,SAAS6vH,IACd,MAAOjqB,EAAMkqB,IAAW/gO,EAAAA,EAAAA,WAAS,IAC1BghO,EAAQC,IAAajhO,EAAAA,EAAAA,WAAS,GAE/B6yF,EAAW,IAAG7sF,EAAAA,EAAAA,mBAA4B8sF,EAAAA,EAAAA,QAsChD,OAlCErlF,SAAS6L,MAAS,aAAYu5E,KAGhChhF,EAAAA,EAAAA,YAAU,KACR,MAAMrE,EAAKmhC,YAAW,KACfqyL,GAAQD,GAAQ,EAAK,GACzB,KACH,MAAO,IAAM/7G,aAAax3G,EAAG,KAG/BqE,EAAAA,EAAAA,YAAU,MACR6jC,uBACQ0iJ,EAAAA,EAAAA,MACHjmG,MAAM1jF,IACL,IACE+0E,EAAAA,EAAAA,KAAY/0E,EAKd,CAJE,MAAO+7D,GAGP,MAFA02J,EAAAA,EAAAA,MACAD,GAAU,GACJz2J,CACR,EAEA+nB,EAAAA,EAAAA,MACA0uI,GAAU,EAAK,IAEhB7uI,OAAOg+H,IACNv5M,QAAQC,MAAMs5M,GACd5sI,EAAAA,EAAAA,KAAY,IACZy9I,GAAU,EAAK,GAErB,CACAE,EAAQ,GACP,IAEIH,EACL,gBAAC,IAAQ,MAET,gBAAC,KAAI,CAAC3yJ,WAAS,EAACu8G,UAAU,SAASvrL,eAAe,SAASga,WAAW,SAAS7Y,MAAO,CAAE8oE,UAAW,UACjG,gBAAC,KAAI,CAAC7mE,MAAI,GACR,gBAAC,IAAgB,CAACtD,KAAM,IAAKK,MAAM,aAErC,gBAAC,KAAI,CAACiD,MAAI,GACR,gBAAC,IAAU,CAAClD,QAAQ,MAAK,qBAAmBszF,IAE7CgkH,GACC,gBAAC,KAAI,CAACp0M,MAAI,GACR,gBAAC,IAAU,KAAC,uCAC0B,qBAAG8C,KAAK,cAAa,yBAMrE,kICnEO,SAASuqF,EAAG/2E,GACjB,OACE,gBAAC,IAAa,CACZygM,WAAY,CACV4nB,GAAIA,EAAAA,GACJC,GAAIA,EAAAA,GACJC,GAAIA,EAAAA,GACJC,GAAIA,EAAAA,GACJC,GAAIA,EAAAA,GACJC,GAAIA,EAAAA,GACJC,IAAKC,EAAAA,EACLp7N,EAAGA,EAAAA,EACH4pF,KAAMA,EAAAA,EACNyxI,GAAIA,EAAAA,GAEJC,GAAIC,EAAAA,GACJC,GAAIC,EAAAA,GACJC,MAAOA,EAAAA,EACPC,MAAOC,EAAAA,EACPC,GAAIA,EAAAA,GACJC,WAAYC,EAAAA,EACZ9gO,EAAGqqH,EAAAA,GAEL02G,cAAe,CAACC,EAAAA,IAEfzpN,EAAMg8B,GAGb,4GC9BO,MAEM82E,EAAK9yG,IAChB,MAAMs2E,GAAYozI,EAAAA,EAAAA,MACZp8L,EAAMttB,EAAMxT,MAAQ,GAK1B,OAAI8gC,EAAI/S,WAAW,QAEf,gBAAC,IAAI,CAACovM,IAAI,sBAAsBn9N,KAAMwT,EAAMxT,KAAMg+B,OAAO,UACtDxqB,EAAMynD,UAICn6B,EAhB2CpkC,SAAS,cAA4C,IAA5BmB,EAAAA,GAAAA,cAAqB,GAkBnG,wBACE5C,MAAO,CACLmiO,eAAgB,YAChBx7M,OAAQ,YAGV,gBAAC,IAAe,CAACvkB,QAASmW,EAAMynD,SAAW,MAI/C,gBAAC,IAAI,CAAChvD,QAtBS0xB,IACfmsD,EAAUC,SAASjpD,EAAKnD,EAAMy5E,QAAQ,EAqBdv3F,UAAU,SAAS7lB,QAAQ,QAAQK,SAAS,WACjEmZ,EAAMynD,SACF,+HC3BX,MAAM9yD,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACX6zN,IAAK,CACHj0L,aAAc,OAEhB0iD,KAAM,CACJ9qD,cAAe,SACfu9L,YAAa,SACbC,aAAc,SACdhG,WAAY,SACZpvL,aAAc,MACd1uC,QAAS,SACTylC,gBAAiB52B,EAAMy+D,QAAQ49G,WAAWovB,WAKnCsoB,EAAO5oN,IAClB,MAAM5K,EAAUT,IAChB,OACE,gBAAC,IAAU,CAAC0X,UAAU,OAAOjX,QAAS,CAAEL,KAAMK,EAAQuzN,MACnD3oN,EAAMynD,SACI,EAIXsiK,EAAc/pN,GAClB,gBAAC,IAAU,CAACqM,UAAU,OAAOjX,QAAS,CAAEL,KAAMJ,IAAYyiF,OACvDp3E,EAAMynD,UAILuiK,EAAWhqN,GACf,gBAAC,IAAiB,CAChBiqK,SAAS,aACTxiL,MAAOoN,EAAAA,EACPgrM,YAAa,CACX7qM,QAAS,OACT0/B,aAAc,QAGfzmB,OAAOjO,EAAMynD,WAIL2vB,EAAQp3E,GACnBA,EAAMiqN,OAAS,gBAACF,EAAe/pN,GAAY,gBAACgqN,EAAYhqN,sPChD1D,MAAMrL,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXg0N,GAAI,CAAExvN,WAAY,MAAOgV,WAAY,QACrC06M,GAAI,CAAE1vN,WAAY,OAClBgwN,WAAY,CACVY,gBAAiBr1N,EAAMy+D,QAAQ49G,WAAWovB,MAC1C6pB,gBAAiB,QACjBn1H,gBAAiB,MACjB60H,YAAa,OACbC,aAAc,YAKPzB,EAAMroN,GAEjB,gBAAC,IAAU,CAACxZ,QAAQ,MAAMwZ,EAAMynD,UAGrB6gK,EAAMtoN,GAEjB,gBAAC,IAAU,CAACxZ,QAAQ,MAAMwZ,EAAMynD,UAGrB8gK,EAAMvoN,GAEjB,gBAAC,IAAU,CAACxZ,QAAQ,MAAMwZ,EAAMynD,UAGrB+gK,EAAMxoN,GAEjB,gBAAC,IAAU,CAACxZ,QAAQ,MAAMwZ,EAAMynD,UAGrBghK,EAAMzoN,GAEjB,gBAAC,IAAU,CAACxZ,QAAQ,MAAMwZ,EAAMynD,UAGrBihK,EAAM1oN,GAEjB,gBAAC,IAAU,CAACxZ,QAAQ,MAAMwZ,EAAMynD,UAGrBj6D,EAAKwS,GAChB,gBAAC,IAAU,CAACna,GAAI,CAAEE,GAAI,IAAMia,EAAMynD,UAGvBohK,EAAM7oN,IACjB,MAAMwtI,EAASxtI,EAAMoqN,QAAW,GAAEpqN,EAAM24B,MAAQ,MAAQ,KACxD,OACE,gBAAC,IAAY,KACV60G,EACAxtI,EAAMynD,SACM,EAMb4iK,EAAY77J,GACF,iBAAVA,GACU,YAAVA,GACU,WAAVA,GACU,iBAAVA,GACU,UAAVA,GACU,QAAVA,GACU,UAAVA,GACU,iBAAVA,EAPiC,UAQ9BA,EAGIy6J,EAAMjpN,IAA2E,MAC5F,MAAM5K,EAAUT,IACV65D,EAAQ67J,EAAoB,QAAZ,EAACrqN,EAAMvY,aAAK,aAAX,EAAaktC,WACpC,OACE,gBAAC,IAAS,CAAC65B,MAAOA,GAChB,gBAAC,IAAU,CAACA,MAAOA,EAAOp5D,QAAS,CAAEL,KAAMK,EAAQ4zN,KAChDhpN,EAAMynD,UAEC,EAIHshK,EAAM/oN,IAA6E,MAC9F,MAAM5K,EAAUT,IACV65D,EAAQ67J,EAAoB,QAAZ,EAACrqN,EAAMvY,aAAK,aAAX,EAAaktC,WACpC,OACE,gBAAC,IAAS,CAAC65B,MAAOA,GAChB,gBAAC,IAAU,CAACA,MAAOA,EAAOp5D,QAAS,CAAEL,KAAMK,EAAQ0zN,KAChD9oN,EAAMynD,UAEC,EAIHyhK,EAASlpN,GACb,gBAAC,IAAK,CAACna,GAAI,CAAEsB,MAAO,YAAc6Y,EAAMynD,UAGpC4hK,EAAMrpN,GACV,gBAAC,IAAQ,KAAEA,EAAMynD,UAGb8hK,EAAcvpN,IACzB,MAAM5K,EAAUT,IAChB,OAAO,8BAAYU,UAAWD,EAAQk0N,YAAatpN,EAAMynD,SAAsB,4GCvGjF,MAAM6iK,EAAc,IAAIloG,OAAO,oBAA4B,MAErDztH,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXkoB,QAAS,CACP1jB,WAAY,WACZ+jM,aAAc,WACd7xK,OAAQ32B,EAAMI,QAAQ,GACtBxO,MAAOoO,EAAM62B,OAAO1O,QACpB,mBAAoBv3B,EAAAA,EAAAA,OAAAA,WAA6B,GAAK,EAAI,MAE5DsY,MAAO,CACLzE,WAAY,WACZ+jM,aAAc,WACd7xK,OAAQ32B,EAAMI,QAAQ,GACtBxO,MAAOoO,EAAMy+D,QAAQv1D,MAAMwlJ,KAC3B,mBAAoB99J,EAAAA,EAAAA,OAAAA,WAA6B,GAAK,EAAI,MAE5Dkd,QAAS,CACPrJ,WAAY,WACZ+jM,aAAc,WACd7xK,OAAQ32B,EAAMI,QAAQ,GACtBxO,MAAOoO,EAAMy+D,QAAQ3wD,QAAQ4gJ,KAC7B,mBAAoB99J,EAAAA,EAAAA,OAAAA,WAA6B,GAAK,EAAI,MAE5D6U,KAAM,CACJhB,WAAY,WACZ+jM,aAAc,WACd7xK,OAAQ32B,EAAMI,QAAQ,GACtBxO,MAAOoO,EAAMy+D,QAAQh5D,KAAKipJ,KAC1B,mBAAoB99J,EAAAA,EAAAA,OAAAA,WAA6B,GAAK,EAAI,MAE5D2wM,QAAS,CACP98L,WAAY,WACZ+jM,aAAc,WACd7xK,OAAQ32B,EAAMI,QAAQ,GACtBxO,MAAOoO,EAAMy+D,QAAQ8iI,QAAQ7yC,KAC7B,mBAAoB99J,EAAAA,EAAAA,OAAAA,WAA6B,GAAK,EAAI,UAK1D8kO,EAAY,CAACn1N,EAAiCjJ,KACL,CAC3C4R,MAAO3I,EAAQ2I,MACfif,QAAS5nB,EAAQ4nB,QACjB1iB,KAAMlF,EAAQkF,KACdwgB,KAAM1lB,EAAQghM,SAEIjqM,IAAMiJ,EAAQuN,SAQvB6nN,EAAkBp+M,EAAAA,MAAW,SAAyBpM,GACjE,MAAM2zD,EAAO1lD,OAAOjO,EAAM2zD,MACpBv+D,EAAUT,IACVmwN,EAAQ,GAQRruN,EAAU,CALA,CACd,EAAG,GACHkiC,MAAO,EACPyvH,OAAQ,CAAEhxE,KAAM,UAEWzjB,EAAK82J,SAASH,GAAc,MAoBzD,OAnBI7zN,EAAQpN,OAAS,GACnBoN,EAAQ+d,MAAM,GAAI,GAAG9U,SAAQ,CAACrY,EAAG6D,KAC/B,MAAMgb,EAAIzP,EAAQvL,EAAI,GACtB,IAAK7D,QAAiBwT,IAAZxT,EAAEsxC,YAAoC99B,IAAbxT,EAAE+gK,OACnC,OAEF,MAAM4uB,EAAa3vL,EAAEsxC,MAAQtxC,EAAE,GAAGgC,OAC5BqhO,EAAYxkN,EAAIA,EAAEyyB,MAAQg7B,EAAKtqE,OAC/BshO,EAAWh3J,EAAKn/C,MAAMwiK,EAAY0zC,GACpC1zC,IAAe0zC,GAEjB5F,EAAM1sN,KAAK,CAAEg/E,KAAM/vF,EAAE+gK,OAAOhxE,KAAMzjB,KAAMg3J,GAC1C,IAGiB,IAAjB7F,EAAMz7N,QAERy7N,EAAM1sN,KAAK,CAAEg/E,KAAM,KAAMzjB,KAAMA,IAG/B,gBAAC,IAAU,CAACtnD,UAAW,MAAOjX,QAAS,CAAEL,KAAMw1N,EAAUn1N,EAAS4K,EAAMvZ,QAAUy2M,WAAW,GAC1F4nB,EAAM18N,KAAI,CAACwiO,EAAM1/N,IAChB,wBAAMvB,IAAKuB,EAAGzD,MAAOojO,EAAcD,EAAKxzI,OACrCwzI,EAAKj3J,QAKhB,IAEA,SAASk3J,EAAczzI,GAUrB,MAAM0zI,EAA6B,CACjC,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEIC,EAA2B,CAC/B,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAKIC,EAAW,CAACC,EAAqBC,KACrC,GAA4B,IAAxBD,EAAUC,GAAiB,CAC7B,GAAID,EAAU5hO,QAAU6hO,EAAW,EAEjC,MAAO,CAACD,EAAU5hO,OAAS6hO,EAAU,WAEvC,MAAM9zI,EAAO6zI,EAAUC,EAAW,GAClC,GAAI,GAAK9zI,GAAQA,EAAO,EAEtB,MAAO,CAAC,EAAG2zI,EAAe3zI,IAE5B,GAAI,GAAKA,GAAQA,EAAO,GAEtB,MAAO,CAAC,EAAG0zI,EAAiB1zI,EAAO,IAErC,GAAI,IAAMA,GAAQA,EAAO,IAAK,CAE5B,MAAMn1E,EAAOm1E,EAAO,GACd+zI,EAAKx8N,KAAKC,MAAMqT,EAAO,IACvBmpN,EAAKz8N,KAAKC,MAAOqT,EAAO,GAAM,GAC9BopN,EAAK18N,KAAKC,MAAOqT,EAAO,EAAK,GAInC,MAAO,CAAC,EAAI,OAHFkpN,GAAM,EAAI,EAAI,GAAU,GAALA,MACnBC,GAAM,EAAI,EAAI,GAAU,GAALA,MACnBC,GAAM,EAAI,EAAI,GAAU,GAALA,KAE/B,CACA,GAAI,KAAOj0I,GAAQA,EAAO,IAAK,CAE7B,MACMk0I,EAAc,IADPl0I,EAAO,KACK,EACzB,MAAO,CAAC,EAAI,OAAMk0I,MAASA,MAASA,KACtC,CAEA,MAAO,CAAC,EAAG,UACb,CAAO,OAA4B,IAAxBL,EAAUC,GACfD,EAAU5hO,QAAU6hO,EAAW,EAE1B,CAACD,EAAU5hO,OAAS6hO,EAAU,WAEhC,CAAC,EAAI,OAAMD,EAAUC,EAAW,OAAOD,EAAUC,EAAW,OAAOD,EAAUC,EAAW,OAE1F,EAAE,EAAG,GAAG,EAGXzjO,EAOF,CAAC,EAEL,GAAa,OAAT2vF,GAA0B,MAATA,EACnB,OAAO3vF,EAGT,MAAMwjO,EAAY7zI,EAAK1/E,MAAM,KAAKtP,KAAKoF,GAAa,KAANA,EAAW,EAAIqoC,SAASroC,KAEtE,IAAK,IAAItC,EAAI,EAAGA,EAAI+/N,EAAU5hO,SAAU6B,EAAG,CACzC,MAAMqgO,EAAWN,EAAU//N,GAE3B,GAAiB,IAAbqgO,EACF9jO,EAAM6mB,WAAa,YACd,GAAiB,IAAbi9M,EACT9jO,EAAM8/E,UAAY,cACb,GAAiB,IAAbgkJ,EACT9jO,EAAMmiO,eAAiB,iBAGpB,GAAI,IAAM2B,GAAYA,EAAW,GACpC9jO,EAAMhB,MAAQqkO,EAAiBS,EAAW,SAGvC,GAAI,IAAMA,GAAYA,EAAW,GACpC9jO,EAAMgkC,gBAAkBs/L,EAAeQ,EAAW,SAG/C,GAAiB,KAAbA,GAAgC,KAAbA,EAAiB,CAC3C,MAAOC,EAAOC,GAAeT,EAASC,EAAW//N,EAAI,GAEjDsgO,EAAQ,IACVtgO,GAAKsgO,EACL/jO,EAAmB,KAAb8jO,EAAkB,QAAU,mBAAqBE,EAE3D,CACF,CAMA,OAHIhkO,EAAMgkC,kBACRhkC,EAAMuN,QAAU,4BAEXvN,CACT,+HCpOO,MAAMiR,EAAc,IAAIoT,EAAAA,EAQ/B,IAAI5gB,EAAI,EACD,SAASwgO,IACd,MAAOC,EAAQC,IAAa3kO,EAAAA,EAAAA,UAAkB,IA6C9C,OA5CA6R,EAAAA,EAAAA,YACE,IACEJ,EAAYsT,WAAW2nD,IACrB,MAAMl/D,EAAKvJ,EAAI,GACfA,IACA0gO,GAAWr/M,IACT,MAAMwtE,EA2Bd,SAAwBpmB,GACtB,MAAoB,iBAATA,GAA0Bk4J,EAAAA,EAAAA,QAAOl4J,IACrCk4J,EAAAA,EAAAA,QAAOh2N,KAAK4mH,UAAU9oD,EAAK3zD,OACpC,CA9BqB8rN,CAAen4J,GAC5B,OAAIpnD,EAAIrgB,MAAMzD,GAAMA,EAAEsxF,OAASA,IACtBxtE,EAEF,IACFA,EACH,CACE9X,GAAIA,EACJk/D,KAAMA,EACNomB,KAAMA,GAET,GACD,KAEN,KAGFjhF,EAAAA,EAAAA,YAAU,KACR,SAASizN,EAAuB5hM,GACX,WAAfA,EAAMitD,MACRw0I,EAAU,GAEd,CAEA,OADAl3N,SAASsE,iBAAiB,UAAW+yN,GAC9B,IAAMr3N,SAASyyE,oBAAoB,UAAW4kJ,EAAO,GAC3D,IAcD,gCACGJ,EAAOtiO,OAAS,GACf,gBAAC,IAAK,CAACoX,MAAM,EAAMC,QATzB,WACEkrN,GAAWr/M,GACFA,EAAIiI,MAAM,EAAG,OAExB,GAMQ,gBAAC,IAAG,CAACjb,SAAS,SAAS1T,GAAI,CAAEw3M,aAAc,aAAc/jM,WAAY,aACnE,gBAAC,IAAU,CAAC+S,UAAW,QAASs/M,EAAO,GAAGh4J,QAMtD,gEClEO,SAASq4J,EAAchsN,GAC5B,OAAKA,EAAMnW,QACJ,gCAAGmW,EAAMnW,SADW,gCAAGmW,EAAMynD,SAEtC,0cCoCA,MAAMwkK,EAAuB,IAAIngN,EAAAA,EAG3BogN,EAA0C,CAC9CC,GAAI,IAAM9hO,EAAAA,GAAAA,GAAAA,QAAoB,IAAMA,EAAAA,GAAAA,GAAAA,IACpC+hO,MAAO,IAAM/hO,EAAAA,GAAAA,MACbk6H,KAAM,IAAMl6H,EAAAA,GAAAA,OAAAA,QACZgiO,IAAK,IAAMhiO,EAAAA,GAAAA,OAAAA,SACXiiO,IAAK,IAAMjiO,EAAAA,GAAAA,OAAAA,QACXkiO,IAAK,IAAMliO,EAAAA,GAAAA,OAAAA,UACXmiO,IAAK,IAAMniO,EAAAA,GAAAA,OAAAA,QACXoiO,IAAK,IAAMpiO,EAAAA,GAAAA,OAAAA,SACXqiO,IAAK,IAAMriO,EAAAA,GAAAA,OAAAA,cAIPsiO,EAA+C,CACnDR,GAAI,IAAO,IAAE5yD,EAAAA,EAAAA,IAASlvK,EAAAA,GAAAA,GAAAA,eAAwBkvK,EAAAA,EAAAA,IAASlvK,EAAAA,GAAAA,GAAAA,OACvD+hO,MAAO,KAAMjnN,EAAAA,EAAAA,IAAY9a,EAAAA,GAAAA,OACzBk6H,KAAM,KAAMqoG,EAAAA,EAAAA,IAAYviO,EAAAA,GAAAA,OAAAA,SACxBgiO,IAAK,KAAMO,EAAAA,EAAAA,IAAYviO,EAAAA,GAAAA,OAAAA,UACvBiiO,IAAK,KAAMM,EAAAA,EAAAA,IAAYviO,EAAAA,GAAAA,OAAAA,SACvBkiO,IAAK,KAAMK,EAAAA,EAAAA,IAAYviO,EAAAA,GAAAA,OAAAA,WACvBmiO,IAAK,KAAMI,EAAAA,EAAAA,IAAYviO,EAAAA,GAAAA,OAAAA,SACvBoiO,IAAK,KAAMG,EAAAA,EAAAA,IAAYviO,EAAAA,GAAAA,OAAAA,UACvBqiO,IAAK,KAAME,EAAAA,EAAAA,IAAYviO,EAAAA,GAAAA,OAAAA,eAGnBwiO,EAAwD,CAE5DtoG,KAAM,IAAMl6H,EAAAA,GAAAA,MAAAA,QAAuBwE,EAAAA,GAAAA,uBACnCw9N,IAAK,IAAMhiO,EAAAA,GAAAA,MAAAA,SAAwBwE,EAAAA,GAAAA,wBACnCy9N,IAAK,IAAMjiO,EAAAA,GAAAA,MAAAA,QAAuBwE,EAAAA,GAAAA,uBAClC09N,IAAK,IAAMliO,EAAAA,GAAAA,MAAAA,UAAyBwE,EAAAA,GAAAA,yBACpC29N,IAAK,IAAMniO,EAAAA,GAAAA,MAAAA,QAAuBwE,EAAAA,GAAAA,uBAClC49N,IAAK,IAAMpiO,EAAAA,GAAAA,MAAAA,SAAwBwE,EAAAA,GAAAA,wBACnC69N,IAAK,IAAM,GAGPI,EAAmD,CACvDvoG,KAAM,UACN8nG,IAAK,WACLC,IAAK,UACLC,IAAK,YACLC,IAAK,UACLC,IAAK,WACLC,IAAK,gBAOP,SAASK,EAAS,GAAoD,IAApD,KAAEnhO,EAAI,MAAEnF,GAAsB,EAC9C,MAAOqkC,EAAUkiM,IAAe/lO,EAAAA,EAAAA,WAASuoK,EAAAA,EAAAA,IAAuB,IAUhE,OATA12J,EAAAA,EAAAA,YAAU,IACkBmzN,EAAqBjgN,WAAU,KACvD,MAAMpR,EAAOiyN,EAAkBjhO,KAC/BohO,GAAYx9D,EAAAA,EAAAA,IAAuBnlK,EAAAA,GAAAA,IAAWyiO,EAAalhO,IAAQgP,GAAM,KAI1E,CAAChP,IAGF,gBAAC,IAAQ,KACP,gBAAC,IAAyB,CAACk/B,SAAUA,EAAUrkC,MAAOA,IAG5D,CAMO,SAASwmO,EAAI,GAA+C,IAA/C,KAAErhO,EAAI,MAAEnF,GAAiB,EAE3C,MAAO21F,EAAI8wI,IAAUjmO,EAAAA,EAAAA,UAASilO,EAAYtgO,MAM1C,OALAkN,EAAAA,EAAAA,YAAU,IACkBmzN,EAAqBjgN,WAAU,IAAMkhN,EAAOhB,EAAYtgO,SAEjF,CAACA,IAEG,gBAAC,IAAU,CAACnF,MAAOA,GAAQkmO,EAAc/gO,KAClD,CAQO,SAASuhO,EAAQ,GAAsE,IAAtE,KAAEvhO,EAAI,QAAEwhO,EAAO,MAAE3mO,EAAK,SAAE4mO,GAAwB,EACtE,MAAMj4N,EAAUT,IAEV24N,EAAWF,GADDxhO,KAAQkhO,EACc,gBAACC,EAAQ,CAACnhO,KAAMA,EAAsBnF,MAAOA,IAAY,iCAC/F,OACE,gCACE,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAC4lB,UAAU,KAAKmnE,MAAM,MAAMp+E,QAAS,CAAEL,KAAMK,EAAQi4N,KAC7D,gBAAC,IAAU,CAAC5mO,MAAOA,GAAQmF,EAAK,MAElC,gBAAC,IAAS,CAAC4iE,MAAM,QAAQp5D,QAAS,CAAEL,KAAMK,EAAQi4N,KAChD,gBAACJ,EAAG,CAACrhO,KAAMA,EAAMnF,MAAOA,KAE1B,gBAAC,IAAS,CAAC+nE,MAAM,QAAQp5D,QAAS,CAAEL,KAAMK,EAAQi4N,KAChD,gBAAC,IAAU,CAAC54N,GAAI,YAAc7I,EAAKyuB,cAAgB,QAAS5zB,MAAOA,MAKtE6mO,EAGP,CAQO,SAASC,EAAkB,GAAsE,IAAtE,WAAE9F,EAAU,KAAEr3I,EAAI,YAAEs3I,GAA4B,EAChF,MAAO8F,EAAUC,IAAexmO,EAAAA,EAAAA,WAAS,IAClCymO,EAAiBC,IAAsB1mO,EAAAA,EAAAA,UAASoD,EAAAA,GAAAA,OAAAA,aAA6B,IAC7EujO,EAAUC,IAAe5mO,EAAAA,EAAAA,WAAUxB,EAAAA,EAAAA,8BAC1CqT,EAAAA,EAAAA,YAAU,KACR,IAAK2uN,EAAY,OACjB,MAAMljN,EAAWpS,aAAY,KAC3Bw7N,EAAmBtjO,EAAAA,GAAAA,OAAAA,aAA6B,GAChDwjO,GAAapoO,EAAAA,EAAAA,6BACbwmO,EAAqB6B,MAAM,GAC1B,KACH,MAAO,IAAMtpN,cAAcD,EAAS,GACnC,CAACkjN,IACJ,MAAMryN,EAAUT,IACVE,GAAQ4tF,EAAAA,EAAAA,KACd,OACE,gCACE,gBAAC,IAAK,CAAC58F,GAAI,CAAEG,QAAS,QAASqB,EAAG,IAChC,gBAAC,IAAS,KACR,gBAAC8lO,EAAO,CAACvhO,KAAK,KAAKwhO,SAAS,EAAO3mO,MAAOoO,EAAM62B,OAAOjM,GAAI4tM,SAAU,aACrE,gBAACF,EAAO,CAACvhO,KAAK,QAAQwhO,SAAS,EAAO3mO,MAAOoO,EAAM62B,OAAOlmB,MAAO6nN,SAAU,SAC3E,gBAACF,EAAO,CAACvhO,KAAK,OAAOwhO,QAASQ,EAAUnnO,MAAOoO,EAAM62B,OAAO/7B,KAAM09N,SAAU,SAC5E,gBAACF,EAAO,CAACvhO,KAAK,MAAMwhO,QAASQ,EAAUnnO,MAAOoO,EAAM62B,OAAOyzK,OAAQkuB,SAAU,aAC7E,gBAACF,EAAO,CAACvhO,KAAK,MAAMwhO,QAASQ,EAAUnnO,MAAOoO,EAAM62B,OAAOyzK,OAAQkuB,SAAU,aAC7E,gBAACF,EAAO,CAACvhO,KAAK,MAAMwhO,QAASQ,EAAUnnO,MAAOoO,EAAM62B,OAAOyzK,OAAQkuB,SAAU,aAC7E,gBAACF,EAAO,CAACvhO,KAAK,MAAMwhO,QAASQ,EAAUnnO,MAAOoO,EAAM62B,OAAOyzK,OAAQkuB,SAAU,SAC7E,gBAACF,EAAO,CAACvhO,KAAK,MAAMwhO,QAASQ,EAAUnnO,MAAOoO,EAAM62B,OAAO17B,IAAKq9N,SAAU,SACzEK,EACC,gBAACP,EAAO,CAACvhO,KAAK,MAAMwhO,QAASQ,EAAUnnO,MAAOoO,EAAM62B,OAAOva,IAAKk8M,SAAU,SAE1E,iCAEF,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAChhN,UAAU,KAAKmnE,MAAM,MAAMp+E,QAAS,CAAEL,KAAMK,EAAQ4pE,OAC7D,gBAAC,IAAU,CAACvqE,GAAG,wBAAwBhO,MAAOoO,EAAM62B,OAAO/7B,QAI7D,gBAAC,IAAS,CAAC0c,UAAU,KAAKmnE,MAAM,MAAMhlB,MAAM,QAAQp5D,QAAS,CAAEL,KAAMK,EAAQ4pE,OAC3E,gBAAC,IAAU,CAACvqE,GAAG,wBAAwBhO,MAAOoO,EAAM62B,OAAO/7B,QAI7D,gBAAC,IAAS,CAAC0c,UAAU,KAAKmnE,MAAM,MAAMhlB,MAAM,QAAQp5D,QAAS,CAAEL,KAAMK,EAAQ4pE,OAC3E,gBAAC,IAAU,CAACvqE,GAAG,wBAAwBhO,MAAOoO,EAAM62B,OAAO/7B,SAK/D,gBAAC8nN,EAAI,MACL,gBAACsW,EAAe,QAGpB,gBAAC,IAAG,CAACloO,GAAI,CAAEG,QAAS,OAAQ6+M,UAAY,aAAYp/M,EAAAA,EAAAA,MAAAA,cAClD,gBAAC,IAAG,CAACI,GAAI,CAAEG,QAAS,OAAQiqL,KAAM,EAAG3pL,eAAgB,aAAcga,WAAY,WAC7E,gBAAC,IAAU,CAAC,aAAW,YAAY7H,QAAS23E,GAC1C,gBAAC,IAAO,CAAC7vE,MAAqC,IAA9B9a,EAAAA,EAAAA,iBAAkC,YAAc,wCAC9D,gBAAC,IAAQ,CAACgB,MAAqC,IAA9BhB,EAAAA,EAAAA,iBAAkC,UAAY,aAIrE,gBAAC,IAAG,CAACI,GAAI,CAAEG,QAAS,OAAQiqL,KAAM,EAAG3pL,eAAgB,WAAYga,WAAY,WAC3E,gBAAC,IAAU,CAAC,aAAW,mBAAmB7H,QAAS,IAAMg1N,GAAY,IACnE,gBAAC,IAAO,CAACltN,MAAM,4BACb,gBAAC,IAAY,CAAC9Z,MAAM,cAK5B,gBAAC,IAAgB,CAACga,KAAM+sN,EAAU9sN,QAAS,IAAM+sN,GAAY,GAAQ/F,YAAaA,IAGxF,CAEA,SAASsG,EAAWhuN,GAClB,MAAM6pB,EAAcx/B,EAAAA,GAAAA,YACpB,IAAKw/B,EAAa,OAAO,iCACzB,MAAM/S,EAAS+S,EAAY5F,2BAA2BjkB,EAAM8W,QAC5D,OACE,gBAAC,IAAU,KACRA,EAAOjmB,KAAK,KAAGimB,EAAOlrB,KAG7B,CAEA,SAASmiO,IAAsC,MAC7C,MAAM34N,EAAUT,IACVwL,GAAWC,EAAAA,EAAAA,MACjBtH,EAAAA,EAAAA,YAAU,IACkBmzN,EAAqBjgN,UAAU7L,IAExD,CAACA,IAEJ,MAAM2W,EAA2B,QAArB,EAAGzsB,EAAAA,GAAAA,mBAAkB,aAAlB,EAAoBysB,OACnC,OAAO+nE,EAAAA,EAAAA,UACL,IAGG/nE,GAA0B,IAAhBA,EAAOjmB,KAGhB,gCACE,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACwb,UAAU,KAAKmnE,MAAM,MAAMl7C,QAAS,EAAGljC,QAAS,CAAEL,KAAMK,EAAQogG,WACzE,gBAAC,IAAU,KAAC,kBAGhB,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACnpF,UAAU,KAAKmnE,MAAM,MAAMl7C,QAAS,EAAGljC,QAAS,CAAEL,KAAMK,EAAQogG,WACzE,gBAACw4H,EAAU,CAACl3M,OAAQA,OAV1B,kCAeJ,CAACA,EAAQ1hB,EAAQogG,UAErB,CAQA,MAAMy4H,EAAmB,KACvB5jO,EAAAA,GAAAA,gBACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,KAAU,EAE1B,SAAS67N,EAAuB,GAAgF,IAAhF,QAAEl8J,EAAO,SAAEvK,EAAQ,OAAE0mK,GAAqC,EACxF,MAAM/4N,EAAUT,IAChB,OACE,gCACE,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAC0X,UAAU,KAAKmnE,MAAM,MAAMl7C,QAAS,EAAGljC,QAAS,CAAEL,KAAMK,EAAQg5N,WACzE,gBAAC,IAAO,CAAC7tN,MAAO,gCAAGyxD,IACjB,gBAAC,IAAU,CAAC38D,UAAWD,EAAQi5N,WAAYxoO,GAAI,CAAE4D,GAAI,EAAGi6G,GAAI,KACzDyqH,MAKT,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAC9hN,UAAU,KAAKmnE,MAAM,MAAMl7C,QAAS,EAAGljC,QAAS,CAAEL,KAAMK,EAAQg5N,WACzE,gBAAC,IAAU,CAAC/4N,UAAWD,EAAQk5N,eAAgB7mK,MAGlDo3B,EAAAA,EAAAA,UACC,IACE,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACxyE,UAAU,KAAKmnE,MAAM,MAAMhlB,MAAM,SAASl2B,QAAS,EAAGljC,QAAS,CAAEL,KAAMK,EAAQogG,WACxF,gBAAC,IAAM,CAAC3vG,GAAI,CAAE+D,GAAI,GAAK6O,QAASw1N,GAAkB,YAMxD,CAAC74N,EAAQogG,WAIjB,CAEA,SAASiiH,IACP,MAAMt3M,GAAWC,EAAAA,EAAAA,KAMjB,IALAtH,EAAAA,EAAAA,YAAU,IACkBmzN,EAAqBjgN,UAAU7L,IAExD,CAACA,IAEuB,OAAvB9V,EAAAA,GAAAA,aAA+BA,EAAAA,GAAAA,MAAc,OAAO,iCAExD,IAAIgxK,EAAqB,GACrB8yD,EAAoB,GACpBI,EAAuB,GAC3B,IAAIlW,EAAAA,EAAAA,GAAYhuN,EAAAA,GAAAA,aAAqB,CACnC,MAAMisH,EAAQjsH,EAAAA,GAAAA,YAAAA,WACR26E,EAAQ36E,EAAAA,GAAAA,YAAAA,cAAmCisH,EAAMp5F,KAAQ,IAE/Dm+I,EAAU,gCAAGhxK,EAAAA,GAAAA,YAAAA,WACb8jO,EAAS,gCAAE,yBAAuB9jO,EAAAA,GAAAA,YAAAA,WAClCkkO,EAAY,gCAAGvpJ,EAAKrmE,QAAQ,GAAG,IACjC,CAMA,IALI1P,EAAAA,EAAAA,IAAY5E,EAAAA,GAAAA,eACdgxK,EAAU,gCAAGhxK,EAAAA,GAAAA,YAAAA,WAA8BitN,iBAC3C6W,EAAS,gCAAE,WAAS9jO,EAAAA,GAAAA,YAAAA,WAA8BitN,iBAClDiX,EAAY,iCAAGxjM,EAAAA,EAAAA,IAAiC1gC,EAAAA,GAAAA,YAAAA,aAAkC4C,EAAAA,EAAAA,kBAEhFq8E,EAAAA,EAAAA,GAAoBj/E,EAAAA,GAAAA,aAAqB,CAC3C,MAAMguB,EAAShuB,EAAAA,GAAAA,YACfgxK,EAAU,gCAAE,UAAQhjJ,EAAO8vH,aAC3BgmF,EAAS,gCAAE,sBACXI,EACE,gCACGl2M,EAAO8vH,YAAY,KAAI9vH,EAAO2/L,cAAgB3/L,EAAO4/L,aAAgB,KAAKt5M,QAAQ,GAAG,IAG5F,CACA,IAAIk6M,EAAAA,EAAAA,GAAexuN,EAAAA,GAAAA,aAAqB,CACtC,MAAMs5K,EAAQt5K,EAAAA,GAAAA,YACdgxK,EAAU,gCAAE,YAAUsI,EAAM14F,cAC5BkjJ,EAAS,gCAAE,4BACXI,EACE,gCACE,+BAAW5qD,EAAMq0C,cAAgBr0C,EAAMs0C,aAAgB,KAAKt5M,QAAQ,GAAG,KAAU,QAGvF,CAEA,IAAIm+E,EAAAA,EAAAA,GAAczyF,EAAAA,GAAAA,aAAqB,CACrC,MAAMqtK,EAAcrtK,EAAAA,GAAAA,YACpB8jO,EACE,gCAAE,eACY,8BAASz2D,EAAY94J,cAGrC2vN,EACE,gCACE,gBAAC,IAAU,CAACxwM,WAAY25I,EAAYD,aAAajpK,mBAAoB,OACrE,2BAAM,IACN,gBAAC,IAAc,CAACuvB,WAAY25I,EAAYF,qBAAuB,IAAOvqK,EAAAA,EAAAA,iBAA4B,IAGxG,CACA,IAAI6jK,EAAAA,EAAAA,GAAczmK,EAAAA,GAAAA,aAAqB,CACrC,MAAMuvK,EAAcvvK,EAAAA,GAAAA,YACds7D,EAAMt7D,EAAAA,GAAAA,KAAYuvK,EAAYt1H,aACpC,IAAKqhB,EAAK,OAAO,iCACjB01G,EACE,gCACG11G,EAAI,OAAI,8BAASi0G,EAAYt1H,cAIlC6pL,EACE,gCAAE,cACW,8BAASv0D,EAAYt1H,cAGpCiqL,EACE,gCACE,gBAAC,IAAU,CAACxwM,WAAY67I,EAAY7C,aAAavoK,mBAAoB,OACrE,2BAAM,IACN,gBAAC,IAAc,CAACuvB,WAAY67I,EAAY5C,aAAarxG,GAAK5nC,YAAc,IAAO9wB,EAAAA,EAAAA,iBAA4B,IAGjH,CAEA,OACE,gBAACihO,EAAsB,CAACl8J,QAASqpG,EAAS8yD,OAAQA,GAC/CI,EAGP,CAEA,MAAM55N,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXs5N,SAAU,CACRz5L,UAAW,SACXhuC,SAAU,QACVo+E,aAAc,OACd/vE,QAAS,EACTw2B,OAAQ,GAGV6iM,WAAY,CACVxnO,SAAU,UAGZynO,cAAe,CACbznO,SAAU,UAGZ2uG,SAAU,CACRzwB,aAAc,OACd/vE,QAAS,EACTw2B,OAAQ,GAEVwzC,KAAM,CACJhqE,QAAS,EACTw2B,OAAQ,GAEV/L,GAAI,CACFh5B,MAAOoO,EAAM62B,OAAOjM,IAEtBja,MAAO,CACL/e,MAAOoO,EAAM62B,OAAOlmB,OAEtB7V,KAAM,CACJlJ,MAAOoO,EAAM62B,OAAO/7B,MAEtBwvM,OAAQ,CACN14M,MAAOoO,EAAM62B,OAAOyzK,QAEtBnvM,IAAK,CACHvJ,MAAOoO,EAAM62B,OAAO17B,KAEtBmhB,IAAK,CACH1qB,MAAOoO,EAAM62B,OAAOva,gFCrcnB,SAASq9M,EAAcxuN,GAC5B,MAAO3W,EAAQolO,IAAaxnO,EAAAA,EAAAA,UAAS,IAC9B4+M,EAAM6oB,IAAWznO,EAAAA,EAAAA,WAAS,GAqBjC,OAbA6R,EAAAA,EAAAA,YAAU,KACR,GAAI+sM,GAAQ7lM,EAAMuP,OAEhB,YADAvP,EAAMuP,SAGR,IAAI86F,GAAS,EAIb,MAHA,iBACc,GApBT,IAAIztE,SAASC,GAAYjH,WAAWiH,EAoB3B,OAAIu8C,MAAK,KAAOixB,GAbhC,WACE,MAAMskH,EAAYtlO,EAAS,EAC3BolO,EAAUE,GACVD,EAAQC,GAAa3uN,EAAM2zD,KAAKtqE,OAClC,CAS0CulO,IACvC,EAFD,GAGO,KACLvkH,GAAS,CAAI,CACd,IAGD,gCACE,gBAAC,IAAU,KACRrqG,EAAM2zD,KAAKn/C,MAAM,EAAGnrB,IACnBw8M,GAAQ,4BAAM,MAIxB,8FC/BO,SAASgpB,EAAc7uN,GAC5B,MAAO9U,EAAG4jO,IAAQ7nO,EAAAA,EAAAA,UAAS,IACpB4+M,EAAM6oB,IAAWznO,EAAAA,EAAAA,WAAS,GAWjC,OACE,gCACG+Y,EAAMsP,MAAMkF,MAAM,EAAGtpB,GAAG9C,KAAI,CAACizB,EAAMnwB,IAClC,gBAAC,IAAU,CAACvB,IAAKuB,GAAImwB,KAEtBrb,EAAMsP,MAAMjmB,OAAS6B,GAAK,gBAAC,IAAa,CAACvB,IAAKuB,EAAGyoE,KAAM3zD,EAAMsP,MAAMpkB,GAAIqkB,OAd5E,WACE,MAAMw/M,EAAO7jO,EAAI,EACjB4jO,EAAKC,GACDA,GAAQ/uN,EAAMsP,MAAMjmB,SAClB2W,EAAMuP,QAAUvP,EAAMwP,MAAMxP,EAAMuP,SACtCm/M,GAAQ,GAEZ,KAQM1uN,EAAMwP,MAAQxP,EAAMuP,QAAUs2L,GAAQ,gBAAC,IAAM,CAACptM,QAASuH,EAAMuP,QAAQ,gBAG7E,gKCjBO,MAAMutB,EAAsB,IAAIhxB,EAAAA,EAEhC,SAASkjN,IACd,MAAO3sM,EAAU8pD,IAAellF,EAAAA,EAAAA,UAAqC,OAC9Di8G,EAAQ8H,IAAa/jH,EAAAA,EAAAA,UAAS,IAWrC,IATA6R,EAAAA,EAAAA,YAAU,KACRgkC,EAAoB9wB,WAAWhM,GAAUmsE,EAAYnsE,IAAO,KAE9DlH,EAAAA,EAAAA,YAAU,IACD,KACLupB,SAAAA,EAAU3hB,SAAS,GAEpB,CAAC2hB,IAEa,OAAbA,EAAmB,OAAO,iCAkB9B,SAASk9I,IACU,OAAbl9I,IACJA,EAAS3hB,UACTyrE,EAAY,MACd,CAEA,MAAM8iJ,EAAe30L,EAAAA,GAAoBjY,EAASnwB,EAAErB,MAC9CqO,EAAc,GACpB,IAAK,MAAOhU,EAAG4L,KAAUm4N,EAAa/zN,KAAKmnB,EAASnwB,EAAE/J,MAAMuP,MAAM,MAAM1B,UACtEkJ,EAAY9G,KAAK,wBAAMzO,IAAKuB,EAAGioG,wBAAyB,CAAEC,OAAQt8F,EAAQ,aAC5E,OACE,gBAAC,IAAK,CAAC2J,KAAmB,OAAb4hB,EAAmB3hB,QAAS6+J,GACvC,gBAAC,IAAY,CAAC/4K,QAAQ,KAAKsQ,MAAOurB,EAASnwB,EAAErB,OAC7C,gBAAC,IAAU,KAAC,2DAC+CwxB,EAASnwB,EAAEqqC,iBAAmBla,EAASnwB,EAAEiqC,MAAM,kEAG1G,2BACA,gBAAC,IAAU,KAAEj9B,GACb,2BACA,gBAAC,IAAS,CACRuG,WAAS,EACTiqB,YAAY,sBACZ54B,MAAOosG,EACPh5E,SAxCN,SAAkBC,GAChB6gF,EAAU7gF,EAAMK,OAAO1zB,MACzB,EAuCM61B,UArCN,SAAmBxC,GACjB,GAAiB,OAAb9H,EAAmB,OACvB,MAAMvrB,EAAQqzB,EAAM4C,cAAcj2B,MAE9BqzB,EAAMxgC,MAAQqyB,EAAAA,EAAAA,OAAuB,KAAVllB,IAC7BqzB,EAAMyC,iBACNvK,EAAS2a,UAAUkmE,GACnB8H,EAAU,IACVu0D,IAEJ,EA4BMvyI,WAAY,CACV8I,aACE,gBAAC,IAAM,CACLr9B,QAAS,KACP4pB,EAAS2a,UAAUkmE,GACnB8H,EAAU,IACVu0D,GAAO,GAEV,YAQb,4GC3EA,MAAM2vD,GAAkBv0N,WAAAA,IAAcwiC,EAAAA,GAAW30C,MAAK,CAACC,EAAGC,IAAMD,EAAEiZ,cAAchZ,KAEzE,SAASymO,EAAgBnvN,GAC9B,MAAMovN,EAAY,GAClB,IAAK,MAAMxxL,KAAWsxL,EACpBE,EAAUh3N,KACR,gBAAC,IAAQ,CAACzO,IAAKi0C,EAAS9mC,MAAO8mC,GAC5BA,IAKP,OACE,gBAAC,IAAM,CACL3Q,eACE,gBAAC,IAAM,CAACx0B,QAASuH,EAAMkhG,SAAUngG,UAAWf,EAAM+E,aAAa,OAIjElf,GAAI,CAAEwa,GAAI,GACVvJ,MAAOkJ,EAAMlJ,MACbozB,SAAUlqB,EAAMkqB,UAEfklM,EAGP,iGC7BO,SAASC,EAAkBrvN,GAChC,OACE,gBAAC,IAAK,CAACS,KAAMT,EAAMS,KAAMC,QAASV,EAAMU,SACtC,gCACE,gBAAC,IAAU,KAAEV,EAAMa,kBACnB,gBAAC,IAAM,CACLpI,QAAS,KACPuH,EAAMW,WAAW,GAEpB,WAGAX,EAAM0mF,kBAAoB,gCAAG1mF,EAAM0mF,mBAI5C,sFCLO,SAAS4oI,EAAatvN,GAC3B,MAAOS,EAAM6D,IAAWrd,EAAAA,EAAAA,WAAS,GAcjC,OACE,gBAAC,IAAO,CAACwZ,KAAMA,EAAMF,MAAO,gBAAC,IAAU,KAAC,YACtC,gBAAC,IAAU,CAAC/Z,QAASwZ,EAAMxZ,QAASC,MAAOuZ,EAAMvZ,MAAOgS,QAd5D,WACE,MAAM82N,EAAW76N,SAAS8vK,cAAc,YACxC+qD,EAASz4N,MAAQkJ,EAAMlJ,MACvBpC,SAASkwJ,KAAK6f,YAAY8qD,GAC1BA,EAAS/sB,SACT+sB,EAAShzB,kBAAkB,EAAG,MAC9B7nM,SAAS86N,YAAY,QACrB96N,SAASkwJ,KAAK8f,YAAY6qD,GAC1BjrN,GAAQ,GACRsxB,YAAW,IAAMtxB,GAAQ,IAAQ,IACnC,GAKOtE,EAAMlJ,OAIf,gEC7CA,SAAShM,EAAQ8E,EAAa1E,EAAWs5G,GACvC,OAAO50G,EAAIi0C,UAAU,EAAG34C,GAAKs5G,EAAO50G,EAAIi0C,UAAU34C,EAAI,EACxD,CAkBO,SAASukO,EAAgBzvN,GAC9B,MAAOnW,EAAS6lO,IAAczoO,EAAAA,EAAAA,UAAS+Y,EAAMnW,SAyB7C,OAvBAiP,EAAAA,EAAAA,YAAU,KACR,IAAIooN,EAAU,EACd,MAAMyO,EAAmB,GACnB3lH,EAAa73G,aAAY,KAE7B,GADA+uN,IACIA,EAAU,EAAG,OACjBA,EAA0B,EAAhBvyN,KAAK4Q,SACf,MAAMo5B,EAAQhqC,KAAK4Q,SAAWS,EAAMnW,QAAQR,OACtCosC,EAASz1B,EAAMnW,QAAQyqB,OAAOqkB,GACpC+2L,GAAY7lO,GAAYiB,EAAQjB,EAAS8uC,EAxB/C,SAAmB6rE,GACjB,MAAMorH,EAAYhgO,GAAwBA,EAAIjB,KAAKC,MAAMD,KAAK4Q,SAAW3P,EAAIvG,SACvE+L,EAAU,CAAC,6BAA8B,6BAA8B,aAAc,KAAM,YAGjG,IAAK,MAAMlD,KAAKkD,EACd,GAAIlD,EAAEhJ,SAASs7G,GAAO,OAAOorH,EAAS19N,GAGxC,OAAO09N,EANQ,4BAOjB,CAcsDC,CAAUp6L,MAC1Dk6L,EAAOv3N,KACLW,OAAO68B,YAAW,KAChB85L,GAAY7lO,GAAYiB,EAAQjB,EAAS8uC,EAAOlD,IAAQ,GACvD,KACJ,GACA,IAEH,MAAO,KACLjxB,cAAcwlG,GACd2lH,EAAOjwN,SAASowN,GAAY7jH,aAAa6jH,IAAS,CACnD,GACA,CAAC9vN,EAAMnW,UAEH,4BAAOA,EAChB,iICpCO,SAASkmO,EAAiB,GAAmD,IAAnD,MAAEtpO,EAAQ,WAAmB,EAC5D,MAAOupO,EAAaC,IAAkBhpO,EAAAA,EAAAA,WAAS,GAE/C,OACE,gCACE,gBAAC,IAAO,CAACsZ,MAAM,gFACb,gBAAC,IAAM,CAACyvE,UAAW,gBAAC,IAAU,MAAKvpF,MAAOA,EAAOgS,QAAS,IAAMw3N,GAAe,IAAO,gBAIxF,gBAAC,IAAiB,CAChBtvN,UAAW,KACTsvN,GAAe,IACfhQ,EAAAA,EAAAA,MACG7mI,MAAK,MACJc,EAAAA,EAAAA,MACAtkD,YAAW,IAAMrpC,SAAS6mF,UAAU,IAAK,IAE1CiG,OAAOplE,GAAMnW,QAAQC,MAAO,0BAAyBkW,MAAK,EAE/DxT,KAAMuvN,EACNtvN,QAAS,IAAMuvN,GAAe,GAC9BpvN,iBAAkB,6CAClB6lF,iBAAkB,gBAAC,IAAM,CAACjuF,QAAS,IAAMw3N,GAAe,IAAQ,YAIxE,sFCnCO,SAAStyN,EAAgBg/E,GAA+C,IAApBuzI,EAAO,UAAH,8CAC7Dx3N,EAAAA,EAAAA,KACiB,iBAARikF,EACLA,EACEuzI,EACF,uBAAK/8H,wBAAyB,CAAEC,OAAQzW,KAExC,gBAAC,IAAU,CAACtwE,UAAU,OAAO5kB,MAAO,CAAE6R,WAAY,aAC/CqjF,GAIT,uGCVO,MAAMwzI,EAAY/jN,EAAAA,cAA+B,CAAEmqE,SAAU,KAAgB,IAEvEmzI,EAAe,KAAiBh8J,EAAAA,EAAAA,YAAWyiK,GAUlDC,GAAcj/G,EAAAA,EAAAA,IAAW,YAEzBk/G,EAAiBjkN,EAAAA,cAA6B,CAClD9T,KAAM83N,EACN3J,MAAO,GACPruN,KAAM,KAAe,EACrBmb,IAAK,KAAe,EACpBujE,KAAM,KACR,IAEau1F,EAAWgkD,EAAehkD,SAC1Bh2F,EAAa,KAAe3oB,EAAAA,EAAAA,YAAW2iK,GA0BvCC,EAAmBtwN,IAC9B,MAAOo2E,EAASm6I,IAActpO,EAAAA,EAAAA,UAAkB,CAC9CqR,KAAM83N,EACN3J,MAAO,GACPruN,KAAK5K,GACH+iO,GAAYziO,GA7BH,EAACA,EAAYN,KACnB,IACFM,EACHwK,KAAM9K,EACNi5N,MAAO,IAAI34N,EAAE24N,MAAO34N,EAAEwK,QAyBFk4N,CAAO1iO,EAAGN,IAC9B,EACA+lB,MACEg9M,GAAYziO,GAxBHA,KACb,MAAMwK,EAAOxK,EAAE24N,MAAMlzM,OAAS68M,EAC9B,MAAO,IACFtiO,EACHwK,KAAMA,EACP,EAmBqBm4N,CAAM3iO,IAC1B,EACAgpF,OACEy5I,GAAYziO,GAnBFA,KACP,IACFA,EACHwK,KAAM83N,EACN3J,MAAO,KAeaiK,CAAO5iO,IAC3B,IAEF,OAAO,gBAACu+K,EAAQ,CAACv1K,MAAOs/E,GAAUp2E,EAAMynD,SAAoB,iGChE9D,MAAM9yD,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXpG,MAAO,CACLjI,MAAOoO,EAAM62B,OAAOtmB,SAKnB,SAASurN,EAAM,GAA2D,IAA3D,MAAEjiO,GAAmC,EACzD,MAAM0G,EAAUT,IAChB,OAAO,wBAAMU,UAAWD,EAAQ1G,OAAyB,iBAAVA,GAAqB6zF,EAAAA,EAAAA,IAAY7zF,GAASA,EAC3F,sFCbO,SAASkiO,EAAS,GAAoD,IAApD,OAAEz2H,GAA4B,EACrD,OAAO,gBAAC,IAAM,CAACA,OAAS,IAAE02H,EAAAA,EAAAA,IAAa12H,YACzC,iGCAA,MAAMxlG,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACX0Q,MAAO,CACL/e,MAAOoO,EAAM62B,OAAOlmB,WAKnB,SAASsrN,EAAO,GAA6D,IAA7D,OAAE32H,GAAqC,EAC5D,MAAM/kG,EAAUT,IAChB,OAAO,wBAAMU,UAAWD,EAAQoQ,OAA0B,iBAAX20F,GAAsB02H,EAAAA,EAAAA,IAAa12H,GAAUA,EAC9F,gGCVO,MAAM42H,EAAiB,IAAsD,IAArD,SAAEC,GAAiC,EAChE,MAAMzwN,EAAQywN,EAAW,4BAA8B,6BACjD1lH,EAAO0lH,EAAW,gBAAC,IAAU,CAACvqO,MAAM,YAAe,gBAAC,IAAY,CAACA,MAAM,UAE7E,OAAO,gBAAC,IAAO,CAAC8Z,MAAOA,GAAQ+qG,EAAe,mZC8BhD,MAAM32G,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXC,KAAM,CACJC,QAASH,EAAMI,QAAQ,GACvBtO,SAAU,SAEV,mBAAoB,CAClB,uBAAwB,CACtBo+E,aAAe,aAAYt/E,EAAAA,EAAAA,MAAAA,aAG7B,yCAA0C,CACxCgmC,gBAAiBhmC,EAAAA,EAAAA,MAAAA,oBAEjB,uBAAwB,CACtBgB,MAAOhB,EAAAA,EAAAA,MAAAA,QACP6oB,WAAY,SAIhB,uBAAwB,CACtB,uCAAwC,CACtCmd,gBAAiBhmC,EAAAA,EAAAA,MAAAA,KAEjB,uBAAwB,CACtBgB,MAAOhB,EAAAA,EAAAA,MAAAA,eAGX,wCAAyC,CACvCgmC,gBAAiBhmC,EAAAA,EAAAA,MAAAA,oBAEjB,uBAAwB,CACtBgB,MAAOhB,EAAAA,EAAAA,MAAAA,kBAOjBwrO,WAAY,CACVzwB,cAAe,kBAMf0wB,EAAiC,CAAC,UAAW,WAAY,UAAW,YAAa,UAAW,YAElG,IAAIC,EAAkB,EAEf,MAAMC,EAAcpxN,IAAqE,4IAC9F,MAAM5K,GAAUT,KACTyxF,GAAYC,KAAiBp/F,EAAAA,EAAAA,aAC7BoqO,GAAaC,KAAkBrqO,EAAAA,EAAAA,aAC/BsqO,IAAqBx+K,GAAIy+K,GAAiB/8H,IAAKg9H,MAAsB98H,EAAAA,EAAAA,IAAW,IAChF+8H,IAAoBC,OAAQC,MAAwBj9H,EAAAA,EAAAA,IAAW,IAC/Dk9H,GAAUC,KAAe7qO,EAAAA,EAAAA,WAAS,GAsCzC,OAxBA6R,EAAAA,EAAAA,YAAU,KAERq4N,EAAkB1rO,EAAAA,EAAAA,iBAClBA,EAAAA,EAAAA,iBAA4B,EAC5B2M,EAAAA,EAAAA,cAAoB,EAAM,GACzB,KAEH0G,EAAAA,EAAAA,YAAU,KACJ+4N,IAAUz/N,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,SAAc,GACzC,CAACw/N,MAEJ/4N,EAAAA,EAAAA,YAAU,KAUJkH,EAAMwnN,cATV7qL,iBACE,MAAMo1L,QAA0B7hJ,EAAAA,GAAAA,wBAAmClwE,EAAMwnN,cACnEwK,QAA4B9hJ,EAAAA,GAAAA,wBAAmCA,EAAAA,GAAAA,eAAyB,IAE9FmW,GAAc0rI,GACdT,GAAeU,GAERp1L,QAAQC,SACjB,CACwBo1L,EAAW,GAClC,CAACjyN,EAAMwnN,eAELphI,IAAeirI,GAGlB,gBAAC,IAAG,CAACh8N,UAAWD,GAAQL,MACtB,gBAAC,IAAU,CAACvO,QAAQ,KAAKX,GAAI,CAAEE,GAAI,IAAK,0BAGvCia,EAAM64E,WACL,gBAAC,IAAU,CAAChzF,GAAI,CAAEE,GAAI,IAAK,iBACX,yBAAG,cAAc,sCAGnC,gBAAC,IAAU,CAACS,QAAQ,QAAQX,GAAI,CAAEE,GAAI,IAAK,8FAEzC,2BAAM,6DAGR,gBAAC,IAAc,CAACU,MAAM,YAAY4lB,UAAWC,EAAAA,GAC3C,gBAAC,IAAK,KACJ,gBAAC,IAAS,KACR,gBAAC,IAAQ,KACP,gBAAC,IAAS,MACV,gBAAC,IAAS,KAAC,gBACX,gBAAC,IAAS,KAAC,kBACX,gBAAC,IAAS,CAACnlB,MAAO,OAItB,gBAAC,IAAS,KACR,gBAAC,IAAQ,KACP,gBAAC,IAAS,KAAC,mBACX,gBAAC,IAAS,MAAwB,QAAtB,EAAAkqO,GAAY14I,kBAAU,aAAtB,EAAwBe,aAAc,OAClD,gBAAC,IAAS,MAAuB,QAArB,EAAA0M,GAAWzN,kBAAU,aAArB,EAAuBe,aAAc,OACjD,gBAAC,IAAS,MACc,QAArB,EAAA0M,GAAWzN,kBAAU,aAArB,EAAuBe,eAAqC,QAA3B,EAAK23I,GAAY14I,kBAAU,aAAtB,EAAwBe,aAC7D,gBAAC,IAAO,CAACn5E,MAAM,kCACb,gBAAC,IAAW,CAAC9Z,MAAM,eAK3B,gBAAC,IAAQ,KACP,gBAAC,IAAS,KAAC,YACX,gBAAC,IAAS,MAAEskC,EAAAA,EAAAA,KAAuD,QAAtB,EAAAsmM,GAAY14I,kBAAU,aAAtB,EAAwBtiD,gBAAiB,IACtF,gBAAC,IAAS,MAAEtL,EAAAA,EAAAA,KAAsD,QAArB,EAAAq7D,GAAWzN,kBAAU,aAArB,EAAuBtiD,gBAAiB,IACrF,gBAAC,IAAS,MACc,QAArB,EAAA+vD,GAAWzN,kBAAU,aAArB,EAAuBtiD,kBAAwC,QAA3B,EAAKg7L,GAAY14I,kBAAU,aAAtB,EAAwBtiD,gBAChE,gBAAC,IAAc,CACb26L,WACwB,QAArB,EAAA5qI,GAAWzN,kBAAU,aAArB,EAAuBtiD,gBAAiB,KAA4B,QAAtB,EAAAg7L,GAAY14I,kBAAU,aAAtB,EAAwBtiD,gBAAiB,OAOlG,gBAAC,IAAQ,KACP,gBAAC,IAAS,KAAC,YACX,gBAAC,IAAS,OACgB,QAAtB,EAAAg7L,GAAY14I,kBAAU,aAAtB,EAAwBiB,WAAY,GAAK,EACvC,IAAIj0F,MAA2B,QAAtB,EAAA0rO,GAAY14I,kBAAU,aAAtB,EAAwBiB,WAAY,GAAGh0F,iBAChD,OAEN,gBAAC,IAAS,OACe,QAArB,EAAAwgG,GAAWzN,kBAAU,aAArB,EAAuBiB,WAAY,GAAK,EACtC,IAAIj0F,MAA0B,QAArB,EAAAygG,GAAWzN,kBAAU,aAArB,EAAuBiB,WAAY,GAAGh0F,iBAC/C,OAEN,gBAAC,IAAS,MACc,QAArB,EAAAwgG,GAAWzN,kBAAU,aAArB,EAAuBiB,aAAmC,QAA3B,EAAKy3I,GAAY14I,kBAAU,aAAtB,EAAwBiB,WAC3D,gBAAC,IAAc,CACbo3I,WAAgC,QAArB,EAAA5qI,GAAWzN,kBAAU,aAArB,EAAuBiB,WAAY,KAA4B,QAAtB,EAAAy3I,GAAY14I,kBAAU,aAAtB,EAAwBiB,WAAY,OAMhG,gBAAC,IAAQ,KACP,gBAAC,IAAS,KAAC,SACX,gBAAC,IAAS,MAAEz0E,EAAAA,EAAAA,KAAkC,QAAtB,EAAAksN,GAAY14I,kBAAU,aAAtB,EAAwBnzE,QAAS,IACzD,gBAAC,IAAS,MAAEL,EAAAA,EAAAA,KAAiC,QAArB,EAAAihF,GAAWzN,kBAAU,aAArB,EAAuBnzE,QAAS,IACxD,gBAAC,IAAS,MACc,QAArB,GAAA4gF,GAAWzN,kBAAU,cAArB,GAAuBnzE,UAAgC,QAA3B,GAAK6rN,GAAY14I,kBAAU,cAAtB,GAAwBnzE,QACxD,gBAAC,IAAc,CACbwrN,WAAgC,QAArB,GAAA5qI,GAAWzN,kBAAU,cAArB,GAAuBnzE,QAAS,KAA4B,QAAtB,GAAA6rN,GAAY14I,kBAAU,cAAtB,GAAwBnzE,QAAS,OAK1F,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAAC8yB,QAAS,GAClB,gBAAC,IAAU,CAAC,aAAW,aAAalyC,KAAK,QAAQqS,QAASm5N,IACvDF,GAAmB,gBAAC,IAAmB,MAAM,gBAAC,IAAqB,OACzD,WAIjB,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACp5L,QAAS,EAAGtjC,QAAQ,QAC7B,gBAAC,IAAQ,CAACwX,GAAIklN,IACZ,gBAAC,IAAK,KACJ,gBAAC,IAAS,KACR,gBAAC,IAAQ,MACRR,EAAa9oO,KAAK+wB,IAAU,QAC3B,MAAMqiJ,GAAqC,QAAtB,EAAA61D,GAAY14I,kBAAU,aAAtB,EAAwBlmE,OAAO0G,KAAU,EACxD+4M,GAAmC,QAArB,EAAA9rI,GAAWzN,kBAAU,aAArB,EAAuBlmE,OAAO0G,KAAU,EAC5D,OACE,gBAAC,IAAQ,CAACxvB,IAAKwvB,GACb,gBAAC,IAAS,CAAC9jB,UAAWD,GAAQ67N,YAAa93M,GAC3C,gBAAC,IAAS,MAAErZ,EAAAA,EAAAA,IAAqB07J,EAAc,IAC/C,gBAAC,IAAS,MAAE17J,EAAAA,EAAAA,IAAqBoyN,EAAa,IAC9C,gBAAC,IAAS,CAAC/qO,MAAO,IACfq0K,IAAiB02D,GAAe,gBAAC,IAAc,CAAClB,SAAUkB,EAAc12D,KAElE,IAGd01D,EAAa7nO,OAAS,GAAM,GAC3B,gBAAC,IAAQ,WAOrB,gBAAC,IAAQ,MAET,gBAAC,IAAQ,KACP,gBAAC,IAAS,KAAC,iBACX,gBAAC,IAAS,KAAwB,QAAxB,GAAEgoO,GAAY14I,kBAAU,cAAtB,GAAwB5lF,eACpC,gBAAC,IAAS,KAAuB,QAAvB,GAAEqzF,GAAWzN,kBAAU,cAArB,GAAuB5lF,eACnC,gBAAC,IAAS,MACc,QAArB,GAAAqzF,GAAWzN,kBAAU,cAArB,GAAuB5lF,kBAAwC,QAA3B,GAAKs+N,GAAY14I,kBAAU,cAAtB,GAAwB5lF,gBAChE,gBAAC,IAAc,CACbi+N,WACwB,QAArB,GAAA5qI,GAAWzN,kBAAU,cAArB,GAAuB5lF,gBAAiB,KAA4B,QAAtB,GAAAs+N,GAAY14I,kBAAU,cAAtB,GAAwB5lF,gBAAiB,OAOlG,gBAAC,IAAQ,KACP,gBAAC,IAAS,KAAC,YACX,gBAAC,IAAS,KAAwB,QAAxB,GAAEs+N,GAAY14I,kBAAU,cAAtB,GAAwBz+E,UACpC,gBAAC,IAAS,KAAuB,QAAvB,GAAEksF,GAAWzN,kBAAU,cAArB,GAAuBz+E,UACnC,gBAAC,IAAS,MACc,QAArB,GAAAksF,GAAWzN,kBAAU,cAArB,GAAuBz+E,aAAmC,QAA3B,GAAKm3N,GAAY14I,kBAAU,cAAtB,GAAwBz+E,WAC3D,gBAAC,IAAc,CACb82N,WAAgC,QAArB,GAAA5qI,GAAWzN,kBAAU,cAArB,GAAuBz+E,WAAY,KAA4B,QAAtB,GAAAm3N,GAAY14I,kBAAU,cAAtB,GAAwBz+E,WAAY,OAKhG,gBAAC,IAAQ,KACP,gBAAC,IAAS,KAAC,gBACX,gBAAC,IAAS,KAAwB,QAAxB,GAAEm3N,GAAY14I,kBAAU,cAAtB,GAAwB7wF,cACpC,gBAAC,IAAS,KAAuB,QAAvB,GAAEs+F,GAAWzN,kBAAU,cAArB,GAAuB7wF,cACnC,gBAAC,IAAS,MACc,QAArB,GAAAs+F,GAAWzN,kBAAU,cAArB,GAAuB7wF,iBAAuC,QAA3B,GAAKupO,GAAY14I,kBAAU,cAAtB,GAAwB7wF,eAC/D,gBAAC,IAAc,CACbkpO,WAAgC,QAArB,GAAA5qI,GAAWzN,kBAAU,cAArB,GAAuB7wF,eAAgB,KAA4B,QAAtB,GAAAupO,GAAY14I,kBAAU,cAAtB,GAAwB7wF,eAAgB,OAMxG,gBAAC,IAAQ,KACP,gBAAC,IAAS,KAAC,gBACX,gBAAC,IAAS,KAAwB,QAAxB,GAAEupO,GAAY14I,kBAAU,cAAtB,GAAwBmzE,aACpC,gBAAC,IAAS,KAAuB,QAAvB,GAAE1lE,GAAWzN,kBAAU,cAArB,GAAuBmzE,aACnC,gBAAC,IAAS,MACc,QAArB,GAAA1lE,GAAWzN,kBAAU,cAArB,GAAuBmzE,gBAAsC,QAA3B,GAAKulE,GAAY14I,kBAAU,cAAtB,GAAwBmzE,cAC9D,gBAAC,IAAc,CACbklE,WAAgC,QAArB,GAAA5qI,GAAWzN,kBAAU,cAArB,GAAuBmzE,cAAe,KAA4B,QAAtB,GAAAulE,GAAY14I,kBAAU,cAAtB,GAAwBmzE,cAAe,OAMtG,gBAAC,IAAQ,KACP,gBAAC,IAAS,KAAC,WACX,gBAAC,IAAS,KACe,QADf,GACPulE,GAAY14I,kBAAU,cAAtB,GAAwB7pE,QAAQ,IAAwB,QAAvB,GAACuiN,GAAY14I,kBAAU,cAAtB,GAAwB2pF,cAE7D,gBAAC,IAAS,KACc,QADd,GACPl8E,GAAWzN,kBAAU,cAArB,GAAuB7pE,QAAQ,IAAuB,QAAtB,GAACs3E,GAAWzN,kBAAU,cAArB,GAAuB2pF,cAE3D,gBAAC,IAAS,UAMlB,gBAAC,IAAG,CAACz8K,GAAI,CAAEG,QAAS,OAAQM,eAAgB,aAC1C,gBAAC,IAAW,KACV,gBAAC,IAAM,CAACmS,QAxOK,KACnBhT,EAAAA,EAAAA,iBAA4B0rO,GAC5Bn3I,EAAAA,EAAAA,KAAiB,GACjB5nF,EAAAA,EAAAA,cAAoB,GACpB0/N,IAAY,EAAK,EAoOoBjsO,GAAI,CAAEuD,GAAI,GAAK4mF,UAAW,gBAAC,IAAa,MAAKvpF,MAAM,aAAY,iBAG9F,gBAAC,IAAM,CAACgS,QAAS+4N,GAAiB3rO,GAAI,CAAEuD,GAAI,GAAK4mF,UAAW,gBAAC,IAAiB,MAAKvpF,MAAM,WAAU,wBAIrG,gBAAC,IAAiB,CAChBga,KAAM8wN,GACN7wN,QAAS+wN,GACT9wN,UA3Oag8B,gBACbuzC,EAAAA,GAAAA,WAAsBlwE,EAAMwnN,cAAc,IAChDxtI,EAAAA,EAAAA,KAAiB,EAAK,EA0OhBn5E,iBACE,gCAAE,qCACkC,8BAAQ,mBAAwB,0BAClE,gCAlN4B,gCAuNhC,iKCnVH,SAASsxN,EAAiBnyN,GAM/B,OACE,gBAAC,IAAK,CAACS,KAAMT,EAAMS,KAAMC,QAASV,EAAMU,SACtC,gBAAC,IAAU,KAAC,2FACZ,gBAAC,IAAM,CAACjI,QARZ,WACEuH,EAAM0nN,cACN1nN,EAAMU,SACR,GAK8B,QAGhC,+XCKA,IAAI0xN,EAAe,EAEZ,MAAMntF,EAAe,IAAIn5H,EAAAA,EACnB45H,EAAqB,IAAI55H,EAAAA,EACzB0wJ,EAAoB,IAAI1wJ,EAAAA,EAG9B,MAAMumN,EACXr3N,EAAwB,GAApBjC,OAAOimJ,WACXjhF,EAAyB,GAArBhlE,OAAOkmJ,YACX93J,MAAQ,IACRC,OAAS,IAKT+S,YAAYgG,EAAsBmyN,GAChCj4N,KAAK8F,SAAWA,EAChB9F,KAAKi4N,QAAUA,CACjB,CAEAC,YACE,IAAKl4N,KAAKi4N,QAAQhwN,QAAS,OAC3B,MAAMiuB,EAAQl2B,KAAKi4N,QAAQhwN,QAAQiuB,MACnCA,EAAMv1B,EAAIX,KAAKW,EACfu1B,EAAMwtC,EAAI1jE,KAAK0jE,CACjB,CAEAsnE,YAAYrqI,EAAW+iE,GACrB1jE,KAAKW,EAAIA,EACTX,KAAK0jE,EAAIA,EACT1jE,KAAKk4N,WACP,CAEA9sF,QAAQt+I,EAAeC,GACrBiT,KAAKlT,MAAQA,EACbkT,KAAKjT,OAASA,EACdiT,KAAK8F,UACP,CAEA6gH,YACE,OAAgC,OAAzB3mH,KAAKi4N,QAAQhwN,OACtB,EAQF,IAAIo+G,EAAc,GAEX,SAAS8xG,IACd,MAAMryN,GAAWC,EAAAA,EAAAA,KAGXqyN,GAAW3pH,EAAAA,EAAAA,cACdqV,IACCuC,EAAOA,EAAKh5H,QAAQsxB,GAAQA,EAAIm+D,OAAOgnC,MAAQA,IAC/Ch+G,GAAU,GAEZ,CAACA,IAwCH,OArCArH,EAAAA,EAAAA,YACE,IACEmsI,EAAaj5H,WAAWmrE,IAClBupC,EAAKx0H,MAAM0sJ,GAAMA,EAAEzhE,OAAOgnC,MAAQhnC,EAAOgnC,QAC7CuC,EAAKtoH,KAAK,CACR3D,GAAI0iF,EAAOgnC,IACXhnC,OAAQA,IAEVh3E,IAAU,KAEd,CAACA,KAIHrH,EAAAA,EAAAA,YACE,IACE4sI,EAAmB15H,WAAWmyG,IAC5Bs0G,EAASt0G,EAAI,KAEjB,CAACs0G,KAGH35N,EAAAA,EAAAA,YACE,IACE0jK,EAAkBxwJ,WAAU,KAC1B00G,EAAO,GACPvgH,GAAU,KAEd,CAACA,IAUD,gCACGugH,EAAKt4H,KAAK4wB,GACT,gBAAC05M,EAAS,CAAC/oO,IAAKqvB,EAAIvkB,GAAI0iF,OAAQn+D,EAAIm+D,OAAQz2E,QAAS,KAAM6+J,OARlD9qK,EAQwDukB,EAAIvkB,GAPzEisH,EAAOA,EAAKh5H,QAAQkxJ,GAAMA,EAAEnkJ,KAAOA,SACnC0L,IAFF,IAAe1L,CAQgE,MAIjF,CAOA,MAAME,GAAYC,EAAAA,EAAAA,IAAW,KAC3BE,EAAAA,EAAAA,GAAa,CACX4rH,KAAM,CACJ/+G,UAAW,SACXqtB,UAAW,SACX+yK,eAAgB,OAChB97M,cAAe,iBACfqT,WAAY,WACZiyK,SAAU,cAEZonD,YAAa,CACXj5N,YAAa,YACbF,YAAa/T,EAAAA,EAAAA,MAAAA,UACbgU,YAAa,QACbi7B,aAAc,IACd1/B,QAAS,IACT5N,OAAQ,YAKDwrO,EAAmB,KAEhC,SAASF,EAAU1yN,GACjB,MAAM6yN,GAAe1mM,EAAAA,EAAAA,QAAuB,MACtCmmM,GAAUnmM,EAAAA,EAAAA,QAAkB,MAC5BgrD,EAASn3E,EAAMm3E,OACf/hF,EAAUT,IACV2gE,GAAYnpC,EAAAA,EAAAA,QAAuB,MACnC2mM,GAAW3mM,EAAAA,EAAAA,QAAuB,MAClChsB,GAAWC,EAAAA,EAAAA,GAAY,KACvB2yN,GAAW5mM,EAAAA,EAAAA,QAAO,IAAIkmM,EAAiBlyN,EAAUmyN,IACvDn7I,EAAOspC,UAAYsyG,EAASzwN,QAC5B,MAAO0wN,EAAWC,IAAgBhsO,EAAAA,EAAAA,WAAS,GAmBrCisO,GAAcpqH,EAAAA,EAAAA,cAAY,KAC9B,MAAM52G,EAAIojE,EAAUhzD,QACV,OAANpQ,IACJA,EAAEzK,MAAM0rO,OAASP,EAAmBR,EAAe,GACnDA,IACAjyN,IAAU,GACT,CAACA,IAOJ,SAASm5H,KACPsI,EAAAA,EAAAA,GAAsBzqD,EAAOgnC,KAC7Bh+G,GACF,CAEA,SAASi5H,IACP,MAAM3+F,GAASxwC,EAAAA,EAAAA,IAAUktF,EAAO18C,QAChC,GAAe,OAAXA,EAEJ,GAAU,QADAylF,EAAAA,EAAAA,IAAuB/oC,EAAOgnC,IAAK1jF,GAC7B,CACd,MAAM24L,EAAa34L,EAAOzuC,QAAQ6L,IAAIs/E,EAAO/qF,UAC7C,IAAKgnO,EACH,OAAOz1N,EAAAA,EAAAA,GACJ,uCAAsCw5E,EAAO/qF,2CAA2CquC,EAAOe,aAGpG,MAAM9tC,EAAW0lO,EAAWz7I,YAAYl9C,EAAOzuC,SAC/C,IAAK0B,EACH,OAAOiQ,EAAAA,EAAAA,GAAiB,qCAAoCw5E,EAAO/qF,eAAequC,EAAOe,aAG3F27C,EAAOzpF,SAAWA,EAClBypF,EAAOixF,QAAU,CAAC,EAClBjxF,EAAOioC,gBAAkB,EACzBjoC,EAAO+nC,gBAAkB,EACzB/nC,EAAO2pC,kBAAoB,KAE3Bs4B,EAAAA,EAAAA,IAAkBjiE,EAAQ18C,GAC1Bt6B,GACF,MACErC,QAAQgd,KAAM,sBAAqBq8D,EAAOgnC,gCAE9C,CAeA,SAASk1G,IACPJ,GAAcD,EAChB,EAtDAl6N,EAAAA,EAAAA,YAAU,KACRi6N,EAASzwN,QAAQiwN,YACjBW,GAAa,GACZ,CAACA,IAqEJ,MAAMI,GAAiBz0I,EAAAA,EAAAA,UACrB,KACE4uF,EAAAA,EAAAA,WAAS,KACP,MAAM79J,EAAOijN,EAAavwN,QACrBsN,IAEA2jN,EAAW3jN,IACdmjN,EAASzwN,QAAQ+iI,YAAY,EAAG,GAClC,GACC,MACL,KAIFvsI,EAAAA,EAAAA,YAAU,KACRC,OAAOC,iBAAiB,SAAUs6N,GAC3B,KACLv6N,OAAOouE,oBAAoB,SAAUmsJ,EAAe,IAErD,CAACA,IAEJ,MAAMC,EAAc3jN,IAClB,MAAM4jN,EAAS5jN,EAAK6jN,wBAEpB,QAASD,EAAOpvH,MAAQ,GAAKovH,EAAOv4B,OAAS,GAAKu4B,EAAOptJ,KAAO44E,YAAcw0E,EAAOpkC,IAAMskC,WAAW,EAclGC,EAAmC,CAAC,IAAK,IAE/C,OACE,gBAAC,IAAS,CAAC5H,OAAO,QAAQ6H,OAdZh0N,IAGd,GAFAA,EAAEgtB,iBAGAhtB,aAAai0N,aACZj0N,EAAEk0N,QAAU,GAAKl0N,EAAEm0N,QAAU,GAAKn0N,EAAEk0N,QAAU90E,YAAcp/I,EAAEm0N,QAAU90E,aAEzE,OAAO,CAAK,EAO4B3xH,IAAKglM,EAAS3gD,YAAauhD,GACnE,gBAAC,IAAG,CACFltO,QAAQ,OACRH,GAAI,CACFmuO,SAAU,SACV3gM,SAAU,QACV8/L,OAAQ,KACRtuN,SAAW,GAAE8uN,EAAe,OAC5BpjK,UAAY,GAAEojK,EAAe,UACzBX,EACA,CACEltO,OAAQ,OACR0lC,OAAQ,EACRzpB,UAAW,EACX/M,QAAS,GAEX,CACElP,OAAS,aAAYL,EAAAA,EAAAA,MAAAA,cAG7B6nC,IAAKgoC,GAEL,gBAAC,EAAA2+J,aAAY,CACX9sO,MAAO4rO,EAASzwN,QAAQnb,MACxBC,OAAQ2rO,EAASzwN,QAAQlb,OACzB8sO,SAtJS,CAACt0N,EAAyB,KAAiC,IAAjC,KAAExZ,GAA0B,EACrE2sO,EAASzwN,QAAQmjI,QAAQr/I,EAAKe,MAAOf,EAAKgB,OAAO,EAsJ3CusO,eAAgBA,EAChB5H,OACE,wBACEtkO,MAAO,CACL4rC,SAAU,WACV+wE,MAAO,QACP62F,OAAQ,QACR7sL,OAAQ,YACRpoB,QAASgtO,EAAY,OAAS,iBAGhC,gBAAC,IAAmB,CAACvsO,MAAM,UAAUgB,MAAO,CAAEsc,UAAW,gBAAiBld,SAAU,eAIxF,gCACE,gBAAC,IAAK,CAACwO,UAAU,OAAOxP,GAAI,CAAEG,QAAS,OAAQsa,WAAY,SAAU8N,OAAQ,QAAUkf,IAAKulM,GApHtG,WACE,MAAMsB,EAA6B,WAAjBh9I,EAAO52E,MAAqB42E,EAAO52E,MAAS,GAAE42E,EAAO/qF,YAAY+qF,EAAO18D,KAAK9iB,KAAK,OACpG,OACE,gBAAC,IAAU,CACTnR,QAAQ,KACRX,GAAI,CAAEm2E,YAAa,OAAQ92D,aAAc,WAAY5L,WAAY,SAAUC,SAAU,UACrFgH,MAAO4zN,GAENh9I,EAAO52E,MAGd,CA0GaA,GAED,wBAAM9Y,MAAO,CAAEod,SAAU,cAAezd,OAAS,GAAEusO,EAAe,SAC9DjnO,EAAAA,EAAAA,IAAkByqF,EAAOgnC,KAKzB,gBAAC,IAAU,CAAC59G,MAAM,cAAclL,UAAWD,EAAQu9N,YAAal6N,QAAS6gI,EAAM86F,WAAY96F,GACzF,gBAAC,IAAc,CAAC7yI,MAAM,WALxB,gBAAC,IAAU,CAAC8Z,MAAM,gBAAgBlL,UAAWD,EAAQu9N,YAAal6N,QAAS2gI,EAAKg7F,WAAYh7F,GAC1F,gBAAC,IAAc,OAOnB,gBAAC,IAAU,CACT74H,MAAOyyN,EAAY,SAAW,WAC9B39N,UAAWD,EAAQu9N,YACnBl6N,QAAS46N,EACTe,WAAYf,GAEXL,EAAY,gBAAC,IAAc,MAAM,gBAAC,IAAc,OAEnD,gBAAC,IAAU,CACTzyN,MAAM,eACNlL,UAAWD,EAAQu9N,YACnBl6N,QAASuH,EAAMU,QACf0zN,WAAYp0N,EAAMU,SAElB,gBAAC,IAAS,SAKhB,gBAAC,IAAK,CACJrL,UAAWD,EAAQsrH,KACnBj5H,MAAO,CAAEL,OAAS,eAAcusO,EAAe,QAAS3tO,QAASgtO,EAAY,OAAS,QACtFvmM,UAAW,EACXa,IAAKwlM,EACLnmM,UAzNa/sB,IACvB,GAAIA,EAAEgkG,SAAqB,MAAVhkG,EAAEjW,IAAa,SAC9B,IAAKmpO,EAASxwN,QAAS,OACvB,MAAM2R,EAAI,IAAIogN,MACdpgN,EAAEqgN,eAAexB,EAASxwN,SAC1B2R,EAAEsgN,YAAYzB,EAASxwN,SACA,QAAvB,EAAA5N,SAAS8/N,sBAAc,OAAvB,EAAyBC,kBACF,QAAvB,EAAA//N,SAAS8/N,sBAAc,OAAvB,EAAyBE,SAASzgN,GAClCrU,EAAEgtB,iBACFhtB,EAAE2tK,iBACJ,IAiNU,uBAAK9lL,MAAO,CAAEzB,QAAS,OAAQC,cAAe,WAC3CkxF,EAAOupC,KAAKt4H,KACX,CAACizB,EAAuBnwB,KACtB,MAAgB,iBAATmwB,EAAoBA,EAAO,gBAAC,IAAe,CAAC1xB,IAAKuB,EAAGyoE,KAAMt4C,EAAM50B,OA7ItE0F,EA6IuFkvB,EA5IpGlvB,EAAEuK,MAAM,yBAA2BvK,EAAEuK,MAAM,uBACtC,QAELvK,EAAEuK,MAAM,0BACH,UAELvK,EAAEuK,MAAM,uBACH,OAELvK,EAAEuK,MAAM,uBACH,OAEF,aAbT,IAAmBvK,CA6IgG,SASrH,4IC9YA,MAAMwI,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACX6/N,MAAO,CACL3uO,QAAS,OACTsa,WAAY,SACZha,eAAgB,UAElBg6M,MAAO,CACLjtK,SAAU,WACV5H,gBAAiB52B,EAAMy+D,QAAQ49G,WAAWmvB,QAC1Cv6M,OAAQ,aAAe+O,EAAMy+D,QAAQ3wD,QAAQ4gJ,KAC7CqxE,UAAY,oBAAmB//N,EAAMy+D,QAAQ3wD,QAAQy9L,wBAAwBvrM,EAAMy+D,QAAQ3wD,QAAQy9L,yBAAyBvrM,EAAMy+D,QAAQ3wD,QAAQy9L,OAClJprM,QAAS,EACTrO,SAAU,MACVob,UAAW,MACXxI,SAAU,OACV,uBAAwB,CAEtBvT,QAAS,QAEX+7M,eAAgB,QAElB8yB,YAAa,CACXxhM,SAAU,WACV+wE,MAAO,EACPgrF,IAAK,EACLjoM,MAAO,GACPC,OAAQ,QAYD0tO,EAAQ,IAAqE,IAApE,KAAEr0N,EAAI,QAAEC,EAAO,SAAE+mD,EAAQ,GAAE5hE,GAAgB,EAC/D,MAAMuP,EAAUT,KACT9K,EAAS6lO,IAAczoO,EAAAA,EAAAA,UAASwgE,GAMvC,OALA3uD,EAAAA,EAAAA,YAAU,KACH2H,GACLivN,EAAWjoK,EAAS,GACnB,CAACA,EAAUhnD,IAGZ,gBAAC,IAAC,CACAs0N,qBAAmB,EACnBC,mBAAiB,EACjBC,qBAAmB,EACnBC,kBAAgB,EAChBz0N,KAAMA,EACNC,QAASA,EACTy0N,sBAAoB,EACpB9/N,UAAWD,EAAQu/N,MACnB9uO,GAAIA,GAEJ,gBAAC,IAAI,CAAC2mB,GAAI/L,GACR,uBACEpL,UAAWD,EAAQkrM,MAEnB80B,MAAO30N,EAAO,KAAO,IAErB,gBAAC,IAAU,CAACpL,UAAWD,EAAQy/N,YAAap8N,QAASiI,GACnD,gBAAC,IAAS,OAEZ,gBAAC,IAAG,CAAC7a,GAAI,CAAEwB,EAAG,IAAMwC,KAGtB,4GC3ER,MAAM8K,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXu+D,UAAW,CACT5sE,MAAOoO,EAAMy+D,QAAQx8C,OAAO/V,UAE9ByE,MAAO,CACL/e,MAAOoO,EAAM62B,OAAOlmB,WASnB,SAAS4mN,EAAMpsN,GACpB,MAAM5K,EAAUT,IAChB,GAAIqL,EAAM83D,YAAa,CACrB,GAA2B,iBAAhB93D,EAAMwF,MACf,MAAM,IAAIiG,MAAM,mEAClB,IAAKphB,EAAAA,GAAAA,UAAiB2V,EAAMwF,OAAQ,OAAO,wBAAMnQ,UAAWD,EAAQi+D,YAAYluD,EAAAA,EAAAA,IAAYnF,EAAMwF,OACpG,CACA,OACE,wBAAMnQ,UAAWD,EAAQoQ,OAA+B,iBAAhBxF,EAAMwF,OAAqBL,EAAAA,EAAAA,IAAYnF,EAAMwF,OAASxF,EAAMwF,MAExG,sFC5BO,SAAS6vN,EAAU,GAA2C,IAA3C,MAAE7vN,GAA0B,EACpD,OAAO,gBAAC,IAAK,CAACA,MAAQ,IAAEL,EAAAA,EAAAA,IAAYK,YACtC,sFCEO,SAAS8vN,EAAYt1N,GAC1B,MAAMu1N,EAAY,IACbv1N,EACHkqB,SAAWC,IACT,MAAMtH,GAAM2yM,EAAAA,EAAAA,IAAerrM,EAAMK,OAAO1zB,OACb,KAAvBqzB,EAAMK,OAAO1zB,OAAgB2L,MAAMogB,GAAM7iB,EAAMkqB,SAASktC,KACvDp3D,EAAMkqB,SAASrH,EAAI,GAG5B,OAAO,gBAAC,IAAc0yM,EACxB,4GCRO,SAASE,EAAa,GAA6E,IAA7E,QAAElrM,EAAO,SAAEL,EAAQ,KAAEypC,EAAI,QAAE3B,GAA4B,EAClF,MAAOl7D,EAAOmzB,IAAYhjC,EAAAA,EAAAA,UAASsjC,GAQnC,OACE,gCACE,gBAAC,IAAgB,CACf0xC,QAAS,gBAAC,IAAM,CAAC1xC,QAASzzB,EAAOozB,SATvC,SAA4BC,GAC1B,MAAMwyC,EAAWxyC,EAAMK,OAAOD,QAC9BN,EAAS0yC,GACTzyC,EAASyyC,EACX,IAMMtyC,MACE,gBAAC,IAAO,CAAC9pB,MAAO,gBAAC,IAAU,KAAEyxD,IAC3B,gBAAC,IAAU,KAAE2B,MAInB,2BAGN,8OCjBA,MAAMh/D,GAAYC,EAAAA,EAAAA,GAAW,CAC3B8gO,kBAAmB,CACjBriM,SAAU,QACV+7J,IAAK,EACLhrF,MAAO,EACP+uH,OAAQ,KACRntO,QAAS,OACTM,eAAgB,WAChBL,cAAe,UAGjBkoO,OAAQ,CACN//M,OAAQ,OACRumB,UAAW,SACX3uC,QAAS,OACTC,cAAe,MACfqa,WAAY,UAGdq1N,iBAAkB,CAChB3gO,QAAS,MACT6P,SAAU,UACV4mB,gBAAiB,cACjB3lC,OAAQ,OACR,UAAW,CACT2lC,gBAAiB,6BAIrBmqM,SAAU,CACR/wB,UAAY,aAAYp/M,EAAAA,EAAAA,MAAAA,YACxB+lC,OAAQ,UAGV8/E,KAAM,CACJzkH,SAAU,UAeP,SAASotE,EAAS,GAAgD,IAAhD,SAAExM,EAAQ,KAAE4hF,GAAc,EACjD,MAAMwpF,GAAe1mM,EAAAA,EAAAA,QAAuB,OACrC1rB,EAAM6D,IAAWrd,EAAAA,EAAAA,UAASxB,EAAAA,EAAAA,SAAAA,SAC1BuV,EAAG2rG,IAAQ1/G,EAAAA,EAAAA,UAASxB,EAAAA,EAAAA,SAAAA,IACpBs4E,EAAG83J,IAAQ5uO,EAAAA,EAAAA,UAASxB,EAAAA,EAAAA,SAAAA,GACrB2P,EAAUT,IAEVmhO,EAAcr1N,EAAOs1N,EAAAA,EAAsBC,EAAAA,EAC3CC,EAAoB,aAAT5sF,EAAsB6sF,EAAAA,EAAa7yC,EAAAA,EAC9C8qC,EAAkB,aAAT9kF,EAAsB,WAAa,YAMlDvwI,EAAAA,EAAAA,YAAU,KACRrT,EAAAA,EAAAA,SAAoB,CAAEuV,IAAG+iE,IAAGogH,OAAQ19K,EAAM,GACzC,CAACA,EAAMzF,EAAG+iE,IAEb,MAAMo4J,GAAWt3I,EAAAA,EAAAA,UACf,KACE4uF,EAAAA,EAAAA,WAAS,KACP,MAAM79J,EAAOijN,EAAavwN,QACrBsN,IAILwmN,EAAkBxmN,EAAM,aACxBwmN,EAAkBxmN,EAAM,aACxBwmN,EAAkB1hO,SAAU,aAC5B0hO,EAAkBxmN,EAAM,WACxBwmN,EAAkBxmN,EAAM,SAAQ,GAC/B,MACL,KAIF9W,EAAAA,EAAAA,YAAU,IAAMq9N,KAAY,CAACA,KAG7Br9N,EAAAA,EAAAA,YAAU,KACRC,OAAOC,iBAAiB,SAAUm9N,GAC3B,KACLp9N,OAAOouE,oBAAoB,SAAUgvJ,EAAS,IAE/C,CAACA,IAEJ,MAAMC,EAAoB,CAACxmN,EAAiCymN,KAC1D,MAAMC,EAAa5hO,SAAS6hO,YAAY,eACxCD,EAAWE,UAAUH,GAAW,GAAM,GACtCzmN,EAAK6mN,cAAcH,EAAW,EAGhC,OAAIlkO,EAAAA,EAAAA,SAAkBC,EAAAA,GAAAA,UAAiBD,EAAAA,EAAAA,SAAkBC,EAAAA,GAAAA,SAAgBD,EAAAA,EAAAA,SAAkBC,EAAAA,GAAAA,SAClF,iCAEP,gBAAC,IAAS,CAAC05N,OAAO,QAAQyH,OAAO,OAAOkD,OA9CA,CAAC92N,EAAGzX,KAC5Cw+G,EAAKx+G,EAAK6S,GACV66N,EAAK1tO,EAAK41E,EAAE,EA4CgD44J,gBAAiB,CAAE37N,IAAG+iE,MAChF,gBAAC,IAAK,CAAC1oE,UAAWD,EAAQsgO,kBAAmBlsO,QAAM,GACjD,gBAAC,IAAG,CAAC6L,UAAU,OAAOuhO,cAAe,IAAMtyN,GAASiI,IAASA,IAAM+gB,IAAKulM,GACtE,gBAAC,IAAG,CAACx9N,UAAWD,EAAQ+4N,QACtB,gBAAC8H,EAAQ,CAACxvO,MAAM,YAAY4O,UAAWD,EAAQk2G,KAAMzlH,GAAI,CAAEmP,QAAS,SACpE,gBAAC,IAAU,CAAC4wE,SAAU,EAAGn/E,MAAM,aAC5B0nO,GAEH,gBAAC,IAAM,CACL,aAAW,wCACX3nO,QAAQ,OACRJ,KAAK,QACLiP,UAAWD,EAAQugO,kBAGjB,gBAACG,EAAW,CACVzgO,UAAWD,EAAQk2G,KACnB7kH,MAAM,YACNgS,QAAS,IAAM6L,GAASiI,IAASA,IACjC6nN,WAAY,IAAM9vN,GAASiI,IAASA,SAM9C,gBAAC,IAAQ,CAACC,GAAI/L,EAAMpL,UAAWD,EAAQwgO,UACpCnuK,EAAShnD,KAKpB,+DCpJO,MAAMo2N,GAAcC,WAAAA,IAAYjiO,IAAY,CACjDE,KAAM,CACJ02B,gBAAiB52B,EAAMy+D,QAAQ49G,WAAWovB,OAE5Cy2B,IAAK,CACHp2C,WAAY,OACZl1J,gBAAiB52B,EAAMy+D,QAAQ3wD,QAAQ4gJ,SANhBuzE,CAQvBE,EAAAA,iKCFG,MAAMtrF,EAAc,IAAI5/H,EAAAA,EAQxB,SAASmrN,IAAoC,MAClD,MAAOn6F,EAAQo6F,IAAajwO,EAAAA,EAAAA,UAAwB,MAOpD,IANA6R,EAAAA,EAAAA,YAAU,IACD4yI,EAAY1/H,WAAWxe,IAC5B0pO,EAAU1pO,EAAE,KAEb,IAEY,OAAXsvI,EACF,OAAO,iCAaT,MAAM34G,EAAsE,CAC1EwvC,KAAMwjK,EACN30B,OAAQ40B,GAGV,IAAIC,EAAgBC,EAQpB,OAPkB,QAAd,EAAAx6F,EAAOx4B,eAAO,OAAd,EAAgBzzG,MAAQ,CAAC,OAAQ,UAAU3H,SAAS4zI,EAAOx4B,QAAQzzG,QACrEwmO,EAAgBlzM,EAAM24G,EAAOx4B,QAAQzzG,OAOrC,gBAAC,IAAK,CAAC4P,MAAM,EAAMC,QAxBrB,WAAuB,MACN,OAAXo8H,IACA,CAAC,OAAQ,UAAU5zI,UAAuB,QAAd,EAAA4zI,EAAOx4B,eAAO,aAAd,EAAgBzzG,OAAQ,IACtDisI,EAAOjgG,QAAQ,IAEfigG,EAAOjgG,SAAQ,GAEjBq6L,EAAU,MACZ,GAiBI,2BACE,gBAAC,IAAU,KAAEp6F,EAAOngD,MAEtB,gBAAC06I,EAAa,CAACv6F,OAAQA,EAAQjgG,QAVlB/lC,IACfgmI,EAAOjgG,QAAQ/lC,GACfogO,EAAU,KAAK,IAWnB,CAOA,SAASI,EAAkB,GAAgD,IAAhD,QAAEz6L,GAAwB,EAInD,OACE,gCACE,uBAAKp1C,MAAO,CAAEzB,QAAS,OAAQM,eAAgB,SAAUga,WAAY,SAAUwjN,WAAY,SACzF,gBAAC,IAAM,CAACr8N,MAAO,CAAEu0E,YAAa,QAAUvjE,QANlC,IAAYokC,GAAQ,IAM4B,OAGtD,gBAAC,IAAM,CAACpkC,QARH,IAAYokC,GAAQ,IAQJ,OAI7B,CAEA,SAASs6L,EAAe,GAAgD,IAAhD,QAAEt6L,GAAwB,EAChD,MAAO/lC,EAAOmzB,IAAYhjC,EAAAA,EAAAA,UAAS,IAE7BswO,EAAS,IAAY16L,EAAQ/lC,GAenC,OACE,gCACE,uBAAKrP,MAAO,CAAEzB,QAAS,OAAQsa,WAAY,SAAUwjN,WAAY,SAC/D,gBAAC,IAAS,CACRr+M,WAAS,EACT3O,MAAOA,EACP0gO,QAnBSrtM,IACfF,EAASE,EAAMK,OAAO1zB,MAAM,EAmBtB61B,UAhBWxC,IACjBA,EAAMojJ,kBAEFpjJ,EAAMxgC,MAAQqyB,EAAAA,EAAAA,QAChBmO,EAAMyC,iBACN2qM,IACF,EAWM9vO,MAAO,CAAEwoL,KAAM,YACfjjJ,WAAY,CACV8I,aAAc,gBAAC,IAAM,CAACr9B,QAAS8+N,GAAQ,eAMnD,CAEA,SAASH,EAAiB,GAAwD,YAAxD,OAAEt6F,EAAM,QAAEjgG,GAAwB,EAC1D,MAAO/lC,EAAOmzB,IAAYhjC,EAAAA,EAAAA,UAAS,IAoBnC,OAAKgpD,MAAMyK,QAAsB,QAAf,EAACoiF,EAAOx4B,eAAO,aAAd,EAAgBK,SAKjC,gCACE,uBAAKl9G,MAAO,CAAEzB,QAAS,OAAQsa,WAAY,SAAUwjN,WAAY,SAC/D,gBAAC,IAAM,CAAC55L,SAvBIC,IAChBF,EAASE,EAAMK,OAAO1zB,MAAM,EAsBIA,MAAOA,EAAOrP,MAAO,CAAEwoL,KAAM,aAnB7CtrE,KAChB,MAAM96G,EAAgC,GACtC,IAAK,MAAMqB,KAAKy5G,EACd96G,EAAQuO,KACN,gBAAC,IAAQ,CAACzO,IAAKuB,EAAG4L,MAAO5L,GACtBA,IAIP,OAAOrB,CAAO,EAWP4tO,EAAuB,QAAd,EAAA36F,EAAOx4B,eAAO,aAAd,EAAgBK,UAAW,KAEvC,gBAAC,IAAM,CAAClsG,QA5BC,IAAYokC,EAAQ/lC,GA4BJiK,SAAoB,KAAVjK,GAAc,aAT9C,gBAAC,IAAU,KAAC,mDAevB,wRC9IO,IAAI6vN,GAAe,EAEnB,SAASwB,IACdxB,GAAe,CACjB,CAQO,SAAS+Q,EAAa,GAAkE,IAAlE,UAAEhyI,EAAS,UAAEqgI,EAAS,WAAEG,GAAoB,EAkBvE,OAZAzgO,EAAAA,EAAAA,iBAA4B,GAE5BqT,EAAAA,EAAAA,YAAU,MACRumL,EAAAA,EAAAA,MACGjmG,MAAMvvF,IACL,MACMuC,EAAY,sBADAuC,KAAKguB,MAAMh3B,KAAK0Z,MAAQ,aAE1CsiK,EAAAA,EAAAA,IAASv1K,EAAUvC,EAAQ,IAE5BwvF,OAAO5nB,GAAQ3zD,QAAQC,MAAM0zD,IAAK,GACpC,IAGD,gBAAC,IAAG,CAAC5rE,GAAI,CAAEmP,QAAS,WAAYu7D,UAAW,QAAS5pE,SAAU,SAAU46L,UAAW,eACjF,gBAAC,IAAU,CAAC/6L,QAAQ,MAAK,2BACzB,gBAAC,IAAU,KAAC,+LAIZ,gBAAC,IAAU,KAAC,yDACZ,gBAAC,IAAU,KACT,gBAAC,IAAI,CAACgG,MAAMu5N,aAAS,EAATA,EAAW4R,WAAYC,EAAAA,EAAaptM,OAAO,UAAS,4BAIlE,gBAAC,IAAU,KACT,gBAAC,IAAI,CAACh+B,KAAK,sCAAsCg+B,OAAO,UAAS,uBAInE,gBAAC,IAAU,KACT,gBAAC,IAAI,CAACh+B,KAAK,6BAA6Bg+B,OAAO,UAAS,gDAI1D,gBAAC,IAAU,KAAC,kCACZ,2BACA,2BACA,gBAAC,IAAU,KAAC,wFACZ,gBAAC,IAAW,CAAC3kC,GAAI,CAAEuD,GAAI,IACrB,gBAAC,IAAO,CAACmX,MAAM,8IACb,gBAAC,IAAM,CAAC9H,QA9ChB,WACMytN,GAAYA,IAChBS,GAAe,EACfv0N,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,SAChB,EA0CkC29E,UAAW,gBAAC,IAAiB,OAAK,0BAI9D,gBAAC,IAAe,CAACvpF,MAAM,UAAUkgG,YAAajB,IAC9C,gBAAC,IAAgB,CAACj/F,MAAM,WAGzBs/N,GACC,gBAAC,IAAK,CAAClgO,GAAI,CAAEU,GAAI,EAAGkD,GAAI,EAAGi6G,GAAI,EAAG95G,GAAI,IACpC,gBAAC,IAAU,CAACpD,QAAQ,MAAMu/N,EAAUxlN,OACpC,gBAAC,IAAG,CAAC1a,GAAI,CAAEuD,GAAI,IACb,gBAAC,IAAS,CACRihC,MAAM,kBACNvzB,MAAOivN,EAAUnhE,KACjBp+J,QAAQ,WACRC,MAAM,YACNutL,WAAS,EACT/vF,WAAS,EACT5hF,KAAM,GACN6qB,YAAY,EACZrnC,GAAI,CAAE,2BAA4B,CAAEY,MAAOhB,EAAAA,EAAAA,MAAAA,eAG/C,gBAAC,IAAO,CAAC8a,MAAM,kEACb,gBAAC,IAAM,CACL8L,UAAWmjL,EAAAA,EACXx/G,UAAW,gBAAC,IAAU,MACtBvpF,MAAM,OACNZ,GAAI,CAAEU,GAAI,GACViG,KAAMu5N,EAAU4R,UAAYC,EAAAA,EAC5BptM,OAAQ,UACT,4BAQb,iGC5GA,MAAM71B,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACXipB,WAAY,CACVt3B,MAAOoO,EAAM62B,OAAOtmB,SAKnB,SAASyyN,EAAW,GAAqE,IAArE,WAAE95M,GAA6C,EACxE,MAAM3oB,EAAUT,IAChB,OACE,wBAAMU,UAAWD,EAAQ2oB,YACA,iBAAfA,GAA0B1Y,EAAAA,EAAAA,IAAiB0Y,GAAcA,EAGvE,sFCjBO,SAAS+5M,EAAe,GAA4D,IAA5D,WAAE/5M,GAAoC,EACnE,OAAO,gBAAC,IAAU,CAACA,WAAa,IAAE1Y,EAAAA,EAAAA,IAAiB0Y,YACrD,yICUO,MAAMsjF,EAAa,CACxB02H,IAAK,EACLC,QAAS,EACTC,MAAO,EACPC,UAAW,GAWN,SAASC,EAAen4N,GAK7B,SAASo4N,EAAcjsO,GACrB,MAAMotJ,EAAYptJ,aAAahC,EAAAA,GAAUgC,EAAEovC,kBACrC1qC,EAAOmP,EAAMohG,WACnB,OAAQvwG,GACN,KAAKwwG,EAAW02H,IACd,OAAO,EACT,KAAK12H,EAAW22H,QACd,MAAsB,SAAf7rO,EAAEqvC,WAAwB+9G,EACnC,KAAKl4C,EAAW42H,MACd,OAAO1+E,GAAaptJ,aAAayF,EAAAA,GAAgC,SAAfzF,EAAEqvC,SACtD,KAAK6lE,EAAW62H,UACd,OAAO3+E,GAAaptJ,aAAayF,EAAAA,EACnC,QAEE,OADAkM,QAAQgd,KAAM,8DAA6DjqB,MACpE,EAEb,CAEA,MAAMuqC,EAAU,GAChB,IAAK,MAAMX,KAAU7tC,EAAAA,EAAAA,MAAgBpE,MAAK,CAACC,EAAGC,IAAMD,EAAE+yC,SAAS95B,cAAchZ,EAAE8yC,YACzE48L,EAAc39L,IAChBW,EAAQhjC,KACN,gBAAC,IAAQ,CAACzO,IAAK8wC,EAAOe,SAAU1kC,MAAO2jC,EAAOe,UAC3Cf,EAAOe,WAMhB,OACE,gBAAC,IAAM,CACLvO,eACE,gBAAC,IAAM,CAACx0B,QAASuH,EAAMkhG,SAAUngG,UAAWf,EAAM+E,aAAa,OAIjElf,GAAI,CAAEwa,GAAI,GACVvJ,MAAOkJ,EAAMlJ,MACbozB,SAAUlqB,EAAMkqB,UAEfkR,EAGP,qJCjEA,MAAMzmC,GAAYC,EAAAA,EAAAA,IAAW,KAAM,CACjCyjO,SAAU,CAERlF,OAAS,GAAEP,EAAAA,GAAmB,iBAE9B,mBAAoB,CAClB1jM,UAAW,eAKV,SAASopM,EAAiBt4N,GAC/B,MAAM5K,EAAUT,IAChB,OACE,gBAAC,KAAE,CACD+uN,OAAK,EACL6U,SAAU,EACVC,aAAc,CAAEC,WAAY,QAASC,SAAU,UAC/CC,iBAAkB,IAClBvjO,QAAS,CAAEwjO,cAAexjO,EAAQijO,WAEjCr4N,EAAMynD,SAGb,CAEO,MAAM6oB,EAAiB,IAAIxkE,EAAAA,EAE3B,SAAS+sN,IACd,MAAM,gBAAEC,EAAe,cAAEC,IAAkBC,EAAAA,EAAAA,MAY3C,OAVAlgO,EAAAA,EAAAA,YAAU,IACRw3E,EAAetkE,WAAU,CAAC7f,EAAG3F,EAASyxF,KACpC,MAAMxjF,EAAKqkO,EAAgB,gBAAC,IAAK,CAACG,SAAUzyO,GAAU2F,GAAY,CAChEtC,QAAS,CAACgY,EAAGxa,IAAM,gBAAC,IAAK,CAACsC,IAAKkY,GAAIxa,GACnCb,QAASA,EACTmyO,iBAAkB1gJ,EAClBx/E,QAAS,IAAMsgO,EAActkO,IAC7B,MAGC,gCACT,uHC3CO,SAASykO,EAAgB,GAID,IAJC,MAC9BzyO,EAAQ,UAAS,eACjB0yO,GAAiB,EAAK,YACtBxyI,GACO,EACP,MAAOqpI,EAAaC,IAAkBhpO,EAAAA,EAAAA,WAAS,GAuB/C,OACE,gCACE,gBAAC,IAAO,CAACsZ,MAAM,sFACb,gBAAC,IAAM,CAACyvE,UAAW,gBAAC,IAAc,MAAKvpF,MAAOA,EAAOgS,QAxB3D,WACM0gO,EACFxyI,IAEAspI,GAAe,EAEnB,GAkBuF,eAInF,gBAAC,IAAiB,CAChBtvN,UAAWgmF,EACXlmF,KAAMuvN,EACNtvN,QAAS,IAAMuvN,GAAe,GAC9BpvN,iBAAkB,gBAAC,IAAU,CAACpZ,MAAO,CAAE6R,WAAY,aAxB5B,4aAyBvBotF,iBAAkB,gBAAC,IAAM,CAACjuF,QAAS,IAAMw3N,GAAe,IAAQ,YAIxE,0EChDO,SAASmJ,EAAYp5N,GAC1B,OACE,gBAAC,IAAK,CAACS,KAAMT,EAAMS,KAAMC,QAASV,EAAMU,SACrCV,EAAMynD,SAGb,iICMO,SAAS4xK,EAAiB,GAOM,IAPN,IAC/B7tN,EAAG,IACHkE,EAAG,QACHpN,EAAO,UACP+jE,EAAS,SACTv7C,EAAQ,MACRrkC,GACe,EACf,MAAMurE,EACJ,gBAAC,IAAU,CAACnsE,GAAI,CAAE8uC,UAAW,UAC3B,8BAAQ,aAAkB,KACzB9S,EAAAA,EAAAA,IAAUvf,GAAS,OAAIuf,EAAAA,EAAAA,IAAUnS,EAAMlE,GACxC,2BACA,8BAAQ,cAAmB,KAC1BqW,EAAAA,EAAAA,IAAUwkD,GAAW,KAAGv7C,EAASnsB,QAAQ,GAAG,MAIjD,OACE,gBAAC,IAAO,CAAC4B,MAAOyxD,GACd,gBAAC,IAAc,CACbxrE,QAAQ,cACRsQ,MAAOg0B,EACPjlC,GAAI,CACF4lC,gBAAiB,UACjB,uCAAwC,CACtCA,gBAAiBhlC,MAM7B,CAEO,SAAS6yO,EAA0B,GAAyE,IAAvExuM,SAAU3R,EAAK,MAAE1yB,GAAgC,EAC3F,MAAM2O,GAAUT,EAAAA,EAAAA,MAChB,OACE,gBAAC,IAAS,CACR0X,UAAU,KACVmnE,MAAM,MACNl7C,QAAS,EACTljC,QAAS,CAAEL,KAAMK,EAAQogG,UACzB/tG,MAAO,CAAE6kC,cAAe,MAAO+G,SAAU,WAAY+7J,IAAK,SAE1D,gBAACiqC,EAAgB,CACf7tN,IAAK2N,EAAMuiJ,eACXhsJ,IAAKyJ,EAAMwiJ,eACXr5J,QAAS6W,EAAM0iJ,kBACfx1F,UAAWltD,EAAM2iJ,oBACjBhxI,SAAU3R,EAAM2R,SAChBrkC,MAAOA,IAIf,sHCvDO,MAAM8yO,EAAW,IAAiE,IAAhE,KAAE3tO,EAAI,MAAEnF,EAAK,SAAEghE,EAAQ,KAAEt/D,GAAc,EAC9D,MAAMiN,GAAUT,EAAAA,EAAAA,MAEhB,IAAI9K,EAAU,GAWd,OAVI1B,SACmB0S,IAAjB1S,EAAK0B,QACPA,EAAU1B,EAAK0B,aACSgR,IAAf1S,EAAK2D,YAAoC+O,IAAb1S,EAAK6K,IAC1CnJ,EAAW,IAAE+iO,EAAAA,EAAAA,IAAYzkO,EAAK2D,YAAW+1B,EAAAA,EAAAA,IAAU15B,EAAK6K,iBAChC6H,IAAf1S,EAAK2D,YAAoC+O,IAAb1S,EAAK6K,MAC1CnJ,EAAW,IAAE+iO,EAAAA,EAAAA,IAAYzkO,EAAK2D,WAKhC,gBAAC,IAAQ,KACP,gBAAC,IAAS,CAACsJ,QAAS,CAAEL,KAAMK,EAAQogG,WAClC,gBAAC,IAAU,CAAC/tG,MAAO,CAAEhB,MAAOA,IAAUmF,IAExC,gBAAC,IAAS,CAAC4iE,MAAM,QAAQp5D,QAAS,CAAEL,KAAMK,EAAQogG,WAC/C3rG,GAAW,gBAAC,IAAU,CAACpC,MAAO,CAAEhB,MAAOA,IAAUoD,GACjD49D,GAEM,uHC7BR,SAAS+xK,EAAW,GAAmD,IAAnD,KAAEn3N,EAAI,MAAE9B,EAAK,KAAE21M,GAAc,EACtD,MAAMvxI,EAAIuxI,EAAOujB,EAAAA,EAAWC,EAAAA,EAC5B,OACE,gCACGn5N,GAAS,gBAAC,IAAU,KAAEA,GACvB,gBAACokE,EAAC,CAACv+E,KAAK,QAAQ4O,QAAQ,QACtB,gBAAC,IAAS,KACPqN,EAAKja,KAAI,CAACkhL,EAAwBp+K,IACjC,gBAAC,IAAQ,CAACvB,IAAKuB,GACZo+K,EAAIlhL,KAAI,CAAC4/K,EAAuB98K,IAC/B,gBAAC,IAAS,CAACvB,IAAKuB,EAAGsjE,MAAa,IAANtjE,EAAU,QAAU,QAC5C,gBAAC,IAAU,CAACyuO,QAAM,GAAE3xD,WAStC,iUC7BA,MAAMrzK,GAAYC,WAAAA,GAAW,CAC3BG,KAAM,CACJgwE,aAAc,QAEhB60J,MAAO,CACLzyO,MAAO,SAIE+9E,EAAuCllE,GAEhD,gBAAC,IAAY,KACPA,EAAK,CACT5K,QAAS,CACPL,KAAMJ,IAAYI,QACfiL,EAAM5K,YAMJskO,EAA+B15N,GAExC,gBAAC,IAAQ,KACHA,EAAK,CACT5K,QAAS,CACPL,KAAMJ,IAAYilO,SACf55N,EAAM5K,uJChBV,SAASquN,EAA0BzjN,GACxC,MAAMnL,GAAQ4tF,EAAAA,EAAAA,MACR,MAAEzxE,EAAK,KAAE1Y,EAAI,YAAE4qN,EAAW,aAAEG,GAAiBrjN,EAkBnD,OACE,gBAAC,IAAG,CAACna,GAAI,CAAE6rL,WAAY,EAAGlxK,GAAI,MAC5B,gBAAC,IAAU,CAAC/H,QAlBoB0xB,IAClCk5L,EAAal5L,EAAO,EAAE,EAiB6BppB,SAAmB,IAATzI,GACpC,QAApBzD,EAAMg9K,UAAsB,gBAAC,IAAY,MAAM,gBAAC,IAAa,OAEhE,gBAAC,IAAU,CAACp5K,QAjBe0xB,IAC7Bk5L,EAAal5L,EAAO7xB,EAAO,EAAE,EAgBiByI,SAAmB,IAATzI,GAC/B,QAApBzD,EAAMg9K,UAAsB,gBAAC,IAAkB,MAAM,gBAAC,IAAiB,OAE1E,gBAAC,IAAU,CAACp5K,QAhBe0xB,IAC7Bk5L,EAAal5L,EAAO7xB,EAAO,EAAE,EAeiByI,SAAUzI,GAAQ3J,KAAKmkB,KAAK9B,EAAQkyM,GAAe,GACxE,QAApBruN,EAAMg9K,UAAsB,gBAAC,IAAiB,MAAM,gBAAC,IAAkB,OAE1E,gBAAC,IAAU,CAACp5K,QAfmB0xB,IACjCk5L,EAAal5L,EAAOx7B,KAAK+gB,IAAI,EAAG/gB,KAAKmkB,KAAK9B,EAAQkyM,GAAe,GAAG,EAclBniN,SAAUzI,GAAQ3J,KAAKmkB,KAAK9B,EAAQkyM,GAAe,GAC5E,QAApBruN,EAAMg9K,UAAsB,gBAAC,IAAa,MAAM,gBAAC,IAAY,OAItE,uHCvCA,MAAMl9K,GAAYC,EAAAA,EAAAA,IAAYC,IAC5BC,EAAAA,EAAAA,GAAa,CACX+6B,OAAQ,CACNppC,MAAOoO,EAAM62B,OAAOkhF,MACpBvzG,WAAY,MACZC,WAAY,MACZ8U,OAAQ,eAKd,SAAS6I,EAAKjX,GACZ,MAAM5K,EAAUT,IAChB,OAAIqL,EAAMmT,OAASnT,EAAM8vB,YAErB,gBAAC,IAAO,CAACvvB,MAAO,gBAAC,IAAU,KAAEP,EAAMmT,OACjC,wBAAM1a,QAAS,IAAMuH,EAAM+vB,SAAS/vB,EAAMmT,MAAO9d,UAAWD,EAAQy6B,QACjE7vB,EAAMmT,KAAK,KAKb,4BAAOnT,EAAMmT,KAAK,GAC3B,CAOO,SAAS0mN,EAAS75N,GAEvB,OACE,gCACI,gBAAC,IAAU,CAACna,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,oCACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,uEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,4EACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,wCAAoC,gBAAC2d,EAAI,CAAC8Y,SAAU/vB,EAAM+vB,SAAUD,YAAa9vB,EAAM8vB,YAAa3c,KAAMpkB,EAAAA,SAAAA,WAAqB,mCACtL,gBAAC,IAAU,CAAClJ,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,wEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,yDAAmD,gBAAC2d,EAAI,CAAC8Y,SAAU/vB,EAAM+vB,SAAUD,YAAa9vB,EAAM8vB,YAAa3c,KAAMpkB,EAAAA,SAAAA,YAAsB,eACtM,gBAAC,IAAU,CAAClJ,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,qBAAiB,gBAAC2d,EAAI,CAAC8Y,SAAU/vB,EAAM+vB,SAAUD,YAAa9vB,EAAM8vB,YAAa3c,KAAMpkB,EAAAA,SAAAA,WAAqB,qDACnK,gBAAC,IAAU,CAAClJ,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,kEAA6D,gBAAC2d,EAAI,CAAC8Y,SAAU/vB,EAAM+vB,SAAUD,YAAa9vB,EAAM8vB,YAAa3c,KAAMpkB,EAAAA,SAAAA,YAC1L,gBAAC,IAAU,CAAClJ,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,qEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,oEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,kEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,kEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,sEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,wEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,6BAAyB,gBAAC2d,EAAI,CAAC8Y,SAAU/vB,EAAM+vB,SAAUD,YAAa9vB,EAAM8vB,YAAa3c,KAAMpkB,EAAAA,SAAAA,QAAkB,+CACxK,gBAAC,IAAU,CAAClJ,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,0EACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,iEAA4D,gBAAC2d,EAAI,CAAC8Y,SAAU/vB,EAAM+vB,SAAUD,YAAa9vB,EAAM8vB,YAAa3c,KAAMpkB,EAAAA,SAAAA,SAAmB,QAC5M,gBAAC,IAAU,CAAClJ,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,wEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,uEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,mEACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,8BACvD,gBAAC,IAAU,CAACzT,GAAI,CAACwT,WAAY,MAAMC,WAAY,QAAQ,4BAG/D,wEClEO,SAAS8G,EAAY05N,GAC1B,MAAO19I,EAAI3tD,IAAexnC,EAAAA,EAAAA,WAAS,GAE7BkZ,GAAW2oG,EAAAA,EAAAA,cAAY,IAAMr6E,GAAaliB,IAASA,KAAM,IAQ/D,OANAzT,EAAAA,EAAAA,YAAU,KACR,IAAKghO,EAAkB,OACvB,MAAMC,EAAa5nO,YAAYgO,EAAU25N,GACzC,MAAO,IAAMt1N,cAAcu1N,EAAW,GACrC,CAAC55N,EAAU25N,IAEP35N,CACT,CAEO,SAASw0F,IAAiC,IAAtBpN,EAAe,UAAH,8CACrC,MAAOzwF,EAAOmzB,IAAYhjC,EAAAA,EAAAA,UAASsgG,GAE7BoqI,GAAS7oH,EAAAA,EAAAA,cAAY,KACzB7+E,GAAU1d,IAASA,GAAI,GACtB,IAEGwmC,GAAK+1D,EAAAA,EAAAA,cAAY,KACrB7+E,GAAS,EAAK,GACb,IAEGwqE,GAAMqU,EAAAA,EAAAA,cAAY,KACtB7+E,GAAS,EAAM,GACd,IAEH,MAAO,CAACnzB,EAAO,CAAE66N,SAAQ5+K,KAAI0hD,OAC/B,gCCxBO,IAAKulI,EA6BAC,6BAFX,SA3BWD,GAAAA,EAAU,+BAAVA,EAAU,8BAAVA,EAAU,0BAAVA,EAAU,YAAVA,EAAU,0BAAVA,EAAU,+BAAVA,EAAU,cAAVA,EAAU,oBAAVA,EAAU,YAAVA,EAAU,kBAAVA,EAAU,wBAAVA,EAAU,kBAAVA,EAAU,oBAAVA,EAAU,kBAAVA,EAAU,cAAVA,EAAU,2BAAVA,EAAU,oBAAVA,EAAU,gBAAVA,EAAU,8BAAVA,EAAU,YAAVA,EAAU,6CAAVA,EAAU,kBAAVA,EAAU,2BAAVA,EAAU,oBAAVA,EAAU,4BAAVA,EAAU,6BA2BrB,CA3BWA,IAAAA,EAAU,KAyCtB,SAZYC,GAAAA,EAAW,oBAAXA,EAAW,4BAAXA,EAAW,UAAXA,EAAW,kBAAXA,EAAW,6CAAXA,EAAW,6BAAXA,EAAW,oBAAXA,EAAW,yBAYvB,CAZYA,IAAAA,EAAW,KAchB,MAAM5nO,EAAO,IAAK2nO,KAAeC,GA8ClCC,EAAc7rO,OAAOpC,OAAO+tO,GACrB13C,EAAgBhqL,GAAmC4hO,EAAYhxO,SAASoP,gaCrErF,MAAM+gK,EAAiB,IAAOpsK,EAAAA,EAAAA,cAqB9B,SAASktO,EAAQvvL,GACf,OAAO+tG,EAAAA,EAAAA,GAAa,CAClB/tG,EAAKptB,QAAU,GACb,gBAAC,IAAQ,CACP7zB,IAAI,OACJiC,KAAK,cACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,KACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKptB,QAAU67I,cAI3CzuH,EAAKntB,OAAS,GACZ,gBAAC,IAAQ,CACP9zB,IAAI,MACJiC,KAAK,eACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKntB,OAAS47I,cAI1CzuH,EAAKltB,OAAS,GACZ,gBAAC,IAAQ,CACP/zB,IAAI,MACJiC,KAAK,cACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKltB,OAAS27I,cAI1CzuH,EAAKjtB,OAAS,GACZ,gBAAC,IAAQ,CACPh0B,IAAI,MACJiC,KAAK,gBACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKjtB,OAAS07I,cAI1CzuH,EAAKhtB,OAAS,GACZ,gBAAC,IAAQ,CACPj0B,IAAI,MACJiC,KAAK,cACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKhtB,OAASy7I,cAI1CzuH,EAAK/sB,OAAS,GACZ,gBAAC,IAAQ,CACPl0B,IAAI,MACJiC,KAAK,eACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,IACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAK/sB,OAASw7I,eAK9C,CAoEO,SAAS+gE,KACdh6N,EAAAA,EAAAA,GAAYnT,EAAAA,EAAAA,eAEZ,IAAIotO,EAAsB,CACxB74H,QAAS,CACP6I,OAAQ,KACV,GACA9pG,MAAO,GACP+5N,SAAU,IAGZ,GAA2B,OAAvBjwO,EAAAA,GAAAA,YAEF,OADAurC,YAAW,IAAMxjC,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,YACxB,iCAGT,IAAIgmN,EAAAA,EAAAA,GAAYhuN,EAAAA,GAAAA,aAAqB,CACnC,MAAMisH,EAAQjsH,EAAAA,GAAAA,YAAAA,WACRkwO,EAAclwO,EAAAA,GAAAA,YAAAA,cAAmCisH,EAAMp5F,KAAQ,IAC/D8T,EAAQ3mC,EAAAA,GAAAA,YAAAA,WACR43B,EAAgBq0F,EAAM/tC,YAAYl+E,EAAAA,IACxCgwO,EAAW,CACT74H,QAAS,CACP6I,OAAQ,KACNj4G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,SAAe,CAAE9F,SAAUulH,EAAAA,EAAUJ,EAAAA,aAAAA,SACnDrnH,EAAAA,GAAAA,YAAkB,EAAK,EAEzBmwO,QAAS,KACPpoO,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,MACdhI,EAAAA,GAAAA,cAAqB,GAGzBkW,MAAQ,sBAAqB+1G,EAAMvuC,WAEnC/2C,MAAO,CACL,sBAAIrnC,IAAI,UACN,0BACE,gBAAC,IAAU,KAAC,oBAAiBsR,EAAAA,EAAAA,IAAcgnB,IAC3C,gBAAC,IAAU,KAAC,wBAGhB,gBAAC,IAAQ,CAACt4B,IAAI,QAAQiC,KAAK,SAASnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACzC,gBAAC,IAAU,KACT,gBAAC,IAAK,CAAC+f,MAAOwrB,EAAMxrB,cA5GVolC,EA+GE5Z,GA9Gf2nH,EAAAA,EAAAA,GAAa,CAClB/tG,EAAKptB,QAAU,GACb,gBAAC,IAAQ,CACP7zB,IAAI,OACJiC,KAAK,cACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,KACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKptB,cAIjCotB,EAAKntB,OAAS,GACZ,gBAAC,IAAQ,CACP9zB,IAAI,MACJiC,KAAK,eACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKntB,aAIjCmtB,EAAKltB,OAAS,GACZ,gBAAC,IAAQ,CACP/zB,IAAI,MACJiC,KAAK,cACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKltB,aAIjCktB,EAAKjtB,OAAS,GACZ,gBAAC,IAAQ,CACPh0B,IAAI,MACJiC,KAAK,gBACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKjtB,aAIjCitB,EAAKhtB,OAAS,GACZ,gBAAC,IAAQ,CACPj0B,IAAI,MACJiC,KAAK,cACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAKhtB,aAIjCgtB,EAAK/sB,OAAS,GACZ,gBAAC,IAAQ,CACPl0B,IAAI,MACJiC,KAAK,eACLnF,MAAOhB,EAAAA,EAAAA,MAAAA,IACP0C,KAAM,CACJ0B,QAAU,IAAEg4B,EAAAA,EAAAA,IAAU+oB,EAAK/sB,iBAuD/BiN,SAAU,CACRu7C,UAAWiwC,EAAMp5F,KAAO7yB,EAAAA,GAAAA,YAAAA,cACxBqyB,WAAY69M,GAGdD,SAAU,wBAEd,CAxHF,IAAsB1vL,EA0HpB,IAAI37C,EAAAA,EAAAA,IAAY5E,EAAAA,GAAAA,aAAqB,CACnC,MAAMytN,EAAYztN,EAAAA,GAAAA,YAElB,IAAIiwO,EAAW,GAEbA,EADExiB,EAAUhhD,QACD,uBAEA,qBAGb,MAAM6C,EAAQm+C,EAAUjhD,iBACxBwjE,EAAW,CACT74H,QAAS,CACP6I,OAAQ,KACNhgH,EAAAA,GAAAA,YAAkB,GAClB+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,KAAU,EAE1BmoO,QAAS,KACPpoO,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,MACdhI,EAAAA,GAAAA,cAAqB,GAGzBkW,MACE,gCAAE,qBACkB,yBAAIu3M,EAAUJ,WAAWJ,kBAI/CtmL,MAAO,CACL,gBAAC,IAAQ,CAACrnC,IAAI,YAAYiC,KAAK,aAAanF,MAAOhB,EAAAA,EAAAA,MAAAA,OACjD,gBAAC,IAAU,KACT,gBAAC,IAAK,CAAC+f,MAAOsyM,EAAUP,SAAS/xM,QAAS,KAAE,gBAAC,IAAS,CAACA,MAAOm0J,EAAMn0J,MAAQ6zJ,IAAkB,SAG/F8gE,EAAQxgE,IAEb7uI,SAAU,CACR2vM,QAAS3iB,EAAUvhD,aAAetpK,EAAAA,EAAAA,eAGpCqtO,SAAUA,EAEd,CAEA,IAAIhxJ,EAAAA,EAAAA,GAAoBj/E,EAAAA,GAAAA,aAAqB,CAC3C,MAAMguB,EAAShuB,EAAAA,GAAAA,YACTkwO,EAAcliN,EAAO2/L,cAAgB3/L,EAAO4/L,aAAgB,IAElEoiB,EAAW,CACT74H,QAAS,CACP6I,OAAQ,KACNhgH,EAAAA,GAAAA,YAAkB,GAClB+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,SAAc,EAE9BmoO,QAAS,KACPpoO,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,UACdhI,EAAAA,GAAAA,cAAqB,GAGzBkW,MACE,gCAAE,uCACoC,yBAAI8X,EAAO8vH,cAInDr9G,SAAU,CACR2vM,QAASpiN,EAAOk+I,aAAetpK,EAAAA,EAAAA,cAC/ByvB,WAAY69M,GAGdD,SAAU,wBACVI,YAAa,4EAEjB,CAEA,IAAI7hB,EAAAA,EAAAA,GAAexuN,EAAAA,GAAAA,aAAqB,CACtC,MAAMswO,EAAYtwO,EAAAA,GAAAA,YAElBgwO,EAAW,CACT74H,QAAS,CACP6I,OAAQ,KACNhgH,EAAAA,GAAAA,YAAkB,GAClB+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,SAAc,EAE9BmoO,QAAS,KACPpoO,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,UACdhI,EAAAA,GAAAA,cAAqB,GAGzBkW,MACE,gCAAE,yCACsC,yBAAIo6N,EAAU1vJ,eAIxDngD,SAAU,CACR2vM,QAASE,EAAUpkE,aAAetpK,EAAAA,EAAAA,cAClCyvB,WAAai+M,EAAU3iB,cAAgB2iB,EAAU1iB,aAAgB,KAGnEqiB,SAAU,gBACVI,YACE,gCAAE,iCAC8B,yBAAG,OAAO,2CAAwC,yBAAG,OAAO,gBAIlG,CAEA,IAAI59I,EAAAA,EAAAA,GAAczyF,EAAAA,GAAAA,aAAqB,CACrC,MAAMib,EAAUjb,EAAAA,GAAAA,YAAAA,aACXib,IACH+0N,EAAW,CACT74H,QAAS,CACP6I,OAAQ,IAAMj4G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAE9BkO,MACG,uBAAsBlW,EAAAA,GAAAA,YAAAA,aAAkC,4FAG3DiwO,SAAU,qBAId,MAAMp7N,EAAc,CAClB,CAACsiF,EAAAA,gBAAAA,SAA0B,iCAC3B,CAACA,EAAAA,gBAAAA,OAAwB,8BACzB,CAACA,EAAAA,gBAAAA,UAA2B,8BAGxBxuF,EAAM3I,EAAAA,GAAAA,YAAAA,cAEZgwO,EAAW,CACT74H,QAAS,CACP6I,OAAQ,KACNj4G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,QAAc,CAAEiT,YAC9Bjb,EAAAA,GAAAA,YAAkB,EAAK,EAEzBmwO,QAAS,KACPpoO,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,QAAc,CAAEiT,YAC9Bjb,EAAAA,GAAAA,cAAqB,GAGzBkW,MACE,gCAAE,qBACmBrB,EAAY7U,EAAAA,GAAAA,YAAAA,iBAAoC,QAAK,yBAAIib,EAAQ1Z,OAIxFsT,YACE,gCAAE,+BAC4B,gBAAC,IAAU,CAAC6e,WAAYzY,EAAQ9W,mBAAoB,KAChF,gBAAC,IAAc,CAACuvB,WAAY1zB,EAAAA,GAAAA,YAAAA,oBAAyCgvK,IAAkB,KAG3FroI,MAAOmpM,EAAQnnO,GACf83B,SAAU,CACR2vM,QAASpwO,EAAAA,GAAAA,YAAAA,aAAkC4C,EAAAA,EAAAA,eAG7CqtO,SAAU,oBAEd,CAEA,IAAIxpE,EAAAA,EAAAA,GAAczmK,EAAAA,GAAAA,aAAqB,CACrC,MAAMuwO,EAAOz9L,EAAAA,EAAU9yC,EAAAA,GAAAA,YAAAA,aACnBuwO,IACFP,EAAW,CACT74H,QAAS,CACP6I,OAAQ,IAAMj4G,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,WAE9BkO,MACG,uBAAsBlW,EAAAA,GAAAA,YAAAA,kFAGzBiwO,SAAU,qBAId,MAAMO,EAAaD,EAAKpsO,iBAElB6kC,EAAWhpC,EAAAA,GAAAA,KAAYA,EAAAA,GAAAA,YAAAA,aAC7B,IAAKgpC,EAAU,OAAO,iCACtB,MAAMrC,EAAQ3mC,EAAAA,GAAAA,YAAAA,aAAgCgpC,GAC9CgnM,EAAW,CACT74H,QAAS,CACP6I,OAAQ,KACNhgH,EAAAA,GAAAA,YAAkB,GAClB+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,IAAU,CAAE9F,SAAUulH,EAAAA,EAAU8oH,EAAKhvO,OAAQ,EAE7D4uO,QAAS,KACPnwO,EAAAA,GAAAA,eACA+H,EAAAA,EAAAA,OAAcC,EAAAA,GAAAA,IAAU,CAAE9F,SAAUulH,EAAAA,EAAU8oH,EAAKhvO,OAAQ,GAG/D2U,MACE,gCAAE,kCAC+B,yBAAI8yB,GAAa,OAAI,yBAAIhpC,EAAAA,GAAAA,YAAAA,cAI5D6U,YACE,gCAAE,+BAC4B,gBAAC,IAAU,CAAC6e,WAAY88M,KAGxD7pM,MAAO,CACL,gBAAC,IAAQ,CAACrnC,IAAI,QAAQiC,KAAK,QAAQnF,MAAOhB,EAAAA,EAAAA,MAAAA,OACxC,gBAAC,IAAU,KACT,gBAAC,IAAS,CAAC+f,MAAOwrB,EAAMxrB,MAAQ6zJ,MAGpC,gBAAC,IAAQ,CAAC1vK,IAAI,aAAaiC,KAAK,qBAAqBnF,MAAOhB,EAAAA,EAAAA,MAAAA,KAC1D,gBAAC,IAAU,KACT,gBAAC,IAAc,CAACs4B,WAAYiT,EAAMjT,WAAas7I,SAGhD8gE,EAAQnpM,IAEblG,SAAU,CACR2vM,QAASpwO,EAAAA,GAAAA,YAAAA,aAAkC4C,EAAAA,EAAAA,eAG7CqtO,SAAU,eAEd,CAEA,GAAuB,KAAnBD,EAAS95N,MACX,OAAO,iCAGT,MAAMu6N,EAC4B,iBAAzBT,EAASK,YACd,gBAAC,IAAU,KAAEL,EAASK,aAEtBL,EAASK,aAAe,iCAG5B,OACE,gBAAC,IAAS,CACR/zO,SAAS,KACTd,GAAI,CAAEG,QAAS,OAAQC,cAAe,SAAUK,eAAgB,SAAUc,OAAQ,uBAElF,gBAAC,IAAK,CAACvB,GAAI,CAAE2H,EAAG,EAAGzH,GAAI,IACrB,gBAAC,IAAU,CAACS,QAAQ,MAAM6zO,EAAS95N,OACnC,gBAAC,IAAU,KAAE85N,EAASn7N,aACrBm7N,EAASrpM,OACR,gBAAC,IAAK,CAACnrC,GAAI,CAAE+D,GAAI,IACf,gBAAC,IAAS,KAAEywO,EAASrpM,SAI3B,gBAAC,IAAK,CAACnrC,GAAI,CAAEE,GAAI,EAAGyH,EAAG,SACEqN,IAAtBw/N,EAASvvM,UACR,gBAAC,IAAG,CAACjlC,GAAI,CAAEE,GAAI,IACb,gBAAC,IAAG,CACFC,QAAQ,OACRH,GAAI,CACFib,oBAAsB,UAASzS,OAAOmY,KAAK6zN,EAASvvM,UAAUzhC,eAC9DlC,MAAO,OACP84F,aAAc,SACdtrD,UAAW,gBAGkB95B,IAA9Bw/N,EAASvvM,SAAS2vM,SACjB,gBAAC,IAAU,MAAE1vM,EAAAA,EAAAA,IAAiCsvM,EAASvvM,SAAS2vM,SAAS,iBAE1C5/N,IAAhCw/N,EAASvvM,SAASu7C,WACjB,gBAAC,IAAU,MAAEt7C,EAAAA,EAAAA,IAAiCsvM,EAASvvM,SAASu7C,WAAW,mBAE3CxrE,IAAjCw/N,EAASvvM,SAASpO,YACjB,gBAAC,IAAU,KAAE29M,EAASvvM,SAASpO,WAAW/d,QAAQ,GAAG,gBAGvB9D,IAAjCw/N,EAASvvM,SAASpO,YACjB,gBAAC,IAAW,CAACl2B,QAAQ,cAAcsQ,MAAOujO,EAASvvM,SAASpO,WAAYj2B,MAAM,aAKpF,gBAAC,IAAG,CAACT,QAAQ,OAAOH,GAAI,CAAEib,oBAAsB,UAASzS,OAAOmY,KAAK6zN,EAAS74H,SAASn4G,iBACpFgxO,EAASK,YACR,gBAAC,IAAO,CAACn6N,MAAOu6N,GACd,gBAAC,IAAM,CAACriO,QAAS4hO,EAAS74H,QAAQ6I,QAASgwH,EAASC,WAGtD,gBAAC,IAAM,CAAC7hO,QAAS4hO,EAAS74H,QAAQ6I,QAASgwH,EAASC,UAErDD,EAAS74H,QAAQg5H,SAChB,gBAAC,IAAM,CAAC/hO,QAAS4hO,EAAS74H,QAAQg5H,SAAS,sCAMvD,iYCphBA,MAAMO,EAAmB,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAErEC,EAAgBD,EAAiB3yO,KAAI,CAAC83E,EAAGh1E,IAAM0wB,WAAY,KAAQ,EAAJ1wB,KAG/D+vO,EAAqB,CAAC,KAAM,KAAM,KAAM,MACxCC,EAAqB,CAAC,MAAO,MAAO,MAAO,OAGjD,IAEEC,EACAC,EACAC,EACAC,EACAC,EACAC,EAPEC,EAAe,CAAC,EAClBC,EAAiB,CAAC,EASb,MAAMr0I,EAAsB,IAAIv7E,EAAAA,EAG1BmlF,EAAqB,IAAInlF,EAAAA,EAuBtC,SAAS6vN,EAActxF,GAA0F,IAAhEuxF,EAAyC,UAAH,6CAAG,CAAC,EAEzF,OADIn2O,EAAAA,EAAAA,yBAAiCm2O,EAAaC,aAAc,GACzD,IAAIC,KAAKC,aAAa,CAACt2O,EAAAA,EAAAA,OAAiB,MAAO,CACpDu2O,sBAAuBv2O,EAAAA,EAAAA,yBAAoC,EAAI4kJ,EAC/D4xF,sBAAuB5xF,KACpBuxF,GAEP,CAEA,SAASM,EACP7xF,GAGmB,IAFnB8xF,EAAa,UAAH,6CAAGV,EACbn3H,EAAoC,UAAH,6CAAG,CAAC,EAErC,OAAI63H,EAAW9xF,GAA0B8xF,EAAW9xF,GAC5C8xF,EAAW9xF,GAAoBsxF,EAActxF,EAAkB/lC,EACzE,CAGO,SAAS/f,EAAUr+E,GAAiC,IAAtBmkI,EAAmB,UAAH,6CAAG,EAEtD,GAAI16H,OAAOlN,MAAMyD,GAAI,MAAQ,MAAKm1N,EAAc,KAChD,MAAMe,EAAOztO,KAAKmlB,IAAI5N,GAGtB,GAAIk2N,IAAS59N,IAAU,MAAQ,GAAE0H,EAAI,EAAI,KAAO,MAAMm1N,EAAcgB,IAAI,KAGxE,GAAID,EAAO,IAAM,OAAOF,EAAa7xF,GAAkBvF,OAAO5+H,GAAKm1N,EAAc,GAGjF,MAAMiB,EAAc3tO,KAAK6c,IAAI7c,KAAKC,MAAM2sO,EAASa,GAAQZ,GAAgBH,EAAchyO,OAAS,GAMhG,OALA6c,GAAKo1N,EAAWgB,GAKTJ,EAAa7xF,GAAkBvF,OAAO5+H,GAAKm1N,EAAciB,EAClE,CAEA,SAASC,EAAkBr2N,GACzB,OAAOk1N,EAAqBt2F,OAAO5+H,GAAGs2N,mBACxC,CAGO,SAASvhO,EAAciL,GAAkD,IAAvCmkI,EAAmB,UAAH,6CAAG,EAAGG,EAAY,UAAH,6CAAG,IAEzE,GAAI76H,OAAOlN,MAAMyD,GAAI,MAAO,OAC5B,MAAMk2N,EAAOztO,KAAKmlB,IAAI5N,GAGtB,OAAW,IAAPk2N,GAAe59N,IAAiB0H,EAAI,EAAI,MAAQ,KAGhDk2N,GAAQ5xF,EAAkB,IAAM9N,EAAax2H,EAAGmkI,EAAkB,GAE/D6xF,EAAa7xF,EAAkBqxF,EAAgB,CAAEj0O,MAAO,YAAaq9I,OAAO5+H,EACrF,CAEO,SAASw2H,EAAax2H,GAAwE,IAA7DmkI,EAAmB,UAAH,6CAAG,EAAGC,EAAc,UAAH,6CAAG,IAAMpG,EAAY,UAAH,8CAEzF,GAAIv0H,OAAOlN,MAAMyD,GAAI,MAAO,MAC5B,MAAMk2N,EAAOztO,KAAKmlB,IAAI5N,GAGtB,GAAIk2N,IAAS59N,IAAU,OAAO0H,EAAI,EAAI,KAAO,IAG7C,GAAIk2N,EAAO9xF,EACT,OAAIpG,EAAkBi3F,EAAer2F,OAAO5+H,GACrCg2N,EAAa7xF,GAAkBvF,OAAO5+H,GAI/C,GAAIzgB,EAAAA,EAAAA,iBAA4B22O,GAAQ,KAAM,OAAOG,EAAkBr2N,GAGvE,IAAIo2N,EAAc3tO,KAAKC,MAAMD,KAAK8tO,MAAML,GAAQ,GAShD,OAPAl2N,GAAK80N,EAAcsB,GAGf3tO,KAAKmlB,IAAI5N,GAAGvH,QAAQ0rI,GAAkBhhJ,SAAWghJ,EAAmB,GAAK0wF,EAAiBuB,EAAc,KAC1GA,GAAe,EACfp2N,EAAIA,EAAI,GAAK,EAAI,GAEZg2N,EAAa7xF,GAAkBvF,OAAO5+H,GAAK60N,EAAiBuB,EACrE,CA3GAj1I,EAAoBr7E,WAAU,KAE5ByvN,EAAe,CAAC,EAChBC,EAAiB,CAAC,EAClBN,EAAuBO,EAAc,EAAG,CAAEe,SAAUj3O,EAAAA,EAAAA,uBAAkC,cAAgB,eACtG01O,EAAiB,IAAIW,KAAKC,aAAa,CAACt2O,EAAAA,EAAAA,OAAiB,MAAO,CAAEo2O,aAAcp2O,EAAAA,EAAAA,0BAC/E41O,EAAeE,EAAUC,GAAiB/1O,EAAAA,EAAAA,cAEvC,CAACy1O,EAAoBvsO,KAAKsqG,KAAM,IAEhC,CAACgiI,EAAoBtsO,KAAK8tO,MAAO,GACrCnB,EAAaD,EAAcjzO,KAAI,CAAC83E,EAAGh1E,KAAOzF,EAAAA,EAAAA,cAAyB,KAAO,MAASyF,IAGnF+lG,EAAmB68H,OAEnBl/I,EAAAA,GAAAA,MAAkB,IA8Fb,MAAM9uE,EAAuB,SAACoG,GAAoC,IAAzBmkI,EAAmB,UAAH,6CAAG,EACjE,OAAO3N,EAAax2H,EAAGmkI,EAAkB,KAC3C,EACa9nD,EAAcziF,EAGdohB,EAAmBhb,GAAcw2H,EAAax2H,GAC9C2b,EAAYX,EACZ2vM,EAAe3vM,EACf7b,EAAmB6b,EACnBiO,EAAmBjO,EACnB6mH,EAAiB7mH,EACjBkB,EAAgBlB,EAChB2kD,EAA0B3kD,EAG1BiyC,EAAiBjtD,GAAcw2H,EAAax2H,EAAG,GAG/Cs4F,EAAat4F,GAAcw2H,EAAax2H,EAAG,EAAG,KAAM,GACpDmyJ,EAAqB75D,EACrBzxC,EAAeyxC,EAGf+6D,EAAYrzJ,GAAcw2H,EAAax2H,EAAG,EAAG,KAAK,GAClDw4G,EAAgB66C,EAGhBqzD,EAAe1mN,GAAcw2H,EAAax2H,EAAG,EAAG,KAAK,GAGrDf,EAAee,GAAc,IAAMw2H,EAAax2H,GAGhD0sF,EAAiB1sF,GAAcw2H,EAAax2H,EAAG,GAC/CqvF,EAAe3C,EACfC,EAA0BD,EAG1B1hC,EAAsBhrD,GAAcpG,EAAqBoG,EAAG,GAG5D+2D,EAAoB/2D,GAAcpG,EAAqBoG,EAAG,GAC1D6/D,EAAyB9I,EACzBtC,EAA0BsC,EAG1Bu8F,EAAqBtzJ,GAAcpG,EAAqBoG,EAAG,GAC3DuzJ,EAAsBD,EACtB/qG,EAAiB+qG,EAGvB,SAASg8D,GAAe5lO,GAK7B,GAFAA,GAFAA,EAAMA,EAAIoH,QAEAlM,QAAQ,KAAM,IAEpB,CAAC,WAAY,WAAY,KAAK5B,SAAS0G,GAAM,OAAO4O,IACxD,GAAI,CAAC,YAAa,YAAa,MAAMtV,SAAS0G,GAAM,OAAO,IAE3D,MAAM0sO,EAAcvB,EAAiBriN,QAAQ9oB,EAAIi0C,UAAUj0C,EAAIvG,OAAS,IAExE,OAAqB,IAAjBizO,EAA2B1gN,WAAWhsB,GACnCgsB,WAAWhsB,EAAIi0C,UAAU,EAAGj0C,EAAIvG,OAAS,GAAK,IAAoB,EAAdizO,EAC7D,gCC1MO,SAASzd,IACd,MAAM5qM,EAAItlB,KAAK4Q,SACf,OAAI0U,EAAI,GACC,6BAA6BtlB,KAAKC,MAAM,GAAKD,KAAK4Q,WAChD0U,EAAI,GACN,6BAA6BtlB,KAAKC,MAAM,GAAKD,KAAK4Q,WAElD,cAAc5Q,KAAKC,MAAM,GAAKD,KAAK4Q,UAE9C,CAGO,SAAS2/M,IACd,MAAM71N,EAAS,GAAKsF,KAAKC,MAAM,IAAMD,KAAK4Q,SAAW5Q,KAAK4Q,WAC1D,IAAIq/M,EAAQ,GAEZ,KAAOA,EAAMv1N,OAASA,GACpB,GAAIsF,KAAK4Q,SAAW,GAClBq/M,GAASC,QACJ,CACL,MAAMx1N,EAAS,EAAIsF,KAAKC,MAAM,EAAID,KAAK4Q,UACjC8jC,EAAS,EAAI10C,KAAKC,MAAM,EAAID,KAAK4Q,UACvC,GAAI8jC,EAASu7K,EAAMv1N,OACjB,SAGF,IAAK,IAAI6B,EAAI,EAAGA,EAAI7B,IAAU6B,EAC5B0zN,GAASA,EAAMA,EAAMv1N,OAASg6C,EAElC,CAGF,OAAOu7K,EAAM/6K,UAAU,EAAGx6C,EAC5B,CAGO,SAAS41N,EAAcL,GAI5B,IAAI+d,EAAiC1sL,MAAMC,KAAKD,MAAM,KAAK,IAAMA,MAAM,IAAIxnB,KAAK,QAC5Em0M,EAAiC3sL,MAAMC,KAAKD,MAAM,KAAK,IAAMA,MAAM,MAEvE,SAASh6C,EAAIs6B,EAA4BrlC,EAAWqpC,EAAW3kC,GAC7D,MAAM0S,EAAUiuB,EAAMrlC,GAAGqpC,IACV,MAAXjyB,GAAmB1S,EAAIvG,OAASiZ,EAAQjZ,QAEjCuG,EAAIvG,SAAWiZ,EAAQjZ,QAAUsF,KAAK4Q,SAAW,MAD1DgxB,EAAMrlC,GAAGqpC,GAAK3kC,EAMlB,CAGA+sO,EAAU,GAAG,GAAK,GAElB,IAAK,IAAIzxO,EAAI,EAAGA,EAAI0zN,EAAMv1N,SAAU6B,EAAG,CACrC,IAAK,MAAMo+K,KAAOszD,EAChBtzD,EAAI7gJ,KAAK,MAEX,MAAMv2B,EAAI0sN,EAAM1zN,GAGhB,IAAK,IAAI7B,EAAS,EAAGA,GAAU,IAAKA,EAAQ,CAC1C,MAAMyyH,EAAS6gH,EAAU,GAAGtzO,GAC5B,GAAc,MAAVyyH,EAAJ,CAIIzyH,EAAS,EAEX4M,EAAI2mO,EAAW,EAAGvzO,EAAS,EAAGyyH,GAG9B7lH,EAAI2mO,EAAW,EAAG,EAAG9gH,EAAS,IAAM8iG,EAAM/6K,UAAU34C,EAAI,EAAGA,GAAK,KAGlE,IAAK,IAAIm4C,EAAS,EAAGA,GAAU10C,KAAK6c,IAAI,EAAGtgB,KAAMm4C,EAC3Cu7K,EAAM1zN,EAAIm4C,KAAYnxC,GAExB+D,EAAI2mO,EAAWv5L,EAAQ,EAAGy4E,EAAS7tG,OAAO5kB,GAAUu1N,EAAM/6K,UAAU34C,EAAI7B,EAAQ6B,GAbpF,CAgBF,CAGA,IAAK,IAAIm4C,EAAS,EAAGA,GAAU,IAAKA,EAClC,IAAK,IAAIh6C,EAAS,EAAGA,GAAU,IAAKA,EAAQ,CAC1C,MAAMyyH,EAAS6gH,EAAUt5L,GAAQh6C,GACjC,GAAc,MAAVyyH,EAAJ,CAII8iG,EAAM1zN,EAAIm4C,KAAYnxC,IACpB7I,EAAS,EAEX4M,EAAI2mO,EAAWv5L,EAAQh6C,EAAS,EAAGyyH,GAGnC7lH,EAAI2mO,EAAWv5L,EAAQ,EAAGy4E,EAAS,IAAM7tG,OAAOo1B,GAAU,MAK9DptC,EAAI2mO,EAAW,EAAG,EAAG9gH,EAAS7tG,OAAO5kB,GAAU4kB,OAAOo1B,IAGtD,IAAK,IAAIw5L,EAAa,EAAGA,GAAcluO,KAAK6c,IAAI,EAAGtgB,KAAM2xO,EACnDje,EAAM1zN,EAAI2xO,KAAgB3qO,GAC5B+D,EAAI2mO,EAAWC,EAAY,EAAG/gH,EAAS7tG,OAAO5kB,GAAU4kB,OAAOo1B,GAAU,IAlB7E,CAqBF,CAGF,MAAMy5L,EAAYF,EAClBA,EAAYD,EACZA,EAAYG,CACd,CAEA,IAAIhsM,EAAS,KAEb,IAAK,IAAIjE,EAAM,EAAGA,GAAO,IAAKA,EAAK,CACjC,IAAIivF,EAAS6gH,EAAU,GAAG9vM,GACZ,MAAVivF,IAIJA,GAAU7tG,OAAO4e,GAAO+xL,EAAM/6K,UAAU+6K,EAAMv1N,OAASwjC,EAAK+xL,EAAMv1N,SACpD,MAAVynC,GAAkBgrF,EAAOzyH,OAASynC,EAAOznC,QAElCyyH,EAAOzyH,QAAUynC,EAAOznC,QAAUsF,KAAK4Q,SAAW,MAD3DuxB,EAASgrF,GAIb,CAEA,IAAK,IAAIz4E,EAAS,EAAGA,GAAU,IAAKA,EAClC,IAAK,IAAIxW,EAAM,EAAGA,GAAO,IAAKA,EAAK,CACjC,IAAIivF,EAAS6gH,EAAUt5L,GAAQxW,GACjB,MAAVivF,IAIJA,GAAU7tG,OAAO4e,GAAO,GAAK5e,OAAOo1B,IACtB,MAAVvS,GAAkBgrF,EAAOzyH,OAASynC,EAAOznC,QAElCyyH,EAAOzyH,QAAUynC,EAAOznC,QAAUsF,KAAK4Q,SAAW,MAD3DuxB,EAASgrF,GAIb,CAGF,OAAOhrF,GAAU,EACnB,CAGO,SAASsuL,EAAcD,GAC5B,IAAIP,EAAQ,GAEZ,IAAK,IAAI1zN,EAAI,EAAGA,EAAIi0N,EAAM91N,QAAU,CAClC,MAAM0zO,EAAiB5d,EAAMzoL,WAAWxrC,GAAK,GAE7C,GAAI6xO,EAAiB,GAAKA,EAAiB,GAAK7xO,EAAI,EAAI6xO,EAAiB5d,EAAM91N,OAC7E,OAAO,KAMT,GAHAu1N,GAASO,EAAMt7K,UAAU34C,EAAI,EAAGA,EAAI,EAAI6xO,GACxC7xO,GAAK,EAAI6xO,EAEL7xO,GAAKi0N,EAAM91N,OACb,MAEF,MAAM2zO,EAAiB7d,EAAMzoL,WAAWxrC,GAAK,GAE7C,GAAI8xO,EAAiB,GAAKA,EAAiB,EACzC,OAAO,KACF,GAAuB,IAAnBA,IACP9xO,MACG,CACL,GAAIA,EAAI,GAAKi0N,EAAM91N,OACjB,OAAO,KAGT,MAAM4zO,EAAiB9d,EAAMzoL,WAAWxrC,EAAI,GAAK,GACjD,GAAK8xO,EAAiB,IAAMC,EAAiB,GAAKA,EAAiB,IAAOA,EAAiBre,EAAMv1N,OAC/F,OAAO,KAGT,IAAK,IAAIkrC,EAAI,EAAGA,EAAIyoM,IAAkBzoM,EACpCqqL,GAASA,EAAMA,EAAMv1N,OAAS4zO,GAGhC/xO,GAAK,CACP,CACF,CAEA,OAAO0zN,CACT,0IChMA,MAAMse,EAMJ/iO,YAAYonH,EAAc31H,GACxByO,KAAKzO,KAAOA,EACZyO,KAAK8iO,eAAiBvxO,EAAK0oB,OAAO,GAAG+F,cAAgBzuB,EAAK4oB,MAAM,GAChEna,KAAK+iO,WAAa/uO,OAAOpC,OAAOs1H,GAChClnH,KAAKgjO,SAAW,IAAIhrM,IAAIh4B,KAAK+iO,YAC7B/iO,KAAKijO,QAAU,IAAI/nO,IAAI8E,KAAK+iO,WAAWh1O,KAAKszB,GAAQ,CAACA,EAAIrB,cAAcvvB,QAAQ,SAAU,IAAK4wB,KAChG,CAEAqH,SAASw6M,GAEP,OAAQljO,KAAKgjO,SAASlmO,IAAoComO,EAC5D,CAEAryF,YAAYxwB,EAAuB6iH,GAAgE,IAA3Cn8G,EAAU,UAAH,6CAAG/mH,KAAK8iO,eACrE,GAAI9iO,KAAK0oB,SAASw6M,GAAa,OAAOA,GAEtCp8G,EAAAA,EAAAA,IAAazG,EAAK0G,EAASm8G,GAE3B,IAAIC,EAAmB,qBAAoBnjO,KAAK+iO,WAAWh1O,KAAKszB,GAAS,IAAGA,OAAQ/jB,KAAK,QAOzF,MANI0C,KAAK+iO,WAAW/zO,OAAS,KAC3ByU,QAAQgd,KACL,kBAAiByiN,0CAAmDljO,KAAKzO,UAAU4xO,KAEtFA,EAAmB,mDAEf1iH,EAAAA,GAAAA,oBACJJ,EACC,YAAW0G,iBAAuB/mH,KAAKzO,uCAAuC2xO,QAAiBC,IAEpG,CAIA30J,eAAenvD,GAAoC,IAArB+jN,EAAc,UAAH,8CAEvC,OADqBpjO,KAAKijO,QAAQzlO,IAAI6hB,EAAMW,cAAcvvB,QAAQ,SAAU,OAIrE2yO,EAAcpjO,KAAK+iO,WAAW,QAAKviO,EAC5C,CAEA41J,UAAU/2I,GACR,OAAOrf,KAAK0oB,SAASrJ,GAASA,OAAQ7e,CACxC,CAEA0E,SACE,MAAMo5B,GAAQ1nB,EAAAA,EAAAA,GAAa,EAAG5W,KAAK+iO,WAAW/zO,OAAS,GACvD,OAAOgR,KAAK+iO,WAAWzkM,EACzB,EAMF,MAAM+kM,EAAc,IAAInoO,IAExBlH,OAAO2H,QAAQ2nO,GAAUj+N,SAAQ,IAAyB,IAAvBk+N,EAAU1mB,GAAQ,EACnDwmB,EAAYznO,IAAI2nO,EAAU,IAAIV,EAAWhmB,EAAS0mB,GAAU,IAIvD,MAAMvhN,EAEyBqhN,EAAY7lO,IAAIkgF,KAAK2lJ,GAE9C36M,EAAW,CACtBn3B,EACAkL,IAC0BulB,EAAczwB,GAAMm3B,SAASjsB,8DC3EpD+mO,EAKAC,yBALO,SAAPD,GAAAA,EAAAA,EAAO,2BAAPA,EAAAA,EAAO,8BAAPA,IAAAA,EAAO,KAKC,SAARC,GAAAA,EAAAA,EAAQ,qBAARA,EAAAA,EAAQ,kBAARA,IAAAA,EAAQ,KA2CN,MAAMlG,EAAe,iEA8BrB,SAAS5R,EAAmBjoN,EAAc+nN,EAA6BxtN,GAAyB,MACrG,MAAMiG,EA7BR,SAA0BR,EAAc+nN,EAA6BxtN,GACnE,MAAMylO,EAAaznJ,UAAUW,UAAU58D,cAAcnxB,SAAS,cACxD+zH,EAAqE4gH,EAAQG,WAC7ElkJ,EAAuB,CAC3BA,QAAS7sF,EAAAA,EAAAA,cACT8sF,MAAMA,EAAAA,EAAAA,KACNkkJ,UAAW,IAAO,IAAGhxO,EAAAA,EAAAA,mBAA4B8sF,EAAAA,EAAAA,SAE7C9zB,EAA4B,CAChCgxB,UAAWX,UAAUW,UAErBgzF,SAAU3zF,UAAU2zF,SACpBi0D,eAAgB5nJ,UAAU6nJ,cAC1BC,WAAY9nJ,UAAU8nJ,WACtBC,YAAatlO,OAAOumN,WAWtB,MATiC,CAC/B5/D,SAAUq+E,EAAaD,EAASQ,MAAQR,EAASS,QACjDC,YAAavhH,EACbnjC,UACA7zB,WACAloD,QACA+nN,YACAxtN,OAGJ,CAGmBmmO,CAAiB1gO,EAAO+nN,EAAWxtN,GAC9CmgF,EAAYl6E,EAASR,MAAc06E,SACnCxyB,EACH,QAAO1nD,EAAS0nD,SAASgkH,2BAA2B1rK,EAAS0nD,SAASi4K,eAAelvN,yBACvEzQ,EAAS0nD,SAASm4K,YAAc,oBAAoB7/N,EAAS0nD,SAASo4K,UAAUrvN,aAE3FzO,EAAS,GAAEhC,EAASR,MAAMnS,SAAS2S,EAASR,MAAMm0D,gBAAgB3zD,EAASjG,SAC3EssJ,EAAQ,QACXrkJ,qNAYMhC,EAASR,MAAMiR,YAAc,kBAC9BzQ,EAASjG,MAAQ,qBACdiG,EAASu7E,QAAQmkJ,+BACbJ,EAAQt/N,EAASigO,6BACpBV,EAASv/N,EAASmhJ,2BACjBppE,UAAUW,0BACXhxB,gBACFwyB,GAAY,YAGtBl6E,EAASigO,cAAgBX,EAAQa,YAC5B,8BAGa,QAApB,EAAEngO,EAASunN,iBAAS,aAAlB,EAAoB6Y,eAAe3vN,WAAWhY,mBAG1C,kEAMJA,OAYA,MARyB,CACvBuH,WACAk6E,WACAxyB,WACA1lD,QACAqkJ,OACA+yE,SARgB,GAAEC,WAAqB12D,mBAAmB3gK,WAAe2gK,mBAAmBtc,KAWhG,gCC7IA,SAASg6E,IACP,MAAO,uCAAuC9zO,QAAQ,SAAS,SAAUoH,GACvE,MAAM+hB,EAAqB,GAAhBtlB,KAAK4Q,SAAiB,EAEjC,OADW,KAALrN,EAAW+hB,EAAS,EAAJA,EAAW,GACxBjF,SAAS,GACpB,GACF,kBAGO,MAAMlD,EACX+yN,YAAqE,CAAC,EAEtE7yN,UAAU7f,GACR,IAAI2yO,EAAOF,IACX,UAAkC/jO,IAA3BR,KAAKwkO,YAAYC,IAAqBA,EAAOF,IAGpD,OAFAvkO,KAAKwkO,YAAYC,GAAQ3yO,EAElB,YACEkO,KAAKwkO,YAAYC,EAAK,CAEjC,CAEAhR,OACE,IAAK,MAAM3hO,KAAKkO,KAAKwkO,YAAa,CAChC,MAAMnsJ,EAAMr4E,KAAKwkO,YAAY1yO,QACjB0O,IAAR63E,GAEJA,KAAO,UACT,CACF,iCC7BK,SAAS+qI,EAAct1N,GAC5B,MAAM42O,EAAgB,CAAC,GACjBC,EAAmB72O,EAAK6mB,SAAS,GAAGtX,MAAM,IAAIyzB,UAEpD6zM,EAAUt/N,SAAQ,CAACE,EAAG1U,EAAGzC,KACvBA,EAAEyC,GAAK2qC,SAASj2B,EAAE,IAGpB,IAAIiC,EAAIm9N,EAAU31O,OAIlB,IAAK,IAAI6B,EAAI,EAAG2W,EAAI,EAAG3W,IAEnB6zO,EAAI7zO,GADe,IAAhBA,EAAKA,EAAI,GACH8zO,IAAYn9N,GAEZ,EAIb,IAAIo9N,EAAc,EAGlB,IAAK,IAAI/zO,EAAI,EAAGA,EAAI6zO,EAAI11O,OAAQ6B,IAC1B6zO,EAAI7zO,KACN+zO,GAAU/zO,GAId+zO,EAASA,EAAOjwN,SAAS,GAAGtX,MAAM,IAAIyzB,UACtC8zM,EAAOv/N,SAAQ,CAACE,EAAQ1U,EAAQzC,KAC9BA,EAAEyC,GAAK2qC,SAASj2B,EAAE,IAIpB,IAAK,IAAI1U,EAAI,EAAGA,EAAI+zO,EAAO51O,OAAQ6B,IACjC6zO,EAAI,GAAK7zO,GAAK+zO,EAAO/zO,GAAK,EAAI,EAGhC+zO,EAAS,EAET,IAAK,IAAI/zO,EAAI,EAAGA,EAAI6zO,EAAI11O,OAAQ6B,IAC1B6zO,EAAI7zO,IACN+zO,IAOJ,OAFAF,EAAI,GAAKE,EAAS,GAAK,EAAI,EAAI,EAExBF,EAAIpnO,KAAK,GAClB,CAEO,SAASimN,EAAsBz1N,GAOpC,IAAId,EAAI,EAER,KAAO,IAAM,GAAKA,EAAIA,EAAI,GAAK,EAAIc,GACjCd,IAGF,MAAM6e,EAAY,GAAK7e,EACjBwa,EAAY,GAAKxa,EAAIA,EAAI,EAEzB03O,EAAgB,CAAC,GACjBC,EAAmB72O,EAAK6mB,SAAS,GAAGtX,MAAM,IAAIyzB,UAEpD6zM,EAAUt/N,SAAQ,CAACE,EAAG1U,EAAGzC,KACvBA,EAAEyC,GAAK2qC,SAASj2B,EAAE,IAMpB,IAAK,IAAI1U,EAAI,EAAGqpC,EAAI1yB,EAAG3W,EAAIgb,EAAGhb,IACP,IAAhBA,EAAKA,EAAI,KACZ6zO,EAAI7zO,GAAK8zO,IAAYzqM,GAAKyqM,EAAUzqM,GAAK,GAI7C,IAAI0qM,EAAc,EAGlB,IAAK,IAAI/zO,EAAI,EAAGA,EAAIgb,EAAGhb,IACjB6zO,EAAI7zO,KACN+zO,GAAU/zO,GAId+zO,EAASA,EAAOjwN,SAAS,GAAGtX,MAAM,IAAIyzB,UACtC8zM,EAAOv/N,SAAQ,CAACE,EAAQ1U,EAAQzC,KAC9BA,EAAEyC,GAAK2qC,SAASj2B,EAAE,IAIpB,IAAK,IAAI1U,EAAI,EAAGA,EAAI7D,EAAG6D,IACrB6zO,EAAI,GAAK7zO,GAAK+zO,EAAO/zO,GAAK,EAAI,EAGhC+zO,EAAS,EAET,IAAK,IAAI/zO,EAAI,EAAGA,EAAIgb,EAAGhb,IACjB6zO,EAAI7zO,IACN+zO,IAOJ,OAFAF,EAAI,GAAKE,EAAS,GAAK,EAAI,EAAI,EAExBF,EAAIpnO,KAAK,GAClB,CAEO,SAASmmN,EAAc31N,GAC5B,IAAIspE,EAAM,EACV,MAAMytK,EAAiB,GAGvB,IAAK,MAAMh0O,KAAK/C,EAAKuP,MAAM,IAAK,CAC9B,MAAMynO,EAAMtpM,SAAS1tC,EAAK+C,IAC1Bg0O,EAAKh0O,GAAKi0O,EAENA,IACF1tK,IAAQvmE,EAEZ,CAGIumE,IAEFytK,EAAKztK,GAAOytK,EAAKztK,GAAO,EAAI,GAO9B,IAAIgoJ,EAAM,GAEV,IAAK,IAAIvuN,EAAI,EAAGA,EAAIg0O,EAAK71O,OAAQ6B,IAEV,IAAhBA,EAAKA,EAAI,KACZuuN,GAAOylB,EAAKh0O,IAMhB,OAAO2qC,SAAS4jL,EAAK,EACvB,oFCzJA,MAAe2lB,EAWbjlO,cACEE,KAAKlS,KAAO,EACd,CAGW/B,WACT,OAAOiU,KAAKlS,KAAKkB,MACnB,CAGO+O,KAAKtB,EAAU0a,GACpB,MAAMtmB,EAAImP,KAAKlS,KAAKkB,OACpBgR,KAAKlS,KAAK+C,GAAK,CAACsmB,EAAQ1a,GACxBuD,KAAKglO,UAAUn0O,EACjB,CAGOwwI,OACL,GAAwB,GAApBrhI,KAAKlS,KAAKkB,OAEd,OAAOgR,KAAKlS,KAAK,GAAG,EACtB,CAGOorB,MACL,GAAwB,GAApBlZ,KAAKlS,KAAKkB,OAAa,OAE3B,MAAMyN,EAAQuD,KAAKlS,KAAK,GAAG,GAO3B,OALAkS,KAAKlS,KAAK,GAAKkS,KAAKlS,KAAKkS,KAAKlS,KAAKkB,OAAS,GAC5CgR,KAAKlS,KAAKkB,OAASgR,KAAKlS,KAAKkB,OAAS,EAEtCgR,KAAKilO,YAAY,GAEVxoO,CACT,CAGO2lN,aAAa8iB,EAAkC/tN,GAEpD,MAAMtmB,EAAImP,KAAKlS,KAAKsqD,WAAW7yC,GAAM2/N,EAAU3/N,EAAE,MACjD,IAAU,GAAN1U,EAAS,OAGbmP,KAAKlS,KAAK+C,GAAG,GAAKsmB,EAGlB,MAAMhkB,EAAImB,KAAKC,OAAO1D,EAAI,GAAK,GAE1BmP,KAAKmlO,kBAAkBnlO,KAAKlS,KAAKqF,GAAG,GAAI6M,KAAKlS,KAAK+C,GAAG,IAIrDmP,KAAKilO,YAAYp0O,GAFpBmP,KAAKglO,UAAUn0O,EAGnB,CAGUm0O,UAAUn0O,GAGlB,KAAOA,EAAI,GAAG,CACZ,MAAMsC,EAAImB,KAAKC,OAAO1D,EAAI,GAAK,GAG/B,GAAImP,KAAKmlO,kBAAkBnlO,KAAKlS,KAAKqF,GAAG,GAAI6M,KAAKlS,KAAK+C,GAAG,IAAK,MAG9D,MAAMoxD,EAAMjiD,KAAKlS,KAAKqF,GACtB6M,KAAKlS,KAAKqF,GAAK6M,KAAKlS,KAAK+C,GACzBmP,KAAKlS,KAAK+C,GAAKoxD,EAGfpxD,EAAIsC,CACN,CACF,CAGU8xO,YAAYp0O,GAGpB,KAAOA,EAAImP,KAAKlS,KAAKkB,QAAQ,CAC3B,MAAMuvJ,EAAQ,EAAJ1tJ,EAAQ,EACZ+oB,EAAQ,EAAJ/oB,EAAQ,EAClB,IAAIu0O,EAASv0O,EAOb,GAJI0tJ,EAAIv+I,KAAKlS,KAAKkB,QAAUgR,KAAKmlO,kBAAkBnlO,KAAKlS,KAAKywJ,GAAG,GAAIv+I,KAAKlS,KAAKs3O,GAAQ,MAAKA,EAAS7mF,GAChG3kI,EAAI5Z,KAAKlS,KAAKkB,QAAUgR,KAAKmlO,kBAAkBnlO,KAAKlS,KAAK8rB,GAAG,GAAI5Z,KAAKlS,KAAKs3O,GAAQ,MAAKA,EAASxrN,GAGhG/oB,GAAKu0O,EAAQ,MAGjB,MAAMnjL,EAAMjiD,KAAKlS,KAAKs3O,GACtBplO,KAAKlS,KAAKs3O,GAAUplO,KAAKlS,KAAK+C,GAC9BmP,KAAKlS,KAAK+C,GAAKoxD,EAEfpxD,EAAIu0O,CACN,CACF,EAiBK,MAAMpjB,UAAmB+iB,EAC9BI,kBAAkBE,EAAiBC,GACjC,OAAOD,EAAUC,CACnB,iEC5HK,MAAM9jI,EAAiB,IACpB,IAAE+jI,EAAAA,EAAAA,GAAc,QAAOA,EAAAA,EAAAA,GAAc,OAAMA,EAAAA,EAAAA,GAAc,OAAMA,EAAAA,EAAAA,GAAc,kHCkBhF,SAASniM,EAAQoiM,EAAc/oO,GACpC,IAZF,SAAwBA,GACtB,MACmB,iBAAVA,GAAgC,OAAVA,GAAkB,SAAUA,GAA+B,iBAAfA,EAAMsrK,MAAqB,SAAUtrK,CAElH,CAQOgpO,CAAehpO,GAAQ,OAAOA,EACnC,MAAMsrK,EAAO5sJ,EAAuB1e,EAAMsrK,MAC1C,IAAKA,EAAM,CAET,OAAQtrK,EAAMsrK,MACZ,IAAK,gBAEH,OADAtkK,QAAQgd,KAAK,wCACNhkB,EAAM3O,KACf,IAAK,WAEH,OADA2V,QAAQgd,KAAK,kCACNhkB,EAAM3O,KACf,IAAK,WAEH,OADA2V,QAAQgd,KAAK,kCACNhkB,EAAM3O,KAGjB,MAAM,IAAIsjB,MAAO,sCAAqC3U,EAAMsrK,kDAC9D,CAEA,MAAM7gD,EAAM6gD,EAAK29D,SAASjpO,GAI1B,YAH4B+D,IAAxBunK,EAAK49D,iBACPC,EAAAA,EAAAA,IAAe1+G,EAAK6gD,EAAK49D,gBAEpBz+G,CACT,CAEO,MAAM/rG,EAAiE,CAAEm+B,QAAO,IAAEL,QAAOA,EAAAA,GAQzF,SAASj+B,EACd8jK,EACA53D,EACA/6G,GAEA,MAAMre,EAAO,CAAC,EAEd,GAAIqe,EAAM,CACR,IAAK,MAAM7c,KAAO6c,EAAMre,EAAKwB,GAAO43H,EAAI53H,GACxC,MAAO,CAAEy4K,KAAM+W,EAAUhxL,KAAMA,EACjC,CAEA,IAAK,MAAOwB,EAAK+xB,KAAQrtB,OAAO2H,QAAQurH,GAAiCp5H,EAAKwB,GAAO+xB,EACrF,MAAO,CAAE0mJ,KAAM+W,EAAUhxL,KAAMA,EACjC,CAYO,SAASotB,EACd6sJ,EAEAj6K,EACAqe,GAEA,MAAM+6G,EAAM,IAAI6gD,EAEhB,GAAI57J,EAAM,CACR,IAAK,MAAM7c,KAAO6c,EAAM,CACtB,MAAMkV,EAAMvzB,EAAKwB,QACLkR,IAAR6gB,IAAmB6lG,EAAI53H,GAAO+xB,EACpC,CACA,OAAO6lG,CACT,CAEA,IAAK,MAAO53H,EAAK+xB,KAAQrtB,OAAO2H,QAAQ7N,GAAkCo5H,EAAI53H,GAAO+xB,EACrF,OAAO6lG,CACT,CAIO,SAAS1jF,EAAoCniB,GAA4C,gECvGzF,MAAM8vI,EACX3hI,YAAc,EACdoqI,OAAS,EACTnU,MAAQ,EACR7yE,eAAiB,EACjB1jC,YAAc,EACd+sE,MAAQ,EACRjnB,KAAO,EACPp8F,QAAU,EACVsiI,QAAU,EACVwvF,iBAAmB,EACnBC,gBAAkB,EAClBv0F,aAAe,EACfm7B,QAAU,EACV94E,MAAQ,EACR7yB,MAAQ,EACRkgF,KAAO,EACP/kG,QAAU,EACVgjC,MAAQ,EACRrrE,cAAgB,EAGhBy9J,OAAO3tI,EAAa2jH,GAClBnsI,KAAKmsI,IAAW3jH,EAChBxoB,KAAK4lD,OAASp9B,CAChB,CAGAuR,QACE,IAAK,MAAM0/I,KAAQz5K,KACS,iBAAfA,KAAKy5K,KACbz5K,KAAKy5K,GAAmB,EAG/B,CAGA1+J,SACE,OAAOC,EAAAA,EAAAA,IAAe,qBAAsBhb,KAC9C,CAGAib,gBAAgBxe,GACd,OAAOye,EAAAA,EAAAA,IAAiBi2I,EAAoB10J,EAAM3O,KACpD,EAGFqtB,EAAAA,GAAAA,mBAA4Cg2I,8FC7C5C,SAASzgI,EAAiC7N,GAAyC,IAA3BgjN,EAAY,UAAH,8CAC/D,MAAMC,EAAUjjN,EAAO,EACvBA,EAAOvuB,KAAKmlB,IAAInlB,KAAKC,MAAMsuB,IAC3B,MAAMkjN,EAAwB,IACxBC,EAAkB,GAClBC,EAAkB,GAClBC,EAAyBF,EAAkBC,EAC3CE,EAAe,GACfC,EAAuBF,EAAiBC,EAGxCE,EAAuB/xO,KAAKC,MAAMsuB,EAAOkjN,GAEzCO,EAAehyO,KAAKC,MAAM8xO,EAAeD,GACzCG,EAAuBF,EAAeD,EAEtCI,EAAgBlyO,KAAKC,MAAMgyO,EAAeL,GAC1CO,EAAwBF,EAAeL,EAEvCQ,EAAkBpyO,KAAKC,MAAMkyO,EAAgBT,GAC7CW,EAA0BF,EAAgBT,EAE1CY,EAAwB,MAC5B,IAAIrxO,EAAO,GAAEstB,EAAOkjN,EACpB,KAAOxwO,EAAIvG,OAAS,GAAGuG,EAAM,IAAMA,EACnC,OAAOA,CACR,EAJ6B,GAMxBwzB,EAAkB88M,EAAa,GAAEc,KAAmBC,IAAmB,GAAED,IAE/E,IAAI98M,EAAM,GAYV,OAXIy8M,EAAO,IACTz8M,GAAQ,GAAEy8M,QAAoB,IAATA,EAAa,GAAK,SAErCE,EAAQ,GAAMp7O,EAAAA,EAAAA,wBAA0C,IAAPy+B,KACnDA,GAAQ,GAAE28M,SAAuB,IAAVA,EAAc,GAAK,SAExCE,EAAU,GAAMt7O,EAAAA,EAAAA,wBAA0C,IAAPy+B,KACrDA,GAAQ,GAAE68M,WAA6B,IAAZA,EAAgB,GAAK,QAElD78M,GAAQ,GAAEd,WAAkB88M,GAAiC,IAApBc,EAA6B,IAAL,KAE1Db,EAAW,KAAIj8M,KAASA,CACjC,CAGA,SAAS24K,EAAmBqkC,GAC1B,IAAwBA,EAsBbjoM,MAAM0kB,EAAAA,GArBf,MAAO,GAET,GAAuB,IAAnBujL,EAAQ73O,OACV,MAAO,GAGT,MAAMypH,EAAcouH,EAAQvhJ,SAASn3F,OAC/B24O,EAAaruH,EAAE,GACfsuH,EAAatuH,EAAEA,EAAEzpH,OAAS,GAC1Bk7E,EAAY48J,EAAG93O,OACrB,IAAI6B,EAAI,EAER,KAAOA,EAAIq5E,IADsB97E,EACO04O,EAAG7sN,OAAOppB,GADNxC,EACU04O,EAAG9sN,OAAOppB,GADNzC,EAAE8rB,gBAAkB7rB,EAAE6rB,gBAE9ErpB,IAF8B,IAACzC,EAAWC,EAK5C,OAAOy4O,EAAGt9L,UAAU,EAAG34C,EACzB,CA0BA,SAAS8kK,EAAOpgK,GAA+B,IAAlB4mC,EAAO,UAAH,6CAAG,EAC9B6xL,EAAK,WAAa7xL,EAClB8xL,EAAK,WAAa9xL,EACtB,IAAK,IAAW6qM,EAAPn2O,EAAI,EAAOA,EAAI0E,EAAIvG,OAAQ6B,IAClCm2O,EAAKzxO,EAAI8mC,WAAWxrC,GACpBm9N,EAAK15N,KAAK8nC,KAAK4xL,EAAKgZ,EAAI,YACxB/Y,EAAK35N,KAAK8nC,KAAK6xL,EAAK+Y,EAAI,YAI1B,OAFAhZ,EAAK15N,KAAK8nC,KAAK4xL,EAAMA,IAAO,GAAK,YAAc15N,KAAK8nC,KAAK6xL,EAAMA,IAAO,GAAK,YAC3EA,EAAK35N,KAAK8nC,KAAK6xL,EAAMA,IAAO,GAAK,YAAc35N,KAAK8nC,KAAK4xL,EAAMA,IAAO,GAAK,aACnE,YAAc,QAAUC,IAAOD,IAAO,IAAIr5M,SAAS,GAC7D,yGC1GA,IAAIsyN,GAAc,EAEX,MAAMC,EAAc,KACzBD,GAAc,CAAI,EAGPE,EAAU,KACrB,MAAO/gO,EAAM6D,IAAWrd,EAAAA,EAAAA,UAASq6O,GACjC,OACE,gBAAC,IAAK,CAAC7gO,KAAMA,EAAMC,QAAS,KAAgB,GAC1C,gBAAC,IAAU,KAAC,gCAA0C,IACtD,gBAAC,IAAU,KAAC,2FAAqG,IACjH,gBAAC,IAAU,KAAC,wLAGE,IACd,gBAAC,IAAU,KAAC,iCACqB,IAC/B,qBACE8pB,OAAO,IACPh+B,KAAK,gGAEJ,IAAI,uBAEF,IAAI,aACE,IACX,qBAAGg+B,OAAO,IAAIh+B,KAAK,yFAAwF,kBAI7G,gBAAC,IAAM,CAACiM,QAAS,IAAM6L,GAAQ,IAAQ,gBACjC,gCCpBL,SAAS27N,EACd1+G,EACAkgH,GAEA,IAAK,MAAM93O,KAAO0E,OAAOmY,KAAKi7N,GAAqB,CACjD,MAAMC,EAAiBD,EAAU93O,QACVkR,IAAnB6mO,IAC4B,mBAAnBA,EACTA,EAAengH,EAAK53H,QACakR,IAAxB6mO,EAAe9mH,KACxB8mH,EAAe9mH,KAAK2G,EAAKkgH,EAAW93O,WAEzB43H,EAAI53H,WAAgB+3O,EAAerhC,UAC5C9+E,EAAI53H,GAAO+3O,EAAerhC,SAEJ,iBAAb9+E,EAAI53H,SAA4CkR,IAAvB6mO,EAAel2N,KAC7C+1G,EAAI53H,GAAO+3O,EAAel2N,MAAK+1G,EAAI53H,GAAO+3O,EAAel2N,KAEvC,iBAAb+1G,EAAI53H,SAA4CkR,IAAvB6mO,EAAehyN,KAC7C6xG,EAAI53H,GAAO+3O,EAAehyN,MAAK6xG,EAAI53H,GAAO+3O,EAAehyN,MAIrE,CACF,CAEO,SAASyrF,EACdtrG,EACA2b,EACAkE,GAEA,MAAO,CAAC6xG,EAAK53H,KACa,iBAAb43H,EAAI53H,IAIV43H,EAAI53H,GAA6B6hB,IACpC+1G,EAAI53H,GAAO6hB,GAER+1G,EAAI53H,GAA6B+lB,IACpC6xG,EAAI53H,GAAO+lB,IAPX6xG,EAAI53H,GAAOkG,CAQb,CAEJ,0DC5CO,SAASuwD,EAA2Bl6C,EAAWy7N,EAAgBC,GAQpE,OAPID,GAAU,GAAKA,GAAU,IAC3B7jO,QAAQgd,KAAM,yBAAwB6mN,2CAEpCC,EAAY,GACd9jO,QAAQgd,KAAM,oBAAmB8mN,2CAG5BjzO,KAAKoO,IAAImJ,EAAGy7N,GAAUz7N,EAAI07N,CACnC,gDCdO,SAASthH,EAAc73H,GAC5B,MAAMo5O,EAAkB,GACxB,IAAK,IAAI32O,EAAI,EAAGA,EAAIzC,EAAEY,SAAU6B,EAAG,CACjC,IAAI88K,EAAgBv/K,EAAEyC,GAClB+kD,MAAMyK,QAAQstH,GAChBA,EAAO1nD,EAAc0nD,GACI,iBAATA,IAChBA,EAAQ,IAAGA,MAEb65D,EAAKzpO,KAAK4vK,EACZ,CAEA,MAAQ,IAAG65D,EAAKlqO,KAAK,QACvB,CAEO,SAASghJ,EAAgBj/H,GAC9B,OAAOA,EAAMhyB,OAAO0jH,QACtB,6KC1BA,MAAM02H,YACJ,66hBA0NK,SAASpnJ,UAEd9tC,KAAKk1L,YACP,gCCnNO,SAASxwN,EAAUywN,EAAkBrlN,GAE1C,GAAIA,EAAa,GAAKA,EADH,IAEjB,OAAOqlN,EAGT,MAAM1+L,EAAiB0+L,GAAYrlN,EALhB,KAQnB,OAAOqlN,GAAYpzO,KAAK4Q,UAAqB,EAAT8jC,GAAcA,EACpD,gDCDO,SAASxY,EAAsBzwB,GAEpC,MAKM4nO,EAAiD3zO,OAAO4wE,OAAO,CAAC,EALT,CAC3Dn0C,SAAU,EACVulC,WAAY,IAG0Ej2D,GAExF4nO,EAAQl3M,SAAWn8B,KAAK+gB,IAAI/gB,KAAK6c,IAAIw2N,EAAQl3M,SAAU,GAAI,GAG3D,MAAMm3M,EAAetzO,KAAK+gB,IAAI/gB,KAAKC,MAAMozO,EAAQl3M,UAAY,EAAIk3M,EAAQ3xK,aAAc,GACjFo/H,EAAiB9gM,KAAK+gB,IAAIsyN,EAAQ3xK,WAAa4xK,EAAM,GAG3D,MAAQ,IAAG,IAAI13H,OAAO03H,KAAQ,IAAI13H,OAAOklF,KAC3C,iECpCA,MAAMqtB,EAAQ,iEAEP,SAAShjC,EAAmB5zK,GACjC,IAAItW,EAAM,GAEV,IAAK,IAAI1E,EAAI,EAAGA,EAAIgb,IAAKhb,EACvB0E,GAAOktN,EAAMxoM,OAAO3lB,KAAKC,MAAMD,KAAK4Q,SAAWu9M,EAAMzzN,SAGvD,OAAOuG,CACT,gCCXO,SAAS0lJ,EAAiD/zB,EAAQzqH,GACvE,MAAMorO,EAAaprO,EAAMujB,cAAcvvB,QAAQ,KAAM,IACrD,IAAK,MAAMw/F,KAAUj8F,OAAOpC,OAAOs1H,GACjC,GAAI2gH,EAAWh5O,SAASohG,EAAOjwE,cAAcvvB,QAAQ,KAAM,KAAM,OAAOw/F,CAE5E,gFCOO,SAASxxE,EAAelZ,GAC7B9B,QAAQC,MAAM6B,GACd,IAAImkB,EAAM,GACNuvD,EAAO,oBACPj4D,EAAO,sBACM,MAVMib,EACN,iBADMA,EAUV12B,IATqB,MAAL02B,GACtBjoC,OAAOojB,OAAO6kB,EAAG,aAAejoC,OAAOojB,OAAO6kB,EAAG,eAStDg9C,EAAO1zE,EAAE64E,UAAYnF,EACrBj4D,GAAmB,QAAZ,EAAAzb,EAAEmvK,kBAAU,aAAZ,EAAc//J,aAAcqM,GAEnC0I,EAAM9V,OAAOrO,IAEfjC,EAAAA,EAAAA,GACE,wBACEomB,EADF,qBAIEuvD,EAJF,wBAOEj4D,EAPF,mPAaA,EAEJ,gECrCO,SAAS2rE,EAAW+vH,GACzB,IACE,OAAOjyE,EAAAA,EAAAA,GAAO,IAAIn/I,KAAQoxN,EAG5B,CAFE,MAAOn3M,GACP,MAAO,cACT,CACF,gCCAO,SAASghD,EACdwhH,EACA+/D,GACsB,QACtB,MAAMC,EAAS,IAAIhgE,EACbigE,EAAS,IAAIhwM,IAAIhkC,OAAO+3K,oBAAoBg8D,IAGlD,OAFAD,SAA0B,QAAb,EAAbA,EAAethL,mBAAW,OAA1B,EAA4BnhD,SAAS/V,GAAQ04O,EAAOtrO,OAAOpN,KAC3Dw4O,SAAwB,QAAX,EAAbA,EAAeG,iBAAS,OAAxB,EAA0B5iO,SAAS/V,GAAQ04O,EAAO/jM,IAAI30C,KAC/C,IAAI04O,EACb,gFCXO,SAASzC,EAAclwN,GAE5B,MACM6yN,EAAgB5zO,KAAK+gB,IAAI/gB,KAAK6c,IAAIkE,EADpB,KACuC,GAE3D,OAAOuB,EAAAA,EAAAA,GAAa,EAAGsxN,EACzB,gCCPO,SAAStxN,EAAazF,EAAakE,GACxC,MAAM8yN,EAAgB7zO,KAAK6c,IAAIA,EAAKkE,GAC9B6yN,EAAgB5zO,KAAK+gB,IAAIlE,EAAKkE,GAEpC,OAAO/gB,KAAKC,MAAMD,KAAK4Q,UAAYgjO,EAAQC,EAAQ,IAAMA,CAC3D,gDCTO,SAAS5oN,IACd,MAAM8O,EAAU,IAAI/iC,KAGd88O,EAA0B,IAAG/5M,EAAEg6M,aAAaluN,OAD9B,GAEdmuN,EAA4B,IAAGj6M,EAAEk6M,eAAepuN,OAFlC,GAGdquN,EAA4B,IAAGn6M,EAAEo6M,eAAetuN,OAHlC,GAKpB,MAAQ,GAAEkU,EAAEy7L,WAAa,KAAKz7L,EAAE07L,aAAaqe,KAAkBE,KAAoBE,GACrF,gDCNO,SAASxnD,EAAan1K,GAC3B,OAAIzD,MAAMyD,IAIA,IAANA,GAKqB,IAAjBA,EAAKA,EAAI,EACnB,gDCXO,SAAS+0K,EAAc/0K,GAC5B,MAAoB,iBAANA,IAAmBzD,MAAMyD,EACzC,gDCLO,IAAK8V,EAwEAwmK,2BADZ,SAvEYxmK,GAAAA,EAAG,cAAHA,EAAG,aAAHA,EAAG,UAAHA,EAAG,UAAHA,EAAG,sBAAHA,EAAG,mBAAHA,EAAG,uBAAHA,EAAG,uBAAHA,EAAG,yBAAHA,EAAG,UAAHA,EAAG,iBAAHA,EAAG,iBAAHA,EAAG,kBAAHA,EAAG,cAAHA,EAAG,iBAAHA,EAAG,qBAAHA,EAAG,sBAAHA,EAAG,eAAHA,EAAG,gBAAHA,EAAG,UAAHA,EAAG,SAAHA,EAAG,QAAHA,EAAG,kBAAHA,EAAG,WAAHA,EAAG,SAAHA,EAAG,OAAHA,EAAG,OAAHA,EAAG,OAAHA,EAAG,OAAHA,EAAG,OAAHA,EAAG,OAAHA,EAAG,OAAHA,EAAG,OAAHA,EAAG,OAAHA,EAAG,OAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAAHA,EAAG,MAuEf,CAvEYA,IAAAA,EAAG,KAqId,SA7DWwmK,GAAAA,EAAO,cAAPA,EAAO,aAAPA,EAAO,UAAPA,EAAO,cAAPA,EAAO,sBAAPA,EAAO,mBAAPA,EAAO,uBAAPA,EAAO,uBAAPA,EAAO,yBAAPA,EAAO,2BAAPA,EAAO,sBAAPA,EAAO,cAAPA,EAAO,aAAPA,EAAO,cAAPA,EAAO,sBAAPA,EAAO,eAAPA,EAAO,sBAAPA,EAAO,cAAPA,EAAO,YAAPA,EAAO,YAAPA,EAAO,YAAPA,EAAO,YAAPA,EAAO,YAAPA,EAAO,YAAPA,EAAO,YAAPA,EAAO,YAAPA,EAAO,YAAPA,EAAO,YAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SAAPA,EAAO,SA6DlB,CA7DWA,IAAAA,EAAO,mCCrEZ,SAASvgD,EAAW8gG,GACzB,OAAOp0O,KAAKguB,MAAgB,IAAVomN,GAAiB,GACrC,gDCGO,SAAS/gG,EAAU5lG,EAAsB3hB,GAE9C,OAAQ2hB,EAAO,IAAMvmC,KAAK4mH,UAAUhiG,EACtC,CAIO,SAASuvH,EAAqBD,GAGnC,OAAO,IAAI3nB,OAAO,IAAM2nB,EAAU,MACpC,CAIO,SAASitD,EAA0BjtD,GAGxC,OAAOC,EAAqB,QAAUD,EAAU,QAClD,mECtBO,SAASpsF,EAAS7mD,GACvB,MAAwB,iBAAVA,GAAsBA,aAAiBmX,MACvD,CAGO,SAAStX,EAAWG,GACzB,OAAIA,EAAMzN,OAAS,GACfyN,EAAMulO,GAAG,KAAOvlO,EAAMulO,IAAI,IACV,MAAhBvlO,EAAMulO,GAAG,IAA8B,MAAhBvlO,EAAMulO,GAAG,GAFPvlO,EAGtBA,EAAM+sC,UAAU,EAAG/sC,EAAMzN,OAAS,EAC3C,wDCVO,SAASgiJ,EACd/0G,EACA0sM,EACAC,GAEA,IACED,EAAS1sM,EAIX,CAHE,MAAO12B,GAEP,MAAMqjO,EADoB,iBAANrjO,EAAiBA,EAAI,UAE3C,CACF,CAGO,SAASsjO,EAAgB5sM,GAC9B,OAAa,OAANA,EAAa,OAAS2Z,MAAMyK,QAAQpkB,GAAK,eAAiBA,CACnE,CAKO,SAASg1G,EAAah1G,GAC3B,MAAMzlC,EAAOqyO,EAAgB5sM,GAC7B,GAAa,WAATzlC,EAAmB,MAAMA,CAC/B,CAGO,SAAS06I,EAAaj1G,GAC3B,MAAMzlC,EAAOqyO,EAAgB5sM,GAC7B,GAAa,WAATzlC,EAAmB,MAAMA,CAC/B,CAGO,SAAS46I,EAAYn1G,GAC1B,IAAK2Z,MAAMyK,QAAQpkB,GAAI,MAAM4sM,EAAgB5sM,EAC/C,2KClCA,MAAM6sM,EAA6B,CACjC,CAAC,cAAe,wBAChB,CAAC,cAAe,wBAChB,CAAC,gBAAiB,wBAClB,CAAC,gBAAiB,wBAClB,CAAC,qBAAsB,6CACvB,CAAC,aAAc,+BACf,CAAC,uBAAwB,mCACzB,CAAC,qBAAsB,iCACvB,CAAC,mBAAoB,gCACrB,CAAC,gBAAiB,6BAClB,CAAC,oBAAqB,iCACtB,CAAC,oBAAqB,iCACtB,CAAC,iBAAkB,8BACnB,CAAC,iBAAkB,8BACnB,CAAC,mBAAoB,gCACrB,CAAC,QAAS,uBACV,CAAC,MAAO,uBACR,CAAC,QAAS,2CACV,CAAC,gBAAiB,qBAClB,CAAC,WAAY,2BAGT1gE,EAA8B,CAClC,CAAC,kBAAmB,uCACpB,CAAC,kBAAmB,uCACpB,CAAC,oBAAqB,yCACtB,CAAC,gCAAiC,qDAClC,CAAC,yBAA0B,sCAC3B,CAAC,iBAAkB,wBACnB,CAAC,eAAgB,mBACjB,CAAC,iCAAkC,kCACnC,CAAC,+BAAgC,gCACjC,CAAC,6BAA8B,+BAC/B,CAAC,0BAA2B,4BAC5B,CAAC,8BAA+B,gCAChC,CAAC,8BAA+B,gCAChC,CAAC,2BAA4B,6BAC7B,CAAC,2BAA4B,6BAC7B,CAAC,6BAA8B,gCAEjC,SAAS2gE,EAAWhsJ,GAClB,IAAK,MAAMr3D,KAAU0iJ,EACnB,GAAIrrF,EAAK1gF,MAAMqpB,EAAO,IAAK,OAAO,EAEpC,OAAO,CACT,CAEA,SAASyiJ,EAAQprF,GACf,MAAM9nE,EAAQ8nE,EAAK1/E,MAAM,MACnBkwG,EAAgB,GACtB,IAAK,IAAI18G,EAAI,EAAGA,EAAIokB,EAAMjmB,OAAQ6B,IAAK,CACrC,MAAMm4O,EAAO/zN,EAAMpkB,GACnB,IAAImwB,EAAO/L,EAAMpkB,GACjB,IAAK,MAAM60B,KAAU0iJ,EACnBpnJ,EAAOA,EAAKvwB,QAAQi1B,EAAO,GAAIA,EAAO,IAEpC1E,GAAQgoN,IACVz7H,EAAIxvG,KAAM,oFACVwvG,EAAIxvG,KAAM,OACVwvG,EAAIxvG,KAAM,MAAKirO,KACfz7H,EAAIxvG,KAAK,OACTwvG,EAAIxvG,KAAM,qFAEZwvG,EAAIxvG,KAAKijB,EACX,CAEA,OADOusF,EAAIjwG,KAAK,KAElB,CAEO,SAASwrK,IAAsB,IAAbj9J,EAAI,UAAH,6CAAG,EAC3B,MAAMo9N,EAAKj5O,EAAAA,GAAAA,cAAAA,MAA2B5B,GAAMA,EAAEmD,OAASC,EAAAA,iBAAAA,oBACvD,GAAIy3O,EACFA,EAAGx3O,OAASoa,MACP,CACL,MAAMo9N,EAAK,IAAI9lO,EAAAA,EAAwB3R,EAAAA,iBAAAA,mBACvCy3O,EAAGx3O,MAAQoa,EACX7b,EAAAA,GAAAA,cAAAA,KAA0Bi5O,EAC5B,CACF,CAQO,SAASpgE,IACd,IAAIvmF,EAAM,GACV,IAAK,MAAMliD,KAAU7tC,EAAAA,EAAAA,MACnB,IAAK,MAAMmzB,KAAUojN,EAAQ,CAC3B,MAAMh3O,EAAiB,GAEvB,IAAK,MAAMgrF,KAAU18C,EAAOzuC,QAAQC,SAAU,CAC5C,MAAMqjB,EAAQ6nE,EAAOC,KAAK1/E,MAAM,MAChC,IAAK,IAAIxM,EAAI,EAAGA,EAAIokB,EAAMjmB,OAAQ6B,IAC5BokB,EAAMpkB,GAAGhC,SAAS62B,EAAO,KAC3B5zB,EAAEiM,KAAK,CACLk7E,KAAM6D,EAAO/qF,SACbivB,KAAMnwB,EAAI,EACVrB,QAAS,IAIjB,CAEA,GAAiB,IAAbsC,EAAE9C,OAAN,CAEAszF,GAAQ,sBAAqB58D,EAAO,eAAeA,EAAO,OAC1D,IAAK,MAAMwjN,KAAMp3O,EACfwwF,GAAQ,GAAE4mJ,EAAGjwJ,QAAQiwJ,EAAGloN,QAJE,CAM9B,CAEF,GAAY,KAARshE,EAAY,CACd,MAAM7F,EAAOzsF,EAAAA,GAAAA,kBACP0uL,GAAW7vB,EAAAA,EAAAA,GAAoB,2BACrC,IAAK6vB,EAAU,OAAOj7K,QAAQC,MAAM,yCACpC+4E,EAAK0yD,gBAAgBuvC,EAAUp8F,EACjC,CAEA,IAAK,MAAMliD,KAAU7tC,EAAAA,EAAAA,MACnB,IAAK,MAAMuqF,KAAU18C,EAAOzuC,QAAQC,SAAU,CAC5C,IAAKm3O,EAAWjsJ,EAAOC,MAAO,SAE9B,MAAMosJ,GAAcn/I,EAAAA,EAAAA,IAAsBlN,EAAO/qF,UAC3CA,GAAWi4F,EAAAA,EAAAA,IAAsB,UAAYm/I,GAC9Cp3O,GAILquC,EAAOi9C,kBAAkBtrF,EAAU+qF,EAAOC,MAC1CD,EAAOC,KAAOorF,EAAQrrF,EAAOC,OAJ3Bt5E,QAAQC,MAAO,8CAA6Co5E,EAAO/qF,WAKvE,CAEJ,sFCvIA,MAAMk8E,EAAc,CAClB,iBACA,WACA,0BACA,cACA,UACA,gBACA,qBACA,kBACA,2BACA,sBACA,wBACA,uBACA,wBACA,8BACA,uBACA,kBACA,sBACA,gBACA,iBACA,gBACA,mBACA,wBACA,qBACA,kBACA,sBACA,gBACA,wBACA,sBACA,0BACA,wBACA,eACA,aACA,cACA,uBACA,kBACA,SACA,YACA,cACA,aACA,uBACA,kBACA,cACA,UACA,WACA,YACA,aACA,eACA,mBACA,mBACA,iBACA,iBACA,kBAGIm7J,EAAkB,CACtB,mBACA,yBACA,mBACA,oBACA,sBACA,mBACA,cACA,YACA,gBACA,qBACA,WACA,qBACA,YACA,kBACA,mBACA,gCACA,sBACA,qBACA,qBACA,kBACA,oBACA,oBACA,oBACA,qBACA,mBACA,YACA,UACA,WACA,UACA,YACA,UACA,WACA,eACA,cACA,eACA,cACA,gBACA,cACA,eACA,mBACA,KACA,SACA,gBACA,kBACA,YACA,mBAGIzpO,EAAQ,CACZ,sBACA,qBACA,qBACA,oBACA,eACA,mBACA,gBACA,oBACA,eACA,mBACA,iBACA,qBACA,eACA,mBACA,gBACA,oBACA,0BACA,kCACA,6BACA,8BACA,+BACA,mBACA,mBACA,kBACA,qBACA,mBACA,+BACA,gCACA,4BACA,mCAUW6pK,EAAa,KACxB,MAAM/sF,GAAO7sF,EAAAA,EAAAA,IAAU,QACvB,IAAK6sF,EAAM,MAAM,IAAIrrE,MAAM,gCAC3B,MAAMghG,EAAiB,CACrB,CACEi3H,QAAS,sBACTC,YAAa,kBACbtsB,OAAQ,2DACRusB,UAAW,IAEb,CACEF,QAAS,wBACTC,YAAa,oBACbtsB,OAAQ,uGACRusB,UAAW,IAEb,CACEF,QAAS,wBACTC,YAAa,oBACbtsB,OAAQ,qGACRusB,UAAW,IAEb,CACEF,QAAS,WACTC,YAAa,OACbtsB,OACE,iJACFusB,UAAW,IAEb,CACEF,QAAS,kBACTC,YAAa,cACbtsB,OAAQ,4FACRusB,UAAW,IAEb,CACEF,QAAS,mBACTC,YAAa,eACbtsB,OAAQ,8FACRusB,UAAW,IAEb,CACEF,QAAS,oBACTC,YAAa,gBACbtsB,OAAQ,8FACRusB,UAAW,IAEb,CACEF,QAAS,0BACTC,YAAa,sBACbtsB,OAAQ,2EACRusB,UAAW,KAIf,IAAK,MAAMlpM,KAAM4tC,EACfmkC,EAAMr0G,KAAK,CACTsrO,QAAS,IAAIthH,OAAQ,MAAK1nF,IAAM,KAChC28K,OAAS,MAAK38K,iCAAkCA,IAChDkpM,UAAW,KAIf,IAAK,MAAMhpO,KAAQZ,EACjByyG,EAAMr0G,KAAK,CACTsrO,QAAS,IAAIthH,OAAOxnH,EAAM,KAC1By8M,OAAS,kBAAiBz8M,uCAA0CA,EAAK4Z,MAAM,EAAG5Z,EAAKvR,OAAS,KAChGu6O,UAAW,KAIf,IAAK,MAAMr1O,KAAKk1O,EACdh3H,EAAMr0G,KAAK,CACTsrO,QAAS,IAAIthH,OAAO7zH,EAAG,KACvB8oN,OAAS,6DAA4D9oN,0GACrEq1O,UAAW,KAIf,IAAK,MAAMzsJ,KAAUL,EAAK9qF,QAAQC,SAChC43O,EAAcp3H,EAAOt1B,GAGvBL,EAAK0yD,gBAAgB,uBAAwCs6F,EAAYr3H,KACzE80H,EAAAA,EAAAA,KAEA,IAAK,MAAM9mM,KAAU7tC,EAAAA,EAAAA,MACnB6tC,EAAOsnG,iBAAmB,IAAIxsI,IAEhC26E,EAAAA,GAAAA,YAAuB,EAGnB6zJ,EAAmBH,IACvB,MAAMzzJ,EAAqC,CAAC,EAC5C,IAAK,MAAMskB,KAAOmvI,EAAW,CAC3B,MAAMthO,EAAU6tE,EAAMskB,EAAInhB,OAAS,GACnChxE,EAAQlK,KAAKq8F,GACbtkB,EAAMskB,EAAInhB,MAAQhxE,CACpB,CAEA,IAAIq6E,EAAM,GACV,IAAK,MAAMrJ,KAAQnD,EAAO,CACxBwM,GAAO,KAAOrJ,EAAO,KACrB,IAAK,MAAM0wJ,KAAY7zJ,EAAMmD,GAC3BqJ,GAAQ,YAAWqnJ,EAAS3oN,QAAQ2oN,EAASn6O,QAAQmN,UAEzD,CACA,OAAO2lF,CAAG,EAGNmnJ,EAAer3H,IACnB,IAAI9vB,EACF,0LACF,IAAK,MAAMsnJ,KAAQx3H,EACa,IAA1Bw3H,EAAKL,UAAUv6O,SACnBszF,GAAO1uE,OAAOg2N,EAAKP,SAAW,KAC9B/mJ,GAAOsnJ,EAAK5sB,OAAS,OACrB16H,GAAOonJ,EAAgBE,EAAKL,WAC5BjnJ,GAAO,QAET,OAAOA,CAAG,EAGNknJ,EAAgB,CAACp3H,EAAgBt1B,KACrC,MAAM7nE,EAAQ6nE,EAAOC,KAAK1/E,MAAM,MAChC,IAAK,IAAIxM,EAAI,EAAGA,EAAIokB,EAAMjmB,OAAQ6B,IAChC,IAAK,MAAM+4O,KAAQx3H,EAAO,CACxB,MAAMpxF,EAAO/L,EAAMpkB,GACbwL,EAAQygF,EAAO/qF,SAASC,SAAS,WAAa43O,EAAKN,aAAeM,EAAKP,QAAUO,EAAKP,QACxFroN,EAAK3kB,MAAMA,IACbutO,EAAKL,UAAUxrO,KAAK,CAClBk7E,KAAM6D,EAAO/qF,SACbivB,KAAMnwB,EAAI,EACVrB,QAASwxB,GAGf,CACF,iDChSF,4oGCAA,onCCAA,yFCAA,qtFCAA,s/BCAA,6aCAA,g3BCAA,w/DCAA,6uJCAA,4qBCAA,6oBCAA,6wHCAA,+0ICAA,qzBCAA,q3CCAA,o9CCAA,4qKCAA,4lBCAA,y7ECAA,srCCAA,ugBCAA,4yBCAA,m4OCAA,g6GCAA,ggGCAA,gsSCAA,8pICAA,2YCAA,4u4MCAA,+lPCAA,08zCCAA,y3BCAA,qjDCAA,wxDCAA,4lHCAA,ymGCAA,8vMCAA,6yDCAA,gjHCAA,03yRCCI6oN,yBAA2B,CAAC,ECD5BzwD,SCCA0wD,eADAC,SFIJ,SAASC,oBAAoBC,GAE5B,IAAIC,EAAeL,yBAAyBI,GAC5C,QAAqBzpO,IAAjB0pO,EACH,OAAOA,EAAaj6L,QAGrB,IAAIs2G,EAASsjF,yBAAyBI,GAAY,CACjD7vO,GAAI6vO,EACJrc,QAAQ,EACR39K,QAAS,CAAC,GAUX,OANAk6L,oBAAoBF,GAAU5hH,KAAKk+B,EAAOt2G,QAASs2G,EAAQA,EAAOt2G,QAAS+5L,qBAG3EzjF,EAAOqnE,QAAS,EAGTrnE,EAAOt2G,OACf,CAGA+5L,oBAAoBh9O,EAAIm9O,oBG5BxBH,oBAAoBI,KAAO,CAAC,EFAxBhxD,SAAW,GACf4wD,oBAAoBhgK,EAAI,CAACvzC,EAAQ4zM,EAAUhqM,EAAIiqM,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAepmO,IACnB,IAAStT,EAAI,EAAGA,EAAIuoL,SAASpqL,OAAQ6B,IAAK,CAGzC,IAFA,IAAKw5O,EAAUhqM,EAAIiqM,GAAYlxD,SAASvoL,GACpCyY,GAAY,EACP4wB,EAAI,EAAGA,EAAImwM,EAASr7O,OAAQkrC,MACpB,EAAXowM,GAAsBC,GAAgBD,IAAat2O,OAAOmY,KAAK69N,oBAAoBhgK,GAAGprC,OAAOtvC,GAAS06O,oBAAoBhgK,EAAE16E,GAAK+6O,EAASnwM,MAC9ImwM,EAAS3sO,OAAOw8B,IAAK,IAErB5wB,GAAY,EACTghO,EAAWC,IAAcA,EAAeD,IAG7C,GAAGhhO,EAAW,CACb8vK,SAAS17K,OAAO7M,IAAK,GACrB,IAAI+oB,EAAIymB,SACE7/B,IAANoZ,IAAiB6c,EAAS7c,EAC/B,CACD,CACA,OAAO6c,CAnBP,CAJC6zM,EAAWA,GAAY,EACvB,IAAI,IAAIz5O,EAAIuoL,SAASpqL,OAAQ6B,EAAI,GAAKuoL,SAASvoL,EAAI,GAAG,GAAKy5O,EAAUz5O,IAAKuoL,SAASvoL,GAAKuoL,SAASvoL,EAAI,GACrGuoL,SAASvoL,GAAK,CAACw5O,EAAUhqM,EAAIiqM,EAqBjB,EGzBdN,oBAAoBn+N,EAAK06I,IACxB,IAAI2pD,EAAS3pD,GAAUA,EAAOikF,WAC7B,IAAOjkF,EAAiB,QACxB,IAAM,EAEP,OADAyjF,oBAAoB37M,EAAE6hL,EAAQ,CAAE9hN,EAAG8hN,IAC5BA,CAAM,EFNV65B,SAAW/1O,OAAOy2O,eAAkBvjH,GAASlzH,OAAOy2O,eAAevjH,GAASA,GAASA,EAAa,UAQtG8iH,oBAAoBztM,EAAI,SAAS9/B,EAAOuyI,GAEvC,GADU,EAAPA,IAAUvyI,EAAQuD,KAAKvD,IAChB,EAAPuyI,EAAU,OAAOvyI,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPuyI,GAAavyI,EAAM+tO,WAAY,OAAO/tO,EAC1C,GAAW,GAAPuyI,GAAoC,mBAAfvyI,EAAMsiF,KAAqB,OAAOtiF,CAC5D,CACA,IAAI6iH,EAAKtrH,OAAOgqB,OAAO,MACvBgsN,oBAAoBpwN,EAAE0lG,GACtB,IAAI9pH,EAAM,CAAC,EACXs0O,eAAiBA,gBAAkB,CAAC,KAAMC,SAAS,CAAC,GAAIA,SAAS,IAAKA,SAASA,WAC/E,IAAI,IAAI9hO,EAAiB,EAAP+mI,GAAYvyI,EAAyB,iBAAXwL,KAAyB6hO,eAAezrN,QAAQpW,GAAUA,EAAU8hO,SAAS9hO,GACxHjU,OAAO+3K,oBAAoB9jK,GAAS5C,SAAS/V,GAASkG,EAAIlG,GAAO,IAAOmN,EAAMnN,KAI/E,OAFAkG,EAAa,QAAI,IAAM,EACvBw0O,oBAAoB37M,EAAEixF,EAAI9pH,GACnB8pH,CACR,EGxBA0qH,oBAAoB37M,EAAI,CAAC4hB,EAASy6L,KACjC,IAAI,IAAIp7O,KAAOo7O,EACXV,oBAAoBp3C,EAAE83C,EAAYp7O,KAAS06O,oBAAoBp3C,EAAE3iJ,EAAS3gD,IAC5E0E,OAAO+U,eAAeknC,EAAS3gD,EAAK,CAAE8xH,YAAY,EAAM5jH,IAAKktO,EAAWp7O,IAE1E,ECHD06O,oBAAoBzkO,EAAI,IAAOg9B,QAAQC,UCHvCwnM,oBAAoB34I,EAAI,WACvB,GAA0B,iBAAfw2H,WAAyB,OAAOA,WAC3C,IACC,OAAO7nN,MAAQ,IAAIsyM,SAAS,cAAb,EAGhB,CAFE,MAAO/sM,GACR,GAAsB,iBAAX7G,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBsrO,oBAAoBp3C,EAAI,CAAC1rE,EAAKuyD,IAAUzlL,OAAO6yI,UAAUypE,eAAejoF,KAAKnB,EAAKuyD,GCClFuwD,oBAAoBpwN,EAAKq2B,IACH,oBAAX06L,QAA0BA,OAAOC,aAC1C52O,OAAO+U,eAAeknC,EAAS06L,OAAOC,YAAa,CAAEnuO,MAAO,WAE7DzI,OAAO+U,eAAeknC,EAAS,aAAc,CAAExzC,OAAO,GAAO,ECL9DutO,oBAAoBa,IAAOtkF,IAC1BA,EAAOukF,MAAQ,GACVvkF,EAAOn5F,WAAUm5F,EAAOn5F,SAAW,IACjCm5F,SCHR,IAAI1+B,EACAmiH,oBAAoB34I,EAAE05I,gBAAeljH,EAAYmiH,oBAAoB34I,EAAEn/F,SAAW,IACtF,IAAImI,EAAW2vO,oBAAoB34I,EAAEh3F,SACrC,IAAKwtH,GAAaxtH,IACbA,EAASw4K,gBACZhrD,EAAYxtH,EAASw4K,cAAc3lL,MAC/B26H,GAAW,CACf,IAAIl2H,EAAU0I,EAAS2wO,qBAAqB,UACzCr5O,EAAQ3C,SAAQ64H,EAAYl2H,EAAQA,EAAQ3C,OAAS,GAAG9B,IAC5D,CAID,IAAK26H,EAAW,MAAM,IAAIz2G,MAAM,yDAChCy2G,EAAYA,EAAUp3H,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpFu5O,oBAAoB72O,EAAI00H,YCfxBmiH,oBAAoB37O,EAAIgM,SAAS4wO,SAAWC,KAAKh5O,SAASC,KAK1D,IAAIg5O,EAAkB,CACrB,IAAK,GAaNnB,oBAAoBhgK,EAAE9vC,EAAKkxM,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4Bx9O,KACvD,IAGIm8O,EAAUmB,GAHTf,EAAUkB,EAAaC,GAAW19O,EAGhB+C,EAAI,EAC3B,GAAGw5O,EAASx4O,MAAMuI,GAAgC,IAAxB+wO,EAAgB/wO,KAAa,CACtD,IAAI6vO,KAAYsB,EACZvB,oBAAoBp3C,EAAE24C,EAAatB,KACrCD,oBAAoBh9O,EAAEi9O,GAAYsB,EAAYtB,IAGhD,GAAGuB,EAAS,IAAI/0M,EAAS+0M,EAAQxB,oBAClC,CAEA,IADGsB,GAA4BA,EAA2Bx9O,GACrD+C,EAAIw5O,EAASr7O,OAAQ6B,IACzBu6O,EAAUf,EAASx5O,GAChBm5O,oBAAoBp3C,EAAEu4C,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOpB,oBAAoBhgK,EAAEvzC,EAAO,EAGjCg1M,EAAqBP,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FO,EAAmBpmO,QAAQgmO,EAAqB3tJ,KAAK,KAAM,IAC3D+tJ,EAAmB1tO,KAAOstO,EAAqB3tJ,KAAK,KAAM+tJ,EAAmB1tO,KAAK2/E,KAAK+tJ,QChDvFzB,oBAAoB0B,QAAKlrO,ECGzB,IAAImrO,oBAAsB3B,oBAAoBhgK,OAAExpE,EAAW,CAAC,MAAM,IAAOwpO,oBAAoB,SAC7F2B,oBAAsB3B,oBAAoBhgK,EAAE2hK","sources":["webpack:///./src/Achievements/AchievementEntry.tsx","webpack:///./src/Achievements/AchievementIcon.tsx","webpack:///./src/Achievements/AchievementList.tsx","webpack:///./src/Achievements/Achievements.ts","webpack:///./src/Achievements/AchievementsRoot.tsx","webpack:///./src/Alias.ts","webpack:///./src/Arcade/ui/ArcadeRoot.tsx","webpack:///./src/Arcade/ui/BBCabinet.tsx","webpack:///./src/Augmentation/Augmentation.ts","webpack:///./src/Augmentation/AugmentationHelpers.ts","webpack:///./src/Augmentation/Augmentations.ts","webpack:///./src/Augmentation/CircadianModulator.ts","webpack:///./src/Augmentation/Enums.ts","webpack:///./src/Augmentation/PlayerOwnedAugmentation.ts","webpack:///./src/Augmentation/ui/AugmentationsRoot.tsx","webpack:///./src/Augmentation/ui/InstalledAugmentations.tsx","webpack:///./src/Augmentation/ui/PlayerMultipliers.tsx","webpack:///./src/Augmentation/ui/PurchasableAugmentations.tsx","webpack:///./src/Augmentation/ui/PurchaseAugmentationModal.tsx","webpack:///./src/Augmentation/ui/PurchasedAugmentations.tsx","webpack:///./src/Augmentation/ui/SourceFiles.tsx","webpack:///./src/BitNode/BitNode.tsx","webpack:///./src/BitNode/BitNodeMultipliers.ts","webpack:///./src/BitNode/ui/BitFlumeModal.tsx","webpack:///./src/BitNode/ui/BitnodeMultipliersDescription.tsx","webpack:///./src/BitNode/ui/BitverseRoot.tsx","webpack:///./src/BitNode/ui/PortalModal.tsx","webpack:///./src/Bladeburner/Action.tsx","webpack:///./src/Bladeburner/ActionIdentifier.ts","webpack:///./src/Bladeburner/BlackOperation.ts","webpack:///./src/Bladeburner/BlackOperations.tsx","webpack:///./src/Bladeburner/Bladeburner.tsx","webpack:///./src/Bladeburner/City.ts","webpack:///./src/Bladeburner/Contract.ts","webpack:///./src/Bladeburner/Enums.ts","webpack:///./src/Bladeburner/GeneralActions.tsx","webpack:///./src/Bladeburner/Operation.ts","webpack:///./src/Bladeburner/Skill.ts","webpack:///./src/Bladeburner/Skills.ts","webpack:///./src/Bladeburner/data/ActionTypes.ts","webpack:///./src/Bladeburner/data/BlackOperations.tsx","webpack:///./src/Bladeburner/data/Constants.ts","webpack:///./src/Bladeburner/data/Contracts.tsx","webpack:///./src/Bladeburner/data/GeneralActions.tsx","webpack:///./src/Bladeburner/data/Growths.ts","webpack:///./src/Bladeburner/data/Help.ts","webpack:///./src/Bladeburner/data/Icons.tsx","webpack:///./src/Bladeburner/data/Operations.tsx","webpack:///./src/Bladeburner/data/SkillNames.ts","webpack:///./src/Bladeburner/ui/ActionLevel.tsx","webpack:///./src/Bladeburner/ui/AllPages.tsx","webpack:///./src/Bladeburner/ui/Autolevel.tsx","webpack:///./src/Bladeburner/ui/BlackOpElem.tsx","webpack:///./src/Bladeburner/ui/BlackOpList.tsx","webpack:///./src/Bladeburner/ui/BlackOpPage.tsx","webpack:///./src/Bladeburner/ui/BladeburnerCinematic.tsx","webpack:///./src/Bladeburner/ui/BladeburnerRoot.tsx","webpack:///./src/Bladeburner/ui/Console.tsx","webpack:///./src/Bladeburner/ui/ContractElem.tsx","webpack:///./src/Bladeburner/ui/ContractList.tsx","webpack:///./src/Bladeburner/ui/ContractPage.tsx","webpack:///./src/Bladeburner/ui/GeneralActionElem.tsx","webpack:///./src/Bladeburner/ui/GeneralActionList.tsx","webpack:///./src/Bladeburner/ui/GeneralActionPage.tsx","webpack:///./src/Bladeburner/ui/KillIcon.tsx","webpack:///./src/Bladeburner/ui/OperationElem.tsx","webpack:///./src/Bladeburner/ui/OperationList.tsx","webpack:///./src/Bladeburner/ui/OperationPage.tsx","webpack:///./src/Bladeburner/ui/SkillElem.tsx","webpack:///./src/Bladeburner/ui/SkillList.tsx","webpack:///./src/Bladeburner/ui/SkillPage.tsx","webpack:///./src/Bladeburner/ui/StartButton.tsx","webpack:///./src/Bladeburner/ui/Stats.tsx","webpack:///./src/Bladeburner/ui/StealthIcon.tsx","webpack:///./src/Bladeburner/ui/SuccessChance.tsx","webpack:///./src/Bladeburner/ui/TeamSizeButton.tsx","webpack:///./src/Bladeburner/ui/TeamSizeModal.tsx","webpack:///./src/Bladeburner/ui/TravelModal.tsx","webpack:///./src/Casino/Blackjack.tsx","webpack:///./src/Casino/CardDeck/Card.ts","webpack:///./src/Casino/CardDeck/Deck.ts","webpack:///./src/Casino/CardDeck/Hand.ts","webpack:///./src/Casino/CardDeck/ReactCard.tsx","webpack:///./src/Casino/CoinFlip.tsx","webpack:///./src/Casino/Game.ts","webpack:///./src/Casino/RNG.ts","webpack:///./src/Casino/Roulette.tsx","webpack:///./src/Casino/SlotMachine.tsx","webpack:///./src/Casino/utils.ts","webpack:///./src/CodingContractGenerator.ts","webpack:///./src/CodingContracts.ts","webpack:///./src/Company/Companies.ts","webpack:///./src/Company/Company.ts","webpack:///./src/Company/CompanyPosition.ts","webpack:///./src/Company/CompanyPositions.ts","webpack:///./src/Company/Enums.ts","webpack:///./src/Company/GetJobRequirementText.ts","webpack:///./src/Company/GetNextCompanyPosition.ts","webpack:///./src/Company/data/CompaniesMetadata.ts","webpack:///./src/Company/data/CompanyPositionsMetadata.ts","webpack:///./src/Company/data/JobTracks.ts","webpack:///./src/Company/ui/QuitJobModal.tsx","webpack:///./src/Company/utils.ts","webpack:///./src/Constants.ts","webpack:///./src/Corporation/Actions.ts","webpack:///./src/Corporation/Corporation.ts","webpack:///./src/Corporation/CorporationState.ts","webpack:///./src/Corporation/Division.ts","webpack:///./src/Corporation/Enums.ts","webpack:///./src/Corporation/Material.ts","webpack:///./src/Corporation/MaterialInfo.ts","webpack:///./src/Corporation/OfficeSpace.ts","webpack:///./src/Corporation/Product.ts","webpack:///./src/Corporation/Research.ts","webpack:///./src/Corporation/ResearchMap.ts","webpack:///./src/Corporation/ResearchTree.ts","webpack:///./src/Corporation/Warehouse.ts","webpack:///./src/Corporation/data/BaseResearchTree.ts","webpack:///./src/Corporation/data/Constants.ts","webpack:///./src/Corporation/data/CorporationUnlocks.ts","webpack:///./src/Corporation/data/CorporationUpgrades.ts","webpack:///./src/Corporation/data/IndustryData.ts","webpack:///./src/Corporation/helpers.ts","webpack:///./src/Corporation/ui/CityTabs.tsx","webpack:///./src/Corporation/ui/Context.ts","webpack:///./src/Corporation/ui/CorporationRoot.tsx","webpack:///./src/Corporation/ui/Division.tsx","webpack:///./src/Corporation/ui/DivisionOffice.tsx","webpack:///./src/Corporation/ui/DivisionOverview.tsx","webpack:///./src/Corporation/ui/DivisionWarehouse.tsx","webpack:///./src/Corporation/ui/ExpandNewCity.tsx","webpack:///./src/Corporation/ui/Helpers.tsx","webpack:///./src/Corporation/ui/IndustryDescription.tsx","webpack:///./src/Corporation/ui/IndustryProductEquation.tsx","webpack:///./src/Corporation/ui/LevelableUpgrade.tsx","webpack:///./src/Corporation/ui/MainPanel.tsx","webpack:///./src/Corporation/ui/MaterialElem.tsx","webpack:///./src/Corporation/ui/MoneyCost.tsx","webpack:///./src/Corporation/ui/MultiplierButtons.tsx","webpack:///./src/Corporation/ui/NewDivisionTab.tsx","webpack:///./src/Corporation/ui/Overview.tsx","webpack:///./src/Corporation/ui/ProductElem.tsx","webpack:///./src/Corporation/ui/Unlock.tsx","webpack:///./src/Corporation/ui/modals/BribeFactionModal.tsx","webpack:///./src/Corporation/ui/modals/BuybackSharesModal.tsx","webpack:///./src/Corporation/ui/modals/CancelProductModal.tsx","webpack:///./src/Corporation/ui/modals/CreateCorporationModal.tsx","webpack:///./src/Corporation/ui/modals/DiscontinueProductModal.tsx","webpack:///./src/Corporation/ui/modals/ExportModal.tsx","webpack:///./src/Corporation/ui/modals/FindInvestorsModal.tsx","webpack:///./src/Corporation/ui/modals/GoPublicModal.tsx","webpack:///./src/Corporation/ui/modals/IssueDividendsModal.tsx","webpack:///./src/Corporation/ui/modals/IssueNewSharesModal.tsx","webpack:///./src/Corporation/ui/modals/LimitMaterialProductionModal.tsx","webpack:///./src/Corporation/ui/modals/LimitProductProductionModal.tsx","webpack:///./src/Corporation/ui/modals/MakeProductModal.tsx","webpack:///./src/Corporation/ui/modals/PurchaseMaterialModal.tsx","webpack:///./src/Corporation/ui/modals/ResearchModal.tsx","webpack:///./src/Corporation/ui/modals/SellCorporationModal.tsx","webpack:///./src/Corporation/ui/modals/SellDivisionModal.tsx","webpack:///./src/Corporation/ui/modals/SellMaterialModal.tsx","webpack:///./src/Corporation/ui/modals/SellProductModal.tsx","webpack:///./src/Corporation/ui/modals/SellSharesModal.tsx","webpack:///./src/Corporation/ui/modals/SmartSupplyModal.tsx","webpack:///./src/Corporation/ui/modals/ThrowPartyModal.tsx","webpack:///./src/Corporation/ui/modals/UpgradeOfficeSizeModal.tsx","webpack:///./src/CotMG/ActiveFragment.ts","webpack:///./src/CotMG/BaseGift.ts","webpack:///./src/CotMG/Fragment.ts","webpack:///./src/CotMG/FragmentType.ts","webpack:///./src/CotMG/Helper.tsx","webpack:///./src/CotMG/StaneksGift.ts","webpack:///./src/CotMG/StaneksGiftEvents.ts","webpack:///./src/CotMG/data/Constants.ts","webpack:///./src/CotMG/data/Shapes.ts","webpack:///./src/CotMG/formulas/effect.ts","webpack:///./src/CotMG/ui/ActiveFragmentSummary.tsx","webpack:///./src/CotMG/ui/Cell.tsx","webpack:///./src/CotMG/ui/DummyGrid.tsx","webpack:///./src/CotMG/ui/FragmentInspector.tsx","webpack:///./src/CotMG/ui/FragmentPreview.tsx","webpack:///./src/CotMG/ui/FragmentSelector.tsx","webpack:///./src/CotMG/ui/Grid.tsx","webpack:///./src/CotMG/ui/MainBoard.tsx","webpack:///./src/CotMG/ui/StaneksGiftRoot.tsx","webpack:///./src/Crime/Crime.ts","webpack:///./src/Crime/CrimeHelpers.ts","webpack:///./src/Crime/Crimes.ts","webpack:///./src/Crime/Enums.ts","webpack:///./src/DarkWeb/DarkWeb.tsx","webpack:///./src/DarkWeb/DarkWebItem.ts","webpack:///./src/DarkWeb/DarkWebItems.ts","webpack:///./src/DevMenu.tsx","webpack:///./src/DevMenu/ui/AchievementsDev.tsx","webpack:///./src/DevMenu/ui/Adjuster.tsx","webpack:///./src/DevMenu/ui/AugmentationsDev.tsx","webpack:///./src/DevMenu/ui/BladeburnerDev.tsx","webpack:///./src/DevMenu/ui/CodingContractsDev.tsx","webpack:///./src/DevMenu/ui/CompaniesDev.tsx","webpack:///./src/DevMenu/ui/CorporationDev.tsx","webpack:///./src/DevMenu/ui/EntropyDev.tsx","webpack:///./src/DevMenu/ui/FactionsDev.tsx","webpack:///./src/DevMenu/ui/GangDev.tsx","webpack:///./src/DevMenu/ui/General.tsx","webpack:///./src/DevMenu/ui/ProgramsDev.tsx","webpack:///./src/DevMenu/ui/SaveFileDev.tsx","webpack:///./src/DevMenu/ui/ServersDev.tsx","webpack:///./src/DevMenu/ui/SleevesDev.tsx","webpack:///./src/DevMenu/ui/SourceFilesDev.tsx","webpack:///./src/DevMenu/ui/StanekDev.tsx","webpack:///./src/DevMenu/ui/StatsDev.tsx","webpack:///./src/DevMenu/ui/StockMarketDev.tsx","webpack:///./src/DevMenu/ui/TimeSkip.tsx","webpack:///./src/Diagnostic/FileDiagnosticModal.tsx","webpack:///./src/Documentation/pages.ts","webpack:///./src/Documentation/root.ts","webpack:///./src/Documentation/ui/DocumentationRoot.tsx","webpack:///./src/Electron.tsx","webpack:///./src/Exploits/Exploit.ts","webpack:///./src/Exploits/Unclickable.tsx","webpack:///./src/Exploits/applyExploits.ts","webpack:///./src/Exploits/loops.ts","webpack:///./src/ExportBonus.tsx","webpack:///./src/Faction/Enums.ts","webpack:///./src/Faction/Faction.ts","webpack:///./src/Faction/FactionHelpers.tsx","webpack:///./src/Faction/FactionInfo.tsx","webpack:///./src/Faction/Factions.ts","webpack:///./src/Faction/formulas/donation.ts","webpack:///./src/Faction/formulas/favor.ts","webpack:///./src/Faction/ui/AugmentationsPage.tsx","webpack:///./src/Faction/ui/CreateGangModal.tsx","webpack:///./src/Faction/ui/DonateOption.tsx","webpack:///./src/Faction/ui/FactionRoot.tsx","webpack:///./src/Faction/ui/FactionsRoot.tsx","webpack:///./src/Faction/ui/GangButton.tsx","webpack:///./src/Faction/ui/Info.tsx","webpack:///./src/Faction/ui/InvitationModal.tsx","webpack:///./src/Faction/ui/Option.tsx","webpack:///./src/GameOptions/ui/AutoexecInput.tsx","webpack:///./src/GameOptions/ui/ConnectionBauble.tsx","webpack:///./src/GameOptions/ui/GameOptionsPage.tsx","webpack:///./src/GameOptions/ui/GameOptionsRoot.tsx","webpack:///./src/GameOptions/ui/GameOptionsSidebar.tsx","webpack:///./src/GameOptions/ui/GameplayPage.tsx","webpack:///./src/GameOptions/ui/InterfacePage.tsx","webpack:///./src/GameOptions/ui/MiscPage.tsx","webpack:///./src/GameOptions/ui/NumericDisplayOptions.tsx","webpack:///./src/GameOptions/ui/OptionsSlider.tsx","webpack:///./src/GameOptions/ui/RemoteAPIPage.tsx","webpack:///./src/GameOptions/ui/SystemPage.tsx","webpack:///./src/Gang/AllGangs.ts","webpack:///./src/Gang/Gang.ts","webpack:///./src/Gang/GangMember.ts","webpack:///./src/Gang/GangMemberTask.ts","webpack:///./src/Gang/GangMemberTasks.ts","webpack:///./src/Gang/GangMemberUpgrade.ts","webpack:///./src/Gang/GangMemberUpgrades.ts","webpack:///./src/Gang/data/Constants.ts","webpack:///./src/Gang/data/power.ts","webpack:///./src/Gang/data/tasks.ts","webpack:///./src/Gang/data/upgrades.ts","webpack:///./src/Gang/formulas/formulas.ts","webpack:///./src/Gang/ui/AscensionModal.tsx","webpack:///./src/Gang/ui/BonusTime.tsx","webpack:///./src/Gang/ui/Context.ts","webpack:///./src/Gang/ui/EquipmentsSubpage.tsx","webpack:///./src/Gang/ui/GangMemberCard.tsx","webpack:///./src/Gang/ui/GangMemberCardContent.tsx","webpack:///./src/Gang/ui/GangMemberList.tsx","webpack:///./src/Gang/ui/GangMemberStats.tsx","webpack:///./src/Gang/ui/GangRoot.tsx","webpack:///./src/Gang/ui/GangStats.tsx","webpack:///./src/Gang/ui/ManagementSubpage.tsx","webpack:///./src/Gang/ui/RecruitButton.tsx","webpack:///./src/Gang/ui/RecruitModal.tsx","webpack:///./src/Gang/ui/TaskDescription.tsx","webpack:///./src/Gang/ui/TaskSelector.tsx","webpack:///./src/Gang/ui/TerritoryInfoModal.tsx","webpack:///./src/Gang/ui/TerritorySubpage.tsx","webpack:///./src/Hacking.ts","webpack:///./src/Hacking/netscriptCanHack.ts","webpack:///./src/Hacknet/HacknetHelpers.tsx","webpack:///./src/Hacknet/HacknetNode.ts","webpack:///./src/Hacknet/HacknetServer.ts","webpack:///./src/Hacknet/HashManager.ts","webpack:///./src/Hacknet/HashUpgrade.ts","webpack:///./src/Hacknet/HashUpgrades.ts","webpack:///./src/Hacknet/data/Constants.ts","webpack:///./src/Hacknet/data/HashUpgradesMetadata.tsx","webpack:///./src/Hacknet/formulas/HacknetNodes.ts","webpack:///./src/Hacknet/formulas/HacknetServers.ts","webpack:///./src/Hacknet/ui/GeneralInfo.tsx","webpack:///./src/Hacknet/ui/HacknetNodeElem.tsx","webpack:///./src/Hacknet/ui/HacknetRoot.tsx","webpack:///./src/Hacknet/ui/HacknetServerElem.tsx","webpack:///./src/Hacknet/ui/HacknetUpgradeElem.tsx","webpack:///./src/Hacknet/ui/HashUpgradeModal.tsx","webpack:///./src/Hacknet/ui/MultiplierButtons.tsx","webpack:///./src/Hacknet/ui/PlayerInfo.tsx","webpack:///./src/Hacknet/ui/PurchaseButton.tsx","webpack:///./src/Hospital/Hospital.ts","webpack:///./src/Infiltration/formulas/game.ts","webpack:///./src/Infiltration/formulas/victory.ts","webpack:///./src/Infiltration/ui/BackwardGame.tsx","webpack:///./src/Infiltration/ui/BlinkingCursor.tsx","webpack:///./src/Infiltration/ui/BracketGame.tsx","webpack:///./src/Infiltration/ui/BribeGame.tsx","webpack:///./src/Infiltration/ui/CheatCodeGame.tsx","webpack:///./src/Infiltration/ui/Countdown.tsx","webpack:///./src/Infiltration/ui/Cyberpunk2077Game.tsx","webpack:///./src/Infiltration/ui/Difficulty.ts","webpack:///./src/Infiltration/ui/Game.tsx","webpack:///./src/Infiltration/ui/GameTimer.tsx","webpack:///./src/Infiltration/ui/InfiltrationRoot.tsx","webpack:///./src/Infiltration/ui/Intro.tsx","webpack:///./src/Infiltration/ui/KeyHandler.tsx","webpack:///./src/Infiltration/ui/MinesweeperGame.tsx","webpack:///./src/Infiltration/ui/SlashGame.tsx","webpack:///./src/Infiltration/ui/Victory.tsx","webpack:///./src/Infiltration/ui/WireCuttingGame.tsx","webpack:///./src/Infiltration/utils.ts","webpack:///./src/InteractiveTutorial.ts","webpack:///./src/Literature/Enums.ts","webpack:///./src/Literature/Literature.ts","webpack:///./src/Literature/LiteratureHelpers.ts","webpack:///./src/Literature/Literatures.ts","webpack:///./src/Locations/Cities.ts","webpack:///./src/Locations/City.ts","webpack:///./src/Locations/Enums.ts","webpack:///./src/Locations/Location.ts","webpack:///./src/Locations/Locations.ts","webpack:///./src/Locations/data/LocationsMetadata.ts","webpack:///./src/Locations/ui/ApplyToJobButton.tsx","webpack:///./src/Locations/ui/CasinoLocation.tsx","webpack:///./src/Locations/ui/City.tsx","webpack:///./src/Locations/ui/CompanyLocation.tsx","webpack:///./src/Locations/ui/CoresButton.tsx","webpack:///./src/Locations/ui/GenericLocation.tsx","webpack:///./src/Locations/ui/GymLocation.tsx","webpack:///./src/Locations/ui/HospitalLocation.tsx","webpack:///./src/Locations/ui/PurchaseServerModal.tsx","webpack:///./src/Locations/ui/RamButton.tsx","webpack:///./src/Locations/ui/SlumsLocation.tsx","webpack:///./src/Locations/ui/SpecialLocation.tsx","webpack:///./src/Locations/ui/TechVendorLocation.tsx","webpack:///./src/Locations/ui/TorButton.tsx","webpack:///./src/Locations/ui/TravelAgencyRoot.tsx","webpack:///./src/Locations/ui/TravelConfirmationModal.tsx","webpack:///./src/Locations/ui/UniversityLocation.tsx","webpack:///./src/Message/Enums.ts","webpack:///./src/Message/Message.ts","webpack:///./src/Message/MessageHelpers.tsx","webpack:///./src/Milestones/Milestones.ts","webpack:///./src/Milestones/ui/MilestonesRoot.tsx","webpack:///./src/Netscript/APIWrapper.ts","webpack:///./src/Netscript/Environment.ts","webpack:///./src/Netscript/NetscriptHelpers.tsx","webpack:///./src/Netscript/Pid.ts","webpack:///./src/Netscript/RamCostGenerator.ts","webpack:///./src/Netscript/RecentScripts.ts","webpack:///./src/Netscript/ScriptDeath.ts","webpack:///./src/Netscript/WorkerScript.ts","webpack:///./src/Netscript/WorkerScripts.ts","webpack:///./src/Netscript/killWorkerScript.ts","webpack:///./src/NetscriptFunctions.ts","webpack:///./src/NetscriptFunctions/Bladeburner.ts","webpack:///./src/NetscriptFunctions/CodingContract.ts","webpack:///./src/NetscriptFunctions/Corporation.ts","webpack:///./src/NetscriptFunctions/Extra.ts","webpack:///./src/NetscriptFunctions/Flags.ts","webpack:///./src/NetscriptFunctions/Formulas.ts","webpack:///./src/NetscriptFunctions/Gang.ts","webpack:///./src/NetscriptFunctions/Grafting.ts","webpack:///./src/NetscriptFunctions/Hacknet.ts","webpack:///./src/NetscriptFunctions/Infiltration.ts","webpack:///./src/NetscriptFunctions/Singularity.ts","webpack:///./src/NetscriptFunctions/Sleeve.ts","webpack:///./src/NetscriptFunctions/Stanek.ts","webpack:///./src/NetscriptFunctions/StockMarket.ts","webpack:///./src/NetscriptFunctions/UserInterface.ts","webpack:///./src/NetscriptFunctions/toNative.ts","webpack:///./src/NetscriptJSEvaluator.ts","webpack:///./src/NetscriptPort.ts","webpack:///./src/NetscriptWorker.ts","webpack:///./src/NetworkShare/Share.tsx","webpack:///./src/NetworkShare/formulas/share.tsx","webpack:///./src/Paths/ContentFile.ts","webpack:///./src/Paths/ContractFilePath.ts","webpack:///./src/Paths/Directory.ts","webpack:///./src/Paths/FilePath.ts","webpack:///./src/Paths/GlobbedFiles.ts","webpack:///./src/Paths/ProgramFilePath.ts","webpack:///./src/Paths/ScriptFilePath.ts","webpack:///./src/Paths/TextFilePath.ts","webpack:///./src/PersonObjects/Grafting/EntropyAccumulation.ts","webpack:///./src/PersonObjects/Grafting/GraftableAugmentation.ts","webpack:///./src/PersonObjects/Grafting/GraftingHelpers.ts","webpack:///./src/PersonObjects/Grafting/ui/GraftingRoot.tsx","webpack:///./src/PersonObjects/Multipliers.ts","webpack:///./src/PersonObjects/Person.ts","webpack:///./src/PersonObjects/PersonMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObject.ts","webpack:///./src/PersonObjects/Player/PlayerObjectAugmentationMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectBladeburnerMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectCorporationMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectGangMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectGeneralMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectServerMethods.ts","webpack:///./src/PersonObjects/Player/PlayerObjectWorkMethods.ts","webpack:///./src/PersonObjects/Sleeve/Sleeve.ts","webpack:///./src/PersonObjects/Sleeve/SleeveCovenantPurchases.tsx","webpack:///./src/PersonObjects/Sleeve/SleeveMethods.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveBladeburnerWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveClassWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveCompanyWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveCrimeWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveFactionWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveInfiltrateWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveRecoveryWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveSupportWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/SleeveSynchroWork.ts","webpack:///./src/PersonObjects/Sleeve/Work/Work.ts","webpack:///./src/PersonObjects/Sleeve/ui/CovenantPurchasesRoot.tsx","webpack:///./src/PersonObjects/Sleeve/ui/CovenantSleeveMemoryUpgrade.tsx","webpack:///./src/PersonObjects/Sleeve/ui/FAQModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/MoreStatsModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/SleeveAugmentationsModal.tsx","webpack:///./src/PersonObjects/Sleeve/ui/SleeveElem.tsx","webpack:///./src/PersonObjects/Sleeve/ui/SleeveRoot.tsx","webpack:///./src/PersonObjects/Sleeve/ui/StatsElement.tsx","webpack:///./src/PersonObjects/Sleeve/ui/TaskSelector.tsx","webpack:///./src/PersonObjects/Sleeve/ui/TravelModal.tsx","webpack:///./src/PersonObjects/formulas/intelligence.ts","webpack:///./src/PersonObjects/formulas/reputation.ts","webpack:///./src/PersonObjects/formulas/skill.ts","webpack:///./src/Player.ts","webpack:///./src/Prestige.ts","webpack:///./src/Programs/Enums.ts","webpack:///./src/Programs/Program.ts","webpack:///./src/Programs/ProgramHelpers.ts","webpack:///./src/Programs/Programs.ts","webpack:///./src/Programs/ui/ProgramsRoot.tsx","webpack:///./src/RedPill.tsx","webpack:///./src/RemoteFileAPI/MessageDefinitions.ts","webpack:///./src/RemoteFileAPI/MessageHandlers.ts","webpack:///./src/RemoteFileAPI/Remote.ts","webpack:///./src/RemoteFileAPI/RemoteFileAPI.ts","webpack:///./src/SaveObject.ts","webpack:///./src/Script/LoadedModule.ts","webpack:///./src/Script/RamCalculationErrorCodes.ts","webpack:///./src/Script/RamCalculations.ts","webpack:///./src/Script/RunningScript.ts","webpack:///./src/Script/Script.ts","webpack:///./src/Script/ScriptHelpers.ts","webpack:///./src/ScriptEditor/CursorPositions.ts","webpack:///./src/ScriptEditor/ui/Editor.tsx","webpack:///./src/ScriptEditor/ui/NoOpenScripts.tsx","webpack:///./src/ScriptEditor/ui/OpenScript.ts","webpack:///./src/ScriptEditor/ui/OptionsModal.tsx","webpack:///./src/ScriptEditor/ui/ScriptEditorContext.tsx","webpack:///./src/ScriptEditor/ui/ScriptEditorRoot.tsx","webpack:///./src/ScriptEditor/ui/Tab.tsx","webpack:///./src/ScriptEditor/ui/Tabs.tsx","webpack:///./src/ScriptEditor/ui/ThemeEditorModal.tsx","webpack:///./src/ScriptEditor/ui/Toolbar.tsx","webpack:///./src/ScriptEditor/ui/themes.ts","webpack:///./src/ScriptEditor/ui/useVimEditor.tsx","webpack:///./src/ScriptEditor/ui/utils.ts","webpack:///./src/Server/AllServers.ts","webpack:///./src/Server/BaseServer.ts","webpack:///./src/Server/Server.ts","webpack:///./src/Server/ServerHelpers.ts","webpack:///./src/Server/ServerPurchases.ts","webpack:///./src/Server/data/SpecialServers.ts","webpack:///./src/Server/data/servers.ts","webpack:///./src/Server/formulas/grow.ts","webpack:///./src/Settings/SettingEnums.ts","webpack:///./src/Settings/Settings.ts","webpack:///./src/Sidebar/ui/SidebarAccordion.tsx","webpack:///./src/Sidebar/ui/SidebarItem.tsx","webpack:///./src/Sidebar/ui/SidebarRoot.tsx","webpack:///./src/SourceFile/SourceFile.ts","webpack:///./src/SourceFile/SourceFiles.tsx","webpack:///./src/SourceFile/applySourceFile.ts","webpack:///./src/StockMarket/BuyingAndSelling.tsx","webpack:///./src/StockMarket/Enums.ts","webpack:///./src/StockMarket/Order.ts","webpack:///./src/StockMarket/OrderProcessing.tsx","webpack:///./src/StockMarket/PlayerInfluencing.ts","webpack:///./src/StockMarket/Stock.ts","webpack:///./src/StockMarket/StockMarket.tsx","webpack:///./src/StockMarket/StockMarketCosts.ts","webpack:///./src/StockMarket/StockMarketHelpers.ts","webpack:///./src/StockMarket/data/Constants.ts","webpack:///./src/StockMarket/data/InitStockMetadata.ts","webpack:///./src/StockMarket/data/TickerHeaderFormatData.ts","webpack:///./src/StockMarket/ui/InfoAndPurchases.tsx","webpack:///./src/StockMarket/ui/PlaceOrderModal.tsx","webpack:///./src/StockMarket/ui/StockMarketRoot.tsx","webpack:///./src/StockMarket/ui/StockTicker.tsx","webpack:///./src/StockMarket/ui/StockTickerHeaderText.tsx","webpack:///./src/StockMarket/ui/StockTickerOrder.tsx","webpack:///./src/StockMarket/ui/StockTickerOrderList.tsx","webpack:///./src/StockMarket/ui/StockTickerPositionText.tsx","webpack:///./src/StockMarket/ui/StockTickerTxButton.tsx","webpack:///./src/StockMarket/ui/StockTickers.tsx","webpack:///./src/StockMarket/ui/StockTickersConfig.tsx","webpack:///./src/Terminal.ts","webpack:///./src/Terminal/HelpText.ts","webpack:///./src/Terminal/OutputTypes.tsx","webpack:///./src/Terminal/Parser.ts","webpack:///./src/Terminal/Terminal.ts","webpack:///./src/Terminal/TerminalEvents.ts","webpack:///./src/Terminal/commands/alias.ts","webpack:///./src/Terminal/commands/analyze.ts","webpack:///./src/Terminal/commands/apr1.ts","webpack:///./src/Terminal/commands/backdoor.ts","webpack:///./src/Terminal/commands/buy.ts","webpack:///./src/Terminal/commands/cat.ts","webpack:///./src/Terminal/commands/cd.ts","webpack:///./src/Terminal/commands/changelog.ts","webpack:///./src/Terminal/commands/check.ts","webpack:///./src/Terminal/commands/common/editor.ts","webpack:///./src/Terminal/commands/connect.ts","webpack:///./src/Terminal/commands/cp.ts","webpack:///./src/Terminal/commands/download.ts","webpack:///./src/Terminal/commands/expr.ts","webpack:///./src/Terminal/commands/free.ts","webpack:///./src/Terminal/commands/grow.ts","webpack:///./src/Terminal/commands/hack.ts","webpack:///./src/Terminal/commands/help.ts","webpack:///./src/Terminal/commands/history.ts","webpack:///./src/Terminal/commands/home.ts","webpack:///./src/Terminal/commands/hostname.ts","webpack:///./src/Terminal/commands/kill.ts","webpack:///./src/Terminal/commands/killall.ts","webpack:///./src/Terminal/commands/ls.tsx","webpack:///./src/Terminal/commands/lscpu.ts","webpack:///./src/Terminal/commands/mem.ts","webpack:///./src/Terminal/commands/mv.ts","webpack:///./src/Terminal/commands/nano.ts","webpack:///./src/Terminal/commands/ps.ts","webpack:///./src/Terminal/commands/rm.ts","webpack:///./src/Terminal/commands/run.ts","webpack:///./src/Terminal/commands/runProgram.ts","webpack:///./src/Terminal/commands/runScript.ts","webpack:///./src/Terminal/commands/scan.ts","webpack:///./src/Terminal/commands/scananalyze.ts","webpack:///./src/Terminal/commands/scp.ts","webpack:///./src/Terminal/commands/sudov.ts","webpack:///./src/Terminal/commands/tail.ts","webpack:///./src/Terminal/commands/top.ts","webpack:///./src/Terminal/commands/unalias.ts","webpack:///./src/Terminal/commands/vim.ts","webpack:///./src/Terminal/commands/weaken.ts","webpack:///./src/Terminal/commands/wget.ts","webpack:///./src/Terminal/getTabCompletionPossibilities.ts","webpack:///./src/Terminal/ui/TerminalActionTimer.tsx","webpack:///./src/Terminal/ui/TerminalInput.tsx","webpack:///./src/Terminal/ui/TerminalRoot.tsx","webpack:///./src/TextFile.ts","webpack:///./src/Themes/Styles.ts","webpack:///./src/Themes/Themes.ts","webpack:///./src/Themes/data/dark-blue/index.ts","webpack:///./src/Themes/data/dark-plus/index.ts","webpack:///./src/Themes/data/default-lite/index.ts","webpack:///./src/Themes/data/default/index.ts","webpack:///./src/Themes/data/discord-like/index.ts","webpack:///./src/Themes/data/dracula/index.ts","webpack:///./src/Themes/data/iron-man/index.ts","webpack:///./src/Themes/data/light/index.ts","webpack:///./src/Themes/data/mayukai-dark/index.ts","webpack:///./src/Themes/data/monokai-ish/index.ts","webpack:///./src/Themes/data/muted-gold-blue/index.ts","webpack:///./src/Themes/data/one-dark/index.ts","webpack:///./src/Themes/data/purple/index.ts","webpack:///./src/Themes/data/smooth-green/index.ts","webpack:///./src/Themes/data/warmer/index.ts","webpack:///./src/Themes/data/zerenity/index.ts","webpack:///./src/Themes/ui/StyleEditorButton.tsx","webpack:///./src/Themes/ui/StyleEditorModal.tsx","webpack:///./src/Themes/ui/Theme.tsx","webpack:///./src/Themes/ui/ThemeBrowser.tsx","webpack:///./src/Themes/ui/ThemeCollaborate.tsx","webpack:///./src/Themes/ui/ThemeEditorButton.tsx","webpack:///./src/Themes/ui/ThemeEditorModal.tsx","webpack:///./src/Themes/ui/ThemeEntry.tsx","webpack:///./src/ThirdParty/JSInterpreter.js","webpack:///./src/ThirdParty/colorUtils.ts","webpack:///./src/Types/Jsonable.ts","webpack:///./src/Types/Record.ts","webpack:///./src/Types/strings.ts","webpack:///./src/UncaughtPromiseHandler.ts","webpack:///./src/Work/ClassWork.tsx","webpack:///./src/Work/CompanyWork.tsx","webpack:///./src/Work/CreateProgramWork.ts","webpack:///./src/Work/CrimeWork.ts","webpack:///./src/Work/Enums.ts","webpack:///./src/Work/FactionWork.tsx","webpack:///./src/Work/Formulas.ts","webpack:///./src/Work/GraftingWork.tsx","webpack:///./src/Work/InvalidWork.ts","webpack:///./src/Work/Work.ts","webpack:///./src/Work/WorkStats.ts","webpack:///./src/data/codingcontracttypes.ts","webpack:///./src/db.tsx","webpack:///./src/engine.tsx","webpack:///./src/hash/hash.ts","webpack:///./src/index.tsx","webpack:///./src/types.ts","webpack:///./src/ui/ActiveScripts/ActiveScriptsPage.tsx","webpack:///./src/ui/ActiveScripts/ActiveScriptsRoot.tsx","webpack:///./src/ui/ActiveScripts/RecentScriptAccordion.tsx","webpack:///./src/ui/ActiveScripts/RecentScriptsPage.tsx","webpack:///./src/ui/ActiveScripts/ScriptProduction.tsx","webpack:///./src/ui/ActiveScripts/ServerAccordion.tsx","webpack:///./src/ui/ActiveScripts/ServerAccordionContent.tsx","webpack:///./src/ui/ActiveScripts/ServerAccordions.tsx","webpack:///./src/ui/ActiveScripts/WorkerScriptAccordion.tsx","webpack:///./src/ui/Apr1.tsx","webpack:///./src/ui/CharacterStats.tsx","webpack:///./src/ui/Components/ButtonWithTooltip.tsx","webpack:///./src/ui/Components/CustomBoundary.tsx","webpack:///./src/ui/Enums.ts","webpack:///./src/ui/ErrorBoundary.tsx","webpack:///./src/ui/GameRoot.tsx","webpack:///./src/ui/InteractiveTutorial/ITutorialEvents.ts","webpack:///./src/ui/InteractiveTutorial/InteractiveTutorialRoot.tsx","webpack:///./src/ui/LoadingScreen.tsx","webpack:///./src/ui/MD/MD.tsx","webpack:///./src/ui/MD/a.tsx","webpack:///./src/ui/MD/code.tsx","webpack:///./src/ui/MD/components.tsx","webpack:///./src/ui/React/ANSIITypography.tsx","webpack:///./src/ui/React/AlertManager.tsx","webpack:///./src/ui/React/BypassWrapper.tsx","webpack:///./src/ui/React/CharacterOverview.tsx","webpack:///./src/ui/React/CinematicLine.tsx","webpack:///./src/ui/React/CinematicText.tsx","webpack:///./src/ui/React/CodingContractModal.tsx","webpack:///./src/ui/React/CompanyDropdown.tsx","webpack:///./src/ui/React/ConfirmationModal.tsx","webpack:///./src/ui/React/CopyableText.tsx","webpack:///./src/ui/React/CorruptableText.tsx","webpack:///./src/ui/React/DeleteGameButton.tsx","webpack:///./src/ui/React/DialogBox.tsx","webpack:///./src/ui/React/Documentation.tsx","webpack:///./src/ui/React/Favor.tsx","webpack:///./src/ui/React/HashRate.tsx","webpack:///./src/ui/React/Hashes.tsx","webpack:///./src/ui/React/ImportSave/ComparisonIcon.tsx","webpack:///./src/ui/React/ImportSave/ImportSave.tsx","webpack:///./src/ui/React/KillScriptsModal.tsx","webpack:///./src/ui/React/LogBoxManager.tsx","webpack:///./src/ui/React/Modal.tsx","webpack:///./src/ui/React/Money.tsx","webpack:///./src/ui/React/MoneyRate.tsx","webpack:///./src/ui/React/NumberInput.tsx","webpack:///./src/ui/React/OptionSwitch.tsx","webpack:///./src/ui/React/Overview.tsx","webpack:///./src/ui/React/Progress.tsx","webpack:///./src/ui/React/PromptManager.tsx","webpack:///./src/ui/React/RecoveryRoot.tsx","webpack:///./src/ui/React/Reputation.tsx","webpack:///./src/ui/React/ReputationRate.tsx","webpack:///./src/ui/React/ServerDropdown.tsx","webpack:///./src/ui/React/Snackbar.tsx","webpack:///./src/ui/React/SoftResetButton.tsx","webpack:///./src/ui/React/StaticModal.tsx","webpack:///./src/ui/React/StatsProgressBar.tsx","webpack:///./src/ui/React/StatsRow.tsx","webpack:///./src/ui/React/StatsTable.tsx","webpack:///./src/ui/React/Table.tsx","webpack:///./src/ui/React/TablePaginationActionsAll.tsx","webpack:///./src/ui/React/WorldMap.tsx","webpack:///./src/ui/React/hooks.ts","webpack:///./src/ui/Router.ts","webpack:///./src/ui/WorkInProgressRoot.tsx","webpack:///./src/ui/formatNumber.ts","webpack:///./src/utils/CompressionContracts.ts","webpack:///./src/utils/EnumHelper.ts","webpack:///./src/utils/ErrorHelper.ts","webpack:///./src/utils/EventEmitter.ts","webpack:///./src/utils/HammingCodeTools.ts","webpack:///./src/utils/Heap.ts","webpack:///./src/utils/IPAddress.ts","webpack:///./src/utils/JSONReviver.ts","webpack:///./src/utils/MoneySourceTracker.ts","webpack:///./src/utils/StringHelperFunctions.ts","webpack:///./src/utils/V2Modal.tsx","webpack:///./src/utils/Validator.ts","webpack:///./src/utils/calculateEffectWithFactors.ts","webpack:///./src/utils/helpers/ArrayHelpers.ts","webpack:///./src/utils/helpers/N00dles.ts","webpack:///./src/utils/helpers/addOffset.ts","webpack:///./src/utils/helpers/createProgressBarText.ts","webpack:///./src/utils/helpers/createRandomString.ts","webpack:///./src/utils/helpers/enum.ts","webpack:///./src/utils/helpers/exceptionAlert.ts","webpack:///./src/utils/helpers/formatTime.ts","webpack:///./src/utils/helpers/getKeyList.ts","webpack:///./src/utils/helpers/getRandomByte.ts","webpack:///./src/utils/helpers/getRandomInt.ts","webpack:///./src/utils/helpers/getTimestamp.ts","webpack:///./src/utils/helpers/isPowerOfTwo.ts","webpack:///./src/utils/helpers/isValidNumber.ts","webpack:///./src/utils/helpers/keyCodes.ts","webpack:///./src/utils/helpers/roundToTwo.ts","webpack:///./src/utils/helpers/scriptKey.ts","webpack:///./src/utils/helpers/string.ts","webpack:///./src/utils/helpers/typeAssertion.ts","webpack:///./src/utils/v1APIBreak.ts","webpack:///./src/utils/v2APIBreak.ts","webpack:///./src/Documentation/doc/advanced/bitnodes.md","webpack:///./src/Documentation/doc/advanced/bladeburners.md","webpack:///./src/Documentation/doc/advanced/corporations.md","webpack:///./src/Documentation/doc/advanced/gang.md","webpack:///./src/Documentation/doc/advanced/grafting.md","webpack:///./src/Documentation/doc/advanced/hacknetservers.md","webpack:///./src/Documentation/doc/advanced/intelligence.md","webpack:///./src/Documentation/doc/advanced/offlineandbonustime.md","webpack:///./src/Documentation/doc/advanced/sleeves.md","webpack:///./src/Documentation/doc/advanced/sourcefiles.md","webpack:///./src/Documentation/doc/advanced/stanek.md","webpack:///./src/Documentation/doc/basic/augmentations.md","webpack:///./src/Documentation/doc/basic/codingcontracts.md","webpack:///./src/Documentation/doc/basic/companies.md","webpack:///./src/Documentation/doc/basic/crimes.md","webpack:///./src/Documentation/doc/basic/factions.md","webpack:///./src/Documentation/doc/basic/hacking.md","webpack:///./src/Documentation/doc/basic/hacknet_nodes.md","webpack:///./src/Documentation/doc/basic/infiltration.md","webpack:///./src/Documentation/doc/basic/programs.md","webpack:///./src/Documentation/doc/basic/ram.md","webpack:///./src/Documentation/doc/basic/reputation.md","webpack:///./src/Documentation/doc/basic/scripts.md","webpack:///./src/Documentation/doc/basic/servers.md","webpack:///./src/Documentation/doc/basic/stats.md","webpack:///./src/Documentation/doc/basic/stockmarket.md","webpack:///./src/Documentation/doc/basic/terminal.md","webpack:///./src/Documentation/doc/basic/world.md","webpack:///./src/Documentation/doc/changelog.md","webpack:///./src/Documentation/doc/help/bitnode_order.md","webpack:///./src/Documentation/doc/help/getting_started.md","webpack:///./src/Documentation/doc/help/tools_and_resources.md","webpack:///./src/Documentation/doc/index.md","webpack:///./src/Documentation/doc/migrations/v1.md","webpack:///./src/Documentation/doc/migrations/v2.md","webpack:///./src/Documentation/doc/programming/game_frozen.md","webpack:///./src/Documentation/doc/programming/hackingalgorithms.md","webpack:///./src/Documentation/doc/programming/learn.md","webpack:///./src/Documentation/doc/programming/remote_api.md","webpack:///./src/ScriptEditor/NetscriptDefinitions.d.ts","webpack:///webpack/bootstrap","webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/amd options","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce","webpack:///webpack/startup"],"sourcesContent":["import React from \"react\";\n\nimport { Box, Typography } from \"@mui/material\";\n\nimport { Achievement } from \"./Achievements\";\nimport { Settings } from \"../Settings/Settings\";\nimport { AchievementIcon } from \"./AchievementIcon\";\n\ninterface IProps {\n achievement: Achievement;\n unlockedOn?: number;\n cssFiltersUnlocked: string;\n cssFiltersLocked: string;\n}\n\nexport function AchievementEntry({\n achievement,\n unlockedOn,\n cssFiltersUnlocked,\n cssFiltersLocked,\n}: IProps): JSX.Element {\n if (!achievement) return <>;\n const isUnlocked = !!unlockedOn;\n\n const mainColor = isUnlocked ? Settings.theme.primary : Settings.theme.secondarylight;\n\n let achievedOn = \"\";\n if (unlockedOn) {\n achievedOn = new Date(unlockedOn).toLocaleString();\n }\n\n return (\n \n \n \n \n \n {achievement.Name}\n \n \n {achievement.Description}\n \n {isUnlocked && (\n \n Acquired on {achievedOn}\n \n )}\n \n \n \n );\n}\n","import React, { useState } from \"react\";\n\nimport { Box } from \"@mui/material\";\n\nimport { Achievement } from \"./Achievements\";\nimport { Settings } from \"../Settings/Settings\";\n\ninterface IProps {\n achievement: Achievement;\n unlocked: boolean;\n colorFilters: string;\n size: string;\n}\n\nexport function AchievementIcon({ achievement, unlocked, colorFilters, size }: IProps): JSX.Element {\n const [imgLoaded, setImgLoaded] = useState(false);\n const mainColor = unlocked ? Settings.theme.primarydark : Settings.theme.secondarydark;\n\n if (!achievement.Icon) return <>;\n return (\n \n setImgLoaded(true)}\n alt={achievement.Name}\n />\n \n );\n}\n","import React from \"react\";\n\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography } from \"@mui/material\";\n\nimport { AchievementEntry } from \"./AchievementEntry\";\nimport { Achievement, PlayerAchievement } from \"./Achievements\";\nimport { Settings } from \"../Settings/Settings\";\nimport { getFiltersFromHex } from \"../ThirdParty/colorUtils\";\nimport { CorruptableText } from \"../ui/React/CorruptableText\";\n\ninterface IProps {\n achievements: Achievement[];\n playerAchievements: PlayerAchievement[];\n}\n\nexport function AchievementList({ achievements, playerAchievements }: IProps): JSX.Element {\n // Need to transform the primary color into css filters to change the color of the SVG.\n const cssPrimary = getFiltersFromHex(Settings.theme.primary);\n const cssSecondary = getFiltersFromHex(Settings.theme.secondary);\n\n const data = achievements\n .map((achievement) => ({\n achievement,\n unlockedOn: playerAchievements.find((playerAchievement) => playerAchievement.ID === achievement.ID)?.unlockedOn,\n }))\n .sort((a, b) => (b.unlockedOn ?? 0) - (a.unlockedOn ?? 0));\n\n const unlocked = data.filter((entry) => entry.unlockedOn);\n\n // Hidden achievements\n const secret = data.filter((entry) => !entry.unlockedOn && entry.achievement.Secret);\n\n // Locked behind locked content (bitnode x)\n const unavailable = data.filter(\n (entry) =>\n !entry.unlockedOn && !entry.achievement.Secret && entry.achievement.Visible && !entry.achievement.Visible(),\n );\n\n // Remaining achievements\n const locked = data\n .filter((entry) => !unlocked.map((u) => u.achievement.ID).includes(entry.achievement.ID))\n .filter((entry) => !secret.map((u) => u.achievement.ID).includes(entry.achievement.ID))\n .filter((entry) => !unavailable.map((u) => u.achievement.ID).includes(entry.achievement.ID));\n\n return (\n \n \n {unlocked.length > 0 && (\n \n \n \n Acquired ({unlocked.length}/{data.length})\n \n \n \n {unlocked.map((item) => (\n \n ))}\n \n \n )}\n\n {locked.length > 0 && (\n \n \n \n Locked ({locked.length} remaining)\n \n \n \n {locked.map((item) => (\n \n ))}\n \n \n )}\n\n {unavailable.length > 0 && (\n \n \n \n Unavailable ({unavailable.length} remaining)\n \n \n \n \n {unavailable.length} additional achievements hidden behind content you don't have access to.\n \n \n \n )}\n\n {secret.length > 0 && (\n \n \n \n Secret ({secret.length} remaining)\n \n \n \n \n {secret.map((item) => (\n \n \n
\n
\n ))}\n
\n
\n
\n )}\n
\n \n );\n}\n","import {\n AugmentationName,\n BlackOperationName,\n CityName,\n CompletedProgramName,\n CorpUnlockName,\n FactionName,\n IndustryType,\n} from \"@enums\";\nimport { SkillNames } from \"../Bladeburner/data/SkillNames\";\nimport { Skills } from \"../Bladeburner/Skills\";\nimport { CONSTANTS } from \"../Constants\";\nimport { Exploit } from \"../Exploits/Exploit\";\nimport { Factions } from \"../Faction/Factions\";\nimport { AllGangs } from \"../Gang/AllGangs\";\nimport { GangConstants } from \"../Gang/data/Constants\";\nimport { HacknetNodeConstants, HacknetServerConstants } from \"../Hacknet/data/Constants\";\nimport { hasHacknetServers } from \"../Hacknet/HacknetHelpers\";\nimport { HacknetNode } from \"../Hacknet/HacknetNode\";\nimport { HacknetServer } from \"../Hacknet/HacknetServer\";\nimport { Player } from \"@player\";\nimport { GetAllServers, GetServer } from \"../Server/AllServers\";\nimport { SpecialServers } from \"../Server/data/SpecialServers\";\nimport { Server } from \"../Server/Server\";\nimport { Router } from \"../ui/GameRoot\";\nimport { Page } from \"../ui/Router\";\nimport data from \"./AchievementData.json\";\nimport { isClassWork } from \"../Work/ClassWork\";\nimport { currentNodeMults } from \"../BitNode/BitNodeMultipliers\";\nimport { workerScripts } from \"../Netscript/WorkerScripts\";\n\nimport { getRecordValues } from \"../Types/Record\";\n\n// Unable to correctly cast the JSON data into AchievementDataJson type otherwise...\nconst achievementData = ((data)).achievements;\n\nexport interface Achievement {\n ID: string;\n Icon?: string;\n Name?: string;\n Description?: string;\n Secret?: boolean;\n Condition: () => boolean;\n Visible?: () => boolean;\n AdditionalUnlock?: string[]; // IDs of achievements that should be awarded when awarding this one\n}\n\nexport interface PlayerAchievement {\n ID: string;\n unlockedOn?: number;\n}\n\nexport interface AchievementDataJson {\n achievements: Record;\n}\n\nexport interface AchievementData {\n ID: string;\n Name: string;\n Description: string;\n}\n\nfunction bitNodeFinishedState(): boolean {\n const wd = GetServer(SpecialServers.WorldDaemon);\n if (!(wd instanceof Server)) return false;\n if (wd.backdoorInstalled) return true;\n return Player.bladeburner !== null && BlackOperationName.OperationDaedalus in Player.bladeburner.blackops;\n}\n\nfunction hasAccessToSF(bn: number): boolean {\n return Player.bitNodeN === bn || Player.sourceFileLvl(bn) > 0;\n}\n\nfunction knowsAboutBitverse(): boolean {\n return Player.sourceFiles.size > 0;\n}\n\nfunction sfAchievements(): Record {\n const achs: Record = {};\n for (let i = 1; i <= 12; i++) {\n const ID = `SF${i}.1`;\n achs[ID] = {\n ...achievementData[ID],\n Icon: ID,\n Visible: knowsAboutBitverse,\n Condition: () => Player.sourceFileLvl(i) >= 1,\n };\n }\n return achs;\n}\n\nexport const achievements: Record = {\n [FactionName.CyberSec.toUpperCase()]: {\n ...achievementData[FactionName.CyberSec.toUpperCase()],\n Icon: \"CSEC\",\n Condition: () => Player.factions.includes(FactionName.CyberSec),\n },\n [FactionName.NiteSec.toUpperCase()]: {\n ...achievementData[FactionName.NiteSec.toUpperCase()],\n Icon: FactionName.NiteSec,\n Condition: () => Player.factions.includes(FactionName.NiteSec),\n },\n THE_BLACK_HAND: {\n ...achievementData.THE_BLACK_HAND,\n Icon: \"TBH\",\n Condition: () => Player.factions.includes(FactionName.TheBlackHand),\n },\n [FactionName.BitRunners.toUpperCase()]: {\n ...achievementData[FactionName.BitRunners.toUpperCase()],\n Icon: FactionName.BitRunners.toLowerCase(),\n Condition: () => Player.factions.includes(FactionName.BitRunners),\n },\n [FactionName.Daedalus.toUpperCase()]: {\n ...achievementData[FactionName.Daedalus.toUpperCase()],\n Icon: FactionName.Daedalus.toLowerCase(),\n Condition: () => Player.factions.includes(FactionName.Daedalus),\n },\n THE_COVENANT: {\n ...achievementData.THE_COVENANT,\n Icon: FactionName.TheCovenant.toLowerCase().replace(/ /g, \"\"),\n Condition: () => Player.factions.includes(FactionName.TheCovenant),\n },\n [FactionName.Illuminati.toUpperCase()]: {\n ...achievementData[FactionName.Illuminati.toUpperCase()],\n Icon: FactionName.Illuminati.toLowerCase(),\n Condition: () => Player.factions.includes(FactionName.Illuminati),\n },\n \"BRUTESSH.EXE\": {\n ...achievementData[\"BRUTESSH.EXE\"],\n Icon: \"p0\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.bruteSsh),\n },\n \"FTPCRACK.EXE\": {\n ...achievementData[\"FTPCRACK.EXE\"],\n Icon: \"p1\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.ftpCrack),\n },\n //-----------------------------------------------------\n \"RELAYSMTP.EXE\": {\n ...achievementData[\"RELAYSMTP.EXE\"],\n Icon: \"p2\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.relaySmtp),\n },\n \"HTTPWORM.EXE\": {\n ...achievementData[\"HTTPWORM.EXE\"],\n Icon: \"p3\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.httpWorm),\n },\n \"SQLINJECT.EXE\": {\n ...achievementData[\"SQLINJECT.EXE\"],\n Icon: \"p4\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.sqlInject),\n },\n \"FORMULAS.EXE\": {\n ...achievementData[\"FORMULAS.EXE\"],\n Icon: \"formulas\",\n Condition: () => Player.getHomeComputer().programs.includes(CompletedProgramName.formulas),\n },\n ...sfAchievements(),\n MONEY_1Q: {\n ...achievementData.MONEY_1Q,\n Icon: \"$1Q\",\n Condition: () => Player.money >= 1e18,\n },\n MONEY_M1B: {\n ...achievementData.MONEY_M1B,\n Icon: \"-1b\",\n Secret: true,\n Condition: () => Player.money <= -1e9,\n },\n INSTALL_1: {\n ...achievementData.INSTALL_1,\n Icon: \"install\",\n Condition: () => Player.augmentations.length >= 1,\n },\n INSTALL_100: {\n ...achievementData.INSTALL_100,\n Icon: \"install_100\",\n Condition: () => Player.augmentations.length >= 100,\n },\n QUEUE_40: {\n ...achievementData.QUEUE_40,\n Icon: \"queue40\",\n Condition: () => Player.queuedAugmentations.length >= 40,\n },\n HACKING_100000: {\n ...achievementData.HACKING_100000,\n Icon: \"hack100000\",\n Condition: () => Player.skills.hacking >= 100000,\n },\n COMBAT_3000: {\n ...achievementData.COMBAT_3000,\n Icon: \"combat3000\",\n Condition: () =>\n Player.skills.strength >= 3000 &&\n Player.skills.defense >= 3000 &&\n Player.skills.dexterity >= 3000 &&\n Player.skills.agility >= 3000,\n },\n NEUROFLUX_255: {\n ...achievementData.NEUROFLUX_255,\n Icon: \"nf255\",\n Condition: () => Player.augmentations.some((a) => a.name === AugmentationName.NeuroFluxGovernor && a.level >= 255),\n },\n NS2: {\n ...achievementData.NS2,\n Icon: \"ns2\",\n Condition: () => [...Player.getHomeComputer().scripts.values()].some((s) => s.filename.endsWith(\".js\")),\n },\n FROZE: {\n ...achievementData.FROZE,\n Icon: \"forze\",\n Condition: () => location.href.includes(\"noScripts\"),\n },\n RUNNING_SCRIPTS_1000: {\n ...achievementData.RUNNING_SCRIPTS_1000,\n Icon: \"run1000\",\n Condition: (): boolean => workerScripts.size >= 1000,\n },\n DRAIN_SERVER: {\n ...achievementData.DRAIN_SERVER,\n Icon: \"drain\",\n Condition: (): boolean => {\n for (const s of GetAllServers()) {\n if (s instanceof Server) {\n if (s.moneyMax > 0 && s.moneyAvailable === 0) return true;\n }\n }\n return false;\n },\n },\n MAX_RAM: {\n ...achievementData.MAX_RAM,\n Icon: \"maxram\",\n Condition: () => Player.getHomeComputer().maxRam === CONSTANTS.HomeComputerMaxRam,\n },\n MAX_CORES: {\n ...achievementData.MAX_CORES,\n Icon: \"maxcores\",\n Condition: () => Player.getHomeComputer().cpuCores === 8,\n },\n SCRIPTS_30: {\n ...achievementData.SCRIPTS_30,\n Icon: \"folders\",\n Condition: () => Player.getHomeComputer().scripts.size >= 30,\n },\n KARMA_1000000: {\n ...achievementData.KARMA_1000000,\n Icon: \"karma\",\n Secret: true,\n Condition: () => Player.karma <= -1e6,\n },\n STOCK_1q: {\n ...achievementData.STOCK_1q,\n Icon: \"$1Q\",\n Condition: () => Player.moneySourceB.stock >= 1e15,\n },\n DISCOUNT: {\n ...achievementData.DISCOUNT,\n Icon: \"discount\",\n Condition: (): boolean => {\n const p = GetServer(\"powerhouse-fitness\");\n if (!(p instanceof Server)) return false;\n return p.backdoorInstalled;\n },\n },\n SCRIPT_32GB: {\n ...achievementData.SCRIPT_32GB,\n Icon: \"bigcost\",\n Condition: () => [...Player.getHomeComputer().scripts.values()].some((s) => (s.ramUsage ?? 0) >= 32),\n },\n FIRST_HACKNET_NODE: {\n ...achievementData.FIRST_HACKNET_NODE,\n Icon: \"node\",\n Condition: () => !hasHacknetServers() && Player.hacknetNodes.length > 0,\n },\n \"30_HACKNET_NODE\": {\n ...achievementData[\"30_HACKNET_NODE\"],\n Icon: \"hacknet-all\",\n Condition: () => !hasHacknetServers() && Player.hacknetNodes.length >= 30,\n },\n MAX_HACKNET_NODE: {\n ...achievementData.MAX_HACKNET_NODE,\n Icon: \"hacknet-max\",\n Condition: (): boolean => {\n if (hasHacknetServers()) return false;\n for (const h of Player.hacknetNodes) {\n if (!(h instanceof HacknetNode)) return false;\n if (\n h.ram === HacknetNodeConstants.MaxRam &&\n h.cores === HacknetNodeConstants.MaxCores &&\n h.level === HacknetNodeConstants.MaxLevel\n )\n return true;\n }\n return false;\n },\n },\n HACKNET_NODE_10M: {\n ...achievementData.HACKNET_NODE_10M,\n Icon: \"hacknet-10m\",\n Condition: () => !hasHacknetServers() && Player.moneySourceB.hacknet >= 10e6,\n },\n REPUTATION_10M: {\n ...achievementData.REPUTATION_10M,\n Icon: \"reputation\",\n Condition: () => Object.values(Factions).some((f) => f.playerReputation >= 10e6),\n },\n DONATION: {\n ...achievementData.DONATION,\n Icon: \"donation\",\n Condition: () =>\n Object.values(Factions).some(\n (f) => f.favor >= Math.floor(CONSTANTS.BaseFavorToDonate * currentNodeMults.RepToDonateToFaction),\n ),\n },\n TRAVEL: {\n ...achievementData.TRAVEL,\n Icon: \"TRAVEL\",\n Condition: () => Player.city !== CityName.Sector12,\n },\n WORKOUT: {\n ...achievementData.WORKOUT,\n Icon: \"WORKOUT\",\n Condition: () => isClassWork(Player.currentWork) && Player.currentWork.isGym(),\n },\n TOR: {\n ...achievementData.TOR,\n Icon: \"TOR\",\n Condition: () => Player.hasTorRouter(),\n },\n HOSPITALIZED: {\n ...achievementData.HOSPITALIZED,\n Icon: \"OUCH\",\n Condition: () => Player.moneySourceB.hospitalization !== 0,\n },\n GANG: {\n ...achievementData.GANG,\n Icon: \"GANG\",\n Visible: () => hasAccessToSF(2),\n Condition: () => Player.gang !== null,\n },\n FULL_GANG: {\n ...achievementData.FULL_GANG,\n Icon: \"GANGMAX\",\n Visible: () => hasAccessToSF(2),\n Condition: () => Player.gang !== null && Player.gang.members.length === GangConstants.MaximumGangMembers,\n },\n GANG_TERRITORY: {\n ...achievementData.GANG_TERRITORY,\n Icon: \"GANG100%\",\n Visible: () => hasAccessToSF(2),\n Condition: () => Player.gang !== null && AllGangs[Player.gang.facName].territory >= 0.999,\n },\n GANG_MEMBER_POWER: {\n ...achievementData.GANG_MEMBER_POWER,\n Icon: \"GANG10000\",\n Visible: () => hasAccessToSF(2),\n Condition: () =>\n Player.gang !== null &&\n Player.gang.members.some(\n (m) =>\n m.hack >= 10000 || m.str >= 10000 || m.def >= 10000 || m.dex >= 10000 || m.agi >= 10000 || m.cha >= 10000,\n ),\n },\n CORPORATION: {\n ...achievementData.CORPORATION,\n Icon: \"CORP\",\n Visible: () => hasAccessToSF(3),\n Condition: () => Player.corporation !== null,\n },\n CORPORATION_BRIBE: {\n ...achievementData.CORPORATION_BRIBE,\n Icon: \"CORPLOBBY\",\n Visible: () => hasAccessToSF(3),\n Condition: () => !!Player.corporation && Player.corporation.unlocks.has(CorpUnlockName.GovernmentPartnership),\n },\n CORPORATION_PROD_1000: {\n ...achievementData.CORPORATION_PROD_1000,\n Icon: \"CORP1000\",\n Visible: () => hasAccessToSF(3),\n Condition: () => {\n if (!Player.corporation) return false;\n for (const division of Player.corporation.divisions.values()) {\n if (division.productionMult >= 1000) return true;\n }\n return false;\n },\n },\n CORPORATION_EMPLOYEE_3000: {\n ...achievementData.CORPORATION_EMPLOYEE_3000,\n Icon: \"CORPCITY\",\n Visible: () => hasAccessToSF(3),\n Condition: (): boolean => {\n if (!Player.corporation) return false;\n for (const division of Player.corporation.divisions.values()) {\n const totalEmployees = getRecordValues(division.offices).reduce((a, b) => a + b.numEmployees, 0);\n if (totalEmployees >= 3000) return true;\n }\n return false;\n },\n },\n CORPORATION_REAL_ESTATE: {\n ...achievementData.CORPORATION_REAL_ESTATE,\n Icon: \"CORPRE\",\n Name: \"Own the land\",\n Description: \"Expand to the Real Estate division.\",\n Visible: () => hasAccessToSF(3),\n Condition: () => {\n if (!Player.corporation) return false;\n for (const division of Player.corporation.divisions.values()) {\n if (division.type === IndustryType.RealEstate) return true;\n }\n return false;\n },\n },\n INTELLIGENCE_255: {\n ...achievementData.INTELLIGENCE_255,\n Icon: \"INT255\",\n Visible: () => hasAccessToSF(5),\n Condition: () => Player.skills.intelligence >= 255,\n },\n BLADEBURNER_DIVISION: {\n ...achievementData.BLADEBURNER_DIVISION,\n Icon: \"BLADE\",\n Visible: () => hasAccessToSF(6),\n Condition: () => Player.bladeburner !== null,\n },\n BLADEBURNER_OVERCLOCK: {\n ...achievementData.BLADEBURNER_OVERCLOCK,\n Icon: \"BLADEOVERCLOCK\",\n Visible: () => hasAccessToSF(6),\n Condition: () =>\n Player.bladeburner !== null &&\n Player.bladeburner.skills[SkillNames.Overclock] === Skills[SkillNames.Overclock].maxLvl,\n },\n BLADEBURNER_UNSPENT_100000: {\n ...achievementData.BLADEBURNER_UNSPENT_100000,\n Icon: \"BLADE100K\",\n Visible: () => hasAccessToSF(6),\n Condition: () => Player.bladeburner !== null && Player.bladeburner.skillPoints >= 100000,\n },\n \"4S\": {\n ...achievementData[\"4S\"],\n Icon: \"4S\",\n Condition: () => Player.has4SData,\n },\n FIRST_HACKNET_SERVER: {\n ...achievementData.FIRST_HACKNET_SERVER,\n Icon: \"HASHNET\",\n Visible: () => hasAccessToSF(9),\n Condition: () => hasHacknetServers() && Player.hacknetNodes.length > 0,\n AdditionalUnlock: [achievementData.FIRST_HACKNET_NODE.ID],\n },\n ALL_HACKNET_SERVER: {\n ...achievementData.ALL_HACKNET_SERVER,\n Icon: \"HASHNETALL\",\n Visible: () => hasAccessToSF(9),\n Condition: () => hasHacknetServers() && Player.hacknetNodes.length === HacknetServerConstants.MaxServers,\n AdditionalUnlock: [achievementData[\"30_HACKNET_NODE\"].ID],\n },\n MAX_HACKNET_SERVER: {\n ...achievementData.MAX_HACKNET_SERVER,\n Icon: \"HASHNETALL\",\n Visible: () => hasAccessToSF(9),\n Condition: (): boolean => {\n if (!hasHacknetServers()) return false;\n for (const h of Player.hacknetNodes) {\n if (typeof h !== \"string\") return false;\n const hs = GetServer(h);\n if (!(hs instanceof HacknetServer)) return false;\n if (\n hs.maxRam === HacknetServerConstants.MaxRam &&\n hs.cores === HacknetServerConstants.MaxCores &&\n hs.level === HacknetServerConstants.MaxLevel &&\n hs.cache === HacknetServerConstants.MaxCache\n )\n return true;\n }\n return false;\n },\n AdditionalUnlock: [achievementData.MAX_HACKNET_NODE.ID],\n },\n HACKNET_SERVER_1B: {\n ...achievementData.HACKNET_SERVER_1B,\n Icon: \"HASHNETMONEY\",\n Visible: () => hasAccessToSF(9),\n Condition: () => hasHacknetServers() && Player.moneySourceB.hacknet >= 1e9,\n AdditionalUnlock: [achievementData.HACKNET_NODE_10M.ID],\n },\n MAX_CACHE: {\n ...achievementData.MAX_CACHE,\n Icon: \"HASHNETCAP\",\n Visible: () => hasAccessToSF(9),\n Condition: () =>\n hasHacknetServers() &&\n Player.hashManager.hashes === Player.hashManager.capacity &&\n Player.hashManager.capacity > 0,\n },\n SLEEVE_8: {\n ...achievementData.SLEEVE_8,\n Icon: \"SLEEVE8\",\n Visible: () => hasAccessToSF(10),\n Condition: () => Player.sleeves.length === 8 && Player.sourceFileLvl(10) === 3,\n },\n INDECISIVE: {\n ...achievementData.INDECISIVE,\n Icon: \"1H\",\n Visible: knowsAboutBitverse,\n Condition: (function () {\n let c = 0;\n setInterval(() => {\n if (Router.page() === Page.BitVerse) {\n c++;\n } else {\n c = 0;\n }\n }, 60 * 1000);\n return () => c > 60;\n })(),\n },\n FAST_BN: {\n ...achievementData.FAST_BN,\n Icon: \"2DAYS\",\n Visible: knowsAboutBitverse,\n Condition: () => bitNodeFinishedState() && Player.playtimeSinceLastBitnode < 1000 * 60 * 60 * 24 * 2,\n },\n CHALLENGE_BN1: {\n ...achievementData.CHALLENGE_BN1,\n Icon: \"BN1+\",\n Visible: knowsAboutBitverse,\n Condition: () =>\n Player.bitNodeN === 1 &&\n bitNodeFinishedState() &&\n Player.getHomeComputer().maxRam <= 128 &&\n Player.getHomeComputer().cpuCores === 1,\n },\n CHALLENGE_BN2: {\n ...achievementData.CHALLENGE_BN2,\n Icon: \"BN2+\",\n Visible: () => hasAccessToSF(2),\n Condition: () => Player.bitNodeN === 2 && bitNodeFinishedState() && Player.gang === null,\n },\n CHALLENGE_BN3: {\n ...achievementData.CHALLENGE_BN3,\n Icon: \"BN3+\",\n Visible: () => hasAccessToSF(3),\n Condition: () => Player.bitNodeN === 3 && bitNodeFinishedState() && Player.corporation === null,\n },\n CHALLENGE_BN6: {\n ...achievementData.CHALLENGE_BN6,\n Icon: \"BN6+\",\n Visible: () => hasAccessToSF(6),\n Condition: () => Player.bitNodeN === 6 && bitNodeFinishedState() && Player.bladeburner === null,\n },\n CHALLENGE_BN7: {\n ...achievementData.CHALLENGE_BN7,\n Icon: \"BN7+\",\n Visible: () => hasAccessToSF(7),\n Condition: () => Player.bitNodeN === 7 && bitNodeFinishedState() && Player.bladeburner === null,\n },\n CHALLENGE_BN8: {\n ...achievementData.CHALLENGE_BN8,\n Icon: \"BN8+\",\n Visible: () => hasAccessToSF(8),\n Condition: () => Player.bitNodeN === 8 && bitNodeFinishedState() && !Player.has4SData && !Player.has4SDataTixApi,\n },\n CHALLENGE_BN9: {\n ...achievementData.CHALLENGE_BN9,\n Icon: \"BN9+\",\n Visible: () => hasAccessToSF(9),\n Condition: () =>\n Player.bitNodeN === 9 &&\n bitNodeFinishedState() &&\n Player.moneySourceB.hacknet === 0 &&\n Player.moneySourceB.hacknet_expenses === 0,\n },\n CHALLENGE_BN10: {\n ...achievementData.CHALLENGE_BN10,\n Icon: \"BN10+\",\n Visible: () => hasAccessToSF(10),\n Condition: () =>\n Player.bitNodeN === 10 &&\n bitNodeFinishedState() &&\n !Player.sleeves.some(\n (s) =>\n s.augmentations.length > 0 ||\n s.exp.hacking > 0 ||\n s.exp.strength > 0 ||\n s.exp.defense > 0 ||\n s.exp.agility > 0 ||\n s.exp.dexterity > 0 ||\n s.exp.charisma > 0,\n ),\n },\n CHALLENGE_BN12: {\n ...achievementData.CHALLENGE_BN12,\n Icon: \"BN12+\",\n Visible: () => hasAccessToSF(12),\n Condition: () => Player.sourceFileLvl(12) >= 50,\n },\n BYPASS: {\n ...achievementData.BYPASS,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.Bypass),\n },\n PROTOTYPETAMPERING: {\n ...achievementData.PROTOTYPETAMPERING,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.PrototypeTampering),\n },\n UNCLICKABLE: {\n ...achievementData.UNCLICKABLE,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.Unclickable),\n },\n UNDOCUMENTEDFUNCTIONCALL: {\n ...achievementData.UNDOCUMENTEDFUNCTIONCALL,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.UndocumentedFunctionCall),\n },\n TIMECOMPRESSION: {\n ...achievementData.TIMECOMPRESSION,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.TimeCompression),\n },\n REALITYALTERATION: {\n ...achievementData.REALITYALTERATION,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.RealityAlteration),\n },\n N00DLES: {\n ...achievementData.N00DLES,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.N00dles),\n },\n EDITSAVEFILE: {\n ...achievementData.EDITSAVEFILE,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.EditSaveFile),\n },\n UNACHIEVABLE: {\n ...achievementData.UNACHIEVABLE,\n Icon: \"SF-1\",\n Secret: true,\n // Hey Players! Yes, you're supposed to modify this to get the achievement!\n Condition: () => false,\n },\n CHALLENGE_BN13: {\n ...achievementData.CHALLENGE_BN13,\n Icon: \"BN13+\",\n Visible: () => hasAccessToSF(13),\n Condition: () =>\n Player.bitNodeN === 13 &&\n bitNodeFinishedState() &&\n !Player.augmentations.some((a) => a.name === AugmentationName.StaneksGift1),\n },\n DEVMENU: {\n ...achievementData.DEVMENU,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.YoureNotMeantToAccessThis),\n },\n RAINBOW: {\n ...achievementData.RAINBOW,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.INeedARainbow),\n },\n TRUE_RECURSION: {\n ...achievementData.TRUE_RECURSION,\n Icon: \"SF-1\",\n Secret: true,\n Condition: () => Player.exploits.includes(Exploit.TrueRecursion),\n },\n};\n\n// Steam has a limit of 100 achievement. So these were planned but commented for now.\n// { ID: FactionNames.ECorp.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.ECorp) },\n// { ID: FactionNames.MegaCorp.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.MegaCorp) },\n// { ID: \"BACHMAN_&_ASSOCIATES\", Condition: () => Player.factions.includes(FactionNames.BachmanAssociates) },\n// { ID: \"BLADE_INDUSTRIES\", Condition: () => Player.factions.includes(FactionNames.BladeIndustries) },\n// { ID: FactionNames.NWO.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.NWO) },\n// { ID: \"CLARKE_INCORPORATED\", Condition: () => Player.factions.includes(FactionNames.ClarkeIncorporated) },\n// { ID: \"OMNITEK_INCORPORATED\", Condition: () => Player.factions.includes(FactionNames.OmniTekIncorporated) },\n// { ID: \"FOUR_SIGMA\", Condition: () => Player.factions.includes(FactionNames.FourSigma) },\n// { ID: \"KUAIGONG_INTERNATIONAL\", Condition: () => Player.factions.includes(FactionNames.KuaiGongInternational) },\n// { ID: \"FULCRUM_SECRET_TECHNOLOGIES\", Condition: () => Player.factions.includes(FactionNames.FulcrumSecretTechnologies) },\n// { ID: FactionNames.Aevum.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Aevum) },\n// { ID: FactionNames.Chongqing.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Chongqing) },\n// { ID: FactionNames.Ishima.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Ishima) },\n// { ID: \"NEW_TOKYO\", Condition: () => Player.factions.includes(FactionNames.NewTokyo) },\n// { ID: \"SECTOR-12\", Condition: () => Player.factions.includes(FactionNames.Sector12) },\n// { ID: FactionNames.Volhaven.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Volhaven) },\n// { ID: \"SPEAKERS_FOR_THE_DEAD\", Condition: () => Player.factions.includes(FactionNames.SpeakersForTheDead) },\n// { ID: \"THE_DARK_ARMY\", Condition: () => Player.factions.includes(FactionNames.TheDarkArmy) },\n// { ID: \"THE_SYNDICATE\", Condition: () => Player.factions.includes(FactionNames.TheSyndicate) },\n// { ID: FactionNames.Silhouette.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Silhouette) },\n// { ID: FactionNames.Tetrads.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Tetrads) },\n// { ID: \"SLUM_SNAKES\", Condition: () => Player.factions.includes(FactionNames.SlumSnakes) },\n// { ID: FactionNames.Netburners.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Netburners) },\n// { ID: \"TIAN_DI_HUI\", Condition: () => Player.factions.includes(FactionNames.TianDiHui) },\n// { ID: FactionNames.Bladeburners.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Bladeburners) },\n// { ID: \"DEEPSCANV1.EXE\", Condition: () => Player.getHomeComputer().programs.includes(Programs.DeepscanV1.name) },\n// { ID: \"DEEPSCANV2.EXE\", Condition: () => Player.getHomeComputer().programs.includes(Programs.DeepscanV2.name) },\n// { ID: \"INFILTRATORS\", Condition: () => Player.factions.includes(FactionNames.Infiltrators) },\n// {\n// ID: \"SERVERPROFILER.EXE\",\n// Condition: () => Player.getHomeComputer().programs.includes(Programs.ServerProfiler.name),\n// },\n// { ID: \"AUTOLINK.EXE\", Condition: () => Player.getHomeComputer().programs.includes(Programs.AutoLink.name) },\n// { ID: \"FLIGHT.EXE\", Condition: () => Player.getHomeComputer().programs.includes(Programs.Flight.name) },\n\nexport function calculateAchievements(): void {\n const playerAchievements = Player.achievements.map((a) => a.ID);\n\n const missingAchievements = Object.values(achievements)\n .filter((a) => !playerAchievements.includes(a.ID) && a.Condition())\n // callback returns array of achievement id and id of any in the additional list, flatmap means we have only a 1D array\n .flatMap((a) => [a.ID, ...(a.AdditionalUnlock || [])]);\n\n for (const id of missingAchievements) {\n Player.giveAchievement(id);\n }\n\n // Write all player's achievements to document for Steam/Electron\n // This could be replaced by \"availableAchievements\"\n // if we don't want to grant the save game achievements to steam but only currently available\n document.achievements = [...Player.achievements.map((a) => a.ID)];\n}\n","import React from \"react\";\n\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport { AchievementList } from \"./AchievementList\";\nimport { achievements } from \"./Achievements\";\nimport { Typography } from \"@mui/material\";\nimport { Player } from \"@player\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n width: 50,\n padding: theme.spacing(2),\n userSelect: \"none\",\n },\n }),\n);\n\nexport function AchievementsRoot(): JSX.Element {\n const classes = useStyles();\n return (\n
\n Achievements\n \n
\n );\n}\n","import { Terminal } from \"./Terminal\";\nimport { trimQuotes } from \"./utils/helpers/string\";\n\nexport const Aliases = new Map();\nexport const GlobalAliases = new Map();\n\nexport function loadAliases(saveString: string): void {\n Aliases.clear();\n const parsedAliases: unknown = JSON.parse(saveString);\n if (!parsedAliases || typeof parsedAliases !== \"object\") return;\n for (const [name, alias] of Object.entries(parsedAliases)) {\n if (typeof name === \"string\" && typeof alias === \"string\") Aliases.set(name, alias);\n }\n}\n\nexport function loadGlobalAliases(saveString: string): void {\n GlobalAliases.clear();\n const parsedAliases: unknown = JSON.parse(saveString);\n if (!parsedAliases || typeof parsedAliases !== \"object\") return;\n for (const [name, alias] of Object.entries(parsedAliases)) {\n if (typeof name === \"string\" && typeof alias === \"string\") GlobalAliases.set(name, alias);\n }\n}\n\n// Prints all aliases to terminal\nexport function printAliases(): void {\n for (const [name, alias] of Aliases) Terminal.print(\"alias \" + name + \"=\" + alias);\n for (const [name, alias] of GlobalAliases) Terminal.print(\"global alias \" + name + \"=\" + alias);\n}\n\n// Returns true if successful, false otherwise\nexport function parseAliasDeclaration(dec: string, global = false): boolean {\n const re = /^([\\w|!%,@-]+)=(.+)$/;\n const matches = dec.match(re);\n if (matches == null || matches.length != 3) {\n return false;\n }\n matches[2] = trimQuotes(matches[2]);\n\n if (global) {\n addGlobalAlias(matches[1], matches[2]);\n } else {\n addAlias(matches[1], matches[2]);\n }\n return true;\n}\n\nfunction addAlias(name: string, value: string): void {\n GlobalAliases.delete(name);\n Aliases.set(name, value.trim());\n}\n\nfunction addGlobalAlias(name: string, value: string): void {\n Aliases.delete(name);\n GlobalAliases.set(name, value.trim());\n}\n\nexport function removeAlias(name: string): boolean {\n const hadAlias = Aliases.has(name) || GlobalAliases.has(name);\n Aliases.delete(name);\n GlobalAliases.delete(name);\n return hadAlias;\n}\n\n/**\n * Returns the original string with any aliases substituted in.\n * Aliases are only applied to \"whole words\", one level deep\n * @param origCommand the original command string\n */\nexport function substituteAliases(origCommand: string): string {\n return applyAliases(origCommand);\n}\n\n/**\n * Recursively evaluates aliases and applies them to the command string,\n * unless there are any reference loops or the reference chain is too deep\n * @param origCommand the original command string\n * @param depth the current recursion depth\n * @param currentlyProcessingAliases any aliases that have been applied in the recursive evaluation leading to this point\n * @return { string } the provided command with all of its referenced aliases evaluated\n */\nfunction applyAliases(origCommand: string, depth = 0, currentlyProcessingAliases: string[] = []) {\n if (!origCommand) {\n return origCommand;\n }\n const commandArray = origCommand.split(\" \");\n\n // Do not apply aliases when defining a new alias\n if (commandArray[0] === \"unalias\" || commandArray[0] === \"alias\") {\n return commandArray.join(\" \");\n }\n\n // First get non-global aliases, and recursively apply them\n // (unless there are any reference loops or the reference chain is too deep)\n const localAlias = Aliases.get(commandArray[0]);\n if (localAlias && !currentlyProcessingAliases.includes(localAlias)) {\n const appliedAlias = applyAliases(localAlias, depth + 1, [commandArray[0], ...currentlyProcessingAliases]);\n commandArray.splice(0, 1, ...appliedAlias.split(\" \"));\n }\n\n // Once local aliasing is complete (or if none are present) handle any global aliases\n const processedCommands = commandArray.reduce((resolvedCommandArray: string[], command) => {\n const globalAlias = GlobalAliases.get(command);\n if (globalAlias && !currentlyProcessingAliases.includes(globalAlias)) {\n const appliedAlias = applyAliases(globalAlias, depth + 1, [command, ...currentlyProcessingAliases]);\n resolvedCommandArray.push(appliedAlias);\n } else {\n // If there is no alias, or if the alias has a circular reference, leave the command as-is\n resolvedCommandArray.push(command);\n }\n return resolvedCommandArray;\n }, []);\n\n return processedCommands.join(\" \");\n}\n","import React, { useState } from \"react\";\nimport { BBCabinetRoot } from \"./BBCabinet\";\n\nimport Button from \"@mui/material/Button\";\nimport { Player } from \"@player\";\nimport { AlertEvents } from \"../../ui/React/AlertManager\";\n\nenum Page {\n None,\n Megabyteburner2000,\n}\n\nexport function ArcadeRoot(): React.ReactElement {\n const [page, setPage] = useState(Page.None);\n\n function mbBurner2000(): void {\n if (Player.sourceFileLvl(1) === 0) {\n AlertEvents.emit(\"This machine is broken.\");\n } else {\n setPage(Page.Megabyteburner2000);\n }\n }\n\n if (page === Page.None) {\n return (\n <>\n \n \n );\n }\n let currentGame = <>;\n switch (page) {\n case Page.Megabyteburner2000:\n currentGame = ;\n }\n return (\n <>\n \n {currentGame}\n \n );\n}\n","import React, { useEffect } from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Player } from \"@player\";\nimport { Exploit } from \"../../Exploits/Exploit\";\n\nconst metaBB = \"https://bitburner-official.github.io/bitburner-legacy/\";\n\nconst style = {\n width: \"1060px\",\n height: \"800px\",\n border: \"0px\",\n};\n\nexport function BBCabinetRoot(): React.ReactElement {\n useEffect(() => {\n window.addEventListener(\"message\", function (this: Window, ev: MessageEvent) {\n if (ev.isTrusted && ev.origin == \"https://bitburner-official.github.io\" && ev.data) {\n Player.giveExploit(Exploit.TrueRecursion);\n }\n });\n });\n // prettier-ignore\n const joystick =\n <>\n \n ,'\" \"', .-. \n / \\ ( ) \n | | .-. '-' .-. \n \\ / ( ) ( )\n '.___.' '-' .-. '-'\n ||| ( ) \n ||| '-' \n ;\n return (\n <>\n \n \n \n \n );\n}\n","import { Paper, Table, TableBody, Box, IconButton, Typography, Container, Tooltip } from \"@mui/material\";\nimport { MoreHoriz, Info } from \"@mui/icons-material\";\nimport React, { useState } from \"react\";\nimport { BitNodes } from \"../BitNode/BitNode\";\nimport { currentNodeMults } from \"../BitNode/BitNodeMultipliers\";\nimport { BitNodeMultipliersDisplay } from \"../BitNode/ui/BitnodeMultipliersDescription\";\nimport { HacknetServerConstants } from \"../Hacknet/data/Constants\";\nimport { getPurchaseServerLimit } from \"../Server/ServerPurchases\";\nimport { Settings } from \"../Settings/Settings\";\nimport { MoneySourceTracker } from \"../utils/MoneySourceTracker\";\nimport { convertTimeMsToTimeElapsedString } from \"../utils/StringHelperFunctions\";\nimport { Player } from \"@player\";\nimport { formatPercent } from \"./formatNumber\";\nimport { Modal } from \"./React/Modal\";\nimport { Money } from \"./React/Money\";\nimport { StatsRow } from \"./React/StatsRow\";\nimport { StatsTable } from \"./React/StatsTable\";\nimport { useRerender } from \"./React/hooks\";\n\ninterface EmployersModalProps {\n open: boolean;\n onClose: () => void;\n}\n\nconst EmployersModal = ({ open, onClose }: EmployersModalProps): React.ReactElement => {\n return (\n \n <>\n All Employers\n
    \n {Object.keys(Player.jobs).map((j) => (\n * {j}\n ))}\n
\n \n
\n );\n};\n\ninterface IMultRow {\n // The name of the multiplier\n mult: string;\n\n // The player's raw multiplier value\n value: number;\n\n // The player's effective multiplier value, affected by BitNode mults\n effValue?: number;\n\n // The text color for the row\n color?: string;\n}\n\ninterface MultTableProps {\n rows: IMultRow[];\n color: string;\n noMargin?: boolean;\n}\n\nfunction MultiplierTable(props: MultTableProps): React.ReactElement {\n return (\n \n \n {props.rows.map((data) => {\n const { mult, value, effValue = null, color = props.color } = data;\n\n if (effValue !== null && effValue !== value && Player.sourceFileLvl(5) > 0) {\n return (\n \n <>\n \n {formatPercent(value)} {formatPercent(effValue)}\n \n \n \n );\n }\n return ;\n })}\n \n
\n );\n}\n\nfunction CurrentBitNode(): React.ReactElement {\n if (Player.sourceFiles.size > 0) {\n const index = \"BitNode\" + Player.bitNodeN;\n const lvl = Math.min(Player.sourceFileLvl(Player.bitNodeN) + 1, Player.bitNodeN === 12 ? Infinity : 3);\n return (\n \n \n BitNode {Player.bitNodeN}: {BitNodes[index].name} (Level {lvl})\n \n {BitNodes[index].info}\n \n );\n }\n\n return <>;\n}\n\ninterface IMoneyModalProps {\n open: boolean;\n onClose: () => void;\n}\n\nfunction MoneyModal({ open, onClose }: IMoneyModalProps): React.ReactElement {\n function convertMoneySourceTrackerToString(src: MoneySourceTracker): React.ReactElement {\n const parts: [string, JSX.Element][] = [[`Total:`, ]];\n if (src.augmentations) {\n parts.push([`Augmentations:`, ]);\n }\n if (src.bladeburner) {\n parts.push([`Bladeburner:`, ]);\n }\n if (src.casino) {\n parts.push([`Casino:`, ]);\n }\n if (src.codingcontract) {\n parts.push([`Coding Contracts:`, ]);\n }\n if (src.work) {\n parts.push([`Company Work:`, ]);\n }\n if (src.class) {\n parts.push([`Class:`, ]);\n }\n if (src.corporation) {\n parts.push([`Corporation:`, ]);\n }\n if (src.crime) {\n parts.push([`Crimes:`, ]);\n }\n if (src.gang) {\n parts.push([`Gang:`, ]);\n }\n if (src.hacking) {\n parts.push([`Hacking:`, ]);\n }\n if (src.hacknet) {\n parts.push([`Hacknet Nodes:`, ]);\n }\n if (src.hacknet_expenses) {\n parts.push([`Hacknet Nodes Expenses:`, ]);\n }\n if (src.hospitalization) {\n parts.push([`Hospitalization:`, ]);\n }\n if (src.infiltration) {\n parts.push([`Infiltration:`, ]);\n }\n if (src.servers) {\n parts.push([`Servers:`, ]);\n }\n if (src.stock) {\n parts.push([`Stock Market:`, ]);\n }\n if (src.sleeves) {\n parts.push([`Sleeves:`, ]);\n }\n if (src.other) {\n parts.push([`Other:`, ]);\n }\n\n return ;\n }\n\n let content = (\n <>\n \n Money earned since you last installed Augmentations\n \n
\n {convertMoneySourceTrackerToString(Player.moneySourceA)}\n \n );\n if (Player.sourceFiles.size > 0) {\n content = (\n <>\n {content}\n
\n
\n \n Money earned in this BitNode\n \n
\n {convertMoneySourceTrackerToString(Player.moneySourceB)}\n \n );\n }\n\n return (\n \n {content}\n \n );\n}\n\nexport function CharacterStats(): React.ReactElement {\n const [moneyOpen, setMoneyOpen] = useState(false);\n const [employersOpen, setEmployersOpen] = useState(false);\n useRerender(200);\n\n const timeRows = [\n [\"Since last Augmentation installation\", convertTimeMsToTimeElapsedString(Player.playtimeSinceLastAug)],\n ];\n if (Player.sourceFiles.size > 0) {\n timeRows.push([\"Since last Bitnode destroyed\", convertTimeMsToTimeElapsedString(Player.playtimeSinceLastBitnode)]);\n }\n timeRows.push([\"Total\", convertTimeMsToTimeElapsedString(Player.totalPlaytime)]);\n\n let showBitNodeMults = false;\n if (Player.sourceFileLvl(5) > 0) showBitNodeMults = true;\n return (\n \n Stats\n \n \n General\n \n \n \n \n <>\n \n setMoneyOpen(true)} sx={{ p: 0 }}>\n \n \n \n \n\n {Player.jobs && Object.keys(Player.jobs).length !== 0 ? (\n \n <>\n {Object.keys(Player.jobs).length} total\n setEmployersOpen(true)} sx={{ p: 0 }}>\n \n \n \n \n ) : (\n <>\n )}\n \n 0 ? \"Servers\" : \"Nodes\"} owned`}\n color={Settings.theme.primary}\n data={{\n content: `${Player.hacknetNodes.length}${\n Player.bitNodeN === 9 || Player.sourceFileLvl(9) > 0\n ? ` / ${HacknetServerConstants.MaxServers}`\n : \"\"\n }`,\n }}\n />\n \n \n
\n
\n \n Skills\n \n \n \n \n \n \n \n \n {Player.skills.intelligence > 0 && (Player.bitNodeN === 5 || Player.sourceFileLvl(5) > 0) && (\n \n )}\n \n
\n
\n
\n\n \n \n Multipliers\n {Player.sourceFileLvl(5) > 0 && (\n \n Displays your current multipliers.\n
\n
\n When there is a dim number next to a multiplier, that means that the multiplier in question is being\n affected by BitNode multipliers.\n
\n
\n The dim number is the raw multiplier, and the undimmed number is the effective multiplier, as dictated\n by the BitNode.\n
\n }\n >\n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n {Player.canAccessBladeburner() && currentNodeMults.BladeburnerRank > 0 && (\n \n )}\n \n \n
\n\n \n Time Played\n \n \n {timeRows.map(([name, content]) => (\n \n ))}\n \n
\n
\n\n \n\n {showBitNodeMults && (\n \n BitNode Multipliers\n \n \n )}\n\n setMoneyOpen(false)} />\n setEmployersOpen(false)} />\n
\n );\n}\n","import React from \"react\";\nimport Tooltip, { TooltipProps } from \"@mui/material/Tooltip\";\nimport Button, { ButtonProps } from \"@mui/material/Button\";\n\ninterface ButtonWithTooltipProps {\n /** \"\" if the button is not disabled. If this is truthy, the button is disabled and this tooltip is displayed. */\n disabledTooltip?: TooltipProps[\"title\"];\n /** Text to display if button is enabled (if disabledTooltip is not provided or is \"\") */\n normalTooltip?: TooltipProps[\"title\"];\n /** The onClick function */\n onClick: ButtonProps[\"onClick\"];\n /** Button props other than \"disabled\" */\n buttonProps?: Omit;\n /** Tooltip props other than \"title\" */\n tooltipProps?: Omit;\n children: ButtonProps[\"children\"];\n}\n\n/** Displays a tooltip on a button when the button is disabled, to explain why it is disabled */\nexport function ButtonWithTooltip({\n disabledTooltip,\n normalTooltip,\n onClick,\n buttonProps,\n tooltipProps,\n children,\n}: ButtonWithTooltipProps) {\n buttonProps ??= {};\n tooltipProps ??= {};\n const tooltipText = (disabledTooltip || normalTooltip) ?? \"\";\n const disabled = !!disabledTooltip;\n return (\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface CustomBoundaryProps {\n children: React.ReactNode;\n}\ninterface CustomBoundaryState {\n error?: Error;\n}\n/** Error boundary for custom content printed by the player using printRaw-like functions.\n * Error boundaries are required to be class components due to no hook equivalent to componentDidCatch. */\nexport class CustomBoundary extends React.Component {\n state: CustomBoundaryState;\n constructor(props: CustomBoundaryProps) {\n super(props);\n this.state = { error: undefined };\n }\n componentDidCatch(error: Error): void {\n this.setState({ error });\n console.warn(\"Error in custom react content:\");\n console.error(error);\n }\n render(): React.ReactNode {\n if (this.state.error) {\n // Typography is used because there are no default page styles.\n // Span is used because it does not conflict with the DOM validation nesting (default Typography element of p is invalid at this location in dom tree)\n return Error in custom react content. See console for details.;\n }\n return {this.props.children};\n }\n}\n","export enum ToastVariant {\n SUCCESS = \"success\",\n WARNING = \"warning\",\n ERROR = \"error\",\n INFO = \"info\",\n}\n","import React, { ErrorInfo } from \"react\";\n\nimport { IErrorData, getErrorForDisplay } from \"../utils/ErrorHelper\";\nimport { RecoveryRoot } from \"./React/RecoveryRoot\";\nimport { Page } from \"./Router\";\nimport { Router } from \"./GameRoot\";\n\ntype ErrorBoundaryProps = {\n softReset: () => void;\n children: React.ReactNode;\n};\n\ntype ErrorBoundaryState = {\n error?: Error;\n errorInfo?: React.ErrorInfo;\n page?: Page;\n hasError: boolean;\n};\n\nexport class ErrorBoundary extends React.Component {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false };\n }\n\n reset(): void {\n this.setState({ hasError: false });\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n this.setState({\n errorInfo,\n page: Router.page(),\n });\n console.error(error, errorInfo);\n }\n\n render(): React.ReactNode {\n if (this.state.hasError) {\n let errorData: IErrorData | undefined;\n if (this.state.error) {\n try {\n // We don't want recursive errors, so in case this fails, it's in a try catch.\n errorData = getErrorForDisplay(this.state.error, this.state.errorInfo, this.state.page);\n } catch (ex) {\n console.error(ex);\n }\n }\n\n return this.reset()} />;\n }\n return this.props.children;\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n}\n","import React, { useState, useEffect } from \"react\";\nimport { createStyles, makeStyles } from \"@mui/styles\";\nimport { Box, Typography } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport { Player } from \"@player\";\nimport { installAugmentations } from \"../Augmentation/AugmentationHelpers\";\nimport { saveObject } from \"../SaveObject\";\nimport { onExport } from \"../ExportBonus\";\nimport { LocationName } from \"@enums\";\nimport { ITutorial, iTutorialStart } from \"../InteractiveTutorial\";\nimport { InteractiveTutorialRoot } from \"./InteractiveTutorial/InteractiveTutorialRoot\";\nimport { ITutorialEvents } from \"./InteractiveTutorial/ITutorialEvents\";\n\nimport { prestigeAugmentation } from \"../Prestige\";\nimport { dialogBoxCreate } from \"./React/DialogBox\";\nimport { GetAllServers } from \"../Server/AllServers\";\nimport { StockMarket } from \"../StockMarket/StockMarket\";\n\nimport { Page, PageWithContext, IRouter, ComplexPage, PageContext } from \"./Router\";\nimport { Overview } from \"./React/Overview\";\nimport { SidebarRoot } from \"../Sidebar/ui/SidebarRoot\";\nimport { AugmentationsRoot } from \"../Augmentation/ui/AugmentationsRoot\";\nimport { DevMenuRoot } from \"../DevMenu\";\nimport { BladeburnerRoot } from \"../Bladeburner/ui/BladeburnerRoot\";\nimport { GangRoot } from \"../Gang/ui/GangRoot\";\nimport { CorporationRoot } from \"../Corporation/ui/CorporationRoot\";\nimport { InfiltrationRoot } from \"../Infiltration/ui/InfiltrationRoot\";\nimport { GraftingRoot } from \"../PersonObjects/Grafting/ui/GraftingRoot\";\nimport { WorkInProgressRoot } from \"./WorkInProgressRoot\";\nimport { GameOptionsRoot } from \"../GameOptions/ui/GameOptionsRoot\";\nimport { SleeveRoot } from \"../PersonObjects/Sleeve/ui/SleeveRoot\";\nimport { HacknetRoot } from \"../Hacknet/ui/HacknetRoot\";\nimport { GenericLocation } from \"../Locations/ui/GenericLocation\";\nimport { LocationCity } from \"../Locations/ui/City\";\nimport { ProgramsRoot } from \"../Programs/ui/ProgramsRoot\";\nimport { ScriptEditorRoot } from \"../ScriptEditor/ui/ScriptEditorRoot\";\nimport { MilestonesRoot } from \"../Milestones/ui/MilestonesRoot\";\nimport { TerminalRoot } from \"../Terminal/ui/TerminalRoot\";\nimport { DocumentationRoot } from \"../Documentation/ui/DocumentationRoot\";\nimport { ActiveScriptsRoot } from \"./ActiveScripts/ActiveScriptsRoot\";\nimport { FactionsRoot } from \"../Faction/ui/FactionsRoot\";\nimport { FactionRoot } from \"../Faction/ui/FactionRoot\";\nimport { AugmentationsPage as FactionAugmentations } from \"../Faction/ui/AugmentationsPage\";\nimport { CharacterStats } from \"./CharacterStats\";\nimport { TravelAgencyRoot } from \"../Locations/ui/TravelAgencyRoot\";\nimport { StockMarketRoot } from \"../StockMarket/ui/StockMarketRoot\";\nimport { BitverseRoot } from \"../BitNode/ui/BitverseRoot\";\nimport { StaneksGiftRoot } from \"../CotMG/ui/StaneksGiftRoot\";\nimport { staneksGift } from \"../CotMG/Helper\";\nimport { CharacterOverview } from \"./React/CharacterOverview\";\nimport { BladeburnerCinematic } from \"../Bladeburner/ui/BladeburnerCinematic\";\nimport { workerScripts } from \"../Netscript/WorkerScripts\";\nimport { Unclickable } from \"../Exploits/Unclickable\";\nimport { Snackbar, SnackbarProvider } from \"./React/Snackbar\";\nimport { LogBoxManager } from \"./React/LogBoxManager\";\nimport { AlertManager } from \"./React/AlertManager\";\nimport { PromptManager } from \"./React/PromptManager\";\nimport { InvitationModal } from \"../Faction/ui/InvitationModal\";\nimport { calculateAchievements } from \"../Achievements/Achievements\";\n\nimport { RecoveryMode, RecoveryRoot } from \"./React/RecoveryRoot\";\nimport { AchievementsRoot } from \"../Achievements/AchievementsRoot\";\nimport { ErrorBoundary } from \"./ErrorBoundary\";\nimport { ThemeBrowser } from \"../Themes/ui/ThemeBrowser\";\nimport { ImportSave } from \"./React/ImportSave\";\nimport { BypassWrapper } from \"./React/BypassWrapper\";\n\nimport { Apr1 } from \"./Apr1\";\nimport { V2Modal } from \"../utils/V2Modal\";\nimport { MathJaxContext } from \"better-react-mathjax\";\nimport { useRerender } from \"./React/hooks\";\nimport { HistoryProvider } from \"./React/Documentation\";\n\nconst htmlLocation = location;\n\nconst useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n \"-ms-overflow-style\": \"none\" /* for Internet Explorer, Edge */,\n \"scrollbar-width\": \"none\" /* for Firefox */,\n margin: theme.spacing(0),\n flexGrow: 1,\n padding: \"8px\",\n minHeight: \"100vh\",\n boxSizing: \"border-box\",\n width: \"1px\",\n },\n }),\n { name: \"GameRoot\" },\n);\n\nconst uninitialized = (): void => {\n throw new Error(\"Router called before initialization\");\n};\n\nconst MAX_PAGES_IN_HISTORY = 10;\n\nexport let Router: IRouter = {\n isInitialized: false,\n page: () => {\n throw new Error(\"Router called before initialization\");\n },\n allowRouting: uninitialized,\n toPage: () => {\n throw new Error(\"Router called before initialization\");\n },\n back: () => {\n throw new Error(\"Router called before initialization\");\n },\n};\n\nfunction determineStartPage() {\n if (RecoveryMode) return Page.Recovery;\n if (Player.currentWork !== null) return Page.Work;\n return Page.Terminal;\n}\n\nexport function GameRoot(): React.ReactElement {\n const classes = useStyles();\n\n const [pages, setPages] = useState(() => [{ page: determineStartPage() }]);\n const pageWithContext = pages[0];\n\n const setNextPage = (pageWithContext: PageWithContext) =>\n setPages((prev) => {\n const next = [pageWithContext, ...prev];\n next.length = Math.min(next.length, MAX_PAGES_IN_HISTORY);\n return next;\n });\n\n const rerender = useRerender();\n\n const [errorBoundaryKey, setErrorBoundaryKey] = useState(0);\n\n const [allowRoutingCalls, setAllowRoutingCalls] = useState(true);\n\n function resetErrorBoundary(): void {\n setErrorBoundaryKey(errorBoundaryKey + 1);\n }\n\n useEffect(() => {\n return ITutorialEvents.subscribe(rerender);\n }, [rerender]);\n\n function killAllScripts(): void {\n for (const server of GetAllServers()) {\n server.runningScriptMap.clear();\n }\n saveObject.saveGame();\n setTimeout(() => htmlLocation.reload(), 2000);\n }\n\n function attemptedForbiddenRouting(name: string) {\n console.error(`Routing is currently disabled - Attempted router.${name}()`);\n }\n\n Router = {\n isInitialized: true,\n page: () => pageWithContext.page,\n allowRouting: (value: boolean) => setAllowRoutingCalls(value),\n toPage: (page: Page, context?: PageContext) => {\n if (!allowRoutingCalls) return attemptedForbiddenRouting(\"toPage\");\n switch (page) {\n case Page.Travel:\n Player.gotoLocation(LocationName.TravelAgency);\n break;\n case Page.BitVerse:\n calculateAchievements();\n break;\n }\n setNextPage({ page, ...context } as PageWithContext);\n },\n back: () => {\n if (!allowRoutingCalls) return attemptedForbiddenRouting(\"back\");\n setPages((pages) => pages.slice(1));\n },\n };\n\n useEffect(() => {\n if (pageWithContext.page !== Page.Terminal) window.scrollTo(0, 0);\n });\n\n function softReset(): void {\n dialogBoxCreate(\"Soft Reset!\");\n installAugmentations(true);\n resetErrorBoundary();\n Router.toPage(Page.Terminal);\n }\n\n let mainPage = Cannot load;\n let withSidebar = true;\n let withPopups = true;\n let bypassGame = false;\n switch (pageWithContext.page) {\n case Page.Recovery: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n bypassGame = true;\n break;\n }\n case Page.BitVerse: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n break;\n }\n case Page.Infiltration: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n break;\n }\n case Page.BladeburnerCinematic: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n break;\n }\n case Page.Work: {\n mainPage = ;\n withSidebar = false;\n break;\n }\n case Page.Terminal: {\n mainPage = ;\n break;\n }\n case Page.Sleeves: {\n mainPage = ;\n break;\n }\n case Page.StaneksGift: {\n mainPage = ;\n break;\n }\n case Page.Stats: {\n mainPage = ;\n break;\n }\n case Page.ScriptEditor: {\n mainPage = (\n \n );\n break;\n }\n case Page.ActiveScripts: {\n mainPage = ;\n break;\n }\n case Page.Hacknet: {\n mainPage = ;\n break;\n }\n case Page.CreateProgram: {\n mainPage = ;\n break;\n }\n case Page.Factions: {\n mainPage = ;\n break;\n }\n case Page.Faction: {\n mainPage = ;\n break;\n }\n case Page.FactionAugmentations: {\n mainPage = ;\n break;\n }\n case Page.Milestones: {\n mainPage = ;\n break;\n }\n case Page.Documentation: {\n mainPage = ;\n break;\n }\n case Page.DevMenu: {\n mainPage = ;\n break;\n }\n case Page.Gang: {\n mainPage = ;\n break;\n }\n case Page.Corporation: {\n mainPage = ;\n break;\n }\n case Page.Bladeburner: {\n mainPage = ;\n break;\n }\n case Page.Grafting: {\n mainPage = ;\n break;\n }\n case Page.Travel: {\n mainPage = ;\n break;\n }\n case Page.StockMarket: {\n mainPage = ;\n break;\n }\n case Page.City: {\n mainPage = ;\n break;\n }\n case Page.Job:\n case Page.Location: {\n mainPage = ;\n break;\n }\n case Page.Options: {\n mainPage = (\n saveObject.saveGame()}\n export={() => {\n // Apply the export bonus before saving the game\n onExport();\n saveObject.exportGame();\n }}\n forceKill={killAllScripts}\n softReset={softReset}\n reactivateTutorial={() => {\n prestigeAugmentation();\n Router.toPage(Page.Terminal);\n iTutorialStart();\n }}\n />\n );\n break;\n }\n case Page.Augmentations: {\n mainPage = (\n {\n // Apply the export bonus before saving the game\n onExport();\n saveObject.exportGame();\n }}\n installAugmentationsFn={() => {\n installAugmentations();\n }}\n />\n );\n break;\n }\n case Page.Achievements: {\n mainPage = ;\n break;\n }\n case Page.ThemeBrowser: {\n mainPage = ;\n break;\n }\n case Page.ImportSave: {\n mainPage = ;\n withSidebar = false;\n withPopups = false;\n bypassGame = true;\n }\n }\n\n return (\n \n \n \n \n \n \n {(parentOpen) =>\n !ITutorial.isRunning ? (\n saveObject.saveGame()}\n killScripts={killAllScripts}\n />\n ) : (\n \n )\n }\n \n {withSidebar ? (\n \n \n {mainPage}\n \n ) : (\n {mainPage}\n )}\n \n
\n \n \n \n \n \n
\n \n
\n
\n
\n
\n \n
\n );\n}\n","import { EventEmitter } from \"../../utils/EventEmitter\";\nexport const ITutorialEvents = new EventEmitter<[]>();\n","import React, { useEffect } from \"react\";\n\nimport Paper from \"@mui/material/Paper\";\nimport Typography from \"@mui/material/Typography\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Button from \"@mui/material/Button\";\nimport ArrowForwardIos from \"@mui/icons-material/ArrowForwardIos\";\nimport ArrowBackIos from \"@mui/icons-material/ArrowBackIos\";\nimport { ITutorialEvents } from \"./ITutorialEvents\";\nimport { CopyableText } from \"../React/CopyableText\";\n\nimport ListItem from \"@mui/material/ListItem\";\nimport EqualizerIcon from \"@mui/icons-material/Equalizer\";\nimport LastPageIcon from \"@mui/icons-material/LastPage\";\nimport HelpIcon from \"@mui/icons-material/Help\";\nimport AccountTreeIcon from \"@mui/icons-material/AccountTree\";\nimport StorageIcon from \"@mui/icons-material/Storage\";\nimport LocationCityIcon from \"@mui/icons-material/LocationCity\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nimport {\n iTutorialPrevStep,\n iTutorialNextStep,\n ITutorial,\n iTutorialSteps,\n iTutorialEnd,\n} from \"../../InteractiveTutorial\";\nimport { useRerender } from \"../React/hooks\";\n\ninterface IContent {\n content: React.ReactElement;\n canNext: boolean;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n textfield: {\n borderBottom: \"1px solid \" + theme.palette.primary.main,\n },\n code: {\n whiteSpace: \"pre\",\n backgroundColor: theme.palette.background.paper,\n },\n }),\n);\n\nexport function InteractiveTutorialRoot(): React.ReactElement {\n const classes = useStyles();\n const rerender = useRerender();\n\n const tutorialScriptName = `n00dles.js`;\n\n const contents: Record = {\n [iTutorialSteps.Start as number]: {\n content: (\n <>\n \n Welcome to Bitburner, a cyberpunk-themed incremental RPG! The game takes place in a dark, dystopian\n future... The year is 2077...\n
\n
\n This tutorial will show you the basics of the game. You may skip the tutorial at any time.\n
\n
\n You can also collapse this panel to temporarily hide this tutorial.\n
\n \n ),\n canNext: true,\n },\n [iTutorialSteps.GoToCharacterPage as number]: {\n content: (\n <>\n Let's start by heading to the Stats page. Click\n \n \n Stats\n \n\n on the main navigation menu (left-hand side of the screen)\n \n ),\n canNext: false,\n },\n [iTutorialSteps.CharacterPage as number]: {\n content: (\n <>\n \n \n Stats\n \n \n shows a lot of important information about your progress, such as your skills, money, and bonuses.\n \n \n ),\n canNext: true,\n },\n [iTutorialSteps.CharacterGoToTerminalPage as number]: {\n content: (\n <>\n Let's head to your computer's terminal by clicking\n \n \n Terminal\n \n on the main navigation menu.\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalIntro as number]: {\n content: (\n <>\n \n \n Terminal\n \n \n is used to interface with your home computer as well as all of the other machines around the world.\n \n \n ),\n canNext: true,\n },\n [iTutorialSteps.TerminalHelp as number]: {\n content: (\n <>\n Let's try it out. Start by entering\n {\"[home ~/]> help\"}\n (Don't forget to press Enter after typing the command)\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalLs as number]: {\n content: (\n <>\n {\"[home ~/]> help\"}\n \n displays a list of all available Terminal commands, how to use them, and a description of what they do.{\" \"}\n
\n
\n Let's try another command. Enter\n
\n\n {\"[home ~/]> ls\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalScan as number]: {\n content: (\n <>\n {\"[home ~/]> ls\"}\n \n {\" \"}\n is a basic command that shows files on the computer. Right now, it shows that you have a program called{\" \"}\n NUKE.exe on your computer. We'll get to what this does later.
\n
\n Using your home computer's terminal, you can connect to other machines throughout the world. Let's do that\n now by first entering\n
\n {\"[home ~/]> scan\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalScanAnalyze1 as number]: {\n content: (\n <>\n {\"[home ~/]> scan\"}\n \n shows all available network connections. In other words, it displays a list of all servers that can be\n connected to from your current machine. A server is identified by its hostname.
\n
\n That's great and all, but there's so many servers. Which one should you go to?{\" \"}\n
\n\n {\"[home ~/]> scan-analyze\"}\n gives some more detailed information about servers on the network. Try it now!\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalScanAnalyze2 as number]: {\n content: (\n <>\n {\"[home ~/]> scan-analyze\"}\n \n shows more detailed information about each server that you can connect to (servers that are a distance of\n one node away).
\n
It is also possible to run scan-analyze with a higher depth. Let's try a depth of two with the\n following command:{\" \"}\n
\n\n {\"[home ~/]> scan-analyze 2\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalConnect as number]: {\n content: (\n <>\n \n Now you can see information about all servers that are up to two nodes away, as well as figure out how to\n navigate to those servers through the network. You can only connect to a server that is one node away. To\n connect to a machine, use\n \n {\"[home ~/]> connect hostname\"}\n\n From the results of \n {\"[home ~/]> scan-analyze 2\"}\n\n \n {\" \"}\n we can see that the n00dles server is only one node away. Let's connect to it now using:\n \n\n {\"[home ~/]> connect n00dles\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalAnalyze as number]: {\n content: (\n <>\n \n You are now connected to another machine! What can you do now? You can hack it!\n
\n
In the year 2077, currency has become digital and decentralized. People and corporations store their\n money on servers and computers. Using your hacking abilities, you can hack servers to steal money and gain\n experience.
\n
\n Before you try to hack a server, you should run diagnostics using{\" \"}\n
\n {\"[n00dles ~/]> analyze\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalNuke as number]: {\n content: (\n <>\n When \n {\"[n00dles ~/]> analyze\"}\n\n \n finishes running it will show useful information about hacking the server.
\n
For this server, the required hacking skill is only 1, which means you can hack it right now.\n However, in order to hack a server you must first gain root access. The NUKE.exe program that we saw earlier\n on your home computer is a virus that will grant you root access to a machine if there are enough open\n ports.\n
\n {\"[n00dles ~/]> analyze\"}\n\n \n {\" \"}\n shows that there do not need to be any open ports on this machine for the NUKE virus to work, so go ahead\n and run the virus using{\" \"}\n \n {\"[n00dles ~/]> run NUKE.exe\"}\n\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalManualHack as number]: {\n content: (\n <>\n You now have root access! You can hack the server using \n {\"[n00dles ~/]> hack\"}\n\n Try doing that now.\n \n ),\n canNext: true,\n },\n [iTutorialSteps.TerminalHackingMechanics as number]: {\n content: (\n \n You are now attempting to hack the server. Performing a hack takes time and only has a certain percentage\n chance of success. This time and success chance is determined by a variety of factors, including your hacking\n skill and the server's security level.\n
\n
\n If your attempt to hack the server is successful, you will steal a certain percentage of the server's total\n money. This percentage is affected by your hacking skill and the server's security level.\n
\n
\n The amount of money on a server is not limitless. So, if you constantly hack a server and deplete its money,\n then you will encounter diminishing returns in your hacking. You will need to use{\" \"}\n {\"[n00dles ~/]> grow\"}\n which tricks the company into adding money to their server and{\" \"}\n {\"[n00dles ~/]> weaken\"}\n which increases the speed of hack and grow.\n
\n ),\n canNext: true,\n },\n [iTutorialSteps.TerminalGoHome as number]: {\n content: (\n <>\n From any server you can get back home using\n {\"[n00dles ~/]> home\"}\n\n Let's head home before creating our first script!\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalCreateScript as number]: {\n content: (\n <>\n \n Hacking is the core mechanic of the game and is necessary for progressing. However, you don't want to be\n hacking manually the entire time. You can automate your hacking by writing scripts!\n
\n
\n To create a new script or edit an existing one, you can use{\" \"}\n
\n {\"[home ~/]> nano\"}\n\n Scripts must end with the .js extension. Let's make a script now by entering \n {`[home ~/]> nano ${tutorialScriptName}`}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalTypeScript as number]: {\n content: (\n <>\n \n This is the script editor. You can use it to program your scripts. Click this text to copy it and paste it\n into the text editor:
\n
\n\n \n {\n \n }\n \n \n For anyone with basic programming experience, this code should be straightforward. This script will\n continuously hack the n00dles server.\n
\n
\n To save and close the script editor, press the button at the bottom.\n
\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalFree as number]: {\n content: (\n <>\n \n Now we'll run the script. Scripts require a certain amount of RAM to run, and can be run on any machine\n which you have root access to. Different servers have different amounts of RAM. You can also purchase more\n RAM for your home server.\n
\n
\n To check how much RAM is available on this machine, enter\n
\n {\"[home ~/]> free\"}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalRunScript as number]: {\n content: (\n <>\n \n We have 8GB of free RAM on this machine, which is enough to run our script. Let's run our script using\n \n {`[home ~/]> run ${tutorialScriptName}`}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalGoToActiveScriptsPage as number]: {\n content: (\n <>\n \n Your script is now running! It will continuously run in the background and will automatically stop if the\n code ever completes (the {tutorialScriptName} will never complete because it runs an infinite loop).
\n
\n These scripts can passively earn you income and hacking experience. Your scripts will also earn money and\n experience while you are offline, although at a slightly slower rate.
\n
\n Let's check out some statistics for our running scripts by clicking{\" \"}\n
\n \n \n Active Scripts\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.ActiveScriptsPage as number]: {\n content: (\n <>\n \n This page displays information about all of your scripts that are running across every server. You can use\n this to gauge how well your scripts are doing.\n
\n
\n Click on Home to see the scripts running on it.\n
\n
\n Then click on n00dles.js to see the scripts information.\n
\n
\n Let's go back to\n
\n \n \n Terminal\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.ActiveScriptsToTerminal as number]: {\n content: (\n <>\n \n One last thing about scripts, each active script contains logs that detail what it's doing. We can check\n these logs using the tail command. Do that now for the script we just ran by typing{\" \"}\n \n {`[home ~/]> tail ${tutorialScriptName}`}\n \n ),\n canNext: false,\n },\n [iTutorialSteps.TerminalTailScript as number]: {\n content: (\n <>\n \n The log for this script won't show much right now (it might show nothing at all) because it just started\n running...but check back again in a few minutes!
\n
\n This covers the basics of hacking. To learn more about writing scripts, select\n
\n \n \n Documentation\n \n \n in the main navigation menu to look at the documentation.\n
\n
\n For now, let's move on to something else!\n
\n \n ),\n canNext: true,\n },\n [iTutorialSteps.GoToHacknetNodesPage as number]: {\n content: (\n <>\n \n Hacking is not the only way to earn money. One other way to passively earn money is by purchasing and\n upgrading Hacknet Nodes. Let's go to\n \n \n \n Hacknet\n \n through the main navigation menu now.\n \n ),\n canNext: false,\n },\n [iTutorialSteps.HacknetNodesIntroduction as number]: {\n content: (\n \n Here you can purchase new Hacknet Nodes and upgrade your existing ones. Let's purchase a new one now.\n \n ),\n canNext: true,\n },\n [iTutorialSteps.HacknetNodesGoToWorldPage as number]: {\n content: (\n <>\n \n You just purchased a Hacknet Node! This Hacknet Node will passively earn you money over time, both online\n and offline. When you get enough money, you can upgrade your newly-purchased Hacknet Node below.\n
\n
\n Let's go to\n
\n \n \n City\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.WorldDescription as number]: {\n content: (\n <>\n \n This page lists all of the different locations you can currently travel to. Each location has something that\n you can do. There's a lot of content out in the world, make sure you explore and discover!\n
\n
\n Lastly, click on\n
\n \n \n Documentation\n \n \n ),\n canNext: false,\n },\n [iTutorialSteps.DocumentationPageInfo as number]: {\n content: (\n \n This page contains a lot of different documentation about the game's content and mechanics. I know it's a lot,\n but I highly suggest you read (or at least skim) through this before you start playing.\n
\n
\n The Beginner's Guide contains the guide for new players, navigating you through most of early game.\n
\n
\n That's the end of the tutorial. Hope you enjoy the game!\n
\n ),\n canNext: true,\n },\n [iTutorialSteps.End as number]: {\n content: ,\n canNext: true,\n },\n };\n\n useEffect(() => {\n return ITutorialEvents.subscribe(rerender);\n }, [rerender]);\n\n const step = ITutorial.currStep;\n const content = contents[step];\n if (content === undefined) throw new Error(\"error in the tutorial\");\n return (\n <>\n \n {content.content}\n {step !== iTutorialSteps.DocumentationPageInfo && (\n <>\n {step !== iTutorialSteps.Start && (\n \n \n \n )}\n {(content.canNext || ITutorial.stepIsDone[step]) && (\n \n \n \n )}\n \n )}\n
\n
\n \n
\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport Typography from \"@mui/material/Typography\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { load } from \"../db\";\nimport { Engine } from \"../engine\";\nimport { GameRoot } from \"./GameRoot\";\n\nimport { CONSTANTS } from \"../Constants\";\nimport { ActivateRecoveryMode } from \"./React/RecoveryRoot\";\nimport { hash } from \"../hash/hash\";\nimport { pushGameReady } from \"../Electron\";\n\nexport function LoadingScreen(): React.ReactElement {\n const [show, setShow] = useState(false);\n const [loaded, setLoaded] = useState(false);\n\n const version = `v${CONSTANTS.VersionString} (${hash()})`;\n if (process.env.NODE_ENV === \"development\") {\n document.title = `[dev] Bitburner ${version}`;\n } else {\n document.title = `Bitburner ${version}`;\n }\n\n useEffect(() => {\n const id = setTimeout(() => {\n if (!loaded) setShow(true);\n }, 2000);\n return () => clearTimeout(id);\n });\n\n useEffect(() => {\n async function doLoad(): Promise {\n await load()\n .then((saveString) => {\n try {\n Engine.load(saveString);\n } catch (err: unknown) {\n ActivateRecoveryMode();\n setLoaded(true);\n throw err;\n }\n\n pushGameReady();\n setLoaded(true);\n })\n .catch((reason) => {\n console.error(reason);\n Engine.load(\"\");\n setLoaded(true);\n });\n }\n doLoad();\n }, []);\n\n return loaded ? (\n \n ) : (\n \n \n \n \n \n Loading Bitburner {version}\n \n {show && (\n \n \n If the game fails to load, consider killing all scripts\n \n \n )}\n \n );\n}\n","import React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport { TableHead } from \"@mui/material\";\nimport remarkGfm from \"remark-gfm\";\nimport { h1, h2, h3, h4, h5, h6, li, Td, Th, table, tr, Blockquote, p } from \"./components\";\nimport { code, Pre } from \"./code\";\nimport { A } from \"./a\";\n\nexport function MD(props: { md: string }): React.ReactElement {\n return (\n \n {props.md}\n \n );\n}\n","import React from \"react\";\nimport { Link } from \"@mui/material\";\nimport { useNavigator } from \"../React/Documentation\";\nimport { CorruptableText } from \"../React/CorruptableText\";\nimport { Player } from \"@player\";\n\nexport const isSpoiler = (title: string): boolean => title.includes(\"advanced/\") && Player.sourceFileLvl(1) === 0;\n\nexport const A = (props: React.PropsWithChildren<{ href?: string }>): React.ReactElement => {\n const navigator = useNavigator();\n const ref = props.href ?? \"\";\n\n const onClick = (event: React.MouseEvent) => {\n navigator.navigate(ref, event.ctrlKey);\n };\n if (ref.startsWith(\"http\"))\n return (\n \n {props.children}\n \n );\n\n if (isSpoiler(ref))\n return (\n \n \n \n );\n return (\n \n {props.children}\n \n );\n};\n","import React from \"react\";\nimport SyntaxHighlighter from \"react-syntax-highlighter\";\nimport { monokaiSublime as theme } from \"react-syntax-highlighter/dist/esm/styles/hljs\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { CodeProps } from \"react-markdown/lib/ast-to-react\";\nimport { Typography } from \"@mui/material\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n pre: {\n borderRadius: \"6px\",\n },\n code: {\n paddingBottom: \"2.72px\",\n paddingLeft: \"5.44px\",\n paddingRight: \"5.44px\",\n paddingTop: \"2.72px\",\n borderRadius: \"6px\",\n display: \"inline\",\n backgroundColor: theme.palette.background.paper,\n },\n }),\n);\n\nexport const Pre = (props: React.PropsWithChildren): React.ReactElement => {\n const classes = useStyles();\n return (\n \n {props.children}\n \n );\n};\n\nconst InlineCode = (props: React.PropsWithChildren): React.ReactElement => (\n \n {props.children}\n \n);\n\nconst BigCode = (props: React.PropsWithChildren): React.ReactElement => (\n \n {String(props.children)}\n \n);\n\nexport const code = (props: React.PropsWithChildren): React.ReactElement =>\n props.inline ? : ;\n","import React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { ListItemText, Table, TableCell, TableCellProps, TableRow, Typography } from \"@mui/material\";\nimport { LiProps, TableDataCellProps, TableHeaderCellProps } from \"react-markdown/lib/ast-to-react\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n th: { whiteSpace: \"pre\", fontWeight: \"bold\" },\n td: { whiteSpace: \"pre\" },\n blockquote: {\n borderLeftColor: theme.palette.background.paper,\n borderLeftStyle: \"solid\",\n borderLeftWidth: \"4px\",\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n },\n }),\n);\n\nexport const h1 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h2 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h3 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h4 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h5 = (props: React.PropsWithChildren): React.ReactElement => (\n // We are just going to cheat and lower every h# by 1.\n {props.children}\n);\n\nexport const h6 = (props: React.PropsWithChildren): React.ReactElement => (\n // Except for h6, that's going to stay h6. If there's complaints we'll figure it out.\n {props.children}\n);\n\nexport const p = (props: React.PropsWithChildren): React.ReactElement => (\n {props.children}\n);\n\nexport const li = (props: React.PropsWithChildren): React.ReactElement => {\n const prefix = props.ordered ? `${props.index + 1}. ` : \"· \";\n return (\n \n {prefix}\n {props.children}\n \n );\n};\n\n// This function is needed because native td have different values for `align` than Mui TableCell.\n// I really hate the implementation but I don't know how to get typescript to cooperate.\nconst fixAlign = (align: React.CSSProperties[\"textAlign\"]): TableCellProps[\"align\"] => {\n if (align === \"-moz-initial\") return \"inherit\";\n if (align === \"initial\") return \"inherit\";\n if (align === \"revert\") return \"inherit\";\n if (align === \"revert-layer\") return \"inherit\";\n if (align === \"unset\") return \"inherit\";\n if (align === \"end\") return \"inherit\";\n if (align === \"start\") return \"inherit\";\n if (align === \"match-parent\") return \"inherit\";\n return align;\n};\n\nexport const Td = (props: React.PropsWithChildren): React.ReactElement => {\n const classes = useStyles();\n const align = fixAlign(props.style?.textAlign);\n return (\n \n \n {props.children}\n \n \n );\n};\n\nexport const Th = (props: React.PropsWithChildren): React.ReactElement => {\n const classes = useStyles();\n const align = fixAlign(props.style?.textAlign);\n return (\n \n \n {props.children}\n \n \n );\n};\n\nexport const table = (props: React.PropsWithChildren): React.ReactElement => {\n return {props.children}
;\n};\n\nexport const tr = (props: React.PropsWithChildren): React.ReactElement => {\n return {props.children};\n};\n\nexport const Blockquote = (props: React.PropsWithChildren): React.ReactElement => {\n const classes = useStyles();\n return
{props.children}
;\n};\n","import { Typography } from \"@mui/material\";\nimport React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Settings } from \"../../Settings/Settings\";\n\n// This particular eslint-disable is correct.\n// In this super specific weird case we in fact do want a regex on an ANSII character.\n// eslint-disable-next-line no-control-regex\nconst ANSI_ESCAPE = new RegExp(\"\\u{001b}\\\\[(?.*?)m\", \"ug\");\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n success: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.colors.success,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n error: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.palette.error.main,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n primary: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.palette.primary.main,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n info: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.palette.info.main,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n warning: {\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"anywhere\",\n margin: theme.spacing(0),\n color: theme.palette.warning.main,\n \"--padForFlushBg\": (Settings.styles.lineHeight - 1) / 2 + \"em\",\n },\n }),\n);\n\nconst lineClass = (classes: Record, s: string): string => {\n const lineClassMap: Record = {\n error: classes.error,\n success: classes.success,\n info: classes.info,\n warn: classes.warning,\n };\n return lineClassMap[s] || classes.primary;\n};\n\ntype ANSIITypographyProps = {\n text: unknown;\n color: \"primary\" | \"error\" | \"success\" | \"info\" | \"warn\";\n};\n\nexport const ANSIITypography = React.memo(function ANSIITypography(props: ANSIITypographyProps): React.ReactElement {\n const text = String(props.text);\n const classes = useStyles();\n const parts = [];\n\n // Build a look-alike regex match to place at the front of the matches list\n const INITIAL = {\n 0: \"\",\n index: 0,\n groups: { code: null },\n };\n const matches = [INITIAL, ...text.matchAll(ANSI_ESCAPE), null];\n if (matches.length > 2) {\n matches.slice(0, -1).forEach((m, i) => {\n const n = matches[i + 1];\n if (!m || m.index === undefined || m.groups === undefined) {\n return;\n }\n const startIndex = m.index + m[0].length;\n const stopIndex = n ? n.index : text.length;\n const partText = text.slice(startIndex, stopIndex);\n if (startIndex !== stopIndex) {\n // Don't generate \"empty\" spans\n parts.push({ code: m.groups.code, text: partText });\n }\n });\n }\n if (parts.length === 0) {\n // For example, if the string was empty or there were no escape sequence matches\n parts.push({ code: null, text: text });\n }\n return (\n \n {parts.map((part, i) => (\n \n {part.text}\n \n ))}\n \n );\n});\n\nfunction ansiCodeStyle(code: string | null): Record {\n // The ANSI colors actually have the dark color set as default and require extra work to get\n // bright colors. But these are rarely used or, if they are, are often re-mapped by the\n // terminal emulator to brighter colors. So for foreground colors we use the bright color set\n // and for background colors we use the dark color set. Of course, all colors are available\n // via the longer ESC[n8;5;c] sequence (n={3,4}, c=color). Ideally, these 8-bit maps could\n // be managed in the user preferences/theme.\n // Later note: The above justification is a bit suspect, and I doubt that the compatibility break\n // vs standard ANSI codes is worth it. But, it's the system that's been baked in to BB for years\n // now, so too late to change.\n const COLOR_MAP_BRIGHT: string[] = [\n \"#404040\",\n \"#ff0000\",\n \"#00ff00\",\n \"#ffff00\",\n \"#0000ff\",\n \"#ff00ff\",\n \"#00ffff\",\n \"#ffffff\",\n ];\n const COLOR_MAP_DARK: string[] = [\n \"#000000\",\n \"#800000\",\n \"#008000\",\n \"#808000\",\n \"#000080\",\n \"#800080\",\n \"#008080\",\n \"#c0c0c0\",\n ];\n\n // Returns [parts_consumed, style_string].\n // [-1, _] signals an error in parsing.\n const ansi2rgb = (codeParts: number[], startIdx: number): [number, string] => {\n if (codeParts[startIdx] === 5) {\n if (codeParts.length <= startIdx + 1) {\n // Don't have enough data, but we have to consume what we've seen so far\n return [codeParts.length - startIdx, \"inherit\"];\n }\n const code = codeParts[startIdx + 1];\n if (0 <= code && code < 8) {\n // x8 RGB\n return [2, COLOR_MAP_DARK[code]];\n }\n if (8 <= code && code < 16) {\n // x8 RGB - \"High Intensity\"\n return [2, COLOR_MAP_BRIGHT[code - 8]];\n }\n if (16 <= code && code < 232) {\n // x216 RGB\n const base = code - 16;\n const ir = Math.floor(base / 36);\n const ig = Math.floor((base % 36) / 6);\n const ib = Math.floor((base % 6) / 1);\n const r = ir <= 0 ? 0 : 55 + ir * 40;\n const g = ig <= 0 ? 0 : 55 + ig * 40;\n const b = ib <= 0 ? 0 : 55 + ib * 40;\n return [2, `rgb(${r}, ${g}, ${b})`];\n }\n if (232 <= code && code < 256) {\n // x32 greyscale\n const base = code - 232;\n const grey = base * 10 + 8;\n return [2, `rgb(${grey}, ${grey}, ${grey})`];\n }\n // Value out of range, but the escape sequence is still well-formed\n return [2, \"inherit\"];\n } else if (codeParts[startIdx] === 2) {\n if (codeParts.length <= startIdx + 3) {\n // Don't have enough data, but we have to consume what we've seen so far\n return [codeParts.length - startIdx, \"inherit\"];\n }\n return [4, `rgb(${codeParts[startIdx + 1]}, ${codeParts[startIdx + 2]}, ${codeParts[startIdx + 3]})`];\n }\n return [-1, \"\"];\n };\n\n const style: {\n fontWeight?: string;\n fontStyle?: string;\n textDecoration?: string;\n color?: string;\n backgroundColor?: string;\n padding?: string;\n } = {};\n\n if (code === null || code === \"0\") {\n return style;\n }\n\n const codeParts = code.split(\";\").map((p) => (p === \"\" ? 0 : parseInt(p)));\n\n for (let i = 0; i < codeParts.length; ++i) {\n const codePart = codeParts[i];\n // Decorations\n if (codePart === 1) {\n style.fontWeight = \"bold\";\n } else if (codePart === 3) {\n style.fontStyle = \"italic\";\n } else if (codePart === 4) {\n style.textDecoration = \"underline\";\n }\n // Foreground Color (x8)\n else if (30 <= codePart && codePart < 38) {\n style.color = COLOR_MAP_BRIGHT[codePart - 30];\n }\n // Background Color (x8)\n else if (40 <= codePart && codePart < 48) {\n style.backgroundColor = COLOR_MAP_DARK[codePart - 40];\n }\n // Foreground Color (x256)\n else if (codePart === 38 || codePart === 48) {\n const [extra, colorString] = ansi2rgb(codeParts, i + 1);\n // If it was an invalid code, we consume no extra parts\n if (extra > 0) {\n i += extra;\n style[codePart === 38 ? \"color\" : \"backgroundColor\"] = colorString;\n }\n }\n }\n // If a background color is set, add slight padding to increase the background fill area.\n // This was previously display:inline-block, but that has display errors when line breaks are used.\n if (style.backgroundColor) {\n style.padding = \"var(--padForFlushBg) 0px\";\n }\n return style;\n}\n","import React, { useState, useEffect } from \"react\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { Modal } from \"./Modal\";\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport { sha256 } from \"js-sha256\";\n\nexport const AlertEvents = new EventEmitter<[string | JSX.Element]>();\n\ninterface Alert {\n id: string;\n text: string | JSX.Element;\n hash: string;\n}\n\nlet i = 0;\nexport function AlertManager(): React.ReactElement {\n const [alerts, setAlerts] = useState([]);\n useEffect(\n () =>\n AlertEvents.subscribe((text: string | JSX.Element) => {\n const id = i + \"\";\n i++;\n setAlerts((old) => {\n const hash = getMessageHash(text);\n if (old.some((a) => a.hash === hash)) {\n return old;\n }\n return [\n ...old,\n {\n id: id,\n text: text,\n hash: hash,\n },\n ];\n });\n }),\n [],\n );\n\n useEffect(() => {\n function handle(this: Document, event: KeyboardEvent): void {\n if (event.code === \"Escape\") {\n setAlerts([]);\n }\n }\n document.addEventListener(\"keydown\", handle);\n return () => document.removeEventListener(\"keydown\", handle);\n }, []);\n\n function getMessageHash(text: string | JSX.Element): string {\n if (typeof text === \"string\") return sha256(text);\n return sha256(JSON.stringify(text.props));\n }\n\n function close(): void {\n setAlerts((old) => {\n return old.slice(1, 1e99);\n });\n }\n\n return (\n <>\n {alerts.length > 0 && (\n \n \n {alerts[0].text}\n \n \n )}\n \n );\n}\n","import React from \"react\";\n\ninterface IProps {\n children: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport function BypassWrapper(props: IProps): React.ReactElement {\n if (!props.content) return <>{props.children};\n return <>{props.content};\n}\n","// Root React Component for the Corporation UI\nimport React, { useMemo, useState, useEffect, ReactNode } from \"react\";\n\nimport { Theme, useTheme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { formatHp, formatMoney, formatSkill } from \"../formatNumber\";\nimport { Reputation } from \"./Reputation\";\nimport { KillScriptsModal } from \"./KillScriptsModal\";\nimport { convertTimeMsToTimeElapsedString } from \"../../utils/StringHelperFunctions\";\n\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\nimport IconButton from \"@mui/material/IconButton\";\nimport SaveIcon from \"@mui/icons-material/Save\";\nimport ClearAllIcon from \"@mui/icons-material/ClearAll\";\n\nimport { Settings } from \"../../Settings/Settings\";\nimport { Router } from \"../GameRoot\";\nimport { Page } from \"../Router\";\nimport { Player } from \"@player\";\nimport { StatsProgressOverviewCell } from \"./StatsProgressBar\";\nimport { currentNodeMults } from \"../../BitNode/BitNodeMultipliers\";\n\nimport { Box, Tooltip } from \"@mui/material\";\n\nimport { isClassWork } from \"../../Work/ClassWork\";\nimport { CONSTANTS } from \"../../Constants\";\nimport { isCreateProgramWork } from \"../../Work/CreateProgramWork\";\nimport { isGraftingWork } from \"../../Work/GraftingWork\";\nimport { isFactionWork } from \"../../Work/FactionWork\";\nimport { ReputationRate } from \"./ReputationRate\";\nimport { isCompanyWork } from \"../../Work/CompanyWork\";\nimport { isCrimeWork } from \"../../Work/CrimeWork\";\nimport { ActionIdentifier } from \"../../Bladeburner/ActionIdentifier\";\nimport { Skills } from \"../../PersonObjects/Skills\";\nimport { calculateSkillProgress } from \"../../PersonObjects/formulas/skill\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { useRerender } from \"./hooks\";\n\ntype SkillRowName = \"Hack\" | \"Str\" | \"Def\" | \"Dex\" | \"Agi\" | \"Cha\" | \"Int\";\ntype RowName = SkillRowName | \"HP\" | \"Money\";\nconst OverviewEventEmitter = new EventEmitter();\n\n// These values aren't displayed, they're just used for comparison to check if state has changed\nconst valUpdaters: Record any> = {\n HP: () => Player.hp.current + \"|\" + Player.hp.max, // This isn't displayed, it's just compared for updates.\n Money: () => Player.money,\n Hack: () => Player.skills.hacking,\n Str: () => Player.skills.strength,\n Def: () => Player.skills.defense,\n Dex: () => Player.skills.dexterity,\n Agi: () => Player.skills.agility,\n Cha: () => Player.skills.charisma,\n Int: () => Player.skills.intelligence,\n};\n\n//These formattedVals functions don't take in a value because of the weirdness around HP.\nconst formattedVals: Record string> = {\n HP: () => `${formatHp(Player.hp.current)} / ${formatHp(Player.hp.max)}`,\n Money: () => formatMoney(Player.money),\n Hack: () => formatSkill(Player.skills.hacking),\n Str: () => formatSkill(Player.skills.strength),\n Def: () => formatSkill(Player.skills.defense),\n Dex: () => formatSkill(Player.skills.dexterity),\n Agi: () => formatSkill(Player.skills.agility),\n Cha: () => formatSkill(Player.skills.charisma),\n Int: () => formatSkill(Player.skills.intelligence),\n};\n\nconst skillMultUpdaters: Record number> = {\n //Used by skill bars to calculate the mult\n Hack: () => Player.mults.hacking * currentNodeMults.HackingLevelMultiplier,\n Str: () => Player.mults.strength * currentNodeMults.StrengthLevelMultiplier,\n Def: () => Player.mults.defense * currentNodeMults.DefenseLevelMultiplier,\n Dex: () => Player.mults.dexterity * currentNodeMults.DexterityLevelMultiplier,\n Agi: () => Player.mults.agility * currentNodeMults.AgilityLevelMultiplier,\n Cha: () => Player.mults.charisma * currentNodeMults.CharismaLevelMultiplier,\n Int: () => 1,\n};\n\nconst skillNameMap: Record = {\n Hack: \"hacking\",\n Str: \"strength\",\n Def: \"defense\",\n Dex: \"dexterity\",\n Agi: \"agility\",\n Cha: \"charisma\",\n Int: \"intelligence\",\n};\n\ninterface SkillBarProps {\n name: SkillRowName;\n color?: string;\n}\nfunction SkillBar({ name, color }: SkillBarProps): React.ReactElement {\n const [progress, setProgress] = useState(calculateSkillProgress(0));\n useEffect(() => {\n const clearSubscription = OverviewEventEmitter.subscribe(() => {\n const mult = skillMultUpdaters[name]();\n setProgress(calculateSkillProgress(Player.exp[skillNameMap[name]], mult));\n });\n\n return clearSubscription;\n }, [name]);\n\n return (\n \n \n \n );\n}\n\ninterface ValProps {\n name: RowName;\n color?: string;\n}\nexport function Val({ name, color }: ValProps): React.ReactElement {\n //val isn't actually used here, the update of val just forces a refresh of the formattedVal that gets shown\n const [__, setVal] = useState(valUpdaters[name]());\n useEffect(() => {\n const clearSubscription = OverviewEventEmitter.subscribe(() => setVal(valUpdaters[name]()));\n return clearSubscription;\n }, [name]);\n\n return {formattedVals[name]()};\n}\n\ninterface DataRowProps {\n name: RowName; //name for UI display\n showBar: boolean;\n color?: string;\n cellType: \"cellNone\" | \"cell\";\n}\nexport function DataRow({ name, showBar, color, cellType }: DataRowProps): React.ReactElement {\n const classes = useStyles();\n const isSkill = name in skillNameMap;\n const skillBar = showBar && isSkill ? : <>;\n return (\n <>\n \n \n {name} \n \n \n \n \n \n \n {}\n \n \n \n {skillBar}\n \n );\n}\n\ninterface OverviewProps {\n parentOpen: boolean;\n save: () => void;\n killScripts: () => void;\n}\n\nexport function CharacterOverview({ parentOpen, save, killScripts }: OverviewProps): React.ReactElement {\n const [killOpen, setKillOpen] = useState(false);\n const [hasIntelligence, setHasIntelligence] = useState(Player.skills.intelligence > 0);\n const [showBars, setShowBars] = useState(!Settings.DisableOverviewProgressBars);\n useEffect(() => {\n if (!parentOpen) return; // No rerendering if overview is hidden, for performance\n const interval = setInterval(() => {\n setHasIntelligence(Player.skills.intelligence > 0);\n setShowBars(!Settings.DisableOverviewProgressBars);\n OverviewEventEmitter.emit(); // Tell every other updating component to update as well\n }, 600);\n return () => clearInterval(interval);\n }, [parentOpen]);\n const classes = useStyles();\n const theme = useTheme();\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n {hasIntelligence ? (\n \n ) : (\n <>\n )}\n \n \n \n {}\n \n \n \n \n {}\n \n \n \n \n {}\n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n setKillOpen(true)}>\n \n \n \n \n \n \n setKillOpen(false)} killScripts={killScripts} />\n \n );\n}\n\nfunction ActionText(props: { action: ActionIdentifier }): React.ReactElement {\n const bladeburner = Player.bladeburner;\n if (!bladeburner) return <>;\n const action = bladeburner.getTypeAndNameFromActionId(props.action);\n return (\n \n {action.type}: {action.name}\n \n );\n}\n\nfunction BladeburnerText(): React.ReactElement {\n const classes = useStyles();\n const rerender = useRerender();\n useEffect(() => {\n const clearSubscription = OverviewEventEmitter.subscribe(rerender);\n return clearSubscription;\n }, [rerender]);\n\n const action = Player.bladeburner?.action;\n return useMemo(\n () =>\n //Action type 1 is Idle, see ActionTypes.ts\n //TODO 2.3: Revamp typing in bladeburner\n !action || action.type === 1 ? (\n <>\n ) : (\n <>\n \n \n Bladeburner:\n \n \n \n \n \n \n \n \n ),\n [action, classes.cellNone],\n );\n}\n\ninterface WorkInProgressOverviewProps {\n tooltip: React.ReactNode;\n header: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst onClickFocusWork = (): void => {\n Player.startFocusing();\n Router.toPage(Page.Work);\n};\nfunction WorkInProgressOverview({ tooltip, children, header }: WorkInProgressOverviewProps): React.ReactElement {\n const classes = useStyles();\n return (\n <>\n \n \n {tooltip}}>\n \n {header}\n \n \n \n \n \n \n {children}\n \n \n {useMemo(\n () => (\n \n \n \n \n \n ),\n [classes.cellNone],\n )}\n \n );\n}\n\nfunction Work(): React.ReactElement {\n const rerender = useRerender();\n useEffect(() => {\n const clearSubscription = OverviewEventEmitter.subscribe(rerender);\n return clearSubscription;\n }, [rerender]);\n\n if (Player.currentWork === null || Player.focus) return <>;\n\n let details: ReactNode = \"\";\n let header: ReactNode = \"\";\n let innerText: ReactNode = \"\";\n if (isCrimeWork(Player.currentWork)) {\n const crime = Player.currentWork.getCrime();\n const perc = (Player.currentWork.unitCompleted / crime.time) * 100;\n\n details = <>{Player.currentWork.crimeType};\n header = <>You are attempting to {Player.currentWork.crimeType};\n innerText = <>{perc.toFixed(2)}%;\n }\n if (isClassWork(Player.currentWork)) {\n details = <>{Player.currentWork.getClass().youAreCurrently};\n header = <>You are {Player.currentWork.getClass().youAreCurrently};\n innerText = <>{convertTimeMsToTimeElapsedString(Player.currentWork.cyclesWorked * CONSTANTS.MilliPerCycle)};\n }\n if (isCreateProgramWork(Player.currentWork)) {\n const create = Player.currentWork;\n details = <>Coding {create.programName};\n header = <>Creating a program;\n innerText = (\n <>\n {create.programName} {((create.unitCompleted / create.unitNeeded()) * 100).toFixed(2)}%\n \n );\n }\n if (isGraftingWork(Player.currentWork)) {\n const graft = Player.currentWork;\n details = <>Grafting {graft.augmentation};\n header = <>Grafting an Augmentation;\n innerText = (\n <>\n {((graft.unitCompleted / graft.unitNeeded()) * 100).toFixed(2)}% done\n \n );\n }\n\n if (isFactionWork(Player.currentWork)) {\n const factionWork = Player.currentWork;\n header = (\n <>\n Working for {factionWork.factionName}\n \n );\n innerText = (\n <>\n rep\n
(\n )\n \n );\n }\n if (isCompanyWork(Player.currentWork)) {\n const companyWork = Player.currentWork;\n const job = Player.jobs[companyWork.companyName];\n if (!job) return <>;\n details = (\n <>\n {job} at {companyWork.companyName}\n \n );\n\n header = (\n <>\n Working at {companyWork.companyName}\n \n );\n innerText = (\n <>\n rep\n
(\n )\n \n );\n }\n\n return (\n \n {innerText}\n \n );\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n workCell: {\n textAlign: \"center\",\n maxWidth: \"200px\",\n borderBottom: \"none\",\n padding: 0,\n margin: 0,\n },\n\n workHeader: {\n fontSize: \"0.9rem\",\n },\n\n workSubtitles: {\n fontSize: \"0.8rem\",\n },\n\n cellNone: {\n borderBottom: \"none\",\n padding: 0,\n margin: 0,\n },\n cell: {\n padding: 0,\n margin: 0,\n },\n hp: {\n color: theme.colors.hp,\n },\n money: {\n color: theme.colors.money,\n },\n hack: {\n color: theme.colors.hack,\n },\n combat: {\n color: theme.colors.combat,\n },\n cha: {\n color: theme.colors.cha,\n },\n int: {\n color: theme.colors.int,\n },\n }),\n);\n\nexport { useStyles };\n","import React, { useState, useEffect } from \"react\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface IProps {\n text: string;\n onDone?: () => void;\n}\n\nfunction sleep(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function CinematicLine(props: IProps): React.ReactElement {\n const [length, setLength] = useState(0);\n const [done, setDone] = useState(false);\n\n function advance(): void {\n const newLength = length + 1;\n setLength(newLength);\n setDone(newLength >= props.text.length);\n }\n\n useEffect(() => {\n if (done && props.onDone) {\n props.onDone();\n return;\n }\n let cancel = false;\n (async () => {\n await sleep(10).then(() => !cancel && advance());\n })();\n return () => {\n cancel = true;\n };\n });\n return (\n <>\n \n {props.text.slice(0, length)}\n {!done && }\n \n \n );\n}\n","import React, { useState } from \"react\";\n\nimport { CinematicLine } from \"./CinematicLine\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\n\ninterface IProps {\n lines: string[];\n auto?: boolean;\n onDone?: () => void;\n}\n\nexport function CinematicText(props: IProps): React.ReactElement {\n const [i, setI] = useState(0);\n const [done, setDone] = useState(false);\n\n function advance(): void {\n const newI = i + 1;\n setI(newI);\n if (newI >= props.lines.length) {\n if (props.onDone && props.auto) props.onDone();\n setDone(true);\n }\n }\n\n return (\n <>\n {props.lines.slice(0, i).map((line, i) => (\n {line}\n ))}\n {props.lines.length > i && }\n {!props.auto && props.onDone && done && }\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { KEY } from \"../../utils/helpers/keyCodes\";\n\nimport { CodingContract, CodingContractTypes } from \"../../CodingContracts\";\nimport { CopyableText } from \"./CopyableText\";\nimport { Modal } from \"./Modal\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport Typography from \"@mui/material/Typography\";\nimport TextField from \"@mui/material/TextField\";\nimport Button from \"@mui/material/Button\";\n\ninterface CodingContractProps {\n c: CodingContract;\n onClose: () => void;\n onAttempt: (answer: string) => void;\n}\n\nexport const CodingContractEvent = new EventEmitter<[CodingContractProps]>();\n\nexport function CodingContractModal(): React.ReactElement {\n const [contract, setContract] = useState(null);\n const [answer, setAnswer] = useState(\"\");\n\n useEffect(() => {\n CodingContractEvent.subscribe((props) => setContract(props));\n });\n useEffect(() => {\n return () => {\n contract?.onClose();\n };\n }, [contract]);\n\n if (contract === null) return <>;\n\n function onChange(event: React.ChangeEvent): void {\n setAnswer(event.target.value);\n }\n\n function onKeyDown(event: React.KeyboardEvent): void {\n if (contract === null) return;\n const value = event.currentTarget.value;\n\n if (event.key === KEY.ENTER && value !== \"\") {\n event.preventDefault();\n contract.onAttempt(answer);\n setAnswer(\"\");\n close();\n }\n }\n\n function close(): void {\n if (contract === null) return;\n contract.onClose();\n setContract(null);\n }\n\n const contractType = CodingContractTypes[contract.c.type];\n const description = [];\n for (const [i, value] of contractType.desc(contract.c.data).split(\"\\n\").entries())\n description.push(\" }}>);\n return (\n \n \n \n You are attempting to solve a Coding Contract. You have {contract.c.getMaxNumTries() - contract.c.tries} tries\n remaining, after which the contract will self-destruct.\n \n
\n {description}\n
\n {\n contract.onAttempt(answer);\n setAnswer(\"\");\n close();\n }}\n >\n Solve\n \n ),\n }}\n />\n
\n );\n}\n","import type { CompanyName } from \"../../Enums\";\n\nimport React from \"react\";\n\nimport Select, { SelectChangeEvent } from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport Button from \"@mui/material/Button\";\nimport { Companies } from \"../../Company/Companies\";\nimport { getRecordKeys } from \"../../Types/Record\";\n\ninterface IProps {\n purchase: () => void;\n canPurchase: boolean;\n onChange: (event: SelectChangeEvent) => void;\n value: CompanyName;\n}\n\nconst sortedCompanies = getRecordKeys(Companies).sort((a, b) => a.localeCompare(b));\n\nexport function CompanyDropdown(props: IProps): React.ReactElement {\n const companies = [];\n for (const company of sortedCompanies) {\n companies.push(\n \n {company}\n ,\n );\n }\n\n return (\n \n Buy\n \n }\n sx={{ mx: 1 }}\n value={props.value}\n onChange={props.onChange}\n >\n {companies}\n \n );\n}\n","import React from \"react\";\nimport { Modal } from \"./Modal\";\n\nimport Button from \"@mui/material/Button\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n onConfirm: () => void;\n confirmationText: string | React.ReactNode;\n additionalButton?: React.ReactNode;\n}\n\nexport function ConfirmationModal(props: IProps): React.ReactElement {\n return (\n \n <>\n {props.confirmationText}\n {\n props.onConfirm();\n }}\n >\n Confirm\n \n {props.additionalButton && <>{props.additionalButton}}\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport Tooltip from \"@mui/material/Tooltip\";\n\ninterface IProps {\n value: string;\n color?: string;\n variant?:\n | \"button\"\n | \"caption\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"overline\"\n | \"inherit\"\n | undefined;\n}\n\nexport function CopyableText(props: IProps): React.ReactElement {\n const [open, setOpen] = useState(false);\n\n function copy(): void {\n const copyText = document.createElement(\"textarea\");\n copyText.value = props.value;\n document.body.appendChild(copyText);\n copyText.select();\n copyText.setSelectionRange(0, 1e10);\n document.execCommand(\"copy\");\n document.body.removeChild(copyText);\n setOpen(true);\n setTimeout(() => setOpen(false), 1000);\n }\n\n return (\n Copied!}>\n \n {props.value}\n \n \n );\n}\n","import React, { useEffect, useState } from \"react\";\n\nfunction replace(str: string, i: number, char: string): string {\n return str.substring(0, i) + char + str.substring(i + 1);\n}\n\ninterface CorruptableTextProps {\n content: string;\n}\n\nfunction randomize(char: string): string {\n const randFrom = (str: string): string => str[Math.floor(Math.random() * str.length)];\n const classes = [\"abcdefghijklmnopqrstuvwxyz\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\", \"1234567890\", \" _\", \"()[]{}<>\"];\n const other = `!@#$%^&*()_+|\\\\';\"/.,?\\`~`;\n\n for (const c of classes) {\n if (c.includes(char)) return randFrom(c);\n }\n\n return randFrom(other);\n}\n\nexport function CorruptableText(props: CorruptableTextProps): JSX.Element {\n const [content, setContent] = useState(props.content);\n\n useEffect(() => {\n let counter = 5;\n const timers: number[] = [];\n const intervalId = setInterval(() => {\n counter--;\n if (counter > 0) return;\n counter = Math.random() * 5;\n const index = Math.random() * props.content.length;\n const letter = props.content.charAt(index);\n setContent((content) => replace(content, index, randomize(letter)));\n timers.push(\n window.setTimeout(() => {\n setContent((content) => replace(content, index, letter));\n }, 500),\n );\n }, 20);\n\n return () => {\n clearInterval(intervalId);\n timers.forEach((timerId) => clearTimeout(timerId));\n };\n }, [props.content]);\n\n return {content};\n}\n","import React, { useState } from \"react\";\nimport { deleteGame } from \"../../db\";\nimport { ConfirmationModal } from \"./ConfirmationModal\";\nimport Button from \"@mui/material/Button\";\nimport { Tooltip } from \"@mui/material\";\n\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { pushDisableRestore } from \"../../Electron\";\n\ninterface IProps {\n color?: \"primary\" | \"warning\" | \"error\";\n}\n\nexport function DeleteGameButton({ color = \"primary\" }: IProps): React.ReactElement {\n const [modalOpened, setModalOpened] = useState(false);\n\n return (\n <>\n \n \n \n {\n setModalOpened(false);\n deleteGame()\n .then(() => {\n pushDisableRestore();\n setTimeout(() => location.reload(), 1000);\n })\n .catch((r) => console.error(`Could not delete game: ${r}`));\n }}\n open={modalOpened}\n onClose={() => setModalOpened(false)}\n confirmationText={\"Really delete your game? (It's permanent!)\"}\n additionalButton={}\n />\n \n );\n}\n","import { AlertEvents } from \"./AlertManager\";\n\nimport React from \"react\";\nimport { Typography } from \"@mui/material\";\n\nexport function dialogBoxCreate(txt: string | JSX.Element, html = false): void {\n AlertEvents.emit(\n typeof txt !== \"string\" ? (\n txt\n ) : html ? (\n
\n ) : (\n \n {txt}\n \n ),\n );\n}\n","import React, { useContext, useState } from \"react\";\nimport { FilePath, asFilePath } from \"../../Paths/FilePath\";\n\ninterface Navigator {\n navigate: (s: string, external: boolean) => void;\n}\n\nexport const Navigator = React.createContext({ navigate: () => undefined });\n\nexport const useNavigator = (): Navigator => useContext(Navigator);\n\ninterface History {\n pages: FilePath[];\n page: FilePath;\n push(p: FilePath): void;\n pop(): void;\n home(): void;\n}\n\nconst defaultPage = asFilePath(\"index.md\");\n\nconst HistoryContext = React.createContext({\n page: defaultPage,\n pages: [],\n push: () => undefined,\n pop: () => undefined,\n home: () => undefined,\n});\n\nexport const Provider = HistoryContext.Provider;\nexport const useHistory = (): History => useContext(HistoryContext);\n\nconst onPush = (h: History, p: FilePath): History => {\n return {\n ...h,\n page: p,\n pages: [...h.pages, h.page],\n };\n};\n\nconst onPop = (h: History): History => {\n const page = h.pages.pop() ?? defaultPage;\n return {\n ...h,\n page: page,\n };\n};\n\nconst onHome = (h: History): History => {\n return {\n ...h,\n page: defaultPage,\n pages: [],\n };\n};\n\nexport const HistoryProvider = (props: React.PropsWithChildren): React.ReactElement => {\n const [history, setHistory] = useState({\n page: defaultPage,\n pages: [],\n push(p: FilePath) {\n setHistory((h) => onPush(h, p));\n },\n pop() {\n setHistory((h) => onPop(h));\n },\n home() {\n setHistory((h) => onHome(h));\n },\n });\n return {props.children};\n};\n","import * as React from \"react\";\nimport { formatFavor } from \"../formatNumber\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n favor: {\n color: theme.colors.rep,\n },\n }),\n);\n\nexport function Favor({ favor }: { favor: number | string }): React.ReactElement {\n const classes = useStyles();\n return {typeof favor === \"number\" ? formatFavor(favor) : favor};\n}\n","import React from \"react\";\nimport { formatHashes } from \"../formatNumber\";\nimport { Hashes } from \"./Hashes\";\n\nexport function HashRate({ hashes }: { hashes: number }): React.ReactElement {\n return ;\n}\n","import * as React from \"react\";\nimport { formatHashes } from \"../formatNumber\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n money: {\n color: theme.colors.money,\n },\n }),\n);\n\nexport function Hashes({ hashes }: { hashes: number | string }): React.ReactElement {\n const classes = useStyles();\n return {typeof hashes === \"number\" ? formatHashes(hashes) : hashes};\n}\n","import React from \"react\";\n\nimport { Tooltip } from \"@mui/material\";\n\nimport ThumbUpAlt from \"@mui/icons-material/ThumbUpAlt\";\nimport ThumbDownAlt from \"@mui/icons-material/ThumbDownAlt\";\n\nexport const ComparisonIcon = ({ isBetter }: { isBetter: boolean }): JSX.Element => {\n const title = isBetter ? \"Imported value is larger!\" : \"Imported value is smaller!\";\n const icon = isBetter ? : ;\n\n return {icon};\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport ButtonGroup from \"@mui/material/ButtonGroup\";\nimport Collapse from \"@mui/material/Collapse\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Paper from \"@mui/material/Paper\";\nimport Table from \"@mui/material/Table\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableCell from \"@mui/material/TableCell\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Typography from \"@mui/material/Typography\";\n\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport WarningIcon from \"@mui/icons-material/Warning\";\nimport DirectionsRunIcon from \"@mui/icons-material/DirectionsRun\";\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\n\nimport { Skills } from \"@nsdefs\";\n\nimport { ImportData, saveObject } from \"../../../SaveObject\";\nimport { Settings } from \"../../../Settings/Settings\";\nimport { convertTimeMsToTimeElapsedString } from \"../../../utils/StringHelperFunctions\";\nimport { formatMoney, formatNumberNoSuffix } from \"../../formatNumber\";\nimport { ConfirmationModal } from \"../ConfirmationModal\";\nimport { pushImportResult } from \"../../../Electron\";\nimport { Router } from \"../../GameRoot\";\nimport { Page } from \"../../Router\";\nimport { useBoolean } from \"../hooks\";\n\nimport { ComparisonIcon } from \"./ComparisonIcon\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n padding: theme.spacing(2),\n maxWidth: \"1000px\",\n\n \"& .MuiTable-root\": {\n \"& .MuiTableCell-root\": {\n borderBottom: `1px solid ${Settings.theme.welllight}`,\n },\n\n \"& .MuiTableHead-root .MuiTableRow-root\": {\n backgroundColor: Settings.theme.backgroundsecondary,\n\n \"& .MuiTableCell-root\": {\n color: Settings.theme.primary,\n fontWeight: \"bold\",\n },\n },\n\n \"& .MuiTableBody-root\": {\n \"& .MuiTableRow-root:nth-of-type(odd)\": {\n backgroundColor: Settings.theme.well,\n\n \"& .MuiTableCell-root\": {\n color: Settings.theme.primarylight,\n },\n },\n \"& .MuiTableRow-root:nth-of-type(even)\": {\n backgroundColor: Settings.theme.backgroundsecondary,\n\n \"& .MuiTableCell-root\": {\n color: Settings.theme.primarylight,\n },\n },\n },\n },\n },\n\n skillTitle: {\n textTransform: \"capitalize\",\n },\n }),\n);\n\n// TODO: move to game constants and/or extract as an enum\nconst playerSkills: (keyof Skills)[] = [\"hacking\", \"strength\", \"defense\", \"dexterity\", \"agility\", \"charisma\"];\n\nlet initialAutosave = 0;\n\nexport const ImportSave = (props: { importString: string; automatic: boolean }): JSX.Element => {\n const classes = useStyles();\n const [importData, setImportData] = useState();\n const [currentData, setCurrentData] = useState();\n const [isImportModalOpen, { on: openImportModal, off: closeImportModal }] = useBoolean(false);\n const [isSkillsExpanded, { toggle: toggleSkillsExpand }] = useBoolean(true);\n const [headback, setHeadback] = useState(false);\n\n const handleGoBack = (): void => {\n Settings.AutosaveInterval = initialAutosave;\n pushImportResult(false);\n Router.allowRouting(true);\n setHeadback(true);\n };\n\n const handleImport = async (): Promise => {\n await saveObject.importGame(props.importString, true);\n pushImportResult(true);\n };\n\n useEffect(() => {\n // We want to disable autosave while we're in this mode\n initialAutosave = Settings.AutosaveInterval;\n Settings.AutosaveInterval = 0;\n Router.allowRouting(false);\n }, []);\n\n useEffect(() => {\n if (headback) Router.toPage(Page.Terminal);\n }, [headback]);\n\n useEffect(() => {\n async function fetchData(): Promise {\n const dataBeingImported = await saveObject.getImportDataFromString(props.importString);\n const dataCurrentlyInGame = await saveObject.getImportDataFromString(saveObject.getSaveString(true));\n\n setImportData(dataBeingImported);\n setCurrentData(dataCurrentlyInGame);\n\n return Promise.resolve();\n }\n if (props.importString) fetchData();\n }, [props.importString]);\n\n if (!importData || !currentData) return <>;\n\n return (\n \n \n Import Save Comparison\n \n {props.automatic && (\n \n We've found a NEWER save that you may want to use instead.\n \n )}\n \n Your current game's data is on the left and the data that will be imported is on the right.\n
\n Please double check everything is fine before proceeding!\n
\n \n \n \n \n \n Current Game\n Being Imported\n \n \n \n\n \n \n Game Identifier\n {currentData.playerData?.identifier ?? \"n/a\"}\n {importData.playerData?.identifier ?? \"n/a\"}\n \n {importData.playerData?.identifier !== currentData.playerData?.identifier && (\n \n \n \n )}\n \n \n \n Playtime\n {convertTimeMsToTimeElapsedString(currentData.playerData?.totalPlaytime ?? 0)}\n {convertTimeMsToTimeElapsedString(importData.playerData?.totalPlaytime ?? 0)}\n \n {importData.playerData?.totalPlaytime !== currentData.playerData?.totalPlaytime && (\n (currentData.playerData?.totalPlaytime ?? 0)\n }\n />\n )}\n \n \n\n \n Saved On\n \n {(currentData.playerData?.lastSave ?? 0) > 0\n ? new Date(currentData.playerData?.lastSave ?? 0).toLocaleString()\n : \"n/a\"}\n \n \n {(importData.playerData?.lastSave ?? 0) > 0\n ? new Date(importData.playerData?.lastSave ?? 0).toLocaleString()\n : \"n/a\"}\n \n \n {importData.playerData?.lastSave !== currentData.playerData?.lastSave && (\n (currentData.playerData?.lastSave ?? 0)}\n />\n )}\n \n \n\n \n Money\n {formatMoney(currentData.playerData?.money ?? 0)}\n {formatMoney(importData.playerData?.money ?? 0)}\n \n {importData.playerData?.money !== currentData.playerData?.money && (\n (currentData.playerData?.money ?? 0)}\n />\n )}\n \n \n \n \n \n {isSkillsExpanded ? : }\n \n Skills\n \n \n \n \n \n
\n \n {/* empty row to keep even/odd coloring */}\n {playerSkills.map((skill) => {\n const currentSkill = currentData.playerData?.skills[skill] ?? 0;\n const importSkill = importData.playerData?.skills[skill] ?? 0;\n return (\n \n {skill}\n {formatNumberNoSuffix(currentSkill, 0)}\n {formatNumberNoSuffix(importSkill, 0)}\n \n {currentSkill !== importSkill && currentSkill} />}\n \n \n );\n })}\n {playerSkills.length % 2 === 1 && (\n {/* empty row to keep even/odd coloring */}\n )}\n \n
\n \n \n \n {/* empty row to keep even/odd coloring */}\n\n \n Augmentations\n {currentData.playerData?.augmentations}\n {importData.playerData?.augmentations}\n \n {importData.playerData?.augmentations !== currentData.playerData?.augmentations && (\n (currentData.playerData?.augmentations ?? 0)\n }\n />\n )}\n \n \n\n \n Factions\n {currentData.playerData?.factions}\n {importData.playerData?.factions}\n \n {importData.playerData?.factions !== currentData.playerData?.factions && (\n (currentData.playerData?.factions ?? 0)}\n />\n )}\n \n \n \n Achievements\n {currentData.playerData?.achievements}\n {importData.playerData?.achievements}\n \n {importData.playerData?.achievements !== currentData.playerData?.achievements && (\n (currentData.playerData?.achievements ?? 0)}\n />\n )}\n \n \n\n \n Source Files\n {currentData.playerData?.sourceFiles}\n {importData.playerData?.sourceFiles}\n \n {importData.playerData?.sourceFiles !== currentData.playerData?.sourceFiles && (\n (currentData.playerData?.sourceFiles ?? 0)}\n />\n )}\n \n \n\n \n BitNode\n \n {currentData.playerData?.bitNode}-{currentData.playerData?.bitNodeLevel}\n \n \n {importData.playerData?.bitNode}-{importData.playerData?.bitNodeLevel}\n \n \n \n \n \n
\n\n \n \n \n \n \n \n Importing new save game data will completely wipe the current game data!\n
\n \n }\n />\n
\n
\n );\n};\n","import React from \"react\";\nimport { Modal } from \"./Modal\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n killScripts: () => void;\n}\n\nexport function KillScriptsModal(props: IProps): React.ReactElement {\n function onClick(): void {\n props.killScripts();\n props.onClose();\n }\n\n return (\n \n Forcefully kill all running scripts? This will also save your game and reload the game.\n \n \n );\n}\n","import React, { useState, useEffect, useRef, useCallback, useMemo } from \"react\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { RunningScript } from \"../../Script/RunningScript\";\nimport { killWorkerScriptByPid } from \"../../Netscript/killWorkerScript\";\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport Paper from \"@mui/material/Paper\";\nimport Draggable, { DraggableEvent } from \"react-draggable\";\nimport { ResizableBox, ResizeCallbackData } from \"react-resizable\";\nimport IconButton from \"@mui/material/IconButton\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport ArrowForwardIosIcon from \"@mui/icons-material/ArrowForwardIos\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport ExpandLessIcon from \"@mui/icons-material/ExpandLess\";\nimport StopCircleIcon from \"@mui/icons-material/StopCircle\";\nimport PlayCircleIcon from \"@mui/icons-material/PlayCircle\";\nimport { workerScripts } from \"../../Netscript/WorkerScripts\";\nimport { startWorkerScript } from \"../../NetscriptWorker\";\nimport { GetServer } from \"../../Server/AllServers\";\nimport { findRunningScriptByPid } from \"../../Script/ScriptHelpers\";\nimport { debounce } from \"lodash\";\nimport { Settings } from \"../../Settings/Settings\";\nimport { ANSIITypography } from \"./ANSIITypography\";\nimport { useRerender } from \"./hooks\";\nimport { dialogBoxCreate } from \"./DialogBox\";\n\nlet layerCounter = 0;\n\nexport const LogBoxEvents = new EventEmitter<[RunningScript]>();\nexport const LogBoxCloserEvents = new EventEmitter<[number]>();\nexport const LogBoxClearEvents = new EventEmitter<[]>();\n\n// Dynamic properties (size, position) bound to a specific rendered instance of a LogBox\nexport class LogBoxProperties {\n x = window.innerWidth * 0.4;\n y = window.innerHeight * 0.3;\n width = 500;\n height = 500;\n\n rerender: () => void;\n rootRef: React.RefObject;\n\n constructor(rerender: () => void, rootRef: React.RefObject) {\n this.rerender = rerender;\n this.rootRef = rootRef;\n }\n\n updateDOM(): void {\n if (!this.rootRef.current) return;\n const state = this.rootRef.current.state as { x: number; y: number };\n state.x = this.x;\n state.y = this.y;\n }\n\n setPosition(x: number, y: number): void {\n this.x = x;\n this.y = y;\n this.updateDOM();\n }\n\n setSize(width: number, height: number): void {\n this.width = width;\n this.height = height;\n this.rerender();\n }\n\n isVisible(): boolean {\n return this.rootRef.current !== null;\n }\n}\n\ninterface Log {\n id: number; // The PID of the script *when the window was first opened*\n script: RunningScript;\n}\n\nlet logs: Log[] = [];\n\nexport function LogBoxManager(): React.ReactElement {\n const rerender = useRerender();\n\n //Close tail windows by their pid.\n const closePid = useCallback(\n (pid: number) => {\n logs = logs.filter((log) => log.script.pid !== pid);\n rerender();\n },\n [rerender],\n );\n\n useEffect(\n () =>\n LogBoxEvents.subscribe((script: RunningScript) => {\n if (logs.some((l) => l.script.pid === script.pid)) return;\n logs.push({\n id: script.pid,\n script: script,\n });\n rerender();\n }),\n [rerender],\n );\n\n //Event used by ns.closeTail to close tail windows\n useEffect(\n () =>\n LogBoxCloserEvents.subscribe((pid: number) => {\n closePid(pid);\n }),\n [closePid],\n );\n\n useEffect(\n () =>\n LogBoxClearEvents.subscribe(() => {\n logs = [];\n rerender();\n }),\n [rerender],\n );\n\n //Close tail windows by their id\n function close(id: number): void {\n logs = logs.filter((l) => l.id !== id);\n rerender();\n }\n\n return (\n <>\n {logs.map((log) => (\n close(log.id)} />\n ))}\n \n );\n}\n\ninterface LogWindowProps {\n script: RunningScript;\n onClose: () => void;\n}\n\nconst useStyles = makeStyles(() =>\n createStyles({\n logs: {\n overflowY: \"scroll\",\n overflowX: \"hidden\",\n scrollbarWidth: \"auto\",\n flexDirection: \"column-reverse\",\n whiteSpace: \"pre-wrap\",\n wordWrap: \"break-word\",\n },\n titleButton: {\n borderWidth: \"0 0 0 1px\",\n borderColor: Settings.theme.welllight,\n borderStyle: \"solid\",\n borderRadius: \"0\",\n padding: \"0\",\n height: \"100%\",\n },\n }),\n);\n\nexport const logBoxBaseZIndex = 1500;\n\nfunction LogWindow(props: LogWindowProps): React.ReactElement {\n const draggableRef = useRef(null);\n const rootRef = useRef(null);\n const script = props.script;\n const classes = useStyles();\n const container = useRef(null);\n const textArea = useRef(null);\n const rerender = useRerender(1000);\n const propsRef = useRef(new LogBoxProperties(rerender, rootRef));\n script.tailProps = propsRef.current;\n const [minimized, setMinimized] = useState(false);\n\n const textAreaKeyDown = (e: React.KeyboardEvent) => {\n if (e.ctrlKey && e.key === \"a\") {\n if (!textArea.current) return; //Should never happen\n const r = new Range();\n r.setStartBefore(textArea.current);\n r.setEndAfter(textArea.current);\n document.getSelection()?.removeAllRanges();\n document.getSelection()?.addRange(r);\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const onResize = (e: React.SyntheticEvent, { size }: ResizeCallbackData) => {\n propsRef.current.setSize(size.width, size.height);\n };\n\n const updateLayer = useCallback(() => {\n const c = container.current;\n if (c === null) return;\n c.style.zIndex = logBoxBaseZIndex + layerCounter + \"\";\n layerCounter++;\n rerender();\n }, [rerender]);\n\n useEffect(() => {\n propsRef.current.updateDOM();\n updateLayer();\n }, [updateLayer]);\n\n function kill(): void {\n killWorkerScriptByPid(script.pid);\n rerender();\n }\n\n function run(): void {\n const server = GetServer(script.server);\n if (server === null) return;\n const s = findRunningScriptByPid(script.pid, server);\n if (s === null) {\n const baseScript = server.scripts.get(script.filename);\n if (!baseScript) {\n return dialogBoxCreate(\n `Could not launch script. The script ${script.filename} no longer exists on the server ${server.hostname}.`,\n );\n }\n const ramUsage = baseScript.getRamUsage(server.scripts);\n if (!ramUsage) {\n return dialogBoxCreate(`Could not calculate ram usage for ${script.filename} on ${server.hostname}.`);\n }\n // Reset some things, because we're reusing the RunningScript instance\n script.ramUsage = ramUsage;\n script.dataMap = {};\n script.onlineExpGained = 0;\n script.onlineMoneyMade = 0;\n script.onlineRunningTime = 0.01;\n\n startWorkerScript(script, server);\n rerender();\n } else {\n console.warn(`Tried to rerun pid ${script.pid} that was already running!`);\n }\n }\n\n function title(): React.ReactElement {\n const title_str = script.title === \"string\" ? script.title : `${script.filename} ${script.args.join(\" \")}`;\n return (\n \n {script.title}\n \n );\n }\n\n function minimize(): void {\n setMinimized(!minimized);\n }\n\n function lineColor(s: string): \"error\" | \"success\" | \"warn\" | \"info\" | \"primary\" {\n if (s.match(/(^\\[[^\\]]+\\] )?ERROR/) || s.match(/(^\\[[^\\]]+\\] )?FAIL/)) {\n return \"error\";\n }\n if (s.match(/(^\\[[^\\]]+\\] )?SUCCESS/)) {\n return \"success\";\n }\n if (s.match(/(^\\[[^\\]]+\\] )?WARN/)) {\n return \"warn\";\n }\n if (s.match(/(^\\[[^\\]]+\\] )?INFO/)) {\n return \"info\";\n }\n return \"primary\";\n }\n\n const onWindowResize = useMemo(\n () =>\n debounce((): void => {\n const node = draggableRef.current;\n if (!node) return;\n\n if (!isOnScreen(node)) {\n propsRef.current.setPosition(0, 0);\n }\n }, 100),\n [],\n );\n\n // And trigger fakeDrag when the window is resized\n useEffect(() => {\n window.addEventListener(\"resize\", onWindowResize);\n return () => {\n window.removeEventListener(\"resize\", onWindowResize);\n };\n }, [onWindowResize]);\n\n const isOnScreen = (node: HTMLDivElement): boolean => {\n const bounds = node.getBoundingClientRect();\n\n return !(bounds.right < 0 || bounds.bottom < 0 || bounds.left > innerWidth || bounds.top > outerWidth);\n };\n\n const onDrag = (e: DraggableEvent): void | false => {\n e.preventDefault();\n // bound to body\n if (\n e instanceof MouseEvent &&\n (e.clientX < 0 || e.clientY < 0 || e.clientX > innerWidth || e.clientY > innerHeight)\n )\n return false;\n };\n\n // Max [width, height]\n const minConstraints: [number, number] = [150, 33];\n\n return (\n \n \n \n \n \n }\n >\n <>\n \n {title()}\n\n \n {!workerScripts.has(script.pid) ? (\n \n \n \n ) : (\n \n \n \n )}\n \n {minimized ? : }\n \n \n \n \n \n \n\n \n
\n {script.logs.map(\n (line: React.ReactNode, i: number): React.ReactNode =>\n typeof line !== \"string\" ? line : ,\n )}\n
\n \n \n \n \n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Fade from \"@mui/material/Fade\";\nimport M from \"@mui/material/Modal\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { SxProps } from \"@mui/system\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n modal: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n paper: {\n position: \"relative\",\n backgroundColor: theme.palette.background.default,\n border: \"2px solid \" + theme.palette.primary.main,\n boxShadow: `0px 3px 5px -1px ${theme.palette.primary.dark},0px 5px 8px 0px ${theme.palette.primary.dark},0px 1px 14px 0px ${theme.palette.primary.dark}`,\n padding: 2,\n maxWidth: \"80%\",\n maxHeight: \"80%\",\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n // webkit\n display: \"none\",\n },\n scrollbarWidth: \"none\", // firefox\n },\n closeButton: {\n position: \"absolute\",\n right: 3,\n top: 3,\n width: 20,\n height: 20,\n },\n }),\n);\n\ninterface ModalProps {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n sx?: SxProps;\n}\n\nexport const Modal = ({ open, onClose, children, sx }: ModalProps): React.ReactElement => {\n const classes = useStyles();\n const [content, setContent] = useState(children);\n useEffect(() => {\n if (!open) return;\n setContent(children);\n }, [children, open]);\n\n return (\n \n \n \n \n \n \n {content}\n \n \n \n );\n};\n","import * as React from \"react\";\nimport { formatMoney } from \"../formatNumber\";\nimport { Player } from \"@player\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n unbuyable: {\n color: theme.palette.action.disabled,\n },\n money: {\n color: theme.colors.money,\n },\n }),\n);\n\ninterface IProps {\n money: number | string;\n forPurchase?: boolean;\n}\nexport function Money(props: IProps): React.ReactElement {\n const classes = useStyles();\n if (props.forPurchase) {\n if (typeof props.money !== \"number\")\n throw new Error(\"if value is for a purchase, money should be number, contact dev\");\n if (!Player.canAfford(props.money)) return {formatMoney(props.money)};\n }\n return (\n {typeof props.money === \"number\" ? formatMoney(props.money) : props.money}\n );\n}\n","import React from \"react\";\nimport { formatMoney } from \"../formatNumber\";\nimport { Money } from \"./Money\";\n\nexport function MoneyRate({ money }: { money: number }): JSX.Element {\n return ;\n}\n","import { TextField, StandardTextFieldProps } from \"@mui/material\";\nimport React from \"react\";\nimport { parseBigNumber } from \"../formatNumber\";\n\ninterface IProps extends Omit {\n onChange: (v: number) => void;\n}\n\nexport function NumberInput(props: IProps): React.ReactElement {\n const textProps = {\n ...props,\n onChange: (event: React.ChangeEvent) => {\n const amt = parseBigNumber(event.target.value);\n if (event.target.value === \"\" || isNaN(amt)) props.onChange(NaN);\n else props.onChange(amt);\n },\n };\n return ;\n}\n","import { FormControlLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport React, { useState } from \"react\";\n\ntype OptionSwitchProps = {\n checked: boolean;\n onChange: (newValue: boolean, error?: string) => void;\n text: React.ReactNode;\n tooltip: React.ReactNode;\n};\n\nexport function OptionSwitch({ checked, onChange, text, tooltip }: OptionSwitchProps): React.ReactElement {\n const [value, setValue] = useState(checked);\n\n function handleSwitchChange(event: React.ChangeEvent): void {\n const newValue = event.target.checked;\n setValue(newValue);\n onChange(newValue);\n }\n\n return (\n <>\n }\n label={\n {tooltip}}>\n {text}\n \n }\n />\n
\n \n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from \"react\";\nimport Draggable, { DraggableEventHandler } from \"react-draggable\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Collapse from \"@mui/material/Collapse\";\nimport Paper from \"@mui/material/Paper\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\nimport EqualizerIcon from \"@mui/icons-material/Equalizer\";\nimport SchoolIcon from \"@mui/icons-material/School\";\nimport { Router } from \"../GameRoot\";\nimport { Page } from \"../Router\";\nimport { Settings } from \"../../Settings/Settings\";\nimport { Box, Button, Typography } from \"@mui/material\";\nimport { debounce } from \"lodash\";\n\nconst useStyles = makeStyles({\n overviewContainer: {\n position: \"fixed\",\n top: 0,\n right: 0,\n zIndex: 1500,\n display: \"flex\",\n justifyContent: \"flex-end\",\n flexDirection: \"column\",\n },\n\n header: {\n cursor: \"grab\",\n textAlign: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n\n visibilityToggle: {\n padding: \"2px\",\n minWidth: \"inherit\",\n backgroundColor: \"transparent\",\n border: \"none\",\n \"&:hover\": {\n backgroundColor: \"rgba(255, 255, 255, 0.1)\",\n },\n },\n\n collapse: {\n borderTop: `1px solid ${Settings.theme.welllight}`,\n margin: \"0 auto\",\n },\n\n icon: {\n fontSize: \"24px\",\n },\n});\n\ninterface IProps {\n children: (parentOpen: boolean) => JSX.Element[] | JSX.Element | React.ReactElement[] | React.ReactElement;\n mode: \"tutorial\" | \"overview\";\n}\n\nexport interface OverviewSettings {\n opened: boolean;\n x: number;\n y: number;\n}\n\nexport function Overview({ children, mode }: IProps): React.ReactElement {\n const draggableRef = useRef(null);\n const [open, setOpen] = useState(Settings.overview.opened);\n const [x, setX] = useState(Settings.overview.x);\n const [y, setY] = useState(Settings.overview.y);\n const classes = useStyles();\n\n const CurrentIcon = open ? KeyboardArrowUpIcon : KeyboardArrowDownIcon;\n const LeftIcon = mode === \"tutorial\" ? SchoolIcon : EqualizerIcon;\n const header = mode === \"tutorial\" ? \"Tutorial\" : \"Overview\";\n const handleStop: DraggableEventHandler = (e, data) => {\n setX(data.x);\n setY(data.y);\n };\n\n useEffect(() => {\n Settings.overview = { x, y, opened: open };\n }, [open, x, y]);\n\n const fakeDrag = useMemo(\n () =>\n debounce((): void => {\n const node = draggableRef.current;\n if (!node) return;\n\n // No official way to trigger an onChange to recompute the bounds\n // See: https://github.com/react-grid-layout/react-draggable/issues/363#issuecomment-947751127\n triggerMouseEvent(node, \"mouseover\");\n triggerMouseEvent(node, \"mousedown\");\n triggerMouseEvent(document, \"mousemove\");\n triggerMouseEvent(node, \"mouseup\");\n triggerMouseEvent(node, \"click\");\n }, 100),\n [],\n );\n\n // Trigger fakeDrag once to make sure loaded data is not outside bounds\n useEffect(() => fakeDrag(), [fakeDrag]);\n\n // And trigger fakeDrag when the window is resized\n useEffect(() => {\n window.addEventListener(\"resize\", fakeDrag);\n return () => {\n window.removeEventListener(\"resize\", fakeDrag);\n };\n }, [fakeDrag]);\n\n const triggerMouseEvent = (node: HTMLDivElement | Document, eventType: string): void => {\n const clickEvent = document.createEvent(\"MouseEvents\");\n clickEvent.initEvent(eventType, true, true);\n node.dispatchEvent(clickEvent);\n };\n\n if (Router.page() === Page.BitVerse || Router.page() === Page.Loading || Router.page() === Page.Recovery)\n return <>;\n return (\n \n \n setOpen((old) => !old)} ref={draggableRef}>\n \n \n \n {header}\n \n \n {\n setOpen((old) => !old)}\n onTouchEnd={() => setOpen((old) => !old)}\n />\n }\n \n \n \n \n {children(open)}\n \n \n \n );\n}\n","import LinearProgress from \"@mui/material/LinearProgress\";\nimport { Theme } from \"@mui/material/styles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nexport const ProgressBar = withStyles((theme: Theme) => ({\n root: {\n backgroundColor: theme.palette.background.paper,\n },\n bar: {\n transition: \"none\",\n backgroundColor: theme.palette.primary.main,\n },\n}))(LinearProgress);\n","import React, { useState, useEffect } from \"react\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport { Modal } from \"./Modal\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\nimport Select, { SelectChangeEvent } from \"@mui/material/Select\";\nimport TextField from \"@mui/material/TextField\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport { KEY } from \"../../utils/helpers/keyCodes\";\n\nexport const PromptEvent = new EventEmitter<[Prompt]>();\n\ninterface Prompt {\n txt: string;\n options?: { type?: string; choices?: string[] };\n resolve: (result: boolean | string) => void;\n}\n\nexport function PromptManager(): React.ReactElement {\n const [prompt, setPrompt] = useState(null);\n useEffect(() => {\n return PromptEvent.subscribe((p: Prompt) => {\n setPrompt(p);\n });\n }, []);\n\n if (prompt === null) {\n return <>;\n }\n\n function close(): void {\n if (prompt === null) return;\n if ([\"text\", \"select\"].includes(prompt.options?.type ?? \"\")) {\n prompt.resolve(\"\");\n } else {\n prompt.resolve(false);\n }\n setPrompt(null);\n }\n\n const types: Record React.ReactElement> = {\n text: PromptMenuText,\n select: PromptMenuSelect,\n };\n\n let PromptContent = PromptMenuBoolean;\n if (prompt.options?.type && [\"text\", \"select\"].includes(prompt.options.type))\n PromptContent = types[prompt.options.type];\n const resolve = (value: boolean | string): void => {\n prompt.resolve(value);\n setPrompt(null);\n };\n\n return (\n \n
\n        {prompt.txt}\n      
\n \n
\n );\n}\n\ninterface IContentProps {\n prompt: Prompt;\n resolve: (value: boolean | string) => void;\n}\n\nfunction PromptMenuBoolean({ resolve }: IContentProps): React.ReactElement {\n const yes = (): void => resolve(true);\n const no = (): void => resolve(false);\n\n return (\n <>\n
\n \n \n
\n \n );\n}\n\nfunction PromptMenuText({ resolve }: IContentProps): React.ReactElement {\n const [value, setValue] = useState(\"\");\n\n const submit = (): void => resolve(value);\n\n const onInput = (event: React.ChangeEvent): void => {\n setValue(event.target.value);\n };\n\n const onKeyDown = (event: React.KeyboardEvent): void => {\n event.stopPropagation();\n\n if (event.key === KEY.ENTER) {\n event.preventDefault();\n submit();\n }\n };\n\n return (\n <>\n
\n Confirm,\n }}\n />\n
\n \n );\n}\n\nfunction PromptMenuSelect({ prompt, resolve }: IContentProps): React.ReactElement {\n const [value, setValue] = useState(\"\");\n\n const submit = (): void => resolve(value);\n\n const onChange = (event: SelectChangeEvent): void => {\n setValue(event.target.value);\n };\n\n const getItems = (choices: string[]): React.ReactElement[] => {\n const content: React.ReactElement[] = [];\n for (const i of choices) {\n content.push(\n \n {i}\n ,\n );\n }\n return content;\n };\n\n if (!Array.isArray(prompt.options?.choices)) {\n return Error: Please provide an array of string choices;\n }\n\n return (\n <>\n
\n \n \n
\n \n );\n}\n","import React, { useEffect } from \"react\";\n\nimport { Typography, Link, Button, ButtonGroup, Tooltip, Box, Paper, TextField } from \"@mui/material\";\nimport { Settings } from \"../../Settings/Settings\";\nimport { load } from \"../../db\";\nimport { Router } from \"../GameRoot\";\nimport { Page } from \"../Router\";\nimport { download } from \"../../SaveObject\";\nimport { IErrorData, newIssueUrl } from \"../../utils/ErrorHelper\";\nimport { DeleteGameButton } from \"./DeleteGameButton\";\nimport { SoftResetButton } from \"./SoftResetButton\";\n\nimport DirectionsRunIcon from \"@mui/icons-material/DirectionsRun\";\nimport GitHubIcon from \"@mui/icons-material/GitHub\";\n\nexport let RecoveryMode = false;\n\nexport function ActivateRecoveryMode(): void {\n RecoveryMode = true;\n}\n\ninterface IProps {\n softReset: () => void;\n errorData?: IErrorData;\n resetError?: () => void;\n}\n\nexport function RecoveryRoot({ softReset, errorData, resetError }: IProps): React.ReactElement {\n function recover(): void {\n if (resetError) resetError();\n RecoveryMode = false;\n Router.toPage(Page.Terminal);\n }\n Settings.AutosaveInterval = 0;\n\n useEffect(() => {\n load()\n .then((content) => {\n const epochTime = Math.round(Date.now() / 1000);\n const filename = `RECOVERY_BITBURNER_${epochTime}.json`;\n download(filename, content);\n })\n .catch((err) => console.error(err));\n }, []);\n\n return (\n \n RECOVERY MODE ACTIVATED\n \n There was an error with your save file and the game went into recovery mode. In this mode saving is disabled and\n the game will automatically export your save file (to prevent corruption).\n \n At this point it is recommended to alert a developer.\n \n \n File an issue on github\n \n \n \n \n Make a reddit post\n \n \n \n \n Post in the #bug-report channel on Discord.\n \n \n Please include your save file.\n
\n
\n You can disable recovery mode now. But chances are the game will not work correctly.\n \n \n \n \n \n \n \n\n {errorData && (\n \n {errorData.title}\n \n \n \n \n }\n color=\"info\"\n sx={{ px: 2 }}\n href={errorData.issueUrl ?? newIssueUrl}\n target={\"_blank\"}\n >\n Submit Issue to GitHub\n \n \n \n )}\n
\n );\n}\n","import * as React from \"react\";\nimport { formatReputation } from \"../formatNumber\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n reputation: {\n color: theme.colors.rep,\n },\n }),\n);\n\nexport function Reputation({ reputation }: { reputation: number | string }): React.ReactElement {\n const classes = useStyles();\n return (\n \n {typeof reputation === \"number\" ? formatReputation(reputation) : reputation}\n \n );\n}\n","import React from \"react\";\nimport { formatReputation } from \"../formatNumber\";\nimport { Reputation } from \"./Reputation\";\n\nexport function ReputationRate({ reputation }: { reputation: number }): React.ReactElement {\n return ;\n}\n","/**\n * Creates a dropdown (select HTML element) with server hostnames as options\n *\n * Configurable to only contain certain types of servers\n */\nimport React from \"react\";\nimport { GetAllServers } from \"../../Server/AllServers\";\nimport { Server } from \"../../Server/Server\";\nimport { BaseServer } from \"../../Server/BaseServer\";\n\nimport { HacknetServer } from \"../../Hacknet/HacknetServer\";\nimport Select, { SelectChangeEvent } from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport Button from \"@mui/material/Button\";\n\n// TODO make this an enum when this gets converted to TypeScript\nexport const ServerType = {\n All: 0,\n Foreign: 1, // Hackable, non-owned servers\n Owned: 2, // Home Computer, Purchased Servers, and Hacknet Servers\n Purchased: 3, // Everything from Owned except home computer\n};\n\ninterface IProps {\n purchase: () => void;\n canPurchase: boolean;\n serverType: number;\n onChange: (event: SelectChangeEvent) => void;\n value: string;\n}\n\nexport function ServerDropdown(props: IProps): React.ReactElement {\n /**\n * Checks if the server should be shown in the dropdown menu, based on the\n * 'serverType' property\n */\n function isValidServer(s: BaseServer): boolean {\n const purchased = s instanceof Server && s.purchasedByPlayer;\n const type = props.serverType;\n switch (type) {\n case ServerType.All:\n return true;\n case ServerType.Foreign:\n return s.hostname !== \"home\" && !purchased;\n case ServerType.Owned:\n return purchased || s instanceof HacknetServer || s.hostname === \"home\";\n case ServerType.Purchased:\n return purchased || s instanceof HacknetServer;\n default:\n console.warn(`Invalid ServerType specified for ServerDropdown component: ${type}`);\n return false;\n }\n }\n\n const servers = [];\n for (const server of GetAllServers().sort((a, b) => a.hostname.localeCompare(b.hostname))) {\n if (isValidServer(server)) {\n servers.push(\n \n {server.hostname}\n ,\n );\n }\n }\n\n return (\n \n Buy\n \n }\n sx={{ mx: 1 }}\n value={props.value}\n onChange={props.onChange}\n >\n {servers}\n \n );\n}\n","import type { ToastVariant } from \"@enums\";\n\nimport React, { useEffect } from \"react\";\nimport { useSnackbar, SnackbarProvider as SB } from \"notistack\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { EventEmitter } from \"../../utils/EventEmitter\";\nimport Alert from \"@mui/material/Alert\";\nimport Paper from \"@mui/material/Paper\";\nimport { logBoxBaseZIndex } from \"./LogBoxManager\";\n\ninterface IProps {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst useStyles = makeStyles(() => ({\n snackbar: {\n // Log popup z-index increments, so let's add a padding to be well above them.\n zIndex: `${logBoxBaseZIndex + 1000} !important` as any,\n\n \"& .MuiAlert-icon\": {\n alignSelf: \"center\",\n },\n },\n}));\n\nexport function SnackbarProvider(props: IProps): React.ReactElement {\n const classes = useStyles();\n return (\n \n {props.children}\n \n );\n}\n\nexport const SnackbarEvents = new EventEmitter<[string | React.ReactNode, ToastVariant, number | null]>();\n\nexport function Snackbar(): React.ReactElement {\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n useEffect(() =>\n SnackbarEvents.subscribe((s, variant, duration) => {\n const id = enqueueSnackbar({s}, {\n content: (k, m) => {m},\n variant: variant,\n autoHideDuration: duration,\n onClick: () => closeSnackbar(id),\n });\n }),\n );\n return <>;\n}\n","import React, { useState } from \"react\";\n\nimport { ConfirmationModal } from \"./ConfirmationModal\";\nimport Button from \"@mui/material/Button\";\nimport { Tooltip, Typography } from \"@mui/material\";\nimport RestartAltIcon from \"@mui/icons-material/RestartAlt\";\n\ninterface IProps {\n color?: \"primary\" | \"warning\" | \"error\";\n noConfirmation?: boolean;\n onTriggered: () => void;\n}\n\nexport function SoftResetButton({\n color = \"primary\",\n noConfirmation = false,\n onTriggered,\n}: IProps): React.ReactElement {\n const [modalOpened, setModalOpened] = useState(false);\n\n function handleButtonClick(): void {\n if (noConfirmation) {\n onTriggered();\n } else {\n setModalOpened(true);\n }\n }\n\n const confirmationMessage = `Soft Reset will:\n\n - Reset basic stats and money\n - Accumulate Favor for companies and factions\n - Install Augmentations if you have any purchased\n - Reset servers, programs, recent scripts and terminal \n - Scripts on your home server will stop, but aren't deleted\n - Stop some special mechanics like Bladeburner tasks\n - You will not lose overall progress or access to special mechanics\n\nAre you sure? \n `;\n\n return (\n <>\n \n \n \n setModalOpened(false)}\n confirmationText={{confirmationMessage}}\n additionalButton={}\n />\n \n );\n}\n","import React from \"react\";\nimport { Modal } from \"./Modal\";\n\ninterface IProps {\n open: boolean;\n onClose: () => void;\n children: JSX.Element[] | JSX.Element | React.ReactElement[] | React.ReactElement;\n}\n\nexport function StaticModal(props: IProps): React.ReactElement {\n return (\n \n {props.children}\n \n );\n}\n","import * as React from \"react\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport { TableCell, Tooltip, Typography } from \"@mui/material\";\nimport { useStyles } from \"./CharacterOverview\";\nimport { ISkillProgress } from \"../../PersonObjects/formulas/skill\";\nimport { formatExp } from \"../formatNumber\";\n\ninterface IProgressProps {\n min: number;\n max: number;\n current: number;\n remaining: number;\n progress: number;\n color?: React.CSSProperties[\"color\"];\n}\n\ninterface IStatsOverviewCellProps {\n progress: ISkillProgress;\n color?: React.CSSProperties[\"color\"];\n}\n\nexport function StatsProgressBar({\n min,\n max,\n current,\n remaining,\n progress,\n color,\n}: IProgressProps): React.ReactElement {\n const tooltip = (\n \n Progress: \n {formatExp(current)} / {formatExp(max - min)}\n
\n Remaining: \n {formatExp(remaining)} ({progress.toFixed(2)}%)\n
\n );\n\n return (\n \n \n \n );\n}\n\nexport function StatsProgressOverviewCell({ progress: skill, color }: IStatsOverviewCellProps): React.ReactElement {\n const classes = useStyles();\n return (\n \n \n \n );\n}\n","import React from \"react\";\n\nimport { Typography, TableCell, TableRow } from \"@mui/material\";\n\nimport { formatExp, formatSkill } from \"../formatNumber\";\nimport { useStyles } from \"./CharacterOverview\";\n\ninterface ITableRowData {\n content?: string;\n level?: number;\n exp?: number;\n}\n\ninterface IProps {\n name: string;\n color: string;\n data?: ITableRowData;\n children?: React.ReactElement;\n}\n\nexport const StatsRow = ({ name, color, children, data }: IProps): React.ReactElement => {\n const classes = useStyles();\n\n let content = \"\";\n if (data) {\n if (data.content !== undefined) {\n content = data.content;\n } else if (data.level !== undefined && data.exp !== undefined) {\n content = `${formatSkill(data.level)} (${formatExp(data.exp)} exp)`;\n } else if (data.level !== undefined && data.exp === undefined) {\n content = `${formatSkill(data.level)}`;\n }\n }\n\n return (\n \n \n {name}\n \n \n {content && {content}}\n {children}\n \n \n );\n};\n","import React from \"react\";\n\nimport { Table, TableCell } from \"./Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport { Table as MuiTable } from \"@mui/material\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Typography from \"@mui/material/Typography\";\n\ninterface IProps {\n rows: React.ReactNode[][];\n title?: string;\n wide?: boolean;\n}\n\nexport function StatsTable({ rows, title, wide }: IProps): React.ReactElement {\n const T = wide ? MuiTable : Table;\n return (\n <>\n {title && {title}}\n \n \n {rows.map((row: React.ReactNode[], i: number) => (\n \n {row.map((elem: React.ReactNode, i: number) => (\n \n {elem}\n \n ))}\n \n ))}\n \n \n \n );\n}\n","import React from \"react\";\nimport { TableCell as MuiTableCell, TableCellProps, Table as MuiTable, TableProps } from \"@mui/material\";\n\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst useStyles = makeStyles({\n root: {\n borderBottom: \"none\",\n },\n small: {\n width: \"1px\",\n },\n});\n\nexport const TableCell: React.FC = (props: TableCellProps) => {\n return (\n \n );\n};\n\nexport const Table: React.FC = (props: TableProps) => {\n return (\n \n );\n};\n","import * as React from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport FirstPageIcon from \"@mui/icons-material/FirstPage\";\nimport KeyboardArrowLeft from \"@mui/icons-material/KeyboardArrowLeft\";\nimport KeyboardArrowRight from \"@mui/icons-material/KeyboardArrowRight\";\nimport LastPageIcon from \"@mui/icons-material/LastPage\";\n\ninterface TablePaginationActionsProps {\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange: (event: React.MouseEvent, newPage: number) => void;\n}\n\nexport function TablePaginationActionsAll(props: TablePaginationActionsProps): React.ReactElement {\n const theme = useTheme();\n const { count, page, rowsPerPage, onPageChange } = props;\n\n const handleFirstPageButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, 0);\n };\n\n const handleBackButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, page - 1);\n };\n\n const handleNextButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, page + 1);\n };\n\n const handleLastPageButtonClick = (event: React.MouseEvent): void => {\n onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));\n };\n\n return (\n \n \n {theme.direction === \"rtl\" ? : }\n \n \n {theme.direction === \"rtl\" ? : }\n \n = Math.ceil(count / rowsPerPage) - 1}>\n {theme.direction === \"rtl\" ? : }\n \n = Math.ceil(count / rowsPerPage) - 1}>\n {theme.direction === \"rtl\" ? : }\n \n \n );\n}\n","import React from \"react\";\nimport { createStyles, makeStyles } from \"@mui/styles\";\nimport { Tooltip, Typography } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport { CityName } from \"@enums\";\n\ninterface ICityProps {\n currentCity: CityName;\n city: CityName;\n onTravel: (city: CityName) => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n travel: {\n color: theme.colors.white,\n lineHeight: \"1em\",\n whiteSpace: \"pre\",\n cursor: \"pointer\",\n },\n }),\n);\n\nfunction City(props: ICityProps): React.ReactElement {\n const classes = useStyles();\n if (props.city !== props.currentCity) {\n return (\n {props.city}}>\n props.onTravel(props.city)} className={classes.travel}>\n {props.city[0]}\n \n \n );\n }\n return {props.city[0]};\n}\n\ninterface IProps {\n currentCity: CityName;\n onTravel: (city: CityName) => void;\n}\n\nexport function WorldMap(props: IProps): React.ReactElement {\n // prettier-ignore\n return (\n <>\n ,_ . ._. _. .\n , _-\\','|~\\~ ~/ ;-'_ _-' ,;_;_, ~~-\n /~~-\\_/-'~'--' \\~~| ', ,' / / ~|-_\\_/~/~ ~~--~~~~'--_\n / ,/'-/~ '\\ ,' _ , ','|~ ._/-, /~\n ~/-'~\\_, '-,| '|. ' ~ ,\\ /'~ / /_ /~\n .-~ '| '',\\~|\\ _\\~ ,_ , /,\n '\\ /'~ |_/~\\\\,-,~ \\ \" ,_,/ |\n | / ._-~'\\_ _~| \\ ) \n \\ __-\\ '/ ~ |\\ \\_ / ~\n ., '\\ |, ~-_ - | \\\\_' ~| /\\ \\~ ,\n ~-_' _; '\\ '-, \\,' /\\/ |\n '\\_,~'\\_ \\_ _, /' ' |, /|'\n / \\_ ~ | / \\ ~'; -,_.\n | ~\\ | | , '-_, ,; ~ ~\\\n \\, / \\ / /| ,-, , -,\n | ,/ | |' |/ ,- ~ \\ '.\n ,| ,/ \\ ,/ \\ |\n / | ~ -~~-, / _\n | ,-' ~ /\n / ,' ~\n ',| ~\n ~'\n \n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\n/** Hook that returns a function for the component. Optionally set an interval to rerender the component.\n * @param autoRerenderTime: Optional. If provided and nonzero, used as the ms interval to automatically call the rerender function.\n */\nexport function useRerender(autoRerenderTime?: number) {\n const [__, setRerender] = useState(false);\n\n const rerender = useCallback(() => setRerender((old) => !old), []);\n\n useEffect(() => {\n if (!autoRerenderTime) return;\n const intervalID = setInterval(rerender, autoRerenderTime);\n return () => clearInterval(intervalID);\n }, [rerender, autoRerenderTime]);\n\n return rerender;\n}\n\nexport function useBoolean(initialValue = false) {\n const [value, setValue] = useState(initialValue);\n\n const toggle = useCallback(() => {\n setValue((old) => !old);\n }, []);\n\n const on = useCallback(() => {\n setValue(true);\n }, []);\n\n const off = useCallback(() => {\n setValue(false);\n }, []);\n\n return [value, { toggle, on, off }] as const;\n}\n","import type { ScriptFilePath } from \"../Paths/ScriptFilePath\";\nimport type { TextFilePath } from \"../Paths/TextFilePath\";\nimport type { Faction } from \"../Faction/Faction\";\nimport type { Location } from \"../Locations/Location\";\n\n// This enum doesn't need enum helper support for now\n/**\n * The full-screen page the player is currently be on.\n * These are \"simple\" pages that don't require any extra parameters to\n * transition to. You can use setPage() with these.\n */\nexport enum SimplePage {\n ActiveScripts = \"Active Scripts\",\n Augmentations = \"Augmentations\",\n Bladeburner = \"Bladeburner\",\n City = \"City\",\n Corporation = \"Corporation\",\n CreateProgram = \"Create Program\",\n DevMenu = \"Dev\",\n Factions = \"Factions\",\n Gang = \"Gang\",\n Hacknet = \"Hacknet\",\n Milestones = \"Milestones\",\n Options = \"Options\",\n Grafting = \"Grafting\",\n Sleeves = \"Sleeves\",\n Stats = \"Stats\",\n StockMarket = \"Stock Market\",\n Terminal = \"Terminal\",\n Travel = \"Travel\",\n Documentation = \"Documentation\",\n Work = \"Work\",\n BladeburnerCinematic = \"Bladeburner Cinematic\",\n Loading = \"Loading\",\n StaneksGift = \"Staneks Gift\",\n Recovery = \"Recovery\",\n Achievements = \"Achievements\",\n ThemeBrowser = \"Theme Browser\",\n}\n\nexport enum ComplexPage {\n BitVerse = \"BitVerse\",\n Infiltration = \"Infiltration\",\n Job = \"Job\",\n Faction = \"Faction\",\n FactionAugmentations = \"Faction Augmentations\",\n ScriptEditor = \"Script Editor\",\n Location = \"Location\",\n ImportSave = \"Import Save\",\n}\n\n// Using the same name as both type and object to mimic enum-like behavior.\n// See https://stackoverflow.com/a/71255520/202091\nexport type Page = SimplePage | ComplexPage;\nexport const Page = { ...SimplePage, ...ComplexPage };\n\nexport type PageContext = T extends ComplexPage.BitVerse\n ? { flume: boolean; quick: boolean }\n : T extends ComplexPage.Infiltration\n ? { location: Location }\n : T extends ComplexPage.Job\n ? { location: Location }\n : T extends ComplexPage.Faction\n ? { faction: Faction }\n : T extends ComplexPage.FactionAugmentations\n ? { faction: Faction }\n : T extends ComplexPage.ScriptEditor\n ? { files?: Map; options?: ScriptEditorRouteOptions }\n : T extends ComplexPage.Location\n ? { location: Location }\n : T extends ComplexPage.ImportSave\n ? { base64Save: string; automatic?: boolean }\n : never;\n\nexport type PageWithContext =\n | ({ page: ComplexPage.BitVerse } & PageContext)\n | ({ page: ComplexPage.Infiltration } & PageContext)\n | ({ page: ComplexPage.Job } & PageContext)\n | ({ page: ComplexPage.Faction } & PageContext)\n | ({ page: ComplexPage.FactionAugmentations } & PageContext)\n | ({ page: ComplexPage.ScriptEditor } & PageContext)\n | ({ page: ComplexPage.Location } & PageContext)\n | ({ page: ComplexPage.ImportSave } & PageContext)\n | { page: SimplePage };\n\nexport interface ScriptEditorRouteOptions {\n vim: boolean;\n}\n\n/** The router keeps track of player navigation/routing within the game. */\nexport interface IRouter {\n isInitialized: boolean;\n page(): Page;\n allowRouting(value: boolean): void;\n toPage(page: SimplePage): void;\n toPage(page: T, context: PageContext): void;\n /** go to a preveious page (if any) */\n back(): void;\n}\n\nconst simplePages = Object.values(SimplePage);\nexport const isSimplePage = (page: Page): page is SimplePage => simplePages.includes(page as SimplePage);\n","import React from \"react\";\nimport { Box, Button, Container, Paper, Table, TableBody, Tooltip, Typography } from \"@mui/material\";\n\nimport { Player } from \"@player\";\nimport { FactionWorkType, LocationName } from \"@enums\";\n\nimport { Money } from \"./React/Money\";\nimport { MoneyRate } from \"./React/MoneyRate\";\nimport { ProgressBar } from \"./React/Progress\";\nimport { Reputation } from \"./React/Reputation\";\nimport { ReputationRate } from \"./React/ReputationRate\";\nimport { StatsRow } from \"./React/StatsRow\";\nimport { useRerender } from \"./React/hooks\";\n\nimport { Companies } from \"../Company/Companies\";\nimport { CONSTANTS } from \"../Constants\";\nimport { Locations } from \"../Locations/Locations\";\nimport { Settings } from \"../Settings/Settings\";\nimport { convertTimeMsToTimeElapsedString } from \"../utils/StringHelperFunctions\";\nimport { filterTruthy } from \"../utils/helpers/ArrayHelpers\";\n\nimport { isCrimeWork } from \"../Work/CrimeWork\";\nimport { isClassWork } from \"../Work/ClassWork\";\nimport { WorkStats } from \"../Work/WorkStats\";\nimport { isCreateProgramWork } from \"../Work/CreateProgramWork\";\nimport { isGraftingWork } from \"../Work/GraftingWork\";\nimport { isFactionWork } from \"../Work/FactionWork\";\nimport { isCompanyWork } from \"../Work/CompanyWork\";\nimport { Router } from \"./GameRoot\";\nimport { Page } from \"./Router\";\nimport { formatExp, formatPercent } from \"./formatNumber\";\n\nconst CYCLES_PER_SEC = 1000 / CONSTANTS.MilliPerCycle;\n\ninterface IWorkInfo {\n buttons: {\n cancel: () => void;\n unfocus?: () => void;\n };\n title: string | React.ReactElement;\n\n description?: string | React.ReactElement;\n gains?: React.ReactElement[];\n progress?: {\n elapsed?: number;\n remaining?: number;\n percentage?: number;\n };\n\n stopText: string;\n stopTooltip?: string | React.ReactElement;\n}\n\nfunction ExpRows(rate: WorkStats): React.ReactElement[] {\n return filterTruthy([\n rate.hackExp > 0 && (\n \n ),\n rate.strExp > 0 && (\n \n ),\n rate.defExp > 0 && (\n \n ),\n rate.dexExp > 0 && (\n \n ),\n rate.agiExp > 0 && (\n \n ),\n rate.chaExp > 0 && (\n \n ),\n ]);\n}\n\n/* Because crime exp is given all at once at the end, we don't care about the cycles per second. */\nfunction CrimeExpRows(rate: WorkStats): React.ReactElement[] {\n return filterTruthy([\n rate.hackExp > 0 && (\n \n ),\n rate.strExp > 0 && (\n \n ),\n rate.defExp > 0 && (\n \n ),\n rate.dexExp > 0 && (\n \n ),\n rate.agiExp > 0 && (\n \n ),\n rate.chaExp > 0 && (\n \n ),\n ]);\n}\n\nexport function WorkInProgressRoot(): React.ReactElement {\n useRerender(CONSTANTS.MilliPerCycle);\n\n let workInfo: IWorkInfo = {\n buttons: {\n cancel: () => undefined,\n },\n title: \"\",\n stopText: \"\",\n };\n\n if (Player.currentWork === null) {\n setTimeout(() => Router.toPage(Page.Terminal));\n return <>;\n }\n\n if (isCrimeWork(Player.currentWork)) {\n const crime = Player.currentWork.getCrime();\n const completion = (Player.currentWork.unitCompleted / crime.time) * 100;\n const gains = Player.currentWork.earnings();\n const successChance = crime.successRate(Player);\n workInfo = {\n buttons: {\n cancel: () => {\n Router.toPage(Page.Location, { location: Locations[LocationName.Slums] });\n Player.finishWork(true);\n },\n unfocus: () => {\n Router.toPage(Page.City);\n Player.stopFocusing();\n },\n },\n title: `You are attempting ${crime.workName}`,\n\n gains: [\n \n \n Success chance: {formatPercent(successChance)}\n Gains (on success)\n \n ,\n \n \n \n \n ,\n ...CrimeExpRows(gains),\n ],\n progress: {\n remaining: crime.time - Player.currentWork.unitCompleted,\n percentage: completion,\n },\n\n stopText: \"Stop committing crime\",\n };\n }\n\n if (isClassWork(Player.currentWork)) {\n const classWork = Player.currentWork;\n\n let stopText = \"\";\n if (classWork.isGym()) {\n stopText = \"Stop training at gym\";\n } else {\n stopText = \"Stop taking course\";\n }\n\n const rates = classWork.calculateRates();\n workInfo = {\n buttons: {\n cancel: () => {\n Player.finishWork(true);\n Router.toPage(Page.City);\n },\n unfocus: () => {\n Router.toPage(Page.City);\n Player.stopFocusing();\n },\n },\n title: (\n <>\n You are currently {classWork.getClass().youAreCurrently}\n \n ),\n\n gains: [\n \n \n ()\n \n ,\n ...ExpRows(rates),\n ],\n progress: {\n elapsed: classWork.cyclesWorked * CONSTANTS.MilliPerCycle,\n },\n\n stopText: stopText,\n };\n }\n\n if (isCreateProgramWork(Player.currentWork)) {\n const create = Player.currentWork;\n const completion = (create.unitCompleted / create.unitNeeded()) * 100;\n\n workInfo = {\n buttons: {\n cancel: () => {\n Player.finishWork(true);\n Router.toPage(Page.Terminal);\n },\n unfocus: () => {\n Router.toPage(Page.Terminal);\n Player.stopFocusing();\n },\n },\n title: (\n <>\n You are currently working on coding {create.programName}\n \n ),\n\n progress: {\n elapsed: create.cyclesWorked * CONSTANTS.MilliPerCycle,\n percentage: completion,\n },\n\n stopText: \"Stop creating program\",\n stopTooltip: \"Your work will be saved and you can return to complete the program later.\",\n };\n }\n\n if (isGraftingWork(Player.currentWork)) {\n const graftWork = Player.currentWork;\n\n workInfo = {\n buttons: {\n cancel: () => {\n Player.finishWork(true);\n Router.toPage(Page.Terminal);\n },\n unfocus: () => {\n Router.toPage(Page.Terminal);\n Player.stopFocusing();\n },\n },\n title: (\n <>\n You are currently working on grafting {graftWork.augmentation}\n \n ),\n\n progress: {\n elapsed: graftWork.cyclesWorked * CONSTANTS.MilliPerCycle,\n percentage: (graftWork.unitCompleted / graftWork.unitNeeded()) * 100,\n },\n\n stopText: \"Stop grafting\",\n stopTooltip: (\n <>\n If you cancel, your work will not be saved, and the money you spent will not be returned\n \n ),\n };\n }\n\n if (isFactionWork(Player.currentWork)) {\n const faction = Player.currentWork.getFaction();\n if (!faction) {\n workInfo = {\n buttons: {\n cancel: () => Router.toPage(Page.Factions),\n },\n title:\n `You have not joined ${Player.currentWork.factionName || \"(Faction not found)\"} at this time,` +\n \" please try again if you think this should have worked\",\n\n stopText: \"Back to Factions\",\n };\n }\n\n const description = {\n [FactionWorkType.hacking]: \"carrying out hacking contracts\",\n [FactionWorkType.field]: \"carrying out field missions\",\n [FactionWorkType.security]: \"performing security detail\",\n };\n\n const exp = Player.currentWork.getExpRates();\n\n workInfo = {\n buttons: {\n cancel: () => {\n Router.toPage(Page.Faction, { faction });\n Player.finishWork(true);\n },\n unfocus: () => {\n Router.toPage(Page.Faction, { faction });\n Player.stopFocusing();\n },\n },\n title: (\n <>\n You are currently {description[Player.currentWork.factionWorkType]} for {faction.name}\n \n ),\n\n description: (\n <>\n Current Faction Reputation: (\n )\n \n ),\n gains: ExpRows(exp),\n progress: {\n elapsed: Player.currentWork.cyclesWorked * CONSTANTS.MilliPerCycle,\n },\n\n stopText: \"Stop Faction work\",\n };\n }\n\n if (isCompanyWork(Player.currentWork)) {\n const comp = Companies[Player.currentWork.companyName];\n if (comp) {\n workInfo = {\n buttons: {\n cancel: () => Router.toPage(Page.Terminal),\n },\n title:\n `You cannot work for ${Player.currentWork.companyName} at this time,` +\n \" please try again if you think this should have worked\",\n\n stopText: \"Back to Terminal\",\n };\n }\n\n const companyRep = comp.playerReputation;\n\n const position = Player.jobs[Player.currentWork.companyName];\n if (!position) return <>;\n const gains = Player.currentWork.getGainRates(position);\n workInfo = {\n buttons: {\n cancel: () => {\n Player.finishWork(true);\n Router.toPage(Page.Job, { location: Locations[comp.name] });\n },\n unfocus: () => {\n Player.stopFocusing();\n Router.toPage(Page.Job, { location: Locations[comp.name] });\n },\n },\n title: (\n <>\n You are currently working as a {position} at {Player.currentWork.companyName}\n \n ),\n\n description: (\n <>\n Current Company Reputation: \n \n ),\n gains: [\n \n \n \n \n ,\n \n \n \n \n ,\n ...ExpRows(gains),\n ],\n progress: {\n elapsed: Player.currentWork.cyclesWorked * CONSTANTS.MilliPerCycle,\n },\n\n stopText: \"Stop working\",\n };\n }\n\n if (workInfo.title === \"\") {\n return <>;\n }\n\n const tooltipInfo =\n typeof workInfo.stopTooltip === \"string\" ? (\n {workInfo.stopTooltip}\n ) : (\n workInfo.stopTooltip || <>\n );\n\n return (\n \n \n {workInfo.title}\n {workInfo.description}\n {workInfo.gains && (\n \n {workInfo.gains}\n
\n )}\n
\n \n {workInfo.progress !== undefined && (\n \n \n {workInfo.progress.elapsed !== undefined && (\n {convertTimeMsToTimeElapsedString(workInfo.progress.elapsed)} elapsed\n )}\n {workInfo.progress.remaining !== undefined && (\n {convertTimeMsToTimeElapsedString(workInfo.progress.remaining)} remaining\n )}\n {workInfo.progress.percentage !== undefined && (\n {workInfo.progress.percentage.toFixed(2)}% done\n )}\n \n {workInfo.progress.percentage !== undefined && (\n \n )}\n \n )}\n\n \n {workInfo.stopTooltip ? (\n \n \n \n ) : (\n \n )}\n {workInfo.buttons.unfocus && (\n \n )}\n \n \n \n );\n}\n","import { ThemeEvents } from \"../Themes/ui/Theme\";\nimport { EventEmitter } from \"../utils/EventEmitter\";\nimport { Settings } from \"../Settings/Settings\";\n\nconst numberSuffixList = [\"\", \"k\", \"m\", \"b\", \"t\", \"q\", \"Q\", \"s\", \"S\", \"o\", \"n\"];\n// exponents associated with each suffix\nconst numberExpList = numberSuffixList.map((_, i) => parseFloat(`1e${i * 3}`));\n\n// Ram suffixes\nconst ramLog1000Suffixes = [\"GB\", \"TB\", \"PB\", \"EB\"];\nconst ramLog1024Suffixes = [\"GiB\", \"TiB\", \"PiB\", \"EiB\"];\n\n// Items that get initialized in the initializer function.\nlet digitFormats = {} as Record,\n percentFormats = {} as Record,\n basicFormatter: Intl.NumberFormat,\n exponentialFormatter: Intl.NumberFormat,\n ramSuffixList: string[],\n ramExpList: number[],\n ramLogFn: (n: number) => number,\n ramLogDivisor: number;\n\n/** Event to be emitted when changing number display settings. */\nexport const FormatsNeedToChange = new EventEmitter();\n\n/** Event to be emitted after the cached formatters are cleared. */\nexport const FormatsHaveChanged = new EventEmitter();\n\n// Initialization function\nFormatsNeedToChange.subscribe(() => {\n // Clear all cached formatters\n digitFormats = {};\n percentFormats = {};\n exponentialFormatter = makeFormatter(3, { notation: Settings.useEngineeringNotation ? \"engineering\" : \"scientific\" });\n basicFormatter = new Intl.NumberFormat([Settings.Locale, \"en\"], { useGrouping: !Settings.hideThousandsSeparator });\n [ramSuffixList, ramLogFn, ramLogDivisor] = Settings.UseIEC60027_2\n ? // log2 of 1024 is 10 as divisor for log base 1024\n [ramLog1024Suffixes, Math.log2, 10]\n : // log10 of 1000 is 3 as divisor for log base 1000\n [ramLog1000Suffixes, Math.log10, 3];\n ramExpList = ramSuffixList.map((_, i) => (Settings.UseIEC60027_2 ? 1024 : 1000) ** i);\n\n // Emit a FormatsHaveChanged event so any static content that uses formats can be regenerated.\n FormatsHaveChanged.emit();\n // Force a redraw of the entire UI\n ThemeEvents.emit();\n});\n\n/** Makes a new formatter */\nfunction makeFormatter(fractionalDigits: number, otherOptions: Intl.NumberFormatOptions = {}): Intl.NumberFormat {\n if (Settings.hideThousandsSeparator) otherOptions.useGrouping = false;\n return new Intl.NumberFormat([Settings.Locale, \"en\"], {\n minimumFractionDigits: Settings.hideTrailingDecimalZeros ? 0 : fractionalDigits,\n maximumFractionDigits: fractionalDigits,\n ...otherOptions,\n });\n}\n/** Returns a cached formatter if it already exists, otherwise makes and returns a new formatter */\nfunction getFormatter(\n fractionalDigits: number,\n formatList = digitFormats,\n options: Intl.NumberFormatOptions = {},\n): Intl.NumberFormat {\n if (formatList[fractionalDigits]) return formatList[fractionalDigits] as Intl.NumberFormat;\n return (formatList[fractionalDigits] = makeFormatter(fractionalDigits, options));\n}\n\n/** Display standard ram formatting. */\nexport function formatRam(n: number, fractionalDigits = 2) {\n // NaN does not get formatted\n if (Number.isNaN(n)) return `NaN${ramSuffixList[0]}`;\n const nAbs = Math.abs(n);\n\n // Special handling for Infinities\n if (nAbs === Infinity) return `${n < 0 ? \"-∞\" : \"\"}∞${ramSuffixList.at(-1)}`;\n\n // Early return if using first suffix.\n if (nAbs < 1000) return getFormatter(fractionalDigits).format(n) + ramSuffixList[0];\n\n // Ram always uses a suffix and never goes to exponential\n const suffixIndex = Math.min(Math.floor(ramLogFn(nAbs) / ramLogDivisor), ramSuffixList.length - 1);\n n /= ramExpList[suffixIndex];\n /* Not really concerned with 1000-rounding or 1024-rounding for ram due to the actual values ram gets displayed at.\n If display of e.g. 1,000.00GB instead of 1.00TB for 999.995GB, or 1,024.00GiB instead of 1.00TiB for 1,023.995GiB\n becomes an actual issue we can add smart rounding, but ram values like that really don't happen ingame so it's\n probably not worth the performance overhead to check and correct these. */\n return getFormatter(fractionalDigits).format(n) + ramSuffixList[suffixIndex];\n}\n\nfunction formatExponential(n: number) {\n return exponentialFormatter.format(n).toLocaleLowerCase();\n}\n\n// Default suffixing starts at 1e9 % which is 1e7.\nexport function formatPercent(n: number, fractionalDigits = 2, multStart = 1e6) {\n // NaN does not get formatted\n if (Number.isNaN(n)) return \"NaN%\";\n const nAbs = Math.abs(n);\n\n // Special handling for Infinities\n if (nAbs * 100 === Infinity) return n < 0 ? \"-∞%\" : \"∞%\";\n\n // Mult form. There are probably some areas in the game this wouldn't make sense, but they hopefully won't ever have huge %.\n if (nAbs >= multStart) return \"x\" + formatNumber(n, fractionalDigits, 0);\n\n return getFormatter(fractionalDigits, percentFormats, { style: \"percent\" }).format(n);\n}\n\nexport function formatNumber(n: number, fractionalDigits = 3, suffixStart = 1000, isInteger = false) {\n // NaN does not get formatted\n if (Number.isNaN(n)) return \"NaN\";\n const nAbs = Math.abs(n);\n\n // Special handling for Infinities\n if (nAbs === Infinity) return n < 0 ? \"-∞\" : \"∞\";\n\n // Early return for non-suffix\n if (nAbs < suffixStart) {\n if (isInteger) return basicFormatter.format(n);\n return getFormatter(fractionalDigits).format(n);\n }\n\n // Exponential form\n if (Settings.disableSuffixes || nAbs >= 1e33) return formatExponential(n);\n\n // Calculate suffix index. 1000 = 10^3\n let suffixIndex = Math.floor(Math.log10(nAbs) / 3);\n\n n /= numberExpList[suffixIndex];\n // Todo: Find a better way to detect if number is rounding to 1000${suffix}, or find a simple way to truncate to x digits instead of rounding\n // Detect if number rounds to 1000.000 (based on number of digits given)\n if (Math.abs(n).toFixed(fractionalDigits).length === fractionalDigits + 5 && numberSuffixList[suffixIndex + 1]) {\n suffixIndex += 1;\n n = n < 0 ? -1 : 1;\n }\n return getFormatter(fractionalDigits).format(n) + numberSuffixList[suffixIndex];\n}\n\n/** Format a number without suffixes. Still show exponential form if >= 1e33. */\nexport const formatNumberNoSuffix = (n: number, fractionalDigits = 0) => {\n return formatNumber(n, fractionalDigits, 1e33);\n};\nexport const formatFavor = formatNumberNoSuffix;\n\n/** Standard noninteger formatting with no options set. Collapses to suffix at 1000 and shows 3 fractional digits. */\nexport const formatBigNumber = (n: number) => formatNumber(n);\nexport const formatExp = formatBigNumber;\nexport const formatHashes = formatBigNumber;\nexport const formatReputation = formatBigNumber;\nexport const formatPopulation = formatBigNumber;\nexport const formatSecurity = formatBigNumber;\nexport const formatStamina = formatBigNumber;\nexport const formatStaneksGiftCharge = formatBigNumber;\n\n/** Format a number with suffixes starting at 1000 and 2 fractional digits */\nexport const formatQuality = (n: number) => formatNumber(n, 2);\n\n/** Format an integer that uses suffixed form at 1000 and 3 fractional digits. */\nexport const formatInt = (n: number) => formatNumber(n, 3, 1000, true);\nexport const formatSleeveMemory = formatInt;\nexport const formatShares = formatInt;\n\n/** Display an integer up to 999,999 before collapsing to suffixed form with 3 fractional digits */\nexport const formatHp = (n: number) => formatNumber(n, 3, 1e6, true);\nexport const formatThreads = formatHp;\n\n/** Display an integer up to 999,999,999 before collapsing to suffixed form with 3 fractional digits */\nexport const formatSkill = (n: number) => formatNumber(n, 3, 1e9, true);\n\n/** Display standard money formatting, including the preceding $. */\nexport const formatMoney = (n: number) => \"$\" + formatNumber(n);\n\n/** Display a decimal number with increased precision (5 fractional digits) */\nexport const formatRespect = (n: number) => formatNumber(n, 5);\nexport const formatWanted = formatRespect;\nexport const formatPreciseMultiplier = formatRespect;\n\n/** Format a number with no suffix and 1 fractional digit. */\nexport const formatMaterialSize = (n: number) => formatNumberNoSuffix(n, 1);\n\n/** Format a number with no suffix and 2 fractional digits. */\nexport const formatMultiplier = (n: number) => formatNumberNoSuffix(n, 2);\nexport const formatStaneksGiftPower = formatMultiplier;\nexport const formatMatPurchaseAmount = formatMultiplier;\n\n/** Format a number with no suffix and 3 fractional digits. */\nexport const formatSleeveShock = (n: number) => formatNumberNoSuffix(n, 3);\nexport const formatSleeveSynchro = formatSleeveShock;\nexport const formatCorpStat = formatSleeveShock;\n\n/** Parsing numbers does not use the locale as this causes complications. */\nexport function parseBigNumber(str: string): number {\n str = str.trim();\n // Remove all commas in case the player is typing a longform number\n str = str.replace(/,/g, \"\");\n // Handle special returns\n if ([\"infinity\", \"Infinity\", \"∞\"].includes(str)) return Infinity;\n if ([\"-infinity\", \"-Infinity\", \"-∞\"].includes(str)) return -Infinity;\n\n const suffixIndex = numberSuffixList.indexOf(str.substring(str.length - 1));\n // If there's no valid suffix at the end, just return parseFloated string\n if (suffixIndex === -1) return parseFloat(str);\n return parseFloat(str.substring(0, str.length - 1) + \"e\" + suffixIndex * 3);\n}\n","// choose random character for generating plaintexts to compress\nexport function comprGenChar(): string {\n const r = Math.random();\n if (r < 0.4) {\n return \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(26 * Math.random())];\n } else if (r < 0.8) {\n return \"abcdefghijklmnopqrstuvwxyz\"[Math.floor(26 * Math.random())];\n } else {\n return \"01234567689\"[Math.floor(10 * Math.random())];\n }\n}\n\n// generate plaintext which is amenable to LZ encoding\nexport function comprLZGenerate(): string {\n const length = 50 + Math.floor(25 * (Math.random() + Math.random()));\n let plain = \"\";\n\n while (plain.length < length) {\n if (Math.random() < 0.8) {\n plain += comprGenChar();\n } else {\n const length = 1 + Math.floor(9 * Math.random());\n const offset = 1 + Math.floor(9 * Math.random());\n if (offset > plain.length) {\n continue;\n }\n\n for (let i = 0; i < length; ++i) {\n plain += plain[plain.length - offset];\n }\n }\n }\n\n return plain.substring(0, length);\n}\n\n// compress plaintest string\nexport function comprLZEncode(plain: string): string {\n // for state[i][j]:\n // if i is 0, we're adding a literal of length j\n // else, we're adding a backreference of offset i and length j\n let cur_state: (string | null)[][] = Array.from(Array(10), () => Array(10).fill(null));\n let new_state: (string | null)[][] = Array.from(Array(10), () => Array(10));\n\n function set(state: (string | null)[][], i: number, j: number, str: string): void {\n const current = state[i][j];\n if (current == null || str.length < current.length) {\n state[i][j] = str;\n } else if (str.length === current.length && Math.random() < 0.5) {\n // if two strings are the same length, pick randomly so that\n // we generate more possible inputs to Compression II\n state[i][j] = str;\n }\n }\n\n // initial state is a literal of length 1\n cur_state[0][1] = \"\";\n\n for (let i = 1; i < plain.length; ++i) {\n for (const row of new_state) {\n row.fill(null);\n }\n const c = plain[i];\n\n // handle literals\n for (let length = 1; length <= 9; ++length) {\n const string = cur_state[0][length];\n if (string == null) {\n continue;\n }\n\n if (length < 9) {\n // extend current literal\n set(new_state, 0, length + 1, string);\n } else {\n // start new literal\n set(new_state, 0, 1, string + \"9\" + plain.substring(i - 9, i) + \"0\");\n }\n\n for (let offset = 1; offset <= Math.min(9, i); ++offset) {\n if (plain[i - offset] === c) {\n // start new backreference\n set(new_state, offset, 1, string + String(length) + plain.substring(i - length, i));\n }\n }\n }\n\n // handle backreferences\n for (let offset = 1; offset <= 9; ++offset) {\n for (let length = 1; length <= 9; ++length) {\n const string = cur_state[offset][length];\n if (string == null) {\n continue;\n }\n\n if (plain[i - offset] === c) {\n if (length < 9) {\n // extend current backreference\n set(new_state, offset, length + 1, string);\n } else {\n // start new backreference\n set(new_state, offset, 1, string + \"9\" + String(offset) + \"0\");\n }\n }\n\n // start new literal\n set(new_state, 0, 1, string + String(length) + String(offset));\n\n // end current backreference and start new backreference\n for (let new_offset = 1; new_offset <= Math.min(9, i); ++new_offset) {\n if (plain[i - new_offset] === c) {\n set(new_state, new_offset, 1, string + String(length) + String(offset) + \"0\");\n }\n }\n }\n }\n\n const tmp_state = new_state;\n new_state = cur_state;\n cur_state = tmp_state;\n }\n\n let result = null;\n\n for (let len = 1; len <= 9; ++len) {\n let string = cur_state[0][len];\n if (string == null) {\n continue;\n }\n\n string += String(len) + plain.substring(plain.length - len, plain.length);\n if (result == null || string.length < result.length) {\n result = string;\n } else if (string.length == result.length && Math.random() < 0.5) {\n result = string;\n }\n }\n\n for (let offset = 1; offset <= 9; ++offset) {\n for (let len = 1; len <= 9; ++len) {\n let string = cur_state[offset][len];\n if (string == null) {\n continue;\n }\n\n string += String(len) + \"\" + String(offset);\n if (result == null || string.length < result.length) {\n result = string;\n } else if (string.length == result.length && Math.random() < 0.5) {\n result = string;\n }\n }\n }\n\n return result ?? \"\";\n}\n\n// decompress LZ-compressed string, or return null if input is invalid\nexport function comprLZDecode(compr: string): string | null {\n let plain = \"\";\n\n for (let i = 0; i < compr.length; ) {\n const literal_length = compr.charCodeAt(i) - 0x30;\n\n if (literal_length < 0 || literal_length > 9 || i + 1 + literal_length > compr.length) {\n return null;\n }\n\n plain += compr.substring(i + 1, i + 1 + literal_length);\n i += 1 + literal_length;\n\n if (i >= compr.length) {\n break;\n }\n const backref_length = compr.charCodeAt(i) - 0x30;\n\n if (backref_length < 0 || backref_length > 9) {\n return null;\n } else if (backref_length === 0) {\n ++i;\n } else {\n if (i + 1 >= compr.length) {\n return null;\n }\n\n const backref_offset = compr.charCodeAt(i + 1) - 0x30;\n if ((backref_length > 0 && (backref_offset < 1 || backref_offset > 9)) || backref_offset > plain.length) {\n return null;\n }\n\n for (let j = 0; j < backref_length; ++j) {\n plain += plain[plain.length - backref_offset];\n }\n\n i += 2;\n }\n }\n\n return plain;\n}\n","import type { Member } from \"../types\";\nimport type { NetscriptContext } from \"../Netscript/APIWrapper\";\n\nimport * as allEnums from \"../Enums\";\nimport { assertString, helpers } from \"../Netscript/NetscriptHelpers\";\nimport { getRandomInt } from \"./helpers/getRandomInt\";\n\nclass EnumHelper & string> {\n name: string; // Name, for including in error text\n defaultArgName: string; // Used as default for for validating ns arg name\n valueArray: Array;\n valueSet: Set; // For quick isMember typecheck\n fuzzMap: Map; // For fuzzy lookup\n constructor(obj: EnumObj, name: string) {\n this.name = name;\n this.defaultArgName = name.charAt(0).toLowerCase() + name.slice(1);\n this.valueArray = Object.values(obj);\n this.valueSet = new Set(this.valueArray);\n this.fuzzMap = new Map(this.valueArray.map((val) => [val.toLowerCase().replace(/[ -]+/g, \"\"), val]));\n }\n /** Provide a boolean indication for whether a */\n isMember(toValidate: unknown): toValidate is EnumMember {\n // Asserting that Set.has actually takes in arbitrary values, which it does.\n return (this.valueSet.has as (value: unknown) => boolean)(toValidate);\n }\n /** Take an unknown input from a player script, either return an enum member or throw */\n nsGetMember(ctx: NetscriptContext, toValidate: unknown, argName = this.defaultArgName): EnumMember {\n if (this.isMember(toValidate)) return toValidate;\n // assertString is just called so if the user didn't even pass in a string, they get a different error message\n assertString(ctx, argName, toValidate);\n // Don't display all possibilities for large enums\n let allowableValues = `Allowable values: ${this.valueArray.map((val) => `\"${val}\"`).join(\", \")}`;\n if (this.valueArray.length > 10) {\n console.warn(\n `Provided value ${toValidate} was not a valid option for enum type ${this.name}.\\n${allowableValues}`,\n );\n allowableValues = `See the developer console for allowable values.`;\n }\n throw helpers.makeRuntimeErrorMsg(\n ctx,\n `Argument ${argName} should be a ${this.name} enum member.\\nProvided value: \"${toValidate}\".\\n${allowableValues}`,\n );\n }\n /** Provides case insensitivty and ignores spaces and dashes, and can always match the input */\n fuzzyGetMember(input: string): EnumMember | undefined;\n fuzzyGetMember(input: string, alwaysMatch: true): EnumMember;\n fuzzyGetMember(input: string, alwaysMatch = false) {\n const matchedValue = this.fuzzMap.get(input.toLowerCase().replace(/[ -]+/g, \"\"));\n if (matchedValue) {\n return matchedValue;\n }\n return alwaysMatch ? this.valueArray[0] : undefined;\n }\n /** Provide a case sensitive match, or undefined if */\n getMember(input: unknown): EnumMember | undefined {\n return this.isMember(input) ? input : undefined;\n }\n // Get a random enum member\n random() {\n const index = getRandomInt(0, this.valueArray.length - 1);\n return this.valueArray[index];\n }\n}\n\n// Creating and populating the enum helpers map\n\ntype EnumName = keyof typeof allEnums;\nconst enumHelpers = new Map();\n// Ensure all enums get helpers assigned to them.\nObject.entries(allEnums).forEach(([enumName, enumObj]) => {\n enumHelpers.set(enumName, new EnumHelper(enumObj, enumName));\n});\n\n// This function is just adding types to enumHelpers.get, and is all that gets exposed for use in other files.\nexport const getEnumHelper: (\n name: Name,\n) => EnumHelper> = enumHelpers.get.bind(enumHelpers);\n\nexport const isMember = (\n name: Name,\n value: unknown,\n): value is Member => getEnumHelper(name).isMember(value);\n","import React from \"react\";\n\nimport { Page } from \"../ui/Router\";\nimport { hash } from \"../hash/hash\";\nimport { CONSTANTS } from \"../Constants\";\n\nenum GameEnv {\n Production,\n Development,\n}\n\nenum Platform {\n Browser,\n Steam,\n}\n\ninterface GameVersion {\n version: string;\n hash: string;\n\n toDisplay: () => string;\n}\n\ninterface BrowserFeatures {\n userAgent: string;\n language: string;\n cookiesEnabled: boolean;\n doNotTrack: string | null;\n indexedDb: boolean;\n}\n\ninterface IErrorMetadata {\n error: Error;\n errorInfo?: React.ErrorInfo;\n page?: Page;\n\n environment: GameEnv;\n platform: Platform;\n version: GameVersion;\n features: BrowserFeatures;\n}\n\nexport interface IErrorData {\n metadata: IErrorMetadata;\n\n title: string;\n body: string;\n\n features: string;\n fileName?: string;\n\n issueUrl: string;\n}\n\nexport const newIssueUrl = `https://github.com/bitburner-official/bitburner-src/issues/new`;\n\nfunction getErrorMetadata(error: Error, errorInfo?: React.ErrorInfo, page?: Page): IErrorMetadata {\n const isElectron = navigator.userAgent.toLowerCase().includes(\" electron/\");\n const env = process.env.NODE_ENV === \"development\" ? GameEnv.Development : GameEnv.Production;\n const version: GameVersion = {\n version: CONSTANTS.VersionString,\n hash: hash(),\n toDisplay: () => `v${CONSTANTS.VersionString} (${hash()})`,\n };\n const features: BrowserFeatures = {\n userAgent: navigator.userAgent,\n\n language: navigator.language,\n cookiesEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack,\n indexedDb: !!window.indexedDB,\n };\n const metadata: IErrorMetadata = {\n platform: isElectron ? Platform.Steam : Platform.Browser,\n environment: env,\n version,\n features,\n error,\n errorInfo,\n page,\n };\n return metadata;\n}\n\nexport function getErrorForDisplay(error: Error, errorInfo?: React.ErrorInfo, page?: Page): IErrorData {\n const metadata = getErrorMetadata(error, errorInfo, page);\n const fileName = (metadata.error as any).fileName;\n const features =\n `lang=${metadata.features.language} cookiesEnabled=${metadata.features.cookiesEnabled.toString()}` +\n ` doNotTrack=${metadata.features.doNotTrack ?? \"null\"} indexedDb=${metadata.features.indexedDb.toString()}`;\n\n const title = `${metadata.error.name}: ${metadata.error.message} (at \"${metadata.page}\")`;\n const body = `\n## ${title}\n\n### How did this happen?\n\nPlease fill this information with details if relevant.\n\n- [ ] Save file\n- [ ] Minimal scripts to reproduce the issue\n- [ ] Steps to reproduce\n\n### Environment\n\n* Error: ${metadata.error.toString() ?? \"n/a\"}\n* Page: ${metadata.page ?? \"n/a\"}\n* Version: ${metadata.version.toDisplay()}\n* Environment: ${GameEnv[metadata.environment]}\n* Platform: ${Platform[metadata.platform]}\n* UserAgent: ${navigator.userAgent}\n* Features: ${features}\n* Source: ${fileName ?? \"n/a\"}\n\n${\n metadata.environment === GameEnv.Development\n ? `\n### Stack Trace\n\\`\\`\\`\n${metadata.errorInfo?.componentStack.toString().trim()}\n\\`\\`\\`\n`\n : \"\"\n}\n### Save\n\\`\\`\\`\nCopy your save here if possible\n\\`\\`\\`\n`.trim();\n\n const issueUrl = `${newIssueUrl}?title=${encodeURIComponent(title)}&body=${encodeURIComponent(body)}`;\n\n const data: IErrorData = {\n metadata,\n fileName,\n features,\n title,\n body,\n issueUrl,\n };\n return data;\n}\n","function uuidv4(): string {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/** Generic Event Emitter class following a subscribe/publish paradigm. */\nexport class EventEmitter {\n subscribers: Record void | undefined> = {};\n\n subscribe(s: (...args: [...T]) => void): () => void {\n let uuid = uuidv4();\n while (this.subscribers[uuid] !== undefined) uuid = uuidv4();\n this.subscribers[uuid] = s;\n\n return () => {\n delete this.subscribers[uuid];\n };\n }\n\n emit(...args: [...T]): void {\n for (const s in this.subscribers) {\n const sub = this.subscribers[s];\n if (sub === undefined) continue;\n\n sub(...args);\n }\n }\n}\n","export function HammingEncode(data: number): string {\n const enc: number[] = [0];\n const data_bits: any[] = data.toString(2).split(\"\").reverse();\n\n data_bits.forEach((e, i, a) => {\n a[i] = parseInt(e);\n });\n\n let k = data_bits.length;\n\n /* NOTE: writing the data like this flips the endianness, this is what the\n * original implementation by Hedrauta did so I'm keeping it like it was. */\n for (let i = 1; k > 0; i++) {\n if ((i & (i - 1)) != 0) {\n enc[i] = data_bits[--k];\n } else {\n enc[i] = 0;\n }\n }\n\n let parity: any = 0;\n\n /* Figure out the subsection parities */\n for (let i = 0; i < enc.length; i++) {\n if (enc[i]) {\n parity ^= i;\n }\n }\n\n parity = parity.toString(2).split(\"\").reverse();\n parity.forEach((e: any, i: any, a: any) => {\n a[i] = parseInt(e);\n });\n\n /* Set the parity bits accordingly */\n for (let i = 0; i < parity.length; i++) {\n enc[2 ** i] = parity[i] ? 1 : 0;\n }\n\n parity = 0;\n /* Figure out the overall parity for the entire block */\n for (let i = 0; i < enc.length; i++) {\n if (enc[i]) {\n parity++;\n }\n }\n\n /* Finally set the overall parity bit */\n enc[0] = parity % 2 == 0 ? 0 : 1;\n\n return enc.join(\"\");\n}\n\nexport function HammingEncodeProperly(data: number): string {\n /* How many bits do we need?\n * n = 2^m\n * k = 2^m - m - 1\n * where k is the number of data bits, m the number\n * of parity bits and n the number of total bits. */\n\n let m = 1;\n\n while (2 ** (2 ** m - m - 1) - 1 < data) {\n m++;\n }\n\n const n: number = 2 ** m;\n const k: number = 2 ** m - m - 1;\n\n const enc: number[] = [0];\n const data_bits: any[] = data.toString(2).split(\"\").reverse();\n\n data_bits.forEach((e, i, a) => {\n a[i] = parseInt(e);\n });\n\n /* Flip endianness as in the original implementation by Hedrauta\n * and write the data back to front\n * XXX why do we do this? */\n for (let i = 1, j = k; i < n; i++) {\n if ((i & (i - 1)) != 0) {\n enc[i] = data_bits[--j] ? data_bits[j] : 0;\n }\n }\n\n let parity: any = 0;\n\n /* Figure out the subsection parities */\n for (let i = 0; i < n; i++) {\n if (enc[i]) {\n parity ^= i;\n }\n }\n\n parity = parity.toString(2).split(\"\").reverse();\n parity.forEach((e: any, i: any, a: any) => {\n a[i] = parseInt(e);\n });\n\n /* Set the parity bits accordingly */\n for (let i = 0; i < m; i++) {\n enc[2 ** i] = parity[i] ? 1 : 0;\n }\n\n parity = 0;\n /* Figure out the overall parity for the entire block */\n for (let i = 0; i < n; i++) {\n if (enc[i]) {\n parity++;\n }\n }\n\n /* Finally set the overall parity bit */\n enc[0] = parity % 2 == 0 ? 0 : 1;\n\n return enc.join(\"\");\n}\n\nexport function HammingDecode(data: string): number {\n let err = 0;\n const bits: number[] = [];\n\n /* TODO why not just work with an array of digits from the start? */\n for (const i in data.split(\"\")) {\n const bit = parseInt(data[i]);\n bits[i] = bit;\n\n if (bit) {\n err ^= +i;\n }\n }\n\n /* If err != 0 then it spells out the index of the bit that was flipped */\n if (err) {\n /* Flip to correct */\n bits[err] = bits[err] ? 0 : 1;\n }\n\n /* Now we have to read the message, bit 0 is unused (it's the overall parity bit\n * which we don't care about). Each bit at an index that is a power of 2 is\n * a parity bit and not part of the actual message. */\n\n let ans = \"\";\n\n for (let i = 1; i < bits.length; i++) {\n /* i is not a power of two so it's not a parity bit */\n if ((i & (i - 1)) != 0) {\n ans += bits[i];\n }\n }\n\n /* TODO to avoid ambiguity about endianness why not let the player return the extracted (and corrected)\n * data bits, rather than guessing at how to convert it to a decimal string? */\n return parseInt(ans, 2);\n}\n","/** Binary heap. */\nabstract class BinHeap {\n /**\n * Heap data array consisting of [weight, payload] pairs, arranged by weight\n * to satisfy heap condition.\n *\n * Encodes the binary tree by storing tree root at index 0 and\n * left child of element i at `i * 2 + 1` and\n * right child of element i at `i * 2 + 2`.\n */\n protected data: [number, T][];\n\n constructor() {\n this.data = [];\n }\n\n /** Get number of elements in the heap. */\n public get size(): number {\n return this.data.length;\n }\n\n /** Add a new element to the heap. */\n public push(value: T, weight: number): void {\n const i = this.data.length;\n this.data[i] = [weight, value];\n this.heapifyUp(i);\n }\n\n /** Get the value of the root-most element of the heap, without changing the heap. */\n public peek(): T | undefined {\n if (this.data.length == 0) return undefined;\n\n return this.data[0][1];\n }\n\n /** Remove the root-most element of the heap and return the removed element's value. */\n public pop(): T | undefined {\n if (this.data.length == 0) return undefined;\n\n const value = this.data[0][1];\n\n this.data[0] = this.data[this.data.length - 1];\n this.data.length = this.data.length - 1;\n\n this.heapifyDown(0);\n\n return value;\n }\n\n /** Change the weight of an element in the heap. */\n public changeWeight(predicate: (value: T) => boolean, weight: number): void {\n // Find first element with matching value, if any\n const i = this.data.findIndex((e) => predicate(e[1]));\n if (i == -1) return;\n\n // Update that element's weight\n this.data[i][0] = weight;\n\n // And re-heapify if needed\n const p = Math.floor((i - 1) / 2);\n\n if (!this.heapOrderABeforeB(this.data[p][0], this.data[i][0]))\n // Needs to shift root-wards?\n this.heapifyUp(i);\n // Try shifting deeper\n else this.heapifyDown(i);\n }\n\n /** Restore heap condition, starting at index i and traveling towards root. */\n protected heapifyUp(i: number): void {\n // Swap the new element up towards root until it reaches root position or\n // settles under under a suitable parent\n while (i > 0) {\n const p = Math.floor((i - 1) / 2);\n\n // Reached heap-ordered state already?\n if (this.heapOrderABeforeB(this.data[p][0], this.data[i][0])) break;\n\n // Swap\n const tmp = this.data[p];\n this.data[p] = this.data[i];\n this.data[i] = tmp;\n\n // And repeat at parent index\n i = p;\n }\n }\n\n /** Restore heap condition, starting at index i and traveling away from root. */\n protected heapifyDown(i: number): void {\n // Swap the shifted element down in the heap until it either reaches the\n // bottom layer or is in correct order relative to it's children\n while (i < this.data.length) {\n const l = i * 2 + 1;\n const r = i * 2 + 2;\n let toSwap = i;\n\n // Find which one of element i and it's children should be closest to root\n if (l < this.data.length && this.heapOrderABeforeB(this.data[l][0], this.data[toSwap][0])) toSwap = l;\n if (r < this.data.length && this.heapOrderABeforeB(this.data[r][0], this.data[toSwap][0])) toSwap = r;\n\n // Already in order?\n if (i == toSwap) break;\n\n // Not in order. Swap child that should be closest to root up to 'i' and repeat\n const tmp = this.data[toSwap];\n this.data[toSwap] = this.data[i];\n this.data[i] = tmp;\n\n i = toSwap;\n }\n }\n\n /**\n * Should element with weight `weightA` be closer to root than element with\n * weight `weightB`?\n */\n protected abstract heapOrderABeforeB(weightA: number, weightB: number): boolean;\n}\n\n/** Binary max-heap. */\nexport class MaxHeap extends BinHeap {\n heapOrderABeforeB(weightA: number, weightB: number): boolean {\n return weightA > weightB;\n }\n}\n\n/** Binary min-heap. */\nexport class MinHeap extends BinHeap {\n heapOrderABeforeB(weightA: number, weightB: number): boolean {\n return weightA < weightB;\n }\n}\n","import type { IPAddress } from \"../Types/strings\";\nimport { getRandomByte } from \"./helpers/getRandomByte\";\n\n/**\n * Generate a random IP address\n * Does not check to see if the IP already exists in the game\n */\nexport const createRandomIp = (): IPAddress => {\n return `${getRandomByte(99)}.${getRandomByte(9)}.${getRandomByte(9)}.${getRandomByte(9)}` as IPAddress;\n};\n","/* Generic Reviver, toJSON, and fromJSON functions used for saving and loading objects */\nimport type { Unknownify } from \"../types\";\n\nimport { ObjectValidator, validateObject } from \"./Validator\";\nimport { JSONMap, JSONSet } from \"../Types/Jsonable\";\n\ntype JsonableClass = (new () => { toJSON: () => IReviverValue }) & {\n fromJSON: (value: IReviverValue) => any;\n validationData?: ObjectValidator;\n};\n\nexport interface IReviverValue {\n ctor: string;\n data: any;\n}\nfunction isReviverValue(value: unknown): value is IReviverValue {\n return (\n typeof value === \"object\" && value !== null && \"ctor\" in value && typeof value.ctor === \"string\" && \"data\" in value\n );\n}\n\n/**\n * A generic \"smart reviver\" function.\n * Looks for object values with a `ctor` property and a `data` property.\n * If it finds them, and finds a matching constructor, it hands\n * off to that `fromJSON` function, passing in the value. */\nexport function Reviver(_key: string, value: unknown): any {\n if (!isReviverValue(value)) return value;\n const ctor = constructorsForReviver[value.ctor];\n if (!ctor) {\n // Known missing constructors with special handling.\n switch (value.ctor) {\n case \"AllServersMap\":\n console.warn(\"Converting AllServersMap for v0.43.1\");\n return value.data;\n case \"Industry\":\n console.warn(\"Converting a corp from pre-2.3\");\n return value.data; // Will immediately be overwritten by v2.3 save migration code\n case \"Employee\":\n console.warn(\"Converting a corp from pre-2.2\");\n return value.data; // Will immediately be overwritten by v2.3 save migration code\n }\n // Missing constructor with no special handling. Throw error.\n throw new Error(`Could not locate constructor named ${value.ctor}. If the save data is valid, this is a bug.`);\n }\n\n const obj = ctor.fromJSON(value);\n if (ctor.validationData !== undefined) {\n validateObject(obj, ctor.validationData);\n }\n return obj;\n}\n\nexport const constructorsForReviver: Partial> = { JSONSet, JSONMap };\n\n/**\n * A generic \"toJSON\" function that creates the data expected by Reviver.\n *\n * @param ctorName String name of the constructor, part of the reviver JSON.\n * @param obj The object to convert to stringified data in the reviver JSON.\n * @param keys If provided, only these keys will be saved to the reviver JSON data. */\nexport function Generic_toJSON>(\n ctorName: string,\n obj: T,\n keys?: readonly (keyof T)[],\n): IReviverValue {\n const data = {} as T;\n // keys provided: only save data for the provided keys\n if (keys) {\n for (const key of keys) data[key] = obj[key];\n return { ctor: ctorName, data: data };\n }\n // no keys provided: save all own keys of the object\n for (const [key, val] of Object.entries(obj) as [keyof T, T[keyof T]][]) data[key] = val;\n return { ctor: ctorName, data: data };\n}\n\n/**\n * A generic \"fromJSON\" function for use with Reviver: Just calls the\n * constructor function with no arguments, then applies all of the\n * key/value pairs from the raw data to the instance. Only useful for\n * constructors that can be reasonably called without arguments!\n *\n * @param ctor The constructor to call\n * @param data The saved data to restore to the constructed object\n * @param keys If provided, only these keys will be restored from data.\n * @returns The object */\nexport function Generic_fromJSON>(\n ctor: new () => T,\n // data can actually be anything. We're just pretending it has the right keys for T. Save data is not type validated.\n data: Record,\n keys?: readonly (keyof T)[],\n): T {\n const obj = new ctor();\n // If keys were provided, just load the provided keys (if they are in the data)\n if (keys) {\n for (const key of keys) {\n const val = data[key];\n if (val !== undefined) obj[key] = val;\n }\n return obj;\n }\n // No keys provided: load every key in data\n for (const [key, val] of Object.entries(data) as [keyof T, T[keyof T]][]) obj[key] = val;\n return obj;\n}\n\n// This function is empty because Unknownify is a typesafe assertion on any object with no runtime checks needed.\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function assertLoadingType(val: object): asserts val is Unknownify {}\n","import type { TypedKeys } from \"../types\";\n\nimport { Generic_fromJSON, Generic_toJSON, constructorsForReviver, IReviverValue } from \"./JSONReviver\";\n\nexport type MoneySource = TypedKeys;\n\nexport class MoneySourceTracker {\n bladeburner = 0;\n casino = 0;\n class = 0;\n codingcontract = 0;\n corporation = 0;\n crime = 0;\n gang = 0;\n hacking = 0;\n hacknet = 0;\n hacknet_expenses = 0;\n hospitalization = 0;\n infiltration = 0;\n sleeves = 0;\n stock = 0;\n total = 0;\n work = 0;\n servers = 0;\n other = 0;\n augmentations = 0;\n\n // Record money earned\n record(amt: number, source: MoneySource): void {\n this[source] += amt;\n this.total += amt;\n }\n\n // Reset the money tracker by setting all stats to 0\n reset(): void {\n for (const prop in this) {\n if (typeof this[prop] === \"number\") {\n (this[prop] as number) = 0;\n }\n }\n }\n\n // Serialize the current object to a JSON save state.\n toJSON(): IReviverValue {\n return Generic_toJSON(\"MoneySourceTracker\", this);\n }\n\n // Initializes a MoneySourceTracker object from a JSON save state.\n static fromJSON(value: IReviverValue): MoneySourceTracker {\n return Generic_fromJSON(MoneySourceTracker, value.data);\n }\n}\n\nconstructorsForReviver.MoneySourceTracker = MoneySourceTracker;\n","import { Settings } from \"../Settings/Settings\";\nimport { isString } from \"./helpers/string\";\n\n/*\nConverts a date representing time in milliseconds to a string with the format H hours M minutes and S seconds\ne.g. 10000 -> \"10 seconds\"\n 120000 -> \"2 minutes and 0 seconds\"\n*/\nfunction convertTimeMsToTimeElapsedString(time: number, showMilli = false): string {\n const negFlag = time < 0;\n time = Math.abs(Math.floor(time));\n const millisecondsPerSecond = 1000;\n const secondPerMinute = 60;\n const minutesPerHours = 60;\n const secondPerHours: number = secondPerMinute * minutesPerHours;\n const hoursPerDays = 24;\n const secondPerDay: number = secondPerHours * hoursPerDays;\n\n // Convert ms to seconds, since we only have second-level precision\n const totalSeconds: number = Math.floor(time / millisecondsPerSecond);\n\n const days: number = Math.floor(totalSeconds / secondPerDay);\n const secTruncDays: number = totalSeconds % secondPerDay;\n\n const hours: number = Math.floor(secTruncDays / secondPerHours);\n const secTruncHours: number = secTruncDays % secondPerHours;\n\n const minutes: number = Math.floor(secTruncHours / secondPerMinute);\n const secTruncMinutes: number = secTruncHours % secondPerMinute;\n\n const milliTruncSec: string = (() => {\n let str = `${time % millisecondsPerSecond}`;\n while (str.length < 3) str = \"0\" + str;\n return str;\n })();\n\n const seconds: string = showMilli ? `${secTruncMinutes}.${milliTruncSec}` : `${secTruncMinutes}`;\n\n let res = \"\";\n if (days > 0) {\n res += `${days} day${days === 1 ? \"\" : \"s\"} `;\n }\n if (hours > 0 || (Settings.ShowMiddleNullTimeUnit && res != \"\")) {\n res += `${hours} hour${hours === 1 ? \"\" : \"s\"} `;\n }\n if (minutes > 0 || (Settings.ShowMiddleNullTimeUnit && res != \"\")) {\n res += `${minutes} minute${minutes === 1 ? \"\" : \"s\"} `;\n }\n res += `${seconds} second${!showMilli && secTruncMinutes === 1 ? \"\" : \"s\"}`;\n\n return negFlag ? `-(${res})` : res;\n}\n\n// Finds the longest common starting substring in a set of strings\nfunction longestCommonStart(strings: string[]): string {\n if (!containsAllStrings(strings)) {\n return \"\";\n }\n if (strings.length === 0) {\n return \"\";\n }\n\n const A: string[] = strings.concat().sort();\n const a1: string = A[0];\n const a2: string = A[A.length - 1];\n const L: number = a1.length;\n let i = 0;\n const areEqualCaseInsensitive = (a: string, b: string) => a.toUpperCase() === b.toUpperCase();\n while (i < L && areEqualCaseInsensitive(a1.charAt(i), a2.charAt(i))) {\n i++;\n }\n\n return a1.substring(0, i);\n}\n\n// Returns whether an array contains entirely of string objects\nfunction containsAllStrings(arr: string[]): boolean {\n return arr.every(isString);\n}\n\n// Generates a random alphanumeric string with N characters\nfunction generateRandomString(n: number): string {\n let str = \"\";\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (let i = 0; i < n; i++) {\n str += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return str;\n}\n\n/**\n * Hashes the input string. This is a fast hash, so NOT good for cryptography.\n * This has been ripped off here: https://stackoverflow.com/a/52171480\n * @param str The string that is to be hashed\n * @param seed A seed to randomize the result\n * @returns An hexadecimal string representation of the hashed input\n */\nfunction cyrb53(str: string, seed = 0): string {\n let h1 = 0xdeadbeef ^ seed;\n let h2 = 0x41c6ce57 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(16);\n}\n\nfunction capitalizeFirstLetter(s: string): string {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\nfunction capitalizeEachWord(s: string): string {\n return s\n .split(\" \")\n .map((word) => capitalizeFirstLetter(word))\n .join(\" \");\n}\n\nexport {\n convertTimeMsToTimeElapsedString,\n longestCommonStart,\n containsAllStrings,\n generateRandomString,\n cyrb53,\n capitalizeFirstLetter,\n capitalizeEachWord,\n};\n","import { Button, Typography } from \"@mui/material\";\nimport React, { useState } from \"react\";\nimport { Modal } from \"../ui/React/Modal\";\n\nlet v2ModalOpen = false;\n\nexport const openV2Modal = (): void => {\n v2ModalOpen = true;\n};\n\nexport const V2Modal = (): React.ReactElement => {\n const [open, setOpen] = useState(v2ModalOpen);\n return (\n undefined}>\n Welcome to bitburner v2.0.0!{\" \"}\n While this version does not change the game a lot, it does have quite a few API breaks.{\" \"}\n \n A file was added to your home computer called V2_0_0_API_BREAK.txt and it is highly recommended you take a look\n at this file. It explains where most of the API break have occurred.\n {\" \"}\n \n You should also take a look at{\" \"}\n \n {\" \"}\n the migration guide\n {\" \"}\n as well as{\" \"}\n \n the changelog\n \n \n \n \n );\n};\n","export type ObjectValidator = {\n [key in keyof T]?: ParameterValidator;\n};\n\ninterface ParameterValidatorObject {\n default?: unknown;\n min?: number;\n max?: number;\n func?: (obj: Type, validator: ObjectValidator, key: Key) => void;\n}\ntype ParameterValidatorFunction = (obj: Type, key: Key) => void;\ntype ParameterValidator =\n | ParameterValidatorObject\n | ParameterValidatorFunction;\n\nexport function validateObject, Key extends keyof Type>(\n obj: Type,\n validator: ObjectValidator,\n): void {\n for (const key of Object.keys(validator) as Key[]) {\n const paramValidator = validator[key];\n if (paramValidator !== undefined) {\n if (typeof paramValidator === \"function\") {\n paramValidator(obj, key);\n } else if (paramValidator.func !== undefined) {\n paramValidator.func(obj, validator, key);\n } else {\n if (typeof obj[key] !== typeof paramValidator.default) {\n obj[key] = paramValidator.default as Type[Key];\n }\n if (typeof obj[key] === \"number\" && paramValidator.min !== undefined) {\n if (obj[key] < paramValidator.min) obj[key] = paramValidator.min as Type[Key];\n }\n if (typeof obj[key] === \"number\" && paramValidator.max !== undefined) {\n if (obj[key] > paramValidator.max) obj[key] = paramValidator.max as Type[Key];\n }\n }\n }\n }\n}\n\nexport function minMax(\n def: number,\n min: number,\n max: number,\n): (obj: Type, key: Key & keyof Type) => void {\n return (obj, key) => {\n if (typeof obj[key] !== \"number\") {\n obj[key] = def as unknown as Type[Key];\n return;\n }\n if ((obj[key] as unknown as number) < min) {\n obj[key] = min as unknown as Type[Key];\n }\n if ((obj[key] as unknown as number) > max) {\n obj[key] = max as unknown as Type[Key];\n }\n };\n}\n\nexport function oneOf(\n def: Value,\n options: Value[],\n): (obj: Type, key: Key & keyof Type) => void {\n return (obj, key) => {\n if (typeof obj[key] !== typeof def) {\n obj[key] = def as unknown as Type[Key];\n return;\n }\n if (!options.includes(obj[key] as unknown as Value)) {\n obj[key] = def as unknown as Type[Key];\n }\n };\n}\n\nexport function subsetOf(\n options: Value[],\n): (obj: Type, key: Key & keyof Type) => void {\n return (obj, key) => {\n if (typeof obj[key] !== \"object\" || !Array.isArray(obj[key])) {\n obj[key] = [] as unknown as Type[Key];\n return;\n }\n const validValues: Value[] = [];\n for (const value of obj[key] as unknown as Value[]) {\n if (options.includes(value)) validValues.push(value);\n }\n obj[key] = validValues as unknown as Type[Key];\n };\n}\n","/**\n * This is a component that implements a mathematical formula used commonly throughout the\n * game. This formula is (typically) used to calculate the effect that various statistics\n * have on a game mechanic. It looks something like:\n *\n * (stat ^ exponential factor) + (stat / linear factor)\n *\n * where the exponential factor is a number between 0 and 1 and the linear factor\n * is typically a relatively larger number.\n *\n * This formula ensures that the effects of the statistic that is being processed\n * has diminishing returns, but never loses its effectiveness as you continue\n * to raise it.\n */\nexport function calculateEffectWithFactors(n: number, expFac: number, linearFac: number): number {\n if (expFac <= 0 || expFac >= 1) {\n console.warn(`Exponential factor is ${expFac}. This is not an intended value for it`);\n }\n if (linearFac < 1) {\n console.warn(`Linear factor is ${linearFac}. This is not an intended value for it`);\n }\n\n return Math.pow(n, expFac) + n / linearFac;\n}\n","import { Truthy } from \"lodash\";\n\n/**\n * Returns the input array as a comma separated string.\n *\n * Does several things that Array.toString() doesn't do\n * - Adds brackets around the array\n * - Adds quotation marks around strings\n */\nexport function arrayToString(a: unknown[]): string {\n const vals: unknown[] = [];\n for (let i = 0; i < a.length; ++i) {\n let elem: unknown = a[i];\n if (Array.isArray(elem)) {\n elem = arrayToString(elem);\n } else if (typeof elem === \"string\") {\n elem = `\"${elem}\"`;\n }\n vals.push(elem);\n }\n\n return `[${vals.join(\", \")}]`;\n}\n\nexport function filterTruthy(input: T[]): Truthy[] {\n return input.filter(Boolean) as Truthy[];\n}\n","const n00dlePower =\n \"[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[]\" +\n \")[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(\" +\n \"!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]\" +\n \"+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+\" +\n \"[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]\" +\n \"+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+\" +\n \"[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[\" +\n \"])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!\" +\n \"+[]]+([][[]]+[])[+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+\" +\n \"[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[\" +\n \"])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!\" +\n \"![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[\" +\n \"!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+\" +\n \"[]+[!+[]+!+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[\" +\n \"+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[\" +\n \"!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]\" +\n \"+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+\" +\n \"[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]\" +\n \"+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[]\" +\n \")[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[\" +\n \"+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]\" +\n \"+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+\" +\n \"([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!\" +\n \"+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]]\" +\n \")[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])\" +\n \"[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[\" +\n \"]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!\" +\n \"![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+\" +\n \"[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[\" +\n \"]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[\" +\n \"]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[\" +\n \"]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[\" +\n \"]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]\" +\n \"])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+\" +\n \"!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]\" +\n \"+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[\" +\n \"!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]\" +\n \"+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[\" +\n \"])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+\" +\n \"(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!\" +\n \"+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+\" +\n \"[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+\" +\n \"!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]\" +\n \"]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(!\" +\n \"[]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]\" +\n \"]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[]\" +\n \")[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[\" +\n \"]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!\" +\n \"+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!!\" +\n \"[]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[\" +\n \"+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(\" +\n \"![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]\" +\n \"+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[]\" +\n \")[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[+!+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+\" +\n \"[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][(\" +\n \"[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+\" +\n \"[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[\" +\n \"]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!!\" +\n \"[]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(\" +\n \"![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]\" +\n \"]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!\" +\n \"![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(\" +\n \"![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[\" +\n \"])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+\" +\n \"[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[\" +\n \"])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!\" +\n \"![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[]\" +\n \")[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[\" +\n \"]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[\" +\n \"][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[\" +\n \"]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[]\" +\n \")[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]\" +\n \"+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!\" +\n \"+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]\" +\n \"]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+\" +\n \"[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]\" +\n \"]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+(\" +\n \"[][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[\" +\n \"+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[\" +\n \"+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+\" +\n \"[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[\" +\n \"]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[\" +\n \"]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+\" +\n \"(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[]\" +\n \")[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]\" +\n \"])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]]\" +\n \"(!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+(!\" +\n \"[]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[(![]+[])[!+[]+!+[]+!+[]]+(![]\" +\n \"+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]\" +\n \"]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]]\" +\n \"((+((+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+[+[\" +\n \"]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+!+[]]])+[])[!+[]+!+[]]+[+!+[]])+(![]+[])[+!+[]\" +\n \"]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]])()())[!+[]+!+[]+!+[]+[+[]]]+(+[]+[][(\" +\n \"[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+\" +\n \"[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[\" +\n \"]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!!\" +\n \"[]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(\" +\n \"![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]\" +\n \"]])[+!+[]+[+[]]]+(+[]+[][(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(!![]+[])[\" +\n \"+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]\" +\n \"+[])[!+[]+!+[]+!+[]]]()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!\" +\n \"![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![\" +\n \"]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]\" +\n \"+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[\" +\n \"])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]\" +\n \"+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+\" +\n \"[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]\" +\n \"+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+!+[]]+([\" +\n \"![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[!+[]+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[\" +\n \"])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(+[![]]+[+(+!+[]+(\" +\n \"!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(!![]+[][(![]\" +\n \"+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][\" +\n \"[]]+[])[+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[\" +\n \"]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+\" +\n \"[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+\" +\n \"!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]\" +\n \"+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(+(!+[]\" +\n \"+!+[]+[+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])\" +\n \"[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+\" +\n \"[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(\" +\n \"![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+\" +\n \"[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([\" +\n \"][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[\" +\n \"]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]\" +\n \"]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!\" +\n \"+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]\" +\n \"]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]\" +\n \"+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]\" +\n \"+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]\" +\n \"]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(!\" +\n \"[]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!\" +\n \"![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]]\" +\n \")+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[\" +\n \"+!+[]+[+!+[]]]+(!![]+[])[+[]]+(+(+!+[]+[+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(\" +\n \"![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(\" +\n \"[]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])\" +\n \"[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![\" +\n \"]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[\" +\n \"+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![\" +\n \"]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[]\" +\n \")[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[\" +\n \"])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[\" +\n \"!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+\" +\n \"[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[\" +\n \"+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!\" +\n \"+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[]\" +\n \")[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![\" +\n \"]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!\" +\n \"[]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!!\" +\n \"[]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]\" +\n \"]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]\" +\n \"]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![\" +\n \"]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[\" +\n \"]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(\" +\n \"![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(\" +\n \"!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[\" +\n \"]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]\" +\n \"+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+\" +\n \"[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])\" +\n \"[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]\" +\n \"+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+\" +\n \"[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]\" +\n \"+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(\" +\n \"![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!\" +\n \"+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])\" +\n \"[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[\" +\n \"])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]\" +\n \"+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+\" +\n \"[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()\" +\n \"+[])[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[\" +\n \"+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[\" +\n \"!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]\" +\n \"+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+\" +\n \"[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]\" +\n \"+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[]\" +\n \")[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[\" +\n \"+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]\" +\n \"+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+\" +\n \"([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!\" +\n \"+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]]\" +\n \")[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])\" +\n \"[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[\" +\n \"]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])\" +\n \"[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!\" +\n \"![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+\" +\n \"[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[\" +\n \"]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+\" +\n \"[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[\" +\n \"]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[\" +\n \"]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[\" +\n \"]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!\" +\n \"+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]\" +\n \"])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(\" +\n \"![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(\" +\n \"[][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[\" +\n \"+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+\" +\n \"!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[]\" +\n \"[(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]\" +\n \"+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]])()\";\n\nexport function N00dles(): void {\n // TODO: Too powerful, needs a nerf.\n eval(n00dlePower);\n}\n","/**\n * Adds a random offset to a number within a certain percentage\n * @example\n * // Returns between 95-105\n * addOffset(100, 5);\n * @example\n * // Returns between 63-77\n * addOffSet(70, 10);\n * @param midpoint The number to be the midpoint of the offset range\n * @param percentage The percentage (in a range of 0-100) to offset\n */\nexport function addOffset(midpoint: number, percentage: number): number {\n const maxPercent = 100;\n if (percentage < 0 || percentage > maxPercent) {\n return midpoint;\n }\n\n const offset: number = midpoint * (percentage / maxPercent);\n\n // Double the range to account for both sides of the midpoint.\n return midpoint + (Math.random() * (offset * 2) - offset);\n}\n","/** Represents the possible configuration values that can be provided when creating the progress bar text. */\ninterface IProgressBarConfiguration {\n /** Current progress, taken as a decimal (i.e. '0.6' to represent '60%') */\n progress?: number;\n\n /** Total number of ticks in progress bar. Preferably a factor of 100. */\n totalTicks?: number;\n}\n\n/** Represents concrete configuration values when creating the progress bar text. */\ninterface IProgressBarConfigurationMaterialized extends IProgressBarConfiguration {\n progress: number;\n totalTicks: number;\n}\n\n/**\n * Creates a graphical \"progress bar\"\n * e.g.: [||||---------------]\n * @param params The configuration parameters for the progress bar\n */\nexport function createProgressBarText(params: IProgressBarConfiguration): string {\n // Default values\n const defaultParams: IProgressBarConfigurationMaterialized = {\n progress: 0,\n totalTicks: 20,\n };\n\n const derived: IProgressBarConfigurationMaterialized = Object.assign({}, defaultParams, params);\n // Ensure it is 0..1\n derived.progress = Math.max(Math.min(derived.progress, 1), 0);\n\n // This way there is always at least one bar filled in...\n const bars: number = Math.max(Math.floor(derived.progress / (1 / derived.totalTicks)), 1);\n const dashes: number = Math.max(derived.totalTicks - bars, 0);\n\n // String.prototype.repeat isn't completely supported, but good enough for our purposes\n return `[${\"|\".repeat(bars)}${\"-\".repeat(dashes)}]`;\n}\n","// Function that generates a random gibberish string of length n\nconst chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\nexport function createRandomString(n: number): string {\n let str = \"\";\n\n for (let i = 0; i < n; ++i) {\n str += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return str;\n}\n","export function findEnumMember>(obj: T, value: string): T[keyof T] | undefined {\n const lowerValue = value.toLowerCase().replace(/ /g, \"\");\n for (const member of Object.values(obj) as T[keyof T][]) {\n if (lowerValue.includes(member.toLowerCase().replace(/ /g, \"\"))) return member;\n }\n}\n","import { dialogBoxCreate } from \"../../ui/React/DialogBox\";\n\ninterface IError {\n fileName?: string;\n lineNumber?: number;\n}\n\nexport const isIError = (v: unknown): v is IError => {\n if (typeof v !== \"object\" || v == null) return false;\n return Object.hasOwn(v, \"fileName\") && Object.hasOwn(v, \"lineNumber\");\n};\n\nexport function exceptionAlert(e: unknown): void {\n console.error(e);\n let msg = \"\";\n let file = \"UNKNOWN FILE NAME\";\n let line = \"UNKNOWN LINE NUMBER\";\n if (isIError(e)) {\n file = e.fileName ?? file;\n line = e.lineNumber?.toString() ?? line;\n } else {\n msg = String(e);\n }\n dialogBoxCreate(\n \"Caught an exception: \" +\n msg +\n \"

\" +\n \"Filename: \" +\n file +\n \"

\" +\n \"Line Number: \" +\n line +\n \"

\" +\n \"This is a bug, please report to game developer with this \" +\n \"message as well as details about how to reproduce the bug.

\" +\n \"If you want to be safe, I suggest refreshing the game WITHOUT saving so that your \" +\n \"save doesn't get corrupted\",\n true,\n );\n}\n","import { format } from \"date-fns\";\n\nexport function formatTime(fmt: string): string {\n try {\n return format(new Date(), fmt);\n } catch (e: unknown) {\n return \"format error\";\n }\n}\n","/** Function for getting a list of keys to use for saving an object\n * @param ctor the class constructor\n *\n * @param removedKeys Keys that exist on a default constructed member, but should not be saved.\n * These keys will just revert to default values on load.\n *\n * @param addedKeys Optional keys that do not exist on a default constructed member, but should be saved when present.\n */\nexport function getKeyList(\n ctor: new () => T,\n modifications?: { removedKeys?: readonly (keyof T)[]; addedKeys?: readonly (keyof T)[] },\n): readonly (keyof T)[] {\n const newObj = new ctor();\n const keySet = new Set(Object.getOwnPropertyNames(newObj)) as Set;\n modifications?.removedKeys?.forEach((key) => keySet.delete(key));\n modifications?.addedKeys?.forEach((key) => keySet.add(key));\n return [...keySet];\n}\n","import { getRandomInt } from \"./getRandomInt\";\n\n/**\n * Gets a random value in the range of a byte (0 - 255), or up to the maximum.\n * @param max The maximum value (up to 255).\n */\nexport function getRandomByte(max: number): number {\n // Technically 2^8 is 256, but the values are 0-255, not 1-256.\n const byteMaximum = 255;\n const upper: number = Math.max(Math.min(max, byteMaximum), 0);\n\n return getRandomInt(0, upper);\n}\n","/**\n * Gets a random integer bounded by the values passed in.\n * @param min The minimum value in the range.\n * @param max The maximum value in the range.\n */\nexport function getRandomInt(min: number, max: number): number {\n const lower: number = Math.min(min, max);\n const upper: number = Math.max(min, max);\n\n return Math.floor(Math.random() * (upper - lower + 1)) + lower;\n}\n","/** Returns a MM/DD HH:MM timestamp for the current time */\nexport function getTimestamp(): string {\n const d: Date = new Date();\n // A negative slice value takes from the end of the string rather than the beginning.\n const stringWidth = -2;\n const formattedHours: string = `0${d.getHours()}`.slice(stringWidth);\n const formattedMinutes: string = `0${d.getMinutes()}`.slice(stringWidth);\n const formattedSeconds: string = `0${d.getSeconds()}`.slice(stringWidth);\n\n return `${d.getMonth() + 1}/${d.getDate()} ${formattedHours}:${formattedMinutes}:${formattedSeconds}`;\n}\n","/**\n * Determines if the number is a power of 2\n * @param n The number to check.\n */\nexport function isPowerOfTwo(n: number): boolean {\n if (isNaN(n)) {\n return false;\n }\n\n if (n === 0) {\n return false;\n }\n\n // Disabling the bitwise rule because it's honestly the most efficient way to check for this.\n return (n & (n - 1)) === 0;\n}\n","/**\n * Checks that a variable is a valid number. A valid number\n * must be a \"number\" type and cannot be NaN\n */\nexport function isValidNumber(n: number): boolean {\n return typeof n === \"number\" && !isNaN(n);\n}\n","/** Keyboard key codes as returned by event.key */\nexport enum KEY {\n //SHIFT: 16, // Check by `&& event.shiftKey`\n //CTRL: 17, // Check by `&& event.ctrlKey`\n //ALT: 18, // Check by `&& event.altKey`\n ENTER = \"Enter\",\n ESC = \"Escape\",\n TAB = \"Tab\",\n SPACE = \" \",\n BACKSPACE = \"Backspace\",\n UP_ARROW = \"ArrowUp\",\n DOWN_ARROW = \"ArrowDown\",\n LEFT_ARROW = \"ArrowLeft\",\n RIGHT_ARROW = \"ArrowRight\",\n\n QUOTE = \"'\",\n DOUBLE_QUOTE = '\"',\n OPEN_BRACKET = \"[\",\n CLOSE_BRACKET = \"]\",\n LESS_THAN = \"<\",\n GREATER_THAN = \">\",\n OPEN_PARENTHESIS = \"(\",\n CLOSE_PARENTHESIS = \")\",\n OPEN_BRACE = \"{\",\n CLOSE_BRACE = \"}\",\n EQUAL = \"=\",\n\n PIPE = \"|\",\n DOT = \".\",\n FORWARD_SLASH = \"/\",\n HYPHEN = \"-\",\n HASH = \"#\",\n\n k0 = \"0\",\n k1 = \"1\",\n k2 = \"2\",\n k3 = \"3\",\n k4 = \"4\",\n k5 = \"5\",\n k6 = \"6\",\n k7 = \"7\",\n k8 = \"8\",\n k9 = \"9\",\n\n A = \"a\",\n B = \"b\",\n C = \"c\",\n D = \"d\",\n E = \"e\",\n F = \"f\",\n G = \"g\",\n H = \"h\",\n I = \"i\",\n J = \"j\",\n K = \"k\",\n L = \"l\",\n M = \"m\",\n N = \"n\",\n O = \"o\",\n P = \"p\",\n Q = \"q\",\n R = \"r\",\n S = \"s\",\n T = \"t\",\n U = \"u\",\n V = \"v\",\n W = \"w\",\n X = \"x\",\n Y = \"y\",\n Z = \"z\",\n}\n\n/** Keyboard key codes as returned by event.code */\nexport enum KEYCODE {\n //SHIFT: 16, // Check by `&& event.shiftKey`\n //CTRL: 17, // Check by `&& event.ctrlKey`\n //ALT: 18, // Check by `&& event.altKey`\n ENTER = \"Enter\",\n ESC = \"Escape\",\n TAB = \"Tab\",\n SPACE = \"Space\",\n BACKSPACE = \"Backspace\",\n UP_ARROW = \"ArrowUp\",\n DOWN_ARROW = \"ArrowDown\",\n LEFT_ARROW = \"ArrowLeft\",\n RIGHT_ARROW = \"ArrowRight\",\n\n BACKWARD_SLASH = \"Backslash\",\n BACKQUOTE = \"Backquote\",\n COMMA = \"Comma\",\n DOT = \"Period\",\n EQUAL = \"Equal\",\n FORWARD_SLASH = \"Slash\",\n HYPHEN = \"Minus\",\n SEMICOLON = \"Semicolon\",\n QUOTE = \"Quote\",\n\n k0 = \"Digit0\",\n k1 = \"Digit1\",\n k2 = \"Digit2\",\n k3 = \"Digit3\",\n k4 = \"Digit4\",\n k5 = \"Digit5\",\n k6 = \"Digit6\",\n k7 = \"Digit7\",\n k8 = \"Digit8\",\n k9 = \"Digit9\",\n\n A = \"KeyA\",\n B = \"KeyB\",\n C = \"KeyC\",\n D = \"KeyD\",\n E = \"KeyE\",\n F = \"KeyF\",\n G = \"KeyG\",\n H = \"KeyH\",\n I = \"KeyI\",\n J = \"KeyJ\",\n K = \"KeyK\",\n L = \"KeyL\",\n M = \"KeyM\",\n N = \"KeyN\",\n O = \"KeyO\",\n P = \"KeyP\",\n Q = \"KeyQ\",\n R = \"KeyR\",\n S = \"KeyS\",\n T = \"KeyT\",\n U = \"KeyU\",\n V = \"KeyV\",\n W = \"KeyW\",\n X = \"KeyX\",\n Y = \"KeyY\",\n Z = \"KeyZ\",\n}\n","/**\n * Rounds a number to two decimal places.\n * @param decimal A decimal value to trim to two places.\n */\nexport function roundToTwo(decimal: number): number {\n return Math.round(decimal * 100) / 100;\n}\n","import type { ScriptArg } from \"../../Netscript/ScriptArg\";\nimport type { ScriptFilePath } from \"../../Paths/ScriptFilePath\";\n\n// This needs to be high in the dependency graph, with few/no dependencies of\n// its own, since many key modules depend on it.\n\nexport type ScriptKey = string & { __type: \"ScriptKey\" };\n\n// The key used to lookup worker scripts in their map.\nexport function scriptKey(path: ScriptFilePath, args: ScriptArg[]): ScriptKey {\n // Asterisk is used as a delimiter because it' not a valid character in paths.\n return (path + \"*\" + JSON.stringify(args)) as ScriptKey;\n}\n\n// Returns a RegExp that can be used to find scripts with a path that fully\n// matches \"pattern\" in the scriptKey.\nexport function matchScriptPathExact(pattern: string) {\n // Must fully match pattern, starting at the beginning and ending with the\n // asterisk delimiter, which can't appear in script paths.\n return new RegExp(\"^\" + pattern + \"\\\\*\");\n}\n\n// Returns a RegExp that can be used to find scripts with a path that\n// matches \"pattern\" somewhere in the scriptKey.\nexport function matchScriptPathUnanchored(pattern: string) {\n // Don't let the match extend into the arguments part (script paths can't\n // include \"[\").\n return matchScriptPathExact(\"[^[]*\" + pattern + \"[^[]*\");\n}\n","// We can probably get rid of isString in favor of just checking typeof value===\"string\".\n// We are not and should not ever be using `new String()` for anything. Will remove in 2.3.1\n/**\n * Checks whether the value passed in can be considered a string.\n * @param value The value to check if it is a string.\n */\nexport function isString(value: unknown): value is string {\n return typeof value === \"string\" || value instanceof String;\n}\n\n/** Removes a single layer of matching single or double quotes, if present. */\nexport function trimQuotes(value: string): string {\n if (value.length < 2) return value;\n if (value.at(0) !== value.at(-1)) return value;\n if (value.at(0) !== \"'\" && value.at(0) !== '\"') return value;\n return value.substring(1, value.length - 1);\n}\n","// Various functions for asserting types.\n\n/** Function for providing custom error message to throw for a type assertion.\n * @param v: Value to assert type of\n * @param assertFn: Typechecking function to use for asserting type of v.\n * @param msgFn: Function to use to generate an error message if an error is produced. */\nexport function assert(\n v: unknown,\n assertFn: (v: unknown) => asserts v is T,\n msgFn: (type: string) => string,\n): asserts v is T {\n try {\n assertFn(v);\n } catch (e) {\n const type = typeof e === \"string\" ? e : \"unknown\";\n throw msgFn(type);\n }\n}\n\n/** Returns the friendlyType of v. arrays are \"array\" and null is \"null\". */\nexport function getFriendlyType(v: unknown): string {\n return v === null ? \"null\" : Array.isArray(v) ? \"array\" : typeof v;\n}\n\n//All assertion functions used here should return the friendlyType of the input.\n\n/** For non-objects, and for array/null, throws the friendlyType of v. */\nexport function objectAssert(v: unknown): asserts v is Partial> {\n const type = getFriendlyType(v);\n if (type !== \"object\") throw type;\n}\n\n/** For non-string, throws the friendlyType of v. */\nexport function stringAssert(v: unknown): asserts v is string {\n const type = getFriendlyType(v);\n if (type !== \"string\") throw type;\n}\n\n/** For non-array, throws the friendlyType of v. */\nexport function arrayAssert(v: unknown): asserts v is unknown[] {\n if (!Array.isArray(v)) throw getFriendlyType(v);\n}\n","import { AugmentationName } from \"@enums\";\nimport { PlayerOwnedAugmentation } from \"../Augmentation/PlayerOwnedAugmentation\";\nimport { Player } from \"@player\";\nimport { GetAllServers } from \"../Server/AllServers\";\nimport { resolveTextFilePath } from \"../Paths/TextFilePath\";\nimport { resolveScriptFilePath } from \"../Paths/ScriptFilePath\";\n\nconst detect: [string, string][] = [\n [\"getHackTime\", \"returns milliseconds\"],\n [\"getGrowTime\", \"returns milliseconds\"],\n [\"getWeakenTime\", \"returns milliseconds\"],\n [\"getActionTime\", \"returns milliseconds\"],\n [\"hackAnalyzePercent\", \"renamed 'hackAnalyze' and returns decimal\"],\n [\"hackChance\", \"renamed 'hackAnalyzeChance'\"],\n [\"basic.calculateSkill\", \"renamed 'skills.calculateSkill'\"],\n [\"basic.calculateExp\", \"renamed 'skills.calculateExp'\"],\n [\"basic.hackChance\", \"renamed 'hacking.hackChance'\"],\n [\"basic.hackExp\", \"renamed 'hacking.hackExp'\"],\n [\"basic.hackPercent\", \"renamed 'hacking.hackPercent'\"],\n [\"basic.growPercent\", \"renamed 'hacking.growPercent'\"],\n [\"basic.hackTime\", \"renamed 'hacking.hackTime'\"],\n [\"basic.growTime\", \"renamed 'hacking.growTime'\"],\n [\"basic.weakenTime\", \"renamed 'hacking.weakenTime'\"],\n [\"write\", \"needs to be awaited\"],\n [\"scp\", \"needs to be awaited\"],\n [\"sleep\", \"Can no longer be called simultaneously.\"],\n [\"hacking_skill\", \"renamed 'hacking'\"],\n [\"tryWrite\", \"renamed 'tryWritePort'\"],\n];\n\nconst changes: [RegExp, string][] = [\n [/ns.getHackTime/g, \"((...a)=>ns.getHackTime(...a)/1000)\"],\n [/ns.getGrowTime/g, \"((...a)=>ns.getGrowTime(...a)/1000)\"],\n [/ns.getWeakenTime/g, \"((...a)=>ns.getWeakenTime(...a)/1000)\"],\n [/ns.bladeburner.getActionTime/g, \"((...a)=>ns.bladeburner.getActionTime(...a)/1000)\"],\n [/ns.hackAnalyzePercent/g, \"((...a)=>ns.hackAnalyze(...a)*100)\"],\n [/ns.hackChance/g, \"ns.hackAnalyzeChance\"],\n [/ns.tryWrite/g, \"ns.tryWritePort\"],\n [/formulas.basic.calculateSkill/g, \"formulas.skills.calculateSkill\"],\n [/formulas.basic.calculateExp/g, \"formulas.skills.calculateExp\"],\n [/formulas.basic.hackChance/g, \"formulas.hacking.hackChance\"],\n [/formulas.basic.hackExp/g, \"formulas.hacking.hackExp\"],\n [/formulas.basic.hackPercent/g, \"formulas.hacking.hackPercent\"],\n [/formulas.basic.growPercent/g, \"formulas.hacking.growPercent\"],\n [/formulas.basic.hackTime/g, \"formulas.hacking.hackTime\"],\n [/formulas.basic.growTime/g, \"formulas.hacking.growTime\"],\n [/formulas.basic.weakenTime/g, \"formulas.hacking.weakenTime\"],\n];\nfunction hasChanges(code: string): boolean {\n for (const change of changes) {\n if (code.match(change[0])) return true;\n }\n return false;\n}\n\nfunction convert(code: string): string {\n const lines = code.split(\"\\n\");\n const out: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n const orig = lines[i];\n let line = lines[i];\n for (const change of changes) {\n line = line.replace(change[0], change[1]);\n }\n if (line != orig) {\n out.push(`// =============================== original line ===============================`);\n out.push(`/**`);\n out.push(` * ${orig}`);\n out.push(\" */\");\n out.push(`// =============================================================================`);\n }\n out.push(line);\n }\n code = out.join(\"\\n\");\n return code;\n}\n\nexport function AwardNFG(n = 1): void {\n const nf = Player.augmentations.find((a) => a.name === AugmentationName.NeuroFluxGovernor);\n if (nf) {\n nf.level += n;\n } else {\n const nf = new PlayerOwnedAugmentation(AugmentationName.NeuroFluxGovernor);\n nf.level = n;\n Player.augmentations.push(nf);\n }\n}\n\nexport interface IFileLine {\n file: string;\n line: number;\n content: string;\n}\n\nexport function v1APIBreak(): void {\n let txt = \"\";\n for (const server of GetAllServers()) {\n for (const change of detect) {\n const s: IFileLine[] = [];\n\n for (const script of server.scripts.values()) {\n const lines = script.code.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].includes(change[0])) {\n s.push({\n file: script.filename,\n line: i + 1,\n content: \"\",\n });\n }\n }\n }\n\n if (s.length === 0) continue;\n\n txt += `// Detected change ${change[0]}, reason: ${change[1]}\\n`;\n for (const fl of s) {\n txt += `${fl.file}:${fl.line}\\n`;\n }\n }\n }\n if (txt !== \"\") {\n const home = Player.getHomeComputer();\n const textPath = resolveTextFilePath(\"v1_DETECTED_CHANGES.txt\");\n if (!textPath) return console.error(\"Filepath unexpectedly failed to parse\");\n home.writeToTextFile(textPath, txt);\n }\n\n for (const server of GetAllServers()) {\n for (const script of server.scripts.values()) {\n if (!hasChanges(script.code)) continue;\n // Sanitize first before combining\n const oldFilename = resolveScriptFilePath(script.filename);\n const filename = resolveScriptFilePath(\"BACKUP_\" + oldFilename);\n if (!filename) {\n console.error(`Unexpected error resolving backup path for ${script.filename}`);\n continue;\n }\n server.writeToScriptFile(filename, script.code);\n script.code = convert(script.code);\n }\n }\n}\n","import { TextFilePath } from \"../Paths/TextFilePath\";\nimport { saveObject } from \"../SaveObject\";\nimport { Script } from \"../Script/Script\";\nimport { GetAllServers, GetServer } from \"../Server/AllServers\";\nimport { IFileLine } from \"./v1APIBreak\";\nimport { openV2Modal } from \"./V2Modal\";\n\nconst singularity = [\n \"applyToCompany\",\n \"b1tflum3\",\n \"checkFactionInvitations\",\n \"commitCrime\",\n \"connect\",\n \"createProgram\",\n \"destroyW0r1dD43m0n\",\n \"donateToFaction\",\n \"getAugmentationBasePrice\",\n \"getAugmentationCost\",\n \"getAugmentationPrereq\",\n \"getAugmentationPrice\",\n \"getAugmentationRepReq\",\n \"getAugmentationsFromFaction\",\n \"getAugmentationStats\",\n \"getCompanyFavor\",\n \"getCompanyFavorGain\",\n \"getCompanyRep\",\n \"getCrimeChance\",\n \"getCrimeStats\",\n \"getCurrentServer\",\n \"getDarkwebProgramCost\",\n \"getDarkwebPrograms\",\n \"getFactionFavor\",\n \"getFactionFavorGain\",\n \"getFactionRep\",\n \"getOwnedAugmentations\",\n \"getOwnedSourceFiles\",\n \"getUpgradeHomeCoresCost\",\n \"getUpgradeHomeRamCost\",\n \"goToLocation\",\n \"gymWorkout\",\n \"hospitalize\",\n \"installAugmentations\",\n \"installBackdoor\",\n \"isBusy\",\n \"isFocused\",\n \"joinFaction\",\n \"manualHack\",\n \"purchaseAugmentation\",\n \"purchaseProgram\",\n \"purchaseTor\",\n \"quitJob\",\n \"setFocus\",\n \"softReset\",\n \"stopAction\",\n \"travelToCity\",\n \"universityCourse\",\n \"upgradeHomeCores\",\n \"upgradeHomeRam\",\n \"workForCompany\",\n \"workForFaction\",\n];\n\nconst getPlayerFields = [\n \"workChaExpGained\",\n \"currentWorkFactionName\",\n \"workDexExpGained\",\n \"workHackExpGained\",\n \"createProgramReqLvl\",\n \"workStrExpGained\",\n \"companyName\",\n \"crimeType\",\n \"workRepGained\",\n \"workChaExpGainRate\",\n \"workType\",\n \"workStrExpGainRate\",\n \"isWorking\",\n \"workRepGainRate\",\n \"workDefExpGained\",\n \"currentWorkFactionDescription\",\n \"workHackExpGainRate\",\n \"workAgiExpGainRate\",\n \"workDexExpGainRate\",\n \"workMoneyGained\",\n \"workMoneyLossRate\",\n \"workMoneyGainRate\",\n \"createProgramName\",\n \"workDefExpGainRate\",\n \"workAgiExpGained\",\n \"className\",\n \"hacking\",\n \"strength\",\n \"defense\",\n \"dexterity\",\n \"agility\",\n \"charisma\",\n \"intelligence\",\n \"hacking_exp\",\n \"strength_exp\",\n \"defense_exp\",\n \"dexterity_exp\",\n \"agility_exp\",\n \"charisma_exp\",\n \"intelligence_exp\",\n \"hp\",\n \"max_hp\",\n \"hasWseAccount\",\n \"hasTixApiAccess\",\n \"has4SData\",\n \"has4SDataTixApi\",\n];\n\nconst mults = [\n \"hacking_chance_mult\",\n \"hacking_speed_mult\",\n \"hacking_money_mult\",\n \"hacking_grow_mult\",\n \"hacking_mult\",\n \"hacking_exp_mult\",\n \"strength_mult\",\n \"strength_exp_mult\",\n \"defense_mult\",\n \"defense_exp_mult\",\n \"dexterity_mult\",\n \"dexterity_exp_mult\",\n \"agility_mult\",\n \"agility_exp_mult\",\n \"charisma_mult\",\n \"charisma_exp_mult\",\n \"hacknet_node_money_mult\",\n \"hacknet_node_purchase_cost_mult\",\n \"hacknet_node_ram_cost_mult\",\n \"hacknet_node_core_cost_mult\",\n \"hacknet_node_level_cost_mult\",\n \"company_rep_mult\",\n \"faction_rep_mult\",\n \"work_money_mult\",\n \"crime_success_mult\",\n \"crime_money_mult\",\n \"bladeburner_max_stamina_mult\",\n \"bladeburner_stamina_gain_mult\",\n \"bladeburner_analysis_mult\",\n \"bladeburner_success_chance_mult\",\n];\n\ninterface IRule {\n matchJS: RegExp;\n matchScript?: RegExp;\n reason: string;\n offenders: IFileLine[];\n}\n\nexport const v2APIBreak = () => {\n const home = GetServer(\"home\");\n if (!home) throw new Error(\"'home' server was not found.\");\n const rules: IRule[] = [\n {\n matchJS: /ns\\.workForCompany/g,\n matchScript: /workForCompany/g,\n reason: \"workForCompany argument companyName is now not-optional.\",\n offenders: [],\n },\n {\n matchJS: /ns\\.getScriptExpGain/g,\n matchScript: /getScriptExpGain/g,\n reason: \"getScriptExpGain with 0 argument no longer returns the sum of all scripts. Use getTotalScriptExpGain\",\n offenders: [],\n },\n {\n matchJS: /ns\\.getScriptExpGain/g,\n matchScript: /getScriptExpGain/g,\n reason: \"getScriptIncome with 0 argument no longer returns the sum of all scripts. Use getTotalScriptIncome\",\n offenders: [],\n },\n {\n matchJS: /ns\\.scp/g,\n matchScript: /scp/g,\n reason:\n \"scp arguments were switch, it is now scp(files, destination, optionally_source). If you were using 2 argument (not 3) this doesn't affect you.\",\n offenders: [],\n },\n {\n matchJS: /ns\\.stock\\.buy/g,\n matchScript: /stock\\.buy/g,\n reason: \"buy is a very common word so in order to avoid ram costs it was renamed ns.stock.buyStock\",\n offenders: [],\n },\n {\n matchJS: /ns\\.stock\\.sell/g,\n matchScript: /stock\\.sell/g,\n reason: \"sell is a very common word so in order to avoid ram costs it was renamed ns.stock.sellStock\",\n offenders: [],\n },\n {\n matchJS: /ns\\.stock\\.short/g,\n matchScript: /stock\\.short/g,\n reason: \"short is a very common word so in order to avoid ram costs it was renamed ns.stock.buyShort\",\n offenders: [],\n },\n {\n matchJS: /ns\\.corporation\\.bribe/g,\n matchScript: /corporation\\.bribe/g,\n reason: \"bribe no longer allows you to give shares of the corporation, only money\",\n offenders: [],\n },\n ];\n\n for (const fn of singularity) {\n rules.push({\n matchJS: new RegExp(`ns.${fn}`, \"g\"),\n reason: `ns.${fn} was moved to ns.singularity.${fn}`,\n offenders: [],\n });\n }\n\n for (const mult of mults) {\n rules.push({\n matchJS: new RegExp(mult, \"g\"),\n reason: `ns.getPlayer().${mult} was moved to ns.getPlayer().mults.${mult.slice(0, mult.length - 5)}`,\n offenders: [],\n });\n }\n\n for (const f of getPlayerFields) {\n rules.push({\n matchJS: new RegExp(f, \"g\"),\n reason: `The work system is completely reworked and ns.getPlayer().${f} no longer exists. This data is likely available inside ns.getPlayer().currentWork, skills, exp, or hp`,\n offenders: [],\n });\n }\n // V31/2.3.0 conversion of scripts to map has already occurred.\n for (const script of home.scripts.values()) {\n processScript(rules, script);\n }\n\n home.writeToTextFile(\"V2_0_0_API_BREAK.txt\" as TextFilePath, formatRules(rules));\n openV2Modal();\n\n for (const server of GetAllServers()) {\n server.runningScriptMap = new Map();\n }\n saveObject.exportGame();\n};\n\nconst formatOffenders = (offenders: IFileLine[]): string => {\n const files: Record = {};\n for (const off of offenders) {\n const current = files[off.file] ?? [];\n current.push(off);\n files[off.file] = current;\n }\n\n let txt = \"\";\n for (const file in files) {\n txt += \"\\t\" + file + \"\\n\";\n for (const fileline of files[file]) {\n txt += `\\t\\tLine ${fileline.line} ${fileline.content.trim()}\\n`;\n }\n }\n return txt;\n};\n\nconst formatRules = (rules: IRule[]): string => {\n let txt =\n \"This file contains the list of potential API break. A pattern was used to look through all your files and note the spots where you might have a problem. Not everything here is broken.\";\n for (const rule of rules) {\n if (rule.offenders.length === 0) continue;\n txt += String(rule.matchJS) + \"\\n\";\n txt += rule.reason + \"\\n\\n\";\n txt += formatOffenders(rule.offenders);\n txt += \"\\n\\n\";\n }\n return txt;\n};\n\nconst processScript = (rules: IRule[], script: Script) => {\n const lines = script.code.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n for (const rule of rules) {\n const line = lines[i];\n const match = script.filename.endsWith(\".script\") ? rule.matchScript ?? rule.matchJS : rule.matchJS;\n if (line.match(match)) {\n rule.offenders.push({\n file: script.filename,\n line: i + 1,\n content: line,\n });\n }\n }\n }\n};\n","export default \"# BitNodes\\n\\nA BitNode is an important part of the game's storyline.\\nIn the game, you discover what BitNodes are by following the trail of clues left by the mysterious `jump3r`.\\n\\n## What is a BitNode\\n\\nA BitNode is the complex simulated reality in which you reside.\\nBy following the messages from `jump3r`, you discover that humanity was enslaved by an advanced alien race, called the Enders, using virtual simulations that trapped the minds of humans.\\n\\nHowever, the Enders didn't just create a single virtual reality to enslave humans, but many different simulations.\\nIn other words, there are many different BitNodes that exist.\\nThese BitNodes are very different from each other.\\n\\njump3r tells you that the only hope for humanity is to destroy all of these BitNodes.\\nTherefore, the end goal for the player is to enter and then destroy each BitNode.\\n\\nDestroying a BitNode resets most of the player's progress but grants the player a powerful second-tier persistent upgrade called a [Source-File](sourcefiles.md).\\nDifferent BitNodes grant different [Source-Files](sourcefiles.md).\\n\\nEach BitNode has unique characteristics that are related to varying backstories.\\nFor example, in one BitNode the world is in the middle of a financial catastrophe with a collapsing market.\\nIn this BitNode, most forms of income such as working at a [Company](../basic/companies.md) or [Hacknet Nodes](../basic/hacknet_nodes.md) are significantly less profitable.\\n[Servers](../basic/servers.md) have less money on them and lowered growth rates, but it is easier to lower their security level using the `weaken` function.\\n\\nFurthermore, some BitNodes introduce new content and mechanics.\\nFor example, there is one BitNode that grants access to the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md).\\nThere is another BitNode in which you can manage a [Gang](gang.md) to earn money and [Reputation](../basic/reputation.md).\\n\\n## How to destroy a BitNode\\n\\nInitially, the only way to destroy a BitNode is to join Daedalus.\\nFrom Daedalus, the player can obtain an [Augmentation](../basic/augmentations.md) called `The Red Pill`, which doesn't cost any money but does require a good amount of [Faction](../basic/factions.md) [Reputation](../basic/reputation.md).\\n\\nAfter installing `The Red Pill`, the player must search for and then manually `hack` a server called `w0r1d_d43m0n`.\\nThis server requires a hacking level of `3000`, sometimes more, in order to successfully hack it.\\nThis will destroy the player's current BitNode.\\n\\nThere is a second method of destroying a BitNode, but it must be unlocked by first destroying BitNode-6 or BitNode-7 ([Bladeburners](bladeburners.md)).\\n\\nWhen the player destroys a BitNode, most of their progress will be reset.\\nThis includes things such as [Augmentations](../basic/augmentations.md) and [RAM](../basic/ram.md) upgrades on the home computer.\\nThe only things that will persist through destroying BitNodes are:\\n\\n- [Source-Files](sourcefiles.md)\\n- [Scripts](../basic/scripts.md) on the home computer\\n- [Intelligence](intelligence.md)\\n\";","export default \"# Bladeburners\\n\\nBladeburner divisions were created internationally in the mid-21st century. Tasked with monitoring and \\\"managing\\\" rogue Synthoids, which may have blended into society and are sometimes considered a threat, working for Bladeburners gives access to powerful enhancements and a goal of destroying [BitNodes](bitnodes.md) by operating against increasingly strong Synthoid opposition.\\n\\n## Bladeburner Skills:\\n\\nDesigned to improve a human agent's capabilities beyond their natural limits, Bladeburner skills add a persistent bonus while in the [BitNode](bitnodes.md) where they were purchased. Bladeburner skills are purchased with Bladeburner skill points, not money.\\n\\n## Faction and Rank:\\n\\nBladeburners also offer unique [Augmentations](../basic/augmentations.md) and a [Faction](factions.md) invite to agents who \\\"put in the work\\\" to gain a small amount of rank. While Bladeburner rank and skill points persist after any augmentation installs, faction reputation will be reset. Bladeburner faction reputation can only be gained through Bladeburner actions.\\n\";","export default \"# Corporations\\n\\nPLACEHOLDER\\n\";","export default \"# Gangs\\n\\nIn the wake of crisis and war, Gang activity surged. Stronger than ever in a lawless world - Enhanced with fantastic technology, no longer held back by ethics and morals, 'free from the shadows'....\\n\\nSeen by most of the population as nihilistic, murderous and vile, occassional rumors suggest Gangs sometimes involve themselves with vigilanteism, hacktivism, perhaps even plotting against The Enders, seeking to destroy a world they cannot save.\\n\\n## Starting and Recruiting\\n\\nOutside of [BitNode-2](bitnodes.md) gangs require much more crime and heartbreak to create, but can still be a great help. Creating a Gang in other [BitNodes](bitnodes.md) will offer more [Augmentations](../basic/augmentations.md) than other [Factions](../basic/factions.md), but they will not be a way to destroy the [BitNode](bitnodes.md) alone.\\n\\nAfter creating a gang, you will be able to start recruiting, adding members to your gang as you gain Respect. While in a BitNode, your gang and gang member stats will not reset if you install augmentations.\\n\\n## Respect\\n\\nEarned as your gang members complete tasks, Respect affects your gang's productivity, including your Faction Reputation (needed to buy augmentations from your Gang Faction), and the number of recruits you can have. An individual gang member's Respect is lost or reset if they Ascend, or are killed in a Territory Warfare clash.\\n\\n## Ascending\\n\\nWhen experienced enough, gang members are offered Ascension, a permanent boost to their stat multipliers at the cost of resetting their base stats and equipment to 0, and reducing your Gang Reputation by the same amount as that member had earned since they last Ascended.\\n\\n## Equipping and Managing\\n\\nBuying Equipment for a gang member will give them a stat boost until they Ascend or are killed, at which point most equipment will reset.\\n\\nAugmentations you install on gang members (in the Gang Equipment subpage) do not reset when they Ascend.\\n\\nActive gang members earn stats, respect and money based on their current stats, their equipment, and the effects of Ascending.\\n\\n## Wanted, Territory and Clashes\\n\\nYour gang's \\\"Wanted Level\\\" can make tasks much less productive, and is affected by the tasks assigned to gang members. \\\"Ethical Hacking\\\" or \\\"Vigilante Justice\\\" tasks can lower Wanted Level.\\n\\n\\\"Territory Warfare\\\" is a special task that builds Power for your gang. If \\\"Territory Clashes\\\" are enabled [see the Territory subpage of your Gang page], members have a chance to win or lose territory by clashing with other gangs. The % of Territory you control affects most aspects of your gang productivity.\\n\\nNote that gang members can die during clashes, even if your gang wins.\\n\";","export default \"# Grafting\\n\\nGrafting is an experimental process through which you can obtain the benefits of [Augmentations](../basic/augmentations.md), without needing to reboot your body.\\n\\nGrafting can be done at VitaLife in New Tokyo, where you'll find a shady researcher with questionable connections.\\nFrom there, you can spend a sum of money to begin grafting [Augmentations](../basic/augmentations.md).\\nThis will take some time.\\nWhen done, the [Augmentation](../basic/augmentations.md) will be applied to your character without needing to install.\\n\\nBe warned, some who have tested grafting have reported an unidentified malware.\\nDubbed `Entropy`, this virus seems to grow in potency as more [Augmentations](../basic/augmentations.md) are grafted, causing unpredictable affects to the victim.\\n\\nNote that when grafting an [Augmentation](../basic/augmentations.md), cancelling will **not** save your progress, and the money spent will **not** be returned.\\n\";","export default \"# Hacknet Servers\\n\\nThese are a very powerful upgrade to [Hacknet Nodes](../basic/hacknet_nodes.md).\\nInstead of producing money, the Hacknet Servers produce `hashes`.\\nThis currency can be exchanged for a variety of upgrades that boost most other mechanics of the game.\\n\\nThey can also be used to run scripts on.\\nHowever, this reduces the amount of `hash` produced.\\n\";","export default \"# Intelligence\\n\\nIntelligence is a stat that is unlocked by having [Source-File 5](sourcefiles.md) (i.e. Destroying [BitNode-5](bitnodes.md)).\\n\\nIntelligence is unique because it is permanent and persistent.\\nIt never gets reset back to 1.\\nHowever, gaining Intelligence experience is extremely slow.\\nIt is a stat that gradually builds up as you continue to play the game.\\n\\nIntelligence will boost your production for many actions in the game, including:\\n\\n- [Hacking](../basic/hacking.md)\\n- [Infiltration](../basic/infiltration.md)\\n- [Crime](../basic/crimes.md) success rate\\n- [Bladeburner](bladeburners.md) actions\\n- [Reputation](../basic/reputation.md) gain for [Companies](../basic//companies.md) & [Factions](../basic/factions.md)\\n- [Augmentation](../basic/augmentations.md) [Grafting](grafting.md) speed\\n\";","export default \"# How Scripts Work Offline\\n\\nThe scripts you write and execute in the BitVerse are real, working JavaScript.\\nFor this reason, it is not possible for Bitburner scripts to run when\\n\\n- the game is closed\\n- the browser tab is inactive (if playing Bitburner in a web browser)\\n- or your system is sleeping\\n\\nall of which we call being \\\"offline\\\" for game purposes.\\n\\nIt is important to know that logic such as `if`/`else` statements and most functions such as `ns.purchaseHacknetNode()`, `ns.hack()`, and `ns.nuke()` will not work while the game is offline.\\n\\nHowever, scripts WILL continue to generate money and hacking exp for you while offline.\\nThis offline production is based on the average online production of all your hacking scripts since your last augmentation, as shown on your Active Scripts page.\\n\\n`ns.grow()` and `ns.weaken()` methods are also applied when the game is offline, although at a slower rate.\\nThis is done by having each script track the rate at which the `ns.grow()` and `ns.weaken()` commands are called while online,\\nthen determining how many calls would have been made while offline, and their effect is applied.\\n\\nAlso, note that because of the way the JavaScript engine works, whenever you reload or re-open the game all of your Active Scripts will start again from the BEGINNING of their code. The game does not keep track of where exactly the execution of a script is when it saves/loads.\\n\\n# Bonus Time\\n\\nBecause of the above details, some activities in Bitburner accumulate \\\"Bonus Time\\\" while the game is closed or in an inactive browser tab . For mechanics that have a Bonus Time effect, the rate of the associated activity or task is significantly increased.\\n\\nFor example if a certain [Bladeburner](bladeburners.md) contract requires 15 seconds to complete under normal conditions, the same task will be finished instead in 3 seconds if the Bonus Time effect is 5x. The specific details and effects of Bonus Time vary by mechanic.\\n\";","export default \"# Sleeves\\n\\nWhen VitaLife unveiled their Persona Core technology that allowed people to digitize and transfer their consciousness into other vessels, human bodies became nothing more than 'sleeves' for the human consciousness.\\nThis technology thus became known as \\\"Sleeve technology\\\".\\n\\nSleeve technology unlocks two different gameplay features:\\n\\n- Duplicate Sleeves\\n- [Grafting](grafting.md)\\n\\nSleeve technology is unlocked in [BitNode-10](bitnodes.md).\\n\\n## Duplicate Sleeves\\n\\nDuplicate Sleeves are MK-V Synthoids (synthetic androids) into which your consciousness has been copied.\\nIn other words, these Synthoids contain a perfect duplicate of your mind.\\n\\nDuplicate Sleeves are essentially clones which you can use to perform work-type actions, such as working for a [Company](../basic/companies.md) / [Faction](../basic/factions.md) or committing a [Crime](../basic/crimes.md).\\nWhen sleeves perform these tasks, they will earn money, experience, and [Reputation](../basic/reputation.md).\\n\\nSleeves are their own individuals, which means they each have their own experience and stats.\\n\\nWhen a sleeve earns experience, it earns experience for itself, the player's original consciousness, as well as all of the player's other sleeves.\\n\\nDuplicate Sleeves are **not** reset when installing [Augmentations](../basic/augmentations.md), but they are reset when switching [BitNodes](bitnodes.md).\\n\\n## Obtaining Duplicate Sleeves\\n\\nThere are two methods of obtaining Duplicate Sleeves:\\n\\n- Destroy [BitNode-10](bitnodes.md).\\n Each completion gives you one additional Duplicate Sleeve.\\n- Purchase Duplicate Sleeves from The Covenant.\\n This is only available in [BitNode-10](bitnodes.md).\\n Sleeves purchased this way are **permanent** (they persist through [BitNodes](bitnodes.md)).\\n You can purchase up to 5 Duplicate Sleeves from The Covenant.\\n\\n## Synchronization\\n\\nSynchronization is a measure of how aligned your consciousness is with that of your Duplicate Sleeves.\\nIt is a numerical value between `1` and `100`, and it affects how much experience is earned when the sleeve is performing a task.\\n\\nSynchronization can be increased by assigning sleeves to the `Synchronize` task.\\n\\n## Sleeve Shock\\n\\nSleeve shock is a measure of how much trauma the sleeve has due to being placed in a new body.\\nIt is a numerical value between `0` and `100`, where `100` indicates full shock and `0` indicates no shock.\\nShock affects the amount of experience earned by the sleeve.\\n\\nSleeve shock slowly decreases over time.\\nYou can further increase the rate at which it decreases by assigning sleeves to the `Shock Recovery` task.\\n\\nLet `X` be the sleeve's shock and `Y` be the sleeve's synchronization.\\nWhen the sleeve earns experience by performing a task, the sleeve gains `X%` of the amount of experience normally earned by the task.\\nThe player’s original host consciousness and all of the player's other sleeves earn `Y%` of the experience that the sleeve gained, or `X\\\\*Y %` of the normal experience amount.\\n\\n## Augmentations\\n\\nYou can purchase [Augmentations](../basic/augmentations.md) for your Duplicate Sleeves.\\nIn order to do this, the sleeve's shock must be at `0`.\\nAny [Augmentation](../basic/augmentations.md) that is currently available to you through a faction is also available for your Duplicate Sleeves.\\nThere are a few [Augmentations](../basic/augmentations.md), such as NeuroFlux Governor and [Bladeburner](bladeburners.md)-specific ones, that cannot be purchased for a Duplicate Sleeve.\\n\\nWhen you purchase an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve, it is instantly installed.\\nWhen this happens, the sleeve's stats are instantly reset back to 0, similar to when you normally install [Augmentations](../basic/augmentations.md).\\n\\nThe cost of purchasing an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve is **not** affected by how many [Augmentations](../basic/augmentations.md) you have purchased for yourself, and vice versa.\\n\\n## Memory\\n\\nSleeve memory dictates what a sleeve's synchronization will be when it is reset by switching [BitNodes](bitnodes.md).\\nFor example, if a sleeve has a memory of `10`, then when you switch [BitNodes](bitnodes.md) its synchronization will initially be set to `10`, rather than 1.\\n\\nMemory can only be increased by purchasing upgrades from The Covenant.\\nJust like the ability to purchase additional sleeves, this is only available in [BitNode-10](bitnodes.md).\\n\\nMemory is a persistent stat, meaning it never gets reset back to `1`.\\nThe maximum possible value for a sleeve's memory is `100`.\\n\\nBuying memory has no instant affect on synchronization - memory affects only the starting synchronization upon entering a [BitNode](bitnodes.md).\\n\";","export default \"# Source-Files\\n\\nSource-Files are a type of persistent upgrade that is more powerful than [Augmentations](../basic/augmentations.md).\\nSource-Files are received by destroying a [Bitnode](bitnodes.md).\\nThere are many different [BitNodes](bitnodes.md) in the game and each [BitNode](bitnodes.md) will grant a different Source-File when it is destroyed.\\n\\nA Source-File can be upgraded by destroying its corresponding [BitNode](bitnodes.md) a second or third time (playing through that [BitNode](bitnodes.md) again).\\nIt can be upgraded to a maximum of level 3, with the exception of Source-File 12, which has no hard limit.\\n\";","export default \"# Stanek\\n\\nAllison is a bit crazy.\\nBut her special [Augmentation](../basic/augmentations.md) is very useful despite its ~~bugs~~ features.\\nThe Gift consists of a grid of squares in which tetris-like pieces called fragments can be placed.\\nEach fragment boost a different player multiplier.\\nHowever, the fragments are not very powerful by themselves.\\n\\nTo increase the power of a fragment, the `ns.stanek.charge()` function needs to be called.\\nMore threads means more power.\\n\\nThere are also special fragments called booster fragments which increase the power of the fragment it touches.\\n\";","export default \"# Augmentations\\n\\nAdvances in science and medicine have led to powerful new technologies that allow people to augment themselves beyond normal human capabilities.\\nThere are many different types of Augmentations, ranging from cybernetic to genetic to biological.\\nAcquiring these Augmentations enhances the user's physical and mental faculties.\\n\\nAugmentations provide persistent upgrades in the form of multipliers.\\nThese multipliers apply to a wide variety of things such as stats, experience gain, and [hacking](hacking.md), just to name a few.\\nThe effects of Augmentations stack multiplicatively.\\nYour multipliers can be viewed in the `Character` pages.\\n\\n## How to acquire Augmentations\\n\\nBecause of how powerful Augmentations are, the technology behind them is kept private and secret by the corporations and organizations that create them.\\nTherefore, the only way for the player to obtain Augmentations is through [Factions](factions.md).\\nAfter joining a [Faction](factions.md) and earning enough [Reputation](reputation.md) in it, you will be able to purchase its Augmentations.\\nDifferent [Factions](factions.md) offer different Augmentations.\\nAugmentations must be purchased in order to be installed, and they are fairly expensive.\\nThey also require [Reputation](reputation.md) with a [Faction](factions.md) before they will let you purchase their Augmentations.\\n\\n## Installing Augmentations\\n\\nYou will not gain the benefits of your purchased Augmentations until you install them.\\nYou can choose to install Augmentations through the `Augmentations` menu tab, found under `Character`.\\n\\nUnfortunately, installing Augmentations has side effects.\\nYou will lose most of the progress you've made, including your skills, stats, and money.\\nYou will have to start over, but you will have all of the Augmentations you have installed to help you progress.\\nThis is the game's \\\"soft reset\\\" or \\\"prestige\\\" mechanic.\\n\\nTo summarize, here is a list of everything you will **LOSE** when you install an Augmentation:\\n\\n- Stats/Skills\\n- Money\\n- [Scripts](scripts.md) on all [servers](servers.md) EXCEPT your home computer\\n- Purchased [servers](servers.md)\\n- [Hacknet Nodes](hacknet_nodes.md)\\n- [Company](companies.md) / [Faction](factions.md) [Reputation](reputation.md), but you gain [Favor](reputation.md).\\n- Jobs and [Faction](factions.md) memberships\\n- Programs\\n- [Stocks](stockmarket.md)\\n- TOR router\\n\\nHere is everything you will **KEEP** when you install an Augmentation:\\n\\n- Every Augmentation you have previously installed\\n- [Scripts](scripts.md) on your home computer\\n- [RAM](ram.md) / Core Upgrades on your home computer\\n- [World Stock Exchange account](stockmarket.md) and [TIX API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md) Access\\n\\n## Purchasing Multiple Augmentations\\n\\nYou do not have to install an Augmentation right after you purchase it.\\nYou can purchase as many Augmentations as you'd like before you choose to install them.\\nWhen you install your purchased Augmentations they will **ALL** get installed at once.\\n\\nThere are a few drawbacks to this, however.\\nFirst, obviously, you won't gain the benefits of your purchased Augmentations until after you install them.\\nSecond, purchasing multiple Augmentations before installing them will cause the Augmentations to get progressively more expensive.\\nWhen you purchase an Augmentation, the price of purchasing another Augmentation doubles.\\nThis multiplier stacks for each Augmentation you purchase.\\nOnce you install your purchased Augmentations, their costs are reset back to the original prices.\\nYou can only purchase each augmentation once, with the exception of `NeuroFlux Governor`, which can be purchased infinitely at increasing cost.\\n\";","export default \"# Coding Contracts\\n\\nCoding Contracts are a mechanic that lets players earn rewards in exchange for solving programming problems.\\n\\nCoding Contracts are files with the `.cct` extension.\\nThey can be accessed through the [Terminal](terminal.md) or through [Scripts](scripts.md) using the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\\n\\nEach contract has a limited number of attempts.\\nIf you provide the wrong answer too many times and exceed the number of attempts, the contract will self destruct (delete itself).\\n\\nCurrently, Coding Contracts are randomly generated and spawned over time.\\nThey can appear on any [server](servers.md) (including your home computer), except for your purchased [servers](servers.md).\\n\\n## Running in Terminal\\n\\nTo run a Coding Contract in the [Terminal](terminal.md), simply use the `run` command:\\n\\n $ run some-contract.cct\\n\\nDoing this will bring up a popup.\\nThe popup will display the contract's problem, the number of attempts remaining, and an area to provide an answer.\\n\\n## Interacting through Scripts\\n\\nSee the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\\nInteracting with Coding Contracts via the [Terminal](terminal.md) can be tedious the more contracts you solve.\\nConsider using the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) to automate various aspects of your solution.\\nFor example, some contracts have long solutions while others have even longer solutions.\\nYou might want to use the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) to automate the process of submitting your solution rather than copy and paste a long solution into an answer box.\\n\\nHowever, using the [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) comes at a cost.\\nLike most functions in other APIs, each function in the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) has a RAM cost.\\nDepending on which function you use, the initial [RAM](ram.md) on your home server might not be enough to allow you to use various [API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md) functions.\\nPlan on upgrading the [RAM](ram.md) on your home server if you want to use the [Coding Contract API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md).\\n\\n## Submitting Solutions\\n\\nDifferent contract problem types will require different types of solutions.\\nSome may be numbers, others may be strings or arrays.\\nIf a contract asks for a specific solution format, then use that.\\nOtherwise, follow these rules when submitting solutions:\\n\\n- String-type solutions should **not** have quotation marks surrounding the string (unless specifically asked for).\\n Only quotation marks that are part of the actual string solution should be included.\\n- Array-type solutions should be submitted with each element in the array separated by commas.\\n Brackets are optional.\\n For example, both of the following are valid solution formats:\\n - `1,2,3`\\n - `[1,2,3]`\\n- If the solution is a multidimensional array, then all arrays that are not the outer-most array DO require the brackets.\\n For example, an array of arrays can be submitted as one of the following:\\n - `[1,2],[3,4]`\\n - `[[1,2],[3,4]]`\\n\\nNumeric solutions should be submitted normally, as expected\\n\\n## Rewards\\n\\nThere are currently four possible rewards for solving a Coding Contract:\\n\\n- [Faction](factions.md) [Reputation](reputation.md) for a specific [Faction](factions.md)\\n- [Faction](factions.md) [Reputation](reputation.md) for all [Factions](factions.md) that you are a member of\\n- [Company](companies.md) [Reputation](reputation.md) for a specific [Company](companies.md)\\n- Money\\n\\nThe `amount` of the reward varies based on the difficulty of the problem posed by the Coding Contract.\\nThere is no way to know what a Coding Contract's exact reward will be until it is solved.\\n\\n## Notes\\n\\n- The `scp` [Terminal](terminal.md) command does not work on Coding Contracts\\n\";","export default \"# Companies\\n\\nWhen exploring the [World](world.md), you can visit various companies.\\nAt these companies, you can apply for jobs.\\n\\nWorking a job lets you earn money, experience, and [Reputation](reputation.md) with that company.\\n\\nWhile working for a company, you can click `Do something else simultaneously` to be able to do things while you continue to work in the background.\\nThere is a 20% penalty to the related gains.\\nClicking the `Focus` button under the overview will return you to the current work.\\n\\nIf you've been hired to do a job you can click that `Apply for X Job` button again to get a promotion if you meet the requirements.\\nYou can see the requirements by hovering your cursor over the button.\\nHigher positions give increased rewards.\\n\";","export default \"# Crimes\\n\\nCommitting crimes is an active gameplay mechanic that allows the player to train their [Stats](stats.md) and potentially earn money.\\nThe player can attempt to commit crimes by visiting `The Slums` through the `City` tab (Alt + w).\\n`The Slums` is available in every city.\\n\\n## Basic Mechanics\\n\\nWhen you visit `The Slums` you will see a list of buttons that show all of the available crimes.\\nSimply select one of the options to begin attempting that crime.\\nAttempting to commit a crime takes a certain amount of time.\\nThis time varies between crimes.\\n\\nWhile doing crimes, you can click `Do something else simultaneously` to be able to do things while you continue to do crimes in the background.\\nThere is a 20% penalty to the related gains.\\nClicking the `Focus` button under the overview will return you to the current task.\\n\\nCrimes are not always successful.\\nYour rate of success is determined by your [Stats](stats.md) and [Augmentations](augmentations.md).\\nThe odds can be seen on the crime-selection page.\\nIf you are unsuccessful at committing a crime you will gain EXP, but you will not earn money.\\nIf you are successful at committing the crime you will gain extra EXP (4x of what an unsuccessful attempt would give) and earn money.\\n\\nHarder crimes are typically more profitable, and also give more EXP.\\n\";","export default \"# Factions\\n\\nThroughout the game you may receive invitations from factions.\\nThere are many different factions, and each faction has different criteria for determining its potential members.\\nJoining a faction and furthering its cause is crucial to progressing in the game and unlocking endgame content.\\n\\nIt is possible to join multiple factions if you receive invitations from them.\\nHowever, note that joining a faction may prevent you from joining other rival factions.\\n(Don't worry, this usually isn't the case.\\nAlso, it would only be temporary since resetting the game by installing [Augmentations](augmentations.md) will clear all your factions)\\n\\nThe `Factions` link on the menu brings up a list of all factions that you have joined.\\nYou can select a Faction on this list to go to that Faction page.\\nThis page displays general information about the Faction and also lets you perform work for the faction.\\nWorking for a Faction is similar to working for a [Company](companies.md) except that you don't get paid a salary.\\nYou will only earn [Reputation](reputation.md) in your Faction and train your [Stats](stats.md).\\n\\nEarning [Reputation](reputation.md) for a Faction unlocks powerful [Augmentations](augmentations.md).\\nPurchasing and installing these [Augmentations](augmentations.md) will upgrade your abilities.\\nThe [Augmentations](augmentations.md) that are available to unlock vary from Faction to Faction.\\n\";","export default \"# Hacking\\n\\nIn the year 2077, currency has become digital and decentralized.\\nPeople and corporations store their money on [servers](servers.md).\\nBy hacking these [servers](servers.md), you can steal their money and gain experience.\\n\\n## Gaining Root Access\\n\\nThe first step to hacking a [server](servers.md) is to gain root access to that [server](servers.md).\\nThis can be done using the `NUKE.exe` virus.\\nYou start the game with a copy of the `NUKE.exe` virus on your home computer.\\nThe `NUKE.exe` virus attacks the target [server](servers.md)'s open ports using buffer overflow exploits.\\nWhen successful, you are granted root administrative access to the machine.\\n\\nIn order for the `NUKE.exe` virus to succeed, the target [server](servers.md) needs to have enough open ports.\\nSome [servers](servers.md) have no security and will not need any ports opened.\\nSome will have very high security and will need many ports opened.\\nIn order to open ports on another [server](servers.md), you will need to run programs that attack the [server](servers.md) to open specific ports.\\nThese programs can be coded once your hacking skill gets high enough, or they can be purchased if you can find a seller.\\n\\n**There are two ways to execute port-opening programs and the NUKE virus:**\\n\\n- Connect to the target [server](servers.md) through the [Terminal](terminal.md) and use the `run` command: `$ run [programName]`\\n- Use a function:\\n - `nuke`\\n - `brutessh`\\n - `ftpcrack`\\n - `relaysmtp`\\n - `httpworm`\\n - `sqlinject`\\n\\n**There are two ways to determine how many ports need to be opened\\non a [server](servers.md) in order to successfully NUKE it:**\\n\\n- Connect to that [server](servers.md) through the [Terminal](terminal.md) and use the `analyze` command.\\n- Use the `getServerNumPortsRequired` function.\\n\\nOnce you have enough ports opened on a [server](servers.md) and have ran the NUKE virus to gain root access, you will be able to hack it.\\n\\n### For specific details of how Hacking work \\\"offline\\\"\\n\\nSee [Offline And Bonus Time](../advanced/offlineandbonustime.md).\\n\\n## General Hacking Mechanics\\n\\nWhen you execute the `hack` command, either manually through the [Terminal](terminal.md) or automatically through a script, you attempt to hack the [server](servers.md).\\nThis action takes time.\\nThe more advanced a [server](servers.md)'s security is, the more time it will take.\\nYour hacking skill level also affects the hacking time, with a higher hacking skill leading to shorter hacking times.\\nAlso, running the hack command manually through [Terminal](terminal.md)\\nis faster than hacking from a script.\\n\\nYour attempt to hack a [server](servers.md) will not always succeed.\\nThe chance you have to successfully hack a [server](servers.md) is also determined by the [server](servers.md)'s security and your hacking skill level.\\nEven if your hacking attempt is unsuccessful, you will still gain experience points.\\n\\nWhen you successfully hack a [server](servers.md).\\nYou steal a certain percentage of that [server](servers.md)'s total money.\\nThis percentage is, once again, determined by the [server](servers.md)'s security and your hacking skill level.\\nThe amount of money on a [server](servers.md) is not limitless.\\nSo, if you constantly hack a [server](servers.md) and deplete its money, then you will encounter diminishing returns in your hacking (since you are only hacking a certain percentage).\\nYou can increase the amount of money on a [server](servers.md) using a script and the `grow` function.\\n\\n## Server Security\\n\\nEach [server](servers.md) has a security level, typically between `1` and `100`.\\nA higher number means the [server](servers.md) has stronger security.\\n\\nAs mentioned above, a [server](servers.md)'s security level is an important factor to consider when hacking.\\nYou can check a [server](servers.md)'s security level using the `analyze` [Terminal](terminal.md) command.\\nYou can also check a [server](servers.md)'s security in a script, using the `getServerSecurityLevel` function.\\n\\nWhenever a [server](servers.md) is hacked manually or through a script, its security level increases by a small amount.\\nCalling the `grow` function in a script will also increase security level of the target [server](servers.md).\\nThese actions will make it harder for you to hack the [server](servers.md), and decrease the amount of money you can steal.\\nYou can lower a [server](servers.md)'s security level in a script using the `weaken` function.\\n\\nThis means that a [server](servers.md)'s security level will not fall below this value if you are trying to `weaken` it.\\n\\n## Backdoors\\n\\n[Servers](servers.md) that can be hacked can also have backdoors installed.\\nThese backdoors will provide you with a benefit - the services may be cheaper, penalties may be reduced or there may be other results.\\nHoneypots exist and will let factions know when you have succeeded at backdooring their system.\\nOnce you have a backdoor installed, you can connect to that [server](servers.md) directly.\\n\\nWhen you visit a location in the city and see that the name is partially scrambled, this indicates that you have backdoored the [server](servers.md) related to the location.\\n\";","export default \"# Hacknet nodes\\n\\nThis distributed network of computers allows you to gain passive income.\\nBy upgrading a node's level, RAM, and CPU cores you can increase the amount of money it earns.\\nYou can also purchase new nodes to expand your Hacknet - The cost for each node increases as your network grows.\\n\\n**Hacknet nodes won't make as much money as basic hacking scripts, and they are not enough to progress alone.**\\n\\nLater in the game, there is a powerful change to the Hacknet system called [Hacknet Servers](../advanced/hacknetservers.md).\\n\";","export default \"# Infiltration\\n\\nInfiltration is a gameplay mechanic that allows you to infiltrate a [Company](companies.md)'s facility to try and steal the [Company](companies.md)'s classified secrets.\\nThese secrets can be sold for money or for [Reputation](reputation.md) with a [Faction](factions.md).\\n\\n## Overview\\n\\nMany companies have facilities that you can attempt to infiltrate.\\nBy infiltrating, you can steal classified [Company](companies.md) secrets and then sell these for money or for [Faction](factions.md) [Reputation](reputation.md).\\nTo try and infiltrate a [Company](companies.md), visit a [Company](companies.md) through the [World](world.md) menu.\\nThere will be an option that says 'Infiltrate [Company](companies.md)'.\\n\\nWhen infiltrating a [Company](companies.md), you will be presented with short active challenges.\\nNone of the challenges use the mouse.\\n\\nThe difficulty at the top lowers with better combat stats and charisma.\\nIt is not recommended to attempt infiltrations above mid-normal.\\n\\nThe `maximum level` is the number of challenges you will need to pass to receive the infiltration reward.\\n\\nEvery time you fail an infiltration challenge, you will take damage based on the difficulty of the infiltration.\\nIf you are reduced to `0` hp or below, the infiltration will immediately end.\\n\\n- Most use spacebar as `action`\\n- Some use WASD or arrows interchangeably.\\n- A few others use the rest of the keyboard.\\n\\n### Slash when his guard is down!\\n\\nPress space when the guard is preparing to attack you.\\n\\nThere are 3 phases:\\n\\n1. guarding - attacking back will result in failure.\\n2. preparing - attacking will result in a victory.\\n3. attacking - the guard will attack you resulting in failure.\\n\\n### Close the brackets\\n\\nEnter all the matching brackets in reverse order.\\n\\n### Type it backward\\n\\nType the words that are written backward.\\n\\n### Say something nice about the guard.\\n\\nUse the arrows to find a compliment for the guard.\\n\\n### Enter the Code!\\n\\nMatch the arrows as they appear.\\n\\n### Match the symbols!\\n\\nMove the cursor to the matching symbol and press space to confirm.\\n\\n### Remember all the mines!\\n\\nAt first, the cursor cannot be moved - remember the positions of the mines. \\nNext, move the cursor and press space to mark the mines on the board.\\n\\n### Cut the wires\\n\\nFollow the instructions and press the numbers `1` through `9` to cut the appropriate\\nwires.\\n\";","export default \"## Programs\\n\\nIn Bitburner \\\"Programs\\\" refer specifically to the list of `.exe` files found in the Programs tab of the side menu.\\n\\nUnlike `.js` [scripts](scripts.md) you write for yourself with Javascript, Programs are supplied to you by Bitburner and are only \\\"programs\\\" in name; they do not require or allow you to access actual lines of code. Instead once you have a Program you will be able to use it directly as a function in the [Terminal](terminal.md) or scripts.\\n\\n [n00dles /]> run BruteSSH.exe\\n [n00dles /]> scan-analyze 10\\n\\nor\\n\\n ns.sqlinject(\\\"n00dles\\\")\\n\\nAfter meeting the [Hacking Skill level](stats.md) threshold shown on each Program, you have the option to Create Program, allowing you to do that as a focused or unfocused activity. The time needed to create a Program generally increases with their level requirement, and scales with your [stats](stats.md).\\n\\nAlternatively, you may also find the same Programs available for purchase by connecting to the in-game `Darkweb`, accessed after finding a tech store in a City and purchasing Tor [(\\\"The Onion Router\\\")]().\\n\";","export default \"# RAM\\n\\nIn Bitburner, RAM determines how many [Scripts](scripts.md) can run on a [Server](servers.md).\\n\\nMultiplying the number of threads a [Script](scripts.md) uses multiplies its RAM cost, but also multiplies the effectiveness of several functions such as `ns.hack()`, `ns.grow()`, and `ns.weaken()`.\\n\\nYou can purchase more RAM for your home computer from tech vendors.\\nYou can also use other purchased or hacked servers as a source of additional RAM.\\n\";","export default \"# Reputation\\n\\nIn order to acquire [Augmentations](augmentations.md) from [Factions](factions.md), you need to earn their trust.\\n\\nThis can be done in a variety of ways, but the most common is offering your services to a [Faction](faction.md).\\nAnother option is to give them intel from [Infiltrations](infiltration.md).\\n\\nWhen installing [Augmentations](augmentations.md), all your reputation gets converted to favor.\\nFavor increases the rate at which reputation is gained with that faction.\\n\\nWith enough favor, donations are unlocked.\\nDonations allow you to spend money to acquire reputation directly.\\nWithout working for the faction.\\nThis feature is particularily useful when a very large amount of reputation is needed for an augmentation.\\n\";","export default \"# Before you start -\\n\\nIt is highly recommended that you have a basic familiarity with programming concepts like [`for`/`while` loops](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for), [conditionals like `if`/`else`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else), [`functions`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions),[`arrays`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) and [`variables`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) before starting to write scripts - but you can start with basic skills and learn with practice.\\n\\nIf you'd like to first learn a bit about programming, see [this page](../programming/learn.md).\\n\\n# Scripts\\n\\nScripts you write in Bitburner are real, working JavaScript and can be used to automate basic hacking logic, and almost any mechanic in the game.\\n\\nRunning any script requires in-game [RAM](ram.md), with a minimum cost of 1.6 GB per script.\\nMore complex scripts and API functions generally require more [RAM](ram.md), which you will gain in many ways.\\nScripts can be run on any [server](server.md) you have root access to, but not all servers you find will have useable RAM.\\n\\n## How Scripts work offline\\n\\nBeing actual JavaScript, Bitburner also contains some quirks and limitations.\\nFor this reason, it is not possible for Bitburner scripts to run the same way at all times.\\nHowever, you will continue to earn money and exp when Bitburner is not running, though at a slower rate.\\nSee [How Scripts Work Offline](../advanced/offlineandbonustime.md) for more details.\\n\\n## Identifying a Script\\n\\nMany commands and functions target other scripts running on the same or a different server.\\nTherefore, there must be a way to specify which script you want to affect.\\n\\nOne way to identify a script is by its unique PID (Process IDentifier).\\nA PID number is returned from `ns.run()`, `ns.exec()`, etc; and is also shown in the output of `ns.ps()`.\\n\\nA second way to identify scripts is by filename, hostname **and** arguments.\\nHowever, you will probably run multiple copies of a script with the same arguments, so this method is not necessarily **unique** to a script.\\nIn case of multiple matches, most functions will return an arbitrary one (typically the oldest).\\n\\nIf searching by filename, arguments must be an **exact** match - both the order and [type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof) of the arguments you supply matter.\\n\\n## Referencing Other Scripts\\n\\nIn order to reference a file, `functions` require the **full** absolute file path.\\nFor example\\n\\n ns.run(\\\"/scripts/hacking/helpers.myHelperScripts.js\\\");\\n ns.rm(\\\"/logs/myHackingLogs.txt\\\");\\n ns.rm(\\\"thisIsAFileInTheRootDirectory.txt\\\");\\n\\nA full file path **must** begin with a forward slash (/) if that file is not in the root directory.\\nFor details on references in terminal commands, see [Terminal](terminal.md).\\n\\n## Script Arguments\\n\\nWhen running a script, you can use [flags](https://github.com/bitburner-official/bitburner-src/blob/bec737a25307be29c7efef147fc31effca65eedc/markdown/bitburner.ns.flags.md) and [arguments](https://github.com/bitburner-official/bitburner-src/blob/bec737a25307be29c7efef147fc31effca65eedc/markdown/bitburner.ns.args.md), which the script's logic can access and act on, allowing flexibility in your script designs. For example allowing you to get different results or attack different targets without re-writing your code:\\n\\n $ run hack.js \\\"harakiri-sushi\\\"\\n $ run hack.js \\\"silver-helix\\\"\\n\\n## Multithreading scripts\\n\\nA script can be run with multiple threads, which we call \\\"multithreading.\\\"\\nMultithreading affects every call to the `ns.hack()`, `ns.grow()`, and `ns.weaken()` methods, multiplying their effects by the number of threads used.\\nFor example, if a script run with 1 thread is able to hack $10,000, then running the same script with 5 threads would hack $50,000.\\n\\n[Note -- Scripts will not actually become multithreaded in the real-world sense - Javascript is a \\\"single-threaded\\\" coding language.]\\n\\nWhen \\\"multithreading\\\" a script, the total [RAM](ram.md) cost can be calculated by simply multiplying the [RAM](ram.md) cost of a single instance of your script by the number of threads you will use. [See [`ns.getScriptRam()`](https://github.com/bitburner-official/bitburner-src/blob/bec737a25307be29c7efef147fc31effca65eedc/markdown/bitburner.ns.getscriptram.md) or the `mem` terminal command detailed below]\\n\\n## Working with Scripts in Terminal\\n\\nHere are some [terminal](terminal.md) commands you will find useful when working with scripts:\\n\\n**check [script] [args...]**\\n\\nPrints the logs of the script specified by the name and arguments to [Terminal](terminal.md).\\nRemember that scripts are uniquely identified by their arguments as well as their name, and\\nArguments should be separated by a space.\\nFor example, if you ran a script `foo.js` with the argument `foodnstuff` then in order to 'check' it you must also add `foodnstuff` as an argument for the `check` command:\\n\\n $ check foo.js foodnstuff\\n\\n**free**\\n\\nShows the current server's [RAM](ram.md) usage and availability\\n\\n**kill [pid]** or **kill [script] [args...]**\\n\\nStops a script that is running with the specified PID, or script name and arguments.\\nRemember that scripts are identified by their arguments as well as their name, and\\nArguments should be separated by a space.\\nFor example, if you ran a script `foo.js` with the arguments `1` and `2`, then just typing `kill foo.js` will not work.\\nInstead use:\\n\\n $ kill foo.js 1 2\\n\\n**mem [script] [-t] [n]**\\n\\nCheck how much [RAM](ram.md) a script requires to run with \\\"n\\\" threads\\n\\n $ mem [scriptname] -t n\\n $ mem hack.js -t 500\\n\\n**nano [script]**\\n\\nCreate/Edit a script.\\nThe name of a script must end with `.js`, but you can also create `.txt` files.\\n\\n**ps**\\n\\nDisplays all scripts that are actively running on the current [server](servers.md)\\n\\n**rm [script]**\\n\\nPermanently delete a script from the [server](servers.md). Can only be undone with a save import.\\n\\n**run [script] [-t] [n] [args...]**\\n\\nRun a script with n threads and the specified arguments.\\nEach argument should be separated by a space.\\nBoth the thread count and arguments are optional.\\nIf neither are specified, then the script will be run with a single thread and no arguments.\\n\\nExamples:\\n\\nRun `foo.js` single-threaded with no arguments::\\n\\n $ run foo.js\\n\\nRun `foo.js` with 10 threads and no arguments:\\n\\n $ run foo.js -t 10\\n\\nRun `foo.js` single-threaded with three arguments: `[foodnstuff, sigma-cosmetics, 10]`:\\n\\n $ run foo.js foodnstuff sigma-cosmetics 10\\n\\nRun `foo.js` with 50 threads and a single argument: `foodnstuff`:\\n\\n $ run foo.js -t 50 foodnstuff\\n\\n**tail [pid]** or **tail [script] [args...]**\\n\\nDisplays the logs of the script specified by the PID or filename and arguments.\\nRemember that scripts are identified by their arguments as well as their filename.\\nFor example, if you ran a script `foo.js` with the argument `foodnstuff`, in order to `tail` it you must also add the `foodnstuff` argument to the `tail` command as so:\\n\\n $ tail foo.js foodnstuff\\n\\n**top**\\n\\nPrints all scripts running on the server and their [RAM](ram.md) usage.\\n\\n $ top\\n\";","export default \"# Servers\\n\\nIn this game, a server refers to a computer that can be connected to, accessed, and manipulated through the [Terminal](terminal.md).\\nAll servers in the game are connected to each other to form a large, global network.\\nTo learn about how to navigate this network and connect to other servers, see the [terminal](terminal.md) page.\\n\\n## Server Statistics\\n\\nEach server has its own statistics, such as [RAM](ram.md), required hacking level, and number of ports required to successfully `NUKE` it.\\n\\nPerhaps the most important property of a server to make note of is its [RAM](ram.md), which refers to how much memory is available on that machine. [RAM](ram.md) is important because it is required to run [Scripts](scripts.md).\\nMore [RAM](ram.md) allows the user to run more powerful and complicated [scripts](scripts.md), as well as executing scripts with more threads.\\n\\nThe `free`, `scan-analyze`, and `analyze` [Terminal](terminal.md) commands can be used to check how much [RAM](ram.md) a server has.\\n\\nSome servers have some randomized statistics, such as [RAM](ram.md), max Money, or required hacking level.\\nThese statistics are randomly generated from a range of values.\\n\\n## Identifying Servers\\n\\nA server is identified by its hostname.\\nA hostname is a label assigned to a server.\\nA hostname will usually give you a general idea of what the server is.\\nFor example, the company Nova Medical might have a server with the hostname `nova-med`.\\n\\nHostnames are unique.\\nThis means that if one server has the the hostname `some-server`, then no other server in the game can have that that hostname.\\n\\nThere are many `functions` and [terminal](terminal.md) commands in the game that will require you to target a specific server by hostname.\\n\\n## Player-owned Servers\\n\\nThe player starts with a single server: his/her home computer.\\nThis server will have the hostname `home`.\\nThe player's home computer is special for a variety of reasons:\\n\\n- The home computer's [RAM](ram.md) can be upgraded.\\n This can be done by visiting certain locations in the [World](world.md).\\n- The home computer persists through [Augmentation](augmentations.md) installations.\\n This means that you will not lose any [RAM](ram.md) upgrades or [Scripts](scripts.md) on your home computer when you install [Augmentations](augmentations.md)\\n (you will, however, lose programs and messages on your home computer).\\n\\nThe player can also purchase additional servers.\\nThis can be done by visiting certain locations in the [World](world.md), or it can be done automatically through a script using the `purchaseServer` function.\\nThe advantage of purchased servers is that, in terms of [RAM](ram.md), they are cheaper than upgrading your home computer.\\nThe disadvantage is that your purchased servers are lost when you install [Augmentations](augmentations.md).\\n\\n## Hackable Servers\\n\\nMost servers that are not owned by the player can be [hacked](hacking.md) for money and exp.\\n\\nDifferent servers have different levels of security, but also offer different rewards when being hacked.\\n\\n## Server Connections\\n\\nThe servers are in a randomly organized tree-structure.\\nThe distance from the home computer to each server is fixed, but the exact route to them is randomized when you install [augmentations](augmentations.md).\\nIn general, the further away from home computer a server is the higher its statistics are.\\n\";","export default \"Below are some of the stats that will increase with play and reset during augmentation installs as you progress through the game.\\nYour stats can be found in the Overview panel, the Stats subpage of the sidemenu, or with API methods like `ns.getPlayer()`.\\n\\n## Hack Skill\\n\\nFor many aspects of Bitburner, increasing your Hack skill will be an important goal. Primarily affected by the efficiency of your hacking strategies, you will also be offered [Augmentations](augmentations.md) that greatly enhance your Hack Skill level and how effective its results are.\\n\\nAffects:\\n\\n- Time needed to execute `hack`, `grow`, or `weaken` and similar methods\\n- Your chance to successfully hack a server\\n- Percent of a server's money stolen when hacking it\\n- Success rate of certain [crimes](crimes.md)\\n- Time needed to create a [Program](programs.md)\\n- [Faction](factions.md) [Reputation](reputation.md) gain when carrying out Hacking Contracts or Field Work\\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\\n\\nGain Hack experience by:\\n\\n- Manually hacking servers through the [Terminal](terminal.md)\\n- Using `ns.hack()`, `ns.grow()`, or `ns.weaken()` through scripts\\n- Committing certain [crimes](crimes.md)\\n- Carrying out Hacking Contracts or doing Field work for [Factions](factions.md)\\n- Some [Company](companies.md) jobs and other types of work\\n- Studying at a university\\n\\n## Combat Skills\\n\\n### Strength, Defense, Dexterity, and Agility\\n\\nThese represent your physical skill and attributes, including your ability to sneak, inflict or endure damage, and pull off high precision tasks. Similar to your Hack skill, you will be offered [Faction](factions.md) [Augmentations](augmentations.md) to multiplicatively enhance your Combat Skills and exp gain.\\n\\nAffects:\\n\\n- HP scales with Defense. Infiltration and some jobs may cause you to take damage.\\n- Success rate of certain [crimes](crimes.md)\\n- [Faction](factions.md) [Reputation](reputation.md) gain for Security and Field Work\\n- [Company](companies.md) [Reputation](reputation.md) gain for certain jobs\\n\\nGain experience by:\\n\\n- Working out at a gym\\n- Committing certain [crimes](crimes.md)\\n- Doing Security or Field Work for a [Faction](factions.md)\\n- Working certain jobs at a [Company](companies.md)\\n\\n## Charisma\\n\\nRarely as useful as Hacking and Physical skills, Charisma can help get a company job, gain trust, or calm chaos in social situations.\\n\\nCharisma can also be enhanced with [Augmentations](augmentations.md).\\n\\nAffects:\\n\\n- Success rate of certain [crimes](crimes.md)\\n- [Faction](factions.md) [Reputation](reputation.md) gain for Field Work\\n- [Company](companies.md) [Reputation](reputation.md) gain for most jobs\\n\\nGain experience by:\\n\\n- Committing certain [crimes](crimes.md)\\n- Studying at a university\\n- Working certain jobs at a [Company](companies.md)\\n- Doing Field work for a [Faction](factions.md)\\n\\n### Other Stats and abilities are available in later stages of the game.\\n\";","export default \"# Stock Market\\n\\nThe Stock Market refers to the World Stock Exchange (WSE), through which you can buy and sell stocks in order to make money.\\n\\nThe WSE can be found in the `City` tab, and is accessible in every city.\\n\\n## Fundamentals\\n\\nThe Stock Market is not as simple as \\\"buy at price X and sell at price Y\\\".\\nThe following are several fundamental concepts you need to understand about the stock market.\\n\\nFor those that have experience with finance/trading/investing, please be aware that the game's stock market does not function exactly like it does in the real world.\\nSo these concepts below should seem similar, but won't be exactly the same.\\n\\n## Positions: Long vs Short\\n\\nWhen making a transaction on the stock market, there are two types of positions: Long and Short.\\nA Long position is the typical scenario where you buy a stock and earn a profit if the price of that stock increases.\\nMeanwhile, a Short position is the exact opposite.\\nIn a Short position, you purchase shares of a stock and earn a profit if the price of that stock decreases.\\nThis is also called 'shorting' a stock.\\n\\nShorting stocks is not available immediately, and must be unlocked later in the game.\\n\\n## Forecast & Second-Order Forecast\\n\\nA stock's forecast is its likelihood of increasing or decreasing in value.\\nThe forecast is typically represented by its probability of increasing in either a decimal or percentage form.\\nFor example, a forecast of `70%` means the stock has a `70%` chance of increasing and a `30%` chance of decreasing.\\n\\nA stock's second-order forecast is the target value that its forecast trends towards.\\nFor example, if a stock has a forecast of `60%` and a second-order forecast of `70%`, then the stock's forecast should slowly trend towards `70%` over time.\\nHowever, this is determined by RNG so there is a chance that it may never reach `70%`.\\n\\nBoth the forecast and the second-order forecast change over time.\\n\\nA stock's forecast can be viewed after purchasing Four Sigma (4S) Market Data access.\\nThis lets you see the forecast info on the Stock Market UI.\\nIf you also purchase access to the 4S Market Data TIX API, then you can view a stock's forecast using the `getStockForecast` function.\\n\\nA stock's second-order forecast is always hidden.\\n\\n## Spread (Bid Price & Ask Price)\\n\\nThe **bid price** is the maximum price at which someone will buy a stock on the stock market.\\n\\nThe **ask price** is the minimum price that a seller is willing to receive for a stock on the stock market\\n\\nThe ask price will always be higher than the bid price (This is because if a seller is willing to receive less than the bid price, that transaction is guaranteed to happen).\\nThe difference between the bid and ask price is known as the **spread**.\\nA stock's \\\"price\\\" will be the average of the bid and ask price.\\n\\nThe bid and ask price are important because these are the prices at which a transaction actually occurs.\\nIf you purchase a stock in the long position, the cost of your purchase depends on that stock's ask price.\\nIf you then try to sell that stock (still in the long position), the price at which you sell is the stock's bid price.\\nNote that this is reversed for a short position.\\nPurchasing a stock in the short position will occur at the stock's bid price, and selling a stock in the short position will occur at the stock's ask price.\\n\\n## Transactions Influencing Stock Forecast\\n\\nBuying or selling a large number of shares of a stock will influence that stock's forecast & second-order forecast.\\nThe forecast is the likelihood that the stock will increase or decrease in price.\\nThe magnitude of this effect depends on the number of shares being transacted.\\nMore shares will have a bigger effect.\\n\\nThe effect that transactions have on a stock's second-order forecast is significantly smaller than the effect on its forecast.\\n\\n## Order Types\\n\\nThere are three different types of orders you can make to buy or sell stocks on the exchange:\\nMarket Order, Limit Order, and Stop Order.\\n\\nLimit Orders and Stop Orders are not available immediately, and must be unlocked later in the game.\\n\\nWhen you place a Market Order to buy or sell a stock, the order executes immediately at whatever the current price of the stock is.\\nFor example if you choose to short a stock with 5000 shares using a Market Order, you immediately purchase those 5000 shares in a Short position at whatever the current market price is for that stock.\\n\\nA Limit Order is an order that only executes under certain conditions.\\nA Limit Order is used to buy or sell a stock at a specified price or better.\\nFor example, lets say you purchased a Long position of 100 shares of some stock at a price of $10 per share.\\nYou can place a Limit Order to sell those 100 shares at $50 or better.\\nThe Limit Order will execute when the price of the stock reaches a value of $50 or higher.\\n\\nA Stop Order is the opposite of a Limit Order.\\nIt is used to buy or sell a stock at a specified price (before the price gets 'worse').\\nFor example, lets say you purchased a Short position of 100 shares of some stock at a price of $100 per share.\\nThe current price of the stock is $80 (a profit of $20 per share).\\nYou can place a Stop Order to sell the Short position if the stock's price reaches $90 or higher.\\nThis can be used to lock in your profits and limit any losses.\\n\\nHere is a summary of how each order works and when they execute:\\n\\n**In a LONG Position:**\\n\\nA Limit Order to buy will execute if the stock's price <= order's price\\n\\nA Limit Order to sell will execute if the stock's price >= order's price\\n\\nA Stop Order to buy will execute if the stock's price >= order's price\\n\\nA Stop Order to sell will execute if the stock's price <= order's price\\n\\n**In a SHORT Position:**\\n\\nA Limit Order to buy will execute if the stock's price >= order's price\\n\\nA Limit Order to sell will execute if the stock's price <= order's price\\n\\nA Stop Order to buy will execute if the stock's price <= order's price\\n\\nA Stop Order to sell will execute if the stock's price >= order's price.\\n\\n## Player Actions Influencing Stocks\\n\\nIt is possible for your actions elsewhere in the game to influence the stock market.\\n\\n### Hacking\\n\\nIf a server has a corresponding stock (e.g. _foodnstuff_ server -> FoodNStuff stock), then hacking that server can decrease the stock's second-order forecast.\\nThis causes the corresponding stock's forecast to trend downwards in value over time.\\n\\nThis effect only occurs if you set the stock option to true when calling the `hack` function.\\nThe chance that hacking a server will cause this effect is based on what percentage of the server's total money you steal.\\n\\nA single hack will have a minor effect, but continuously hacking a server for lots of money over time will have a noticeable effect in making the stock's forecast trend downwards.\\n\\n### Growing\\n\\nIf a server has a corresponding stock (e.g. `foodnstuff` server -> FoodNStuff stock), then growing that server's money can increase the stock's second-order forecast.\\nThis causes the corresponding stock's forecast to trend upwards in value over time.\\n\\nThis effect only occurs if you set the `stock` option to true when calling the `grow` function.\\nThe chance that growing a server will cause this effect is based on what percentage of the server's total money to add to it.\\n\\nA single grow operation will have a minor effect, but continuously growing a server for lots of money over time will have a noticeable effect in making the stock's forecast trend upwards.\\n\\n### Working for a Company\\n\\nIf a [Company](companies.md) has a corresponding stock, then working for that [Company](companies.md) will increase the corresponding stock's second-order forecast.\\nThis will cause the stock's forecast to (slowly) trend upwards in value over time.\\n\\nThe potency of this effect is based on how effective you are when you work (i.e. it's based on your stats and multipliers).\\n\\n## Automating the Stock Market\\n\\nYou can write scripts to perform automatic and algorithmic trading on the Stock Market.\\nSee [TIX API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md) for more details.\\n\\n## Under the Hood\\n\\nStock prices are updated every ~6 seconds.\\n\\nWhether a stock's price moves up or down is random.\\nHowever, stocks have properties that can influence the way their price moves.\\nThese properties are hidden, although some of them can be made visible by purchasing the Four Sigma (4S) Market Data upgrade.\\nSome examples of these properties are:\\n\\n- Volatility\\n- Likelihood of increasing or decreasing (i.e. the stock's forecast)\\n- Likelihood of forecast increasing or decreasing (i.e. the stock's second-order forecast)\\n- How easily a stock's price/forecast is influenced by transactions\\n- Spread percentage\\n- Maximum price (not a real maximum, more of a \\\"soft cap\\\")\\n\\nEach stock has its own unique values for these properties.\\n\\n## Offline Progression\\n\\nThe Stock Market does not change or process anything while the game has closed.\\nHowever, it does accumulate time when offline.\\nThis accumulated time allows the stock market to run `50%` faster when the game is opened again.\\nThis means that stock prices will update every ~4 seconds instead of 6.\\n\";","export default \"# Terminal\\n\\nThe Terminal is a console emulator program that lets you interface with other [Servers](servers.md) in the game.\\nIt can be accessed by clicking the `Terminal` tab on the navigation menu on the left-hand side of the game (you may need to expand the 'Hacking' header in order to see the `Terminal` tab).\\nAlternatively, the shortcut Alt + t can be used to open the Terminal.\\n\\n## Filesystem (Directories)\\n\\nThe Terminal contains a very basic filesystem to help you organize files into different directories.\\nNote that this is **not** a _true_ filesystem implementation and instead relies almost entirely on string manipulation.\\nFor this reason, some features found in real-world filesystems do not exist in our Terminal. For example:\\n\\n- Tab autocompletion does not work with relative paths\\n- **`mv` and `rm` commands only accept full filepaths in their arguments.**\\n **They do not act on directories.**\\n\\nThese features are typically in Linux filesystems and have not yet been added to the game.\\n\\n## Directories\\n\\nIn order to create a directory, simply name a file using a full absolute Linux-style path:\\n\\n /scripts/myScript.js\\n\\nThis will automatically create a \\\"directory\\\" called `scripts`.\\nThis will also work for subdirectories:\\n\\n /scripts/hacking/helpers/myHelperScripts.js\\n\\nFiles in the root directory do not need to begin with a forward slash:\\n\\n thisIsAFileInTheRootDirectory.txt\\n\\nNote that **there is no way to manually create or remove directories.**\\nCreation and deletion of \\\"directories\\\" is automatically handled as you create, rename, or delete files in game.\\n\\n## Absolute vs Relative Paths\\n\\nMany Terminal commands accept both absolute and relative paths for specifying a file.\\n\\nAn absolute path specifies the location of the file from the root directory (/).\\nAny path that begins with the forward slash is an absolute path:\\n\\n $ nano /scripts/myScript.js\\n $ cat /serverList.txt\\n\\nA relative path specifies the location of the file relative to the current working directory.\\nAny path that does **not** begin with a forward slash is a relative path.\\nNote that the Linux-style dot symbols will work for relative paths:\\n\\n . (a single dot) - represents the current directory\\n .. (two dots) - represents the parent directory\\n\\n $ cd ..\\n $ nano ../scripts/myScript.js\\n $ nano ../../helper.js\\n\\nFor additional details about specifying paths and references in scripts, see [Scripts](scripts.md).\\n\\n## Argument Parsing\\n\\nWhen evaluating a terminal command, arguments are initially parsed based on whitespace (usually spaces).\\nEach whitespace character signifies the end of an argument, and potentially the start of new one.\\nFor most terminal commands, this is all you need to know.\\n\\nWhen running scripts, however, it may be important to know specific detail, especially two main points:\\n\\n- Quotation marks can be used to wrap a single argument and force it to be parsed as a string.\\n Any whitespace inside the quotation marks will not cause a new argument to be parsed.\\n- Anything that can represent a number is automatically cast to a number, unless it's surrounded by quotation marks.\\n\\nHere's an example to show how these rules work.\\nConsider the following script `argType.js`:\\n\\n export async function main(ns) {\\n ns.tprint(\\\"Number of args: \\\" + ns.args.length);\\n for (var i = 0; i < ns.args.length; ++i) {\\n ns.tprint(typeof ns.args[i]);\\n }\\n }\\n\\nThen if we run the following terminal command:\\n\\n $ run argType.js 123 1e3 \\\"5\\\" \\\"this is a single argument\\\"\\n\\nWe'll see the following in the Terminal:\\n\\n Running script with 1 thread(s), pid 1 and args: [123, 1000, \\\"5\\\", \\\"this is a single argument\\\"].\\n argType.js: Number of args: 4\\n argType.js: number\\n argType.js: number\\n argType.js: string\\n argType.js: string\\n\\n## Chaining Commands\\n\\nYou can run multiple Terminal commands at once by separating each command\\nwith a semicolon (;). For example:\\n\\n $ run foo.js; tail foo.js\\n\\nChained commands do **not** wait for functions like `hack` or `wget` to finish executing, and so may not always work as expected.\\n\";","export default \"# World\\n\\nIn Bitburner, the world consists of six different cities:\\n\\n- Sector-12 (this is where you start out)\\n- Aevum\\n- Ishima\\n- New Tokyo\\n- Chongqing\\n- Volhaven\\n\\nEach city has its own map and [Factions](factions.md).\\nEach city also offers different services such as gyms, universities, hardware stores, and places of work.\\n\";","export default \"# Changelog\\n\\n## v2.5.0 (10/2/2023)\\n\\n### NOTES\\n\\n(Corporation) Bugfixes in Corporation may cause a large balance shift for this mechanic.\\n\\n### API CHANGES:\\n\\n- ns.print and ns.tprint now handle printing Set and Map objects directly (@ficocelliguy)\\n- ns.spawn can now use a configurable delay instead of always 10 seconds (@muesli4brekkies)\\n- (Corporation) Added CorporationDivisions property to BitNodeMultipliers interface (@Caldwell-74)\\n- (Corporation) Added makesMaterials and makesProducts properties to CorpIndustryData interface (@Caldwell-74)\\n- (Corporation) Added issueNewSharesCooldown property to the CorporationInfo interface (@Caldwell-74)\\n- (Corporation) Significantly lowered ram cost of all corporation functions (@jjclark1982)\\n- (Gang) Added ns.gang.getRecruitsAvailable: Gets the number of additional gang members that can currently be recruited (@myCatsName)\\n- (Gang) Added ns.gang.respectForNextRecruit: Gets the respect threshold for recruiting the next gang member (@myCatsName)\\n- (Gang) Added ns.gang.renameMember: Renames a gang member (@myCatsName)\\n\\n### BUGFIX\\n\\n- Taking a university class no longer gives the player an achievement for working out in a gym (@myCatsName)\\n- Bash keybind ctrl-C clears an ongoing terminal history search (@ncharris93)\\n- (Corporation): Fix bug in valuation calculation (@yichizhng)\\n- (Corporation): Fix bug in share price calculation (@jjclark1982)\\n- (Corporation) \\\"Same sell amount in all cities\\\" works with Products again (@Caldwell-74)\\n- (Hashnet) Buying multiple company favor upgrades at the same time will actually apply them all instead of just one (@aschmider)\\n\\n### OTHER CHANGES\\n\\n- MISC: Improved handling of aliases in the Terminal (@ficocelliguy)\\n- MISC: Improved error messages for ns.getPurchasedServer (@ficocelliguy)\\n- MISC: ns.sleep and ns.asleep now show a formatted time in the script log. (@ficocelliguy)\\n- MISC: Fix an exploit that allowed over 100% utilization of a server's ram (@d0sboots)\\n- MISC: (Bladeburner / Sleeve) Bladeburner training action is available for sleeves (@Zelow79)\\n- MISC: (Gang) Renamed the Territory Warfare mechanic (now referred to as Territory Clashes) to deconflict with the Territory Warfare gang member task (@ficocelliguy)\\n- UI: Infiltration now hides tail windows instead of temporarily removing them from the page. This means position/size will remain as they were before the infiltration, and any React content will remain active instead of being unmounted/remounted (@ficocelliguy)\\n- UI: Faction augmentation page updates more reliably (@zerbosh)\\n- UI: Added a text filter on the Faction Augmentations page (@ficocelliguy)\\n- UI: Improved pagination of Active Scripts page (@Ookamiko, @ficocelliguy)\\n- UI: Icarus message no longer shows repeatedly for players that are in the endgame (@ficocelliguy)\\n- UI: Remove work completion dialogs when performing an augmentation install (@ficocelliguy)\\n- UI: Improve soft reset dialog, and always show dialog when soft resetting (@myCatsName)\\n- UI: While closing, modals no longer update displayed info and become inert (@Snarling)\\n- UI: (Bladeburner) Fix a possible NaN display value in Bladeburner (@zerbosh)\\n- UI: (Corporation) Multiple UI improvements for Corporation (@jjclark1982)\\n- UI: (Corporation) Tweaked some number formatting to look better in Corp and Stats page (@zerbosh)\\n- UI: (Corporation) Market TA no longer has its own dialog box, it's set in the normal sell dialog (@Caldwell-74)\\n- UI: (Corporation) Fix an incorrect value in the party dialog box (@aschmider)\\n- UI: (Corporation) Improved the descriptions for Corporation states (@Caldwell-74)\\n- UI: (Gang) Various UI improvements for Gang (@myCatsName)\\n- DOCS: Improve documentation for ports (@muesli4brekkies)\\n- DOCS: Updated documentation for ns.tail and ns.getScriptLogs to make it clear a PID can be used (@myCatsName)\\n- DOCS: Improve documentation for FilenameOrPID functions (@VictorS)\\n- DOCS: Improved various existing ingame documentation pages (@myCatsName)\\n- DOCS: (Bladeburner / Gang) Added initial ingame documentation for Bladeburner and Gang (@myCatsName)\\n- DOCS: (Bladeburner / Gang) Improve API documentation for Bladeburner and Gang functions (@myCatsName)\\n\\n## v2.4.1 Update (8/26/23)\\n\\n### FEATURE ADDITIONS:\\n\\n- Added \\\"Enable terminal history search with arrow keys\\\" option in Misc options category, inspired by similar functionality in shells like zsh. (@ficocelliguy)\\n\\n### BUGFIX:\\n\\n- Fixed a bug where buying NeuroFlux Governor would buy one less level than expected (@zerbosh)\\n- Fixed an issue that could cause the Coding Contract UI to become unreachable (@myCatsName)\\n- Infiltration: Knowledge of Apollo aug no longer highlights the incorrect wires (@Snarling)\\n\\n### CODEBASE / DOCS / MISC:\\n\\n- Added a new theme \\\"zerenity\\\" (@Zelow79)\\n- Reorganize game constants (@zerbosh)\\n- Reorganize ingame documentation folder structure, simplify documentation bundling (@Snarling)\\n- IP Address coding contract accepts single-quoted entries (@myCatsName)\\n- Updated an outdated message on ns.killall logs (@myCatsName)\\n- Updated documentation for ns.share and ns.getSharePower (@myCatsName)\\n- Removed functions (like ns.getServerRam) are no longer shown when enumerating ns entries. (@Snarling)\\n- Removed more references to ReadTheDocs that remained after 2.4.0 (@hydroflame)\\n- Fixed some typos/spacing (@myCatsName)\\n- Fixed an issue with incorrect React keys in active scripts page (@zornlemma)\\n\\n### API CHANGES (NON-SPOILER)\\n\\n- Added ns.stock.getConstants (@Snarling)\\n- Added ownedAugs and ownedSF properties to return data of ns.getResetInfo (@Snarling)\\n\\n### API CHANGES (SPOILERS):\\n\\n- Added ns.singularity.getAugmentationFactions to provide a list of factions that have a given augmentation (@myCatsName)\\n- ns.corporation.getConstants now has a ram cost of 0 (@Snarling)\\n\\n### OTHER CHANGES (SPOILERS):\\n\\n- Successes for next level is now accurate in the UI for Bladeburner operations (@myCatsName)\\n- ns.sleeve.setToFactionWork no longer allows working for factions the player has not joined (@Snarling)\\n\\n## v2.4.0 - Death to readthedocs\\n\\nNETSCRIPT:\\n\\n- Added ns.getFunctionRamCost\\n- Added run and install identifier\\n\\nCORP:\\n\\n- Add product investment info to API\\n- Prevent issues with invalid materials in warehouse\\n- Update exportMaterial amount to `number | string`\\n- Validate city with office for starting product development\\n\\nDOCUMENTATION:\\n\\n- readthedoc.bitburner.whatever has been fully deprecated.\\n That documentation is now available in-game. This will make\\n documentation easier to maintain and easier to keep locked\\n with the specific version of the game you're playing.\\n It's also in `.md`, which is more common than `.rst`\\n- Add `printRaw` and `tprintRaw` docs\\n- Better docs for `ascension` result\\n- Complete the spec for hamming codes enhancement\\n- Fix example code for `scp`\\n\\nMISC.\\n\\n- Fixed a bug where RAM calculation would be innacurate for near copy of scripts on different servers\\n- Fix mislead error message about ram miscalculation when script contains syntax errors.\\n- Fix bug in calculating faction donation amount\\n- Fix bug where Sleeve would have difficulty doing certain University activities.\\n- Fix regression for crime in progress\\n- Prevent log scrolling on Active Script window drag\\n- show all skills in import save comparison tool\\n- Fix extremely minor calculation error where money drained after hack was being floor()\\n- Fix ram evaluation to include more edge-cases\\n- Fix potential double-free in atExit()\\n\\nCODEBASE:\\n\\n- Work on Enum Helper + Reorganise\\n- enforce eslint react checks\\n- corp code style improvement\\n- Added a lot of typesafety\\n\\n## v2.3.1 - Bugfixes 7 June 2023\\n\\nNETSCRIPT:\\n\\n- Added ns.setTitle, which sets the titlebar of a script's tail window (@d0sboots)\\n- Added ns.getFunctionRamCost, which gets the ramcost of a function (@G4mingJon4s)\\n- ns.ls results will filter as if the filenames have a leading slash (@Snarling)\\n\\nGENERAL / MISC:\\n\\n- Changed tail window buttons into icon buttons, allow setting custom title, and tail window bugfixes. (@d0sboots)\\n- Terminal no longer scrolls to the bottom constantly while an action is being performed (@bezrodnov)\\n- Added a close button to modals (@bezrodnov)\\n- Fixed several issues with script editor tabs (@bezrodnov)\\n- scp terminal command can copy multiple files at once, like help text indicates (@Snarling)\\n- Root directory is no longer displayed as ~ in the terminal prompt, it is displayed as / (@Snarling)\\n- cd with no arguments will change to the root directory (@Snarling)\\n- Documentation updates (various)\\n- Nerf noodle bar\\n\\nHOTFIXES (these were already backported to 2.3.0 before 2.3.1 release):\\n\\n- Several important fixes for savegame migration issues from older version (@d0sboots)\\n- Prevent scripts from loading during intial migration to 2.3.0 save format, to prevent a crash that could occur. (@Snarling)\\n- Fix scp logging (hostname was being logged incorrectly in multiple places and showing as [Object object]) (@Snarling)\\n- Update terminal parsing logic so that the old syntax for alias works again. (@Snarling)\\n- Fix clickable script links from ls command not working outside root directory (@Snarling)\\n- Fix an issue with Find All Valid Math Expressions not accepting empty array when that was the solution. (@Snarling)\\n- Fix an issue with scan-analyze display when the player had AutoLink.exe (@Snarling)\\n- Reverted undocumented change that program filenames were case sensitive for ns.fileExists. They are case insensitive again. (@Snarling)\\n- An issue from pre-2.3 could cause scripts to have the wrong \\\"server\\\" property. This caused issues in 2.3, and a fix now repairs any scripts with a mismatched server property. (@Snarling)\\n- More fixes to help old savegames load correctly (@Snarling)\\n- Servers can no longer have infinite time-to-hack. (@Snarling)\\n\\nSPOILER SECTIONS:\\n\\nSF2:\\n\\n- Overall gang respect gain rate now reads accurately, instead of showing ~10x. (@Snarling)\\n\\nSF3:\\n\\n- Added \\\"maxProducts\\\" property to ns.corporation.getDivision return value (@kateract)\\n- Fixed an issue with sell price parsing for materials (@zerbosh)\\n- Fixed display of market price for materials and products (@zerbosh)\\n- Fixes for Corp import/export issues, such as -IPROD and Smart Supply not working right (@d0sboots)\\n- Improvements to the max-affordable-upgrades calculation (@bezrodnov)\\n- Perform additional validation when setting up an export. Exports are now unique per targeted division+city. (@Snarling)\\n- ns.corporation.cancelExport no longer requires the exported amount (@Snarling)\\n- Fix NaN bug that could impact Robot material in Robotics division (@Snarling, @kateract)\\n- Can no longer commence product development in a city with no office (which would immediately error out the game loop) (@Snarling)\\n- (Hotfix) Fix issue that could lead to SF3 research desync. (@Snarling)\\n- (Hotfix) Fix SF3 \\\"Spring Water\\\" industry (@Snarling)\\n\\nSF4:\\n\\n- Fixed an issue that could cause singularity run-after-reset callback scripts to not launch correctly (@Snarling)\\n\\n## v2.3.0 - SF3 rework and performance improvements (25 May 2023)\\n\\nBREAKING CHANGES: These changes may require changes to your scripts.\\n\\n- Major changes to the SF3 mechanic. See the related section below for more detailed info on the changes.\\n- The same script filename can now be ran multiple times with the same args. If running a script from another script (ns.run/ns.exec/etc), this limitation can be re-imposed with the preventDuplicates RunOption (see general section for info on RunOptions).\\n- The same .js script will now be the same js module whether the script was ran directly or used as an import. This means top-level variables (variables defined outside of any function) are shared across all instances of the script.\\n- The js module for a script will also be reused by any script that has the exact same compiled text, even if that script is on another server or has a different filename. This can lead to unexpected results when using top-level variables.\\n- Some properties removed from ns.getPlayer and added to a separate function ns.getResetInfo. These are still accessible from getPlayer but will produce a warning message the first time they are accessed per game session.\\n- hackAnalyzeThreads now returns -1, instead of 0, when no money can be hacked from the targeted server.\\n- ns.iKnowWhatImDoing has been removed, replaced by ns.tprintRaw for printing custom react content to the terminal (limited support).\\n\\nPERFORMANCE:\\n\\n- Minimize impact of unavoidable memory leak when modules are created, by reusing modules as much as possible (@d0sboots)\\n- Internal data structure changes (@d0sboots, @Snarling)\\n- Fix memory leak when initializing large number of netscript ports (@Snarling)\\n- Improve performance while on the Active Scripts page if many scripts are starting/ending. (@d0sboots)\\n\\nNETSCRIPT GENERAL:\\n\\n- Remove requirement for script args to be unique. This was also related to performance improvements. (@d0sboots)\\n- ns.hackAnalyzeThreads no longer indicates infinity any time a single thread would hack less than $1 (@Snarling)\\n- ns.renamePurchasedServer no longer crashes if player is connected to the server being renamed (@Snarling)\\n- ns.hackAnalyzeThreads now return -1 (instead of 0) if no money can be hacked from the targeted server. (@d0sboots)\\n- Fix a possible infinite atExit loop if a script killed itself. (@Snarling)\\n- Static timestamps of last resets can be obtained via ns.getResetInfo, replacing playtimeSinceLastX from ns.getPlayer (@G4mingJon4s)\\n- Improved support for printing react content directly to the terminal (ns.tprintRaw) or to a script log (ns.printRaw).\\n- Added RunOptions, which can optionally replace the \\\"threads\\\" argument for ns.run/ns.exec/ns.spawn. (@d0sboots)\\n - RunOptions.threads: Provide a thread count (since RunOptions can replace the threads argument)\\n - RunOptions.temporary: Prevents the script execution from being included in the save file.\\n - RunOptions.ramOverride: Provide a static ram cost for the script to override what is calculated by the game. Dynamic ram checking is still enforced.\\n - RunOptions.preventDuplicates: Fail to launch the script if the args are identical to a script already running.\\n\\nGENERAL / MISC:\\n\\n- Fixed a bug that could cause the overview skill bars to become desynced (@d0sboots)\\n- There is now an autoexec setting to specify a script on home to automatically run when loading the game. (@d0sboots)\\n- Monaco script editor updated to a newer version and has more config options available now. (@Snarling)\\n- Improve Electron's handling of external links (@Snarling)\\n- Improved support for ANSI color codes (@d0sboots)\\n- Improved consistency of file paths. Correct names for files no longer start with a / even if they are in a directory. (@Snarling)\\n- All Math Expressions contract no longer accepts wrong answers (@Snarling)\\n- Faction invites now trigger immediately when backdooring a server. (@Snarling)\\n- Fixed issue where duplicate programs could be created. (@Minzenkatze)\\n- UI improvements to create program page (@Minzenkatze)\\n- Fix inconsistency in skill xp to skill level conversion (@hydroflame)\\n- Updated blood donation counter to reflect number of confirmed blood donations. (@hydroflame)\\n- Minor improvements to ram calculation process (@Snarling)\\n- Improved terminal arguments detection (@Snarling)\\n- Improved display for ls terminal command. (@Snarling)\\n- Added more internal tests and improved test quality (@d0sboots)\\n- Various codebase improvements (@Snarling, @d0sboots)\\n- Documentation improvements (Many contributors)\\n- Nerf noodle bar\\n\\nSPOILER SECTIONS:\\n\\nSF2:\\n\\n- Corrected the \\\"Next equipment unlock\\\" text for member upgrades. (@LiamGeorge1999)\\n\\nSF3:\\n\\n- Many Corporation API changes, due to functionality changes and due to property name changes. See documentation for correct usage.\\n- Can now have multiple divisions within the same industry. (@Mughur)\\n- Can now sell a division or sell the entire corporation. (@Mughur)\\n- Product quality now depends on material quality (@Mughur)\\n- Product price can be set separately per-city (@Mughur)\\n- Exports can be set relative to inventory or production (@Mughur)\\n- ns.corporation.getProduct is city-specific (@Mughur)\\n- Bulk purchasing is available from the start (@Mughur)\\n- Can buy multiple upgrades at a time, similar to hacknet node upgrades (@Mughur)\\n- Various UI changes (@Mughur)\\n- Removed happiness from employees (@Mughur)\\n- Coffee renamed to tea (@Mughur)\\n- Training position renamed to intern (@Mughur)\\n- More options for SmartSupply (@Mughur)\\n- Advertising nerf (@Mughur)\\n- Nerfed investors and reduced effectiveness of \\\"fraud\\\" (@Mughur)\\n- Fixed React errors, renamed most corp object properties (@Snarling)\\n- Various other changes (@Mughur, @Snarling)\\n\\nSF4:\\n\\n- Faction invites trigger immediately when running ns.singularity.getFactionInvitations (@Snarling)\\n- Added ns.singularity.getCompanyPositionInfo (@jeek)\\n\\nSF6:\\n\\n- Failing a contract or operation now consumes the action (@Zelow79)\\n\\nSF9:\\n\\n- The SF9.3 bonus is also given to the player when inside of BN9. (@Zelow79)\\n- Adjusted the SF1 bonus for hacknet costs (slight nerf), and raised the SF9 bonus to compensate. (@d0sboots)\\n- Added option to purchase company favor using hashes. (@jeek)\\n\\nSF10:\\n\\n- Sleeve shock recovery now scales with intelligence. (@Tyasuh)\\n- Sleeve kills during crimes count towards numPeopleKilled (@Zelow79)\\n- Fix a misspelled moneySourceTracker call for sleeves (@zerbosh)\\n- ns.sleeve.getTask return value now includes cyclesNeeded where applicable (@Snarling)\\n- Internal type refactoring on Sleeve Work. (@Snarling)\\n\\nSF12:\\n\\n- Fix inconsistency in how BN12 multipliers were calculated\\n\\nSF13:\\n\\n- Improve performance of Stanek's gift update cycle, and rework (buff) bonus time handling. (@Snarling)\\n\\n## v2.2.2 - 21 Feb 2023\\n\\nPLANNED 2.3 BREAKING CHANGES:\\n\\n- 2.3 will include a large planned rework to corporation. This may cause api breaks for any corporation scripts, and there will be large changes in how the corporation mechanic functions.\\n\\nNETSCRIPT API:\\n\\n- Added ns.formatNumber, ns.formatRam, and ns.formatPercent, which allow formatting these types of numbers the same way the game does (@Snarling, See UI section).\\n- Deprecated ns.nFormat. Likely to be removed in 2.3. Now just directly wraps numeral.format (@Snarling)\\n- EXPERIMENTAL CHANGE (may be reverted next patch): BasicHGWOptions now allows specifying a number of additionalMsec. This should allow easier and more reliable coordination\\n of completion times for hack, grow, and weaken. Since this is an experimental change, be prepared for a possible API break next patch if you use this functionality. (@d0sboots)\\n\\n- Corporation API:\\n\\n - Fix bugs with ns.corporation.setAutoJobAssignment. (@zerbosh and @croy)\\n\\n- Formulas API:\\n\\n - Added ns.formulas.hacking.growThreads function (@d0sboots)\\n\\n- Sleeve API:\\n\\n - ns.sleeve.getTask now also includes cyclesWorked for the task types where this applies. (@Zelow79)\\n - Added ns.sleeve.setToIdle function (@Zelow79)\\n\\n- Unsupported API:\\n\\n - Added ns.printRaw - allows printing custom React content to script logs. Use at your own risk, misuse is very likely to cause a crash. (@d0sboots)\\n\\nELECTRON (STEAM) VERSION:\\n\\n- Fix security issue where player scripts were allowed to access any part of the player's filesystem. Now access is limited to the game's 'dist' folder. (@Snarling)\\n\\nSCRIPTS:\\n\\n- Fix an issue where multiple copies of the same script could be launched with same args/same server (@Mughur)\\n- Followup changes to API wrapping from 2.2.1 changes. (@d0sboots)\\n\\nUI:\\n\\n- Add new number formatting code to replace internal use of unmaintained package numeral.js. Added several Numeric Display options. (@Snarling)\\n- Removed ingame donation section. (@hydroflame)\\n- Improve some bladeburner number formatting (@Zelow79)\\n- Added IronMan theme (@MattiYT)\\n- Factions that have not been joined yet will show how many unowned augments they have available. (@Zelow79)\\n- Added more features to dev menu (@Zelow79 and @Snarling)\\n\\nCORPORATION:\\n\\n- Reverted previous change to employee needs. Now they will trend up on their own again. (@d0sboots)\\n- Improvements to how Market TA II works (@d0sboots)\\n- ns.corporation.getOffice return value now includes a totalExperience property. (@Snarling)\\n\\nHACKNET:\\n\\n- Hacknet servers are now named hacknet-server-# instead of hacknet-node-#. (@Tyasuh)\\n- Fix bug related to renaming hacknet servers (@Mughur)\\n\\nGRAFTING:\\n\\n- Bladeburner augs can be grafted if player is in Bladeburner faction (@Tyasuh)\\n\\nDOCUMENTATION\\n\\n- Many documentation updates (@Mughur, @d0sboots, @Snarling, @teauxfu).\\n- Official non-markdown docs are at https://github.com/bitburner-official/bitburner-src/tree/dev/src/Documentation/doc\\n- Official dev version markdown docs are at https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md\\n- Official stable version markdown docs are at https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.ns.md\\n- Dev version documentation is now kept up to date as changes are made. (@Snarling)\\n\\nCODEBASE:\\n\\n- Updated many dependencies (@d0sboots)\\n- Updated lots of the build processes and GitHub workflows. (@Snarling)\\n- Internal refactoring of how BitNode multipliers are stored (@d0sboots)\\n- Added some extra helper function (useRerender hook, positiveInteger ns argument validator). (@Snarling)\\n\\nMISC:\\n\\n- Nerf noodle bar\\n\\n## v2.2.1 Hotfixes\\n\\nHotfix / bugfix:\\n\\n- (@d0sboots) Implemented a new API wrapping solution that prevents the need for binding functions to ns when placing them in a new variable, but maintains and perhaps improves upon the performance gains from the previous v2.2.0 changes.\\n- Fixed some issues with savegames failing to load, or causing the main engine loop to stall after load.\\n- Fixed an issue where .script files were not receiving the correct args when ran\\n- Fixed an issue with sleeve HP calculation\\n- Possible fix for MathJax \\\"Typesetting Failed\\\" errors\\n- There was an issue with Corporations decaying their employees to 0 stats, even though the minimum was supposed to be 5. Moved the variable storing the min decay value to corporation constants, and raised it to 10.\\n- Regenerated documentation at https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md due to corporation changes related to min decay stats.\\n- Faction XP was unintentionally providing 20x the experience gain as it did prior to v2.0. This caused faction work to exceed gym/university as the optimal way to gain experience. Values have been reduced to only about 2x what they were prior to v2.0, and they are no longer better than gym/university.\\n- Fixed an issue where the overview skill bars could be displayed inaccurately based on player multipliers.\\n\\n## v2.2.0 - Jan 2 2023 Development Reboot\\n\\nDev notes\\n\\n- The previous main developer, hydroflame, is stepping back from this project for the foreseeable future. To facilitate this, we've moved the repo to a new location at https://github.com/bitburner-official/bitburner-src.\\n- Sorry for the large number of API breaks in this version. To ease the pain here, attempting to use any of the removed functions will provide an error guiding you to the new replacement function to use instead.\\n\\nBREAKING API CHANGES:\\n\\n- No longer applicable as of v2.2.1! (ns2 only) ns functions use the 'this' value from ns: if you move the function to its own variable off of ns, it needs to be bound to ns. The internal changes that make this necessary led to very large performance gains for running many scripts at once. e.g.:\\n\\n const tprint1 = ns.tprint; // This doesn't work and will error out when calling tprint1();\\n\\n const tprint = ns.tprint.bind(ns); // This works because the 'this' value is preserved.\\n\\n- ns.getPlayer no longer provides properties tor, inBladeburner, or hasCorporation. This information can be looked up using standlone functions: ns.hasTorRouter(), ns.bladeburner.inBladeburner(), ns.corporation.hasCorporation().\\n- Removed many functions, with replacement ways to get the same info.\\n\\n - getServerRam: use getServerMaxRam and getServerUsedRam instead.\\n - corporation.assignJob: use setAutoJobAssignment instead.\\n - corporation.getEmployee: No longer available (employees are not individual objects).\\n - corporation.getExpandCityCost: use ns.corporation.getConstants().officeInitialCost\\n - corporation.getExpandIndustryCost: use getIndustryData instead.\\n - corporation.getIndustryTypes: use ns.corporation.getConstants().industryNames\\n - corporation.getMaterialNames: use ns.corporation.getConstants().materialNames\\n - corporation.getPurchaseWarehouseCost: use ns.corporation.getConstants().warehouseInitialCost\\n - corporation.getResearchNames: use ns.corporation.getConstants().researchNames\\n - corporation.getUnlockables: use ns.corporation.getConstants().unlockNames\\n - corporation.getUpgradeNames: use ns.corporation.getConstants().upgradeNames\\n - formulas.work.classGains: split into universityGains and gymGains\\n - singularity.getAugmentationCost: use getAugmentationPrice and getAugmentationRepReq instead\\n - sleeve.getSleeveStats: use getSleeve instead\\n - sleeve.getInformation: use getSleeve instead\\n\\n- An error dialog will inform the player of the above API changes if the player tries to use one of the removed functions above.\\n- enums.toast was renamed ToastVariant to provide consistency with internal code.\\n\\n- codingcontract.attempt always returns a string (empty string for a failed attempt). This may break player code if a direct boolean comparison (e.g. 'attemptResult === true') was being made. The string can be used directly as the conditional, because empty string evaluates to false as a boolean.\\n\\n- corporation.getCorporation().divisions now returns an array of division names, instead of division objects. Use corporation.getDivision(name) to get the division info object.\\n\\nDEVELOPMENT\\n\\n- Development repo moved to https://github.com/bitburner-official/bitburner-src\\n- Dev version available on web at https://bitburner-official.github.io/bitburner-src/\\n- Development is active again for non-bugfix.\\n- A bunch of fixes, setup, and assistance related to moving to a new repo (@hydroflame)\\n\\nTUTORIAL\\n\\n- Removed NS1/NS2 selection. Tutorial now only references .js files (NS1 is essentially deprecated) (@Mughur)\\n- Fix Ram Text (by @jaculler)\\n\\nNETSCRIPT\\n\\n- Base NS API:\\n - More enums and more types are exposed to the player instead of \\\"magic strings\\\", as type documentation and on ns.enums.\\n - Added ns.pid property to access a script's PID without a function call. (@jeek)\\n - Much faster API wrapping on script launch. (@d0sboots) To support this, ns functions need to keep their \\\"this\\\" value from their parent object.\\n - tFormat: Fix display for negative time\\n - ns.getPlayer: removed tor, inBladeburner, and hasCorporation properties\\n - Added ns.hasTorRouter() function.\\n- Coding Contract API\\n - ns.codingcontract.attempt always returns a string. (@Snarling)\\n- Corporation API\\n - Removed ns.corporation.getEmployee and ns.corporation.assignJob, due to employees no longer being objects.\\n - Added ns.corporation.hasCorporation()\\n - Reworked how ram costs are applied for corporation.\\n- Formulas API\\n - ns.formulas.work.classGains removed, replaced with ns.formulas.work.universityGains and ns.formulas.work.gymGains (@Snarling)\\n - Add ns.formulas.work.companyGains function (@AlexeyKozhemiakin)\\n- Ports\\n - added portHandle.nextWrite() (@LJNeon)\\n - Make ns.writePort synchronous (@Snarling)\\n- Sleeve API\\n - ns.sleeve.getSleeve added. getPlayer and getSleeve can both be used for formulas. (@Snarling)\\n - getSleeve also includes storedCycles (i.e. bonusTime) (@zerbosh)\\n- Stock API\\n - ns.stock.getOrganization added for getting org from stock symbol (@SamuraiNinjaGuy)\\n\\nSCRIPTS\\n\\n- Fixed bug where zombie scripts could be created after a soft reset (@Snarling)\\n- Scripts now have a maximum ram cost of 1024GB per thread.\\n\\nSCRIPT LOGS\\n\\n- Add ctrl-a support for selecting all text in tail window (@Snarling)\\n\\nCORPORATION\\n\\n- Remove corp employees as objects (by @Kelenius)\\n- API access is provided automatically if the player is in BN3. (@zerbosh)\\n- Happiness/Energy/Morale trend down even for productive corps (by @Snarling)\\n- Typo fixes in modals to sell materials and products (by @quacksouls)\\n- Reworked MP formula validation to prevent possible save corruption on invalid entry (by @Snarling)\\n- Internal reorganization of Industry data (by @Snarling)\\n- Added check to material buy amount (by @G4mingJon4s)\\n- Check there is room to make a new product before opening popup. (by @G4mingJon4s)\\n- Fix typos in research descriptions (by @quacksouls)\\n\\nSLEEVE\\n\\n- Fixed inconsistencies in how sleeve work rewards are handled. (by @Snarling)\\n- Fix bug that prevented selecting some crimes from UI. (by @Snarling)\\n- Internally shock starts at 100 and lowers to 0. Previously this was backwards.\\n\\nSTOCKMARKET\\n\\n- Fix broken initializer when manually buying WSE access (by @Snarling)\\n\\nTERMINAL\\n\\n- Added changelog command to re-display the changelog dialog.\\n- Connect command will connect to player owned servers from anywhere. (by @Snarling)\\n\\nUI\\n\\n- Improve UI performance of sidebar and character overview using memoization (@d0sboots)\\n- Other UI additions / improvements (@Mughur, @d0sboots, probably others)\\n- Fixed spacing of text in Trade for reputation button after Infiltration (by @PyroGenesis)\\n- Fix spacing on ANSI background escape codes (by @Snarling)\\n- Fix several instances where newlines were not being displayed properly (by @quacksouls)\\n- SoftResetButton.tsx Tooltip changed to make more sense (by @rai68)\\n- GANG: Fix Gang UI to correctly report the bonus time multiplier as 25x (by @TheMas3212)\\n- Change formatting for skill levels to use localeStr (@G4mingJon4s)\\n\\nDOC\\n\\n- Fix incorrect examples for grow (by @quacksouls)\\n- Updated limitMaterialProduction() and limitProductProduction() documentation to mention removing limits. (by @PyroGenesis)\\n- Add ns documentation for possible sleeve tasks (by @Snarling)\\n- Update documentation for workForFaction and workForCompany (by @quacksouls)\\n- Improve CCT documentation for HammingCodes (by @quacksouls)\\n- cleanup in doc of Netscript functions (by @quacksouls)\\n- Various other doc fixes (by @quacksouls)\\n- Update documentation for ns.args (by @Snarling)\\n- De-uglify ns.print examples (by @LJNeon)\\n\\nSTATS\\n\\n- Fix logic for increasing HP based on defense skill levels (by @mattgarretson)\\n- Fix a bug where HP could be something other than max after a bitnode reset.\\n\\nINFILTRATION\\n\\n- Fix SlashGame scaling. (by @Snarling)\\n\\nGANG\\n\\n- When starting a gang, any in progress work with that faction will end. (@G4mingJon4s)\\n\\nMISC\\n\\n- Lots of typesafety improvements with internal code\\n- Remove google analytics (@hydroflame)\\n- Some error handling streamlining (by @Snarling)\\n- fix: check both ts and js source now (by @Tanimodori)\\n- chore: sync version in package-lock.json (by @Tanimodori)\\n- Better safety when loading game for multiple save corruption issues (by @Snarling)\\n- Nerf Noodle bar\\n\\n## v2.1.0 - 2022-09-23 Remote File API\\n\\nDev note\\n\\n- The most important change about this update is the introduction of the Remote File API (RFA).\\n With this we also deprecate the HTTP file API and the Visual Studio extension. Those things\\n were made during the rush of Steam and aren't well thought out. This new process works with\\n both the web and Steam version of the game and every text editor. Moving forward we also\\n won't be doing much, if any, upgrades to the in-game editor. We think it's good enough for\\n now and if you need more we recommend you hook up your favorite external editor.\\n\\n--- NEW FEATURES ---\\n\\n- New Remote File API for transmitting files to the game (by @Hoekstraa)\\n- Added a new Augmentation, Z.O.Ë., which allows Sleeves to benefit from Stanek.\\n\\n--- FIXES ---\\n\\nAPI\\n\\n- Remove incorrectly placed 's' in ns.tFormat() (by @LJNeon)\\n- More ports (previously max 20, now practically unlimited) (by @Hoekstraa)\\n- Corp functions now return copy of constant arrays instead of the original (by @Mughur)\\n- All the player sub-objects need to be copied for `getPlayer`. (by @MageKing17)\\n- add corp get functions, UI (by @Mughur)\\n- destroyW0r1dD43m0n now properly gives achievements\\n- favor now properly syncs across pages and the Donate achievement is now given correctly (by @Aerophia)\\n- getCrimeStats use bitnode multipliers in the output of crime stats (by @phyzical)\\n- add singularity function for exporting game save back (by @phyzical)\\n\\nCODING CONTRACTS\\n\\n- inconsistent probability for generation between online and offline (by @quacksouls)\\n- Don't stringify answer if already a string (by @alainbryden)\\n- change input handling for contract attempts (by @Snarling)\\n\\nCORPORATION\\n\\n- Bunch of corporation fixes (by @Mughur)\\n- Gave investors some economics classes (by @Mughur)\\n- Limit shareholder priority on newly issued shares (by @Undeemiss)\\n- dont take research points for something already researched via api (by @phyzical)\\n\\nCORPORATION API\\n\\n- Fix up param order for limitProductProduction to match docs (by @phyzical)\\n- Expose exports from Material (by @Rasmoh)\\n\\nDOCUMENTATION\\n\\n- update docs a bit more, amending some BN and SF texts (by @Mughur)\\n- Fixed Argument order for scp() (by @njalooo)\\n- Some typo fixes in Netscript functions (by @quacksouls)\\n- Why use Coding Contract API (by @quacksouls)\\n- typo fix in description of Caesar cipher (by @quacksouls)\\n- typo fix in terminal.rst (by @BugiDev)\\n- Update bitburner.sleeve.settobladeburneraction.md (by @borisflagell)\\n- Correct documentation for `run()` with 0 threads. (by @MageKing17)\\n- Some doc updates (by @Mughur)\\n- fix documentation for remote api (by @hydroflame)\\n\\nNETSCRIPT\\n\\n- Added functions to resize, move, and close tail windows\\n- ns.exit now exits immediately (by @Snarling)\\n- Fix dynamic ram check (by @Snarling)\\n- ns1 wraps deeper layers correctly. (by @Snarling)\\n- Prevent bladeburner.setActionLevel from setting invalid action levels (by @MPJ-K)\\n- Typo fixes in CodingContract, Hacknet, Singularity APIs (by @quacksouls)\\n- Fix a typo in doc of Singularity.travelToCity() (by @quacksouls)\\n- Update netscript definition file for scp, write, read, and flags (by @Snarling)\\n- Correct missing ! for boolean coercion in Corporation.createCorporation(). (by @Risenafis)\\n- Normalized Stock API logging (by @Snarling)\\n- allow null duration in toast ns function (by @RollerKnobster)\\n- Correct missing `!` for boolean coercion in `singularity.workForCompany()`. (by @MageKing17)\\n- ns.scp and ns.write are now synchronous + fix exec race condition (by @Snarling)\\n- atExit now allows synchronous ns functions (by @Snarling)\\n- Improve real life CPU and memory performance of scripts. (by @Snarling)\\n- Prompt Add user friendly message to avoid throwing recovery screen for invalid choices (by @phyzical)\\n- Rerunning a script from tail window recalculates ram usage (by @Snarling)\\n- The correct script will be closed even if the player modifies args (v2.0) (by @Snarling)\\n- Corrected ns formula for infiltration rewards (by @ezylot)\\n- Add singularity check for finishing company work (by @Snarling)\\n\\nSLEEVES\\n\\n- Allow using the regeneration chamber with sleeves to heal them. (by @coderanger)\\n- fix crash when player tries to assign more than 3 sleeves to Bladeburner contracts (by @Snarling)\\n- Sleeves no longer crash when player quits company sleeve was working (by @Snarling)\\n- Sleeve crime gain bitnode multiplier fix (by @Mughur)\\n\\nREMOTE FILE API\\n\\n- NetscriptDefinitions retains export strings (by @Hoekstraa)\\n- Fix type of RFAMessages with non-String results (by @Hoekstraa)\\n\\nUI\\n\\n- add a setting to display middle time unit in Time Elapsed String (by @hydroflame)\\n- fix incorrect experience display in Crime UI. (by @SilverNexus)\\n- Bitnode stats now show if BB/Corporation are disabled (by @Kelenius)\\n- Removed three empty lines from BB status screen (by @Kelenius)\\n- Add missing space to BN7 description (by @hex7cd)\\n- Improvements to crime work UI (by @Kelenius)\\n- Script Editor more responsive on resize, and fix dirty file indicator (by @Snarling)\\n\\nMISC\\n\\n- Added weight to GangMemberTask construction call (by @ezylot)\\n- Fix ANSI display bugs (by @Snarling)\\n- Debounce updateRAM calls in script editor. (by @Snarling)\\n- Allow characters & and ' in filenames (by @Snarling)\\n- Corrected tutorial text (by @mihilt)\\n- Fix infil definitions.d.ts (by @phyzical)\\n- Modify PR template (by @Hoekstraa)\\n- crime gains, sleeve gang augs and faq (by @Mughur)\\n- Preventing server starting security level from going above 100 (by @Shiiyu)\\n- Adds Shadows of Anarchy (by @Lagicrus)\\n- Added intormation about hacking managers to hacking algorithms page (by @Kelenius)\\n- Fix Jest CI Error (by @geggleto)\\n- multiple hasAugmentation checks didn't check if the augment was installed (by @Mughur)\\n- & (by @G4mingJon4s)\\n- Adds info regarding augments and focus (by @Lagicrus)\\n- Removed console.log line (by @dhosborne)\\n- Update some doc (by @hydroflame)\\n- trying to fix int problems (by @hydroflame)\\n- Fix broken ns filesnames (by @hydroflame)\\n- new formula functions (by @hydroflame)\\n- test fixes/md updates (by @phyzical)\\n- Remove \\\"based\\\" from positive adjectives in infiltrations (by @faangbait)\\n- minor fix in instance calculation (by @hydroflame)\\n- fix dynamic ram miscalc not triggering (by @hydroflame)\\n- Refactor game options into separate components (by @hydroflame)\\n- fix settings unfocusing on every key stroke (by @hydroflame)\\n- fix some stuff with the timestamp settings (by @hydroflame)\\n- Fix unique key problem with ascii elements (by @hydroflame)\\n- Improve wrong arg user message and add ui.windowSize (by @hydroflame)\\n- fix stack trace missing in some errors (by @hydroflame)\\n- Fix scp and write in ns1 (by @hydroflame)\\n- Did some changes of the remote api and added documentation (by @hydroflame)\\n- Add dummy function to generate a mock server or player for formulas stuff (by @hydroflame)\\n- fix compile error (by @hydroflame)\\n- regen doc (by @hydroflame)\\n- rm console log (by @hydroflame)\\n- regen doc (by @hydroflame)\\n- Added more info about blood program, change some aug descriptions (by @hydroflame)\\n- use triple equal (by @hydroflame)\\n- Minor improvements to Netscript Port loading and unloading (by @hydroflame)\\n- Fix hostname generation being weird about dash 0 added (by @hydroflame)\\n- upgrade version number. (by @hydroflame)\\n- Nerf noodle bar.\\n\\n## v2.0.0 - 2022-07-19 Work rework\\n\\nAPI break rewards\\n\\n- Everyone is awarded 10 NFG.\\n- All work in progress program is auto completed.\\n- All work in progress crafting is auto completed without adding entropy.\\n\\n Work (Create program / Work for faction / Studying / etc ...)\\n\\n- Working has been rebuilt from the grounds up. The motivation for that change is that all\\n different types of work all required different cached variables on the main Player object.\\n This caused a lot of bugs and crashes. It's been reworked in such a way as to prevent bugs\\n and make it nearly trivial to add new kinds of work. However, since this caused a few API break\\n I've decided to mark this version following semver protocols and call it 2.0.0\\n- Crime can be unfocused and auto loops, no more spam clicking.\\n- All work type give their reward immediately. No need to stop work to bank rewards like reputation.\\n- Faction and Company work no longer have a time limit.\\n- Company work no longer reduces rep gain by half for quitting early.\\n- Company faction require 400k rep to join (from 200k)\\n- Backdooring company server reduces faction requirement to 300k.\\n- All work generally no longer keep track of cumulative gains like exp and reputation since it's applied instantly.\\n- getPlayer returns way less fields but does return the new 'currentWork' field, some fields are moved around.\\n\\nAPI breaks\\n\\n- workForCompany argument 'companyName' is now not-optional\\n- commitCrime now has 'focus' optional parameter\\n- using getScriptIncome to get total income has been separated to getTotalScriptIncome.\\n- using getScriptExpGain to get total income has been separated to getTotalScriptExpGain.\\n- scp has it's 2 last argument reversed, the signature is now (files, destination, optional_source)\\n- ns.connect and other singularity function are no longer available at the top level.\\n They were already hidden from documentation but now they're gone.\\n- stock.buy and stock.sell were renamed to stock.buyStock and stock.sellStock because 'buy' and 'sell'\\n are very common tokens.\\n- corporation.bribe no longer allows to give shares as bribe.\\n\\n Netscript\\n\\n- Add singularity.getCurrentWork\\n- Add singularity.getAugmentationBasePrice\\n- Add sleeve.getSleeveAugmentationPrice\\n- Add sleeve.getSleeveAugmentationRepReq\\n- Fix infiltration.getInfiltrationLocations\\n- Singularity.goToLocation support for non-city-specific locations (@Ansopedian)\\n- All corporation functions are synchronous. Job assignment only works on the following cycle. (@stalefishies)\\n- Add batch functionality to NS spendHashes API (@undeemiss)\\n- Fix #3661 Add missing memory property to Sleeve API (@borisflagell)\\n- FIX#3732 Cannot assign two sleeve on \\\"Take on contracts\\\" regardless of contract type. (@borisflagell)\\n\\n Corporation\\n\\n- Dividend fixes and exposing dividends info via scripts (@stalefishies)\\n- Add big number format support in some Corporation's modal (@borisflagell)\\n- Fix #3261 Industry overview number formatting (@nickofolas)\\n\\n Multipliers\\n\\n- The main player object was also plagues with a million fields all called '\\\\*\\\\_mult'. Representing the different multipliers\\n- These have been refactored in a field called 'mults'.\\n\\n Misc.\\n\\n- #3596 Enhanced terminal command parsing (@RevanProdigalKnight)\\n- Fix #3366 Sleeve UI would sometimes displays the wrong stat while working out. (@borisflagell)\\n- Two new encryption themed contracts - caesar and vigenere (@Markus-D-M)\\n- Fixes #3132 several Sleeve can no longer works concurrently in the same company (@borisflagell)\\n- FIX #3514 Clear recently killed tab on BN end event (@Daniel-Barbera)\\n- HammingCodes description and implementation fixes (@s2ks)\\n- FIX #3794 Sleeve were getting less shocked when hospitalized (was positive, should have detrimental) (@borisflagell)\\n- Fix #3803 Servers can no longer have duplicate IPs (@crimsonhawk47)\\n- Fix #3854 ctrl+c does not clear terminal input (@evil-tim)\\n- Nerf noodle bar, obviously.\\n\\n## v1.6.3 - 2022-04-01 Few stanek fixes\\n\\nStanek Gift\\n\\n- Has a minimum size of 2x3\\n- Active Fragment property 'avgCharge' renamed to 'highestCharge'\\n- Formula for fragment effect updated to make 561% more sense.\\n Now you can charge to your heart content.\\n- Logs for the 'chargeFragment' function updated.\\n\\n Misc.\\n\\n- Nerf noodle bar.\\n\\n## v1.6.0 - 2022-03-29 Grafting\\n\\n** Vitalife secret lab **\\n\\n- A new mechanic called Augmentation Grafting has been added. Resleeving has been removed.\\n- Credit to @nickofolas for his incredible work.\\n\\n** Stanek **\\n\\n- BREAKING: Many functions in the stanek API were renamed in order to avoid name collision with things like Map.prototype.get\\n\\n** UI **\\n\\n- Major update to Sleeve, Gang UI, and Create Program (@nickofolas)\\n- re-add pre tags to support slash n in prompt (@jacktose)\\n- Tabelize linked output of 'ls' (@Master-Guy)\\n- Add the ability to filter open scripts (@phyzical)\\n- Add minHeight to editor tabs (@nickofolas)\\n- Properly expand gang equipment cards to fill entire screen (@nickofolas)\\n- Add shortcut to Faction augmentations page from FactionsRoot (@nickofolas)\\n- Fix extra space on editor tabs (@nickofolas)\\n- Present offline message as list (@DSteve595)\\n- add box showing remaining augments per faction (@jjayeon)\\n- Add tab switching support to vim mode (@JParisFerrer)\\n- Show current task on gang management screen (@zeddrak)\\n- Fix for ui of gang members current task when set via api (@phyzical)\\n- Don't hide irrelevant materials if their stock is not empty and hide irrelevant divisions from Export (@SagePtr)\\n- Fix regex to enable alpha transparency hex codes (8 digits) (@surdaft)\\n\\n** API **\\n\\n- Added dark web functions to ns api\\n- BREAKING: purchaseTor() should returns true if player already has Tor. (@DavidGrinberg, @waffleattack)\\n- Implement getBonusTime in Corporation API (@t-wolfeadam)\\n- Added functions to purchase TIX and WSI (@incubusnb)\\n- purchaseSleeveAug checks shock value (@incubusnb)\\n- Fix bug with hacknet api\\n- Fix spendHashes bug\\n- Added 0 cost of asleep() (@Master-Guy)\\n- Fix some misleading corporation errors (@TheRealMaxion)\\n- expose the inBladeburner on the player object (@phyzical)\\n- added ram charge for stanek width and height (@phyzical)\\n- Fix sufficient player money check to buy back shares. (@ChrissiQ)\\n- Fix Static Ram Circumventing for some NS functions (@CrafterKolyan)\\n- added CorporationSoftCap to NetscriptDefinitions (@phyzical)\\n- Added definition of autocomplete() 'data' argument. (@tigercat2000)\\n- Adding support for text/select options in Prompt command (@PhilipArmstead)\\n- Added the ability to exportGame via api (@phyzical)\\n\\n** Arcade **\\n\\n- Added an arcade to New Tokyo where you can play a 4 year old version of bitburner.\\n\\n** Misc. **\\n\\n- Add a warning triggered while auto-saves are off. (@MartinFournier)\\n- Log info for field analysis now displays actual rank gained. (@ApamNapat)\\n- Removed BladeburnerSkillCost from skill point cost description. (@ApamNapat)\\n- Fix handling for UpArrow in bladeburner console. (@dowinter)\\n- Add GitHub action to check PRs for generated files. (@MartinFournier)\\n- Cap Staneks gift at 25x25 to prevent crashes. (@waffleattack)\\n- Remove old & unused files from repository. (@MartinFournier)\\n- Factions on the factions screens are sorted by story progress / type. (@phyzical)\\n- Fix log manager not picking up new runs of scripts. (@phyzical)\\n- Added prettier to cicd.\\n- UI improvements (@phyzical)\\n- Documentation / Typos (@nanogyth, @Master-Guy, @incubusnb, @ApamNapat, @phyzical, @SagePtr)\\n- Give player code a copy of Division.upgrades instead of the live object (@Ornedan)\\n- Fix bug with small town achievement.\\n- Fix bug with purchaseSleeveAug (@phyzical)\\n- Check before unlocking corp upgrade (@gianfun)\\n- General codebase improvements. (@phyzical, @Master-Guy, @ApamNapat)\\n- Waiting on promises in NS1 no longer freezes the script. (@Master-Guy)\\n- Fix bug with missing ramcost for tFormat (@TheMas3212)\\n- Fix crash with new prompt\\n- Quick fix to prevent division by 0 in terminal (@Master-Guy)\\n- removed ip references (@phyzical, @Master-Guy)\\n- Terminal now supports 'ls -l'\\n- Fix negative number formatting (@Master-Guy)\\n- Fix unique ip generation (@InDieTasten)\\n- remove terminal command theme from docs (@phyzical)\\n- Fix 'Augmentations Left' with gang factions (@nickofolas)\\n- Attempt to fix 'bladeburner.process()' early routing issue (@MartinFournier)\\n- work in progress augment fix (@phyzical)\\n- Fixes missing space in Smart Supply (@TheRealMaxion)\\n- Change license to Apache 2 with Commons Clause\\n- updated regex sanitization (@mbrannen)\\n- Sleeve fix for when faction isnt found (@phyzical)\\n- Fix editor \\\"close\\\" naming (@phyzical)\\n- Fix bug with sleeves where some factions would be listed as workable. (@phyzical)\\n- Fix research tree of product industries post-prestige (@pd)\\n- Added a check for exisiting industry type before expanding (@phyzical)\\n- fix hackAnalyzeThreads returning infinity (@chrisrabe)\\n- Make growthAnalyze more accurate (@dwRchyngqxs)\\n- Add 'Zoom -> Reset Zoom' command to Steam (@smolgumball)\\n- Add hasOwnProperty check to GetServer (@SagePtr)\\n- Speed up employee productivity calculation (@pd)\\n- Field Work and Security Work benefit from 'share' (@SagePtr)\\n- Nerf noodle bar.\\n\\n## v1.5.0 - Steam Cloud integration\\n\\n** Steam Cloud Saving **\\n\\n- Added support for steam cloud saving (@MartinFournier)\\n\\n** UI **\\n\\n- background now matches game primary color (@nickofolas)\\n- page title contains version (@MartinFourier)\\n- Major text editor improvements (@nickofolas)\\n- Display bonus time on sleeve page (@MartinFourier)\\n- Several UI improvements (@nickofolas, @smolgumball, @DrCuriosity, @phyzical)\\n- Fix aug display in alpha (@Dominik Winter)\\n- Fix display of corporation product equation (@SagePtr)\\n- Make Bitverse more accessible (@ChrissiQ)\\n- Make corporation warehouse more accessible (@ChrissiQ)\\n- Make tab style more consistent (@nickofolas)\\n\\n** Netscript **\\n\\n- Fix bug with async.\\n- Add 'printf' ns function (@Ninetailed)\\n- Remove blob caching.\\n- Fix formulas access check (@Ornedan)\\n- Fix bug in exp calculation (@qcorradi)\\n- Fix NaN comparison (@qcorradi)\\n- Fix travelToCity with bad argument (@SlyCedix)\\n- Fix bug where augs could not be purchased via sing (@reacocard)\\n- Fix rounding error in donateToFaction (@Risenafis)\\n- Fix bug with weakenAnalyze (@rhobes)\\n- Prevent exploit with atExit (@Ornedan)\\n- Double 'share' power\\n\\n** Corporations **\\n\\n- Fix bugs with corp API (@pigalot)\\n- Add smart supply func to corp API (@pd)\\n\\n** Misc. **\\n\\n- The file API now allows GET and DELETE (@lordducky)\\n- Force achievement calculation on BN completion (@SagePtr)\\n- Cleanup in repository (@MartinFourier)\\n- Several improvements to the electron version (@MartinFourier)\\n- Fix bug with casino roulette (@jamie-mac)\\n- Terminal history persists in savefile (@MartinFourier)\\n- Fix tests (@jamie-mac)\\n- Fix crash with electron windows tracker (@smolgumball)\\n- Fix BN6/7 passive reputation gain (@BrianLDev)\\n- Fix Sleeve not resetting on install (@waffleattack)\\n- Sort joined factions (@jjayeon)\\n- Update documentation / typo (@lethern, @Meowdoleon, @JohnnyUrosevic, @JosephDavidTalbot,\\n @pd, @lethern, @lordducky, @zeddrak, @fearnlj01, @reasonablytall, @MatthewTh0,\\n @SagePtr, @manniL, @Jedimaster4559, @loganville, @Arrow2thekn33, @wdpk, @fwolfst,\\n @fschoenfeldt, @Waladil, @AdamTReineke, @citrusmunch, @factubsio, @ashtongreen,\\n @ChrissiQ, @DJ-Laser, @waffleattack, @ApamNapat, @CrafterKolyan, @DSteve595)\\n- Nerf noodle bar.\\n\\n## v1.4.0 - 2022-01-18 Sharing is caring\\n\\n** Computer sharing **\\n\\n- A new mechanic has been added, it's is invoked by calling the new function 'share'.\\n This mechanic helps you farm reputation faster.\\n\\n** gang **\\n\\n- Installing augs means losing a little bit of ascension multipliers.\\n\\n** Misc. **\\n\\n- Prevent gang API from performing actions for the type of gang they are not. (@TheMas3212)\\n- Fix donation to gang faction. (@TheMas3212)\\n- Fix gang check crashing the game. (@TheMas3212)\\n- Make time compression more robust.\\n- Fix bug with scp.\\n- Add zoom to steam version. (@MartinFourier)\\n- Fix donateToFaction accepts donation of NaN. (@woody-lam-cwl)\\n- Show correct hash capacity gain on cache level upgrade tooltip. (@woody-lam-cwl)\\n- Fix tests (@woody-lam-cwl)\\n- Fix cache tooltip (@woody-lam-cwl)\\n- Added script to prettify save file for debugging (@MartinFourier)\\n- Update documentation / typos (@theit8514, @thadguidry, @tigercat2000, @SlyCedix, @Spacejoker, @KenJohansson,\\n @Ornedan, @JustAnOkapi, @nickofolas, @philarmstead, @TheMas3212, @dcragusa, @XxKingsxX-Pinu,\\n @paiv, @smolgumball, @zeddrak, @stinky-lizard, @nickofolas, @Feodoric, @daanflore,\\n @markusariliu, @mstruebing, @erplsf, @waffleattack, @Dexalt142, @AIT-OLPE, @deathly809, @BuckAMayzing,\\n @MartinFourier, @pigalot, @lethern)\\n- Fix BN3+ achievement (@SagePtr)\\n- Fix reputation carry over bug (@TheMas3212)\\n- Add button to exit infiltrations (@TheMas3212)\\n- Add dev menu achievement check (@TheMas3212)\\n- Add 'host' config for electron server (@MartinFourier)\\n- Suppress save toast only works for autosave (@MartinFourier)\\n- Fix some achievements not triggering with 'backdoor' (@SagePtr)\\n- Update Neuroflux Governor description.\\n- Fix bug with electron server.\\n- Fix bug with corporation employee assignment function (@Ornedan)\\n- Add detailed information to terminal 'mem' command (@MartinFourier)\\n- Add savestamp to savefile (@MartinFourier)\\n- Dev menu can apply export bonus (@MartinFourier)\\n- Icarus message no longer applies on top of itself (@Feodoric)\\n- purchase augment via API can no longer buy Neuroflux when it shouldn't (@Feodoric)\\n- Syntax highlighter should be smarter (@neuralsim)\\n- Fix some miscalculation when calculating money stolen (@zeddrak)\\n- Fix max cache achievement working with 0 cache (@MartinFourier)\\n- Add achievements in the game, not just steam (@MartinFourier)\\n- Overflow hash converts to money automatically (@MartinFourier)\\n- Make mathjax load locally (@MartinFourier)\\n- Make favor calculation more efficient (@kittycat2002)\\n- Fix some scripts crashing the game on startup (@MartinFourier)\\n- Toasts will appear above tail window (@MartinFourier)\\n- Fix issue that can cause terminal actions to start on one server and end on another (@MartinFourier)\\n- Fix 'fileExists' not correctly matching file names (@TheMas3212)\\n- Refactor some code to be more efficient (@TheMas3212)\\n- Fix exp gain for terminal grow and weaken (@nickofolas)\\n- Refactor script death code to reject waiting promises instead of resolving (@Ornedan)\\n- HP recalculates on defense exp gain (@TheMas3212)\\n- Fix log for ascendMember (@TheMas3212)\\n- Netscript ports clear on reset (@TheMas3212)\\n- Fix bug related to company (@TheMas3212)\\n- Fix bug where corporation handbook would not be correctly added (@TheMas3212)\\n- Servers in hash upgrades are sorted alpha (@MartinFourier)\\n- Fix very old save not properly migrating augmentation renamed in 0.56 (@MartinFourier)\\n- Add font height and line height in theme settings (@MartinFourier)\\n- Fix crash when quitting job (@MartinFourier)\\n- Added save file validation system (@TheMas3212)\\n- React and ReactDOM are now global objects (@pigalot)\\n- 'nano' supports globs (@smolgumball)\\n- Character overview can be dragged (@MartinFourier)\\n- Job page updates in real time (@nickofolas)\\n- Company favor gain uses the same calculation as faction, this is just performance\\n the value didn't change (@nickofolas)\\n- ns2 files work with more import options (@theit8514)\\n- Allow autocomplete for partial executables (@nickofolas)\\n- Add support for contract completion (@nickofolas)\\n- 'ls' link are clickable (@smolgumball)\\n- Prevent steam from opening external LOCAL files (@MartinFourier)\\n- Fix a bug with autocomplete (@Feodoric)\\n- Optimise achievement checks (@Feodoric)\\n- Hacknet server achievements grant associated hacknet node achievement (@Feodoric)\\n- Fix display bug with hacknet (@Feodoric)\\n- 'analyze' now says if the server is backdoored (@deathly809)\\n- Add option to exclude running script from save (@MartinFourier)\\n- Game now catches more errors and redirects to recovery page (@MartinFourier)\\n- Fix bug with autocomplete (@nickofolas)\\n- Add tooltip to unfocus work (@nickofolas)\\n- Add detailst overview (@MartinFourier)\\n- Fix focus bug (@deathly809)\\n- Fix some NaN handling (@deathly809)\\n- Added 'mv' ns function (@deathly809)\\n- Add focus argument to some singularity functions (@nickofolas)\\n- Fix some functions not disabling log correctly (@deathly809)\\n- General UI improvements (@nickofolas)\\n- Handle steamworks errors gravefully (@MartinFourier)\\n- Fix some react component not unmounting correctly (@MartinFourier)\\n- 'help' autocompletes (@nickofolas)\\n- No longer push all achievements to steam (@Ornedan)\\n- Recovery page has more information (@MartinFourier)\\n- Added 'getGameInfo' ns function (@MartinFourier)\\n- SF3.3 unlocks all corp API (@pigalot)\\n- Major improvements to corp API (@pigalot)\\n- Prevent seed money outside BN3 (@pigalot)\\n- Fix bug where using keyboard shortcuts would crash if the feature is not available (@MartinFourier)\\\\\\n- Sidebar remains opened/closed on save (@MartinFourier)\\n- Added tooltip to sidebar when closed (@MartinFourier)\\n- Fix bug where Formulas.exe is not available when starting BN5 (@TheMas3212)\\n- Fix CI (@tvanderpol)\\n- Change shortcuts to match sidebar (@MartinFourier)\\n- Format gang respect (@attrib)\\n- Add modal to text editor with ram details (@nickofolas)\\n- Fix several bugs with singularity focus (@nickofolas)\\n- Nerf noodle bar.\\n\\n## v1.3.0 - 2022-01-04 Cleaning up\\n\\n** External IDE integration **\\n\\n- The Steam version has a webserver that allows integration with external IDEs.\\n A VSCode extension is available on the market place. (The documentation for the ext. isn't\\n written yet)\\n\\n** Source-Files **\\n\\n- SF4 has been reworked.\\n- New SF -1.\\n\\n** UI **\\n\\n- Fix some edge case with skill bat tooltips (@MartinFournier)\\n- Made some background match theme color (@Kejikus)\\n- Fix problem with script editor height not adjusting correctly (@billyvg)\\n- Fix some formatting issues with Bladeburner (@MartinFournier, @nickofolas)\\n- Fix some functions like 'alert' format messages better (@MageKing17)\\n- Many community themes added.\\n- New script editor theme (@Hedrauta, @Dexalt142)\\n- Improvements to tail windows (@theit8514)\\n- Training is more consise (@mikomyazaki)\\n- Fix Investopedia not displaying properly (@JotaroS)\\n- Remove alpha from theme editor (@MartinFournier)\\n- Fix corporation tooltip not displaying properly (@MartinFournier)\\n- Add tooltip on backdoored location names (@MartinFournier)\\n- Allow toasts to be dismissed by clicking them (@nickofolas)\\n- Darkweb item listing now shows what you own. (@hexnaught)\\n\\n** Bug fix **\\n\\n- Fix unit tests (@MartinFournier)\\n- Fixed issue with 'cat' and 'read' not finding foldered files (@Nick-Colclasure)\\n- Buying on the dark web will remove incomplete exe (@hexnaught)\\n- Fix bug that would cause the game to crash trying to go to a job without a job (@hexnaught)\\n- purchaseServer validation (@nickofolas)\\n- Script Editor focuses code when changing tab (@MartinFournier)\\n- Fix script editor for .txt files (@65-7a)\\n- Fix 'buy' command not displaying correctly. (@hexnaught)\\n- Fix hackAnalyzeThread returning NaN (@mikomyazaki)\\n- Electron handles exceptions better (@MageKing17)\\n- Electron will handle 'unresponsive' event and present the opportunity to reload the game with no scripts (@MartinFournier)\\n- Fix 'cp' between folders (@theit8514)\\n- Fix throwing null/undefined errors (@nickofolas)\\n- Allow shortcuts to work when unfocused (@MageKing17)\\n- Fix some dependency issue (@locriacyber)\\n- Fix corporation state returning an object instead of a string (@antonvmironov)\\n- Fix 'mv' overwriting files (@theit8514)\\n- Fix joesguns not being influenced by hack/grow (@dou867, @MartinFournier)\\n- Added warning when opening external links. (@MartinFournier)\\n- Prevent applying for positions that aren't offered (@TheMas3212)\\n- Import has validation (@MartinFournier)\\n\\n** Misc. **\\n\\n- Added vim mode to script editor (@billyvg)\\n- Clean up script editor code (@Rez855)\\n- 'cat' works on scripts (@65-7a)\\n- Add wordWrap for Monaco (@MartinFournier)\\n- Include map bundles in electron for easier debugging (@MartinFournier)\\n- Fix importing very large files (@MartinFournier)\\n- Cache program blob, reducing ram usage of the game (@theit8514)\\n- Dev menu can set server to $0 (@mikomyazaki)\\n- 'backdoor' allows direct connect (@mikomyazaki)\\n- Github workflow work (@MartinFournier)\\n- workForFaction / workForCompany have a new parameter (@theit8514)\\n- Alias accept single quotes (@sporkwitch, @FaintSpeaker)\\n- Add grep options to 'ps' (@maxtimum)\\n- Added buy all option to 'buy' (@anthonydroberts)\\n- Added more shortcuts to terminal input (@Frank-py)\\n- Refactor some port code (@ErzengelLichtes)\\n- Settings to control GiB vs GB (@ErzengelLichtes)\\n- Add electron option to export save game (@MartinFournier)\\n- Electron improvements (@MartinFournier)\\n- Expose some notifications functions to electron (@MartinFournier)\\n- Documentation (@MartinFournier, @cyn, @millennIumAMbiguity, @2PacIsAlive,\\n @TheCoderJT, @hexnaught, @sschmidTU, @FOLLGAD, @Hedrauta, @Xynrati,\\n @mikomyazaki, @Icehawk78, @aaronransley, @TheMas3212, @Hedrauta, @alkemann,\\n @ReeseJones, @amclark42, @thadguidry, @jasonhaxstuff, @pan-kuleczka, @jhollowe,\\n @ApatheticsAnonymous, @erplsf, @daanflore, @nickofolas, @Kebap, @smolgumball,\\n @woody-lam-cwl)\\n\\n## v1.1.0 - 2021-12-18 You guys are awesome (community because they're god damn awesome)\\n\\n** Script Editor **\\n\\n- The text editor can open several files at once. (@Rez855 / @Shadow72)\\n It's not perfect so keep the feedback coming.\\n\\n** Steam **\\n\\n- Windows has a new launch option that lets player start with killing all their scripts\\n This is a safety net in case all the other safety nets fail.\\n- Linux has several launch options that use different flags for different OS.\\n- Debug and Fullscreen are available in the window utility bar.\\n- Tried (and maybe failed) to make the game completely kill itself after closing.\\n This one I still don't know wtf is going.\\n- No longer has background throttling.\\n- Default color should be pitch black when loading\\n- Add BN13: Challenge achievement.\\n\\n** Tutorial **\\n\\n- I watched someone play bitburner on youtube and reworked part of\\n the tutorial to try to make some parts of the game clearer.\\n https://www.youtube.com/watch?v=-_JETXff4Zo\\n- Add option to restart tutorial.\\n\\n** Netscript **\\n\\n- getGangInformation returns more information.\\n- getAscensionResult added\\n- getMemberInformation returns more info\\n- Formulas API has new functions for gang.\\n- Added documentation for corp API.\\n- exec has clearer error message when you send invalid data.\\n- getServer returns all defined field for hacknet servers.\\n- Fix a bug with scp multiple files (@theit8514)\\n- Stack traces should be smarter at replacing blobs with filenames\\n- Fix a weird error message that would occur when throwing raw strings.\\n- Fix shortcuts not working.\\n- Re-added setFocus and isFocused (@theit8514)\\n- new function getHashUpgrades (@MartinFournier)\\n- enableLog accepts \\\"ALL\\\" like disableLog (@wynro)\\n- toast() doesn't crash on invalid data (@ivanjermakov)\\n- alert() doesn't crash on invalid data (@Siern)\\n- Fixed an issue where scripts don't run where they should.\\n- Sleeve getInformation now returns cha\\n- getServer does work with no argument now\\n- workForFaction returns false when it mistakenly returned null\\n\\n** Character Overview **\\n\\n- The character overview now shows the amount of exp needed to next level (@MartinFournier)\\n\\n** Misc. **\\n\\n- Add option to supress Game Saved! toasts (@MartinFournier)\\n- Fix bug where ctrl+alt+j was eaten by the wrong process. (@billyvg)\\n- Theme Editor lets you paste colors (@MartinFournier)\\n- ctrl + u/k/w should work on terminal (@billyvg)\\n- Game now shows commit number, this is mostly for me. (@MartinFourier)\\n- running a bad script will give a clearer error message (@TheCoderJT)\\n- Default terminal capacity is maximum (@SayntGarmo)\\n- Fix problems with cp and mv (@theit8514)\\n- Make monaco load fully offline for players behind firewalls.\\n- change beginer guide to use n00dles instead of foodnstuff\\n- BN13 is harder\\n- nerf int gain from manualHack\\n- Fix UI displaying wrong stats (@DJMatch3000)\\n- Fix button not disabling as it should.\\n- New location in Ishima.\\n- Add setting to suppress stock market popups.\\n- Typo fixes (@Hedrauta, @cvr-119, @Ationi, @millennIumAMbiguity\\n @TealKoi, @TheCoderJT, @cblte, @2PacIsAlive, @MageKing17,\\n @Xynrati, @Adraxas, @pobiega)\\n- Fix 100% territory achievement.\\n- Reword message on active scripts page.\\n- Fix terminal not clearing after BN\\n- Remove references to .fconf\\n- Augmentation pages shows BN difficulty with SF5\\n- Fix scripts saving on wrong server while 'connect'ing\\n- Fix gym discount not working.\\n- Fix scan-analyze not working with timestamps\\n- Hash upgrades remember last choice.\\n- Save files now sort by date\\n- The covenant no longer supports negative memory purchases\\n- Fix corp shares buyback triggering by pressing enter\\n- Staneks gift display avg / num charges\\n- Infiltration rewards no longer decay with better stats\\n- terminal 'true' is parsed as boolean not string\\n- tail and kill use autocomplete()\\n- Fix focus for coding contract\\n- massive boost to noodle bar.\\n\\n** Special Thanks **\\n\\n- Special thank you to everyone on Discord who can answer\\n new player questions so I can focus on more important things.\\n\\n## v1.1.0 - 2021-12-03 BN13: They're Lunatics (hydroflame & community)\\n\\n** BN13: They're Lunatics **\\n\\n- BN13 added.\\n\\n** Steam **\\n\\n- Tested on all 3 major OS.\\n- 94 achievements added\\n- Release is 2021-12-10.\\n\\n** Corporation API **\\n\\n- Added corporation API. (Unstable)\\n\\n** Netscript **\\n\\n- tprintf crashes when not giving a format as first arg.\\n- tprintf no longer prints filename (@BartKoppelmans)\\n- TIX buy/sell/sellShort all return askprice/bidprice (@Insight)\\n- getRunningScript now works.\\n- Fix disableLog for gang and TIX API\\n- getOwnedSourceFiles is not singularity anymore (makes it easier to share scripts.) (@theit8514)\\n- true/false is a valid value to send to other scripts.\\n- workForFaction no longer returns null when trying to work for gang.\\n- Scripts logging no longer generates the string if logging is disabled.\\n This should give performance boost for some scripts.\\n\\n** Gang **\\n\\n- Gang with 0 territory can no longer fight\\n- Territory now caps at exactly 0 or 1.\\n\\n** Misc. **\\n\\n- Clicking \\\"previous\\\" on the browser will not pretend you had unsaved information\\n allowing you to cancel if needs be.\\n- Fixed some tail box coloring issue.\\n- Fixed BladeBurner getCityCommunities ram cost\\n- The download terminal command no longer duplicate extensions (@Insight)\\n- Fix #000 on #000 text in blackjack. (@Insight)\\n- Remove reference to .fconf\\n- Tail boxes all die on soft reset.\\n- Fix codign contract focus bug.\\n- Megacorp factions simply re-invite you instead of auto added on reset. (@theit8514)\\n- Tail window is bound to html body.\\n- Infiltration reward is tied to your potential stats, not your actual stats\\n So you won't lose reward for doing the same thing over and over.\\n- intelligence lowers program creation requirements.\\n- Terminal parses true as the boolean, not the string.\\n- Tail and kill autocomplete using the ns2 autocomplete feature.\\n- scan-analyze doesn't take up as many terminal entries.\\n- GangOtherInfo documentation now renders correctly.\\n- ActiveScripts search box also searches for script names.\\n- Infinite money no longer allows for infinite hacknet server.\\n- Blackjack doesn't make you lose money twice.\\n- Recent Scripts is now from most to least recent.\\n- Fix mathjax ascii art bug in NiteSec.\\n- Remove warning that the theme editor is slow, it's only slow in dev mode.\\n- In BN8 is it possible to reduce the money on a server without gaining any.\\n- In the options, the timestamp feature has a placeholder explaining the expected format.\\n- Bunch of doc typo fix. (hydroflame & @BartKoppelmans & @cvr-119)\\n- nerf noodle bar\\n\\n## v1.0.2 - 2021-11-17 It's the little things (hydroflame)\\n\\n** Breaking (very small I promise!) **\\n\\n- buy / sell now return getAskPrice / getBidPrice instead of just price.\\n This should help solve some inconsistencies.\\n\\n** Misc. **\\n\\n- scripts logs are colorized. Start your log with SUCCESS, ERROR, FAIL, WARN, INFO.\\n- documentation for scp not say string | string[]\\n- Donation link updated.\\n- nerf noodle bar\\n\\n## v1.0.1 - 2021-11-17 New documentation (hydroflame)\\n\\n** Documentation **\\n\\n- The new documentation for the netscript API is available at\\n https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md\\n This documentation is used in-game to validate the code, in-editor to autocomplete, and\\n for users to reference. This is a huge quality of life improvements for me.\\n\\n** Reputation **\\n\\n- Fixed favor not affecting faction work reputation gain (Yeah, I know right?)\\n\\n** Hacknet **\\n\\n- Servers are now considerd \\\"purchasedByPlayers\\\"\\n\\n** Script Editor **\\n\\n- solarized themes now work.\\n\\n** Corporation **\\n\\n- Dividends are now much more taxed.\\n- The 2 upgrades that reduced taxes are now much stronger.\\n\\n** Misc. **\\n\\n- Starting / Stopping scripts on hashnet servers immediately updates their hash rate (instead of on the next tick)\\n- Hacknet has tooltip showing what the result of the upgrade would be.\\n- Augmentations page displayes current price multiplier as well as explains the mechanic.\\n- Terminal now is 25x stronger.\\n- Tail boxes use pre-wrap for it's lines.\\n- Tail boxes allow you to rerun dead scripts.\\n- Tail boxes can no longer open the same one twice.\\n- Terminal now autocompletes through aliases.\\n- Make alter reality harder.\\n- Fix bladeburner cancelling actions when manually starting anything with Simulacrum.\\n- Buying hash upgrade to increase uni class or gym training will apply to current class.\\n- Internally the game no longer uses the decimal library.\\n- Fix an issue where 'download \\\\*' would generate weird windows files.\\n- Timestamps can be set to any format in the options.\\n- Fix typo in documentation share popup.\\n- Remove bunch of debug log.\\n- Fix typo in corporation handbook literature.\\n- Fix typo in documentation\\n- Fix duplicate SF -1 exploit. (Yeah, an exploit of exploits, now were meta)\\n- Fix offline hacking earning being attributed to hacknet.\\n- nerf noodle bar\\n\\n## v1.0.0 - 2021-11-10 Breaking the API :( (blame hydroflame)\\n\\n** Announcement **\\n\\n- Several API breaks have been implemented.\\n- See the v1.0.0 migration guide under Documentation\\n- Everyone gets 10 free neuroflux level.\\n\\n** Netscript **\\n\\n- Fix a bug that would cause RAM to not get recalculated.\\n- New function: hackAnalyzeSecurity\\n- New function: growthAnalyzeSecurity\\n- New function: weakenAnalyze\\n\\n** Script Editor **\\n\\n- Sometimes warn you about unawaited infinite loops.\\n- ns1 functions are now correctly colors in Monokai.\\n\\n** Programs **\\n\\n- Formulas.exe is a new program that lets you use the formulas API.\\n\\n** Corporations **\\n\\n- Real Estate takes up a tiny bit of room.\\n- Dividends are now taxes exponentially in certain bitnodes.\\n- UI displays how many level of each corporation upgrade.\\n- Fix exploit with going public.\\n- Employee salary no longer increase.\\n\\n** Documentation **\\n\\n- The documentation is now autogenerated into .md files.\\n It is usable but not yet linked to readthedocs. It's on github.\\n\\n** Misc. **\\n\\n- Favor is not internall floating point. Meaning I don't have to save an extra variable.\\n- Manually starting a Bladeburner action cancels unfocused action.\\n- Updated description of gang territory to be clearer.\\n- Hacknet expenses and profit are in different categories.\\n- Fixed favor equation.\\n- Toast messages aren't hidden behind work in progress screen.\\n- Fix bug that made infiltration checkmark look off by one.\\n- Fix some inconsistency with running files that start or don't start with /\\n- Can't tail the same window twice.\\n- Added recovery mode. Hopefully no one will ever have to use it.\\n- Fix readthedocs\\n- Programs now give int exp based on time not program.\\n- Many sing. functions now give int exp.\\n- Active Scripts page now displays some arguments next to script name.\\n- Fixed some invisible black text.\\n- Button colors can be edited.\\n- Added 2 new colors in the theme editor: background primary and background secondary.\\n- infiltration uses key instead of keycode so it should work better on non-american keyboards.\\n- buff noodle bar.\\n\\n## v0.58.0 - 2021-10-27 Road to Steam (hydroflame & community)\\n\\n** Announcement **\\n\\n- To prepare for Steam we will fix some inconsistencies in the Netscript API. Ideally we can also write a\\n save file migration that will automatically convert all breaking changes in your scripts without any\\n player input.\\n\\n** BREAKING (kindof) **\\n\\n- All stock market functions are now under the 'stock' namespace, like 'hacknet'\\n However when you load your game with v0.58.0 for the first time it should automatically convert everything.\\n\\n** SF -1 **\\n\\n- new SF -1: Reality Alteration\\n\\n** Gang **\\n\\n- Ascension formula now better\\n- Karma requirement now much lower in most nodes\\n- Territory heavily penalizes gains\\n- T.R.P. not available outside BN2.\\n\\n** Netscript **\\n\\n- It is no longer possible to send anything but strings or numbers to other scripts. (prevents exploits)\\n- Improve code for some netscript functions (@omuretsu)\\n\\n** Script Editor **\\n\\n- Added Solarized light/dark as theme (@CalvinTrops)\\n- Fixed sleeve namespace smart autocomplete.\\n\\n** Hacknet Servers **\\n\\n- Cores affect grow/weaken like they do on home computer\\n\\n** Infiltration **\\n\\n- Slash game modified to be easier.\\n\\n** Misc. **\\n\\n- Fix typo in corp (@Saynt_Garmo)\\n- Fixed a bug where corp wouldn't let you buyback shares. (@Saynt_Garmo)\\n- Fixed a bug where sleeves couldn't perform some crimes. (@Saynt_Garmo)\\n- Hospitalization and Eating noodles are now toasts (@Saynt_Garmo)\\n- Fixed some repeated code (@omuretsu)\\n- Fixed Character Overview preventing clicks underneath it even when hidden. (@omuretsu)\\n- Fixed typo in tutorial. (@omuretsu)\\n- Create Programs and Factions invitation badges now dissapear when you open their respective pages.\\n- Add killall script in character overview.\\n- Fixed bug in corp that made last city production be the production for all cities for newly created product.\\n- Fix bug that allowed reputation to transfer to new jobs.\\n- Fixed memory leak with ns2.\\n- nerf noodle bar\\n\\n## v0.57.0 - 2021-10-16 It was too cheap! (hydroflame & community)\\n\\n** BREAKING (kindof) **\\n\\n- purchased server cost now scales exponentially past 2^10.\\n I'm going to actually explain this one: Currently the cost of a 2^20GB server is 57b\\n Most players can get that before their first install. In an effort to nerf good players\\n a softcap was added. This softcap is different for every BN.\\n\\n** Script Editor **\\n\\n- Added a theme that is close to monokai. Unfortunately a full monokai is impossible because\\n Monaco doesn't have a very good tokenizer.\\n- Opening a file and connecting to a new server will still save the file on the server that the file\\n was opened.\\n\\n** Netscript **\\n\\n- New function: alert, which creates a textbox.\\n- New function: toast, creates a notification in the bottom right.\\n- New function: upgradeHomeCores (@Saynt_Garmo)\\n- New function: atExit, allows you to set a callback for when the script closes.\\n- New kindof function: autocomplete, this allows you to tell the game what it should\\n autocomplete on the terminal.\\n\\n** Augmentation **\\n\\n- ENM Core (the Augmentation from The Black Hand with the highest rep cost) rep cost\\n reduced from 250 to 175. This will help new players transition from TBH to BitRunners more easily.\\n\\n** Bladeburner **\\n\\n- New general action: Incite Violence. This action adds other action counts but increases chaos.\\n\\n** Misc. **\\n\\n- Current bladeburner action is shown on the character overview.\\n- Fix blackop being #000 on #000.\\n- The last clicked Tail Box goes in front of the others.\\n- Fixed an issue where some values were loaded as 0 when they should be null.\\n- Implemented toasts.\\n- .msg are no longer saved in the text file.\\n- Tail boxes no longer display all the args, they use \\\"...\\\" after 30 characters.\\n- Fixed cancelation penalty bonus not being properly applied after the IP <-> hostname switch.\\n- Fixed an exploit where you could send non-strings or numbers to other scripts.\\n- Fixed issue when trying to work for a faction with a work type that doesn't exist while\\n already working for that faction.\\n- Fixed not being able to work for the CIA. (Don't ask)\\n- nerf noodle bar\\n\\n## v0.56.0 - 2021-10-11 Trimming the backlog (hydroflame & community)\\n\\n** BREAKING **\\n\\n- The 'write' function is now async. This helps when making scripts that write scripts.\\n\\n** Terminal **\\n\\n- 'grow' and 'weaken' have been added as terminal command. This should help player transition\\n from commands to scripts. The tutorial also talks about it.\\n- 'cp' command added\\n- Improved performance by rate limiting refresh.\\n\\n** IP vs Hostname **\\n\\n- The game now uses hostname as primary key for it's servers (yeah believe it or not IPs were\\n used until then). This has caused some issues with purchased servers (they couldn't be sold).\\n You might need to soft reset for the game to fully convert itself.\\n\\n** Sleeve **\\n\\n- Fixed bug where they couldn't train at Volhaven.\\n- No longer consume all bonus time at once, making it look buggy.\\n\\n** SF9 **\\n\\n- Now boosts hacknet production by 8/12/14%\\n\\n** Hacknet Servers **\\n\\n- production nerfed by 10%\\n- Max money increase gets weaker above 10t max money\\n\\n** Corporation **\\n\\n- Warehouse tooltip now also displays the amount of space taken by products.\\n- Changed research box completely to avoid dependency on Treant (Treant is a pita)\\n- All textbox should accept MAX/MP case insensitive.\\n- Fixed export popup not refreshing dropdowns correctly.\\n- Fixed product mku becoming zero\\n- Increased scaling of Wilson to avoid feedback loop.\\n- Can no longer get in debt by buying real estate\\n- Bonus time is consumed faster.\\n\\n** Netscript **\\n\\n- isBusy takes bitverse and infiltration into account\\n- hospitalize can't be called when in infiltration.\\n- setToCommitCrime now accepts crime rough name instead of perfect name.\\n- disableLog All now works for bladeburner functions.\\n- Fixed netscript port for ns1.\\n\\n** Augmentation **\\n\\n- Added augmentation to Ti Di Hui that removes penalty for being unfocused.\\n- Neuroflux no longer appears in special factions.\\n\\n** Script Editor **\\n\\n- Ram check is debounced instead of refreshed every second.\\n- Added the vscode extension documentation to the game (it doesn't work well, thought)\\n- Fixed issue where autocomplete list would grow forever\\n- Added semi-monokai as theme.\\n- Fixed issue where modifying filename would mess it up.\\n- Font size can be changed now.\\n\\n** Infiltration **\\n\\n- Fixed issue where game controls would become unfocused.\\n\\n** Misc. **\\n\\n- Fixed loader incorrectly assuming some null values are incorrect.\\n- installBackdoor trigger Bitverse sequence\\n- Some improvements to the theme editor\\n- Improved documentation about where to learn javascript.\\n- Added some instructions for contributors.\\n- Fixed typo in corporation sell shares modal (@Saynt_Garmo)\\n- Fixed pagination being black on black in Active Scripts\\n- Create Script tab renamed to Script Editor\\n- Fixed an issue where corp some textbox wouldn't update when changing city.\\n- Fixed an issue where hacknet online time was always 0.\\n- Netscript function prompt fixed.\\n- Fixed miscalculation in growth.\\n- Script with syntax errors will try to be a tad more helpful.\\n- Corporations can no longer bribe bladeburners.\\n- Augmentation Graphene Branchiblade renamed to Brachi, like the rest of them.\\n- All ram is displayed in GB/TB/PB now.\\n- Game now saves when saving a file, this can be turned off.\\n- Several improvement to log window.\\n- Bladeburner current action returns General type instead of the name of the action.\\n- Bladeburner travel and Sleeve travel respect disable ASCII.\\n- Tutorial fits on small screens.\\n- Import is much slower but more consistent now.\\n- Fix intelligence not updating properly.\\n- Added SF -1: Time Compression\\n- ReadTheDoc theme now matches the game.\\n- Logbox should wrap text better\\n- Logbox behavior should feel better.\\n- Fix font for AutoLink.exe\\n- nerf noodle bar\\n\\n## v0.55.0 - 2021-09-20 Material UI (hydroflame & community)\\n\\n** Global **\\n\\n- The game is now 100% in typescript, react, and Material-UI\\n\\n** Misc. **\\n\\n- Corporations can no longer bribe special factions\\n- Infiltration can no longer lose focus of the keyboard.\\n- Fix terminal line limit\\n- Added theme editor\\n- Theme applies on game load (@Nolshine)\\n- Sleeves no longer consume all bonus time for some actions\\n- Fix a bug where the autocomlete list would get duplicates\\n- Fix tutorial not scaling properly on small screens\\n- Import should be more consistent\\n- Typo with 'help' command\\n- Fix infinite loop in casino\\n- nerf noodle bar\\n\\n## v0.54.0 - 2021-09-20 One big react node (hydroflame & community)\\n\\n** UI **\\n\\n- The UI is now completely(ish) in react and I'm starting to implement\\n Material-UI everywhere. This will help make the game feel more consistent.\\n- Major help from (@threehams)\\n- New Terminal\\n- New Active Scripts page\\n- New sidebar.\\n- New Character overview\\n- New tutorial\\n- New options page\\n- New create program page (@Nolshine)\\n\\n** Netscript **\\n\\n- Add companyName to getPlayer\\n\\n** Factions **\\n\\n- Megacorp factions are no longer removed when installing.\\n\\n** Corporation **\\n\\n- All research tooltips are always visible.\\n- Smart supply is enabled by default if purchased (@Nolshine)\\n\\n** Misc. **\\n\\n- Fix \\\"Game saved\\\" animation. (@Nolshine)\\n- Update commitCrime documentation (@Tryneus)\\n- Fix logbox scrolling weird (@Nolshine)\\n- Fix weird scrolling in corporations (@BartKoppelmans)\\n- Fix typo (@BartKoppelmans & @Nolshine)\\n- Delete game now has a confirmation modal (@Nolshine)\\n- Fix issue where skills would not get properly updated when entering new\\n BN. (@Nolshine)\\n- Convert create gang to popup (@vmesecher)\\n- Fixed a bug that prevented travel to Sector-12 and New Tokyo when not using\\n ASCII art.\\n- nerf noodle bar\\n\\n## v0.53.0 - 2021-09-09 Way too many things. (hydroflame & community)\\n\\n** Dev? **\\n\\n- The entire codebase has been run through a code prettifier, hurray for consistency. (@threehams)\\n- Lots of test. (@threehams)\\n- Massive improvements to build speed. (@threehams)\\n- Dev notes: This won't affect any players but is immensely useful for me.\\n\\n** Hacknet **\\n\\n- Converted to ts/react\\n\\n** Resleeving **\\n\\n- Converted to ts/react\\n\\n** Sleeves **\\n\\n- Converted to ts/react. The ui should also have a better feel.\\n- Fixed a bug that allowed players to recover shock much faster than intended.\\n\\n** BN10 **\\n\\n- You have access to Sleeves right away\\n- In BN10 Sleeves start with 75 shock and 25 sync.\\n\\n** MathJax **\\n\\n- Several tooltips have been updated to display the relevant formula in Mathjax, e.g. Favor and reputation\\n\\n** Corporation **\\n\\n- Completely rewritten in React. Paving the way for bigger change.\\n- Smart Supply is now smarter and won't deadlock the warehouse. It is also more configurable.\\n- Several UI fixes.\\n\\n** Bladeburner **\\n\\n- Action count is no longer decided when joining the Bladeburners. Experiences for all players should be more similar.\\n\\n** Factions **\\n\\n- No factions have home computer ram requirement. This caused some confusion for new players.\\n\\n** Gang **\\n\\n- Made it clear when there's a new equipment coming up.\\n\\n** Netscript **\\n\\n- getActionCountRemaining now returns Infinity for bladeburner general actions. (@brubsy)\\n- getActionEstimatedSuccessChance now returns 100% for Diplomacy and Hyperbolic Regeneration Chamber. (@brubsy)\\n- disableLog('ALL') now disables all logs individually, meaning you can re-enable the ones you want after. (@Cass)\\n- getPlayer returns numPeopleKilled.\\n- Dynamic RAM calculation errors have a better error message.\\n- Hide some functions from autocomplete.\\n- Added getAugmentationPrice, getAugmentationRepReq, deprecated getAugmentationCost. (@TempFound)\\n- Fixed bug where some crime API would return \\\"assassinate\\\" when that's not accepted in other functions.\\n\\n** Coding Contract **\\n\\n- Spiralize Matrix is easier to read.\\n\\n** Misc. **\\n\\n- The world map is now used in sleeve travel and bladeburner travel.\\n- noselect a bunch of stuff.\\n- Ascii maps letters are more contrasting\\n- Updated documentation for infiltration.\\n- Most money costs in the game will turn grey/cyan when you don't have enough money.\\n- Donation textbox has better look & feel.\\n- Tech vendors ram & cores buttons have better look and feels.\\n- cores cost modified to be a formula instead of a semi-random array of numbers.\\n- Tech vendors now give a hint about where to get bigger servers.\\n- logboxes now displays whitespaces exactly. (@Cass)\\n- nerf noodle bar\\n\\n## v0.52.9 - 2021-08-27 Less lag! (hydroflame & community)\\n\\n** Active Scripts page **\\n\\n- Now less laggy, has pagination.\\n\\n** File diagnostic **\\n\\n- Added a popup found under options that shows the files you own and how\\n large they are. This help find bugs and leftover massive logs files.\\n\\n** Corporation **\\n\\n- Added safeguard against a very specific bug that causes NaN money. I'm\\n still not sure what the root cause is but it should prevent corp from\\n breaking.\\n\\n** Netscript **\\n\\n- tprintf is a new function that doesn't print the filename.\\n\\n** Misc. **\\n\\n- Infiltration kills you if you try to automate it. (@threehams)\\n- Fix beautify button not working\\n- Added bladeburner_analysis_mult to getPlayer() (@brubsby)\\n- Fixed joining bladeburner via netscript functions. (@omuretsu)\\n- All bladeburner actions are click-to-copy\\n- nerf noodle bar\\n\\n## v0.52.8 - 2021-08-23 Fixing the previous patch tbh ROUND 2 (hydroflame)\\n\\n** Script editor **\\n\\n- Correctly reloads old script when clicking \\\"Script Editor\\\"\\n- No longer jumps to the end of the text for no reason.\\n\\n** Hash upgrades **\\n\\n- Fixed an issue where the default option would say ecorp but was really\\n foodnstuff\\n\\n** Misc. **\\n\\n- The \\\"Delete all active script\\\" button under the options has a clearer\\n description.\\n- Removed some debug console.log\\n- nerf noodle bar\\n\\n## v0.52.7 - 2021-08-21 Fixing the previous patch tbh (hydroflame)\\n\\n** Netscript **\\n\\n- API BREAKING CHANGE: getActionEstimatedSuccessChance now returns a pair of\\n value to reflect the UI changes. I'm very sorry.\\n\\n** Bladeburner **\\n\\n- General actions now display time required.\\n- Recruitment now displays success chance.\\n- All other success chance now display a range instead of a single value\\n The real value is guaranteed to be within that range.\\n\\n** Misc. **\\n\\n- Fix tutorial not working after Monaco upate\\n- Fix logbox logs not taking up the whole logbox\\n- Fix script editor shortcut (ctrl+b)\\n- Fix Corporation popup appearing in the wrong order, hiding one of them\\n- Fix error when loading Corp\\n- Fix logbox dragging (smoother now)\\n- Fix logbox name collision\\n- Fix logbox allowing to open the same box multiple times\\n- Fix netscript write.\\n- nerf noodle bar\\n\\n## v0.52.6 - 2021-08-21 Logboxes and VS-code (hydroflame)\\n\\n** Text Editor **\\n\\n- Ace and Codemirror have been removed in favor of monaco (web version of\\n vs-code). The options are a bit lackluster but more will be added as\\n feedback comes.\\n\\n** Log boxes **\\n\\n- Multiple log boxes can be opened at once. They can be moved around the\\n screen. (but the movement behavior is a bit weird.)\\n\\n** Misc. **\\n\\n- Job promotion now correctly updates the UI.\\n- Milestones now call the faction CyberSec instead of CSEC\\n- Can no longer create file that break the filesystem.\\n- Remove dollar sign in blade contract UI element\\n- nerf noodle bar\\n\\n## v0.52.5 - 2021-08-19 CPU cores are useful!? (hydroflame)\\n\\n** Terminal **\\n\\n- When executing 'run SCRIPT' any script can now add '--tail' to\\n automatically bring up the logs.\\n\\n** Netscript **\\n\\n- The 'flags' function now works with single letter flags but they only take\\n one dash.\\n- Fix several broken bladeburner netscript functions.\\n- Fix gang.getMemberInformation returning inconsistent data after the gang\\n rework.\\n\\n** CPU Cores **\\n\\n- CPU Cores on the home computer now provide a bonus to grow() money gain\\n and makes weaken lower more security. Only for scripts running on 'home'\\n\\n** Misc. **\\n\\n- Fix weird scrolling in the new Bladeburner React console.\\n- nerf noodle bar\\n\\n## v0.52.4 - 2021-08-19 Bladeburner in React (hydroflame)\\n\\n** Bladeburner **\\n\\n- The entire UI was rebuild in React. It should be more responsive\\n\\n** Hacknet **\\n\\n- Displays how many time each hash upgrade was bought.\\n- Displays cummulative effect of the upgrade.\\n- Removed \\\"Close\\\" button from hash upgrade menu.\\n\\n** Misc. **\\n\\n- More popup/modals have dark background, can be dismissed by clicking\\n outside, or by pressing escape.\\n- Small reword in the guide.\\n- Fix several typos in the bladeburner documentation.\\n- Linting (no one cares except the dev)\\n- nerf noodle bar\\n\\n## v0.52.3 - 2021-08-15 Gangs were OP (hydroflame)\\n\\n** Gang **\\n\\n- Significant rework. Ascension is now based on exp gained.\\n- All upgrades give exp bonuses.\\n- Maximum gang members reduced to 12.\\n- Respect required to recruit sharply increased.\\n- Rewritten in React, the UI should be smoother and less laggy now.\\n\\n** Infiltration **\\n\\n- Now isTrusted protected.\\n\\n** Misc. **\\n\\n- Many UI element are now \\\"noselect\\\" protected.\\n- Fixed an issue where you could join the same faction twice via script and\\n UI simultaneously.\\n- Factions list screen converted to React.\\n- nerf noodle bar\\n\\n## v0.52.2 - 2021-08-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)\\n\\n** Source-Files **\\n\\n- Source-File 11 now also provides a small reduction to the price increase\\n multiplier.\\n\\n** Augmentations **\\n\\n- New Augmentation offered by Aevum, themed around 777 and offers some basic\\n programs.\\n- Augmentation descriptions are now more concise and consistent.\\n\\n** Misc. **\\n\\n- nerf noodle bar\\n\\n## v0.52.1 - 2021-08-10 bugfixing (hydroflame & community)\\n\\n** Misc. **\\n\\n- Fix game crash/corruption when quitting a job while working for it unfocused.\\n- Fix typo in corporation Market Data.\\n- Fix typo in docs for hackPercent.\\n- The tutorial encourages the players to connect to home before creating `n00dles.script`\\n- The dark web `buy` command now accepts `-1` (one) and `--list` instead of just `-l`. Helps some confused players.\\n- Character overview screen no longer hidden on the corporation screen.\\n- Infiltration difficulty display is now more explicit (It's a big arrow instead of just one word.)\\n- Fix wrong ram value in tutorial. (@MageKing17)\\n- Plenty of augmentation description cleanup (@Kwazygloo)\\n- Plenty of typo/description fixed (@MageKing17)\\n- Cleanup description of singularity function on readthedocs (@PurePandemonium)\\n- Fix bug when autolinking a server while backdooring (@schroederIT)\\n- nerf noodle bar\\n\\n## v0.52.0 - 2021-06-13 Infiltration 2.0 (hydroflame & community)\\n\\n**Infiltration**\\n\\n- Completely reworked. Not the same mechanic at all.\\n\\n**Terminal**\\n\\n- tail is smarter. It automatically assume the only possible options in some\\n cases.\\n\\n**Intelligence**\\n\\n- Now available when starting BN5 instead of after beating it for the first\\n time.\\n- Nerf the effect of intelligence on reputation gain.\\n\\n**Augmentation**\\n\\n- Added a new augmentation, the 'Unstable Circadian Modulator', whose\\n gimmick is that its stats are randomized every hour.\\n\\n**Netscript**\\n\\n- 'getPlayer' is not a singularity function anymore.\\n- 'hacknetNodes.constants' returns the correct values.\\n- 'createGang' has been added.\\n- 'inGang' has been added.\\n\\n**Tutorial**\\n\\n- Updated the tutorial. Made it look cleaner, fixed typos, etc.\\n\\n**Misc.**\\n\\n- Fix many typos in literature (@kwazygloo)\\n- Fix being able to unfocus from gym and university.\\n- Fix being able to do hacking missions while unfocused.\\n- Fix many typos in Augmentation descriptions (@kwazygloo)\\n- More numbers handle absurdly large values. (@Tesseract1234567890)\\n- Fix many typos (@Tesseract1234567890)\\n- Fixed an issue that caused a UI desync when sleeves were set to workout\\n stats other than strength at the gym.\\n- Fix weird alignment of donation text box and button. (@Tesseract1234567890)\\n- Fixed an issue where reputation could be transfered to new jobs when unfocused.\\n- Empty stack traces should no longer appear.\\n- Purchasing anything with Infinity money doesn't result in NaN.\\n- nerf noodle bar\\n\\n## v0.51.10 - 2021-05-31 Focus Mark, Focus! (hydroflame)\\n\\n**Focus**\\n\\n- You can now use the terminal and write scripts while working for factions\\n but you will gain reputation at a slower rate.\\n\\n**SF -1**\\n\\n- Added a new SF -1: Bypass\\n\\n**Gang**\\n\\n- \\\"Vigilante justice\\\"/\\\"Ethical hacking\\\" now reduces wanted level by a very\\n small percentage as well an absolute value.\\n\\n**Netscript**\\n\\n- 'tFormat' now has a second argument to display with millisecond precision.\\n- 'purchaseSleeveAug' can no longer purchase the same aug over and over for\\n the same sleeve.\\n- fix typo in logging for 'getServerSecurityLevel'\\n- Fixed some weird issue where very rarely you would get 0 exp from 'grow'\\n- 'getActionTime' now returns correct values for Diplomacy and Regeneration.\\n\\n**Corporations**\\n\\n- Fixed an exploit where you could get nearly infinite corporation funds by\\n entering negative numbers in textboxes.\\n- Fixed an exploit where shares could be sold again by clicking the\\n \\\"sell share\\\" button via scripts.\\n\\n**Documentation**\\n\\n- typo fix in purchaseTor\\n- typo fix in basicgameplay/stats\\n\\n**Misc.**\\n\\n- Very large number will no longer appear as \\\"$NaNt\\\"\\n- Hash capacity now displays in the \\\"big number\\\" format.\\n- nerf noodle bar\\n\\n## v0.51.9 - 2021-05-17 offline progress and exports! (hydroflame & community)\\n\\n**Alias**\\n\\n- several commands can be included in 1 alias. Recursive alias now work to\\n a depth of 10. (@Dawe)\\n\\n**Offline**\\n\\n- Offline money gain has been reworked (it is more generous)\\n- If you're not working anywhere and go offline the game will work for you\\n at all your factions evenly.\\n\\n**Export**\\n\\n- Exporting now gives +1 favor to all joined factions every 24h.\\n\\n**Corp**\\n\\n- Self-fund with an invalid name no longer takes away 150b anyway.\\n- Can no longer export negative amount\\n\\n**Bladeburner**\\n\\n- No longer waste overflowing time.\\n\\n**Text Editors**\\n\\n- All settings will now be saved and loaded correctly.\\n\\n**Terminal**\\n\\n- 'scan' now works for servers that are more than 21 character long.\\n\\n**Misc.**\\n\\n- ls now correctly lists all files.\\n- importing auto save+reloads (@Dawe)\\n- Fix a bug where .fconf could not be created\\n- Fix formatting inconsistencies for some logs of netscript functions.\\n- Fix a bug where Cashroot starter kit would appear as [object Object] in\\n confirmation dialog.\\n- Fix some ram not displayed as 0.00GB\\n- Fix error message throw undefined variable error\\n- City hall now has some generic text if you can't create a corp yet.\\n- Deleting a file without extension now returns an appropriate error message.\\n- Fixed an issue where bladeburner would miscalculate the cost of hospitalization.\\n- It is now possible to suppress bladeburner \\\"action stopped\\\" popup.\\n- Updated several dependencies (big who cares, I know)\\n- ls no longer prints lingering newline.\\n- Money earned/spent by sleeves is now tracked under Character>Money\\n- nerf noodle bar\\n\\n## v0.51.8 - 2021-05-07 It was there all along (hydroflame & community)\\n\\n**Servers**\\n\\n- Update n00dles metadata\\n\\n**Netscript**\\n\\n- 'hashGainRate' use the correct 'usedRam' and 'maxRam'\\n- Fix 'setActionAutolevel' logging.\\n- Fix 'setActionLevel' not working at all.\\n- Add 'installBackdoor' singularity function.\\n\\n**Hacknet**\\n\\n- Fix Hacknet Servers total production always displaying 0\\n\\n**Documentation**\\n\\n- Updated guide to no longer recommend BN12.\\n- Fix documentation for maxNumNodes (@ModdedGamers)\\n- Fix typo in 'sourcefiles.rst'\\n- Fix typo in 'recommendedbitnodeorder.rst'\\n- Fix 'getServer' documentation missing 'server' argument.\\n- Fix missing ram cost in 'getData.rst'\\n- Fix basic formulas examples.\\n- Fix typo in BN11 description.\\n- Fix formatting issue in Bladeburner (@Pimgd)\\n\\n**Misc.**\\n\\n- Fix negative money being displayed in full.\\n- Fix Hacking Missions not working.\\n- Fix Corporation tree not rendering.\\n- Fix script being needlessly recompiled. This should save real ram (not game ram)\\n- w0r1d_d43m0n can be backdoored\\n- Coding Contracts title is click-to-copy (@Rodeth)\\n- Covenant memory upgrade works better.\\n- Fix Neuroflux not being correctly calculated when entering BN with SF12.\\n- Delete Active Script now delete all active scripts, not just home.\\n- Now you can 'cd' in directories that only contain '.txt' files.\\n- Fix 'analyze' always saying players had root access\\n- Passive faction rep no longer builds for special factions.\\n- Donation option no longer appears for special factions.\\n- Rephrased some milestones.\\n- donation textbox now accepts money in the format '1b' and the like (@Dawe)\\n- Fix being able to join hated factions simultaneously. (@Dawe)\\n- 'ls' now displays files in multiple column. (Helps players with many files)\\n- Bladeburner multiplers now appear under Character>Stats and\\n Character>Augmentation when they are relevant.\\n- Fix missing functions syntax highlight in codemirror.\\n- Fix infiltration number formatting.\\n- script income transfers to parent on death. This helps keep track of\\n income for scripts that spawn short lived scripts.\\n- nerf noodle bar\\n\\n## v0.51.7 - 2021-04-28 n00dles (hydroflame & community)\\n\\n**Tutorial servers**\\n\\n- All the tutorial servers have been reverted to their original value\\n- The new server n00dles has been added as tutorial server.\\n\\n**Terminal**\\n\\n- 'tail' now accepts Pid.\\n- 'analyze' now handles Hacknet Servers correctly.\\n- 'ServerProfiler.exe' now handles Hacknet Servers correctly.\\n\\n**SF12**\\n\\n- Now makes you start with Neuroflux Governor equal to the level of the SF.\\n\\n**Netscript**\\n\\n- Deprecated 'getServerRam'.\\n- 'getServerMaxRam' added to replace 'getServerRam'\\n- 'getServerUsedRam' added to replace 'getServerRam'\\n- 'getBitnodeMultipliers' is available inside BN5\\n- Time logged by hack/grow/weaken now displays in human time.\\n- thread count logged by hack/grow/weaken now displays with commas every\\n thousands place.\\n\\n**Donation**\\n\\n- Always visible but locked until favor requirements are reached.\\n\\n**Augmentations**\\n\\n- City factions has been rebalanced to give a reason to visit them all.\\n\\n**Sleeves**\\n\\n- Fix sleeves not being able to work at Volhavens gym.\\n\\n**Lint**\\n\\n- This shouldn't change anything but was like 10h of work. So I'm logging it.\\n\\n**Misc.**\\n\\n- Plethora of typo fixed (@Pimgd)\\n- ps documentation fix (@Dawe)\\n- The dev menu now has a quick bitflume option.\\n- Fix SF -1 not being as powerful as intended.\\n- Fix cashroot starter kit not displaying correctly.\\n- Fix DOM element 'character-overview-text' being nested twice.\\n- Hacknet documentation example fix.\\n- Money amount under 1000 dont display 3 decimal anymore.\\n- Fix nextSourceFile flag miscalculation on the bitverse (for Bn12)\\n- Faction invite text says \\\"Decide later\\\"/\\\"Join!\\\" instead of \\\"No\\\"/\\\"Yes\\\"\\n- nerf noodle bar\\n\\n## v0.51.6 - 2021-04-28 Backdoor! (hydroflame & community)\\n\\n**Backdoor**\\n\\n- a new terminal command, backdoor, has been added to help differentiate\\n between the terminal hack command and the netscript hack function. (@dewint)\\n\\n**Servers**\\n\\n- foodnstuff, sigma-cosmetics, and joesguns have been rebalanced to help new players.\\n\\n**Milestones**\\n\\n- A new tab under the Help menu has been added to guide players through the\\n game.\\n\\n**Casino**\\n\\n- Blackjack has been added (@BigD)\\n\\n**Netscript**\\n\\n- 'prompt' now converts input to JSON.\\n- 'getRunningScript' is a new netscript function that returns a bunch of\\n data related to a running script.\\n\\n**Coding contracts**\\n\\n- trivial puzzles should no longer appear.\\n\\n**Infiltration**\\n\\n- All numbers are formatted like the rest of the game.\\n\\n**Misc.**\\n\\n- Server security is capped at 100.\\n- Added option to quit a job.\\n- 'cd' no longer works on unexistent folders.\\n- cd with no arguments brings you back to top level folder (@Andreas)\\n- 'softReset' documentation udpated.\\n- Money tracker now accounts for going to the hospital manually.\\n- codemirror is now the default editor (for new save files)\\n- fix typo in dark web help text (@Rodeth)\\n- so many documentation and typos fixes (@Pimgd)\\n- A corruption visual effect has been added to location with servers that\\n have backdoor installed. (@dewint)\\n- nerf noodle bar\\n\\n## v0.51.5 - 2021-04-20 Flags! (hydroflame)\\n\\n**Netscript**\\n\\n- 'flags' is a new function that helps script handle flags.\\n This is subject to change if it doesn't meet the need of the players.\\n- 'ps' now returns the pid.\\n- 'tail' now works with pid as first argument.\\n- 'tail' hostname defaults to current server. (like the documentation says)\\n- 'isRunning' hostname defaults to current server.\\n- 'isRunning' now works with pid as first argument.\\n\\n**Gang**\\n\\n- Nerfed ascension mechanic once again :(\\n\\n**Misc.**\\n\\n- Souce-File typo fix\\n- Fix 'while you were away' screen.\\n- Bladeburner team size can no longer be set to negative amounts.\\n- nerf noodle bar\\n\\n## v0.51.4 - 2021-04-19 Manual hacking is fun (hydroflame)\\n\\n**Manual hacking**\\n\\n- These bonus require an install or a soft reset to take effect.\\n- Manual hacking gyms and university gives you a 10% discount.\\n- Manual hacking a corporation server decreases the penalty for leaving work\\n early.\\n\\n**BladeBurner**\\n\\n- nerfed int exp gained.\\n\\n**Documentation**\\n\\n- purchaseServer specifies what happens on failure.\\n- Fixed typo in recommended bitnode page.\\n- Removed misleading ram requirements for hacking factions.\\n\\n**Netscript**\\n\\n- growthAnalyze handles Infinity correctly.\\n\\n**Misc.**\\n\\n- Faction Augmentation will list how much reputation is required even after\\n that goal has been reached.\\n- Removed dollar sign in travel agency confirmation dialog box.\\n- Fixed typo in alpha-omega.lit\\n- the 'Game saved!' text no longer blocks the save game/options button.\\n- The text editor now remembers the location of your cursor and restores it.\\n- skills are recalculated instantly.\\n- Fix typo in Operation Zero description.\\n- nerf noodle bar\\n\\n## v0.51.3 - 2021-04-16 Y'all broke it on the first day (hydroflame)\\n\\n**Passive faction reputation**\\n\\n- Reworked, from 1 rep / 2 minute. Now is a complicated percentage of the\\n reputation you'd gain working for them. It's not op but it feels a bit\\n more useful.\\n\\n**Netscript**\\n\\n- print/tprint now take any number of arguments.\\n- print/tprint will now print object as json.\\n- print/tprint now handle passing in an undefined argument properly.\\n\\n**Casino**\\n\\n- Cannot bet negative money anymore.\\n- Roulette max bet is a bit higher.\\n- Coin Flip has a small cooldown.\\n- All buttons reject unstrusted mouse events.\\n\\n**Documentation**\\n\\n- Changed a message that said nsjs only works on Chrome.\\n\\n**Bugfix**\\n\\n- hacknet.maxNumNodes now works for both nodes and servers.\\n- Fixed a bug where the popup boxes would contain data from previous popup boxes.\\n- .js files will also have the 'export async function' boilerplate.\\n\\n**Misc.**\\n\\n- turned off web form autocomplete for the terminal text input.\\n- Fixed an issue on Windows+Firefox where pressing up on the terminal would\\n bring the cursor to the begining of the line. (Issue #836)\\n- Hacknet node names is easier to handle for screen readers.\\n- Money spent on classes is now tracked independently of work money.\\n- running coding contract from the terminal will display its name.\\n- nerf noodle bar\\n\\n## v0.51.2 - 2021-04-09 Vegas, Baby! (hydroflame)\\n\\n**New location: The Iker Molina Casino**\\n\\n- A casino opened in Aevum. However the house is rumored to cheat. If only\\n we could give them a taste of their own medicine.\\n\\n**Misc.**\\n\\n- Link to discord added under options\\n- 'getMemberInformation' doc updated, oops\\n- tech vendor now handle max ram and cores.\\n- nerf noodle bar\\n\\n## v0.51.1 - 2021-04-06 Bugfixes because the author of the last patch sucks (it's hydroflame)\\n\\n**Netscript**\\n\\n- 'getPlayer' returns players faction and tor\\n- 'hospitalization' is a new singularity function.\\n- 'gang.getMemberInformation' now returns more information.\\n- 'hacknet.hashCapacity' is a new hacknet function that returns the maximum hash capacity.\\n\\n**Hospitalization**\\n\\n- Now only cost at most 10% of your money.\\n\\n**Bugfix**\\n\\n- confirmation dialog box no longer use previous text\\n\\n**Accessibility**\\n\\n- The game is a little easier to handle for screen readers (yes, there's an\\n absolute legend playing this game with a screen reader)\\n- Infiltration use buttons instead of a-links\\n- New option to disable ASCII art. This will make the metro map and world\\n map display as a list of buttons.\\n\\n**Misc.**\\n\\n- 'fl1ght.exe' will no longer suggest the combat path. Related faction\\n requirements unchanged.\\n- nerf noodle bar\\n\\n## v0.51.0 - 2021-03-31 Formulas (hydroflame)\\n\\n**Formulas API**\\n\\n- A new API is introduced, this gives players access to various formulas used in the game.\\n It'll help you make more informed decisions.\\n\\n**Netscript**\\n\\n- 'getServer' is a new function meant to be used with the formulas API.\\n- 'getPlayer' is a new function meant to be used with the formulas API.\\n- 'getStats' and 'getCharacterInformation' are deprecated in favor of 'getPlayer'\\n- 'getCurrentServer' is a new function that returns the server the player is currently connected.\\n\\n**Display**\\n\\n- All money should now consistently be orange.\\n- All rep should now consistently be light-yellow.\\n- Most numbers should display consistently now (aka all money is formatted the same).\\n\\n**Click to copy**\\n\\n- Certain UI elements are now 'click-to-copy'\\n\\n** Misc. **\\n\\n- nerf noodle bar\\n\\n## v0.50.2 - 2021-03-25 Everyone asked for this one. (hydroflame)\\n\\n**BitNodeMultipliers**\\n\\n- 'GangKarmaRequirements': a new multipler that influences how much karma is required to make a gang different bitnodes.\\n\\n**Netscript**\\n\\n- 'connect': a new singularity function that connects you to a server. (like the terminal command)\\n- 'manualHack': a new singularity function that performs a manual hack on the players current server.\\n- ns2 stack trace works on Firefox now.\\n\\n**Misc.**\\n\\n- New shortcut, Alt + b, brings you to bladeburner\\n- New shortcut, Alt + g, brings you to gang\\n- nerf noodle bar\\n\\n## v0.50.1 - 2021-03-22 (hydroflame)\\n\\n**Netscript**\\n\\n- getTaskStats works\\n\\n**Source-File -1**\\n\\n- Added a new Exploit\\n\\n**Factions**\\n\\n- Augmentations offered by a Faction but already bought are in a separate list at the bottom of the page.\\n\\n**Bug fixed**\\n\\n- Fixed a bug where completing a maxed non-repeatable BitNode would make its color on the BitVerse like level 1.\\n\\n**Misc.**\\n\\n- Minor spacing in stats tables.\\n- nerf noodle bar\\n\\n## v0.50.0 - 2021-03-20 Intelligence (hydroflame)\\n\\n**Intelligence**\\n\\n- int exp gain and effect has been reworked. It is now much more easy to\\n acquire and far more powerful. The goal here is to feel like players have\\n another tool in their arsenal.\\n\\n**Factions**\\n\\n- Hacking factions no longer have hacking level requirements since their associated servers do.\\n\\n**Misc.**\\n\\n- Sleeve styling.\\n- number formatting\\n- remove wiki button in Hacking Missions.\\n- Fix NaN displayed when very very large numbers are reached.\\n- nerf noodle bar\\n\\n## v0.49.2 - 2021-03-13 (hydroflame)\\n\\n**BN8**\\n\\n- A new bitnode multipler has been added, it lets you reduce money from a\\n server without gaining actually any money. This is important for BN8 where\\n hack/grow can influence the stock market. No money can be gained from\\n hacking but server money can still be reduced.\\n\\n**Documentation**\\n\\n- readthedocs should now be more consistent and many examples were added.\\n\\n**Netscript**\\n\\n- Ace editor will now correctly highlight all functions.\\n- 'tFormat' is a new netscript function that returns a human readable\\n representation of milliseconds. eg. \\\"2 hours 15 minute 43 seconds\\\"\\n\\n**Gang**\\n\\n- style improvements\\n\\n**Bladeburner**\\n\\n- style improvements\\n- fix bug where 'skill list SKILL' would crash if skill is level 0.\\n\\n**Sleeve**\\n\\n- karma gain now scales with sync.\\n\\n**Misc.**\\n\\n- Fix issue where the effective stats under Character>Stats were being calculated.\\n- nerf noodle bar\\n\\n## v0.49.0 - 2021-03-11 Source-File -1 (hydroflame)\\n\\n**Source-File -1**\\n\\n- For advanced players: The game now embraces exploits and will reward\\n players for doing so.\\n\\n**Gang**\\n\\n- ascension is less effective as the ascension multiplier goes up.\\n- territory gain scales with power difference.\\n\\n**Netscript**\\n\\n- 'gang.getEquipmentStats' returns the stats of the equipment.\\n- 'gang.getTaskStats' returns the stats of a task.\\n- 'getCrimeStats' returns the stats of a crime.\\n- Crashes should now print the ns stack trace.\\n- Log messages are now more consistent.\\n- 'softReset' now accepts a callback script like 'installAugmentations'\\n\\n**Misc.**\\n\\n- Minor formatting under Hacking>Active Scripts\\n- option menu colors now match the rest of the game, kinda.\\n- nerf noodle bar\\n\\n## v0.48.0 - ASCII - 2021-03-07 (hydroflame)\\n\\n**ASCII**\\n\\n- Travel Agency now displays a world map\\n- Cities are now top view of metro station maps\\n\\n**Netscript**\\n\\n- 'softReset' is a new netscript function that performs a soft reset\\n regardless of if the player has bought augmentations or not.\\n- 'getAugmentationStats' is a new netscript function that returns the stats of\\n an augmentation.\\n- getCharacterInformation now additionally returns exp\\n- pid resets back to 1 when installing or destroying a BitNode.\\n- New '.ns' scripts start with a main function.\\n- 'hacknet.maxNumNodes' returns the maximum number of hacknet nodes.\\n\\n**Bladeburner**\\n\\n- Current stamina will scale as max stamina increases, this prevents players\\n from having very high penalty when they gain huge amount of exp at the\\n start of a reset.\\n\\n**Misc.**\\n\\n- Fixed an issue where SF3 was listed as infinitly repeatable and SF12 as\\n having a limit of 3.\\n- Fixed an issue where the gang equipment screen would freeze the game if a\\n script installed augmentations while it is open.\\n- All BonusTime now displays in the 'H M S' format.\\n- Donation textbox style updated to match the rest of the game.\\n- Corporation name style updated to match the rest of the game.\\n- minor formatting under Hacking>Active Scripts\\n- typo in BN12 description\\n- BN12 now reduces contract money\\n- Character>Stats percentages are aligned, server and hacknet limit are\\n displayed, if the player has SF5 the reduces stats are shown.\\n- Character>Augmentations now displays by how much the player stats will\\n increase.\\n- Character>Augmentations has a badge indicating how many augs the player\\n has bought but not installed\\n- Character>Factions has a badge indicating how many factions have pending\\n invites.\\n- nerf noodle bar\\n\\n## v0.47.2 - 7/15/2019\\n\\n**Netscript Changes**\\n\\n- Added tail() Netscript function\\n- hacknet.getNodeStats() function now returns an additional property for Hacknet Servers: hashCapacity\\n- When writing to a file, the write() function now casts the data being written to a string (using String())\\n- BitNode-selection page now shows what Source-File level you have for each BitNode\\n- Overloaded kill() function so that you can kill a script by its PID\\n- spawn() now only takes 10 seconds to run (decreased from 20 seconds)\\n- run() and exec() now return the PID of the newly-executed scripts, rather than a boolean\\n - (A PID is just a positive integer)\\n- run(), exec(), and spawn() no longer need to be await-ed in NetscriptJS\\n- Script parsing and RAM calculations now support ES9\\n- installAugmentations() no longer has a return value since it causes all scripts to die\\n- isBusy() now returns true if you are in a Hacking Mission\\n- Bug fix: workForFaction() function now properly accounts for disabled logs\\n- Bug fix: RAM should now be properly calculated when running a callback script with installAugmentations()\\n- Bug fix: Fixed bug that caused scripts killed by exit()/spawn() to \\\"clean up\\\" twice\\n\\n**Misc Changes**\\n\\n- The 'kill' Terminal command can now kill a script by its PID\\n- Added 'Solarized Dark' theme to CodeMirror editor\\n- After Infiltration, you will now return to the company page rather than the city page\\n- Bug fix: Stock Market UI should no longer crash for certain locale settings\\n- Bug fix: You can now properly remove unfinished programs (the `*.exe-N%-INC` files)\\n- Bug fix: Fixed an issue that allowed you to increase money on servers with a 'maxMoney' of 0 (like CSEC)\\n- Bug fix: Scripts no longer persist if they were started with syntax/import errors\\n- Bug fix: 'hack' and 'analyze' Terminal commands are now blocking\\n- Bug fix: Exp earned by duplicate sleeves at universities/gyms now takes hash upgrades into account\\n\\n## v0.47.1 - 6/27/2019\\n\\n- Stock Market changes:\\n\\n - Transactions no longer influence stock prices (but they still influence forecast)\\n - Changed the way stocks behave, particularly with regard to how the stock forecast occasionally \\\"flips\\\"\\n - Hacking & growing a server can potentially affect the way the corresponding stock's forecast changes\\n - Working for a company positively affects the way the corresponding stock's forecast changes\\n\\n- Scripts now start/stop instantly\\n- Improved performance when starting up many copies of a new NetscriptJS script (by Ornedan)\\n- Improved performance when killing scripts\\n- Dialog boxes can now be closed with the ESC key (by jaguilar)\\n- NetscriptJS scripts should now be \\\"re-compiled\\\" if their dependencies change (by jaguilar)\\n- write() function should now properly cause NetscriptJS scripts to \\\"re-compile\\\" (by jaguilar)\\n\\n## v0.47.0 - 5/17/2019\\n\\n- Stock Market changes:\\n\\n - Implemented spread. Stock's now have bid and ask prices at which transactions occur\\n - Large transactions will now influence a stock's price and forecast\\n - This \\\"influencing\\\" can take effect in the middle of a transaction\\n - See documentation for more details on these changes\\n - Added getStockAskPrice(), getStockBidPrice() Netscript functions to the TIX API\\n - Added getStockPurchaseCost(), getStockSaleGain() Netscript functions to the TIX API\\n\\n- Re-sleeves can no longer have the NeuroFlux Governor augmentation\\n\\n - This is just a temporary patch until the mechanic gets re-worked\\n\\n- hack(), grow(), and weaken() functions now take optional arguments for number of threads to use (by MasonD)\\n- codingcontract.attempt() now takes an optional argument that allows you to configure the function to return a contract's reward\\n- Adjusted RAM costs of Netscript Singularity functions (mostly increased)\\n- Adjusted RAM cost of codingcontract.getNumTriesRemaining() Netscript function\\n- Netscript Singularity functions no longer cost extra RAM outside of BitNode-4\\n- Corporation employees no longer have an \\\"age\\\" stat\\n- Gang Wanted level gain rate capped at 100 (per employee)\\n- Script startup/kill is now processed every 3 seconds, instead of 6 seconds\\n- getHackTime(), getGrowTime(), and getWeakenTime() now return Infinity if called on a Hacknet Server\\n- Money/Income tracker now displays money lost from hospitalizations\\n- Exported saves now have a unique filename based on current BitNode and timestamp\\n- Maximum number of Hacknet Servers decreased from 25 to 20\\n- Bug Fix: Corporation employees stats should no longer become negative\\n- Bug Fix: Fixed sleeve.getInformation() throwing error in certain scenarios\\n- Bug Fix: Coding contracts should no longer generate on the w0r1d_d43m0n server\\n- Bug Fix: Duplicate Sleeves now properly have access to all Augmentations if you have a gang\\n- Bug Fix: getAugmentationsFromFaction() & purchaseAugmentation() functions should now work properly if you have a gang\\n- Bug Fix: Fixed issue that caused messages (.msg) to be sent when refreshing/reloading the game\\n- Bug Fix: Purchasing hash upgrades for Bladeburner/Corporation when you don't actually have access to those mechanics no longer gives hashes\\n- Bug Fix: run(), exec(), and spawn() Netscript functions now throw if called with 0 threads\\n- Bug Fix: Faction UI should now automatically update reputation\\n- Bug Fix: Fixed purchase4SMarketData()\\n- Bug Fix: Netscript1.0 now works properly for multiple 'namespace' imports (import \\\\* as namespace from \\\"script\\\")\\n- Bug Fix: Terminal 'wget' command now correctly evaluates directory paths\\n- Bug Fix: wget(), write(), and scp() Netscript functions now fail if an invalid filepath is passed in\\n- Bug Fix: Having Corporation warehouses at full capacity should no longer freeze game in certain conditions\\n- Bug Fix: Prevented an exploit that allows you to buy multiple copies of an Augmentation by holding the 'Enter' button\\n- Bug Fix: gang.getOtherGangInformation() now properly returns a deep copy\\n- Bug Fix: Fixed getScriptIncome() returning an undefined value\\n- Bug Fix: Fixed an issue with Hacknet Server hash rate not always updating\\n\\n## v0.46.3 - 4/20/2019\\n\\n- Added a new Augmentation: The Shadow's Simulacrum\\n- Improved tab autocompletion feature in Terminal so that it works better with directories\\n- Bug Fix: Tech vendor location UI now properly refreshed when purchasing a TOR router\\n- Bug Fix: Fixed UI issue with faction donations\\n- Bug Fix: The money statistics & breakdown should now properly track money earned from Hacknet Server (hashes -> money)\\n- Bug Fix: Fixed issue with changing input in 'Minimum Path Sum in a Triangle' coding contract problem\\n- Fixed several typos in various places\\n\\n## v0.46.2 - 4/14/2019\\n\\n- Source-File 2 now allows you to form gangs in other BitNodes when your karma reaches a very large negative value\\n\\n - (Karma is a hidden stat and is lowered by committing crimes)\\n\\n- Gang changes:\\n\\n - Bug Fix: Gangs can no longer clash with themselve\\n - Bug Fix: Winning against another gang should properly reduce their power\\n\\n- Bug Fix: Terminal 'wget' command now works properly\\n- Bug Fix: Hacknet Server Hash upgrades now properly reset upon installing Augs/switching BitNodes\\n- Bug Fix: Fixed button for creating Corporations\\n\\n## v0.46.1 - 4/12/2019\\n\\n- Added a very rudimentary directory system to the Terminal\\n\\n- Added numHashes(), hashCost(), and spendHashes() functions to the Netscript Hacknet Node API\\n- 'Generate Coding Contract' hash upgrade is now more expensive\\n- 'Generate Coding Contract' hash upgrade now generates the contract randomly on the server, rather than on home computer\\n- The cost of selling hashes for money no longer increases each time\\n- Selling hashes for money now costs 4 hashes (in exchange for $1m)\\n- Bug Fix: Hacknet Node earnings should work properly when game is inactive/offline\\n- Bug Fix: Duplicate Sleeve augmentations are now properly reset when switching to a new BitNode\\n\\n## v0.46.0 - 4/3/2019\\n\\n- Added BitNode-9: Hacktocracy\\n- Changed BitNode-11's multipliers to make it slightly harder overall\\n- Source-File 11 is now slightly stronger\\n- Added several functions to Netscript Sleeve API for buying Sleeve augmentations (by hydroflame)\\n- Added a new stat for Duplicate Sleeves: Memory\\n- Increase baseline experience earned from Infiltration, but it now gives diminishing returns (on exp) as you get to higher difficulties/levels\\n- In Bladeburner, stamina gained from Hyperbolic Regeneration Chamber is now a percentage of your max stamina\\n\\n- Corporation Changes:\\n\\n - 'Demand' value of products decreases more slowly\\n - Bug Fix: Fixed a Corporation issue that broke the Market-TA2 Research\\n - Bug Fix: Issuing New Shares now works properly\\n\\n- Bug Fix: Money Statistics tracker was incorrectly recording profits when selling stocks manually\\n- Bug Fix: Fixed an issue with the job requirement tooltip for security jobs\\n\\n## v0.45.1 - 3/23/2019\\n\\n- Added two new Corporation Researches\\n- General UI improvements (by hydroflame and koriar)\\n- Bug Fix: Sleeve Netscript API should no longer cause Dynamic RAM errors\\n- Bug Fix: sleeve.getSleeveStats() should now work properly\\n\\n## v0.45.0 - 3/22/2019\\n\\n- Corporation changes:\\n\\n - Decreased the time of a full market cycle from 15 seconds to 10 seconds.\\n - This means that each Corporation 'state' will now only take 2 seconds, rather than 3\\n - Increased initial salaries for newly-hired employees\\n - Increased the cost multiplier for upgrading office size (the cost will increase faster)\\n - The stats of your employees now has a slightly larger effect on production & sales\\n - Added several new Research upgrades\\n - Market-TA research now allows you to automatically set sale price at optimal values\\n - Market-TA research now works for Products (not just Materials)\\n - Reduced the amount of Scientific Research needed to unlock the Hi-Tech R&D Laboratory from 10k to 5k\\n - Energy Material requirement of the Software industry reduced from 1 to 0.5\\n - It is now slightly easier to increase the Software industry's production multiplier\\n - Industries now have a maximum number of allowed products, starting at 3. This can be increased through research.\\n - You can now see an approximation of how each material affects an industry's production multiplier by clicking the \\\"?\\\" help tip next to it\\n - Significantly changed the effects of the different employee positions. See updated descriptions\\n - Reduced the amount of money you gain from private investors\\n - Training employees is now 3x more effective\\n - Bug Fix: An industry's products are now properly separated between different cities\\n\\n- The QLink Augemntation is now significantly stronger, but also significantly more expensive (by hydroflame)\\n- Added a Netscript API for Duplicate Sleeves (by hydroflame)\\n- Modified the multipliers of BitNode-3 and BitNode-8 to make them slightly harder\\n- After installing Augmentations, Duplicate Sleeves will now default to Synchronize if their Shock is 0\\n- Bug Fix: Bladeburner's Hyperbolic Regeneration Chamber should no longer instantly refill all stamina\\n- Bug Fix: growthAnalyze() function now properly accounts for BitNode multipliers\\n- Bug Fix: The cost of purchasing Augmentations for Duplicate Sleeves no longer scales with how many Augs you've purchased for yourself\\n\\n## v0.44.1 - 3/4/2019\\n\\n- Duplicate Sleeve changes:\\n\\n - You can now purchase Augmentations for your Duplicate Sleeves\\n - Sleeves are now assigned to Shock Recovery task by default\\n - Shock Recovery and Synchronize tasks are now twice as effective\\n\\n- Changed documentation so that Netscript functions are own their own pages. Sorry if this is annoying, it was necessary for properly cross-referencing\\n- Officially deprecated the Wiki (the fandom site). Use the 'readthedocs' Documentation instead\\n- Bug Fix: 'rm' Terminal and Netscript commands now work on non-program files that have '.exe' in the name (by Github user MasonD)\\n- Bug Fix: The 'Find All Valid Math Expressions' Coding Contract should now properly ignore whitespace in answers\\n- Bug Fix: The 'Merge Overlapping Intervals' Coding Contract should now properly accept 2D arrays when being attempted through Netscript\\n\\n## v0.44.0 - 2/26/2019\\n\\n- Bladeburner Changes:\\n - Reduced the amount of rank needed to earn a skill point\\n - Reduced the effects of the \\\"Reaper\\\" and \\\"Evasive System\\\" skills\\n - Increased the effect of the \\\"Hyperdrive\\\" and \\\"Hands of Midas\\\" skills\\n - Slightly increased the rate which the skill point cost rises for almost all skills\\n - The \\\"Overlock\\\" Skill now has a maximum level of 90 instead of 95\\n - Money earned from Contracts increased by 400%\\n - Changed the way population affects success rate. Extreme populations now have less dramatic effects\\n - Added two new General Actions: Diplomacy and Hyperbolic Regeneration Chamber\\n - Lowered the rep and money cost of the \\\"Blade's Simulacrum\\\" augmentation\\n - Significantly decreased the initial amount of Contracts/Operations (the \\\"Contracts/Operations remaining\\\" value)\\n - Decreased the rate at which the amount of Contracts/Operations increases over time\\n - Decreased the number of successes you need to increase the max level of a Contract/Operation\\n - Increased the average number of Synthoid communities each city has\\n - Reduced the amount by which a successful raid will decrease the population of a city\\n - The \\\"riots\\\" event will now increase the chaos of a city by a greater amount\\n - Significantly increased the effect that Agility and Dexterity have on action time\\n- Added new BitNode multipliers:\\n - HomeComputerRamCost - Affects how much it costs to upgrade home computer's RAM\\n - DaedalusAugsRequirement - Affects how many Augmentations you need in order to get invited to Daedalus\\n - FourSigmaMarketDataCost - Affects how much it costs to unlock the stock market's 4S Market Data\\n - FourSigmaMarketDataApiCost - Affects how much it costs to unlock the stock market's 4S Market Data API\\n- A few minor changes to BitNode multipliers across the board (mostly for the new multipliers)\\n- 'The Covenant' now requires 20 total Augmentations to get invited, rather than 30\\n- You can now purchase permanent Duplicate Sleeves from 'The Covenant'. This requires Source-File 10, and you must be in BN-10 or after\\n- You can now track where all of your money comes from in the 'Stats' page\\n- Increased the money gained from Coding Contracts by 50%\\n- getCharacterInformation() function now returns the player's HP and max HP\\n- Bug Fix: You can no longer disconnect the enemy's connections in Hacking Missions\\n- Bug Fix: Duplicate Sleeve faction reputation gain is now properly affected by faction favor\\n- Bug Fix: After installing Augmentations, the Terminal display will now correctly show the current server as \\\"home\\\"\\n- Bug Fix: Fixed an exploit where you could change the duration of timed functions (e.g. hack, weaken) in NetscriptJS\\n- Bug Fix: You should now properly be able to use the ServerProfile.exe program\\n- Bug Fix: Prevented exploit that allowed you to accept faction invites programmatically through NetscriptJS\\n- Bug Fix: Faction invitations for megacorporations should now work properly\\n\\n## v0.43.1 - 2/11/2019\\n\\n- Terminal changes:\\n\\n - Quoted arguments are now properly parsed. (e.g. 'run f.script \\\"this is one argument\\\"' will be correctly parsed)\\n - Errors are now shown in red text\\n - 'unalias' command now has a different format and no longer needs the quotations\\n - Bug Fix: Fixed several edge cases where autocomplete wasn't working properly\\n\\n- Added two new Bladeburner skills for increasing money and experience gain\\n- Made some minor adjustments to Bladeburner UI\\n- Corporation \\\"Smart Factories\\\" and \\\"Smart Storage\\\" upgrades have slightly lower price multipliers\\n- Added nFormat Netscript function\\n- Added 6 new Coding Contract problems\\n- Updated documentation with list of all Coding Contract problems\\n- Minor improvements for 'Active Scripts' UI\\n- Implemented several optimizations for active scripts. The game should now use less memory and the savefile should be slightly smaller when there are many scripts running\\n- Bug Fix: A Stock Forecast should no longer go above 1 (i.e. 100%)\\n- Bug Fix: The cost of Resleeves should no longer be affected by buying Augs\\n- Bug Fix: Duplicate Sleeves now use their own stats to determine crime success rate, instead of the host consciousness' stats\\n- Bug Fix: You can now call the prompt() Netscript function from multiple scripts simultaneously\\n\\n## v0.43.0 - 2/4/2019\\n\\n- Added BitNode-10: Digital Carbon\\n\\n- Stock Market Changes:\\n\\n - Each stock now has a maximum number of shares you can purchase (both Long and Short positions combined)\\n - Added getStockMaxShares() Netscript function to the TIX API\\n - The cost of 4S Market Data TIX API Access increased from $20b to $25b\\n\\n- Job Changes:\\n\\n - You can now hold multiple jobs at once. This means you no longer lose reputation when leaving a company\\n - Because of this change, the getCharacterInformation() Netscript function returns a slightly different value\\n\\n- Script Editor Changes:\\n\\n - Added new script editor: CodeMirror. You can choose between the old editor (Ace) or CodeMirror\\n - Navigation keyboard shortcuts no longer work if the script editor is focused\\n\\n- Trying to programmatically run a script (run(), exec()) with a 'threads' argument of 0 will now cause the function to return false without running the script\\n- Home Computer RAM is now capped at 2 ^ 30 GB (1073741824 GB)\\n- The maximum amount, maximum RAM, and cost of purchasing servers can now vary between different BitNodes (new BitNode multipliers)\\n- Pop-up dialog boxes are a little bit bigger\\n- Bug Fix: When importing scripts, \\\"./\\\" will now be properly ignored (e.g. import { foo } from \\\"./lib.script\\\" )\\n\\n## v0.42.0 - 1/8/2019\\n\\n- Corporation Changes:\\n\\n - Corporation can now be self-funded with $150b or using seed money in exchange for 500m newly-issued shares\\n - In BitNode-3, you no longer start with $150b\\n - Changed initial market prices for many materials\\n - Changed the way a material's demand, competition, and market price change over time\\n - The sale price of materials can no longer be marked-up as high\\n - Added a Research Tree mechanic. Spend Scientific Research on permanent upgrades for each industry\\n - You can now redistribute earnings to shareholders (including yourself) as dividends\\n - Cost of \\\"Smart Supply\\\" upgraded reduced from $50b to $25b\\n - Now has offline progress, which works similarly to the Gang/Bladeburner mechanics\\n - Slightly reduced the amount of money offered to you by investment firms\\n - Employee salaries now slowly increase over time\\n - Slightly reduced the effect \\\"Real Estate\\\" has on the Production Multiplier for the Agriculture industry\\n - Changed the way your Corporation's value is calculated (this is what determines stock price)\\n - After taking your corporation public, it is now possible to issue new shares to raise capital\\n - Issuing new shares can only be done once every 12 hours\\n - Buying back shares must now be done at a premium\\n - Selling shares can now only be done once per hour\\n - Selling large amounts of shares now immediately impacts stock price (during the transaction)\\n - Reduced the initial cost of the DreamSense upgrade from $8b to $4b, but increased its price multiplier\\n - Reduced the price multiplier for ABC SalesBots upgrade\\n\\n- Added getOrders() Netscript function to the TIX API\\n- Added getAugmentationPrereq() Singularity function (by havocmayhem)\\n- Added hackAnalyzePercent() and hackAnalyzeThreads() Netscript functions\\n- Stock Market, Travel, and Corporation main menu links are now properly styled\\n- Many pop-up/dialog boxes now support the 'Enter' and 'Esc' hotkeys. If you find a pop-up/dialog box that doesnt support this, let me know specifically which one ('Enter' for the default option, 'Esc' for cancelling and closing the pop-up box)\\n- Added \\\"brace_style = preserve_inline\\\" configuration to Script Editor Beautifier\\n- ServerProfiler.exe can now be purchased from the Dark Web\\n- Added an option to copy save data to clipboard\\n- Added total multiplier information on the \\\"Augmentations\\\" page\\n- Bug Fix: gymWorkout() Singularity function should now work properly with Millenium Fitness Gym\\n- Began migrating gameplay information to the ReadTheDocs documentation\\n\\n## v0.41.2 - 11/23/2018\\n\\n- IMPORTANT - Netscript Changes:\\n\\n - rm() now takes an optional parameter that lets you specify on which server to delete the file\\n - Added growthAnalyze() Netscript function\\n\\n- Gang Changes:\\n\\n - UI now displays your chance to win a clash with other gangs\\n - Added getChanceToWinClash() function to the Gang API\\n - Added getEquipmentType() function to the Gang API\\n - Added several new hacking-based equipment and Augmentations\\n - Rebalanced several equipment/upgrades to give less defense\\n - Wanted level gain rate is now be slightly higher for all tasks\\n - Rebalanced parameters for \\\"hacking\\\" tasks\\n\\n- Added new Main Menu configuration in .fconf: \\\"compact\\\"\\n- Added the terminal command 'expr', which can be used to evaluate simple mathematical expressions\\n- Bug Fix: Can no longer purchase duplicate equipment/Augmentations through gang.purchaseEquipment()\\n- Bug Fix: scp() should no longer throw errors when used with 2-arguments and an array of files\\n- Bug Fix: Coding Contracts no longer give money in BitNode-8\\n- Bug Fix: In Bladeburner, you can no longer start a BlackOp through the Netscript API if it has already been completed\\n- Bug Fix: In Bladeburner, fixed a bug which caused the configured 'automate' actions to occasionally be switched to other actions\\n- Bug Fix: 'Return to World' button at locations no longer accumulates event listeners\\n- Bug Fix: Working & taking classes now continuously add/subtract money during the action, instead of doing it at completion\\n- Bug Fix: Top-right overview panel now displays negative money using '-' instead of '()'\\n- Bug Fix: Stock Market UI should no longer show 'NaN' profit immediately after buying a stock\\n\\n## v0.41.1 - 11/5/2018\\n\\n- IMPORTANT - Netscript Changes:\\n\\n - purchaseTor() now returns true if you already have a TOR router (it used to return false)\\n - getPurchasedServerCost() now returns Infinity if the specified RAM is an invalid amount or is greater than the max amount of RAM (2 ^ 20 GB)\\n - Added purchase4SMarketData() and purchase4SMarketDataTixApi() functions\\n - getScriptLogs() now takes in optional arguments that let you get the logs of another script\\n\\n- Stock Market changes:\\n\\n - Stocks now have \\\"maximum prices\\\". These are hidden from the player\\n - If a stock reaches its \\\"maximum price\\\", it will most likely drop in value (although it might still rise)\\n - Each stock has its own, unique maximum price\\n - Maximum price for each stock are randomly generated and change during each 'reset'\\n - Stock Market cycles are now accumulated/stored, much like it is for Gangs and Bladeburners\\n - Accumulated/stored cycles cause stock prices to update up to 50% faster (from every 6 seconds to 4 seconds)\\n - This means that after coming back from being offline, stock prices will update faster to make up for offline time\\n\\n- Decreased the Hacking Level multiplier for BitNodes 6 and 7 to 0.4 (from 0.5)\\n- Bladeburner console history is now saved and persists when switching screens or closing/reopening the game\\n- In Bladeburner, if your stamina reaches 0 your current action will be cancelled\\n- b1t_flum3.exe is no longer removed from your home computer upon reset\\n- Added main menu link for the Stock Market (once you've purchased an account)\\n- Job main menu link only appears if you actually have a job\\n- Bug Fix: Netscript Gang API functions purchaseEquipment() and ascendMember() should now work properly\\n- Bug Fix: After installing Augs, the \\\"Portfolio Mode\\\" button on the Stock Market page should be properly reset\\n- Bug Fix: bladeburner.getActionCountRemaining()'s return value is now rounded down (by Kline-)\\n\\n## v0.41.0 - 10/29/2018\\n\\n- WARNING: In NetscriptJS, defining a function called print() is no longer possible\\n- Gang Mechanic Changes (BitNode-2):\\n - Added a Gang Netscript API\\n - Added new 'ascension' mechanic for Gang Members\\n - The first three gang members are now 'free' (can be recruited instantly)\\n - Maximum number of increased Gang Members increased from 20 to 30\\n - Changed the formula for calculating respect needed to recruit the next gang member\\n - Added a new category of upgrades for Gang Members: Augmentations\\n - Non-Augmentation Gang member upgrades are now significantly weaker\\n - Reputation for your Gang faction can no longer be gained through Infiltration\\n - Re-worked the territory 'warfare' mechanic so that player can choose when to engage in it\\n - Gang Members can now be killed during territory 'warfare'\\n - Changed BitNode-2 Multipliers to make hacking slightly less profitable\\n - Gang Member Equipment + Upgrades now get cheaper as your gang grows in power and respect\\n - The effects of Source-File 2 are now slightly more powerful\\n- RAM Cost of accessing the global document object lowered from 100 GB to 25 GB\\n- RAM Cost to use Singularity Functions outside of BitNode-4 lowered by 75%. They now only cost twice as much as they do in BitNode-4\\n- b1t_flum3.exe now takes significantly less time to create\\n- Crimes commited through Singularity function no longer give half money/exp (there is now no penalty)\\n- Improved number formatting for Player 'work' actions (including crimes, etc.). These numbers should also adhere to locale settings now (by Kline-)\\n- The order that Augmentations are listed in (when purchasing from Faction and viewing your Augmentations) is now saved and persists when choosing different orders\\n- getCharacterInformation() Singularity function now returns multiplier information (from Augmentations/Source Files)\\n- Bug Fix: Calling print() in NetscriptJS no longer brings up the print dialog\\n- Bug Fix: Fixed a bug that sometimes caused a blank black screen when destroying/resetting/switching BitNodes\\n- Bug Fix: Netscript calls that throw errors will now no longer cause the 'concurrent calls' error if they are caught in the script. i.e. try/catch should now work properly in scripts\\n- Bug Fix: Fixed a bug where sometimes the NeuroFlux Governor Augmentation level would be incorrectly calculated when the game was loaded\\n- Bug Fix: Fixed a bug where calling the scp() Netscript function with invalid hostname/ips would throw an unclear error message\\n- Bug Fix: Bladeburner API function getActionCountRemaining() should now work properly for BlackOps\\n- Bug Fix: Black Ops can no longer be attempted out-of-order or without the required rank via Bladeburner API\\n- Bug Fix: Dynamic RAM Calculation now properly accounts for number of threads\\n- RAM cost for basic Netscript functions added to documentation (by CBJamo)\\n\\n## v0.40.5 - 10/09/2018\\n\\n- Added codingcontract.getContractType() Netscript function\\n- Bug Fix: codingcontract.getData() Netscript function now returns arrays by value rather than reference\\n- Bug Fix: Decreased highest possible data value for 'Find Largest Prime Factor' Coding Contract (to avoid hangs when solving it)\\n- Bug Fix: Fixed a bug that caused game to freeze during Coding Contract generation\\n\\n## v0.40.4 - 9/29/2018\\n\\n- Added new Coding Contracts mechanic. Solve programming problems to earn rewards\\n- The write() and read() Netscript functions now work on scripts\\n- Added getStockSymbols() Netscript function to the TIX API (by InfraK)\\n- Added wget() Netscript function\\n- Added bladeburner.getActionRepGain() function to the Netscript Bladeburner API\\n- The getLevelUpgradeCost(), getRamUpgradeCost(), and getCoreUpgradeCost() functions in the Hacknet API now return Infinity if the node is at max level. See documentation\\n- It is now possible to use freely use angled bracket (<, >) and create DOM elements using tprint()\\n- The game's theme colors can now be set through the Terminal configuration (.fconf).\\n- You can now switch to the old left-hand main menu bar through the Terminal configuration (.fconf)\\n- Bug Fix: grow() percentage is no longer reported as Infinity when a server's money is grown from 0 to X\\n- Bug Fix: Infiltration popup now displays the correct amount of exp gained\\n\\n## v0.40.3 - 9/15/2018\\n\\n- Bladeburner Changes:\\n - Increased the effect that agi and dexterity have on action time\\n - Starting number of contracts/operations available will be slightly lower\\n - Random events will now happen slightly more often\\n - Slightly increased the rate at which the Overclock skill point cost increases\\n- The maximum volatility of stocks is now randomized (randomly generated within a certain range every time the game resets)\\n- Increased the range of possible values for initial stock prices\\n- b1t_flum3.exe program can now be created immediately at Hacking level 1 (rather than hacking level 5)\\n- UI improvements for the character overview panel and the left-hand menu (by mat-jaworski)\\n- General UI improvements for displays and Terminal (by mat-jaworski)\\n- Added optional parameters to the getHackTime(), getGrowTime(), and getWeakenTime() Netscript functions\\n- Added isLogEnabled() and getScriptLogs() Netscript functions\\n- Added donateToFaction() Singularity function\\n- Updated documentation to reflect the fact that Netscript port handles (getPortHandle()) only works in NetscriptJS (2.0), NOT Netscript 1.0\\n- Added tryWrite() Netscript function\\n- When working (for a company/faction), experience is gained immediately/continuously rather than all at once when the work is finished\\n- Added a setting in .fconf for enabling line-wrap in the Terminal input\\n- Adding a game option for changing the locale that most numbers are displayed in (this mostly applies for whenever money is displayed)\\n- The randomized parameters of many high-level servers can now take on a higher range of values\\n- Many 'foreign' servers (hackable servers that you don't own) now have a randomized amount of RAM\\n- Added 'wget' Terminal command\\n- Improved the introductory tutorial\\n\\n## v0.40.2 - 8/27/2018\\n\\n- Bladeburner Changes:\\n - Added getBonusTime(), getSkillUpgradeCost(), and getCity() Netscript functions to the API\\n - Buffed the effects of many Bladeburner Augmentations\\n - The Blade's Simulacrum Augmentation requires significantly less reputation but slightly more money\\n - Slightly increased the amount of successes needed for a Contract/Operation in order to increase its max level\\n - Increased the amount of money gained from Contracts by ~25%\\n - Increased the base amount of rank gained from Operations by 10%\\n - Significantly increased the 'randomness' in determining a Contract/Operation's initial count and rate of count increase\\n - The number (count) of Operations should now increase significantly faster\\n - There are now, on average, more Synthoid communities in a city\\n - If automation is enabled (the feature in Bladeburner console), then switching to another action such as working for a company will now disable the automation\\n- Stock Market Changes:\\n - Added a watchlist filter feature to the UI that allows you to specify which stocks to show\\n - Added the Four Sigma (4S) Market Data feed, which provides volatility and price forecast information about stocks\\n - Added the 4S Market Data TIX API, which lets you access the aforementioned data through Netscript\\n- There is now a setting for enabling/disabling the popup that appears when you are hospitalized\\n- Bug Fix: Stock market should now be correctly initialized in BitNode-8 (by Kline-)\\n- Bug Fix: bladeburner.getCurrentAction() should now properly an 'Idle' object rather than null (by Kline-)\\n- Bug Fix: Bladeburner skill cost multiplier should now properly increase in BitNode-12 (by hydroflame)\\n- Bug Fix: 'document', 'hacknet', and 'window' keywords should no longer be counted multiple times in RAM calculations\\n- Bug Fix: Joining factions through Singularity functions should now prevent you from joining opposing factions\\n- Bug Fix: Four Sigma should no longer have two 'Speech Enhancement' Augmentations (by Kline-)\\n\\n## v0.40.1 - 8/5/2018 - Community Update\\n\\n- Added getPurchasedServerCost() Netscript function (by kopelli)\\n- Added getFavorToDonate() Netscript function (by hydroflame)\\n- Added getFactionFavorGain() and getCompanyFavorGain() Singularity functions (by hydroflame)\\n- Accumulated 'bonus' time in Bladeburner is now displayed in the UI (by hydroflame)\\n- The Red Pill can now be purchased with negative money (since its supposed to be free) (by hydroflame)\\n- Cranial Signal Processor Augmentations now have the previous generation as a prerequisite. i.e. Cranial Signal Processor - Gen II requires Gen I (by Kline-)\\n- Terminal now supports semicolon usage (end of command). This allows chaining multiple Terminal commands (by hydroflame)\\n- Bladeburner Raid operations can no longer be performed if your estimate of Synthoid communities is zero (by hydroflame)\\n- The difficulty of BN-12 now scales faster (by hydroflame)\\n- Active Scripts UI now shows a RAM Usage bar for each server (by kopelli)\\n- Bug Fix: Corrected terminal timestamp format (by kopelli)\\n- Bug Fix: NetscriptJS scripts should now die properly if they don't have a 'main' function (by hydroflame)\\n- Bug Fix: write(), read(), and tryWrite() Netscript functions should now work properly for writing Arrays/objects to Netscript Ports\\n- Various minor UI/QOL fixes by hydroflame, kopelli, and Kline-\\n\\n## v0.40.0 - 7/28/2018\\n\\n- **WARNING: This update makes some significant changes to Netscript and therefore you may need to make some changes to your scripts. See** `this post `\\\\_ **this post for details**\\n- Netscript 1.0 (NS1) now uses a fully-fledged ES5 JavaScript Interpreter. This means many new features are now available in NS1, and this also fixes several bugs.\\n However this also means any ES6+ features are no longer supported in NS1\\n- When a server is hacked with a very large number of threads and left with no money, the server's security level\\n now only increases by however many threads were needed to drain the server. For example, if you hack a server with\\n 5000 threads but it only needed 2000 threads to deplete the server's money, then the server's security will only increase\\n as if you had hacked it with 2000 threads (change by hydroflame)\\n- Added getCurrentAction() to Bladeburner API\\n- Added a variety of functions to Bladeburner API that deal with action levels (change by hydroflame)\\n- Added getPurchasedServerLimit() and getPurchasedServerMaxRam() functions to Netscript (change by hydroflame & kopelli)\\n- Added getOwnedSourceFiles() Singularity function (by hydroflame)\\n- Completely re-designed the Hacknet Node API\\n- getSkillLevel() in Bladeburner API now returns an error if no argument is passed in (as opposed to an object with all skill levels). This may break scripts\\n- Minimum Netscript execution time reduced from 15ms to 10ms (configurable in Options)\\n- Company reputation needed to get invited to Megacorporation factions decreased from 250k to 200k\\n- HP is now reset (restored) when Augmenting\\n- Source-File 6 now increases both the level and experience gain of all combat stats (it was only experience gain previously)\\n- Reverted a previous change for Source-File 12. It's benefits are now multiplicative rather than additive\\n- Starting Infiltration security level for almost every location decreased by ~10%\\n- Changed 'fl1ght.exe' message when its listed conditions are fulfilled (by hydroflame)\\n- The 'Save Game' button in the top-right overview panel now flashes red if autosave is disabled\\n- Bug Fix: Infiltration buttons can no longer be clicked through NetscriptJS\\n- Bug Fix: Bladeburner 'Overclock' skill can no longer be leveled above max level through the API (by hydroflame)\\n- Bug Fix: Healthcare division in Bladeburner should no longer cause game to crash\\n\\n## v0.39.1 - 7/4/2018\\n\\n- Bladeburner Rank gain in BN-7 is now reduced by 40% instead of 50%\\n- Quadrupled the amount of money gained from Bladeburner contracts\\n- Added joinBladeburnerDivision() Netscript function to Bladeburner API\\n- Doubled the effects of Source-File 5. Now gives 8%, 12%, and 14% increase to all hacking multipliers at levels 1, 2, and 3, respectively (increased from 4%/6%, 7%)\\n- Increased the effect of Source-File 8. It now gives a 12%, 18% and 21% to your hacking growth multiplier at levels 1, 2, and 3, respectively (increased from 8%, 12%, 14%)\\n- The effect of Source-File 12 is now additive with itself, rather than multiplicative. This means that level N of Source-File 12 now increases all multipliers by N%\\n- The setting to suppress the confirmation box when purchasing Augmentations was moved into the main Options menu (by Github user hydroflame)\\n- Bug Fix: Crime Success rates were being calculated incorrectly (by Github user hydroflame)\\n- When an Infiltration is finished, you will now return back to the company's page, rather than the city\\n- Infiltration faction reputation selector now remembers your last choice\\n- Significantly increased the amount of money gained from Infiltration\\n- Bug Fix: Copying a NetscriptJS script to another server using scp now properly takes into account the script's changes.\\n- Bug Fix: Fixed an issue where game would not load in Edge due to incompatible features\\n- travelToCity() Singularity function no longer grants Intelligence exp\\\"\\n\\n## v0.39.0 - 6/25/2018\\n\\n- Added BitNode-7: Bladeburner 2079\\n- Infiltration base difficulty decreased by 10% for most locations\\n- Experience gains from Infiltration slightly increased\\n- Money gained from Infiltration increased by 20%\\n- Added 'var' declarations in Netscript 1.0 (only works with 'var', not 'let' or 'const')\\n- Script base RAM cost is now 1.6 GB (increased from 1.4 GB)\\n- While/for loops and if statements no longer cost RAM in scripts\\n- Made short-circuit evaluation logic more consistent in Netscript 1.0\\n- Changelog button in the Options menu now links to the new Changelog URL (by Github user thePalindrome)\\n- Skill level calculation is now 'smoother' (by Github user hydroflame)\\n- Added a button to 'beautify' scripts in the text editor (by Github user hydroflame)\\n- Added favicon (by Github user kopelli)\\n\\n## v0.38.1 - 6/15/2018\\n\\n- Bug Fix: Using 'Object.prototype' functions like toLocaleString() or toString() should no longer cause errors in NetscriptJS\\n- Implemented by Github user hydroflame:\\n - Accessing the 'window' and 'document' objects in Netscript JS now requires a large amount of RAM (100 GB)\\n - Added game option to suppress travel confirmation\\n - Text on buttons can no longer be highlighted\\n - Bug Fix: Fixed an issue that caused NaN values when exporting Real Estate in Corporations\\n - Bug Fix: Competition and Demand displays in Corporation are now correct (were reversed before)\\n - Added ps() Netscript function\\n - Bug Fix: grow() should no longer return/log a negative value when it runs on a server that's already at max money\\n - Bug Fix: serverExists() Netscript function should now properly return false for non-existent hostname/ips\\n - Bug Fix: Sever's security level should now properly increase when its money is grown to max value\\n\\n## v0.38.0 - 6/12/2018\\n\\n- New BitNode: BN-12 The Recursion - Implemented by Github user hydroflame\\n- Bladeburner Changes:\\n - Bladeburner progress is no longer reset when installing Augmentations\\n - The number of successess needed to increase a Contract/Operation's max level now scales with the current max level (gradually gets harder)\\n - All Bladeburner Augmentations are now slightly more expensive and require more reputation\\n - Black Operations now give higher rank rewards\\n - Doubled the base amount of money gained from Contracts\\n - Increased the amount of experience gained from Contracts/Actions\\n - Added a new Augmentation: The Blade's Simulacrum\\n - Bladeburner faction reputation gain is now properly affected by favor\\n- Hacking is now slightly less profitable in BitNode-3\\n- Updated Hacknet Nodes UI - Implemented by Github user kopelli\\n- Bug Fix: Fixed an exploit that allowed calling any Netscript function without incurring any RAM Cost in NetscriptJS\\n\\n## v0.37.2 - 6/2/2018\\n\\n- After joining the Bladeburners division, there is now a button to go to the Bladeburner content\\n in the 'City' page\\n- You now start with $250m in BitNode-8 (increased from $100m)\\n- Bug Fix: You can now no longer directly edit Hacknet Node values through NetscriptJS (hopefully)\\n- Bug Fix: Bladeburners is no longer accessible in BN-8\\n- Bug Fix: getBitNodeMultipliers() Netscript function now returns a copy rather than the original object\\n\\n## v0.37.1 - 5/22/2018\\n\\n- You now earn money from successfully completing Bladeburner contracts. The amount you earn is based\\n on the difficulty of the contract.\\n- Completing Field Analysis in Bladeburner now grants 0.1 rank\\n- The maximum RAM you can get on a purchased server is now 1,048,576 GB (2^20)\\n- Bug Fix: Fixed Netscript syntax highlighting issues with the new NetscriptJS\\n- Bug Fix: Netscript Functions now properly incur RAM costs in NetscriptJS\\n- Bug Fix: deleteServer() now fails if its called on the server you are currently connected to\\n- Removed in-game Netscript documentation, since it was outdated and difficult to maintain.\\n- Bug Fix: Updated the gymWorkout() Singularity function with the new exp/cost values for gyms\\n\\n## v0.37.0 - 5/20/2018\\n\\n- NetscriptJS (Netscript 2.0) released\\n- Running the game with the '?noScripts' query will start the game without loading any of your scripts. This should be used if you accidentally write a script that crashes your game\\n\\n## v0.36.1 - 5/11/2018\\n\\n- Bladeburner Changes:\\n - Bug Fix: You can no longer get Bladeburner faction reputation through Infiltration\\n - Initial difficulty of Tracking contracts reduced\\n - Datamancer skill effect increased from 4% per level to 5%\\n - Slightly decreased the base stamina cost of contracts/operations\\n - Slightly increased the effects of the Tracer, Digital Observer, Short Circuit, Cloak, and Blade's Intuition skills\\n - Overclock skill capped at level 95, rather than 99\\n - Training gives significantly more exp/s\\n- Crime, Infiltration, and Hacking are now slightly more profitable in BN-6\\n- Gyms are now more expensive, but give slightly more exp\\n- Added getScriptName() and getHacknetMultipliers() Netscript functions (added by Github user hydroflame)\\n- getScriptRam() Netscript function now has default value for the second argument, which is hostname/ip (implemented by Github user hydroflame)\\n- There is now a soft-cap on stock price, which means it's no longer possible for the price of a stock to reach insanely-high values\\n- The ctrl+b hotkey in the text editor should now also be triggered by command+b on OSX (I don't have OSX so I can't confirm if this works)\\n- Many servers now have additional RAM\\n- Added an option to disable hotkeys/keyboard shortcuts\\n- Refactored 'Active Scripts' UI page to optimize its performance\\n- Added a new .fconf Terminal setting: ENABLE_TIMESTAMP\\n- 'Netscript Execution Time', which can be found in the Options, now has a minimum value of 15ms rather than 25ms\\n- Bug Fix: Fixed a typo in the Fulcrum Technologies company name (Technolgies -> Technologies)\\n- Bug Fix: hacknetnodes keyword should no longer incur RAM cost if its in a comment\\n- Bug Fix: disableLog() now works for the commitCrime() Netscript function (fixed by Github user hydroflame)\\n\\n## v0.36.0 - 5/2/2018\\n\\n- Added BN-6: Bladeburners\\n- Rebalanced many combat Augmentations so that they are slightly less powerful\\n- Bug Fix: When faction invites are suppressed, an invitation will no longer load the Faction page\\n\\n## v0.35.2 - 3/26/2018\\n\\n- Corporation Changes:\\n - Fixed an issue with Warehouse upgrade cost. Should now be significantly cheaper than before.\\n - Scientific Research now has a slightly more significant effect on Product quality\\n - The Energy and Water Utilities industries are now slightly more profitable\\n - The Robotics and Computer Hardware industries are now less profitable\\n - The Software industry is slightly less profitable\\n - When selling Materials and Products, the 'PROD' qualifier can now be used to set dynamic sell amounts based on your production\\n - Exporting MAX should now work properly\\n - You can no longer export past storage limits\\n - Scientific Research production reduced\\n - Effects of AdVert. Inc upgrade were reduced, but the effect that popularity and awareness have on sales was increased to compensate (popularity/awareness numbers were getting too big with Advert. Inc)\\n - Bug Fix: Products from Computer Hardware division should now properly have ratings\\n- Improved Augmentation UI/UX. Now contains collapsible headers and sort buttons\\n- Improved Faction Augmentations display UI/UX. Now contains sort buttons. There is also an option to disable confirmation when purchasing Augmentations\\n\\n## v0.35.1 - 3/12/2018\\n\\n- You can now easily download all of your scripts/text files as zip folders. Use the 'help download' Terminal command for details\\n- Scripts are now downloaded with the .script.js extension at the end of their filename\\n- Corporation Management Changes:\\n - Implemented Smart Supply unlock\\n - Changed the way a division's Production Multiplier is calculated. It is now the sum of the individual Production Multiplier for every city. Therefore, it is now beneficial to open offices in different cities\\n - Several small UI/UX improvements\\n - Numerous balance changes. The significant ones are listed below.\\n - Product descriptions will now display their estimated market price\\n - The sale price of Products can no longer be marked up as high as before\\n - Scientific Research now affects the rating of Products\\n - In general, the maximum amount of product you are able to sell is reduced\\n - Sale bonus from advertising (popularity/awareness) now has diminishing returns rather than scaling linearly\\n- Experience gained during Infiltration now scales linearly based on the clearance level you reach. Compared to before, the experience gained will be much less at lower clearance levels, but much more at higher clearance levels\\n- The editor can now be used to edit both scripts and text files\\n- New Terminal config file that can be edited using the command 'nano .fconf'. Right now there is only one option, but there will be more in the future.\\n- You can now enable Bash-style Terminal hotkeys using the .fconf file referenced above\\n- Bug Fix: Fixed an issue with the UI elements of Gang Management persisting across different instances of BitNode-2\\n\\n## v0.35.0 - 3/3/2018\\n\\n- Minor rebalancing of BitNodes due to the fact that Corporations provide a (relatively) new method of progressing\\n- Corporation Management Changes:\\n - Once your Corporation gets big/powerful enough, you can now bribe Factions for reputation using company funds an/or stock shares\\n - You can now only create one Division for every Industry type\\n - Added several new UI/UX elements\\n - Wilson Analytics multiplier was significantly reduced to 1% per level (additive).\\n - Reduced the effect of Advert Inc upgrade. Advert Inc. upgrade price increases faster\\n - Materials can now be marked up at higher prices\\n- Added Javascript's built-in Number object to Netscript\\n- Added getCharacterInformation(), getCompanyFavor(), and getFactionFavor() Netscript Singularity functions\\n- Rebalanced Singularity Function RAM Costs. They now cost x8 as much when outside of BN-4 (rather than x10). Also, many of the functions now use significantly less RAM\\n- Refactored Netscript Ports. You can now get a handle for a Netscript port using the getPortHandle() Netscript function. This allows you to access a port's underlying queue (which is just an array) and also makes several new functions available such as tryWrite(), full(), and empty().\\n- Number of Netscript Ports increased from 10 to 20\\n- Netscript assignments should now return proper values. i.e. i = 5 should return 5.\\n- Added throw statements to Netscript. It's not super useful since 'catch' isn't implemented, but it can be used to generate custom runtime error messages.\\n- Added import declaration to Netscript. With this, you are able to import functions (and only functions) from other files. Using export declarations is not necessary\\n- Most Netscript Runtime errors (the ones that cause your script to crash) should now include the line number where the error occured\\n- When working for a company, your current company reputation is now displayed\\n- Whenever you get a Faction Invite it will be immediately appended to your 'invited factions' list. Therefore the checkFactionInvitations() Singularity Function should now be properly useable since you no longer need to decline a Faction Invitation before it shows up in the result.\\n- Bug Fix: When purchasing servers, whitespace should now automatically be removed from the hostname\\n- Bug Fix: Can no longer have whitespace in the filename of text files created using write()\\n- Bug Fix: In Netscript, you can no longer assign a Hacknet Node handle (hacknetnodes[i]) to another value\\n- Bug Fix: If you are in the Factions tab when you accept an invitation from a Faction, the page will now properly 'refresh'\\n- Bug Fix: Scripts that run recursive functions should now be killed properly\\n\\n## v0.34.5 - 2/24/2018\\n\\n- Corporation Management Changes:\\n - Market Research unlocks are now cheaper\\n - New 'VeChain' upgrade: displays useful statistics about Corporation\\n - Corporation cycles are processed 25% faster\\n - Corporation valuation was lowered by ~10% (this affects stock price and investments)\\n - Rebalanced the effects of advertising. Should now be more effective for every Industry\\n - Fixed several bugs/exploits involving selling and buying back stock shares\\n - You will now receive a Corporation Handbook (.lit file) when starting out BitNode-3. It contains a brief guide to help you get started. This same handbook can be viewed from the Corporation management screen\\n - Slightly decreased the amount by which a Product's sell price can be marked up\\n - Employees can now be assigned to a 'Training' task, during which they will slowly increase several of their stats\\n- Hopefully fixed an exploit with Array.forEach(). If there are any issues with using forEach, let me know\\n- Arguments passed into a script are now passed by value. This means modifying the 'args' array in a script should no longer cause issues\\n- Scripts executed programatically (via run(), exec(), etc.) will now fail if null/undefined is passed in as an argument\\n- Added peek() Netscript function\\n- killall() Netscript function now returns true if any scripts were killed, and false otherwise.\\n- hack() Netscript function now returns the amount of money gained for successful hacks, and 0 for failed hacks\\n- scp Terminal command and Netscript function now work for txt files\\n- Changes courtesy of Wraithan:\\n - Text files are now displayed using 'pre' rather than 'p' elements when using the 'cat' Terminal command. This means tabs are retained and lines don't automatically wrap\\n - ls() Netscript function now returns text files as well\\n- Removed round() Netscript function, since you can just use Math.round() instead\\n- Added disableLog() and enableLog() Netscript functions\\n- Removed the 'log' argument from sleep(), since you can now use the new disableLog function\\n- 'Netscript Documentation' button on script editor now points to new readthedocs documentation rather than wiki\\n- When working for a faction, your current faction reputation is now displayed\\n- Bug Fix: Hacking Missions should no longer break when dragging an existing connection to another Node\\n- Bug Fix: Fixed RAM usage of getNextHacknetNodeCost() (is not 1.5GB instead of 4GB)\\n\\n## v0.34.4 - 2/14/2018\\n\\n- Added several new features to Gang UI to make it easier to manage your Gang.\\n- Changed the Gang Member upgrade mechanic. Now, rather than only being able to have one weapon/armor/vehicle/etc., you can purchase all the upgrades for each Gang member and their multipliers will stack. To balance this out, the effects (AKA multipliers) of each Gang member upgrade were reduced.\\n- Added a new script editor option: Max Error Count. This affects how many approximate lines the script editor will process (JSHint) for common errors. Increasing this option can affect negatively affect performance\\n- Game theme colors (set using 'theme' Terminal command) are now saved when re-opening the game\\n- 'download' Terminal command now works on scripts\\n- Added stopAction() Singularity function and the spawn() Netscript function\\n- The 'Purchase Augmentations' UI screen will now tell you if you need a certain prerequisite for Augmentations.\\n- Augmentations with prerequisites can now be purchased as long as their prerequisites are puchased (before, you had to actually install the prerequisites before being able to purchase)\\n\\n## v0.34.3 - 1/31/2018\\n\\n- Minor balance changes to Corporations:\\n - Upgrades are generally cheaper and/or have more powerful effects.\\n - You will receive more funding while your are a private company.\\n - Product demand decreases at a slower rate.\\n - Production multiplier for Industries (receives for owning real estate/hardware/robots/etc.) is slightly higher\\n- Accessing the hacknetnodes array in Netscript now costs 4.0GB of RAM (only counts against RAM usage once)\\n- Bug Fix: Corporation oustanding shares should now be numeric rather than a string\\n- Bug Fix: Corporation production now properly calculated for industries that dont produce materials.\\n- Bug Fix: Gangs should now properly reset when switching BitNodes\\n- Bug Fix: Corporation UI should now properly reset when you go public\\n\\n## v0.34.2 - 1/27/2018\\n\\n- Corporation Management Changes:\\n - Added advertising mechanics\\n - Added Industry-specific purchases\\n - Re-designed employee management UI\\n - Rebalancing: Made many upgrades/purchases cheaper. Receive more money from investors in early stage. Company valuation is higher after going public\\n - Multiple bug fixes\\n- Added rm() Netscript function\\n- Updated the way script RAM usage is calculated. Now, a function only increases RAM usage the first time it is called. i.e. even if you call hack() multiple times in a script, it only counts against RAM usage once. The same change applies for while/for loops and if conditionals.\\n- The RAM cost of the following were increased:\\n - If statements: increased by 0.05GB\\n - run() and exec(): increased by 0.2GB\\n - scp(): increased by 0.1GB\\n - purchaseServer(): increased by 0.25GB\\n- Note: You may need to re-save all of your scripts in order to re-calculate their RAM usages. Otherwise, it should automatically be re-calculated when you reset/prestige\\n- The cost to upgrade your home computer's RAM has been increased (both the base cost and the exponential upgrade multiplier)\\n- The cost of purchasing a server was increased by 10% (it is now $55k per RAM)\\n- Bug fix: (Hopefully) removed an exploit where you could avoid RAM usage for Netscript function calls by assigning functions to a variable (foo = hack(); foo('helios');)\\n- Bug fix: (Hopefully) removed an exploit where you could run arbitrary Javascript code using the constructor() method\\n- Thanks to Github user mateon1 and Reddit users havoc_mayhem and spaceglace for notifying me of the above exploits\\n- The fileExists() Netscript function now works on text files (.txt). Thanks to Github user devoidfury for this\\n\\n## v0.34.1 - 1/19/2018\\n\\n- Updates to Corporation Management:\\n - Added a number of upgrades to various aspects of your Corporation\\n - Rebalanced the properties of Materials and the formula for determining the valuation of the Corporation\\n - Fixed a number of bugs\\n- 'Stats' page now shows information about current BitNode\\n- You should now be able to create Corporations in other BitNodes if you have Source-File 3\\n- Added a new create-able program called b1t_flum3.exe. This program can be used to reset and switch BitNodes\\n- Added an option to adjust autosave interval\\n- Line feeds, newlines, and tabs will now work with the tprint() Netscript function\\n- Bug fix: 'check' Terminal command was broken\\n- Bug fix: 'theme' Terminal command was broken when manually specifying hex codes\\n- Bug fix: Incorrect promotion requirement for 'Business'-type jobs\\n- Bug fix: Settings input bars were incorrectly formatted when loading game\\n\\n## v0.34.0 - 12/6/2017\\n\\n- Added clear() and exit() Netscript functions\\n- When starting out or prestiging, you will now receive a 'Hacking Starter Guide'. It provides tips/pointers for new players\\n- Doubled the amount of RAM on low-level servers (up to required hacking level 150)\\n- Slightly increased experience gain from Infiltration\\n- buyStock(), sellStock(), shortStock(), and sellShort() Netscript function now return the stock price at which the transaction occurred, rather than a boolean. If the function fails for some reason, 0 will be returned.\\n- Hacking Mission Changes:\\n - You can now select multiple Nodes of the same type by double clicking. This allows you to set the action of all of selected nodes at once (e.g. set all Transfer Nodes to Fortify). Creating connections does not work with this multi-select functionality yet\\n - Shield and Firewall Nodes can now fortify\\n - The effects of Fortifying are now ~5% lower\\n - Conquering a Spam Node now increases your time limit by 25 seconds instead of 15\\n - Damage dealt by Attacking was slightly reduced\\n - The effect of Scanning was slightly reduced\\n - Enemy CPU Core Nodes start with slightly more attack. Misc Nodes start with slightly less defense\\n- Corporation Management changes:\\n - Added several upgrades that unlock new features\\n - Implemented Exporting mechanic\\n - Fixed many bugs\\n\\n## v0.33.0 - 12/1/2017\\n\\n- Added BitNode-3: Corporatocracy. In this BitNode you can start and manage your own corporation. This feature is incomplete. Much more will be added to it in the near future\\n- Minor bug fixes\\n\\n## v0.32.1 - 11/2/2017\\n\\n- Updated Netscript's 'interpreter/engine' to use the Bluebird promise library instead of native promises. It should now be faster and more memory-efficient. If this has broken any Netscript features please report it through Github or the subreddit (reddit.com/r/bitburner)\\n- Rebalanced stock market (adjusted parameters such as the volatility/trends/starting price of certain stocks)\\n- Added prompt() Netscript function\\n- Added 'Buy Max' and 'Sell All' functions to Stock Market UI\\n- Added 'Portfolio' Mode to Stock Market UI so you can only view stocks you have a position/order in\\n- Added a button to kill a script from its log display box\\n\\n## v0.32.0 - 10/25/2017\\n\\n- Added BitNode-8: Ghost of Wall Street\\n- Re-designed Stock Market UI\\n- Minor bug fixes\\n\\n## v0.31.0 - 10/15/2017\\n\\n- Game now saves to IndexedDb (if your browser supports it). This means you should no longer have trouble saving the game when your save file gets too big (from running too many scripts). The game will still be saved to localStorage as well\\n- New file type: text files (.txt). You can read or write to text files using the read()/write() Netscript commands. You can view text files in Terminal using 'cat'. Eventually I will make it so you can edit them in the editor but that's not available yet. You can also download files to your real computer using the 'download' Terminal command\\n- Added a new Crime: Bond Forgery. This crime takes 5 minutes to attempt and gives $4,500,000 if successful. It is meant for mid game.\\n- Added commitCrime(), getCrimeChance(), isBusy(), and getStats() Singularity Functions.\\n- Removed getIntelligence() Netscript function\\n- Added sprintf and vsprintf to Netscript. See [https://github.com/alexei/sprintf.js this Github page for details]\\n- Increased the amount of money gained from Infiltration by 20%, and the amount of faction reputation by 12%\\n- Rebalanced BitNode-2 so that Crime and Infiltration are more profitable but hacking is less profitable. Infiltration also gives more faction rep\\n- Rebalanced BitNode-4 so that hacking is slightly less profitable\\n- Rebalanced BitNode-5 so that Infiltration is more profitable and gives more faction rep\\n- Rebalanced BitNode-11 so that Crime and Infiltration are more profitable. Infiltration also gives more faction rep.\\n- Fixed an annoying issue in Hacking Missions where sometimes you would click a Node but it wouldnt actually get selected\\n- Made the Hacking Mission gameplay a bit slower by lowering the effect of Scan and reducing Attack damage\\n- Slightly increased the base reputation gain rate for factions when doing Field Work and Security Work\\n\\n## v0.30.0 - 10/9/2017\\n\\n- Added getAugmentations() and getAugmentationsFromFaction() Netscript Singularity Functions\\n- Increased the rate of Intelligence exp gain\\n- Added a new upgrade for home computers: CPU Cores. Each CPU core on the home computer grants an additional starting Core Node in Hacking Missions. I may add in other benefits later. Like RAM upgrades, upgrading the CPU Core on your home computer persists until you enter a new BitNode.\\n- Added lscpu Terminal command to check number of CPU Cores\\n- Changed the effect of Source-File 11 and made BitNode-11 a little bit harder\\n- Fixed a bug with Netscript functions (the ones you create yourself)\\n- Hacking Missions officially released (they give reputation now). Notable changes in the last few updates:\\n - Misc Nodes slowly gain hp/defense over time\\n - Conquering a Misc Node will increase the defense of all remaining Misc Nodes that are not being targeted by a certain percentage\\n - Reputation reward for winning a Mission is now affected by faction favor and Player's faction rep multiplier\\n - Whenever a Node is conquered, its stats are reduced\\n\\n## v0.29.3 - 10/3/2017\\n\\n- Fixed bug for killing scripts and showing error messages when there are errors in a player-defined function\\n- Added function name autocompletion in Script Editor. Press Ctrl+space on a prefix to show autocompletion options.\\n- Minor rebalancing and bug fixes for Infiltration and Hacking Missions\\n\\n## v0.29.2 - 10/1/2017\\n\\n- installAugmentations() Singularity Function now takes a callback script as an argument. This is a script that gets ran automatically after Augmentations are installed. The script is run with no arguments and only a single thread, and must be found on your home computer.\\n- Added the ability to create your own functions in Netscript. See [[Netscript Functions|this link]] for details\\n- Added :q, :x, and :wq Vim Ex Commands when using the Vim script editor keybindings. :w, :x, and :wq will all save the script and return to Terminal. :q will quit (return to Terminal) WITHOUT saving. If anyone thinks theres an issue with this please let me know, I don't use Vim\\n- Added a new Augmentation: ADR-V2 Pheromone Gene\\n- In Hacking Missions, enemy nodes will now automatically target Nodes and perform actions.\\n- Re-balanced Hacking Missions through minor tweaking of many numbers\\n- The faction reputation reward for Hacking Missions was slightly increased\\n\\n## v0.29.1 - 9/27/2017\\n\\n- New gameplay feature that is currently in BETA: Hacking Missions. Hacking Missions is an active gameplay mechanic (its a minigame) that is meant to be used to earn faction reputation. However, since this is currently in beta, hacking missions will NOT grant reputation for the time being, since the feature likely has many bugs, balance problems, and other issues. If you have any feedback regarding the new feature, feel free to let me know\\n- CHANGED THE RETURN VALUE OF getScriptIncome() WHEN RAN WITH NO ARGUMENTS. It will now return an array of two values rather than a single value. This may break your scripts, so make sure to update them!\\n- Added continue statement for for/while loops\\n- Added getServerMinSecurityLevel(), getPurchasedServers(), and getTimeSinceLastAug() Netscript functions\\n- Netscript scp() function can now take an array as the first argument, and will try to copy every file specified in the array (it will just call scp() normally for every element in the array). If an array is passed in, then the scp() function returns true if at least one element from the array is successfully copied\\n- Added Javascript's Date module to Netscript. Since 'new' is not supported in Netscript yet, only the Date module's static methods will work (now(), UTC(), parse(), etc.).\\n- Failing a crime now gives half the experience it did before\\n- The forced repeated 'Find The-Cave' message after installing The Red Pill Augmentation now only happens if you've never destroyed a BitNode before, and will only popup every 15 minutes. If you have already destroyed a BitNode, the message will not pop up if you have messages suppressed (if you don't have messages suppressed it WILL still repeatedly popup)\\n- fileExists() function now works on literature files\\n\\n## v0.29.0 - 9/19/2017\\n\\n- Added BitNode-5: Artificial Intelligence\\n- Added getIp(), getIntelligence(), getHackingMultipliers(), and getBitNodeMultipliers() Netscript functions (requires Source-File 5)\\n- Updated scan() Netscript function so that you can choose to have it print IPs rather than hostnames\\n- Refactored scp() Netscript function so that it takes an optional 'source server' argument\\n- For Infiltration, decreased the percentage by which the security level increases by about 10% for every location\\n- Using :w in the script editor's Vim keybinding mode should now save and quit to Terminal\\n- Some minor optimizations that should reduce the size of the save file\\n- scan-analyze Terminal command will no longer show your purchased servers, unless you pass a '-a' flag into the command\\n- After installing the Red Pill augmentation from Daedalus, the message telling you to find 'The-Cave' will now repeatedly pop up regardless of whether or not you have messages suppressed\\n- Various bugfixes\\n\\n## v0.28.6 - 9/15/2017\\n\\n- Time required to create programs now scales better with hacking level, and should generally be much faster\\n- Added serverExists(hostname/ip) and getScriptExpGain(scriptname, ip, args...) Netscript functions\\n- Short circuiting && and || logical operators should now work\\n- Assigning to multidimensional arrays should now work\\n- Scripts will no longer wait for hack/grow/weaken functions to finish if they are killed. They will die immediately\\n- The script loop that checks whether any scripts need to be started/stopped now runs every 6 seconds rather than 10 (resulting in less delays when stopping/starting scripts)\\n- Fixed several bugs/exploits\\n- Added some description for BitNode-5 (not implemented yet, should be soon though)\\n\\n## v0.28.5 - 9/13/2017\\n\\n- The fl1ght.exe program that is received from jump3r is now sent very early on in the game, rather than at hacking level 1000\\n- Hostname is now displayed in Terminal\\n- Syntax highlighting now works for all Netscript functions\\n- Export should now work on Edge/IE\\n\\n## v0.28.4 - 9/11/2017\\n\\n- Added getScriptIncome() Netscript function\\n- Added Javascript's math module to Netscript. See [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math this link for details]\\n- Added several member variables for the Hacknet Node API that allow you to access info about their income\\n- All valid Netscript functions are now syntax highlighted as keywords in the editor. This means they will a different color than invalid netscript functions. The color will depend on your theme. Note that right now, this only applies for normal Netscript functions, not functions in the TIX API, Hacknet Node API, or Singularity Functions.\\n- Comments and operators no longer count towards RAM usage in scripts.\\n- Variety of bug fixes and updates to informational text in the game\\n\\n## v0.28.3 - 9/7/2017\\n\\n- Added ls() Netscript function\\n- Increased company wages by about ~10% across the board\\n- The scp() Netsction function and Terminal command now works for .lit files\\n- Increased the amount of RAM on many lower level servers (up to level 200 hacking level required).\\n\\n## v0.28.2 - 9/4/2017\\n\\n- Added several configuration options for script editor (key bindings, themes, etc.)\\n- Certain menu options will now be hidden until their relevant gameplay is unlocked. This includes the Factions, Augmentations, Create Program, Travel, and Job tabs. This will only affect newer players.\\n- Most unrecognize or un-implemented syntax errors in Netscript will now include the line number in the error message\\n\\n## v0.28.1 - 9/1/2017\\n\\n- The script editor now uses the open-source Ace editor, which provides a much better experience when coding!\\n- Added tprint() Netscript function\\n\\n## v0.28.0 - 8/30/2017\\n\\n- Added BitNode-4: The Singularity\\n- Added BitNode-11: The Big Crash\\n- Migrated the codebase to use webpack (doesn't affect any in game content, except maybe some slight performance improvements and there may be bugs that result from dependency errors\\n\\n## v0.27.3 - 8/19/2017\\n\\n- You can now purchase upgrades for Gang Members (BitNode 2 only)\\n- Decreased Gang respect gains and slightly increased wanted gains (BitNode 2 only)\\n- Other gangs will increase in power faster (BitNode 2 only)\\n- Added getHackTime(), getGrowTime(), and getWeakenTime() Netscript functions\\n\\n## v0.27.2 - 8/18/2017\\n\\n- Added getServerGrowth() Netscript function\\n- Added getNextHacknetNodeCost() Netscript function\\n- Added new 'literature' files (.lit extension) that are used to build lore for the game. These .lit files can be found in certain servers throughout the game. They can be viewed with the 'cat' Terminal command and copied over to other servers using the 'scp' command. These .lit files won't be found until you reset by installing Augmentations\\n- Fixed some bugs with Gang Territory(BitNode 2 only)\\n\\n## v0.27.1 - 8/15/2017\\n\\n- Changed the way Gang power was calculated to make it scale better late game (BitNode 2 only)\\n- Lowered the respect gain rate in Gangs (Bitnode 2 only)\\n- Added '| grep pattern' option for ls Terminal command. This allows you to only list files that contain a certain pattern\\n- Added break statement in Netscript\\n- Display for some numerical values is now done in shorthand (e.g 1.000m instead of 1,000,000)\\n\\n## v0.27.0 - 8/13/2017\\n\\n- Added secondary 'prestige' system - featuring Source Files and BitNodes\\n- MILD SPOILERS HERE: Installing 'The Red Pill' Augmentation from Daedalus will unlock a special server called w0r1d_d43m0n. Finding and manually hacking this server through Terminal will destroy the Player's current BitNode, and allow the player to enter a new one. When destroying a BitNode, the player loses everything except the scripts on his/her home computer. The player will then gain a powerful second-tier persistent upgrade called a Source File. The player can then enter a new BitNode to start the game over. Each BitNode has different characteristics, and many will have new content/mechanics as well. Right now there are only 2 BitNodes. Each BitNode grants its own unique Source File. Restarting and destroying a BitNode you already have a Source File for will upgrade your Source File up to a maximum level of 3.\\n\\n- Reputation gain with factions and companies is no longer a linear conversion, but an exponential one. It will be much easier to gain faction favor at first, but much harder later on.\\n- Significantly increased Infiltration exp gains\\n- Fixed a bug with company job requirement tooltips\\n- Added scriptRunning(), scriptKill(), and getScriptRam() Netscript functions. See documentation for details\\n- Fixed a bug with deleteServer() Netscript function\\n\\n## v0.26.4 - 8/1/2017\\n\\n- All of the 'low-level servers' in early game that have a required hacking level now have 8GB of RAM instead of 4GB\\n- Increased the amount of experience given at university\\n- Slightly increased the production of Hacknet Nodes and made them cheaper to upgrade\\n- Infiltration now gives slightly more EXP and faction reputation\\n- Added two new crimes. These crimes are viable to attempt early on in the game and are relatively passive (each take 60+ seconds to complete)\\n- Crimes give more exp and more money\\n- Max money available on a server decreased from 50x the server's starting money to 25x\\n- Significantly increased wages for all jobs\\n\\n## v0.26.3\\n\\n- Added support for large numbers using Decimal.js. Right now it only applies for the player's money\\n- Purchasing servers with the Netscript function purchaseServer() is no longer 2x as expensive as doing manually it now costs the same\\n- Early game servers have more starting money\\n\\n## v0.26.2\\n\\n- Major rebalancing and randomization of the amount of money that servers start with\\n- Significantly lowered hacking exp gain from hacking servers. The exp gain for higher-level servers was lowered more than that of low level servers. (~16% for lower level servers, up to ~25% for higher-level servers)\\n- Added deleteServer() Netscript function\\n- You can now purchase a maximum of 25 servers each run (Deleting a server will allow you to purchase a new one)\\n- Added autocompletion for './' Terminal command\\n- Darkweb prices now displayed properly using toLocaleString()\\n- Added NOT operator (!) and negation operator(-) in Netscript, so negative numbers should be functional now\\n- Rejected faction invitations will now show up as 'Outstanding Faction Invites' in the Factions page. These can be accepted at any point in the future\\n- Added a few more configurable game settings for suppressing messages and faction invitations\\n- Added tooltips for company job requirements\\n\\n## v0.26.1\\n\\n- Added autocompletion for aliases\\n- Added getServerRam() Netscript function()\\n- Added getLevelUpgradeCost(n), getRamUpgradeCost(), getCoreUpgradeCost() functions for Netscript Hacknet Node API\\n- Added some configurable settings (See Game Options menu)\\n\\n## v0.26.0\\n\\n- Game now has a real ending, although it's not very interesting/satisfying right now. It sets up the framework for the secondary prestige system in the future\\n- Forgot to mention that since last update, comments now work in Netscript. Use // for single line comments or /\\\\* and \\\\*/ for multiline comments just like in Javascript\\n- Added ports to Netscript. These ports are essentially serialized queues. You can use the write() Netscript function to write a value to a queue, and then you can use the read() Netscript function to read the value from the queue. Once you read a value from the queue it will be removed. There are only 10 queues (1-10), and each has a maximum capacity of 50 entries. If you try to write to a queue that is full, the the first value is removed. See wiki/Netscript documentation for more details\\n- You can now use the 'help' Terminal command for specific commands\\n- You can now use './' to run a script/program (./NUKE.exe). However, tab completion currently doesn't work for it (I'm working on it)\\n- Decreased the base growth rate of servers by ~25%\\n- Both the effect of weaken() and its time to execute were halved. In other words, calling weaken() on a server only lowers its security by 0.05 (was 0.1 before) but the time to execute the function is half of what it was before. Therefore, the effective rate of weaken() should be about the same\\n- Increased all Infiltration rewards by ~10%, and increased infiltration rep gains by an additional 20% (~32% total for rep gains)\\n- The rate at which the security level of a facility increases during Infiltration was decreased significantly (~33%)\\n- Getting treated at the Hospital is now 33% more expensive\\n- Slightly increased the amount of time it takes to hack a server\\n- Slightly decreased the amount of money gained when hacking a server (~6%)\\n- Slightly decreased the base cost for RAM on home computer, but increased the cost multiplier. This means that upgrading RAM on the home computer should be slightly cheaper at the start, but slightly more expensive later on\\n- Increased the required hacking level for many late game servers\\n- The sleep() Netscript function now takes an optional 'log' argument that specifies whether or not the 'Sleeping for N milliseconds' will be logged for the script\\n- Added clearLog() Netscript function\\n- Deleted a few stocks. Didn't see a reason for having so many, and it just affects performance. Won't take effect until you reset by installing Augmentations\\n- There was a typo with Zeus Medical's server hostname. It is now 'zeus-med' rather than 'zeud-med'\\n- Added keyboard shortcuts to quickly navigate between different menus. See wiki link (http://bitburner.wikia.com/wiki/Shortcuts)\\n- Changed the Navigation Menu UI\\n\\n## v0.25.0\\n\\n- Refactored Netscript to use the open-source Acorns Parser. This re-implementation was done by [https://github.com/MrNuggelz Github user MrNuggelz]. This has resulted in several changes in the Netscript language. Some scripts might break because of these changes. Changes listed below:\\n- Arrays are now fully functional Javascript arrays. You no longer need to use the 'Array' keyword to declare them.\\n- The length(), clear/clear(), insert(), and remove() functions no longer work for arrays.\\n- All Javascript array methods are available (splice(), push(), pop(), join(), shift(), indexOf(), etc. See documentation)\\n- Variables assigned to arrays are now passed by value rather than reference\\n\\n- Incrementing/Decrementing are now available (i++, ++i)\\n\\n- You no longer need semicolons at the end of block statements\\n\\n- Elif is no longer valid. Use 'else if' instead\\n\\n- Netscript's Hacknet Node API functions no longer log anything\\n- Stock prices now update every ~6 seconds when the game is active (was 10 seconds before)\\n- Added a new mechanic that affects how stock prices change\\n- Script editor now has dynamic indicators for RAM Usage and Line number\\n- Augmentation Rebalancing - Many late game augmentations are now slightly more expensive. Several early game augmentations had their effects slightly decreased\\n- Increased the amount of rewards (both money and rep) you get from infiltration\\n- Purchasing servers is now slightly more expensive\\n- Calling the Netscript function getServerMoneyAvailable('home') now return's the player's money\\n- Added round(n) Netscript function - Rounds a number\\n- Added purchaseServer(hostname, ram) Netscript function\\n- Added the TIX API. This must be purchased in the WSE. It persists through resets. Access to the TIX API allows you to write scripts that perform automated algorithmic trading. See Netscript documentation\\n- Minor rebalancing in a lot of different areas\\n- Changed the format of IP Addresses so that they are smaller (will consist mostly of single digit numbers now). This will reduce the size of the game's save file.\\n\\n## v0.24.1\\n\\n- Adjusted cost of upgrading home computer RAM. Should be a little cheaper for the first few upgrades (up to ~64GB), and then will start being more expensive than before. High RAM upgrades should now be significantly more expensive than before.\\n- Slightly lowered the starting money available on most mid-game and end-game servers (servers with required hacking level greater than 200) by about 10-15%\\n- Rebalanced company/company position reputation gains and requirements\\n- Studying at a university now gives slightly more EXP and early jobs give slightly less EXP\\n- Studying at a university is now considerably more expensive\\n- Rebalanced stock market\\n- Significantly increased cost multiplier for purchasing additional Hacknet Nodes\\n- The rate at which facility security level increases during infiltration for each clearance level was lowered slightly for all companies\\n- Updated Faction descriptions\\n- Changed the way alias works. Normal aliases now only work at the start of a Terminal command (they will only replace the first word in the Terminal command). You can also create global aliases that work on any part of the command, like before. Declare global aliases by entering the optional -g flag: alias -g name=\\\"value\\\" - [https://github.com/MrNuggelz Courtesy of Github user MrNuggelz]\\n- 'top' Terminal command implemented courtesy of [https://github.com/LTCNugget Github user LTCNugget]. Currently, the formatting gets screwed up if your script names are really long.\\n\\n## v0.24.0\\n\\n- Players now have HP, which is displayed in the top right. To regain HP, visit the hospital. Currently the only way to lose HP is through infiltration\\n- Infiltration - Attempt to infiltrate a company and steal their classified secrets. See 'Companies' documentation for more details\\n- Stock Market - Added the World Stock Exchange (WSE), a brokerage that lets you buy/sell stocks. To begin trading you must first purchase an account. A WSE account will persist even after resetting by installing Augmentations. How the stock market works should hopefully be self explanatory. There is no documentation about it currently, I will add some later. NOTE: Stock prices only change when the game is open. The Stock Market is reset when installing Augmentations, which means you will lose all your stocks\\n- Decreased money gained from hacking by ~12%\\n- Increased reputation required for all Augmentations by ~40%\\n- Cost increase when purchasing multiple augmentations increased from 75% to 90%\\n- Added basic variable runtime to Netscript operations. Basic commands run in 100ms. Any function incurs another 100ms in runtime (200ms total). Any function that starts with getServer incurs another 100ms runtime (300ms total). exec() and scp() require 400ms total.\\n- Slightly reduced the amount of experience gained from hacking\\n\\n## v0.23.1\\n\\n- scan() Netscript function now takes a single argument representing the server from which to scan.\\n\\n## v0.23.0\\n\\n- You can now purchase multiple Augmentations in a run. When you purchase an Augmentation you will lose money equal to the price and then the cost of purchasing another Augmentation during this run will be increased by 75%. You do not gain the benefits of your purchased Augmentations until you install them. This installation can be done through the 'Augmentation' tab. When you install your Augmentations, your game will reset like before.\\n- Reputation needed to gain a favor from faction decreased from 7500 to 6500\\n- Reputation needed to gain a favor from company increased from 5000 to 6000\\n- Reputation cost of all Augmentations increased by 16%\\n- Higher positions at companies now grant slightly more reputation for working\\n- Added getServerMaxMoney() Netscript function\\n- Added scan() Netscript function\\n- Added getServerNumPortsRequired() Netscript function\\n- There is now no additional RAM cost incurred when multithreading a script\\n\\n## v0.22.1\\n\\n- You no longer lose progress on creating programs when cancelling your work. Your progress will be saved and you will pick up where you left off when you start working on it again\\n- Added two new programs: AutoLink.exe and ServerProfiler.exe\\n- Fixed bug with Faction Field work reputation gain\\n\\n## v0.22.0 - Major rebalancing, optimization, and favor system\\n\\n- Significantly nerfed most augmentations\\n- Almost every server with a required hacking level of 200 or more now has slightly randomized server parameters. This means that after every Augmentation purchase, the required hacking level, base security level, and growth factor of these servers will all be slightly different\\n- The hacking speed multiplier now increases rather than decreases. The hacking time is now divided by your hacking speed multiplier rather than multiplied. In other words, a higher hacking speed multiplier is better\\n- Servers now have a minimum server security, which is approximately one third of their starting ('base') server security\\n- If you do not steal any money from a server, then you gain hacking experience equal to the amount you would have gained had you failed the hack\\n- The effects of grow() were increased by 50%\\n- grow() and weaken() now give hacking experience based on the server's base security level, rather than a flat exp amount\\n- Slightly reduced amount of exp gained from hack(), weaken(), and grow()\\n- Rebalanced formulas that determine crime success\\n- Reduced RAM cost for multithreading a script. The RAM multiplier for each thread was reduced from 1.02 to 1.005\\n- Optimized Script objects so they take less space in the save file\\n- Added getServerBaseSecurityLevel() Netscript function\\n- New favor system for companies and factions. Earning reputation at a company/faction will give you favor for that entity when you reset after installing an Augmentation. This favor persists through the rest of the game. The more favor you have, the faster you will earn reputation with that faction/company\\n- You can no longer donate to a faction for reputation until you have 150 favor with that faction\\n- Added unalias Terminal command\\n- Changed requirements for endgame Factions\\n\\n## v0.21.1\\n\\n- IF YOUR GAME BREAKS, DO THE FOLLOWING: Options -> Soft Reset -> Save Game -> Reload Page. Sorry about that!\\n- Autocompletion for aliases - courtesy of [https://github.com/LTCNugget Github user LTCNugget]\\n\\n## v0.21.0\\n\\n- Added dynamic arrays. See Netscript documentation\\n- Added ability to pass arguments into scripts. See documentation\\n- The implementation/function signature of functions that deal with scripts have changed. Therefore, some old scripts might not work anymore. Some of these functions include run(), exec(), isRunning(), kill(), and some others I may have forgot about. Please check the updated Netscript documentation if you run into issues.-Note that scripts are now uniquely identified by the script name and their arguments. For example, you can run a script using::\\n\\n run foodnstuff.script 1\\n\\nand you can also run the same script with a different argument::\\n\\n run foodnstuff.script 2\\n\\nThese will be considered two different scripts. To kill the first script you must run::\\n\\n kill foodnstuff.script 1\\n\\nand to kill the second you must run::\\n\\n kill foodnstuff.script 2\\n\\nSimilar concepts apply for Terminal Commands such as tail, and Netscript commands such as run(), exec(), kill(), isRunning(), etc.\\n\\n- Added basic theme functionality using the 'theme' Terminal command - All credit goes to /u/0x726564646974 who implemented the awesome feature\\n- Optimized Script objects, which were causing save errors when the player had too many scripts\\n- Formula for determining exp gained from hacking was changed\\n- Fixed bug where you could purchase Darkweb items without TOR router\\n- Slightly increased cost multiplier for Home Computer RAM\\n- Fixed bug where you could hack too much money from a server (and bring its money available below zero)\\n- Changed tail command so that it brings up a display box with dynamic log contents. To get old functionality where the logs are printed to the Terminal, use the new 'check' command\\n- As a result of the change above, you can no longer call tail/check on scripts that are not running\\n- Added autocompletion for buying Programs in Darkweb\\n\\n## v0.20.2\\n\\n- Fixed several small bugs\\n- Added basic array functionality to Netscript\\n- Added ability to run scripts with multiple threads. Running a script with n threads will multiply the effects of all hack(), grow(), and weaken() commands by n. However, running a script with multiple threads has drawbacks in terms of RAM usage. A script's ram usage when it is 'multithreaded' is calculated as: base cost _ numThreads _ (1.02 ^ numThreads). A script can be run multithreaded using the 'run [script] -t n' Terminal command or by passing in an argument to the run() and exec() Netscript commands. See documentation.\\n- RAM is slightly (~10%) more expensive (affects purchasing server and upgrading RAM on home computer)\\n- NeuroFlux Governor augmentation cost multiplier decreased\\n- Netscript default operation runtime lowered to 200ms (was 500ms previously)\\n\\n## v0.20.1\\n\\n- Fixed bug where sometimes scripts would crash without showing the error\\n- Added Deepscan programs to Dark Web\\n- Declining a faction invite will stop you from receiving invitations from that faction for the rest of the run\\n- (BETA) Added functionality to export/import saves. WARNING This is only lightly tested. You cannot choose where to save your file it just goes to the default save location. Also I have no idea what will happen if you try to import a file that is not a valid save. I will address these in later updates\\n\\n## v0.20.0\\n\\n- Refactored Netscript Interpreter code. Operations in Netscript should now run significantly faster (Every operation such as a variable assignment, a function call, a binary operator, getting a variable's value, etc. used to take up to several seconds, now each one should only take ~500 milliseconds).\\n- Percentage money stolen when hacking lowered to compensate for faster script speeds\\n- Hacking experience granted by grow() halved\\n- Weaken() is now ~11% faster, but only grants 3 base hacking exp upon completion instead of 5\\n- Rebalancing of script RAM costs. Base RAM Cost for a script increased from 1GB to 1.5GB. Loops, hack(), grow() and weaken() all cost slightly less RAM than before\\n- Added getServerRequiredHackingLevel(server) Netscript command.\\n- Added fileExists(file, [server]) Netscript command, which is used to check if a script/program exists on a specified server\\n- Added isRunning(script, [server]) Netscript command, which is used to check if a script is running on the specified server\\n- Added killall Terminal command. Kills all running scripts on the current machine\\n- Added kill() and killall() Netscript commands. Used to kill scripts on specified machines. See Netscript documentation\\n- Re-designed 'Active Scripts' tab\\n- Hacknet Node base production rate lowered from 1.6 to 1.55 ($/second)\\n- Increased monetary cost of RAM (Upgrading home computer and purchasing servers will now be more expensive)\\n- NEW GROWTH MECHANICS - The rate of growth on a server now depends on a server's security level. A higher security level will result in lower growth on a server when using the grow() command. Furthermore, calling grow() on a server raises that server's security level by 0.004. For reference, if a server has a security level of 10 it will have approximately the same growth rate as before.\\n- Server growth no longer happens naturally\\n- Servers now have a maximum limit to their money. This limit is 50 times it's starting money\\n- Hacking now grants 10% less hacking experience\\n- You can now edit scripts that are running\\n- Augmentations cost ~11% more money and 25% more faction reputation\\n\\n## v0.19.7\\n\\n- Added changelog to Options menu\\n- Bug fix with autocompletion (wasn't working properly for capitalized filenames/programs\\n\\n## v0.19.6\\n\\n- Script editor now saves its state even when you change tabs\\n- scp() command in Terminal/script will now overwrite files at the destination\\n- Terminal commands are no longer case-sensitive (only the commands themselves such as 'run' or 'nano'. Filenames are still case sensitive\\n- Tab automcompletion will now work on commands\\n\\n## v0.19.0\\n\\n- Hacknet Nodes have slightly higher base production, and slightly increased RAM multiplier. But they are also a bit more expensive at higher levels\\n- Calling grow() and weaken() in a script will now work offline, at slower rates than while online (The script now keeps track of the rate at which grow() and weaken() are called when the game is open. These calculated rates are used to determine how many times the calls would be made while the game is offline)\\n- Augmentations now cost 20% more reputation and 50% more money\\n- Changed the mechanic for getting invited to the hacking factions (CyberSec, NiteSec, The Black Hand, BitRunners) Now when you get to the required level to join these factions you will get a message giving you instructions on what to do in order to get invited.\\n- Added a bit of backstory/plot into the game. It's not fully fleshed out yet but it will be used in the future\\n- Made the effects of many Augmentations slightly more powerful\\n- Slightly increased company job wages across the board (~5-10% for each position)\\n- Gyms and classes are now significantly more expensive\\n- Doubled the amount by which a server's security increases when it is hacked. Now, it will increase by 0.002. Calling weaken() on a server will lower the security by 0.1.\\n\\n## v0.18.0\\n\\n- Major rebalancing (sorry didn't record specifics. But in general hacking gives more money and hacknet nodes give less)\\n- Server growth rate (both natural and manual using grow()) doubled\\n- Added option to Soft Reset\\n- Cancelling a full time job early now only results in halved gains for reputation. Exp and money earnings are gained in full\\n- Added exec() Netscript command, used to run scripts on other servers.\\n- NEW HACKING MECHANICS: Whenever a server is hacked, its 'security level' is increased by a very small amount. The security level is denoted by a number between 1-100. A higher security level makes it harder to hack a server and also decreases the amount of money you steal from it. Two Netscript functions, weaken() and getServerSecurityLevel() level, were added. The weaken(server) function lowers a server's security level. See the Netscript documentation for more details\\n- When donating to factions, the base rate is now $1,000,000 for 1 reputation point. Before, it was $1,000 for 1 reputation point.\\n- Monetary costs for all Augmentations increased. They are now about ~3.3 - 3.75 times more expensive than before\\n\\n## v0.17.1\\n\\n- Fixed issue with purchasing Augmentations that are 'upgrades' and require previous Augmentations to be installed\\n- Increased the percentage of money stolen from servers when hacking\\n\\n## v0.17.0\\n\\n- Greatly increased amount of money gained for crimes (by about 400% for most crimes)\\n- Criminal factions require slightly less negative karma to get invited to\\n- Increased the percentage of money stolen from servers when hacking\\n- Increased the starting amount of money available on beginning servers (servers with <50 required hacking))\\n- Increased the growth rate of servers (both naturally and manually when using the grow() command in a script)\\n- Added getHostname() command in Netscript that returns the hostname of the server a script is running on\\n- jQuery preventDefault() called when pressing ctrl+b in script editor\\n- The Neuroflux Governor augmentation (the one that can be repeatedly leveled up) now increases ALL multipliers by 1%. To balance it out, it's price multiplier when it levels up was increased\\n- Hacknet Node base production decreased from $1.75/s to $1.65/s\\n- Fixed issue with nested for loops in Netscript (stupid Javascript references)\\n- Added 'scp' command to Terminal and Netscript\\n- Slightly nerfed Hacknet Node Kernel DNI and Hacknet Node Core DNI Augmentations\\n- Increased TOR Router cost to $200k\\n\\n## v0.16.0\\n\\n- New Script Editor interface\\n- Rebalanced hacknet node - Increased base production but halved the multiplier from additional cores. This should boost its early-game production but nerf its late-game production\\n- Player now starts with 8GB of RAM on home computer\\n- 'scan-analyze' terminal command displays RAM on servers\\n- Slightly buffed the amount of money the player steals when hacking servers (by about ~8%)\\n- Time to execute grow() now depends on hacking skill and server security, rather than taking a flat 2 minutes.\\n- Clicking outside of a pop-up dialog box will now close it\\n- BruteSSH.exe takes 33% less time to create\\n- 'iron-gym' and 'max-hardware' servers now have 2GB of RAM\\n- Buffed job salaries across the board\\n- Updated Tutorial\\n- Created a Hacknet Node API for Netscript that allows you to access and upgrade your Hacknet Nodes. See the Netscript documentation for more details. WARNING The old upgradeHacknetNode() and getNumHacknetNodes() functions waere removed so any script that has these will no longer work\\n\\n## v0.15.0\\n\\n- Slightly reduced production multiplier for Hacknet Node RAM\\n- Faction pages now scroll\\n- Slightly increased amount of money gained from hacking\\n- Added 'alias' command\\n- Added 'scan-analyze' terminal command - used to get basic hacking info about all immediate network connections\\n- Fixed bugs with upgradeHacknetNode() and purchaseHacknetNode() commands\\n- Added getNumHacknetNodes() and hasRootAccess(hostname/ip) commands to Netscript\\n- Increased Cost of university classes/gym\\n- You can now see what an Augmentation does and its price even while its locked\\n\";","export default \"# What BitNode should I do?\\n\\nAfter destroying their first [BitNode](../advanced/bitnodes.md), many players wonder which [BitNode](../advanced/bitnodes.md) they should tackle next.\\nThis guide hopefully helps answer that question.\\n\\n## Recommended BitNodes\\n\\nAs a player, you are not forced to tackle the [BitNodes](../advanced/bitnodes.md) in any particular order.\\nYou are free to choose whichever ones you want.\\nThe \\\"best\\\" order can vary between players, depending on what you like to do any what kind of player you are.\\nIn general, here are the recommended [BitNodes](../advanced/bitnodes.md) for different things:\\n\\n## For fast progression\\n\\nThese paths do not recommend the absolute fastest path, since speed of progression is highly dependant on playing style.\\n\\n1. Repeat BN-1 until you max out its [Source-File](../advanced/sourcefiles.md).\\n Its [Source-File](../advanced/sourcefiles.md) is extremely powerful, as it raises all multipliers by a significant amount.\\n This also allows you to get used to augments and other features resetting.\\n\\n2. Do BN-3 at least once to unlock the [Corporation](../advanced/corporations.md) mechanic, finishing all 3 levels unlocks the full API for free, allowing fully scripted corp.\\n This mechanic has the highest profit potential in the game.\\n\\n3. Do BN-10 once to unlock [Sleeves](../advanced/sleeves.md) and [Grafting](../advanced/grafting.md).\\n [Sleeves](../advanced/sleeves.md) are useful in all nodes and grafting can be useful in future [BitNodes](../advanced/bitnodes.md), especially BN-8.\\n It's recommended to buy all purchasable [Sleeves](../advanced/sleeves.md) and their memory during the first run.\\n\\n The ordering of the next three is dependant on playing style and wants/needs.\\n\\n4. Do BN-5 once or twice.\\n The [Intelligence](../advanced/intelligence.md) stat it unlocks will gradually build up as you continue to play the game, and will be helpful in the future.\\n The [Source-File](../advanced/sourcefiles.md) also provides [hacking](../basic/hacking.md) multipliers, which are strong because [hacking](../basic/hacking.md) is typically one of the best ways of earning money.\\n\\n5. Do BN-4. Its [Source-File](../advanced/sourcefiles.md) does not directly make you more powerful in any way, but unlocks the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md).\\n This API allows you to automate significantly more aspects of the game.\\n Consider repeating until Level 3, since each level decreases the [RAM](../basic/ram.md) cost of the functions.\\n\\n6. Do BN-2 once to unlock the [Gang](../advanced/gang.md) mechanic.\\n This mechanic has high profit potential and offers large amounts of [Augmentations](../basic/augmentations.md) in a single faction.\\n Having sleeves ([Source-File](../advanced/sourcefiles.md) 10) greatly reduces the time it takes to get access to [Gangs](../advanced/gang.md) outside this [BitNode](../advanced/bitnodes.md).\\n\\n7. Do BN-9 to unlock the [Hacknet Server](../advanced/hacknetservers.md) mechanic.\\n You can consider repeating it as well, as its Level 2 and 3 effects are pretty helpful as well.\\n\\n## For the strongest Source-Files\\n\\nNote that the strongest [Source-Files](../advanced/sourcefiles.md) are typically rewarded by the hardest [BitNodes](../advanced/bitnodes.md).\\n\\nThe strongest [Source-File](../advanced/sourcefiles.md) is that from BN-1, as it raises all multipliers by a significant amount.\\n\\nThe [Source-File](../advanced/sourcefiles.md) from BN-9 is good because it unlocks the Hacknet Server mechanic.\\nThe [Hacknet Server](../advanced/hacknetservers.md) mechanic causes [Hacknet Nodes](../basic/hacknet_nodes.md) to produce a new currency called `hashes`, rather than money.\\n`Hashes` can be spent on powerful upgrades that benefit your [hacking](../basic/hacking.md), [Corporation](../advanced/corporations.md), [Bladeburner](../advanced/bladeburners.md), etc.\\n\\nThe [Sleeves](../advanced/sleeves.md) granted by the [Source-File](../advanced/sourcefiles.md) from BN-10 are strong, but only after you have several of them and have spent some time/money upgrading them.\\n\\n## For more scripting/hacking\\n\\nBN-4 unlocks the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md), which can be used to automate many different aspects of the game, including working for [Factions](../basic/factions.md) / [Companies](../basic/companies.md), purchasing & installing [Augmentations](../basic/augmentations.md), and creating programs\\n\\nBN-6 and BN-7 unlock [Bladeburner](../advanced/bladeburners.md) and its corresponding [Bladeburner API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.bladeburner.md).\\nThis allows you to automate an entire new mechanic.\\n\\nBN-2 also unlocks a new mechanic and API for automating the [Gang](../advanced/gang.md) mechanic.\\nHowever, it is not as interesting as [Bladeburner](../advanced/bladeburners.md)\\n\\nBN-9 unlocks the [Hacknet Server](../advanced/hacknetservers.md) mechanic and several new functions in the [Hacknet Node API](https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.hacknet.md) for using it.\\n\\n## For new mechanics\\n\\nBN-2 unlocks a new mechanic in which you can manage a [Gang](../advanced/gang.md).\\n[Gangs](../advanced/gang.md) earn you money and can be very profitable once they get large and powerful.\\nThe biggest benefit of [Gangs](../advanced/gang.md), however, is that they make all [Augmentations](../basic/augmentations.md) available to you through their corresponding [Faction](../basic/factions.md).\\n\\nBN-3 unlocks a new mechanic in which you can manage a [Corporation](../advanced/corporations.md).\\nYou can earn money through [Corporations](../advanced/corporations.md) by selling your stocks, or by configuring your [Corporation](../advanced/corporations.md) to pay dividends to shareholders.\\nIf your [Corporation](../advanced/corporations.md) gets big enough, it can also bribe [Factions](../basic/factions.md) in exchange for [Faction](../basic/factions.md) [Reputation](../basic/reputation.md).\\n\\nBN-6 unlocks a new mechanic that centers around combat rather than hacking.\\nThe main benefit of the [Bladeburner](../advanced/bladeburners.md) mechanic is that it offers a new method of destroying a [BitNode](../advanced/bitnodes.md).\\n\\nBN-9 unlocks the [Hacknet Server](../advanced/hacknetservers.md), which is an upgraded version of a [Hacknet Node](../basic/hacknet_nodes.md).\\nThe [Hacknet Server](../advanced/hacknetservers.md) generates a computational unit called a `hash`.\\n`Hashes` can be spent on a variety of different upgrades that can benefit your hacking, [Corporation](../advanced/corporations.md), [Bladeburner](../advanced/bladeburners.md) progress, and more.\\nIt transforms the [Hacknet Node](../basic/hacknet_nodes.md) from a simple money-generator to a more interesting mechanic.\\n\\nBN-10 unlocks two new mechanics: [Sleeves](../advanced/sleeves.md) and [Grafting](../advanced/grafting.md)\\n\\nBN-13 unlocks [Stanek's Gift](../advanced/stanek.md). This gift can improve skills, [hacknet](../basic/hacknet_nodes.md) production and costs, working and [crime](../basic/crimes.md) gains, and [hacking](../basic/hacking.md) power and speed.\\n\\n## For a Challenge\\n\\nIn general, the higher [BitNodes](../advanced/bitnodes.md) are more difficult than the lower ones.\\nBN-12 is an obvious exception as it gets progressively harder.\\n\\nBN-8 provides a unique challenge, as the only method of earning money in that [BitNode](../advanced/bitnodes.md) is through trading at the stock market.\\n\";","export default \"# Getting Started Guide for Beginner Programmers\\n\\n_Note_: The [Scripts](../basic/scripts.md) and strategies in this guide aren't necessarily optimal or comperhensive.\\nThis guide is tailored to help those with minimal programming knowledge experience Bitburner during early stages of the game.\\n\\nIf you are confused or overwhelmed by the game, especially the coding and scripting aspects, this guide is perfect for you!\\n\\n## Introduction\\n\\nBitburner is a cyberpunk-themed incremental RPG.\\nYou will progress by raising your [Stats](../basic/stats.md), earning money, and with practice, advancing your real-world coding skills.\\nAfter reaching certain criteria, you will receive invitations from in-game [Factions](../basic/factions.md).\\nJoining [Factions](../basic/factions.md) and working for them will unlock various [Augmentations](../basic/augmentations.md),\\nwhich are purchased and \\\"installed,\\\" adding a persistent bonus to [stats](../basic/stats.md) and other abilities. Working with Factions and installing Augmentations is a basic step for progressing in Bitburner.\\n\\nThe game has an open, minimalistic storyline that can be played in multiple ways to reach your goals.\\nSince this guide is written as a basic introduction to Bitburner, it will not expose the entire scope or storyline available.\\n\\n## First Steps\\n\\nI'm going to assume you followed the introductory tutorial when you first began the game.\\nIn this introductory tutorial, you created a [Script](../basic/scripts.md) called `n00dles.js` and ran it on the `n00dles` server.\\nNow, we'll kill this [Script](../basic/scripts.md). There are two ways to do this:\\n\\n- You can go to the Terminal and enter: `$ kill n00dles.js`\\n- You can go to the `Active Scripts` page (Alt + s) and press the `Kill Script` button for `n00dles.js`.\\n\\nIf you skipped the introductory tutorial, then ignore the part above.\\nInstead, go to the `Hacknet Nodes` page (Alt + h) and purchase a [Hacknet Node](../basic/hacknet_nodes.md) to start generating some passive income.\\n\\n## Creating our First Script\\n\\nNow, we'll create a generic [hacking](../basic/hacking.md) [Script](../basic/scripts.md) that can be used early on in the game (or throughout the entire game, if you want).\\n\\nBefore we write the [Script](../basic/scripts.md), here are some things you'll want to familiarize yourself with:\\n\\n- `hacking`\\n- `security`\\n- `hack`\\n- `grow`\\n- `weaken`\\n- `brutessh`\\n- `nuke`\\n\\nTo briefly summarize: Each [Server](../basic/servers.md) has a security level that affects how difficult it is to hack.\\nEach [Server](../basic/servers.md) also has a certain amount of money, as well as a maximum amount of money it can hold.\\n[Hacking](../basic/hacking.md) a [Server](../basic/servers.md) steals a percentage of that [Server](../basic/servers.md)'s money.\\nThe `hack()` function is used to hack a [Server](../basic/servers.md).\\nThe `grow()` function is used to increase the amount of money available on a [Server](../basic/servers.md).\\nThe `weaken()` function is used to decrease a [Server](../basic/servers.md)'s security level.\\n\\nNow let's move on to actually creating the [Script](../basic/scripts.md).\\nGo to your home computer and then create a [Script](../basic/scripts.md) called `early-hack-template.js` by going to [Terminal](../basic/terminal.md) and entering the following two commands:\\n\\n $ home\\n $ nano early-hack-template.js\\n\\nThis will take you to the [Script](../basic/scripts.md) editor, which you can use to code and create [Scripts](../basic/scripts.md).\\n\\nEnter the following code in the [Script](../basic/scripts.md) editor:\\n\\n /** @param {NS} ns */\\n export async function main(ns) {\\n // Defines the \\\"target server\\\", which is the server\\n // that we're going to hack. In this case, it's \\\"n00dles\\\"\\n const target = \\\"n00dles\\\";\\n\\n // Defines how much money a server should have before we hack it\\n // In this case, it is set to the maximum amount of money.\\n const moneyThresh = ns.getServerMaxMoney(target);\\n\\n // Defines the maximum security level the target server can\\n // have. If the target's security level is higher than this,\\n // we'll weaken it before doing anything else\\n const securityThresh = ns.getServerMinSecurityLevel(target);\\n\\n // If we have the BruteSSH.exe program, use it to open the SSH Port\\n // on the target server\\n if (ns.fileExists(\\\"BruteSSH.exe\\\", \\\"home\\\")) {\\n ns.brutessh(target);\\n }\\n\\n // Get root access to target server\\n ns.nuke(target);\\n\\n // Infinite loop that continously hacks/grows/weakens the target server\\n while(true) {\\n if (ns.getServerSecurityLevel(target) > securityThresh) {\\n // If the server's security level is above our threshold, weaken it\\n await ns.weaken(target);\\n } else if (ns.getServerMoneyAvailable(target) < moneyThresh) {\\n // If the server's money is less than our threshold, grow it\\n await ns.grow(target);\\n } else {\\n // Otherwise, hack it\\n await ns.hack(target);\\n }\\n }\\n }\\n\\nThe [Script](../basic/scripts.md) above contains comments that document what it does, but let's go through it step-by-step anyway.\\n\\n const target = \\\"n00dles\\\";\\n\\nThis first command defines a string which contains our target [Server](../basic/servers.md).\\nThat's the [Server](../basic/servers.md) that we're going to [hack](../basic/hacking.md).\\nFor now, it's set to `\\\"n00dles\\\"` because that's the only [Server](../basic/servers.md) with a required hacking level of `1`.\\nIf you want to [hack](../basic/hacking.md) a different [Server](../basic/servers.md), simply change this variable to be the hostname of another [Server](../basic/servers.md).\\n\\n const moneyThresh = ns.getServerMaxMoney(target);\\n\\nThis second command defines a numerical value representing the minimum amount of money that must be available on the target [Server](../basic/servers.md) in order for our [Script](../basic/scripts.md) to [hack](../basic/hacking.md) it.\\nIf the money available on the target [Server](../basic/servers.md) is less than this value, then our [Script](../basic/scripts.md) will `grow()` the [Server](../basic/servers.md) rather than [hacking](../basic/hacking.md) it.\\nIt is set to the maximum amount of money that can be available on the [Server](../basic/servers.md).\\nThe `getServerMaxMoney()` function is used to find this value\\n\\n const securityThresh = ns.getServerMinSecurityLevel(target);\\n\\nThis third command defines a numerical value representing the minimum security level the target [Server](../basic/servers.md) can have.\\nIf the target [Server](../basic/servers.md)'s security level is higher than this value, then our [Script](../basic/scripts.md) will `weaken()` the [Script](../basic/scripts.md) before doing anything else.\\n\\n if (ns.fileExists(\\\"BruteSSH.exe\\\", \\\"home\\\")) {\\n ns.brutessh(target);\\n }\\n\\n ns.nuke(target);\\n\\nThis section of code is used to gain root access on the target [Server](../basic/servers.md).\\nThis is necessary for [hacking](../basic/hacking.md).\\n\\n while (true) {\\n if (ns.getServerSecurityLevel(target) > securityThresh) {\\n // If the server's security level is above our threshold, weaken it\\n await ns.weaken(target);\\n } else if (ns.getServerMoneyAvailable(target) < moneyThresh) {\\n // Otherwise, if the server's money is less than our threshold, grow it\\n await ns.grow(target);\\n } else {\\n // Otherwise, hack it\\n await ns.hack(target);\\n }\\n }\\n\\nThis is the main section that drives our [Script](../basic/scripts.md).\\nIt dictates the [Script](../basic/scripts.md)'s logic and carries out the [hacking](../basic/hacking.md) operations.\\nThe `while (true)` creates an infinite loop that will continuously run the [hacking](../basic/hacking.md) logic until the the [Script](../basic/scripts.md) is killed.\\n\\nThe await keyword is needed for `hack()` / `grow()` / `weaken()` because these commands take time to execute, unlike the others.\\nIf you forget to await these commands, you will get an exception saying you tried to do multiple things at once, because your code will immediately finish the function call without waiting for the operation to be done.\\nAlso important is that await can only be used in functions marked `async` (note that `main()` is marked `async`).\\n\\n## Running our Scripts\\n\\nNow we want to start running our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) so that it can start earning us money and experience.\\nOur home computer only has 8GB of [RAM](../basic/ram.md), and we'll be using it for something else later.\\nInstead, we'll take advantage of the [RAM](../basic/ram.md) on other machines.\\n\\nGo to `Terminal` and enter the following command:\\n\\n $ scan-analyze 2\\n\\nThis will show detailed information about some [Servers](../basic/servers.md) on the network.\\nThe **network is randomized so it will be different for every person**.\\nHere's what mine showed at the time I made this:\\n\\n [home ~]> scan-analyze 2\\n ┕ home\\n ┃ Root Access: YES, Required hacking skill: 1\\n ┃ Number of open ports required to NUKE: 5\\n ┃ RAM: 8.00GB\\n ┣ n00dles\\n ┃ ┃ Root Access: YES, Required hacking skill: 1\\n ┃ ┃ Number of open ports required to NUKE: 0\\n ┃ ┃ RAM: 4.00GB\\n ┃ ┕ nectar-net\\n ┃ Root Access: NO, Required hacking skill: 20\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┣ foodnstuff\\n ┃ ┃ Root Access: NO, Required hacking skill: 1\\n ┃ ┃ Number of open ports required to NUKE: 0\\n ┃ ┃ RAM: 16.00GB\\n ┃ ┕ zer0\\n ┃ Root Access: NO, Required hacking skill: 75\\n ┃ Number of open ports required to NUKE: 1\\n ┃ RAM: 32.00GB\\n ┣ sigma-cosmetics\\n ┃ ┃ Root Access: NO, Required hacking skill: 5\\n ┃ ┃ Number of open ports required to NUKE: 0\\n ┃ ┃ RAM: 16.00GB\\n ┃ ┕ max-hardware\\n ┃ Root Access: NO, Required hacking skill: 80\\n ┃ Number of open ports required to NUKE: 1\\n ┃ RAM: 32.00GB\\n ┣ joesguns\\n ┃ Root Access: NO, Required hacking skill: 10\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┣ hong-fang-tea\\n ┃ Root Access: NO, Required hacking skill: 30\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┣ harakiri-sushi\\n ┃ Root Access: NO, Required hacking skill: 40\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┕ iron-gym\\n ┃ Root Access: NO, Required hacking skill: 100\\n ┃ Number of open ports required to NUKE: 1\\n ┃ RAM: 32.00GB\\n ┕ CSEC\\n Root Access: NO, Required hacking skill: 55\\n Number of open ports required to NUKE: 1\\n RAM: 8.00GB\\n\\nTake note of the following servers:\\n\\n- `sigma-cosmetics`\\n- `joesguns`\\n- `nectar-net`\\n- `hong-fang-tea`\\n- `harakiri-sushi`\\n\\nAll of these servers have 16GB of [RAM](../basic/ram.md).\\nFurthermore, all of these servers do not require any open ports in order to NUKE.\\nIn other words, we can gain root access to all of these servers and then run [Scripts](../basic/scripts.md) on them.\\n\\nFirst, let's determine how many threads of our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) we can run.\\n(See the page on [scripts](../basic/scripts.md) for more information on multithreading.)\\n\\nThe [Script](../basic/scripts.md) we wrote uses 2.6GB of [RAM](../basic/ram.md).\\nYou can check this using the following `Terminal` command:\\n\\n $ mem early-hack-template.js\\n\\nThis means we can run 6 threads on a 16GB server.\\nNow, to run our [Scripts](../basic/scripts.md) on all of these servers, we have to do the following:\\n\\n1. Use the `scp` command to copy our [Script](../basic/scripts.md) to each server.\\n2. Use the `connect` command to connect to a server.\\n3. Use the `run` command to run the `NUKE.exe` program and gain root access.\\n4. Use the `run` command again to run our [Script](../basic/scripts.md).\\n5. Repeat steps 2-4 for each server.\\n\\nHere's the sequence of `Terminal` commands I used in order to achieve this:\\n\\n $ home\\n $ scp early-hack-template.js n00dles\\n $ scp early-hack-template.js sigma-cosmetics\\n $ scp early-hack-template.js joesguns\\n $ scp early-hack-template.js nectar-net\\n $ scp early-hack-template.js hong-fang-tea\\n $ scp early-hack-template.js harakiri-sushi\\n $ connect n00dles\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 1\\n $ home\\n $ connect sigma-cosmetics\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n $ home\\n $ connect joesguns\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n $ home\\n $ connect hong-fang-tea\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n $ home\\n $ connect harakiri-sushi\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n $ home\\n $ connect hong-fang-tea\\n $ connect nectar-net\\n $ run NUKE.exe\\n $ run early-hack-template.js -t 6\\n\\nPressing the `Tab` key in the middle of a Terminal command will attempt to auto-complete the command.\\nFor example, if you type in `scp ea` and then hit `Tab`, the rest of the [Script](../basic/scripts.md)'s name should automatically be filled in.\\nThis works for most commands in the game!\\n\\nThe `home` command is used to connect to the home computer. When running our [Scripts](../basic/scripts.md) with the `run early-hack-template.js -t 6` command, the `-t 6` specifies that the [Script](../basic/scripts.md) should be run with 6 threads.\\n\\nNote that the `nectar-net` [Server](../basic/servers.md) isn't in the home computer's immediate network.\\nThis means you can't directly connect to it from home. You will have to search for it inside the network.\\nThe results of the `scan-analyze 2` command we ran before will show where it is.\\nIn my case, I could connect to it by going from `hong-fang-tea` -> `nectar-net`.\\nHowever, this will probably be different for you.\\n\\nAfter running all of these `Terminal` commands, our [Scripts](../basic/scripts.md) are now up and running.\\nThese will earn money and hacking experience over time.\\nThese gains will be really slow right now, but they will increase once our hacking skill rises and we start running more [Scripts](../basic/scripts.md).\\n\\n## Increasing Hacking Level\\n\\nThere are many [Servers](../basic/servers.md) besides `n00dles` that can be hacked, but they have higher required hacking levels.\\nTherefore, we should raise our hacking level.\\nNot only will this let us hack more [Servers](../basic/servers.md), but it will also increase the effectiveness of our [hacking](../basic/hacking.md) against `n00dles`.\\n\\nThe easiest way to train your hacking level is to visit Rothman University.\\nYou can do this from the `City` tab (Alt + w) on the left-hand navigation menu.\\nRothman University should be the \\\"U\\\" near the bottom-right.\\nClick the \\\"U\\\" to go to the location.\\n\\nOnce you go to Rothman University, you should see a screen with several options.\\nThese options describe different courses you can take.\\nYou should click the first button, which says: `Study Computer Science (free)`.\\n\\nAfter you click the button, you will start studying and earning hacking experience.\\nWhile you are doing this, you cannot interact with any other part of the game until you click either `Stop taking course` or `Do something else simultaneously`.\\n\\nRight now, we want a hacking level of 10.\\nYou need approximately 174 hacking experience to reach level 10.\\nYou can check how much hacking experience you have by going to the `Stats` tab (Alt + c) on the left-hand navigation menu.\\nSince studying at Rothman University earns you 1 experience per second, this will take 174 seconds, or approximately 3 minutes.\\nFeel free to do something in the meantime!\\n\\n## Editing our Hacking Script\\n\\nNow that we have a hacking level of 10, we can hack the `joesguns` [Server](../basic/servers.md).\\nThis [Server](../basic/servers.md) will be slightly more profitable than `n00dles`.\\nTherefore, we want to change our [hacking](../basic/hacking.md) [Script](../basic/scripts.md) to target `joesguns` instead of `n00dles`.\\n\\nGo to `Terminal` and edit the [hacking](../basic/hacking.md) [Script](../basic/scripts.md) by entering:\\n\\n $ home\\n $ nano early-hack-template.js\\n\\nAt the top of the [Script](../basic/scripts.md), change the `target` variable to be `\\\"joesguns\\\"`:\\n\\n const target = \\\"joesguns\\\";\\n\\nNote that this will **NOT** affect any instances of the [Script](../basic/scripts.md) that are already running.\\nThis will only affect instances of the [Script](../basic/scripts.md) that are run from this point forward.\\n\\n## Creating a New Script to Purchase New Servers\\n\\nNext, we're going to create a [Script](../basic/scripts.md) that automatically purchases additional [Servers](../basic/servers.md).\\nThese [Servers](../basic/servers.md) will be used to run many [Scripts](../basic/scripts.md).\\nRunning this [Script](../basic/scripts.md) will initially be very expensive since purchasing a [Server](../basic/servers.md) costs money, but it will pay off in the long run.\\n\\nIn order to create this [Script](../basic/scripts.md), you should familiarize yourself with the following functions:\\n\\n- `purchaseServer()`\\n- `getPurchasedServerCost()`\\n- `getPurchasedServerLimit()`\\n- `getServerMoneyAvailable()`\\n- `scp()`\\n- `exec()`\\n\\nCreate the [Script](../basic/scripts.md) by going to `Terminal` and typing:\\n\\n $ home\\n $ nano purchase-server-8gb.js\\n\\nPaste the following code into the [Script](../basic/scripts.md) editor:\\n\\n /** @param {NS} ns */\\n export async function main(ns) {\\n // How much RAM each purchased server will have. In this case, it'll\\n // be 8GB.\\n const ram = 8;\\n\\n // Iterator we'll use for our loop\\n let i = 0;\\n\\n // Continuously try to purchase servers until we've reached the maximum\\n // amount of servers\\n while (i < ns.getPurchasedServerLimit()) {\\n // Check if we have enough money to purchase a server\\n if (ns.getServerMoneyAvailable(\\\"home\\\") > ns.getPurchasedServerCost(ram)) {\\n // If we have enough money, then:\\n // 1. Purchase the server\\n // 2. Copy our hacking script onto the newly-purchased server\\n // 3. Run our hacking script on the newly-purchased server with 3 threads\\n // 4. Increment our iterator to indicate that we've bought a new server\\n let hostname = ns.purchaseServer(\\\"pserv-\\\" + i, ram);\\n ns.scp(\\\"early-hack-template.js\\\", hostname);\\n ns.exec(\\\"early-hack-template.js\\\", hostname, 3);\\n ++i;\\n }\\n //Make the script wait for a second before looping again.\\n //Removing this line will cause an infinite loop and crash the game.\\n await ns.sleep(1000);\\n }\\n }\\n\\nThis code uses a while loop to purchase the maximum amount of [Servers](../basic/servers.md) using the `purchaseServer()` function.\\nEach of these [Servers](../basic/servers.md) will have 8GB of [RAM](../basic/ram.md), as defined in the `ram` variable.\\nNote that the [Script](../basic/scripts.md) uses the command `getServerMoneyAvailable(\\\"home\\\")` to get the amount of money you currently have.\\nThis is then used to check if you can afford to purchase a [Server](../basic/servers.md).\\n\\nWhenever the script purchases a new [Server](../basic/servers.md), it uses the `scp()` function to copy our [Script](../basic/scripts.md) onto that new [Server](../basic/servers.md), and then it uses the `exec()` function to execute it on that [Server](../basic/servers.md).\\n\\nTo run this [Script](../basic/scripts.md), go to `Terminal` and type:\\n\\n $ run purchase-server-8gb.js\\n\\nThis purchase will continuously run until it has purchased the maximum number of [Servers](../basic/servers.md).\\nWhen this happens, it'll mean that you have a bunch of new [Servers](../basic/servers.md) that are all running [hacking](../basic/hacking.md) [Scripts](../basic/scripts.md) against the `joesguns` [Server](../basic/servers.md)!\\n\\nThe reason we're using so many [Scripts](../basic/scripts.md) to hack `joesguns` instead of targeting other [Servers](../basic/servers.md) is because it's more effective.\\nThis early in the game, we don't have enough [RAM](../basic/ram.md) to efficiently hack multiple targets, and trying to do so would be slow as we'd be spread too thin.\\nYou should definitely do this later on, though!\\n\\nNote that purchasing a [Server](../basic/servers.md) is fairly expensive, and purchasing the maximum amount of [Servers](../basic/servers.md) even more so.\\nAt the time of writing this guide, the [Script](../basic/scripts.md) above requires $11 million in order to finish purchasing all of the 8GB [Servers](../basic/servers.md).\\nTherefore, we need to find additional ways to make money to speed up the process!\\nThese are covered in the next section.\\n\\n## Additional Sources of Income\\n\\nThere are other ways to gain money in this game besides [Scripts](../basic/scripts.md) & [hacking](../basic/hacking.md).\\n\\n## Hacknet Nodes\\n\\nIf you completed the introductory tutorial, you were already introduced to this method: [Hacknet Nodes](../basic/hacknet_nodes.md).\\nOnce you have enough money, you can start upgrading your [Hacknet Nodes](../basic/hacknet_nodes.md) in order to increase your passive income stream.\\nThis is completely optional.\\nSince each [Hacknet Node](../basic/hacknet_nodes.md) upgrade takes a certain amount of time to \\\"pay itself off\\\", it may not necessarily be in your best interest to use these.\\n\\nNonetheless, [Hacknet Nodes](../basic/hacknet_nodes.md) are a good source of income early in the game, although their effectiveness tapers off later on.\\nIf you do wind up purchasing and upgrading [Hacknet Nodes](../basic/hacknet_nodes.md), I would suggest only upgrading their levels for now.\\nI wouldn't bother with [RAM](../basic/ram.md) and Core upgrades until later on.\\n\\n## Crime\\n\\nThe best source of income right now is from [crimes](../basic/crimes.md).\\nThis is because it not only gives you a large amount of money, but it also raises your hacking level.\\nTo commit [crimes](../basic/crimes.md), go to the `City` tab (Alt + w).\\nThen, click on the link that says `The Slums`.\\n\\nIn the Slums, you can attempt to commit a variety of [crimes](../basic/crimes.md), each of which gives certain types of experience and money if successful.\\nSee [crimes](../basic/crimes.md) for more details.\\n\\nYou are not always successful when you attempt to commit a crime.\\nNothing bad happens if you fail a [crime](../basic/crimes.md), but you won't earn any money and the experience gained will be reduced.\\nRaising your stats improves your chance of successfully committing a [crime](../basic/crimes.md).\\n\\nRight now, the best option is the `Rob Store` [crime](../basic/crimes.md).\\nThis takes 60 seconds to attempt, gives $400k if successful, and gives hacking experience (which is very important right now).\\n\\nAlternatively, you can also use the `Shoplift` [crime](../basic/crimes.md).\\nThis takes 2 seconds to attempt and gives $15k if successful.\\nThis [crime](../basic/crimes.md) is slightly easier and more profitable than `Rob Store`, but doesn't give hacking experience.\\n\\n## Work for a Company\\n\\nIf you don't want to commit [crimes](../basic/crimes.md), there's another option - working for a [company](../basic/companies.md).\\nThis will not be nearly as profitable as [crimes](../basic/crimes.md), but will provide [company](../basic/companies.md) [reputation](../basic/reputation.md).\\n\\nGo to the `City` tab on the left-hand navigation menu and then go to `Joe's Guns`.\\nAt `Joe's Guns`, there will be an option that says `Apply to be an Employee`.\\nClick this to get the job.\\nThen, a new option will appear that simply says `Work`.\\nClick this to start working.\\nWorking at `Joe's Guns` earns $110 per second and also grants some experience for every stat except hacking.\\n\\nWorking for a [company](../basic/companies.md), like [crime](../basic/crimes.md), is completely passive.\\nYou can choose to focus on your work, do something else simultaneously, or switch between those two.\\nWhile you focus on work, you will not be able to do anything else in the game.\\nIf you do something else simultaneously, you will not gain [reputation](../basic/reputation.md) at the same speed.\\nYou can cancel working at any time.\\n\\nOnce your hacking hits level 75, you can visit `Carmichael Security` in the city and get a software job there.\\nThis job offers higher pay and also earns you hacking experience.\\n\\nThere are many more companies in the `City` tab that offer more pay and also more gameplay features.\\nFeel free to explore!\\n\\n## After you Purchase your New Servers\\n\\nAfter you've made a total of $11 million, your automatic [Server](../basic/servers.md)-purchasing [Script](../basic/scripts.md) should finish running.\\nThis will free up some [RAM](../basic/ram.md) on your home computer.\\nWe don't want this [RAM](../basic/ram.md) to go to waste, so we'll make use of it.\\nGo to `Terminal` and enter the following commands:\\n\\n $ home\\n $ run early-hack-template.js -t 3\\n\\n## Reaching a Hacking Level of 50\\n\\nOnce you reach a hacking level of 50, two new important parts of the game open up.\\n\\n## Creating your first program: BruteSSH.exe\\n\\nOn the left-hand navigation menu you will notice a `Create Program` tab (Alt + p) with a red notification icon.\\nThis indicates that there are programs available to be created.\\nGo to that tab, and you'll see a list of all the programs you can currently create.\\nHovering over a program will give a brief description of its function.\\nSimply click on a program to start creating it.\\n\\nRight now, the program we want to create is `BruteSSH.exe`.\\nThis program is used to open up SSH ports on [Servers](../basic/servers.md).\\nThis will allow you to hack more [Servers](../basic/servers.md), as many [Servers](../basic/servers.md) in the game require a certain number of opened ports in order for `NUKE.exe` to gain root access.\\n\\nFeel free to cancel your work on creating a program at any time, as your progress will be saved and can be picked back up later.\\n`BruteSSH.exe` takes about 10 minutes to complete.\\n\\n## Optional: Create AutoLink.exe\\n\\nOn the `Create Programs` page, you will notice another program you can create called `AutoLink.exe`.\\nIf you don't mind waiting another 10-15 minutes, you should go ahead and create this program.\\nIt makes it much less tedious to connect to other [Servers](../basic/servers.md), but it's not necessary for progression.\\n\\n## Joining your first faction: CyberSec\\n\\nShortly after you reached level 50 hacking, you should have received a message that said this:\\n\\n Message received from unknown sender:\\n\\n We've been watching you. Your skills are very impressive. But you're wasting your talents.\\n If you join us, you can put your skills to good use and change the world for the better.\\n If you join us, we can unlock your full potential.\\n\\n But first, you must pass our test. Find and install the backdoor on our server.\\n\\n -CyberSec\\n\\n This message was saved as csec-test.msg onto your home computer.\\n\\nIf you didn't, or if you accidentally closed it, that's okay!\\nMessages get saved onto your home computer.\\nEnter the following `Terminal` commands to view the message:\\n\\n $ home\\n $ cat csec-test.msg\\n\\nThis message is part of the game's main \\\"quest-line\\\".\\nIt is a message from the `CyberSec` [faction](../basic/factions.md) that is asking you to pass their test.\\nPassing their test is simple, you just have to find their [Server](../basic/servers.md), hack it, and install a backdoor through the `Terminal`.\\nTheir [Server](../basic/servers.md) is called `CSEC`.\\nTo do this, we'll use the `scan-analyze` Terminal command, just like we did before:\\n\\n $ home\\n $ scan-analyze 2\\n\\nThis will show you the network for all [Servers](../basic/servers.md) that are up to 2 \\\"nodes\\\" away from your home computer.\\nRemember that the network is randomly generated so it'll look different for everyone.\\nHere's the relevant part of my `scan-analyze` results:\\n\\n ┕ home\\n ┃ Root Access: YES, Required hacking skill: 1\\n ┃ Number of open ports required to NUKE: 5\\n ┃ RAM: 8.00GB\\n ┣ harakiri-sushi\\n ┃ Root Access: NO, Required hacking skill: 40\\n ┃ Number of open ports required to NUKE: 0\\n ┃ RAM: 16.00GB\\n ┕ iron-gym\\n ┃ Root Access: NO, Required hacking skill: 100\\n ┃ Number of open ports required to NUKE: 1\\n ┃ RAM: 32.00GB\\n ┕ CSEC\\n Root Access: NO, Required hacking skill: 55\\n Number of open ports required to NUKE: 1\\n RAM: 8.00GB\\n\\nThis tells me that I can reach `CSEC` by going through `iron-gym`:\\n\\n $ connect iron-gym\\n $ connect CSEC\\n\\nIf you created the `AutoLink.exe` program earlier, then there is an easier method of connecting to `CSEC`.\\nYou'll notice that in the `scan-analyze` results, all of the [Server](../basic/servers.md) hostnames are white and underlined.\\nYou can simply click one of the [Server](../basic/servers.md) hostnames in order to connect to it.\\nSo, simply click `CSEC`!\\n\\nMake sure you notice the required hacking skill for the `CSEC` [Server](../basic/servers.md).\\nThis is a random value between 51 and 60.\\nAlthough you receive the message from CSEC once you hit 50 hacking, you cannot actually pass their test until your hacking is high enough to install a backdoor on their [Server](../basic/servers.md).\\n\\nAfter you are connected to the `CSEC` [Server](../basic/servers.md), you can backdoor it.\\nNote that this [Server](../basic/servers.md) requires one open port in order to gain root access.\\nWe can open the SSH port using the `BruteSSH.exe` program we created earlier.\\nIn `Terminal`:\\n\\n $ run BruteSSH.exe\\n $ run NUKE.exe\\n $ backdoor\\n\\nAfter you successfully install the backdoor, you should receive a [faction](../basic/factions.md) invitation from `CyberSec` shortly afterwards.\\nAccept it.\\nIf you accidentally reject the invitation, that's okay.\\nJust go to the `Factions` tab (Alt + f) and you should see an option that lets you accept the invitation.\\n\\nCongrats!\\nYou just joined your first [faction](../basic/factions.md).\\nDon't worry about doing anything with this [faction](../basic/factions.md) yet, we can come back to it later.\\n\\n## Using Additional Servers to Hack Joesguns\\n\\nOnce you have the `BruteSSH` program, you will be able to gain root access to several additional [Servers](../basic/servers.md).\\nThese [Servers](../basic/servers.md) have more [RAM](../basic/ram.md) that you can use to run [Scripts](../basic/scripts.md).\\nWe'll use the [RAM](../basic/ram.md) on these [Servers](../basic/servers.md) to run more [Scripts](../basic/scripts.md) that target `joesguns`.\\n\\n## Copying our Scripts\\n\\nThe [Servers](../basic/servers.md) we'll be using to run our [Scripts](../basic/scripts.md) are:\\n\\n- `neo-net`\\n- `zer0`\\n- `max-hardware`\\n- `iron-gym`\\n\\nAll of these [Servers](../basic/servers.md) have 32GB of [RAM](../basic/ram.md).\\nYou can use the `Terminal` command `scan-analyze 3` to see for yourself.\\nTo copy our [hacking](../basic/hacking.md) [Scripts](../basic/scripts.md) onto these [Servers](../basic/servers.md), go to `Terminal` and run:\\n\\n $ home\\n $ scp early-hack-template.js neo-net\\n $ scp early-hack-template.js zer0\\n $ scp early-hack-template.js max-hardware\\n $ scp early-hack-template.js iron-gym\\n\\nSince each of these [Servers](../basic/servers.md) has 32GB of [RAM](../basic/ram.md), we can run our [hacking](../basic/hacking.md) script with 12 threads on each [Server](../basic/servers.md).\\nBy now, you should know how to connect to [Servers](../basic/servers.md).\\nSo find and connect to each of the [Servers](../basic/servers.md) above using the `scan-analyze 3` `Terminal` command.\\nThen, use following `Terminal` command to run our [hacking](../basic/hacking.md) script with 12 threads:\\n\\n $ run early-hack-template.js -t 12\\n\\nRemember that if you have the `AutoLink` program, you can simply click on the hostname of a [Server](../basic/servers.md) after running `scan-analyze` to connect to it.\\n\\n## Profiting from Scripts & Gaining Reputation with CyberSec\\n\\nNow it's time to play the waiting game.\\nIt will take some time for your [Scripts](../basic/scripts.md) to start earning money.\\nRemember that most of your [Scripts](../basic/scripts.md) are targeting `joesguns`.\\nIt will take a bit for them to `grow()` and `weaken()` the [Server](../basic/servers.md) to the appropriate values before they start [hacking](../basic/hacking.md) it.\\nOnce they do, however, the [Scripts](../basic/scripts.md) will be very profitable.\\n\\nFor reference, in about two hours after starting my first [Script](../basic/scripts.md), my [Scripts](../basic/scripts.md) had a production rate of $20k per second and had earned a total of $70 million.\\n(You can see these stats on the `Active Scripts` tab).\\n\\nAfter another 15 minutes, the production rate had increased to $25k per second and the [Scripts](../basic/scripts.md) had made an additional $55 million.\\n\\nYour results will vary based on how fast you earned money from [crime](../basic/crimes.md)/[working](../basic/companies.md)/[hacknet nodes](../basic/hacknet_nodes.md), but this will hopefully give you a good indication of how much the [Scripts](../basic/scripts.md) can earn.\\n\\nIn the meantime, we are going to be gaining reputation with the `CyberSec` [faction](../basic/factions.md).\\nGo to the `Factions` tab (Alt + f) on the left-hand navigation menu, and from there select `CyberSec`.\\nIn the middle of the page there should be a button for `Hacking Contracts`.\\nClick it to start earning [reputation](../basic/reputation.md) for the `CyberSec` [faction](../basic/factions.md) (as well as some hacking experience).\\nThe higher your hacking level, the more [reputation](../basic/reputation.md) you will gain.\\nNote that while you are working for a [faction](../basic/factions.md), you can choose to not interact with the rest of the game in any way to gain [reputation](../basic/reputation.md) at full speed.\\nYou can also select to do something else simultaneously, gaining [reputation](../basic/reputation.md) a bit more slowly, until you focus again.\\nYou can cancel your [faction](../basic/factions.md) work at any time with no penalty to your [reputation](../basic/reputation.md) gained so far.\\n\\n## Purchasing Upgrades and Augmentations\\n\\nAs I mentioned before, within 1-2 hours I had earned over $200 million.\\nNow, it's time to spend all of this money on some persistent upgrades to help progress!\\n\\n## Upgrading RAM on Home computer\\n\\nThe most important thing to upgrade right now is the [RAM](../basic/ram.md) on your home computer.\\nThis will allow you to run more [Scripts](../basic/scripts.md).\\n\\nTo upgrade your [RAM](../basic/ram.md), go to the `City` tab and visit the company `Alpha Enterprises`.\\nThere will be a button that says `Upgrade 'home' RAM (8.00GB -> 16.00GB) - $1.010m`.\\nClick it to upgrade your [RAM](../basic/ram.md).\\n\\nI recommend getting your home computer's [RAM](../basic/ram.md) to **at least** 128GB.\\nGetting it even higher would be better.\\n\\n## Purchasing your First Augmentations\\n\\nOnce you get ~1000 [reputation](../basic/reputation.md) with the `CyberSec` [faction](../basic/factions.md), you can purchase your first [Augmentation](../basic/augmentations.md) from them.\\n\\nTo do this, go to the `Factions` tab on the left-hand navigation menu (Alt + f) and select `CyberSec`.\\nThere is a button near the bottom that says `Purchase Augmentations`.\\nThis will bring up a page that displays all of the [Augmentations](../basic/augmentations.md) available from `CyberSec`.\\nSome of them may be locked right now.\\nTo unlock these, you will need to earn more [reputation](../basic/reputation.md) with `CyberSec`.\\n\\n[Augmentations](../basic/augmentations.md) give persistent upgrades in the form of multipliers.\\nThese aren't very powerful early in the game because the multipliers are small.\\nHowever, the effects of [Augmentations](../basic/augmentations.md) stack multiplicatively **with each other**, so as you continue to install many [Augmentations](../basic/augmentations.md), their effects will increase significantly.\\n\\nBecause of this, I would recommend investing more in [RAM](../basic/ram.md) upgrades for your home computer rather than [Augmentations](../basic/augmentations.md) early on.\\nHaving enough [RAM](../basic/ram.md) to run many [Scripts](../basic/scripts.md) will allow you to make much more money, and then you can come back later on and get all these [Augmentations](../basic/augmentations.md).\\n\\nRight now, I suggest purchasing at the very least the `Neurotrainer I` [Augmentation](../basic/augmentations.md) from `CyberSec`.\\nIf you have the money to spare, I would also suggest getting `BitWire` and several levels of the `NeuroFlux Governor` (`NFG`) [Augmentations](../basic/augmentations.md).\\nNote that each time you purchase an [Augmentation](../basic/augmentations.md), **the price of purchasing another increases by 90%**, so make sure you buy the most expensive [Augmentation](../basic/augmentations.md) first.\\nDon't worry, once you choose to install [Augmentations](../basic/augmentations.md), their prices will reset back to their original values.\\n\\n## Next Steps\\n\\nThat's the end of the walkthrough portion of this guide!\\nYou should continue to explore what the game has to offer.\\nThere's quite a few features that aren't covered or mentioned in this guide, and even more that get unlocked as you continue to play!\\n\\nAlso, check out the api documentation to see what it has to offer.\\nWriting [Scripts](../basic/scripts.md) to perform and automate various tasks is where most of the fun in the game comes from (in my opinion)!\\n\\nThe following are a few things you may want to consider doing in the near future.\\n\\n## Installing Augmentations (and Resetting)\\n\\nIf you've purchased any [Augmentations](../basic/augmentations.md), you'll need to install them before you actually gain their effects.\\nInstalling [Augmentations](../basic/augmentations.md) is the game's \\\"soft-reset\\\" or \\\"prestige\\\" mechanic.\\n\\nTo install your [Augmentations](../basic/augmentations.md), go to the `Augmentations` tab (Alt + a) on the left-hand navigation menu.\\nYou will see a list of all of the [Augmentations](../basic/augmentations.md) you have purchased.\\nBelow that, you will see a button that says `Install Augmentations`.\\nBe warned, after clicking this there is no way to undo it (unless you load an earlier save).\\n\\n## Automating the Script Startup Process\\n\\nWhenever you install [Augmentations](../basic/augmentations.md), all of your [Scripts](../basic/scripts.md) are killed and you'll have to re-run them.\\nDoing this every time you install [Augmentations](../basic/augmentations.md) would be very tedious and annoying, so you should write a [Script](../basic/scripts.md) to automate the process.\\nHere's a simple example for a startup [Script](../basic/scripts.md).\\nFeel free to adjust it to your liking.\\n\\n /** @param {NS} ns */\\n export async function main(ns) {\\n // Array of all servers that don't need any ports opened\\n // to gain root access. These have 16 GB of RAM\\n const servers0Port = [\\\"sigma-cosmetics\\\",\\n \\\"joesguns\\\",\\n \\\"nectar-net\\\",\\n \\\"hong-fang-tea\\\",\\n \\\"harakiri-sushi\\\"];\\n\\n // Array of all servers that only need 1 port opened\\n // to gain root access. These have 32 GB of RAM\\n const servers1Port = [\\\"neo-net\\\",\\n \\\"zer0\\\",\\n \\\"max-hardware\\\",\\n \\\"iron-gym\\\"];\\n\\n // Copy our scripts onto each server that requires 0 ports\\n // to gain root access. Then use nuke() to gain admin access and\\n // run the scripts.\\n for (let i = 0; i < servers0Port.length; ++i) {\\n const serv = servers0Port[i];\\n\\n ns.scp(\\\"early-hack-template.js\\\", serv);\\n ns.nuke(serv);\\n ns.exec(\\\"early-hack-template.js\\\", serv, 6);\\n }\\n\\n // Wait until we acquire the \\\"BruteSSH.exe\\\" program\\n while (!ns.fileExists(\\\"BruteSSH.exe\\\")) {\\n await ns.sleep(60000);\\n }\\n\\n // Copy our scripts onto each server that requires 1 port\\n // to gain root access. Then use brutessh() and nuke()\\n // to gain admin access and run the scripts.\\n for (let i = 0; i < servers1Port.length; ++i) {\\n const serv = servers1Port[i];\\n\\n ns.scp(\\\"early-hack-template.js\\\", serv);\\n ns.brutessh(serv);\\n ns.nuke(serv);\\n ns.exec(\\\"early-hack-template.js\\\", serv, 12);\\n }\\n }\\n\\n## Random Tips\\n\\n- Early on in the game, it's better to spend your money on upgrading [RAM](../basic/ram.md) and purchasing new [Servers](../basic/servers.md) rather than spending it on [Augmentations](../basic/augmentations.md)\\n- The more money available on a [Server](../basic/servers.md), the more effective the `hack()` and `grow()` functions will be.\\n This is because both of these functions use percentages rather than flat values.\\n `hack()` steals a percentage of a [Server](../basic/servers.md)'s total available money, and `grow()` increases a [Server](../basic/servers.md)'s money by X%.\\n- There is a limit to how much money can exist on a [Server](../basic/servers.md).\\n This value is different for each [Server](../basic/servers.md).\\n The `getServerMaxMoney()` function will tell you this maximum value.\\n- At this stage in the game, your combat stats (strength, defense, etc.) are not nearly as useful as your hacking stat.\\n Do not invest too much time or money into gaining combat stat exp.\\n- As a rule of thumb, your hacking target should be the [Server](../basic/servers.md) with highest max money that's required hacking level is under 1/2 of your hacking level.\\n\";","export default \"# Tools & Resource\\n\\n## Official Script Repository\\n\\nThere are plans to create an official repository of Bitburner scripts.\\nAs of right now, this is not a priority and has not been started.\\nHowever, if you'd like to contribute scripts now, you can find the repository [here](https://github.com/bitburner-official/bitburner-scripts) and submit pull requests.\\n\\n## Visual Studio Code Extension\\n\\nOne user created a Bitburner extension for the Visual Studio Code (VSCode) editor.\\n\\nThis extension includes several features such as:\\n\\n- Dynamic RAM calculation\\n- RAM Usage breakdown\\n- Typescript definition files with jsdoc comments\\n- Syntax highlighting\\n\\nYou can find more information and download links [on this reddit post](https://www.reddit.com/r/Bitburner/comments/bh48y2/visual_studio_code_ram_calculator_extra/).\\n\";","export default \"# Documentation\\n\\n## [Beginners guide](help/getting_started.md)\\n\\n## Basic Mechanics\\n\\n- [stats](basic/stats.md)\\n- [terminal](basic/terminal.md)\\n- [hacking](basic/hacking.md)\\n- [scripts](basic/scripts.md)\\n- [servers](basic/servers.md)\\n- [ram](basic/ram.md)\\n- [hacknet_nodes](basic/hacknet_nodes.md)\\n- [augmentations](basic/augmentations.md)\\n- [companies](basic/companies.md)\\n- [factions](basic/factions.md)\\n- [crimes](basic/crimes.md)\\n- [infiltration](basic/infiltration.md)\\n- [programs](basic/programs.md)\\n- [reputation](basic/reputation.md)\\n- [stockmarket](basic/stockmarket.md)\\n- [world](basic/world.md)\\n- [codingcontracts](basic/codingcontracts.md)\\n\\n## Advanced Mechanics\\n\\n- [BitNodes](advanced/bitnodes.md)\\n- [BladeBurners](advanced/bladeburners.md)\\n- [Corporations](advanced/corporations.md)\\n- [Gang](advanced/gang.md)\\n- [Grafting](advanced/grafting.md)\\n- [Hacknet Servers](advanced/hacknetservers.md)\\n- [Intelligence](advanced/intelligence.md)\\n- [Offline Scripts and Bonus Time](advanced/offlineandbonustime.md)\\n- [Sleeves](advanced/sleeves.md)\\n- [Source-Files](advanced/sourcefiles.md)\\n- [Stanek's Gift](advanced/stanek.md)\\n\\n## Resources\\n\\n- [Learn to program](programming/learn.md)\\n- [Remote API](programming/remote_api.md)\\n- [Game Frozen or Stuck?](programming/game_frozen.md)\\n- [Tools & Resources](help/tools_and_resources.md)\\n- [Changelog](changelog.md)\\n\\n## Migration\\n\\n- [v1.0.0 script migration guide](migrations/v1.md)\\n- [v2.0.0 script migration guide](migrations/v2.md)\\n\";","export default \"# v1.0.0 Migration Guide\\n\\nIn v1.0.0 a few API have been broken.\\n\\nmigrated (only for ns2):\\n\\n- bladeburner.getActionTime will return milliseconds instead of seconds.\\n- getHackTime will return milliseconds instead of seconds.\\n- getGrowTime will return milliseconds instead of seconds.\\n- getWeakenTime will return milliseconds instead of seconds.\\n- hackAnalyzePercent renamed to hackAnalyze\\n- hackAnalyzePercent will return decimal instead of percentage\\n- hackChance (not formulas.basic.hackChance) renamed to hackAnalyzeChance\\n- formulas.basic is split into formulas.skills and formulas.hacking\\n\\nnot migrated (require manual changes sometimes):\\n\\n- getPlayer().hacking_skill renamed `hacking`\\n- same thing in sleeves\\n- getPurchasedServers won't let you query for ips instead of hostnames.\\n- getStats is deprecated in favor getPlayer\\n- getCharacterInformation is deprecated in favor getPlayer\\n- getServerRam deprecated in favor of getServerMaxRam and getServerUsedRam\\n- getServerBaseSecurityLevel will be deprecated in favor of nothing, it's not really used.\\n- sleep can no longer be called simultaneously, a new function called asleep will let you.\\n- write returns promise (needs to be await ed).\\n- scp returns a promise (needs to be await ed).\\n- free port, write, read\\n- write, read does not support port anymore, writePort and readPort does.\\n\\nUpon loading v1.0.0 the game will apply some rules to change everything.\\nThe game never changes a file before making a backup called `BACKUP_filename.ext`, then,\\nin the script it will change whatever it thinks it should change.\\nBut will prefix the modified line with the original line.\\n\\nA file called `v1_DETECTED_CHANGES.txt` will point out every file with some possible problem.\\n\";","export default \"# v2.0.0 Migration Guide\\n\\nIn v2.0.0 a few more APIs have been broken.\\n\\n## Working\\n\\nWorking has been rebuilt from the ground up. The motivation for this change is that all\\ndifferent types of work all required different cached variables on the main Player object.\\nThis caused a lot of bugs and crashes. It's been reworked in such a way as to prevent bugs\\nand make it nearly trivial to add new kinds of work.\\nAll work types give their reward immediately. No need to stop work to bank rewards like reputation.\\nFaction and Company work no longer have a time limit.\\nCompany work no longer reduces rep gain by half for quitting early.\\nCompany factions now require 400k rep to join (up from 200k).\\nBackdooring a company server reduces faction requirement to 300k.\\nAll types of work generally no longer keep track of cumulative gains like exp and reputation since it's applied instantly.\\n\\n## commitCrime\\n\\nCrime now loops, meaning after finishing one shoplift you start the next one with no input. While the signature\\nhas not changed, its behavior has. It also has a new 'focus' parameter.\\n\\n## getPlayer\\n\\nThe following work-related fields are no longer included:\\n\\n- workChaExpGained\\n- currentWorkFactionName\\n- workDexExpGained\\n- workHackExpGained\\n- createProgramReqLvl\\n- workStrExpGained\\n- companyName\\n- crimeType\\n- workRepGained\\n- workChaExpGainRate\\n- workType\\n- workStrExpGainRate\\n- isWorking\\n- workRepGainRate\\n- workDefExpGained\\n- currentWorkFactionDescription\\n- workHackExpGainRate\\n- workAgiExpGainRate\\n- workDexExpGainRate\\n- workMoneyGained\\n- workMoneyLossRate\\n- workMoneyGainRate\\n- createProgramName\\n- workDefExpGainRate\\n- workAgiExpGained\\n- className\\n\\nThe reason for this, is that these fields are all, in one way or another, included in the new work field `currentWork`.\\nSome of these values are also irrelevant.\\nTake a look at the new singularity.getCurrentWork function:\\n\\nAll fields ending in `_mult` have been moved to the `mults` struct.\\nFor example: `getPlayer().hacking_skill_mult` => `getPlayer().mults.hacking_skill`\\n\\nskills has been moved to the skills struct\\nFor example: `getPlayer().hacking` => `getPlayer().skills.hacking`\\n\\nexp has been moved to the exp struct\\nFor example: `getPlayer().hacking_exp` => `getPlayer().exp.hacking`\\n\\nhp has been moved to the hp struct\\nFor example: `getPlayer().max_hp` => `getPlayer().hp.max` or `hp.current`\\n\\n`hasWseAccount`, `hasTixApiAccess`, `has4SData`, `has4SDataTixApi` have been removed and replaced with similar stock functions.\\n\\n## workForCompany\\n\\nThe argument 'companyName' is now required.\\n\\n## getScriptIncome & getScriptExpGain\\n\\nThese two functions used to have a call where, if no arguments were provided, it would return the total for all scripts. This caused weird signature.\\nIf you want to get the total income/exp for all scripts, use the new getTotalScriptIncome / getTotalScriptExpGain instead.\\n\\n## scp\\n\\nThe last two arguments of spc have been reversed. The signature is now scp(files, destination, optional_source)\\n\\n## Singularity\\n\\nThe top level singularity functions were deprecated a while ago in favor of the singularity namespace.\\nThis means calls like 'ns.connect' need to be changed to 'ns.singularity.connect'\\n\\n## stock.buy, stock.sell, stock.short\\n\\nThese functions were renamed to stock.buyStock, stock.sellStock, and stock.buyShort because 'buy', 'sell', and 'short'\\nare very common tokens that would trick the ram calculation.\\n\\n## corporation.bribe\\n\\nThe ability to give shares as a bribe has been removed. The signature is now bribe(faction, money)\\n\";","export default \"# Game Frozen or Stuck?\\n\\n## Infinite Loop in Scripts\\n\\nIf your game is frozen or stuck in any way, then the most likely culprit is an infinitely running loop in your script.\\nTo get past the freezing, run the game with `?noScripts` in the URL:\\n\\n[Link to no freeze](https://bitburner-official.github.io?noScripts)\\n\\nThen, to fix your script, make sure you have a `sleep()` or any other timed function like `hack()` or `grow()` in any infinite loops:\\n\\n while(true) {\\n // This is an infinite loop that does something\\n ...\\n await ns.sleep(1000); // Add a 1s sleep to prevent freezing\\n }\\n\\nAlso make sure that each while loop gets to the `await`ed function or `break`, for example the next snippet has a `sleep()` function, but it nor any possible conditional breaks are never reached and therefore will crash the game:\\n\\n while(true) {\\n let currentMoney = ns.getServerMoneyAvailable(\\\"n00dles\\\");\\n let maxMoney = ns.getServerMaxMoney(\\\"n00dles\\\");\\n if (currentMoney < maxMoney/2){\\n await ns.grow(\\\"n00dles\\\");\\n }\\n if (currentMoney === maxMoney){\\n break;\\n }\\n }\\n\\nIf `n00dles` current money is, for example, 75% of the maximum money, the script will reach neither `grow()` nor `break` and the game will crash.\\nAdding a sleep like in the first example, or changing the code so that the `awaited` function or `break` is always reached, would prevent the crash.\\n\\nCommon infinite loop when translating the server purchasing script in starting guide to scripts is to have a while loop, where the condition's change is conditional:\\n\\n var ram = 8;\\n var i = 0;\\n\\n while (i < ns.getPurchasedServerLimit()) {\\n if (ns.getServerMoneyAvailable(\\\"home\\\") > ns.getPurchasedServerCost(ram)) {\\n var hostname = ns.purchaseServer(\\\"pserv-\\\" + i, ram);\\n ns.scp(\\\"early-hack-template.script\\\", hostname);\\n ns.exec(\\\"early-hack-template.script\\\", hostname, 3);\\n ++i;\\n }\\n }\\n\\nIf the player does not currently have enough money to purchase a server, the `if`'s condition will be false and `++i` will not be reached.\\nSince the script doesn't have `sleep()` and value `i` will not change without the `if` being true, this will crash the game.\\nAdding a `sleep()` that is always reached would prevent the crash.\\n\\n## Blackscreen\\n\\nIf the game window becomes a black screen without the game itself crashing, this is caused by the game running too many concurrent scripts (the game runs on a browser and each tab can only use so much ram until it crashes).\\nDepending on which scripts are running and your hardware, this number can vary between 50000 to 100000 instances (in version 2.0.2. In prior versions this number was about 1/5th of that).\\nTo prevent this from happening make sure to multithread the scripts as much as possible.\\n\\n## Bug\\n\\nOtherwise, the game is probably frozen/stuck due to a bug.\\nTo report a bug, follow the guidelines [here](https://github.com/bitburner-official/bitburner-src/blob/master/doc/CONTRIBUTING.md#reporting-bugs).\\n\";","export default \"# Hacking algorithms\\n\\nThere are three primary families of hacking algorithms.\\nThis guide will go over each of them and advise on how they can be implemented.\\n\\n## Self-contained algorithms\\n\\n**Difficulty**: Easy\\n\\nPros:\\n\\n- Easy to implement\\n- Does not require other scripts to work\\n- Works at any stage of the game\\n\\nCons:\\n\\n- Limits income generation\\n- Extremely [RAM](../basic/ram.md) inefficient\\n- Utilizes script online time poorly\\n- Risk of over hacking\\n\\nSelf-contained algorithms are the simplest family of hacking algorithms to implement.\\nEach script is tasked with choosing which function to execute based on the status of the target server.\\nBecause of this, they guarantee a consistent, but relatively small, flow of money.\\n\\nThe general logic goes like this:\\n\\n loop forever {\\n if security is not minimum {\\n await ns.weaken(target)\\n } else if money is not maximum {\\n await ns.grow(target)\\n } else {\\n await ns.hack(target)\\n }\\n }\\n\\nThis algorithm is perfectly capable of paving the way through the majority of the game, but it has a few significant issues.\\n\\n- It tends to make all your scripts on every server do the same thing.\\n (e.g. If the target is 0.01 security above the minimum, all scripts will decide to weaken, when only a handful of threads should be devoted to the task)\\n- At higher thread counts, these scripts have the potential to hack the server to $0, or maximum security, requiring a long setup time while the scripts return the server to the best stats.\\n- Requires function calls such as `getServerSecurityLevel` and `getServerMoneyAvailable`, as well as calling all three hacking functions, increasing RAM cost which is multiplied by the number of allocated threads\\n\\n## Loop algorithms\\n\\n**Difficulty**: Easy to Medium\\n\\nPros:\\n\\n- Simple to understand\\n- Works at any stage of the game\\n- Maximize RAM usage\\n\\nCons:\\n\\n- Requires a script that handles deployment\\n\\nBy splitting our hack, weaken, and grow functions into three separate scripts, we can both remove our reliance on functions such as `getServerSecurityLevel` as well as removing functions that cannot work concurrently, reducing RAM requirements, and thus increasing our thread limits.\\nLoop scripts are formatted like this:\\n\\n loop forever {\\n await ns.hack(target) // or grow, or weaken\\n }\\n\\nNow we can take the total amount of threads available and split it and allocate, for example:\\n\\n- 1 part to the hack scripts\\n- 10 parts to the grow scripts\\n- 2 parts to the weaken scripts\\n\\nMeaning if we have space for 100 threads across the entire network 7 threads will go to the hack scripts, 76 threads will go to the grow scripts and 15 threads will go to the weaken scripts.\\nThe ratios described here are arbitrary and can be greatly improved through the use of the analyze functions, and later, through the use of Formulas.exe.\\n\\nWhen utilizing this strategy, monitor the amount of money and security on the target server, if the money is not hovering around maximum and the security around the minimum, the ratios should be tweaked until that is the case.\\n\\nUtilizing `sleep` or `asleep` to ensure that your scripts do not all start at the same time can decrease the chance of issues associated with overhacking occurring.\\nBoth functions have a ram cost of zero.\\n\\n## Batch algorithms (HGW, HWGW, or Cycles)\\n\\n**Difficulty**: Hard\\n\\nPros:\\n\\n- Maximum potential income\\n\\nCons:\\n\\n- Very difficult to implement without prior programming knowledge\\n- Very difficult to make work on servers with less than 1TB of RAM\\n\\nBatch algorithms utilize a master script that uses `exec` many scripts which utilize a relevant hacking function in batches.\\n\\nThe scripts used to execute the hacking functions are even simpler than the previous algorithms but a complex controller is required to calculate the effect, time taken, and the necessary delay.\\n\\n await ns.sleep(a bit)\\n await ns.hack(target) // or grow, or weaken\\n\\nA few things need to be known before this algorithm can be implemented:\\n\\n- The effects of hack and grow depend on the server security level, a higher security level results in a reduced effect.\\n You only want these effects to occur when the security level is minimized.\\n- The time taken to execute hack, grow, or weaken is determined when the function is called and is based on the security level of the target server and your hacking level.\\n You only want these effects to start when the security level is minimized.\\n- The effects of hack, grow, and weaken, are determined when the time is completed, rather than at the beginning.\\n Hack should finish when security is minimum and money is maximum.\\n Grow should finish when security is minimum, shortly after a hack occurred.\\n Weaken should occur when security is not at a minimum due to a hack or grow increasing it.\\n\\nA single batch consists of four actions:\\n\\n1. A hack script removes a predefined, precalculated amount of money from the target server.\\n2. A weaken script counters the security increase of the hack script.\\n3. A grow script counters the money decrease caused by the hack script.\\n4. A weaken script counters the security increase caused by the grow script.\\n\\nIt is also important that these 4 scripts finish in the order specified above, and all of their effects be precalculated to optimize the ratios between them.\\nThis is the reason for the delay in the scripts.\\n\\n |= hack ====================|\\n |=weaken 1======================================|\\n |= grow ==========================|\\n |=weaken 2======================================|\\n\\nBatches only function predictably when the target server is at minimum security and maximum money, so your script must also handle preparing a server for your batches.\\nYou can utilize batches to prepare a server by using no hack threads during preparation.\\n\\nDepending on your computer's performance as well as a few other factors, the necessary delay between script execution times may range between 20ms and 200ms, you want to fine-tune this value to be as low as possible while also avoiding your scripts finishing out of order.\\nAnything lower than 20ms will not work due to JavaScript limitations.\\n\";","export default \"# Learn to Program in JavaScript\\n\\n## For Beginner Programmers\\n\\nIf you have little to no programming experience, that's okay!\\nYou don't need to be a great programmer in order to enjoy or play this game.\\nIn fact, this game could help you learn some basic programming concepts.\\n\\nHere are some good tutorials for learning programming/JavaScript as a beginner:\\n\\n- [Learn-JS](http://www.learn-js.org/en/Welcome)\\n- [programiz](https://www.programiz.com/javascript/get-started)\\n- [Speaking JavaScript](https://exploringjs.com/es5/)\\n This is a bit on the longer side.\\n You can skip all of the historical background stuff.\\n Recommended chapters: 1, 7-18\\n\\n## For Experienced Programmers\\n\\nThe following section lists several good tutorials/resources for those who have experience programming but who have not worked extensively with JavaScript before.\\n\\nBefore that, however, it's important to clarify some terminology about the different versions of JavaScript.\\nThese are summarized in this article:\\n\\n[WTF is ES6, ES8, ES2017, ECMAScript...](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)\\n\\nAn important takeaway from this article is that ES6, also known as ES2015, introduced many major features that are commonly seen in modern JavaScript programming.\\nHowever, this means that ES5 engines and interpreters will fail if they encounters these ES6 features.\\nYou'll see why this is important further down.\\n\\n- [MDN Introduction to JS](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript)\\n- [Eloquent JavaScript (ES6+)](http://eloquentjavascript.net/)\\n Recommended Chapters: Introduction, 1-6\\n- [Modern JavaScript Tutorial (ES6+)](https://javascript.info/)\\n Recommended Chapters: 2, 4-6\\n\";","export default \"# Remote API\\n\\nAll versions of Bitburner can use websockets to connect to a server.\\nThat server can then perform a number of actions.\\nMost commonly this is used in conjunction with an external text editor or API\\nin order to make writing scripts easier, or even use typescript.\\n\\nTo make use of this Remote API through the official server, look [here](https://github.com/bitburner-official/typescript-template).\\nIf you want to make your own server, see below for API details.\\n\\nThis API uses the JSON RPC 2.0 protocol. Inputs are in the following form:\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": string,\\n \\\"params\\\": any\\n }\\n\\nOutputs:\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": any,\\n \\\"error\\\": any\\n }\\n\\n## Methods\\n\\n## `pushFile`\\n\\nCreate or update a file.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"pushFile\\\",\\n \\\"params\\\": {\\n filename: string;\\n content: string;\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": \\\"OK\\\"\\n }\\n\\n## `getFile`\\n\\nRead a file and its content.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"getFile\\\",\\n \\\"params\\\": {\\n filename: string;\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": string\\n }\\n\\n## `deleteFile`\\n\\nDelete a file.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"deleteFile\\\",\\n \\\"params\\\": {\\n filename: string;\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": \\\"OK\\\"\\n }\\n\\n## `getFileNames`\\n\\nList all file names on a server.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"getFileNames\\\",\\n \\\"params\\\": {\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": string[]\\n }\\n\\n## `getAllFiles`\\n\\nGet the content of all files on a server.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"getAllFiles\\\",\\n \\\"params\\\": {\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": {\\n filename: string,\\n content: string\\n }[]\\n }\\n\\n## `calculateRam`\\n\\nCalculate the in-game ram cost of a script.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"calculateRam\\\",\\n \\\"params\\\": {\\n filename: string;\\n server: string;\\n }\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": number\\n }\\n\\n## `getDefinitionFile`\\n\\nGet the definition file of the API.\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"method\\\": \\\"getDefinitionFile\\\"\\n }\\n\\n\\n {\\n \\\"jsonrpc\\\": \\\"2.0\\\",\\n \\\"id\\\": number,\\n \\\"result\\\": string\\n }\\n\";","export default \"/** All netscript definitions */\\n\\n/** @public */\\ninterface HP {\\n current: number;\\n max: number;\\n}\\n\\n/** @public */\\ninterface Skills {\\n hacking: number;\\n strength: number;\\n defense: number;\\n dexterity: number;\\n agility: number;\\n charisma: number;\\n intelligence: number;\\n}\\n\\n// TODO: provide same treatment to CodingContractData as for SleeveTask (actual types)\\n/**\\n * Coding contract data will differ depending on coding contract.\\n * @public\\n */\\ntype CodingContractData = any;\\n\\n/** @public */\\ntype PortData = string | number;\\n\\n/** @public */\\ntype ScriptArg = string | number | boolean;\\n\\n/** @public */\\ntype FilenameOrPID = number | string;\\n\\n/** @public */\\ninterface Person {\\n hp: HP;\\n skills: Skills;\\n exp: Skills;\\n mults: Multipliers;\\n city: CityName;\\n}\\n\\n/** @public */\\ninterface Player extends Person {\\n money: number;\\n numPeopleKilled: number;\\n entropy: number;\\n jobs: Partial>;\\n factions: string[];\\n totalPlaytime: number;\\n location: string;\\n}\\n\\n/** @public */\\ninterface SleevePerson extends Person {\\n /** Number 0-100 Experience earned and shared is multiplied with shock% before sync% */\\n shock: number;\\n /** Number 1-100 Experience earned by this sleeve and shared with the player is multiplied with sync% after shock% */\\n sync: number;\\n /** Number 1-100 initial Value of sync on BN start */\\n memory: number;\\n /** Number of 200ms cycles which are stored as bonus time */\\n storedCycles: number;\\n}\\n\\n/** Various info about resets\\n * @public */\\ninterface ResetInfo {\\n /** Numeric timestamp (from Date.now()) of last augmentation reset */\\n lastAugReset: number;\\n /** Numeric timestamp (from Date.now()) of last bitnode reset */\\n lastNodeReset: number;\\n /** The current bitnode */\\n currentNode: number;\\n /** A map of owned augmentations to their levels. Keyed by the augmentation name. Map values are the augmentation level (e.g. for NeuroFlux governor). */\\n ownedAugs: Map;\\n /** A map of owned SF to their levels. Keyed by the SF number. Map values are the SF level. */\\n ownedSF: Map;\\n}\\n\\n/** @public */\\ninterface MoneySource {\\n bladeburner: number;\\n casino: number;\\n class: number;\\n codingcontract: number;\\n corporation: number;\\n crime: number;\\n gang: number;\\n hacking: number;\\n hacknet: number;\\n hacknet_expenses: number;\\n hospitalization: number;\\n infiltration: number;\\n sleeves: number;\\n stock: number;\\n total: number;\\n work: number;\\n servers: number;\\n other: number;\\n augmentations: number;\\n}\\n\\n/** @public */\\ninterface MoneySources {\\n sinceInstall: MoneySource;\\n sinceStart: MoneySource;\\n}\\n\\n/** @public */\\ninterface Multipliers {\\n /** Multiplier to hacking skill */\\n hacking: number;\\n /** Multiplier to strength skill */\\n strength: number;\\n /** Multiplier to defense skill */\\n defense: number;\\n /** Multiplier to dexterity skill */\\n dexterity: number;\\n /** Multiplier to agility skill */\\n agility: number;\\n /** Multiplier to charisma skill */\\n charisma: number;\\n /** Multiplier to hacking experience gain rate */\\n hacking_exp: number;\\n /** Multiplier to strength experience gain rate */\\n strength_exp: number;\\n /** Multiplier to defense experience gain rate */\\n defense_exp: number;\\n /** Multiplier to dexterity experience gain rate */\\n dexterity_exp: number;\\n /** Multiplier to agility experience gain rate */\\n agility_exp: number;\\n /** Multiplier to charisma experience gain rate */\\n charisma_exp: number;\\n /** Multiplier to chance of successfully performing a hack */\\n hacking_chance: number;\\n /** Multiplier to hacking speed */\\n hacking_speed: number;\\n /** Multiplier to amount of money the player gains from hacking */\\n hacking_money: number;\\n /** Multiplier to amount of money injected into servers using grow */\\n hacking_grow: number;\\n /** Multiplier to amount of reputation gained when working */\\n company_rep: number;\\n /** Multiplier to amount of reputation gained when working */\\n faction_rep: number;\\n /** Multiplier to amount of money gained from crimes */\\n crime_money: number;\\n /** Multiplier to crime success rate */\\n crime_success: number;\\n /** Multiplier to amount of money gained from working */\\n work_money: number;\\n /** Multiplier to amount of money produced by Hacknet Nodes */\\n hacknet_node_money: number;\\n /** Multiplier to cost of purchasing a Hacknet Node */\\n hacknet_node_purchase_cost: number;\\n /** Multiplier to cost of ram for a Hacknet Node */\\n hacknet_node_ram_cost: number;\\n /** Multiplier to cost of core for a Hacknet Node */\\n hacknet_node_core_cost: number;\\n /** Multiplier to cost of leveling up a Hacknet Node */\\n hacknet_node_level_cost: number;\\n /** Multiplier to Bladeburner max stamina */\\n bladeburner_max_stamina: number;\\n /** Multiplier to Bladeburner stamina gain rate */\\n bladeburner_stamina_gain: number;\\n /** Multiplier to effectiveness in Bladeburner Field Analysis */\\n bladeburner_analysis: number;\\n /** Multiplier to success chance in Bladeburner contracts/operations */\\n bladeburner_success_chance: number;\\n}\\n\\n/** @public */\\ninterface TailProperties {\\n /** X-coordinate of the log window */\\n x: number;\\n /** Y-coordinate of the log window */\\n y: number;\\n /** Width of the log window content area */\\n width: number;\\n /** Height of the log window content area */\\n height: number;\\n}\\n\\n/**\\n * @public\\n * A stand-in for the real React.ReactNode.\\n * A {@link ReactElement} is rendered dynamically with React.\\n * number and string are displayed directly.\\n * boolean, null, and undefined are ignored and not rendered.\\n * An array of ReactNodes will display all members of that array sequentially.\\n *\\n * Use React.createElement to make the ReactElement type, see {@link https://react.dev/reference/react/createElement#creating-an-element-without-jsx | creating an element without jsx} from the official React documentation.\\n */\\ntype ReactNode = ReactElement | string | number | null | undefined | boolean | ReactNode[];\\n\\n/**\\n * @public\\n * A stand-in for the real React.ReactElement.\\n * Use React.createElement to make these.\\n * See {@link https://react.dev/reference/react/createElement#creating-an-element-without-jsx | creating an element without jsx} from the official React documentation.\\n */\\ninterface ReactElement {\\n type: string | ((props: any) => ReactElement | null) | (new (props: any) => object);\\n props: any;\\n key: string | number | null;\\n}\\n\\n/** @public */\\ninterface RunningScript {\\n /** Arguments the script was called with */\\n args: (string | number | boolean)[];\\n /** Filename of the script */\\n filename: string;\\n /**\\n * Script logs as an array. The newest log entries are at the bottom.\\n * Timestamps, if enabled, are placed inside `[brackets]` at the start of each line.\\n **/\\n logs: string[];\\n /** Total amount of hacking experience earned from this script when offline */\\n offlineExpGained: number;\\n /** Total amount of money made by this script when offline */\\n offlineMoneyMade: number;\\n /** Number of seconds that the script has been running offline */\\n offlineRunningTime: number;\\n /** Total amount of hacking experience earned from this script when online */\\n onlineExpGained: number;\\n /** Total amount of money made by this script when online */\\n onlineMoneyMade: number;\\n /** Number of seconds that this script has been running online */\\n onlineRunningTime: number;\\n /** Process ID. Must be an integer */\\n pid: number;\\n /** How much RAM this script uses for ONE thread */\\n ramUsage: number;\\n /** Hostname of the server on which this script runs */\\n server: string;\\n /** Properties of the tail window, or null if it is not shown */\\n tailProperties: TailProperties | null;\\n /**\\n * The title, as shown in the script's log box. Defaults to the name + args,\\n * but can be changed by the user. If it is set to a React element (only by\\n * the user), that will not be persisted, and will be restored to default on\\n * load.\\n */\\n title: string | ReactElement;\\n /** Number of threads that this script runs with */\\n threads: number;\\n /** Whether this RunningScript is excluded from saves */\\n temporary: boolean;\\n}\\n\\n/** @public */\\ninterface RunOptions {\\n /** Number of threads that the script will run with, defaults to 1 */\\n threads?: number;\\n /** Whether this script is excluded from saves, defaults to false */\\n temporary?: boolean;\\n /**\\n * The RAM allocation to launch each thread of the script with.\\n *\\n * Lowering this will not automatically let you get away with using less RAM:\\n * the dynamic RAM check enforces that all {@link NS} functions actually called incur their cost.\\n * However, if you know that certain functions that are statically present (and thus included\\n * in the static RAM cost) will never be called in a particular circumstance, you can use\\n * this to avoid paying for them.\\n *\\n * You can also use this to increase the RAM if the static RAM checker has missed functions\\n * that you need to call.\\n *\\n * Must be greater-or-equal to the base RAM cost. Defaults to the statically calculated cost.\\n */\\n ramOverride?: number;\\n /**\\n * Should we fail to run if another instance is running with the exact same arguments?\\n * This used to be the default behavior, now defaults to false.\\n */\\n preventDuplicates?: boolean;\\n}\\n\\n/** @public */\\ninterface SpawnOptions extends RunOptions {\\n /** Number of milliseconds to delay before spawning script, defaults to 10000 (10s). Must be a positive integer. */\\n spawnDelay?: number;\\n}\\n\\n/** @public */\\ninterface RecentScript extends RunningScript {\\n /** Timestamp of when the script was killed */\\n timeOfDeath: Date;\\n}\\n\\n/**\\n * Data representing the internal values of a crime.\\n * @public\\n */\\ninterface CrimeStats {\\n /** Number representing the difficulty of the crime. Used for success chance calculations */\\n difficulty: number;\\n /** Amount of karma lost for successfully committing this crime */\\n karma: number;\\n /** How many people die as a result of this crime */\\n kills: number;\\n /** How much money is given */\\n money: number;\\n /** Milliseconds it takes to attempt the crime */\\n time: number;\\n /** Description of the crime activity */\\n type: string;\\n /** hacking level impact on success change of the crime */\\n hacking_success_weight: number;\\n /** strength level impact on success change of the crime */\\n strength_success_weight: number;\\n /** defense level impact on success change of the crime */\\n defense_success_weight: number;\\n /** dexterity level impact on success change of the crime */\\n dexterity_success_weight: number;\\n /** agility level impact on success change of the crime */\\n agility_success_weight: number;\\n /** charisma level impact on success change of the crime */\\n charisma_success_weight: number;\\n /** hacking exp gained from crime */\\n hacking_exp: number;\\n /** strength exp gained from crime */\\n strength_exp: number;\\n /** defense exp gained from crime */\\n defense_exp: number;\\n /** dexterity exp gained from crime */\\n dexterity_exp: number;\\n /** agility exp gained from crime */\\n agility_exp: number;\\n /** charisma exp gained from crime */\\n charisma_exp: number;\\n /** intelligence exp gained from crime */\\n intelligence_exp: number;\\n}\\n\\n/**\\n * Options to affect the behavior of {@link NS.hack | hack}, {@link NS.grow | grow}, and {@link NS.weaken | weaken}.\\n * @public\\n */\\ninterface BasicHGWOptions {\\n /** Number of threads to use for this function.\\n * Must be less than or equal to the number of threads the script is running with. */\\n threads?: number;\\n /** Set to true this action will affect the stock market. */\\n stock?: boolean;\\n /** Number of additional milliseconds that will be spent waiting between the start of the function and when it\\n * completes. */\\n additionalMsec?: number;\\n}\\n\\n/**\\n * Return value of {@link Sleeve.getSleevePurchasableAugs | getSleevePurchasableAugs}\\n * @public\\n */\\ninterface AugmentPair {\\n /** augmentation name */\\n name: string;\\n /** augmentation cost */\\n cost: number;\\n}\\n\\n/** @public */\\ndeclare enum PositionType {\\n Long = \\\"L\\\",\\n Short = \\\"S\\\",\\n}\\n\\n/** @public */\\ndeclare enum OrderType {\\n LimitBuy = \\\"Limit Buy Order\\\",\\n LimitSell = \\\"Limit Sell Order\\\",\\n StopBuy = \\\"Stop Buy Order\\\",\\n StopSell = \\\"Stop Sell Order\\\",\\n}\\n\\n/**\\n * Value in map of {@link StockOrder}\\n * @public\\n */\\ninterface StockOrderObject {\\n /** Number of shares */\\n shares: number;\\n /** Price per share */\\n price: number;\\n /** Order type */\\n type: OrderType;\\n /** Order position */\\n position: PositionType;\\n}\\n\\n/**\\n * Return value of {@link TIX.getOrders | getOrders}\\n *\\n * Keys are stock symbols, properties are arrays of {@link StockOrderObject}\\n * @public\\n */\\ninterface StockOrder {\\n [key: string]: StockOrderObject[];\\n}\\n\\n/** Constants used for the stockmarket game mechanic.\\n * @public */\\ninterface StockMarketConstants {\\n /** Normal time in ms between stock market updates */\\n msPerStockUpdate: number;\\n /** Minimum time in ms between stock market updates if there is stored offline/bonus time */\\n msPerStockUpdateMin: number;\\n /** An internal constant used while determining when to flip a stock's forecast */\\n TicksPerCycle: number;\\n /** Cost of the WSE account */\\n WSEAccountCost: number;\\n /** Cost of the TIX API */\\n TIXAPICost: number;\\n /** Cost of the 4S Market Data */\\n MarketData4SCost: number;\\n /** Cost of the 4S Market Data TIX API integration */\\n MarketDataTixApi4SCost: number;\\n /** Commission fee for transactions */\\n StockMarketCommission: number;\\n}\\n\\n/**\\n * A single process on a server.\\n * @public\\n */\\ninterface ProcessInfo {\\n /** Script name. */\\n filename: string;\\n /** Number of threads script is running with */\\n threads: number;\\n /** Script's arguments */\\n args: (string | number | boolean)[];\\n /** Process ID */\\n pid: number;\\n /** Whether this process is excluded from saves */\\n temporary: boolean;\\n}\\n\\n/**\\n * Hack related multipliers.\\n * @public\\n */\\ninterface HackingMultipliers {\\n /** Player's hacking chance multiplier. */\\n chance: number;\\n /** Player's hacking speed multiplier. */\\n speed: number;\\n /** Player's hacking money stolen multiplier. */\\n money: number;\\n /** Player's hacking growth multiplier */\\n growth: number;\\n}\\n\\n/**\\n * Hacknet related multipliers.\\n * @public\\n */\\ninterface HacknetMultipliers {\\n /** Player's hacknet production multiplier */\\n production: number;\\n /** Player's hacknet purchase cost multiplier */\\n purchaseCost: number;\\n /** Player's hacknet ram cost multiplier */\\n ramCost: number;\\n /** Player's hacknet core cost multiplier */\\n coreCost: number;\\n /** Player's hacknet level cost multiplier */\\n levelCost: number;\\n}\\n\\n/**\\n * Hacknet node related constants\\n * @public\\n */\\ninterface HacknetNodeConstants {\\n /** Amount of money gained per level */\\n MoneyGainPerLevel: number;\\n /** Base cost for a new node */\\n BaseCost: number;\\n /** Base cost per level */\\n LevelBaseCost: number;\\n /** Base cost to increase RAM */\\n RamBaseCost: number;\\n /** Base cost to increase cores */\\n CoreBaseCost: number;\\n /** Multiplier to purchase new node */\\n PurchaseNextMult: number;\\n /** Multiplier to increase node level */\\n UpgradeLevelMult: number;\\n /** Multiplier to increase RAM */\\n UpgradeRamMult: number;\\n /** Multiplier to increase cores */\\n UpgradeCoreMult: number;\\n /** Max node level */\\n MaxLevel: number;\\n /** Max amount of RAM in GB */\\n MaxRam: number;\\n /** Max number of cores */\\n MaxCores: number;\\n}\\n\\n/**\\n * Hacknet server related constants\\n * @public\\n */\\ninterface HacknetServerConstants {\\n /** Number of hashes calculated per level */\\n HashesPerLevel: number;\\n /** Base cost for a new server */\\n BaseCost: number;\\n /** Base cost to increase RAM */\\n RamBaseCost: number;\\n /** Base cost to increase cores */\\n CoreBaseCost: number;\\n /** Base cost to upgrade cache */\\n CacheBaseCost: number;\\n /** Multiplier to purchase a new server */\\n PurchaseMult: number;\\n /** Multiplier to increase server level */\\n UpgradeLevelMult: number;\\n /** Multiplier to increase RAM */\\n UpgradeRamMult: number;\\n /** Multiplier to increase cores */\\n UpgradeCoreMult: number;\\n /** Multiplier to upgrade cache */\\n UpgradeCacheMult: number;\\n /** Max number of servers */\\n MaxServers: number;\\n /** Max level for a server */\\n MaxLevel: number;\\n /** Max amount of RAM in GB */\\n MaxRam: number;\\n /** Max number of cores */\\n MaxCores: number;\\n /** Max cache size */\\n MaxCache: number;\\n}\\n\\n/**\\n * A server. Not all servers have all of these properties - optional properties are missing on certain servers.\\n * @public\\n */\\nexport interface Server {\\n /** Hostname. Must be unique */\\n hostname: string;\\n /** IP Address. Must be unique */\\n ip: string;\\n\\n /** Whether or not the SSH Port is open */\\n sshPortOpen: boolean;\\n /** Whether or not the FTP port is open */\\n ftpPortOpen: boolean;\\n /** Whether or not the SMTP Port is open */\\n smtpPortOpen: boolean;\\n /** Whether or not the HTTP Port is open */\\n httpPortOpen: boolean;\\n /** Whether or not the SQL Port is open */\\n sqlPortOpen: boolean;\\n\\n /** Flag indicating whether player has admin/root access to this server */\\n hasAdminRights: boolean;\\n\\n /** How many CPU cores this server has. Affects magnitude of grow and weaken ran from this server. */\\n cpuCores: number;\\n\\n /** Flag indicating whether player is currently connected to this server */\\n isConnectedTo: boolean;\\n\\n /** RAM (GB) used. i.e. unavailable RAM */\\n ramUsed: number;\\n /** RAM (GB) available on this server */\\n maxRam: number;\\n\\n /** Name of company/faction/etc. that this server belongs to, not applicable to all Servers */\\n organizationName: string;\\n\\n /** Flag indicating whether this is a purchased server */\\n purchasedByPlayer: boolean;\\n\\n /** Flag indicating whether this server has a backdoor installed by a player */\\n backdoorInstalled?: boolean;\\n\\n /** Server's initial server security level at creation. */\\n baseDifficulty?: number;\\n\\n /** Server Security Level */\\n hackDifficulty?: number;\\n\\n /** Minimum server security level that this server can be weakened to */\\n minDifficulty?: number;\\n\\n /** How much money currently resides on the server and can be hacked */\\n moneyAvailable?: number;\\n\\n /** Maximum amount of money that this server can hold */\\n moneyMax?: number;\\n\\n /** Number of open ports required in order to gain admin/root access */\\n numOpenPortsRequired?: number;\\n\\n /** How many ports are currently opened on the server */\\n openPortCount?: number;\\n\\n /** Hacking level required to hack this server */\\n requiredHackingSkill?: number;\\n\\n /** Growth effectiveness statistic. Higher values produce more growth with ns.grow() */\\n serverGrowth?: number;\\n}\\n\\n/**\\n * All multipliers affecting the difficulty of the current challenge.\\n * @public\\n */\\ninterface BitNodeMultipliers {\\n /** Influences how quickly the player's agility level (not exp) scales */\\n AgilityLevelMultiplier: number;\\n /** Influences the base cost to purchase an augmentation. */\\n AugmentationMoneyCost: number;\\n /** Influences the base rep the player must have with a faction to purchase an augmentation. */\\n AugmentationRepCost: number;\\n /** Influences how quickly the player can gain rank within Bladeburner. */\\n BladeburnerRank: number;\\n /** Influences the cost of skill levels from Bladeburner. */\\n BladeburnerSkillCost: number;\\n /** Influences how quickly the player's charisma level (not exp) scales */\\n CharismaLevelMultiplier: number;\\n /** Influences the experience gained for each ability when a player completes a class. */\\n ClassGymExpGain: number;\\n /** Influences the amount of money gained from completing Coding Contracts */\\n CodingContractMoney: number;\\n /** Influences the experience gained for each ability when the player completes working their job. */\\n CompanyWorkExpGain: number;\\n /** Influences how much money the player earns when completing working their job. */\\n CompanyWorkMoney: number;\\n /** Influences the amount of divisions a corporation can have have at the same time*/\\n CorporationDivisions: number;\\n /** Influences the money gain from dividends of corporations created by the player. */\\n CorporationSoftcap: number;\\n /** Influences the valuation of corporations created by the player. */\\n CorporationValuation: number;\\n /** Influences the base experience gained for each ability when the player commits a crime. */\\n CrimeExpGain: number;\\n /** Influences the base money gained when the player commits a crime. */\\n CrimeMoney: number;\\n /** Influences how many Augmentations you need in order to get invited to the Daedalus faction */\\n DaedalusAugsRequirement: number;\\n /** Influences how quickly the player's defense level (not exp) scales */\\n DefenseLevelMultiplier: number;\\n /** Influences how quickly the player's dexterity level (not exp) scales */\\n DexterityLevelMultiplier: number;\\n /** Influences how much rep the player gains in each faction simply by being a member. */\\n FactionPassiveRepGain: number;\\n /** Influences the experience gained for each ability when the player completes work for a Faction. */\\n FactionWorkExpGain: number;\\n /** Influences how much rep the player gains when performing work for a faction. */\\n FactionWorkRepGain: number;\\n /** Influences how much it costs to unlock the stock market's 4S Market Data API */\\n FourSigmaMarketDataApiCost: number;\\n /** Influences how much it costs to unlock the stock market's 4S Market Data (NOT API) */\\n FourSigmaMarketDataCost: number;\\n /** Influences the respect gain and money gain of your gang. */\\n GangSoftcap: number;\\n /** Influences the experienced gained when hacking a server. */\\n HackExpGain: number;\\n /** Influences how quickly the player's hacking level (not experience) scales */\\n HackingLevelMultiplier: number;\\n /** Influences how much money is produced by Hacknet Nodes\\n * and the hash rate of Hacknet Servers (unlocked in BitNode-9) */\\n HacknetNodeMoney: number;\\n /** Influences how much money it costs to upgrade your home computer's RAM */\\n HomeComputerRamCost: number;\\n /** Influences how much money is gained when the player infiltrates a company. */\\n InfiltrationMoney: number;\\n /** Influences how much rep the player can gain from factions when selling stolen documents and secrets */\\n InfiltrationRep: number;\\n /** Influences how much money can be stolen from a server when the player\\n * performs a hack against it through the Terminal. */\\n ManualHackMoney: number;\\n /** Influence how much it costs to purchase a server */\\n PurchasedServerCost: number;\\n /** Influences the maximum number of purchased servers you can have */\\n PurchasedServerLimit: number;\\n /** Influences the maximum allowed RAM for a purchased server */\\n PurchasedServerMaxRam: number;\\n /** Influences cost of any purchased server at or above 128GB */\\n PurchasedServerSoftcap: number;\\n /** Influences the minimum favor the player must have with a faction before they can donate to gain rep. */\\n RepToDonateToFaction: number;\\n /** Influences how much the money on a server can be reduced when a script performs a hack against it. */\\n ScriptHackMoney: number;\\n /** Influences how much of the money stolen by a scripted hack will be added to the player's money. */\\n ScriptHackMoneyGain: number;\\n /** Influences the growth percentage per cycle against a server. */\\n ServerGrowthRate: number;\\n /** Influences the maximum money that a server can grow to. */\\n ServerMaxMoney: number;\\n /** Influences the initial money that a server starts with. */\\n ServerStartingMoney: number;\\n /** Influences the initial security level (hackDifficulty) of a server. */\\n ServerStartingSecurity: number;\\n /** Influences the weaken amount per invocation against a server. */\\n ServerWeakenRate: number;\\n /** Influences how quickly the player's strength level (not exp) scales */\\n StrengthLevelMultiplier: number;\\n /** Influences the power of the gift */\\n StaneksGiftPowerMultiplier: number;\\n /** Influences the size of the gift */\\n StaneksGiftExtraSize: number;\\n /** Influences the hacking skill required to backdoor the world daemon. */\\n WorldDaemonDifficulty: number;\\n}\\n\\n/**\\n * Object representing all the values related to a hacknet node.\\n * @public\\n */\\ninterface NodeStats {\\n /** Node's name */\\n name: string;\\n /** Node's level */\\n level: number;\\n /** Node's RAM (GB) */\\n ram: number;\\n /** Node's used RAM (GB) */\\n ramUsed?: number;\\n /** Node's number of cores */\\n cores: number;\\n /** Cache level. Only applicable for Hacknet Servers */\\n cache?: number;\\n /** Hash Capacity provided by this Node. Only applicable for Hacknet Servers */\\n hashCapacity?: number;\\n /** Node's production per second */\\n production: number;\\n /** Number of seconds since Node has been purchased */\\n timeOnline: number;\\n /** Total number of money Node has produced */\\n totalProduction: number;\\n}\\n\\n/** @public */\\ninterface SourceFileLvl {\\n /** The number of the source file */\\n n: number;\\n /** The level of the source file */\\n lvl: number;\\n}\\n\\n/**\\n * Bladeburner current action.\\n * @public\\n */\\ninterface BladeburnerCurAction {\\n /** Type of Action */\\n type: string;\\n /** Name of Action */\\n name: string;\\n}\\n\\n/**\\n * Gang general info.\\n * @public\\n */\\ninterface GangGenInfo {\\n /** Name of faction that the gang belongs to (\\\"Slum Snakes\\\", etc.) */\\n faction: string;\\n /** Indicating whether or not it's a hacking gang */\\n isHacking: boolean;\\n /** Money earned per game cycle */\\n moneyGainRate: number;\\n /** Gang's power for territory warfare */\\n power: number;\\n /** Gang's respect */\\n respect: number;\\n /** Respect earned per game cycle */\\n respectGainRate: number;\\n /** Amount of Respect needed for next gang recruit, if possible */\\n respectForNextRecruit: number;\\n /** Amount of territory held */\\n territory: number;\\n /** Clash chance */\\n territoryClashChance: number;\\n /** Gang's wanted level */\\n wantedLevel: number;\\n /** Wanted level gained/lost per game cycle (negative for losses) */\\n wantedLevelGainRate: number;\\n /** Indicating if territory clashes are enabled */\\n territoryWarfareEngaged: boolean;\\n /** Number indicating the current wanted penalty */\\n wantedPenalty: number;\\n}\\n\\n/** @public */\\ninterface GangOtherInfoObject {\\n /** Gang power */\\n power: number;\\n /** Gang territory, in decimal form */\\n territory: number;\\n}\\n\\n/** @public */\\ninterface GangOtherInfo {\\n [key: string]: GangOtherInfoObject;\\n}\\n\\n/**\\n * Object representing data representing a gang member task.\\n * @public\\n */\\ninterface GangTaskStats {\\n /** Task name */\\n name: string;\\n /** Task Description */\\n desc: string;\\n /** Is a task of a hacking gang */\\n isHacking: boolean;\\n /** Is a task of a combat gang */\\n isCombat: boolean;\\n /** Base respect earned */\\n baseRespect: number;\\n /** Base wanted earned */\\n baseWanted: number;\\n /** Base money earned */\\n baseMoney: number;\\n /** Hacking skill impact on task scaling */\\n hackWeight: number;\\n /** Strength skill impact on task scaling */\\n strWeight: number;\\n /** Defense skill impact on task scaling */\\n defWeight: number;\\n /** Dexterity skill impact on task scaling */\\n dexWeight: number;\\n /** Agility skill impact on task scaling */\\n agiWeight: number;\\n /** Charisma skill impact on task scaling */\\n chaWeight: number;\\n /** Number representing the difficulty of the task */\\n difficulty: number;\\n /** Territory impact on task scaling */\\n territory: GangTerritory;\\n}\\n\\n/**\\n * Object representing data representing a gang member equipment.\\n * @public\\n */\\ninterface EquipmentStats {\\n /** Strength multiplier */\\n str?: number;\\n /** Defense multiplier */\\n def?: number;\\n /** Dexterity multiplier */\\n dex?: number;\\n /** Agility multiplier */\\n agi?: number;\\n /** Charisma multiplier */\\n cha?: number;\\n /** Hacking multiplier */\\n hack?: number;\\n}\\n\\n/** @public */\\ninterface GangTerritory {\\n /** Money gain impact on task scaling */\\n money: number;\\n /** Respect gain impact on task scaling */\\n respect: number;\\n /** Wanted gain impact on task scaling */\\n wanted: number;\\n}\\n\\n/** @public */\\ninterface GangMemberInfo {\\n /** Name of the gang member */\\n name: string;\\n /** Currently assigned task */\\n task: string;\\n /** Amount of Respect earned by member since they last Ascended */\\n earnedRespect: number;\\n\\n /** Hack skill level */\\n hack: number;\\n /** Strength skill level */\\n str: number;\\n /** Defense skill level */\\n def: number;\\n /** Dexterity skill level */\\n dex: number;\\n /** Agility skill level */\\n agi: number;\\n /** Charisma skill level */\\n cha: number;\\n\\n /** Current hack experience */\\n hack_exp: number;\\n /** Current strength experience */\\n str_exp: number;\\n /** Current defense experience */\\n def_exp: number;\\n /** Current dexterity experience */\\n dex_exp: number;\\n /** Current agility experience */\\n agi_exp: number;\\n /** Current charisma experience */\\n cha_exp: number;\\n\\n /** Hack multiplier from equipment */\\n hack_mult: number;\\n /** Strength multiplier from equipment */\\n str_mult: number;\\n /** Defense multiplier from equipment */\\n def_mult: number;\\n /** Dexterity multiplier from equipment */\\n dex_mult: number;\\n /** Agility multiplier from equipment */\\n agi_mult: number;\\n /** Charisma multiplier from equipment */\\n cha_mult: number;\\n\\n /** Hack multiplier from ascensions */\\n hack_asc_mult: number;\\n /** Strength multiplier from ascensions */\\n str_asc_mult: number;\\n /** Defense multiplier from ascensions */\\n def_asc_mult: number;\\n /** Dexterity multiplier from ascensions */\\n dex_asc_mult: number;\\n /** Agility multiplier from ascensions */\\n agi_asc_mult: number;\\n /** Charisma multiplier from ascensions */\\n cha_asc_mult: number;\\n\\n /** Total Hack Ascension points accumulated */\\n hack_asc_points: number;\\n /** Total Strength Ascension points accumulated */\\n str_asc_points: number;\\n /** Total Defense Ascension points accumulated */\\n def_asc_points: number;\\n /** Total Dexterity Ascension points accumulated */\\n dex_asc_points: number;\\n /** Total Agility Ascension points accumulated */\\n agi_asc_points: number;\\n /** Total Charisma Ascension points accumulated */\\n cha_asc_points: number;\\n\\n /** List of all non-Augmentation Equipment owned by gang member */\\n upgrades: string[];\\n /** List of all Augmentations currently installed on gang member */\\n augmentations: string[];\\n\\n /** Per Cycle Rate this member is currently gaining Respect */\\n respectGain: number;\\n /** Per Cycle Rate by which this member is affecting your gang's Wanted Level */\\n wantedLevelGain: number;\\n /** Per Cycle Income for this gang member */\\n moneyGain: number;\\n}\\n\\n/** @public */\\ninterface GangMemberAscension {\\n /** Amount of respect lost from ascending */\\n respect: number;\\n /** Factor by which the hacking ascension multiplier was increased (newMult / oldMult) */\\n hack: number;\\n /** Factor by which the strength ascension multiplier was increased (newMult / oldMult) */\\n str: number;\\n /** Factor by which the defense ascension multiplier was increased (newMult / oldMult) */\\n def: number;\\n /** Factor by which the dexterity ascension multiplier was increased (newMult / oldMult) */\\n dex: number;\\n /** Factor by which the agility ascension multiplier was increased (newMult / oldMult) */\\n agi: number;\\n /** Factor by which the charisma ascension multiplier was increased (newMult / oldMult) */\\n cha: number;\\n}\\n\\n/** @public */\\ntype SleeveBladeburnerTask = {\\n type: \\\"BLADEBURNER\\\";\\n actionType: \\\"General\\\" | \\\"Contracts\\\";\\n actionName: string;\\n cyclesWorked: number;\\n cyclesNeeded: number;\\n};\\n\\n/** @public */\\ntype SleeveClassTask = {\\n type: \\\"CLASS\\\";\\n classType: UniversityClassType | GymType | `${UniversityClassType}` | `${GymType}`;\\n location: LocationName | `${LocationName}`;\\n};\\n\\n/** @public */\\ntype SleeveCompanyTask = { type: \\\"COMPANY\\\"; companyName: CompanyName };\\n\\n/** @public */\\ntype SleeveCrimeTask = {\\n type: \\\"CRIME\\\";\\n crimeType: CrimeType | `${CrimeType}`;\\n cyclesWorked: number;\\n cyclesNeeded: number;\\n};\\n\\n/** @public */\\ntype SleeveFactionTask = {\\n type: \\\"FACTION\\\";\\n factionWorkType: FactionWorkType | `${FactionWorkType}`;\\n factionName: string;\\n};\\n\\n/** @public */\\ntype SleeveInfiltrateTask = { type: \\\"INFILTRATE\\\"; cyclesWorked: number; cyclesNeeded: number };\\n\\n/** @public */\\ntype SleeveRecoveryTask = { type: \\\"RECOVERY\\\" };\\n\\n/** @public */\\ntype SleeveSupportTask = { type: \\\"SUPPORT\\\" };\\n\\n/** @public */\\ntype SleeveSynchroTask = { type: \\\"SYNCHRO\\\" };\\n\\n/** Object representing a sleeve current task.\\n * @public */\\nexport type SleeveTask =\\n | SleeveBladeburnerTask\\n | SleeveClassTask\\n | SleeveCompanyTask\\n | SleeveCrimeTask\\n | SleeveFactionTask\\n | SleeveInfiltrateTask\\n | SleeveRecoveryTask\\n | SleeveSupportTask\\n | SleeveSynchroTask;\\n\\n/** Object representing a port. A port is a serialized queue.\\n * @public */\\nexport interface NetscriptPort {\\n /** Write data to a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns The data popped off the queue if it was full. */\\n write(value: string | number): PortData | null;\\n\\n /**\\n * Attempt to write data to the port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns True if the data was added to the port, false if the port was full\\n */\\n tryWrite(value: string | number): boolean;\\n\\n /**\\n * Sleeps until the port is written to.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n nextWrite(): Promise;\\n\\n /**\\n * Shift an element out of the port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function will remove the first element from the port and return it.\\n * If the port is empty, then the string “NULL PORT DATA” will be returned.\\n * @returns the data read.\\n */\\n read(): PortData;\\n\\n /**\\n * Retrieve the first element from the port without removing it.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is used to peek at the data from a port. It returns the\\n * first element in the specified port without removing that element. If\\n * the port is empty, the string “NULL PORT DATA” will be returned.\\n * @returns the data read\\n */\\n peek(): PortData;\\n\\n /**\\n * Check if the port is full.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns true if the port is full, otherwise false\\n */\\n full(): boolean;\\n\\n /**\\n * Check if the port is empty.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns true if the port is empty, otherwise false\\n */\\n empty(): boolean;\\n\\n /**\\n * Empties all data from the port.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n clear(): void;\\n}\\n\\n/**\\n * Stock market API\\n * @public\\n */\\nexport interface TIX {\\n /** Get game constants for the stock market mechanic.\\n * @remarks RAM cost: 0 GB */\\n getConstants(): StockMarketConstants;\\n /**\\n * Returns true if the player has access to a WSE Account\\n * @remarks RAM cost: 0.05 GB\\n */\\n hasWSEAccount(): boolean;\\n /**\\n * Returns true if the player has access to the TIX API\\n * @remarks RAM cost: 0.05 GB\\n */\\n hasTIXAPIAccess(): boolean;\\n /**\\n * Returns true if the player has access to the 4S Data\\n * @remarks RAM cost: 0.05 GB\\n */\\n has4SData(): boolean;\\n /**\\n * Returns true if the player has access to the 4SData TIX API\\n * @remarks RAM cost: 0.05 GB\\n */\\n has4SDataTIXAPI(): boolean;\\n /**\\n * Returns an array of the symbols of the tradable stocks\\n *\\n * @remarks RAM cost: 2 GB\\n * @returns Array of the symbols of the tradable stocks.\\n */\\n getSymbols(): string[];\\n\\n /**\\n * Returns the price of a stock.\\n *\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * The stock’s price is the average of its bid and ask prices. This function requires\\n * that you have the following:\\n *\\n * 1. WSE Account\\n *\\n * 1. TIX API Access\\n *\\n * @example\\n * ```js\\n * const fourSigmaStockPrice = ns.stock.getPrice(\\\"FSIG\\\");\\n *\\n * // Choose the first stock symbol from the array of stock symbols. Get the price\\n * // of the corresponding stock.\\n * const sym = ns.stock.getSymbols()[0];\\n * ns.tprint(\\\"Stock symbol: \\\" + sym);\\n * ns.tprint(\\\"Stock price: \\\" + ns.stock.getPrice(sym));\\n * ```\\n * @param sym - Stock symbol.\\n * @returns The price of a stock.\\n */\\n getPrice(sym: string): number;\\n\\n /**\\n * Returns the organization associated with a stock symbol.\\n *\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * The organization associated with the corresponding stock symbol. This function\\n * requires that you have the following:\\n *\\n * 1. WSE Account\\n *\\n * 1. TIX API Access\\n *\\n * @example\\n * ```js\\n * ns.stock.getOrganization(\\\"FSIG\\\");\\n *\\n * // Choose the first stock symbol from the array of stock symbols. Get the\\n * // organization associated with the corresponding stock symbol.\\n * const sym = ns.stock.getSymbols()[0];\\n * ns.tprint(\\\"Stock symbol: \\\" + sym);\\n * ns.tprint(\\\"Stock organization: \\\" + ns.stock.getOrganization(sym));\\n * ```\\n * @param sym - Stock symbol.\\n * @returns The organization assicated with the stock symbol.\\n */\\n getOrganization(sym: string): string;\\n\\n /**\\n * Returns the ask price of that stock.\\n * @remarks RAM cost: 2 GB\\n *\\n * @param sym - Stock symbol.\\n * @returns The ask price of a stock.\\n */\\n getAskPrice(sym: string): number;\\n\\n /**\\n * Returns the bid price of that stock.\\n * @remarks RAM cost: 2 GB\\n *\\n * @param sym - Stock symbol.\\n * @returns The bid price of a stock.\\n */\\n getBidPrice(sym: string): number;\\n\\n /**\\n * Returns the player’s position in a stock.\\n * @remarks\\n * RAM cost: 2 GB\\n * Returns an array of four elements that represents the player’s position in a stock.\\n *\\n * The first element in the returned array is the number of shares the player owns of\\n * the stock in the Long position. The second element in the array is the average price\\n * of the player’s shares in the Long position.\\n *\\n * The third element in the array is the number of shares the player owns of the stock\\n * in the Short position. The fourth element in the array is the average price of the\\n * player’s Short position.\\n *\\n * All elements in the returned array are numeric.\\n *\\n * @example\\n * ```js\\n * const [sharesLong, avgLongPrice, sharesShort, avgShortPrice] = ns.stock.getPosition(\\\"ECP\\\");\\n * ```\\n * @param sym - Stock symbol.\\n * @returns Array of four elements that represents the player’s position in a stock.\\n */\\n getPosition(sym: string): [number, number, number, number];\\n\\n /**\\n * Returns the maximum number of shares of a stock.\\n * @remarks\\n * RAM cost: 2 GB\\n * This is the maximum amount of the stock that can be purchased\\n * in both the Long and Short positions combined.\\n *\\n * @param sym - Stock symbol.\\n * @returns Maximum number of shares that the stock has.\\n */\\n getMaxShares(sym: string): number;\\n\\n /**\\n * Calculates cost of buying stocks.\\n * @remarks\\n * RAM cost: 2 GB\\n * Calculates and returns how much it would cost to buy a given number of shares of a stock.\\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to purchase.\\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\\n * @returns Cost to buy a given number of shares of a stock.\\n */\\n getPurchaseCost(sym: string, shares: number, posType: string): number;\\n\\n /**\\n * Calculate profit of selling stocks.\\n * @remarks\\n * RAM cost: 2 GB\\n * Calculates and returns how much you would gain from selling a given number of shares of a stock.\\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to sell.\\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\\n * @returns Gain from selling a given number of shares of a stock.\\n */\\n getSaleGain(sym: string, shares: number, posType: string): number;\\n\\n /**\\n * Buy stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Attempts to purchase shares of a stock using a Market Order.\\n *\\n * If the player does not have enough money to purchase the specified number of shares,\\n * then no shares will be purchased. Remember that every transaction on the stock exchange\\n * costs a certain commission fee.\\n *\\n * If this function successfully purchases the shares, it will return the stock price at which\\n * each share was purchased. Otherwise, it will return 0.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to purchased. Must be positive. Will be rounded to nearest integer.\\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren't purchased.\\n */\\n buyStock(sym: string, shares: number): number;\\n\\n /**\\n * Sell stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Attempts to sell shares of a stock using a Market Order.\\n *\\n * If the specified number of shares in the function exceeds the amount that the player\\n * actually owns, then this function will sell all owned shares. Remember that every\\n * transaction on the stock exchange costs a certain commission fee.\\n *\\n * The net profit made from selling stocks with this function is reflected in the script’s\\n * statistics. This net profit is calculated as:\\n *\\n * shares * (sell_price - average_price_of_purchased_shares)\\n *\\n * If the sale is successful, this function will return the stock price at\\n * which each share was sold. Otherwise, it will return 0.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren't sold.\\n */\\n sellStock(sym: string, shares: number): number;\\n\\n /**\\n * Short stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Attempts to purchase a short position of a stock using a Market Order.\\n *\\n * The ability to short a stock is **not** immediately available to the player and\\n * must be unlocked later on in the game.\\n *\\n * If the player does not have enough money to purchase the specified number of shares,\\n * then no shares will be purchased. Remember that every transaction on the stock exchange\\n * costs a certain commission fee.\\n *\\n * If the purchase is successful, this function will return the stock price at which each\\n * share was purchased. Otherwise, it will return 0.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to short. Must be positive. Will be rounded to nearest integer.\\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren't purchased.\\n */\\n buyShort(sym: string, shares: number): number;\\n\\n /**\\n * Sell short stock.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Attempts to sell a short position of a stock using a Market Order.\\n *\\n * The ability to short a stock is **not** immediately available to the player and\\n * must be unlocked later on in the game.\\n *\\n * If the specified number of shares exceeds the amount that the player actually owns,\\n * then this function will sell all owned shares. Remember that every transaction on\\n * the stock exchange costs a certain commission fee.\\n *\\n * If the sale is successful, this function will return the stock price at which each\\n * share was sold. Otherwise it will return 0.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren't sold.\\n */\\n sellShort(sym: string, shares: number): number;\\n\\n /**\\n * Place order for stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Places an order on the stock market. This function only works for Limit and Stop Orders.\\n *\\n * The ability to place limit and stop orders is **not** immediately available to the player and\\n * must be unlocked later on in the game.\\n *\\n * Returns true if the order is successfully placed, and false otherwise.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\\n * @param price - Execution price for the order.\\n * @param type - Type of order.\\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\\n * @returns True if the order is successfully placed, and false otherwise.\\n */\\n placeOrder(sym: string, shares: number, price: number, type: string, pos: string): boolean;\\n\\n /**\\n * Cancel order for stocks.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Cancels an outstanding Limit or Stop order on the stock market.\\n *\\n * The ability to use limit and stop orders is **not** immediately available to the player and\\n * must be unlocked later on in the game.\\n *\\n * @param sym - Stock symbol.\\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\\n * @param price - Execution price for the order.\\n * @param type - Type of order.\\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\\n */\\n cancelOrder(sym: string, shares: number, price: number, type: string, pos: string): void;\\n\\n /**\\n * Returns your order book for the stock market.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * This is an object containing information for all the Limit and Stop Orders you have in the stock market.\\n * For each symbol you have a position in, the returned object will have a key with that symbol's name.\\n * The object's properties are each an array of {@link StockOrderObject}\\n * The object has the following structure:\\n *\\n * ```ts\\n * {\\n * string1: [ // Array of orders for this stock\\n * {\\n * shares: Order quantity\\n * price: Order price\\n * type: Order type\\n * position: Either \\\"L\\\" or \\\"S\\\" for Long or Short position\\n * },\\n * {\\n * ...\\n * },\\n * ...\\n * ],\\n * string2: [ // Array of orders for this stock\\n * ...\\n * ],\\n * ...\\n * }\\n * ```\\n * The “Order type” property can have one of the following four values: \\\"Limit Buy Order\\\", \\\"Limit Sell Order\\\",\\n * \\\"Stop Buy Order\\\", \\\"Stop Sell Order\\\".\\n * Note that the order book will only contain information for stocks that you actually have orders in.\\n *\\n * @example\\n * ```ts\\n * \\\"If you do not have orders in Nova Medical (NVMD), then the returned object will not have a “NVMD” property.\\\"\\n * {\\n * ECP: [\\n * {\\n * shares: 5,\\n * price: 100,000\\n * type: \\\"Stop Buy Order\\\",\\n * position: \\\"S\\\",\\n * },\\n * {\\n * shares: 25,\\n * price: 125,000\\n * type: \\\"Limit Sell Order\\\",\\n * position: \\\"L\\\",\\n * },\\n * ],\\n * SYSC: [\\n * {\\n * shares: 100,\\n * price: 10,000\\n * type: \\\"Limit Buy Order\\\",\\n * position: \\\"L\\\",\\n * },\\n * ],\\n * }\\n * ```\\n * @returns Object containing information for all the Limit and Stop Orders you have in the stock market.\\n */\\n getOrders(): StockOrder;\\n\\n /**\\n * Returns the volatility of the specified stock.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * Volatility represents the maximum percentage by which a stock’s price can change every tick.\\n * The volatility is returned as a decimal value, NOT a percentage\\n * (e.g. if a stock has a volatility of 3%, then this function will return 0.03, NOT 3).\\n *\\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\\n *\\n * @param sym - Stock symbol.\\n * @returns Volatility of the specified stock.\\n */\\n getVolatility(sym: string): number;\\n\\n /**\\n * Returns the probability that the specified stock’s price will increase (as opposed to decrease) during the next\\n * tick.\\n * @remarks\\n * RAM cost: 2.5 GB\\n * The probability is returned as a decimal value, NOT a percentage\\n * (e.g. if a stock has a 60% chance of increasing, then this function will return 0.6, NOT 60).\\n *\\n * In other words, if this function returned 0.30 for a stock, then this means that the stock’s price has a\\n * 30% chance of increasing and a 70% chance of decreasing during the next tick.\\n *\\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\\n *\\n * @param sym - Stock symbol.\\n * @returns Probability that the specified stock’s price will increase (as opposed to decrease) during the next tick.\\n */\\n getForecast(sym: string): number;\\n\\n /**\\n * Purchase 4S Market Data Access.\\n * @remarks RAM cost: 2.5 GB\\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\\n */\\n purchase4SMarketData(): boolean;\\n\\n /**\\n * Purchase 4S Market Data TIX API Access.\\n * @remarks RAM cost: 2.5 GB\\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\\n */\\n purchase4SMarketDataTixApi(): boolean;\\n\\n /**\\n * Purchase WSE Account.\\n * @remarks RAM cost: 2.5 GB\\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\\n */\\n purchaseWseAccount(): boolean;\\n\\n /**\\n * Purchase TIX API Access\\n * @remarks RAM cost: 2.5 GB\\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\\n */\\n purchaseTixApi(): boolean;\\n}\\n\\n/**\\n * Singularity API\\n * @remarks\\n * This API requires Source-File 4 to use. The RAM cost of all these functions is multiplied by 16/4/1 based on\\n * Source-File 4 levels.\\n * @public\\n */\\nexport interface Singularity {\\n /**\\n * Backup game save.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function will automatically opens the backup save prompt and claim the free faction favour if available.\\n *\\n */\\n exportGame(): void;\\n\\n /**\\n * Returns Backup save bonus availability.\\n * @remarks\\n * RAM cost: 0.5 GB * 16/4/1\\n *\\n *\\n * This function will check if there is a bonus for backing up your save.\\n *\\n */\\n exportGameBonus(): boolean;\\n\\n /**\\n * Take university class.\\n *\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function will automatically set you to start taking a course at a university.\\n * If you are already in the middle of some “working” action (such as working at a\\n * company, for a faction, or on a program), then running this function will automatically\\n * cancel that action and give you your earnings.\\n *\\n * The cost and experience gains for all of these universities and classes are the same as\\n * if you were to manually visit and take these classes.\\n *\\n * @param universityName - Name of university. You must be in the correct city for whatever university you specify.\\n * @param courseName - Name of course.\\n * @param focus - Acquire player focus on this class. Optional. Defaults to true.\\n * @returns True if action is successfully started, false otherwise.\\n */\\n universityCourse(universityName: string, courseName: string, focus?: boolean): boolean;\\n\\n /**\\n * Workout at the gym.\\n *\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n\\n * This function will automatically set you to start working out at a gym to train\\n * a particular stat. If you are already in the middle of some “working” action\\n * (such as working at a company, for a faction, or on a program), then running\\n * this function will automatically cancel that action and give you your earnings.\\n *\\n * The cost and experience gains for all of these gyms are the same as if you were\\n * to manually visit these gyms and train\\n *\\n * @param gymName - Name of gym. You must be in the correct city for whatever gym you specify.\\n * @param stat - The stat you want to train.\\n * @param focus - Acquire player focus on this gym workout. Optional. Defaults to true.\\n * @returns True if actions is successfully started, false otherwise.\\n */\\n gymWorkout(gymName: string, stat: string, focus?: boolean): boolean;\\n\\n /**\\n * Travel to another city.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function allows the player to travel to any city. The cost for using this\\n * function is the same as the cost for traveling through the Travel Agency.\\n *\\n * @param city - City to travel to.\\n * @returns True if action is successful, false otherwise.\\n */\\n travelToCity(city: CityName | `${CityName}`): boolean;\\n\\n /**\\n * Purchase the TOR router.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function allows you to automatically purchase a TOR router. The cost for\\n * purchasing a TOR router using this function is the same as if you were to\\n * manually purchase one.\\n *\\n * @returns True if actions is successful or you already own TOR router, false otherwise.\\n */\\n purchaseTor(): boolean;\\n\\n /**\\n * Purchase a program from the dark web.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function allows you to automatically purchase programs. You MUST have a\\n * TOR router in order to use this function. The cost of purchasing programs\\n * using this function is the same as if you were purchasing them through the Dark\\n * Web using the Terminal buy command.\\n *\\n * @example\\n * ```js\\n * const programName = \\\"BruteSSH.exe\\\"\\n * const success = ns.purchaseProgram(programName);\\n * if (!success) ns.tprint(\\\"ERROR: Failed to purchase ${programName}\\\")\\n * ```\\n * @param programName - Name of program to purchase.\\n * @returns True if the specified program is purchased, and false otherwise.\\n */\\n purchaseProgram(programName: string): boolean;\\n\\n /**\\n * Check if the player is busy.\\n * @remarks\\n * RAM cost: 0.5 GB * 16/4/1\\n *\\n *\\n * Returns a boolean indicating whether or not the player is currently performing an\\n * ‘action’. These actions include working for a company/faction, studying at a university,\\n * working out at a gym, creating a program, committing a crime, or carrying out a Hacking Mission.\\n *\\n * @returns True if the player is currently performing an ‘action’, false otherwise.\\n */\\n isBusy(): boolean;\\n\\n /**\\n * Stop the current action.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function is used to end whatever ‘action’ the player is currently performing.\\n * The player will receive whatever money/experience/etc. he has earned from that action.\\n *\\n * The actions that can be stopped with this function are:\\n *\\n * * Studying at a university\\n * * Working out at a gym\\n * * Working for a company/faction\\n * * Creating a program\\n * * Committing a crime\\n *\\n * This function will return true if the player’s action was ended.\\n * It will return false if the player was not performing an action when this function was called.\\n *\\n * @returns True if the player’s action was ended, false if the player was not performing an action.\\n */\\n stopAction(): boolean;\\n\\n /**\\n * Upgrade home computer RAM.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will upgrade amount of RAM on the player’s home computer. The cost is\\n * the same as if you were to do it manually.\\n *\\n * This function will return true if the player’s home computer RAM is successfully upgraded, and false otherwise.\\n *\\n * @returns True if the player’s home computer RAM is successfully upgraded, and false otherwise.\\n */\\n upgradeHomeRam(): boolean;\\n\\n /**\\n * Upgrade home computer cores.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will upgrade amount of cores on the player’s home computer. The cost is\\n * the same as if you were to do it manually.\\n *\\n * This function will return true if the player’s home computer cores is successfully upgraded, and false otherwise.\\n *\\n * @returns True if the player’s home computer cores is successfully upgraded, and false otherwise.\\n */\\n upgradeHomeCores(): boolean;\\n\\n /**\\n * Get the price of upgrading home RAM.\\n * @remarks\\n * RAM cost: 1.5 GB * 16/4/1\\n *\\n *\\n * Returns the cost of upgrading the player’s home computer RAM.\\n *\\n * @returns Cost of upgrading the player’s home computer RAM.\\n */\\n getUpgradeHomeRamCost(): number;\\n\\n /**\\n * Get the price of upgrading home cores.\\n * @remarks\\n * RAM cost: 1.5 GB * 16/4/1\\n *\\n *\\n * Returns the cost of upgrading the player’s home computer cores.\\n *\\n * @returns Cost of upgrading the player’s home computer cores.\\n */\\n getUpgradeHomeCoresCost(): number;\\n\\n /**\\n * Get Requirements for Company Position.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function will return an object that contains the requirements for\\n * a specific position at a specific country.\\n *\\n * @example\\n * ```js\\n * const companyName = \\\"ECorp\\\";\\n * const position = \\\"Chief Executive Officer\\\";\\n *\\n * let requirements = ns.singularity.getCompanyPositionInfo(companyName, position);\\n * ```\\n * @param companyName - Name of company to get the requirements for. Must be an exact match.\\n * @param positionName - Name of position to get the requirements for. Must be an exact match.\\n * @returns CompanyPositionInfo object.\\n */\\n getCompanyPositionInfo(\\n companyName: CompanyName | `${CompanyName}`,\\n positionName: JobName | `${JobName}`,\\n ): CompanyPositionInfo;\\n\\n /**\\n * Get List of Company Positions.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * This function will return a list of positions at a specific company.\\n *\\n * This function will return the position list if the company name is valid.\\n *\\n * @example\\n * ```js\\n * const companyName = \\\"Noodle Bar\\\";\\n * const jobList = ns.singularity.getCompanyPositions(companyName);\\n * ```\\n * @param companyName - Name of company to get the position list for. Must be an exact match.\\n * @returns The position list if the company name is valid.\\n */\\n getCompanyPositions(companyName: CompanyName | `${CompanyName}`): JobName[];\\n\\n /**\\n * Work for a company.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will set you to start working at your current job at a specified company at which you are employed.\\n * If you are already in the middle of some “working” action (such as working for a faction, training at a gym, or\\n * creating a program), then running this function will cancel that action.\\n *\\n * This function will return true if the player starts working, and false otherwise.\\n *\\n * @example\\n * ```js\\n * const companyName = \\\"Noodle Bar\\\";\\n * const success = ns.singularity.workForCompany(companyName);\\n * if (!success) ns.tprint(`ERROR: Failed to start work at ${companyName}.`);\\n * ```\\n * @param companyName - Name of company to work for. Must be an exact match. Optional. If not specified, this\\n * argument defaults to the last job that you worked.\\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\\n * @returns True if the player starts working, and false otherwise.\\n */\\n workForCompany(companyName: CompanyName, focus?: boolean): boolean;\\n\\n /**\\n * Quit jobs by company.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will finish work with the company provided and quit any jobs.\\n *\\n * @param companyName - Name of the company.\\n */\\n quitJob(companyName?: CompanyName | `${CompanyName}`): void;\\n\\n /**\\n * Apply for a job at a company.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will automatically try to apply to the specified company\\n * for a position in the specified field. This function can also be used to\\n * apply for promotions by specifying the company and field you are already\\n * employed at.\\n *\\n * This function will return true if you successfully get a job/promotion,\\n * and false otherwise. Note that if you are trying to use this function to\\n * apply for a promotion and you don’t get one, it will return false.\\n *\\n * @param companyName - Name of company to apply to.\\n * @param field - Field to which you want to apply.\\n * @returns True if the player successfully get a job/promotion, and false otherwise.\\n */\\n applyToCompany(companyName: CompanyName | `${CompanyName}`, field: string): boolean;\\n\\n /**\\n * Get company reputation.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function will return the amount of reputation you have at the specified company.\\n * If the company passed in as an argument is invalid, -1 will be returned.\\n *\\n * @param companyName - Name of the company.\\n * @returns Amount of reputation you have at the specified company.\\n */\\n getCompanyRep(companyName: CompanyName | `${CompanyName}`): number;\\n\\n /**\\n * Get company favor.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function will return the amount of favor you have at the specified company.\\n * If the company passed in as an argument is invalid, -1 will be returned.\\n *\\n * @param companyName - Name of the company.\\n * @returns Amount of favor you have at the specified company.\\n */\\n getCompanyFavor(companyName: CompanyName | `${CompanyName}`): number;\\n\\n /**\\n * Get company favor gain.\\n * @remarks\\n * RAM cost: 0.75 GB * 16/4/1\\n *\\n *\\n * This function will return the amount of favor you will gain for the specified\\n * company when you reset by installing Augmentations.\\n *\\n * @param companyName - Name of the company.\\n * @returns Amount of favor you gain at the specified company when you reset by installing Augmentations.\\n */\\n getCompanyFavorGain(companyName: CompanyName | `${CompanyName}`): number;\\n\\n /**\\n * List all current faction invitations.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * Performs an immediate check for which factions you qualify for invites from, then returns an array with the name\\n * of all Factions you have outstanding invitations from.\\n *\\n * @returns Array with the name of all Factions you currently have outstanding invitations from.\\n */\\n checkFactionInvitations(): string[];\\n\\n /**\\n * Join a faction.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will automatically accept an invitation from a faction and join it.\\n *\\n * @param faction - Name of faction to join.\\n * @returns True if player joined the faction, and false otherwise.\\n */\\n joinFaction(faction: string): boolean;\\n\\n /**\\n * Work for a faction.\\n * @remarks\\n * RAM cost: 3 GB * 16/4/1\\n *\\n *\\n * This function will set you to start working for the specified faction. You must be a member of the faction and\\n * that faction must have the specified work type, or else this function will fail. If you are already in the\\n * middle of some “working” action (such as working for a company, training at a gym, or creating a program), then\\n * running this function will cancel that action.\\n *\\n * This function will return true if you successfully start working for the specified faction, and false otherwise.\\n *\\n * @example\\n * ```js\\n * const factionName = \\\"CyberSec\\\";\\n * const workType = \\\"hacking\\\";\\n *\\n * let success = ns.singularity.workForFaction(factionName, workType);\\n * if (!success) ns.tprint(`ERROR: Failed to start work for ${factionName} with work type ${workType}.`)\\n * ```\\n * @param faction - Name of faction to work for.\\n * @param workType - Type of work to perform for the faction.\\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\\n * @returns True if the player starts working, and false otherwise.\\n */\\n workForFaction(faction: string, workType: FactionWorkType | `${FactionWorkType}`, focus?: boolean): boolean;\\n\\n /**\\n * Get faction reputation.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function returns the amount of reputation you have for the specified faction.\\n *\\n * @param faction - Name of faction to work for.\\n * @returns Amount of reputation you have for the specified faction.\\n */\\n getFactionRep(faction: string): number;\\n\\n /**\\n * Get faction favor.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function returns the amount of favor you have for the specified faction.\\n *\\n * @param faction - Name of faction.\\n * @returns Amount of favor you have for the specified faction.\\n */\\n getFactionFavor(faction: string): number;\\n\\n /**\\n * Get faction favor gain.\\n * @remarks\\n * RAM cost: 0.75 GB * 16/4/1\\n *\\n *\\n * This function returns the amount of favor you will gain for the specified\\n * faction when you reset by installing Augmentations.\\n *\\n * @param faction - Name of faction.\\n * @returns Amount of favor you will gain for the specified faction when you reset by installing Augmentations.\\n */\\n getFactionFavorGain(faction: string): number;\\n\\n /**\\n * Donate to a faction.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Attempts to donate money to the specified faction in exchange for reputation.\\n * Returns true if you successfully donate the money, and false otherwise.\\n *\\n * @param faction - Name of faction to donate to.\\n * @param amount - Amount of money to donate.\\n * @returns True if the money was donated, and false otherwise.\\n */\\n donateToFaction(faction: string, amount: number): boolean;\\n\\n /**\\n * Create a program.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function will automatically set you to start working on creating the\\n * specified program. If you are already in the middle of some “working” action\\n * (such as working for a company, training at a gym, or taking a course), then\\n * running this function will automatically cancel that action and give you your\\n * earnings.\\n *\\n * This function returns true if you successfully start working on the specified program, and false otherwise.\\n *\\n * Note that creating a program using this function has the same hacking level requirements as it normally would.\\n * These level requirements are:\\n * * BruteSSH.exe: 50\\n * * FTPCrack.exe: 100\\n * * relaySMTP.exe: 250\\n * * HTTPWorm.exe: 500\\n * * SQLInject.exe: 750\\n * * DeepscanV1.exe: 75\\n * * DeepscanV2.exe: 400\\n * * ServerProfiler.exe: 75\\n * * AutoLink.exe: 25\\n *\\n * @example\\n * ```js\\n * const programName = \\\"BruteSSH.exe\\\";\\n * const success = ns.createProgram(programName);\\n * if (!success) ns.tprint(\\\"ERROR: Failed to start working on ${programName}\\\")\\n * ```\\n * @param program - Name of program to create.\\n * @param focus - Acquire player focus on this program creation. Optional. Defaults to true.\\n * @returns True if you successfully start working on the specified program, and false otherwise.\\n */\\n createProgram(program: string, focus?: boolean): boolean;\\n\\n /**\\n * Commit a crime.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function is used to automatically attempt to commit crimes.\\n * If you are already in the middle of some ‘working’ action (such\\n * as working for a company or training at a gym), then running this\\n * function will automatically cancel that action and give you your\\n * earnings.\\n *\\n * This function returns the number of milliseconds it takes to attempt the\\n * specified crime (e.g It takes 60 seconds to attempt the ‘Rob Store’ crime,\\n * so running `commitCrime('Rob Store')` will return 60,000).\\n *\\n * @param crime - Name of crime to attempt.\\n * @param focus - Acquire player focus on this crime. Optional. Defaults to true.\\n * @returns The number of milliseconds it takes to attempt the specified crime.\\n */\\n commitCrime(crime: CrimeType | `${CrimeType}`, focus?: boolean): number;\\n\\n /**\\n * Get chance to successfully commit a crime.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function returns your chance of success at committing the specified crime.\\n *\\n * @param crime - Name of crime.\\n * @returns Chance of success at committing the specified crime.\\n */\\n getCrimeChance(crime: CrimeType | `${CrimeType}`): number;\\n\\n /**\\n * Get stats related to a crime.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Returns the stats of the crime.\\n *\\n * @param crime - Name of crime.\\n * @returns The stats of the crime.\\n */\\n getCrimeStats(crime: CrimeType | `${CrimeType}`): CrimeStats;\\n\\n /**\\n * Get a list of owned augmentation.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function returns an array containing the names (as strings) of all Augmentations you have.\\n *\\n * @param purchased - Specifies whether the returned array should include Augmentations you have purchased but not\\n * yet installed. By default, this argument is false which means that the return value will NOT have the purchased\\n * Augmentations.\\n * @returns Array containing the names (as strings) of all Augmentations you have.\\n */\\n getOwnedAugmentations(purchased?: boolean): string[];\\n\\n /**\\n * Get a list of acquired Source-Files.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n *\\n * Returns an array of source files\\n *\\n * @returns Array containing an object with number and level of the source file.\\n */\\n getOwnedSourceFiles(): SourceFileLvl[];\\n\\n /**\\n * Get a list of faction(s) that have a specific Augmentation.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Returns an array containing the names (as strings) of all factions\\n * that offer the specified Augmentation.\\n * If no factions offer the Augmentation, a blank array is returned.\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Array containing the names of all factions.\\n */\\n getAugmentationFactions(augName: string): string[];\\n\\n /**\\n * Get a list of augmentation available from a faction.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Returns an array containing the names (as strings) of all Augmentations\\n * that are available from the specified faction.\\n *\\n * @param faction - Name of faction.\\n * @returns Array containing the names of all Augmentations.\\n */\\n getAugmentationsFromFaction(faction: string): string[];\\n\\n /**\\n * Get the pre-requisite of an augmentation.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function returns an array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\\n * If there are no prerequisites, a blank array is returned.\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\\n */\\n getAugmentationPrereq(augName: string): string[];\\n\\n /**\\n * Get price of an augmentation.\\n * @remarks\\n * RAM cost: 2.5 GB * 16/4/1\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Price of the augmentation.\\n */\\n getAugmentationPrice(augName: string): number;\\n\\n /**\\n * Get base price of an augmentation.\\n * @remarks\\n * RAM cost: 2.5 GB * 16/4/1\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Base price of the augmentation, before price multiplier.\\n */\\n getAugmentationBasePrice(augName: string): number;\\n\\n /**\\n * Get reputation requirement of an augmentation.\\n * @remarks\\n * RAM cost: 2.5 GB * 16/4/1\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Reputation requirement of the augmentation.\\n */\\n getAugmentationRepReq(augName: string): number;\\n\\n /**\\n * Purchase an augmentation\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function will try to purchase the specified Augmentation through the given Faction.\\n *\\n * This function will return true if the Augmentation is successfully purchased, and false otherwise.\\n *\\n * @param faction - Name of faction to purchase Augmentation from.\\n * @param augmentation - Name of Augmentation to purchase.\\n * @returns True if the Augmentation is successfully purchased, and false otherwise.\\n */\\n purchaseAugmentation(faction: string, augmentation: string): boolean;\\n\\n /**\\n * Get the stats of an augmentation.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function returns augmentation stats.\\n *\\n * @param name - Name of Augmentation. CASE-SENSITIVE.\\n * @returns Augmentation stats.\\n */\\n getAugmentationStats(name: string): Multipliers;\\n\\n /**\\n * Install your purchased augmentations.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function will automatically install your Augmentations, resetting the game as usual. If you do not own uninstalled Augmentations then the game will not reset.\\n *\\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\\n */\\n installAugmentations(cbScript?: string): void;\\n\\n /**\\n * Hospitalize the player.\\n * @remarks\\n * RAM cost: 0.25 GB * 16/4/1\\n */\\n hospitalize(): void;\\n\\n /**\\n * Soft reset the game.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * This function will perform a reset even if you don’t have any augmentation installed.\\n *\\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\\n */\\n softReset(cbScript: string): void;\\n\\n /**\\n * Go to a location.\\n * @remarks\\n * RAM cost: 5 GB * 16/4/1\\n *\\n *\\n * Move the player to a specific location.\\n *\\n * @param locationName - Name of the location.\\n * @returns True if the player was moved there, false otherwise.\\n */\\n goToLocation(locationName: string): boolean;\\n\\n /**\\n * Get the current server.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * @returns Name of the current server.\\n */\\n getCurrentServer(): string;\\n\\n /**\\n * Connect to a server.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * Run the connect HOSTNAME command in the terminal. Can only connect to neighbors.\\n *\\n * @returns True if the connect command was successful, false otherwise.\\n */\\n connect(hostname: string): boolean;\\n\\n /**\\n * Run the hack command in the terminal.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * @returns Amount of money stolen by manual hacking.\\n */\\n manualHack(): Promise;\\n\\n /**\\n * Run the backdoor command in the terminal.\\n * @remarks\\n * RAM cost: 2 GB * 16/4/1\\n *\\n *\\n * @returns Promise waiting for the installation to finish.\\n */\\n installBackdoor(): Promise;\\n\\n /**\\n * Check if the player is focused.\\n * @remarks\\n * RAM cost: 0.1 GB * 16/4/1\\n *\\n *\\n * @returns True if the player is focused.\\n */\\n isFocused(): boolean;\\n\\n /**\\n * Set the players focus.\\n * @remarks\\n * RAM cost: 0.1 GB * 16/4/1\\n *\\n * @returns True if the focus was changed.\\n */\\n setFocus(focus: boolean): boolean;\\n\\n /**\\n * Get a list of programs offered on the dark web.\\n * @remarks\\n * RAM cost: 1 GB * 16/4/1\\n *\\n *\\n * This function allows the player to get a list of programs available for purchase\\n * on the dark web. Players MUST have purchased Tor to get the list of programs\\n * available. If Tor has not been purchased yet, this function will return an\\n * empty list.\\n *\\n * @example\\n * ```js\\n * const programs = ns.getDarkwebPrograms();\\n * ns.tprint(`Available programs are: ${programs.split(\\\", \\\")}`);\\n * ```\\n * @returns - a list of programs available for purchase on the dark web, or [] if Tor has not\\n * been purchased\\n */\\n getDarkwebPrograms(): string[];\\n\\n /**\\n * Check the price of an exploit on the dark web\\n * @remarks\\n * RAM cost: 0.5 GB * 16/4/1\\n *\\n *\\n * This function allows you to check the price of a darkweb exploit/program.\\n * You MUST have a TOR router in order to use this function. The price returned\\n * by this function is the same price you would see with buy -l from the terminal.\\n * Returns the cost of the program if it has not been purchased yet, 0 if it\\n * has already been purchased, or -1 if Tor has not been purchased (and thus\\n * the program/exploit is not available for purchase).\\n *\\n * If the program does not exist, an error is thrown.\\n *\\n *\\n * @example\\n * ```js\\n * const programName = \\\"BruteSSH.exe\\\";\\n * const cost = ns.getDarkwebProgramCost(programName);\\n * if (cost > 0) ns.tprint(`${programName} costs ${ns.formatMoney(cost)}`);\\n * ```\\n * @param programName - Name of program to check the price of\\n * @returns Price of the specified darkweb program\\n * (if not yet purchased), 0 if it has already been purchased, or -1 if Tor has not been\\n * purchased. Throws an error if the specified program/exploit does not exist\\n */\\n getDarkwebProgramCost(programName: string): number;\\n\\n /**\\n * b1t_flum3 into a different BN.\\n * @remarks\\n * RAM cost: 16 GB * 16/4/1\\n *\\n * @param nextBN - BN number to jump to\\n * @param callbackScript - Name of the script to launch in the next BN.\\n */\\n b1tflum3(nextBN: number, callbackScript?: string): void;\\n\\n /**\\n * Destroy the w0r1d_d43m0n and move on to the next BN.\\n * @remarks\\n * RAM cost: 32 GB * 16/4/1\\n *\\n * You must have the special augment installed and the required hacking level\\n * OR\\n * Completed the final black op.\\n *\\n * @param nextBN - BN number to jump to\\n * @param callbackScript - Name of the script to launch in the next BN.\\n */\\n destroyW0r1dD43m0n(nextBN: number, callbackScript?: string): void;\\n\\n /**\\n * Get the current work the player is doing.\\n * @remarks\\n * RAM cost: 0.5 GB * 16/4/1\\n *\\n * @returns - An object representing the current work. Fields depend on the kind of work.\\n */\\n getCurrentWork(): any | null;\\n}\\n\\n/**\\n * Company position requirements and salary.\\n * @public\\n * @returns - An object representing the requirements and salary for a company/position combination.\\n */\\nexport interface CompanyPositionInfo {\\n name: JobName;\\n nextPosition: JobName | null;\\n salary: number;\\n requiredReputation: number;\\n requiredSkills: Skills;\\n}\\n\\n/**\\n * Hacknet API\\n * @remarks\\n * Not all these functions are immediately available.\\n * @public\\n */\\nexport interface Hacknet {\\n /**\\n * Get the number of hacknet nodes you own.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the number of Hacknet Nodes you own.\\n *\\n * @returns Number of hacknet nodes.\\n */\\n numNodes(): number;\\n\\n /**\\n * Get the maximum number of hacknet nodes.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns Maximum number of hacknet nodes.\\n */\\n maxNumNodes(): number;\\n\\n /**\\n * Purchase a new hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Purchases a new Hacknet Node. Returns a number with the index of the\\n * Hacknet Node. This index is equivalent to the number at the end of\\n * the Hacknet Node’s name (e.g The Hacknet Node named `hacknet-node-4`\\n * will have an index of 4).\\n *\\n * If the player cannot afford to purchase a new Hacknet Node then the function will return -1.\\n *\\n * @returns The index of the Hacknet Node or if the player cannot afford to purchase a new Hacknet Node the function will return -1.\\n */\\n purchaseNode(): number;\\n\\n /**\\n * Get the price of the next hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the cost of purchasing a new Hacknet Node.\\n *\\n * @returns Cost of purchasing a new Hacknet Node.\\n */\\n getPurchaseNodeCost(): number;\\n\\n /**\\n * Get the stats of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns an object containing a variety of stats about the specified Hacknet Node.\\n *\\n * Note that for Hacknet Nodes, production refers to the amount of money the node generates.\\n * For Hacknet Servers (the upgraded version of Hacknet Nodes), production refers to the\\n * amount of hashes the node generates.\\n *\\n * @param index - Index/Identifier of Hacknet Node\\n * @returns Object containing a variety of stats about the specified Hacknet Node.\\n */\\n getNodeStats(index: number): NodeStats;\\n\\n /**\\n * Upgrade the level of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Tries to upgrade the level of the specified Hacknet Node by n.\\n *\\n * Returns true if the Hacknet Node’s level is successfully upgraded by n\\n * or if it is upgraded by some positive amount and the Node reaches its max level.\\n *\\n * Returns false otherwise.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of levels to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns True if the Hacknet Node’s level is successfully upgraded, false otherwise.\\n */\\n upgradeLevel(index: number, n?: number): boolean;\\n\\n /**\\n * Upgrade the RAM of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Tries to upgrade the specified Hacknet Node’s RAM n times.\\n * Note that each upgrade doubles the Node’s RAM.\\n * So this is equivalent to multiplying the Node’s RAM by 2 n.\\n *\\n * Returns true if the Hacknet Node’s RAM is successfully upgraded n times\\n * or if it is upgraded some positive number of times and the Node reaches its max RAM.\\n *\\n * Returns false otherwise.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns True if the Hacknet Node’s RAM is successfully upgraded, false otherwise.\\n */\\n upgradeRam(index: number, n?: number): boolean;\\n\\n /**\\n * Upgrade the core of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Tries to purchase n cores for the specified Hacknet Node.\\n *\\n * Returns true if it successfully purchases n cores for the Hacknet Node\\n * or if it purchases some positive amount and the Node reaches its max number of cores.\\n *\\n * Returns false otherwise.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of cores to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns True if the Hacknet Node’s cores are successfully purchased, false otherwise.\\n */\\n upgradeCore(index: number, n?: number): boolean;\\n\\n /**\\n * Upgrade the cache of a hacknet node.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Tries to upgrade the specified Hacknet Server’s cache n times.\\n *\\n * Returns true if it successfully upgrades the Server’s cache n times,\\n * or if it purchases some positive amount and the Server reaches its max cache level.\\n *\\n * Returns false otherwise.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of cache levels to purchase. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns True if the Hacknet Node’s cache level is successfully upgraded, false otherwise.\\n */\\n upgradeCache(index: number, n?: number): boolean;\\n\\n /**\\n * Calculate the cost of upgrading hacknet node levels.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the cost of upgrading the specified Hacknet Node by n levels.\\n *\\n * If an invalid value for n is provided, then this function returns 0.\\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of levels to upgrade. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns Cost of upgrading the specified Hacknet Node.\\n */\\n getLevelUpgradeCost(index: number, n?: number): number;\\n\\n /**\\n * Calculate the cost of upgrading hacknet node RAM.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the cost of upgrading the RAM of the specified Hacknet Node n times.\\n *\\n * If an invalid value for n is provided, then this function returns 0.\\n * If the specified Hacknet Node already has max RAM, then Infinity is returned.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns Cost of upgrading the specified Hacknet Node's RAM.\\n */\\n getRamUpgradeCost(index: number, n?: number): number;\\n\\n /**\\n * Calculate the cost of upgrading hacknet node cores.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the cost of upgrading the number of cores of the specified Hacknet Node by n.\\n *\\n * If an invalid value for n is provided, then this function returns 0.\\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of times to upgrade cores. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns Cost of upgrading the specified Hacknet Node's number of cores.\\n */\\n getCoreUpgradeCost(index: number, n?: number): number;\\n\\n /**\\n * Calculate the cost of upgrading hacknet node cache.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the cost of upgrading the cache level of the specified Hacknet Server by n.\\n *\\n * If an invalid value for n is provided, then this function returns 0.\\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\\n *\\n * @param index - Index/Identifier of Hacknet Node.\\n * @param n - Number of times to upgrade cache. Must be positive. Rounded to nearest integer. Defaults to 1 if not specified.\\n * @returns Cost of upgrading the specified Hacknet Node's cache.\\n */\\n getCacheUpgradeCost(index: number, n?: number): number;\\n\\n /**\\n * Get the total number of hashes stored.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the number of hashes you have.\\n *\\n * @returns Number of hashes you have.\\n */\\n numHashes(): number;\\n\\n /**\\n * Get the maximum number of hashes you can store.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the number of hashes you can store.\\n *\\n * @returns Number of hashes you can store.\\n */\\n hashCapacity(): number;\\n\\n /**\\n * Get the cost of a hash upgrade.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the number of hashes required for the specified upgrade. The name of the upgrade must be an exact match.\\n *\\n * @example\\n * ```js\\n * const upgradeName = \\\"Sell for Corporation Funds\\\";\\n * if (ns.hacknet.numHashes() > ns.hacknet.hashCost(upgradeName)) {\\n * ns.hacknet.spendHashes(upgradeName);\\n * }\\n * ```\\n * @param upgName - Name of the upgrade of Hacknet Node.\\n * @param count - Number of upgrades to buy at once. Defaults to 1 if not specified.\\n * @returns Number of hashes required for the specified upgrade.\\n */\\n hashCost(upgName: string, count?: number): number;\\n\\n /**\\n * Purchase a hash upgrade.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Spend the hashes generated by your Hacknet Servers on an upgrade.\\n * Returns a boolean value - true if the upgrade is successfully purchased, and false otherwise.\\n *\\n * The name of the upgrade must be an exact match.\\n * The `upgTarget` argument is used for upgrades such as `Reduce Minimum Security`, which applies to a specific server.\\n * In this case, the `upgTarget` argument must be the hostname of the server.\\n *\\n * @example\\n * ```js\\n * // For upgrades where no target is required\\n * ns.hacknet.spendHashes(\\\"Sell for Corporation Funds\\\");\\n * // For upgrades requiring a target\\n * ns.hacknet.spendHashes(\\\"Increase Maximum Money\\\", \\\"foodnstuff\\\");\\n * ```\\n * @param upgName - Name of the upgrade of Hacknet Node.\\n * @param upgTarget - Object to which upgrade applies. Required for certain upgrades.\\n * @param count - Number of upgrades to buy at once. Defaults to 1 if not specified.\\n * For compatibility reasons, upgTarget must be specified, even if it is not used, in order to specify count.\\n * @returns True if the upgrade is successfully purchased, and false otherwise.\\n */\\n spendHashes(upgName: string, upgTarget?: string, count?: number): boolean;\\n\\n /**\\n * Get the list of hash upgrades\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * Returns the list of all available hash upgrades that can be used in the spendHashes function.\\n * @example\\n * ```js\\n * const upgrades = ns.hacknet.getHashUpgrades(); // [\\\"Sell for Money\\\",\\\"Sell for Corporation Funds\\\",...]\\n * ```\\n * @returns An array containing the available upgrades\\n */\\n getHashUpgrades(): string[];\\n\\n /**\\n * Get the level of a hash upgrade.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * @returns Level of the upgrade.\\n */\\n getHashUpgradeLevel(upgName: string): number;\\n\\n /**\\n * Get the multiplier to study.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * @returns Multiplier.\\n */\\n getStudyMult(): number;\\n\\n /**\\n * Get the multiplier to training.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\\n *\\n * @returns Multiplier.\\n */\\n getTrainingMult(): number;\\n}\\n\\n/**\\n * Bladeburner API\\n * @remarks\\n * You have to be employed in the Bladeburner division and be in BitNode-7\\n * or have Source-File 7 in order to use this API.\\n * @public\\n */\\nexport interface Bladeburner {\\n /**\\n * List all contracts.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all Bladeburner contracts.\\n *\\n * @returns Array of strings containing the names of all Bladeburner contracts.\\n */\\n getContractNames(): string[];\\n\\n /**\\n * List all operations.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all Bladeburner operations.\\n *\\n * @returns Array of strings containing the names of all Bladeburner operations.\\n */\\n getOperationNames(): string[];\\n\\n /**\\n * List all black ops.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all Bladeburner Black Ops.\\n *\\n * @returns Array of strings containing the names of all Bladeburner Black Ops.\\n */\\n getBlackOpNames(): string[];\\n\\n /**\\n * List all general actions.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all general Bladeburner actions.\\n *\\n * @returns Array of strings containing the names of all general Bladeburner actions.\\n */\\n getGeneralActionNames(): string[];\\n\\n /**\\n * List all skills.\\n * @remarks\\n * RAM cost: 0.4 GB\\n *\\n * Returns an array of strings containing the names of all general Bladeburner skills.\\n *\\n * @returns Array of strings containing the names of all general Bladeburner skills.\\n */\\n getSkillNames(): string[];\\n\\n /**\\n * Start an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Attempts to start the specified Bladeburner action.\\n * Returns true if the action was started successfully, and false otherwise.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match\\n * @returns True if the action was started successfully, and false otherwise.\\n */\\n startAction(type: string, name: string): boolean;\\n\\n /**\\n * Stop current action.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Stops the current Bladeburner action.\\n *\\n */\\n stopBladeburnerAction(): void;\\n\\n /**\\n * Get current action.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns an object that represents the player’s current Bladeburner action.\\n * If the player is not performing an action, the function will return an object with the ‘type’ property set to “Idle”.\\n *\\n * @returns Object that represents the player’s current Bladeburner action.\\n */\\n getCurrentAction(): BladeburnerCurAction;\\n\\n /**\\n * Get the time to complete an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the number of milliseconds it takes to complete the specified action\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Number of milliseconds it takes to complete the specified action.\\n */\\n getActionTime(type: string, name: string): number;\\n\\n /**\\n * Get the time elapsed on current action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the number of milliseconds already spent on the current action.\\n *\\n * @returns Number of milliseconds already spent on the current action.\\n */\\n getActionCurrentTime(): number;\\n\\n /**\\n * Get estimate success chance of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the estimated success chance for the specified action.\\n * This chance is returned as a decimal value, NOT a percentage\\n * (e.g. if you have an estimated success chance of 80%, then this function will return 0.80, NOT 80).\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Estimated success chance for the specified action.\\n */\\n getActionEstimatedSuccessChance(type: string, name: string): [number, number];\\n\\n /**\\n * Get the reputation gain of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the average Bladeburner reputation gain for successfully\\n * completing the specified action.\\n * Note that this value is an ‘average’ and the real reputation gain may vary slightly from this value.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @param level - Optional number. Action level at which to calculate the gain. Will be the action's current level if not given.\\n * @returns Average Bladeburner reputation gain for successfully completing the specified action.\\n */\\n getActionRepGain(type: string, name: string, level: number): number;\\n\\n /**\\n * Get action count remaining.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the remaining count of the specified action.\\n *\\n * Note that this is meant to be used for Contracts and Operations.\\n * This function will return ‘Infinity’ for actions such as Training and Field Analysis.\\n * This function will return 1 for BlackOps not yet completed regardless of whether\\n * the player has the required rank to attempt the mission or not.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Remaining count of the specified action.\\n */\\n getActionCountRemaining(type: string, name: string): number;\\n\\n /**\\n * Get the maximum level of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the maximum level for this action.\\n *\\n * Returns -1 if an invalid action is specified.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Maximum level of the specified action.\\n */\\n getActionMaxLevel(type: string, name: string): number;\\n\\n /**\\n * Get the current level of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the current level of this action.\\n *\\n * Returns -1 if an invalid action is specified.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Current level of the specified action.\\n */\\n getActionCurrentLevel(type: string, name: string): number;\\n\\n /**\\n * Get whether an action is set to autolevel.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action is currently set to autolevel.\\n *\\n * Returns false if an invalid action is specified.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns True if the action is set to autolevel, and false otherwise.\\n */\\n getActionAutolevel(type: string, name: string): boolean;\\n\\n /**\\n * Get action successes.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a number with how many successes you have with action.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns a number with how many successes you have with action.\\n */\\n getActionSuccesses(type: string, name: string): number;\\n\\n /**\\n * Set an action autolevel.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Enable/disable autoleveling for the specified action.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @param autoLevel - Whether or not to autolevel this action\\n */\\n setActionAutolevel(type: string, name: string, autoLevel: boolean): void;\\n\\n /**\\n * Set the level of an action.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Set the level for the specified action.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @param level - Level to set this action to.\\n */\\n setActionLevel(type: string, name: string, level: number): void;\\n\\n /**\\n * Get player bladeburner rank.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the player’s Bladeburner Rank.\\n *\\n * @returns Player’s Bladeburner Rank.\\n */\\n getRank(): number;\\n\\n /**\\n * Get black op required rank.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Returns the rank required to complete this BlackOp.\\n *\\n * Returns -1 if an invalid action is specified.\\n *\\n * @param name - Name of BlackOp. Must be an exact match.\\n * @returns Rank required to complete this BlackOp.\\n */\\n getBlackOpRank(name: string): number;\\n\\n /**\\n * Get bladeburner skill points.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the number of Bladeburner skill points you have.\\n *\\n * @returns Number of Bladeburner skill points you have.\\n */\\n getSkillPoints(): number;\\n\\n /**\\n * Get skill level.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * This function returns your level in the specified skill.\\n *\\n * The function returns -1 if an invalid skill name is passed in.\\n *\\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\\n * @returns Level in the specified skill.\\n */\\n getSkillLevel(name: string): number;\\n\\n /**\\n * Get cost to upgrade skill.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * This function returns the number of skill points needed to upgrade the specified skill the specified number of times.\\n *\\n * The function returns -1 if an invalid skill name is passed in.\\n *\\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\\n * @param count - Number of times to upgrade the skill. Defaults to 1 if not specified.\\n * @returns Number of skill points needed to upgrade the specified skill.\\n */\\n getSkillUpgradeCost(name: string, count?: number): number;\\n\\n /**\\n * Upgrade skill.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Attempts to upgrade the specified Bladeburner skill the specified number of times.\\n *\\n * Returns true if the skill is successfully upgraded, and false otherwise.\\n *\\n * @param skillName - Name of skill to be upgraded. Case-sensitive and must be an exact match\\n * @param count - Number of times to upgrade the skill. Defaults to 1 if not specified.\\n * @returns true if the skill is successfully upgraded, and false otherwise.\\n */\\n upgradeSkill(name: string, count?: number): boolean;\\n\\n /**\\n * Get team size.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the number of Bladeburner team members you have assigned to the specified action.\\n *\\n * Setting a team is only applicable for Operations and BlackOps. This function will return 0 for other action types.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @returns Number of Bladeburner team members that were assigned to the specified action.\\n */\\n getTeamSize(type: string, name: string): number;\\n\\n /**\\n * Set team size.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Set the team size for the specified Bladeburner action.\\n *\\n * Returns the team size that was set, or -1 if the function failed.\\n *\\n * @param type - Type of action.\\n * @param name - Name of action. Must be an exact match.\\n * @param size - Number of team members to set. Will be converted using Math.round().\\n * @returns Number of Bladeburner team members you assigned to the specified action.\\n */\\n setTeamSize(type: string, name: string, size: number): number;\\n\\n /**\\n * Get estimated population in city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the estimated number of Synthoids in the specified city,\\n * or -1 if an invalid city was specified.\\n *\\n * @param city - Name of city. Case-sensitive\\n * @returns Estimated number of Synthoids in the specified city.\\n */\\n getCityEstimatedPopulation(city: CityName | `${CityName}`): number;\\n\\n /**\\n * Get number of communities in a city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the estimated number of Synthoid communities in the specified city,\\n * or -1 if an invalid city was specified.\\n *\\n * @param city - Name of city. Case-sensitive\\n * @returns Number of Synthoids communities in the specified city.\\n */\\n getCityCommunities(city: CityName | `${CityName}`): number;\\n\\n /**\\n * Get chaos of a city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the chaos in the specified city,\\n * or -1 if an invalid city was specified.\\n *\\n * @param city - Name of city. Case-sensitive\\n * @returns Chaos in the specified city.\\n */\\n getCityChaos(city: CityName | `${CityName}`): number;\\n\\n /**\\n * Get current city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the city that the player is currently in (for Bladeburner).\\n *\\n * @returns City that the player is currently in (for Bladeburner).\\n */\\n getCity(): CityName;\\n\\n /**\\n * Travel to another city in bladeburner.\\n * @remarks\\n * RAM cost: 4 GB\\n * Attempts to switch to the specified city (for Bladeburner only).\\n *\\n * Returns true if successful, and false otherwise\\n *\\n * @param city - Name of city. Case-sensitive\\n * @returns true if successful, and false otherwise\\n */\\n switchCity(city: CityName | `${CityName}`): boolean;\\n\\n /**\\n * Get bladeburner stamina.\\n * @remarks\\n * RAM cost: 4 GB\\n * Returns an array with two elements:\\n * * [Current stamina, Max stamina]\\n * @example\\n * ```js\\n * function getStaminaPercentage() {\\n * const [current, max] = ns.bladeburner.getStamina();\\n * return current / max;\\n * }\\n * ```\\n * @returns Array containing current stamina and max stamina.\\n */\\n getStamina(): [number, number];\\n\\n /**\\n * Join the bladeburner faction.\\n * @remarks\\n * RAM cost: 4 GB\\n * Attempts to join the Bladeburner faction.\\n *\\n * Returns true if you successfully join the Bladeburner faction, or if you are already a member.\\n *\\n * Returns false otherwise.\\n *\\n * @returns True if you successfully join the Bladeburner faction, or if you are already a member, false otherwise.\\n */\\n joinBladeburnerFaction(): boolean;\\n\\n /**\\n * Join the bladeburner division.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Attempts to join the Bladeburner division.\\n *\\n * Returns true if you successfully join the Bladeburner division, or if you are already a member.\\n *\\n * Returns false otherwise.\\n *\\n * @returns True if you successfully join the Bladeburner division, or if you are already a member, false otherwise.\\n */\\n joinBladeburnerDivision(): boolean;\\n\\n /**\\n * Get bladeburner bonus time.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the amount of accumulated “bonus time” (milliseconds) for the Bladeburner mechanic.\\n *\\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\\n *\\n * “Bonus time” makes the game progress faster, up to 5x the normal speed.\\n * For example, if an action takes 30 seconds to complete but you’ve accumulated over\\n * 30 seconds in bonus time, then the action will only take 6 seconds in real life to complete.\\n *\\n * @returns Amount of accumulated “bonus time” (milliseconds) for the Bladeburner mechanic.\\n */\\n getBonusTime(): number;\\n\\n /** Returns whether player is a member of bladeburner division. Does not require API access.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * @returns whether player is a member of bladeburner division. */\\n inBladeburner(): boolean;\\n}\\n\\n/**\\n * Coding Contract API\\n * @public\\n */\\nexport interface CodingContract {\\n /**\\n * Attempts a coding contract, returning a reward string on success or empty string on failure.\\n * @remarks\\n * RAM cost: 10 GB\\n *\\n * Attempts to solve the Coding Contract with the provided solution.\\n *\\n * @example\\n * ```js\\n * const reward = codingcontract.attempt(yourSolution, filename, hostname);\\n * if (reward) {\\n * ns.tprint(`Contract solved successfully! Reward: ${reward}`)\\n * } else ns.tprint(\\\"Failed to solve contract.\\\")\\n * ```\\n *\\n * @param answer - Attempted solution for the contract.\\n * @param filename - Filename of the contract.\\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not\\n * provided.\\n * @returns A reward description string on success, or an empty string on failure.\\n */\\n attempt(answer: string | number | any[], filename: string, host?: string): string;\\n\\n /**\\n * Get the type of a coding contract.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * Returns a name describing the type of problem posed by the Coding Contract.\\n * (e.g. Find Largest Prime Factor, Total Ways to Sum, etc.)\\n *\\n * @param filename - Filename of the contract.\\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\\n * @returns Name describing the type of problem posed by the Coding Contract.\\n */\\n getContractType(filename: string, host?: string): string;\\n\\n /**\\n * Get the description.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * Get the full text description for the problem posed by the Coding Contract.\\n *\\n * @param filename - Filename of the contract.\\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\\n * @returns Contract’s text description.\\n */\\n getDescription(filename: string, host?: string): string;\\n\\n /**\\n * Get the input data.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * Get the data associated with the specific Coding Contract.\\n * Note that this is not the same as the contract’s description.\\n * This is just the data that the contract wants you to act on in order to solve the contract.\\n *\\n * @param filename - Filename of the contract.\\n * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.\\n * @returns The specified contract’s data, data type depends on contract type.\\n */\\n getData(filename: string, host?: string): CodingContractData;\\n\\n /**\\n * Get the number of attempts remaining.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get the number of tries remaining on the contract before it self-destructs.\\n *\\n * @param filename - Filename of the contract.\\n * @param host - Hostname of the server containing the contract. Optional. Defaults to current server if not provided.\\n * @returns How many attempts are remaining for the contract.\\n */\\n getNumTriesRemaining(filename: string, host?: string): number;\\n\\n /**\\n * Generate a dummy contract.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Generate a dummy contract on the home computer with no reward. Used to test various algorithms.\\n *\\n * @param type - Type of contract to generate\\n */\\n createDummyContract(type: string): void;\\n\\n /**\\n * List all contract types.\\n * @remarks\\n * RAM cost: 2 GB\\n */\\n getContractTypes(): string[];\\n}\\n\\n/**\\n * Gang API\\n * @remarks\\n * If you are not in BitNode-2, then you must have Source-File 2 in order to use this API.\\n * @public\\n */\\nexport interface Gang {\\n /**\\n * Create a gang.\\n * @remarks\\n * RAM cost: 1GB\\n *\\n * Create a gang with the specified faction.\\n * @returns True if the gang was created, false otherwise.\\n */\\n createGang(faction: string): boolean;\\n\\n /**\\n * Check if you're in a gang.\\n * @remarks\\n * RAM cost: 1GB\\n * @returns True if you're in a gang, false otherwise.\\n */\\n inGang(): boolean;\\n\\n /**\\n * List all gang members.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Get the names of all Gang members\\n *\\n * @returns Names of all Gang members.\\n */\\n getMemberNames(): string[];\\n\\n /**\\n * Rename a Gang member to a new unique name.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Rename a Gang Member if none already has the new name.\\n * @param memberName - Name of the member to change.\\n * @param newName - New name for that gang member.\\n * @returns True if successful, and false if not.\\n */\\n renameMember(memberName: string, newName: string): boolean;\\n\\n /**\\n * Get information about your gang.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get general information about the gang.\\n *\\n * @returns Object containing general information about the gang.\\n */\\n getGangInformation(): GangGenInfo;\\n\\n /**\\n * Get information about the other gangs.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get territory and power information about all gangs.\\n *\\n * @returns Object containing territory and power information about all gangs.\\n */\\n getOtherGangInformation(): GangOtherInfo;\\n\\n /**\\n * Get information about a specific gang member.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get stat and equipment-related information about a Gang Member\\n *\\n * @param name - Name of member.\\n * @returns Object containing stat and equipment-related information about a Gang Member.\\n */\\n getMemberInformation(name: string): GangMemberInfo;\\n\\n /**\\n * Check if you can recruit a new gang member.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns a boolean indicating whether a member can currently be recruited.\\n *\\n * Once you have successfully created a gang by using the function\\n * {@link Gang.createGang | createGang}, you can immediately recruit a small\\n * number of members to your gang. After you have recruited the founding\\n * members, to recruit another member you must increase your respect. The\\n * more members you want to recruit, the more respect you require. If your\\n * gang has the maximum number of members, then this function would return\\n * false.\\n *\\n * @returns True if a member can currently be recruited, false otherwise.\\n */\\n canRecruitMember(): boolean;\\n\\n /**\\n * Check how many gang members you can currently recruit.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * @returns Number indicating how many members can be recruited,\\n * considering current reputation and gang size.\\n */\\n getRecruitsAvailable(): number;\\n\\n /**\\n * Check the amount of Respect needed for your next gang recruit.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * @returns The static number value of Respect needed for the next\\n * recruit, with consideration to your current gang size.\\n * Returns `Infinity` if you have reached the gang size limit.\\n */\\n respectForNextRecruit(): number;\\n /**\\n * Recruit a new gang member.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Attempt to recruit a new gang member.\\n *\\n * Possible reasons for failure:\\n * * Cannot currently recruit a new member\\n * * There already exists a member with the specified name\\n *\\n * @param name - Name of member to recruit.\\n * @returns True if the member was successfully recruited, false otherwise.\\n */\\n recruitMember(name: string): boolean;\\n\\n /**\\n * List member task names.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Get the name of all valid tasks that Gang members can be assigned to.\\n *\\n * @returns All valid tasks that Gang members can be assigned to.\\n */\\n getTaskNames(): string[];\\n\\n /**\\n * Set gang member to task.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Attempts to assign the specified Gang Member to the specified task.\\n * If an invalid task is specified, the Gang member will be set to idle (“Unassigned”).\\n *\\n * @param memberName - Name of Gang member to assign.\\n * @param taskName - Task to assign.\\n * @returns True if the Gang Member was successfully assigned to the task, false otherwise.\\n */\\n setMemberTask(memberName: string, taskName: string): boolean;\\n\\n /**\\n * Get stats of a task.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Get the stats of a gang task stats. This is typically used to evaluate which action should be executed next.\\n *\\n * @param name - Name of the task.\\n * @returns Detailed stats of a task.\\n */\\n getTaskStats(name: string): GangTaskStats;\\n\\n /**\\n * List equipment names.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Get the name of all possible equipment/upgrades you can purchase for your Gang Members.\\n * This includes Augmentations.\\n *\\n * @returns Names of all Equipments/Augmentations.\\n */\\n getEquipmentNames(): string[];\\n\\n /**\\n * Get cost of equipment.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get the amount of money it takes to purchase a piece of Equipment or an Augmentation.\\n * If an invalid Equipment/Augmentation is specified, this function will return Infinity.\\n *\\n * @param equipName - Name of equipment.\\n * @returns Cost to purchase the specified Equipment/Augmentation (number). Infinity for invalid arguments\\n */\\n getEquipmentCost(equipName: string): number;\\n\\n /**\\n * Get type of an equipment.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get the specified equipment type.\\n *\\n * @param equipName - Name of equipment.\\n * @returns Type of the equipment.\\n */\\n getEquipmentType(equipName: string): string;\\n\\n /**\\n * Get stats of an equipment.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get the specified equipment stats.\\n *\\n * @param equipName - Name of equipment.\\n * @returns A dictionary containing the stats of the equipment.\\n */\\n getEquipmentStats(equipName: string): EquipmentStats;\\n\\n /**\\n * Purchase an equipment for a gang member.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Attempt to purchase the specified Equipment/Augmentation for the specified Gang member.\\n *\\n * @param memberName - Name of Gang member to purchase the equipment for.\\n * @param equipName - Name of Equipment/Augmentation to purchase.\\n * @returns True if the equipment was successfully purchased. False otherwise\\n */\\n purchaseEquipment(memberName: string, equipName: string): boolean;\\n\\n /**\\n * Ascend a gang member.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Ascend the specified Gang Member.\\n *\\n * @param memberName - Name of member to ascend.\\n * @returns Object with info about the ascension results, or undefined if ascension did not occur.\\n */\\n ascendMember(memberName: string): GangMemberAscension | undefined;\\n\\n /**\\n * Get the result of an ascension without ascending.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Get a {@link GangMemberAscension} result for ascending a gang member without performing the ascension.\\n *\\n * @param memberName - Name of member.\\n * @returns Object with info about the ascension results, or undefined if ascension is not possible.\\n */\\n getAscensionResult(memberName: string): GangMemberAscension | undefined;\\n\\n /**\\n * Enable/Disable territory clashes.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Set whether or not the gang should engage in territory clashes\\n *\\n * @param engage - Whether or not to engage in territory clashes.\\n */\\n setTerritoryWarfare(engage: boolean): void;\\n\\n /**\\n * Get chance to win clash with other gang.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns the chance you have to win a clash with the specified gang. The chance is returned in decimal form, not percentage\\n *\\n * @param gangName - Target gang\\n * @returns Chance you have to win a clash with the specified gang.\\n */\\n getChanceToWinClash(gangName: string): number;\\n\\n /**\\n * Get bonus time.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns the amount of accumulated “bonus time” (milliseconds) for the Gang mechanic.\\n *\\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\\n *\\n * “Bonus time” makes the game progress faster, up to 25x the normal speed.\\n *\\n * @returns Bonus time for the Gang mechanic in milliseconds.\\n */\\n getBonusTime(): number;\\n}\\n\\n/**\\n * Sleeve API\\n * @remarks\\n * If you are not in BitNode-10, then you must have Source-File 10 in order to use this API.\\n * @public\\n */\\nexport interface Sleeve {\\n /**\\n * Get the number of sleeves you own.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return the number of duplicate sleeves the player has.\\n *\\n * @returns Number of duplicate sleeves the player has.\\n */\\n getNumSleeves(): number;\\n\\n /**\\n * Get information about a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a person object for this sleeve\\n *\\n * storedCycles is the amount of Bonus Time in cycles, each translates to 200ms\\n *\\n * @param sleeveNumber - Index of the sleeve to retrieve information.\\n * @returns Object containing information about this sleeve.\\n */\\n getSleeve(sleeveNumber: number): SleevePerson;\\n\\n /**\\n * Get task of a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return the current task that the sleeve is performing, or null if the sleeve is idle. All tasks have a \\\"type\\\"\\n * property, and other available properties depend on the type of task.\\n *\\n * @param sleeveNumber - Index of the sleeve to retrieve task from.\\n * @returns Object containing information for the current task that the sleeve is performing.\\n */\\n getTask(sleeveNumber: number): SleeveTask | null;\\n\\n /**\\n * Set a sleeve to idle.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * @param sleeveNumber - Index of the sleeve to idle.\\n */\\n setToIdle(sleeveNumber: number): void;\\n\\n /**\\n * Set a sleeve to shock recovery.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action was set successfully.\\n *\\n * @param sleeveNumber - Index of the sleeve to start recovery.\\n * @returns True if this action was set successfully, false otherwise.\\n */\\n setToShockRecovery(sleeveNumber: number): boolean;\\n\\n /**\\n * Set a sleeve to synchronize.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action was set successfully.\\n *\\n * @param sleeveNumber - Index of the sleeve to start synchronizing.\\n * @returns True if this action was set successfully, false otherwise.\\n */\\n setToSynchronize(sleeveNumber: number): boolean;\\n\\n /**\\n * Set a sleeve to commit crime.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action was set successfully (false if an invalid action is specified).\\n *\\n * @example\\n * ```ts\\n * // Assigns the first sleeve to Homicide.\\n * ns.sleeve.setToCommitCrime(0, \\\"Homicide\\\");\\n *\\n * // Assigns the second sleeve to Grand Theft Auto, using enum\\n * const crimes = ns.enums.CrimeType;\\n * ns.sleeve.setToCommitCrime(1, crimes.grandTheftAuto)\\n * ```\\n *\\n * @param sleeveNumber - Index of the sleeve to start committing crime. Sleeves are numbered starting from 0.\\n * @param name - Name of the crime.\\n * @returns True if this action was set successfully, false otherwise.\\n */\\n setToCommitCrime(sleeveNumber: number, crimeType: CrimeType | `${CrimeType}`): boolean;\\n\\n /**\\n * Set a sleeve to work for a faction.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve started working for a faction.\\n *\\n * @param sleeveNumber - Index of the sleeve to work for the faction.\\n * @param factionName - Name of the faction to work for.\\n * @param factionWorkType - Name of the action to perform for this faction.\\n * @returns True if the sleeve started working for this faction, false otherwise. Can also throw on errors.\\n */\\n setToFactionWork(\\n sleeveNumber: number,\\n factionName: string,\\n factionWorkType: FactionWorkType | `${FactionWorkType}`,\\n ): boolean | undefined;\\n\\n /**\\n * Set a sleeve to work for a company.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve started working for a company.\\n *\\n * @param sleeveNumber - Index of the sleeve to work for the company.\\n * @param companyName - Name of the company to work for.\\n * @returns True if the sleeve started working for this company, false otherwise.\\n */\\n setToCompanyWork(sleeveNumber: number, companyName: CompanyName | `${CompanyName}`): boolean;\\n\\n /**\\n * Set a sleeve to take a class at a university.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not this action was set successfully.\\n *\\n * @param sleeveNumber - Index of the sleeve to start taking class.\\n * @param university - Name of the university to attend.\\n * @param className - Name of the class to follow.\\n * @returns True if this action was set successfully, false otherwise.\\n */\\n setToUniversityCourse(sleeveNumber: number, university: string, className: string): boolean;\\n\\n /**\\n * Set a sleeve to workout at the gym.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve started working out.\\n *\\n * @param sleeveNumber - Index of the sleeve to workout at the gym.\\n * @param gymName - Name of the gym.\\n * @param stat - Name of the stat to train.\\n * @returns True if the sleeve started working out, false otherwise.\\n */\\n setToGymWorkout(sleeveNumber: number, gymName: string, stat: string): boolean;\\n\\n /**\\n * Make a sleeve travel to another city.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve reached destination.\\n *\\n * @param sleeveNumber - Index of the sleeve to travel.\\n * @param city - Name of the destination city.\\n * @returns True if the sleeve reached destination, false otherwise.\\n */\\n travel(sleeveNumber: number, city: CityName | `${CityName}`): boolean;\\n\\n /**\\n * Get augmentations installed on a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a list of augmentation names that this sleeve has installed.\\n *\\n * @param sleeveNumber - Index of the sleeve to retrieve augmentations from.\\n * @returns List of augmentation names that this sleeve has installed.\\n */\\n getSleeveAugmentations(sleeveNumber: number): string[];\\n\\n /**\\n * Get price of an augmentation.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Price of the augmentation.\\n */\\n getSleeveAugmentationPrice(augName: string): number;\\n\\n /**\\n * Get reputation requirement of an augmentation.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n *\\n * @param augName - Name of Augmentation.\\n * @returns Reputation requirement of the augmentation.\\n */\\n getSleeveAugmentationRepReq(augName: string): number;\\n\\n /**\\n * List purchasable augs for a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a list of augmentations that the player can buy for this sleeve.\\n *\\n * @param sleeveNumber - Index of the sleeve to retrieve purchasable augmentations from.\\n * @returns List of augmentations that the player can buy for this sleeve.\\n */\\n getSleevePurchasableAugs(sleeveNumber: number): AugmentPair[];\\n\\n /**\\n * Purchase an aug for a sleeve.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return true if the aug was purchased and installed on the sleeve.\\n *\\n * @param sleeveNumber - Index of the sleeve to buy an aug for.\\n * @param augName - Name of the aug to buy. Must be an exact match.\\n * @returns True if the aug was purchased and installed on the sleeve, false otherwise.\\n */\\n purchaseSleeveAug(sleeveNumber: number, augName: string): boolean;\\n\\n /**\\n * Set a sleeve to perform Bladeburner actions.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Return a boolean indicating whether or not the sleeve started a Bladeburner action.\\n *\\n * @param sleeveNumber - Index of the sleeve to perform a Bladeburner action.\\n * @param action - Name of the action to be performed.\\n * @param contract - Name of the contract if applicable.\\n * @returns True if the sleeve started the given Bladeburner action, false otherwise.\\n */\\n setToBladeburnerAction(sleeveNumber: number, action: string, contract?: string): boolean;\\n}\\n\\n/**\\n * Grafting API\\n * @remarks\\n * This API requires Source-File 10 to use.\\n * @public\\n */\\nexport interface Grafting {\\n /**\\n * Retrieve the grafting cost of an aug.\\n * @remarks\\n * RAM cost: 3.75 GB\\n *\\n * @param augName - Name of the aug to check the price of. Must be an exact match.\\n * @returns The cost required to graft the named augmentation.\\n * @throws Will error if an invalid Augmentation name is provided.\\n */\\n getAugmentationGraftPrice(augName: string): number;\\n\\n /**\\n * Retrieves the time required to graft an aug.\\n * @remarks\\n * RAM cost: 3.75 GB\\n *\\n * @param augName - Name of the aug to check the grafting time of. Must be an exact match.\\n * @returns The time required, in millis, to graft the named augmentation.\\n * @throws Will error if an invalid Augmentation name is provided.\\n */\\n getAugmentationGraftTime(augName: string): number;\\n\\n /**\\n * Retrieves a list of Augmentations that can be grafted.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * Note that this function returns a list of currently graftable Augmentations,\\n * based off of the Augmentations that you already own.\\n *\\n * @returns An array of graftable Augmentations.\\n */\\n getGraftableAugmentations(): string[];\\n\\n /**\\n * Begins grafting the named aug. You must be in New Tokyo to use this.\\n * @remarks\\n * RAM cost: 7.5 GB\\n *\\n * @param augName - The name of the aug to begin grafting. Must be an exact match.\\n * @param focus - Acquire player focus on this Augmentation grafting. Optional. Defaults to true.\\n * @returns True if the aug successfully began grafting, false otherwise (e.g. not enough money, or\\n * invalid Augmentation name provided).\\n * @throws Will error if called while you are not in New Tokyo.\\n */\\n graftAugmentation(augName: string, focus?: boolean): boolean;\\n}\\n\\n/**\\n * Skills formulas\\n * @public\\n */\\ninterface SkillsFormulas {\\n /**\\n * Calculate skill level.\\n * @param exp - experience for that skill\\n * @param skillMult - Multiplier for that skill, defaults to 1.\\n * @returns The calculated skill level.\\n */\\n calculateSkill(exp: number, skillMult?: number): number;\\n /**\\n * Calculate exp for skill level.\\n * @param skill - target skill level\\n * @param skillMult - Multiplier for that skill, defaults to 1.\\n * @returns The calculated exp required.\\n */\\n calculateExp(skill: number, skillMult?: number): number;\\n}\\n\\n/** @public */\\ninterface WorkStats {\\n money: number;\\n reputation: number;\\n hackExp: number;\\n strExp: number;\\n defExp: number;\\n dexExp: number;\\n agiExp: number;\\n chaExp: number;\\n intExp: number;\\n}\\n\\n/**\\n * Work formulas\\n * @public\\n */\\ninterface WorkFormulas {\\n crimeSuccessChance(person: Person, crimeType: CrimeType | `${CrimeType}`): number;\\n /** @returns The WorkStats gained when completing one instance of the specified crime. */\\n crimeGains(person: Person, crimeType: CrimeType | `${CrimeType}`): WorkStats;\\n /** @returns The WorkStats applied every game cycle (200ms) by taking the specified gym class. */\\n gymGains(person: Person, gymType: GymType | `${GymType}`, locationName: string): WorkStats;\\n /** @returns The WorkStats applied every game cycle (200ms) by taking the specified university class. */\\n universityGains(\\n person: Person,\\n classType: UniversityClassType | `${UniversityClassType}`,\\n locationName: string,\\n ): WorkStats;\\n /** @returns The WorkStats applied every game cycle (200ms) by performing the specified faction work. */\\n factionGains(person: Person, workType: FactionWorkType | `${FactionWorkType}`, favor: number): WorkStats;\\n /** @returns The WorkStats applied every game cycle (200ms) by performing the specified company work. */\\n companyGains(\\n person: Person,\\n companyName: CompanyName | `${CompanyName}`,\\n workType: JobName | `${JobName}`,\\n favor: number,\\n ): WorkStats;\\n}\\n\\n/**\\n * Reputation formulas\\n * @public\\n */\\ninterface ReputationFormulas {\\n /**\\n * Calculate the total required amount of faction reputation to reach a target favor.\\n * @param favor - target faction favor.\\n * @returns The calculated faction reputation required.\\n */\\n calculateFavorToRep(favor: number): number;\\n /**\\n * Calculate the resulting faction favor of a total amount of reputation.\\n * (Faction favor is gained whenever you install an Augmentation.)\\n * @param rep - amount of reputation.\\n * @returns The calculated faction favor.\\n */\\n calculateRepToFavor(rep: number): number;\\n\\n /**\\n * Calculate how much rep would be gained.\\n * @param amount - Amount of money donated\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n */\\n repFromDonation(amount: number, player: Person): number;\\n}\\n\\n/**\\n * Hacking formulas\\n * @public\\n */\\ninterface HackingFormulas {\\n /**\\n * Calculate hack chance.\\n * (Ex: 0.25 would indicate a 25% chance of success.)\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated hack chance.\\n */\\n hackChance(server: Server, player: Person): number;\\n /**\\n * Calculate hack exp for one thread.\\n * @remarks\\n * Multiply by thread to get total exp\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated hack exp.\\n */\\n hackExp(server: Server, player: Person): number;\\n /**\\n * Calculate hack percent for one thread.\\n * (Ex: 0.25 would steal 25% of the server's current value.)\\n * @remarks\\n * Multiply by thread to get total percent hacked.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated hack percent.\\n */\\n hackPercent(server: Server, player: Person): number;\\n /**\\n * Calculate the percent a server would grow to.\\n * Not exact due to limitations of mathematics.\\n * (Ex: 3.0 would would grow the server to 300% of its current value.)\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param threads - Amount of thread.\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @param cores - Number of cores on the computer that will execute grow.\\n * @returns The calculated grow percent.\\n */\\n growPercent(server: Server, threads: number, player: Person, cores?: number): number;\\n /**\\n * Calculate how many threads it will take to grow server to targetMoney. Starting money is server.moneyAvailable.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @param targetMoney - Desired final money, capped to server's moneyMax\\n * @param cores - Number of cores on the computer that will execute grow.\\n * @returns The calculated grow threads as an integer, rounded up.\\n */\\n growThreads(server: Server, player: Person, targetMoney: number, cores?: number): number;\\n /**\\n * Calculate hack time.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated hack time.\\n */\\n hackTime(server: Server, player: Person): number;\\n /**\\n * Calculate grow time.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated grow time.\\n */\\n growTime(server: Server, player: Person): number;\\n /**\\n * Calculate weaken time.\\n * @param server - Server info, typically from {@link NS.getServer | getServer}\\n * @param player - Player info, typically from {@link NS.getPlayer | getPlayer}\\n * @returns The calculated weaken time.\\n */\\n weakenTime(server: Server, player: Person): number;\\n}\\n\\n/**\\n * Hacknet Node formulas\\n * @public\\n */\\ninterface HacknetNodesFormulas {\\n /**\\n * Calculate money gain rate.\\n * @param level - level of the node.\\n * @param ram - ram of the node.\\n * @param cores - cores of the node.\\n * @param mult - player production mult (default to 1)\\n * @returns The calculated money gain rate.\\n */\\n moneyGainRate(level: number, ram: number, cores: number, mult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet node level.\\n * @param startingLevel - starting level\\n * @param extraLevels - amount of level to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet node ram.\\n * @param startingRam - starting ram\\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet node cores.\\n * @param startingCore - starting cores\\n * @param extraCores - amount of cores to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\\n /**\\n * Calculate the cost of a hacknet node.\\n * @param n - number of the hacknet node\\n * @param mult - player cost reduction (defaults to 1)\\n * @returns The calculated cost.\\n */\\n hacknetNodeCost(n: number, mult: number): number;\\n /**\\n * All constants used by the game.\\n * @returns An object with all hacknet node constants used by the game.\\n */\\n constants(): HacknetNodeConstants;\\n}\\n\\n/**\\n * Hacknet Server formulas\\n * @public\\n */\\ninterface HacknetServersFormulas {\\n /**\\n * Calculate hash gain rate.\\n * @param level - level of the server.\\n * @param ramUsed - ramUsed of the server.\\n * @param maxRam - maxRam of the server.\\n * @param cores - cores of the server.\\n * @param mult - player production mult (default to 1)\\n * @returns The calculated hash gain rate.\\n */\\n hashGainRate(level: number, ramUsed: number, maxRam: number, cores: number, mult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet server level.\\n * @param startingLevel - starting level\\n * @param extraLevels - amount of level to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet server ram.\\n * @param startingRam - starting ram\\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet server cores.\\n * @param startingCore - starting cores\\n * @param extraCores - amount of cores to purchase (defaults to 1)\\n * @param costMult - player cost reduction (default to 1)\\n * @returns The calculated cost.\\n */\\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\\n /**\\n * Calculate cost of upgrading hacknet server cache.\\n * @param startingCache - starting cache level\\n * @param extraCache - amount of levels of cache to purchase (defaults to 1)\\n * @returns The calculated cost.\\n */\\n cacheUpgradeCost(startingCache: number, extraCache?: number): number;\\n /**\\n * Calculate hash cost of an upgrade.\\n * @param upgName - name of the upgrade\\n * @param level - level of the upgrade\\n * @returns The calculated hash cost.\\n */\\n hashUpgradeCost(upgName: number, level: number): number;\\n /**\\n * Calculate the cost of a hacknet server.\\n * @param n - number of the hacknet server\\n * @param mult - player cost reduction (defaults to 1)\\n * @returns The calculated cost.\\n */\\n hacknetServerCost(n: number, mult?: number): number;\\n /**\\n * All constants used by the game.\\n * @returns An object with all hacknet server constants used by the game.\\n */\\n constants(): HacknetServerConstants;\\n}\\n\\n/**\\n * Gang formulas\\n * @public\\n */\\ninterface GangFormulas {\\n /**\\n * Calculate the wanted penalty.\\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\\n * @returns The calculated wanted penalty.\\n */\\n wantedPenalty(gang: GangGenInfo): number;\\n /**\\n * Calculate respect gain per tick.\\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\\n * @param member - Gang info from {@link Gang.getMemberInformation | getMemberInformation}\\n * @param task - Gang info from {@link Gang.getTaskStats | getTaskStats}\\n * @returns The calculated respect gain.\\n */\\n respectGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\\n /**\\n * Calculate wanted gain per tick.\\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\\n * @returns The calculated wanted gain.\\n */\\n wantedLevelGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\\n /**\\n * Calculate money gain per tick.\\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\\n * @returns The calculated money gain.\\n */\\n moneyGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\\n\\n /**\\n * Calculate ascension point gain.\\n * @param exp - Experience point before ascension.\\n * @returns The calculated ascension point gain.\\n */\\n ascensionPointsGain(exp: number): number;\\n\\n /**\\n * Calculate ascension mult.\\n * @param points - Amount of ascension points.\\n * @returns The calculated ascension mult.\\n */\\n ascensionMultiplier(points: number): number;\\n}\\n\\n/**\\n * Formulas API\\n * @remarks\\n * You need Formulas.exe on your home computer to use this API.\\n * @public\\n */\\nexport interface Formulas {\\n mockServer(): Server;\\n mockPlayer(): Player;\\n mockPerson(): Person;\\n /** Reputation formulas */\\n reputation: ReputationFormulas;\\n /** Skills formulas */\\n skills: SkillsFormulas;\\n /** Hacking formulas */\\n hacking: HackingFormulas;\\n /** Hacknet Nodes formulas */\\n hacknetNodes: HacknetNodesFormulas;\\n /** Hacknet Servers formulas */\\n hacknetServers: HacknetServersFormulas;\\n /** Gang formulas */\\n gang: GangFormulas;\\n /** Work formulas */\\n work: WorkFormulas;\\n}\\n\\n/** @public */\\ninterface Fragment {\\n id: number;\\n shape: boolean[][];\\n type: number;\\n power: number;\\n limit: number;\\n}\\n\\n/** @public */\\ninterface ActiveFragment {\\n id: number;\\n highestCharge: number;\\n numCharge: number;\\n rotation: number;\\n x: number;\\n y: number;\\n}\\n\\n/**\\n * Stanek's Gift API.\\n * @public\\n */\\ninterface Stanek {\\n /**\\n * Stanek's Gift width.\\n * @remarks\\n * RAM cost: 0.4 GB\\n * @returns The width of the gift.\\n */\\n giftWidth(): number;\\n /**\\n * Stanek's Gift height.\\n * @remarks\\n * RAM cost: 0.4 GB\\n * @returns The height of the gift.\\n */\\n giftHeight(): number;\\n\\n /**\\n * Charge a fragment, increasing its power.\\n * @remarks\\n * RAM cost: 0.4 GB\\n * @param rootX - rootX Root X against which to align the top left of the fragment.\\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\\n * @returns Promise that lasts until the charge action is over.\\n */\\n chargeFragment(rootX: number, rootY: number): Promise;\\n\\n /**\\n * List possible fragments.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns List of possible fragments.\\n */\\n fragmentDefinitions(): Fragment[];\\n\\n /**\\n * List of fragments in Stanek's Gift.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * @returns List of active fragments placed on Stanek's Gift.\\n */\\n activeFragments(): ActiveFragment[];\\n\\n /**\\n * Clear the board of all fragments.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n clearGift(): void;\\n\\n /**\\n * Check if fragment can be placed at specified location.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * @param rootX - rootX Root X against which to align the top left of the fragment.\\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\\n * @param rotation - rotation A number from 0 to 3, the mount of 90 degree turn to take.\\n * @param fragmentId - fragmentId ID of the fragment to place.\\n * @returns true if the fragment can be placed at that position. false otherwise.\\n */\\n canPlaceFragment(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\\n /**\\n * Place fragment on Stanek's Gift.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * @param rootX - X against which to align the top left of the fragment.\\n * @param rootY - Y against which to align the top left of the fragment.\\n * @param rotation - A number from 0 to 3, the mount of 90 degree turn to take.\\n * @param fragmentId - ID of the fragment to place.\\n * @returns true if the fragment can be placed at that position. false otherwise.\\n */\\n placeFragment(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\\n /**\\n * Get placed fragment at location.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * @param rootX - X against which to align the top left of the fragment.\\n * @param rootY - Y against which to align the top left of the fragment.\\n * @returns The fragment at [rootX, rootY], if any.\\n */\\n getFragment(rootX: number, rootY: number): ActiveFragment | undefined;\\n\\n /**\\n * Remove fragment at location.\\n * @remarks\\n * RAM cost: 0.15 GB\\n *\\n * @param rootX - X against which to align the top left of the fragment.\\n * @param rootY - Y against which to align the top left of the fragment.\\n * @returns The fragment at [rootX, rootY], if any.\\n */\\n removeFragment(rootX: number, rootY: number): boolean;\\n\\n /**\\n * Accept Stanek's Gift by joining the Church of the Machine God\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * @returns true if the player is a member of the church and has the gift installed,\\n * false otherwise.\\n */\\n acceptGift(): boolean;\\n}\\n\\n/** @public */\\ninterface InfiltrationReward {\\n tradeRep: number;\\n sellCash: number;\\n SoARep: number;\\n}\\n\\n/** @public */\\ninterface ILocation {\\n city: CityName;\\n name: LocationName;\\n}\\n\\n/** @public */\\ninterface InfiltrationLocation {\\n location: ILocation;\\n reward: InfiltrationReward;\\n difficulty: number;\\n}\\n\\n/**\\n * Infiltration API.\\n * @public\\n */\\ninterface Infiltration {\\n /**\\n * Get all locations that can be infiltrated.\\n * @remarks\\n * RAM cost: 5 GB\\n *\\n * @returns all locations that can be infiltrated.\\n */\\n getPossibleLocations(): ILocation[];\\n /**\\n * Get all infiltrations with difficulty, location and rewards.\\n * @remarks\\n * RAM cost: 15 GB\\n *\\n * @returns Infiltration data for given location.\\n */\\n getInfiltration(location: string): InfiltrationLocation;\\n}\\n\\n/**\\n * User Interface API.\\n * @public\\n */\\ninterface UserInterface {\\n /**\\n * Get the current window size\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns An array of 2 value containing the window width and height.\\n */\\n windowSize(): [number, number];\\n\\n /**\\n * Get the current theme\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns An object containing the theme's colors\\n */\\n getTheme(): UserInterfaceTheme;\\n\\n /**\\n * Sets the current theme\\n * @remarks\\n * RAM cost: 0 GB\\n * @example\\n * Usage example (NS2)\\n * ```ts\\n * const theme = ns.ui.getTheme();\\n * theme.primary = '#ff5500';\\n * ns.ui.setTheme(theme);\\n * ```\\n */\\n setTheme(newTheme: UserInterfaceTheme): void;\\n\\n /**\\n * Resets the player's theme to the default values\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n resetTheme(): void;\\n\\n /**\\n * Get the current styles\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @returns An object containing the player's styles\\n */\\n getStyles(): IStyleSettings;\\n\\n /**\\n * Sets the current styles\\n * @remarks\\n * RAM cost: 0 GB\\n * @example\\n * Usage example (NS2)\\n * ```ts\\n * const styles = ns.ui.getStyles();\\n * styles.fontFamily = 'Comic Sans Ms';\\n * ns.ui.setStyles(styles);\\n * ```\\n */\\n setStyles(newStyles: IStyleSettings): void;\\n\\n /**\\n * Resets the player's styles to the default values\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n resetStyles(): void;\\n\\n /**\\n * Gets the current game information (version, commit, ...)\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n getGameInfo(): GameInfo;\\n\\n /**\\n * Clear the Terminal window, as if the player ran `clear` in the terminal\\n * @remarks\\n * RAM cost: 0.2 GB\\n */\\n clearTerminal(): void;\\n}\\n\\n/**\\n * Collection of all functions passed to scripts\\n * @public\\n * @remarks\\n * Basic usage example:\\n * ```js\\n * export async function main(ns) {\\n * // Basic ns functions can be accessed on the ns object\\n * ns.getHostname();\\n * // Some related functions are gathered under a sub-property of the ns object\\n * ns.stock.getPrice();\\n * // Most functions that return a promise need to be awaited.\\n * await ns.hack('n00dles');\\n * }\\n * ```\\n */\\nexport interface NS {\\n /**\\n * Namespace for hacknet functions. Some of this API contains spoilers.\\n * @remarks RAM cost: 4 GB.\\n */\\n readonly hacknet: Hacknet;\\n\\n /**\\n * Namespace for bladeburner functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly bladeburner: Bladeburner;\\n\\n /**\\n * Namespace for codingcontract functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly codingcontract: CodingContract;\\n\\n /**\\n * Namespace for gang functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly gang: Gang;\\n\\n /**\\n * Namespace for sleeve functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly sleeve: Sleeve;\\n\\n /**\\n * Namespace for stock functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly stock: TIX;\\n\\n /**\\n * Namespace for formulas functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly formulas: Formulas;\\n\\n /**\\n * Namespace for stanek functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly stanek: Stanek;\\n\\n /**\\n * Namespace for infiltration functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly infiltration: Infiltration;\\n\\n /**\\n * Namespace for corporation functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly corporation: Corporation;\\n\\n /**\\n * Namespace for user interface functions.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly ui: UserInterface;\\n\\n /**\\n * Namespace for singularity functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly singularity: Singularity;\\n\\n /**\\n * Namespace for grafting functions. Contains spoilers.\\n * @remarks RAM cost: 0 GB\\n */\\n readonly grafting: Grafting;\\n\\n /**\\n * Arguments passed into the script.\\n *\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Arguments passed into a script can be accessed as a normal array by using the `[]` operator\\n * (`args[0]`, `args[1]`, etc...).\\n * Arguments can be string, number, or boolean.\\n * Use `args.length` to get the number of arguments that were passed into a script.\\n *\\n * @example\\n * `run example.js 7 text true`\\n *\\n * ```js\\n * // example.js\\n * export async function main(ns) {\\n * ns.tprint(ns.args.length) // 3\\n * ns.tprint(ns.args[0]); // 7 (number)\\n * ns.tprint(ns.args[1]); // \\\"text\\\" (string)\\n * ns.tprint(ns.args[2]); // true (boolean)\\n * ns.tprint(ns.args[3]); // undefined, because only 3 arguments were provided\\n * }\\n * ```\\n */\\n readonly args: (string | number | boolean)[];\\n\\n /** The current script's PID */\\n readonly pid: number;\\n\\n /**\\n * Steal a server's money.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Function that is used to try and hack servers to steal money and gain hacking experience.\\n * The runtime for this command depends on your hacking level and the target server’s\\n * security level when this function is called. In order to hack a server you must first gain root access to that server\\n * and also have the required hacking level.\\n *\\n * A script can hack a server from anywhere. It does not need to be running on the same\\n * server to hack that server. For example, you can create a script that hacks the `foodnstuff`\\n * server and run that script on any server in the game.\\n *\\n * A successful `hack()` on a server will raise that server’s security level by 0.002.\\n *\\n * @example\\n * ```js\\n * let earnedMoney = await ns.hack(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server to hack.\\n * @param opts - Optional parameters for configuring function behavior.\\n * @returns A promise that resolves to the amount of money stolen (which is zero if the hack is unsuccessful).\\n */\\n hack(host: string, opts?: BasicHGWOptions): Promise;\\n\\n /**\\n * Spoof money in a server's bank account, increasing the amount available.\\n * @remarks\\n * RAM cost: 0.15 GB\\n *\\n * Use your hacking skills to increase the amount of money available on a server.\\n *\\n * Once the grow is complete, $1 is added to the server's available money for every script thread. This additive\\n * growth allows for rescuing a server even after it is emptied.\\n *\\n * After this addition, the thread count is also used to determine a multiplier, which the server's money is then\\n * multiplied by.\\n *\\n * The multiplier scales exponentially with thread count, and its base depends on the server's security\\n * level and in inherent \\\"growth\\\" statistic that varies between different servers.\\n *\\n * {@link NS.getServerGrowth | getServerGrowth} can be used to check the inherent growth statistic of a server.\\n *\\n * {@link NS.growthAnalyze | growthAnalyze} can be used to determine the number of threads needed for a specified\\n * multiplicative portion of server growth.\\n *\\n * To determine the effect of a single grow, obtain access to the Formulas API and use\\n * {@link HackingFormulas.growPercent | formulas.hacking.growPercent}, or invert {@link NS.growthAnalyze | growthAnalyze}.\\n *\\n * Like {@link NS.hack | hack}, `grow` can be called on any hackable server, regardless of where the script is\\n * running. Hackable servers are any servers not owned by the player.\\n *\\n * The grow() command requires root access to the target server, but there is no required hacking\\n * level to run the command. It also raises the security level of the target server based on the number of threads.\\n * The security increase can be determined using {@link NS.growthAnalyzeSecurity | growthAnalyzeSecurity}.\\n *\\n * @example\\n * ```js\\n * let currentMoney = ns.getServerMoneyAvailable(\\\"n00dles\\\");\\n * currentMoney *= await ns.grow(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server to grow.\\n * @param opts - Optional parameters for configuring function behavior.\\n * @returns The total effective multiplier that was applied to the server's money (after both additive and multiplicative growth).\\n */\\n grow(host: string, opts?: BasicHGWOptions): Promise;\\n\\n /**\\n * Reduce a server's security level.\\n * @remarks\\n * RAM cost: 0.15 GB\\n *\\n * Use your hacking skills to attack a server’s security, lowering the server’s security level.\\n * The runtime for this function depends on your hacking level and the target server’s security\\n * level when this function is called. This function lowers the security level of the target server by 0.05.\\n *\\n * Like {@link NS.hack | hack} and {@link NS.grow| grow}, `weaken` can be called on any server, regardless of\\n * where the script is running. This function requires root access to the target server, but\\n * there is no required hacking level to run the function.\\n *\\n * @example\\n * ```js\\n * let currentSecurity = ns.getServerSecurityLevel(\\\"foodnstuff\\\");\\n * currentSecurity -= await ns.weaken(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server to weaken.\\n * @param opts - Optional parameters for configuring function behavior.\\n * @returns A promise that resolves to the value by which security was reduced.\\n */\\n weaken(host: string, opts?: BasicHGWOptions): Promise;\\n\\n /**\\n * Predict the effect of weaken.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the security decrease that would occur if a weaken with this many threads happened.\\n *\\n * @param threads - Amount of threads that will be used.\\n * @param cores - Optional. The number of cores of the server that would run weaken.\\n * @returns The security decrease.\\n */\\n weakenAnalyze(threads: number, cores?: number): number;\\n\\n /**\\n * Calculate the decimal number of threads needed to hack a specified amount of money from a target host.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * This function returns the decimal number of script threads you need when running the hack command\\n * to steal the specified amount of money from the target server.\\n * If hackAmount is less than zero or greater than the amount of money available on the server,\\n * then this function returns -1.\\n *\\n *\\n * @example\\n * ```ts\\n * // Calculate threadcount of a single hack that would take $100k from n00dles\\n * const hackThreads = hackAnalyzeThreads(\\\"n00dles\\\", 1e5);\\n *\\n * // Launching a script requires an integer thread count. The below would take less than the targeted $100k.\\n * ns.run(\\\"noodleHack.js\\\", Math.floor(hackThreads))\\n *\\n * ```\\n * @param host - Hostname of the target server to analyze.\\n * @param hackAmount - Amount of money you want to hack from the server.\\n * @returns The number of threads needed to hack the server for hackAmount money.\\n */\\n hackAnalyzeThreads(host: string, hackAmount: number): number;\\n\\n /**\\n * Get the part of money stolen with a single thread.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the part of the specified server’s money you will steal with a single thread hack.\\n *\\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.hackPercent | formulas.hacking.hackPercent}.\\n *\\n * @example\\n * ```js\\n * //For example, assume the following returns 0.01:\\n * const hackAmount = ns.hackAnalyze(\\\"foodnstuff\\\");\\n * //This means that if hack the foodnstuff server using a single thread, then you will steal 1%, or 0.01 of its total money. If you hack using N threads, then you will steal N*0.01 times its total money.\\n * ```\\n * @param host - Hostname of the target server.\\n * @returns The part of money you will steal from the target server with a single thread hack.\\n */\\n hackAnalyze(host: string): number;\\n\\n /**\\n * Get the security increase for a number of threads.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the security increase that would occur if a hack with this many threads happened.\\n *\\n * @param threads - Amount of threads that will be used.\\n * @param hostname - Hostname of the target server. The number of threads is limited to the number needed to hack the server's maximum amount of money.\\n * @returns The security increase.\\n */\\n hackAnalyzeSecurity(threads: number, hostname?: string): number;\\n\\n /**\\n * Get the chance of successfully hacking a server.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the chance you have of successfully hacking the specified server.\\n *\\n * This returned value is in decimal form, not percentage.\\n *\\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.hackChance | formulas.hacking.hackChance}.\\n *\\n * @param host - Hostname of the target server.\\n * @returns The chance you have of successfully hacking the target server.\\n */\\n hackAnalyzeChance(host: string): number;\\n\\n /**\\n * Calculate the number of grow threads needed for a given multiplicative growth factor.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * This function returns the total decimal number of {@link NS.grow | grow} threads needed in order to multiply the\\n * money available on the specified server by a given multiplier, if all threads are executed at the server's current\\n * security level, regardless of how many threads are assigned to each call.\\n *\\n * Note that there is also an additive factor that is applied before the multiplier. Each {@link NS.grow | grow} call\\n * will add $1 to the host's money for each thread before applying the multiplier for its thread count. This means\\n * that at extremely low starting money, fewer threads would be needed to apply the same effective multiplier than\\n * what is calculated by growthAnalyze.\\n *\\n * Like other basic hacking analysis functions, this calculation uses the current status of the player and server.\\n * To calculate using hypothetical server or player status, obtain access to the Formulas API and use {@link HackingFormulas.growThreads | formulas.hacking.growThreads}.\\n *\\n * @example\\n * ```js\\n * // calculate number of grow threads to apply 2x growth multiplier on n00dles (does not include the additive growth).\\n * const growThreads = ns.growthAnalyze(\\\"n00dles\\\", 2);\\n *\\n * // When using the thread count to launch a script, it needs to be converted to an integer.\\n * ns.run(\\\"noodleGrow.js\\\", Math.ceil(growThreads));\\n * ```\\n * @param host - Hostname of the target server.\\n * @param multiplier - Multiplier that will be applied to a server's money after applying additive growth. Decimal form.\\n * @param cores - Number of cores on the host running the grow function. Optional, defaults to 1.\\n * @returns Decimal number of grow threads needed for the specified multiplicative growth factor (does not include additive growth).\\n */\\n growthAnalyze(host: string, multiplier: number, cores?: number): number;\\n\\n /**\\n * Calculate the security increase for a number of grow threads.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns the security increase that would occur if a grow with this many threads happened.\\n *\\n * @param threads - Amount of threads that will be used.\\n * @param hostname - Optional. Hostname of the target server. If provided, security increase is limited by the number of threads needed to reach maximum money.\\n * @param cores - Optional. The number of cores of the server that would run grow.\\n * @returns The security increase.\\n */\\n growthAnalyzeSecurity(threads: number, hostname?: string, cores?: number): number;\\n\\n /**\\n * Suspends the script for n milliseconds.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param millis - Number of milliseconds to sleep.\\n * @example\\n * ```js\\n * // This will count from 1 to 10 in your terminal, with one number every 5 seconds\\n * for (var i = 1; i <= 10; i++) {\\n * ns.tprint(i);\\n * await ns.sleep(5000);\\n * }\\n * ```\\n * @returns A promise that resolves to true when the sleep is completed.\\n */\\n sleep(millis: number): Promise;\\n\\n /**\\n * Suspends the script for n milliseconds. Doesn't block with concurrent calls.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param millis - Number of milliseconds to sleep.\\n * @returns A promise that resolves to true when the sleep is completed.\\n */\\n asleep(millis: number): Promise;\\n\\n /**\\n * Prints one or more values or variables to the script’s logs.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * If the argument is a string, you can color code your message by prefixing your\\n * string with one of these strings:\\n *\\n * - `\\\"ERROR\\\"`: The whole string will be printed in red. Use this prefix to indicate\\n * that an error has occurred.\\n *\\n * - `\\\"SUCCESS\\\"`: The whole string will be printed in green, similar to the default\\n * theme of the Terminal. Use this prefix to indicate that something is correct.\\n *\\n * - `\\\"WARN\\\"`: The whole string will be printed in yellow. Use this prefix to\\n * indicate that you or a user of your script should be careful of something.\\n *\\n * - `\\\"INFO\\\"`: The whole string will be printed in purplish blue. Use this prefix to\\n * remind yourself or a user of your script of something. Think of this prefix as\\n * indicating an FYI (for your information).\\n *\\n * For custom coloring, use ANSI escape sequences. The examples below use the Unicode\\n * escape code `\\\\u001b`. The color coding also works if `\\\\u001b` is replaced with\\n * the hexadecimal escape code `\\\\x1b`. The Bash escape code `\\\\e` is not supported.\\n * The octal escape code `\\\\033` is not allowed because the game runs JavaScript in\\n * strict mode.\\n *\\n * @example\\n * ```js\\n * // Default color coding.\\n * ns.print(\\\"ERROR means something's wrong.\\\");\\n * ns.print(\\\"SUCCESS means everything's OK.\\\");\\n * ns.print(\\\"WARN Tread with caution!\\\");\\n * ns.print(\\\"WARNING, warning, danger, danger!\\\");\\n * ns.print(\\\"WARNing! Here be dragons.\\\");\\n * ns.print(\\\"INFO for your I's only (FYI).\\\");\\n * ns.print(\\\"INFOrmation overload!\\\");\\n * // Custom color coding.\\n * const cyan = \\\"\\\\u001b[36m\\\";\\n * const green = \\\"\\\\u001b[32m\\\";\\n * const red = \\\"\\\\u001b[31m\\\";\\n * const reset = \\\"\\\\u001b[0m\\\";\\n * ns.print(`${red}Ugh! What a mess.${reset}`);\\n * ns.print(`${green}Well done!${reset}`);\\n * ns.print(`${cyan}ERROR Should this be in red?${reset}`);\\n * ns.tail();\\n * ```\\n *\\n * @param args - Value(s) to be printed.\\n */\\n print(...args: any[]): void;\\n\\n /** Prints a ReactNode to the script logs.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * See {@link ReactNode} type for the acceptable values.\\n *\\n * @param node - The react node to be printed. */\\n printRaw(node: ReactNode): void;\\n\\n /**\\n * Prints a formatted string to the script’s logs.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * - See {@link NS.print | print} for how to add color to your printed strings.\\n *\\n * - For more detail, see: https://github.com/alexei/sprintf.js\\n *\\n * @example\\n * ```js\\n * const name = \\\"Bit\\\";\\n * const age = 4;\\n * ns.printf(\\\"My name is %s.\\\", name);\\n * ns.printf(\\\"I'm %d seconds old.\\\", age);\\n * ns.printf(\\\"My age in binary is %b.\\\", age);\\n * ns.printf(\\\"My age in scientific notation is %e.\\\", age);\\n * ns.printf(\\\"In %d seconds, I'll be %s.\\\", 6, \\\"Byte\\\");\\n * ns.printf(\\\"Am I a nibble? %t\\\", (4 == age));\\n * ns.tail();\\n * ```\\n *\\n * @param format - Format of the message.\\n * @param args - Value(s) to be printed.\\n */\\n printf(format: string, ...args: any[]): void;\\n\\n /**\\n * Prints one or more values or variables to the Terminal.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * See {@link NS.print | print} for how to add color to your printed strings.\\n *\\n * @param args - Value(s) to be printed.\\n */\\n tprint(...args: any[]): void;\\n\\n /** Prints a ReactNode to the terminal.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * See {@link ReactNode} type for the acceptable values.\\n *\\n * @param node - The react node to be printed. */\\n tprintRaw(node: ReactNode): void;\\n\\n /**\\n * Prints a raw value or a variable to the Terminal.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * - See {@link NS.print | print} for how to add color to your printed strings.\\n *\\n * - See {@link NS.printf | printf} for examples on formatted strings.\\n *\\n * - For more detail, see: https://github.com/alexei/sprintf.js\\n *\\n * @param format - Format of the message.\\n * @param values - Value(s) to be printed.\\n */\\n tprintf(format: string, ...values: any[]): void;\\n\\n /**\\n * Clears the script’s logs.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n clearLog(): void;\\n\\n /**\\n * Disables logging for the given function.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Logging can be disabled for all functions by passing `ALL` as the argument.\\n *\\n * @param fn - Name of function for which to disable logging.\\n */\\n disableLog(fn: string): void;\\n\\n /**\\n * Enable logging for a certain function.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Re-enables logging for the given function. If `ALL` is passed into this\\n * function as an argument, then it will revert the effects of disableLog(`ALL`).\\n *\\n * @param fn - Name of function for which to enable logging.\\n */\\n enableLog(fn: string): void;\\n\\n /**\\n * Checks the status of the logging for the given function.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param fn - Name of function to check.\\n * @returns Returns a boolean indicating whether or not logging is enabled for that function (or `ALL`).\\n */\\n isLogEnabled(fn: string): boolean;\\n\\n /**\\n * Get all the logs of a script.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Returns a script’s logs. The logs are returned as an array, where each line is an element in the array.\\n * The most recently logged line is at the end of the array.\\n * Note that there is a maximum number of lines that a script stores in its logs. This is configurable in the game’s options.\\n * If the function is called with no arguments, it will return the current script’s logs.\\n *\\n * Otherwise, the PID or filename, hostname/ip, and args… arguments can be used to get logs from another script.\\n * Remember that scripts are uniquely identified by both their names and arguments.\\n *\\n * @example\\n * ```js\\n * //Get logs from foo.js on the current server that was run with no args\\n * ns.getScriptLogs(\\\"foo.js\\\");\\n *\\n * //Open logs from foo.js on the foodnstuff server that was run with no args\\n * ns.getScriptLogs(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * //Open logs from foo.js on the foodnstuff server that was run with the arguments [1, \\\"test\\\"]\\n * ns.getScriptLogs(\\\"foo.js\\\", \\\"foodnstuff\\\", 1, \\\"test\\\");\\n * ```\\n * @param fn - Optional. Filename or PID of script to get logs from.\\n * @param host - Optional. Hostname of the server that the script is on.\\n * @param args - Arguments to identify which scripts to get logs for.\\n * @returns Returns a string array, where each line is an element in the array. The most recently logged line is at the end of the array.\\n */\\n getScriptLogs(fn?: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): string[];\\n\\n /**\\n * Get an array of recently killed scripts across all servers.\\n * @remarks\\n * RAM cost: 0.2 GB\\n *\\n * The most recently killed script is the first element in the array.\\n * Note that there is a maximum number of recently killed scripts which are tracked.\\n * This is configurable in the game's options as `Recently killed scripts size`.\\n *\\n * @example\\n * ```ts\\n * let recentScripts = ns.getRecentScripts();\\n * let mostRecent = recentScripts.shift()\\n * if (mostRecent)\\n * ns.tprint(mostRecent.logs.join('\\\\n'))\\n * ```\\n *\\n * @returns Array with information about previously killed scripts.\\n */\\n getRecentScripts(): RecentScript[];\\n\\n /**\\n * Open the tail window of a script.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Opens a script’s logs. This is functionally the same as the tail Terminal command.\\n *\\n * If the function is called with no arguments, it will open the current script’s logs.\\n *\\n * Otherwise, the PID or filename, hostname/ip, and args… arguments can be used to get the logs from another script.\\n * Remember that scripts are uniquely identified by both their names and arguments.\\n *\\n * @example\\n * ```js\\n * //Open logs from foo.js on the current server that was run with no args\\n * ns.tail(\\\"foo.js\\\");\\n *\\n * //Get logs from foo.js on the foodnstuff server that was run with no args\\n * ns.tail(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * //Get logs from foo.js on the foodnstuff server that was run with the arguments [1, \\\"test\\\"]\\n * ns.tail(\\\"foo.js\\\", \\\"foodnstuff\\\", 1, \\\"test\\\");\\n * ```\\n * @param fn - Optional. Filename or PID of the script being tailed. If omitted, the current script is tailed.\\n * @param host - Optional. Hostname of the script being tailed. Defaults to the server this script is running on. If args are specified, this is not optional.\\n * @param args - Arguments for the script being tailed.\\n */\\n tail(fn?: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): void;\\n\\n /**\\n * Move a tail window.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Moves a tail window. Coordinates are in screenspace pixels (top left is 0,0).\\n *\\n * @param x - x coordinate.\\n * @param y - y coordinate.\\n * @param pid - Optional. PID of the script having its tail moved. If omitted, the current script is used.\\n */\\n moveTail(x: number, y: number, pid?: number): void;\\n\\n /**\\n * Resize a tail window.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Resize a tail window. Size are in pixel.\\n *\\n * @param width - Width of the window.\\n * @param height - Height of the window.\\n * @param pid - Optional. PID of the script having its tail resized. If omitted, the current script is used.\\n */\\n resizeTail(width: number, height: number, pid?: number): void;\\n\\n /**\\n * Close the tail window of a script.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Closes a script’s logs. This is functionally the same as pressing the \\\"Close\\\" button on the tail window.\\n *\\n * If the function is called with no arguments, it will close the current script’s logs.\\n *\\n * Otherwise, the pid argument can be used to close the logs from another script.\\n *\\n * @param pid - Optional. PID of the script having its tail closed. If omitted, the current script is used.\\n */\\n closeTail(pid?: number): void;\\n\\n /**\\n * Set the title of the tail window of a script.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This sets the title to the given string, and also forces an update of the\\n * tail window's contents.\\n *\\n * The title is saved across restarts, but only if it is a simple string.\\n *\\n * If the pid is unspecified, it will modify the current script’s logs.\\n *\\n * Otherwise, the pid argument can be used to change the logs from another script.\\n *\\n * It is possible to pass any React Node instead of a string.\\n * See {@link ReactElement} and {@link ReactNode} types for additional info.\\n *\\n * @param pid - Optional. PID of the script having its tail closed. If omitted, the current script is used.\\n */\\n setTitle(title: string | ReactNode, pid?: number): void;\\n\\n /**\\n * Get the list of servers connected to a server.\\n * @remarks\\n * RAM cost: 0.2 GB\\n *\\n * Returns an array containing the hostnames of all servers that are one\\n * node way from the specified target server. The hostnames in the returned\\n * array are strings.\\n *\\n * @example\\n * ```js\\n * // All servers that are one hop from the current server.\\n * ns.tprint(\\\"Neighbors of current server.\\\");\\n * let neighbor = ns.scan();\\n * for (let i = 0; i < neighbor.length; i++) {\\n * ns.tprint(neighbor[i]);\\n * }\\n * // All neighbors of n00dles.\\n * const target = \\\"n00dles\\\";\\n * neighbor = ns.scan(target);\\n * ns.tprintf(\\\"Neighbors of %s.\\\", target);\\n * for (let i = 0; i < neighbor.length; i++) {\\n * ns.tprint(neighbor[i]);\\n * }\\n * ```\\n *\\n * @param host - Optional. Hostname of the server to scan, default to current server.\\n * @returns Returns an array of hostnames.\\n */\\n scan(host?: string): string[];\\n\\n /** Returns whether the player has access to the darkweb.\\n * @remarks\\n * RAM cost: 0.05GB\\n *\\n * @example\\n * ```js\\n * if (ns.hasTorRouter()) ns.tprint(\\\"TOR router detected.\\\");\\n * ```\\n *\\n * @returns Whether player has access to the dark web. */\\n hasTorRouter(): boolean;\\n\\n /**\\n * Runs NUKE.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Running NUKE.exe on a target server gives you root access which means you can execute scripts on said server. NUKE.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.nuke(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n nuke(host: string): void;\\n\\n /**\\n * Runs BruteSSH.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the BruteSSH.exe program on the target server. BruteSSH.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.brutessh(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n brutessh(host: string): void;\\n\\n /**\\n * Runs FTPCrack.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the FTPCrack.exe program on the target server. FTPCrack.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.ftpcrack(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n ftpcrack(host: string): void;\\n\\n /**\\n * Runs relaySMTP.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the relaySMTP.exe program on the target server. relaySMTP.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.relaysmtp(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n relaysmtp(host: string): void;\\n\\n /**\\n * Runs HTTPWorm.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the HTTPWorm.exe program on the target server. HTTPWorm.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.httpworm(\\\"foodnstuff\\\");\\n * ```\\n * @param host - Hostname of the target server.\\n */\\n httpworm(host: string): void;\\n\\n /**\\n * Runs SQLInject.exe on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Runs the SQLInject.exe program on the target server. SQLInject.exe must exist on your home computer.\\n *\\n * @example\\n * ```js\\n * ns.sqlinject(\\\"foodnstuff\\\");\\n * ```\\n * @remarks RAM cost: 0.05 GB\\n * @param host - Hostname of the target server.\\n */\\n sqlinject(host: string): void;\\n\\n /**\\n * Start another script on the current server.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Run a script as a separate process. This function can only be used to run scripts located on the\\n * current server (the server running the script that calls this function). Requires a significant\\n * amount of RAM to run this command.\\n *\\n * The second argument is either a thread count, or a {@link RunOptions} object that can also\\n * specify the number of threads (among other things).\\n *\\n * If the script was successfully started, then this functions returns the PID of that script.\\n * Otherwise, it returns 0.\\n *\\n * PID stands for Process ID. The PID is a unique identifier for each script.\\n * The PID will always be a positive integer.\\n *\\n * Running this function with 0 or fewer threads will cause a runtime error.\\n *\\n * @example\\n * ```js\\n * //The simplest way to use the run command is to call it with just the script name. The following example will run ‘foo.js’ single-threaded with no arguments:\\n * ns.run(\\\"foo.js\\\");\\n *\\n * //The following example will run ‘foo.js’ but with 5 threads instead of single-threaded:\\n * ns.run(\\\"foo.js\\\", {threads: 5});\\n *\\n * //This next example will run ‘foo.js’ single-threaded, and will pass the string ‘foodnstuff’ into the script as an argument:\\n * ns.run(\\\"foo.js\\\", 1, 'foodnstuff');\\n * ```\\n * @param script - Filename of script to run.\\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the second argument threadOrOptions must be filled in with a value.\\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\\n */\\n run(script: string, threadOrOptions?: number | RunOptions, ...args: (string | number | boolean)[]): number;\\n\\n /**\\n * Start another script on any server.\\n * @remarks\\n * RAM cost: 1.3 GB\\n *\\n * Run a script as a separate process on a specified server. This is similar to the function {@link NS.run | run}\\n * except that it can be used to run a script that already exists on any server, instead of just the current server.\\n *\\n * If the script was successfully started, then this function returns the PID of that script.\\n * Otherwise, it returns 0.\\n *\\n * PID stands for Process ID. The PID is a unique identifier for each script.\\n * The PID will always be a positive integer.\\n *\\n * Running this function with 0 or fewer threads will cause a runtime error.\\n *\\n * @example\\n * ```js\\n * // The simplest way to use the exec command is to call it with just the script name\\n * // and the target server. The following example will try to run generic-hack.js\\n * // on the foodnstuff server.\\n * ns.exec(\\\"generic-hack.js\\\", \\\"foodnstuff\\\");\\n *\\n * // The following example will try to run the script generic-hack.js on the\\n * // joesguns server with 10 threads.\\n * ns.exec(\\\"generic-hack.js\\\", \\\"joesguns\\\", {threads: 10});\\n *\\n * // This last example will try to run the script foo.js on the foodnstuff server\\n * // with 5 threads. It will also pass the number 1 and the string “test” in as\\n * // arguments to the script.\\n * ns.exec(\\\"foo.js\\\", \\\"foodnstuff\\\", 5, 1, \\\"test\\\");\\n * ```\\n * @param script - Filename of script to execute. This file must already exist on the target server.\\n * @param hostname - Hostname of the `target server` on which to execute the script.\\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link RunOptions} object. Threads defaults to 1.\\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the third argument threadOrOptions must be filled in with a value.\\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\\n */\\n exec(\\n script: string,\\n hostname: string,\\n threadOrOptions?: number | RunOptions,\\n ...args: (string | number | boolean)[]\\n ): number;\\n\\n /**\\n * Terminate current script and start another in a defined number of milliseconds.\\n * @remarks\\n * RAM cost: 2 GB\\n *\\n * Terminates the current script, and then after a defined delay it will execute the\\n * newly-specified script. The purpose of this function is to execute a new script without being\\n * constrained by the RAM usage of the current one. This function can only be used to run scripts\\n * on the local server.\\n *\\n * Because this function immediately terminates the script, it does not have a return value.\\n *\\n * Running this function with 0 or fewer threads will cause a runtime error.\\n *\\n * @example\\n * ```js\\n * //The following example will execute the script ‘foo.js’ with 10 threads, in 500 milliseconds and the arguments ‘foodnstuff’ and 90:\\n * ns.spawn('foo.js', 10, 500, 'foodnstuff', 90);\\n * ```\\n * @param script - Filename of script to execute.\\n * @param threadOrOptions - Either an integer number of threads for new script, or a {@link SpawnOptions} object. Threads defaults to 1.\\n * @param args - Additional arguments to pass into the new script that is being run.\\n */\\n spawn(script: string, threadOrOptions?: number | SpawnOptions, ...args: (string | number | boolean)[]): void;\\n /**\\n * Terminate the script with the provided PID.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * Kills the script with the provided PID.\\n * To instead kill a script using its filename, hostname, and args, see {@link NS.(kill:2) | the other ns.kill entry}.\\n *\\n * @example\\n * ```js\\n * // kills the script with PID 20:\\n * ns.kill(20);\\n * ```\\n *\\n * @param pid - The PID of the script to kill.\\n * @returns True if the script is successfully killed, and false otherwise.\\n */\\n kill(pid: number): boolean;\\n\\n /**\\n * Terminate the script(s) with the provided filename, hostname, and script arguments.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * Kills the script(s) with the provided filename, running on the specified host with the specified args.\\n * To instead kill a script using its PID, see {@link NS.(kill:1) | the other ns.kill entry}.\\n *\\n * @example\\n * ```js\\n * // kill the script \\\"foo.js\\\" on the same server the current script is running from, with no arguments\\n * ns.kill(\\\"foo.js\\\");\\n *\\n * // kill the script \\\"foo.js\\\" on the \\\"n00dles\\\" server with no arguments.\\n * ns.kill(\\\"foo.js\\\", \\\"n00dles\\\");\\n *\\n * // kill the script foo.js on the current server that was ran with the arguments [1, “foodnstuff”, false]:\\n * ns.kill(\\\"foo.js\\\", ns.getHostname(), 1, \\\"foodnstuff\\\", false);\\n * ```\\n * @param filename - Filename of the script to kill.\\n * @param hostname - Hostname where the script to kill is running. Defaults to the current server.\\n * @param args - Arguments of the script to kill.\\n * @returns True if the scripts were successfully killed, and false otherwise.\\n */\\n kill(filename: string, hostname?: string, ...args: ScriptArg[]): boolean;\\n\\n /**\\n * Terminate all scripts on a server.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * Kills all running scripts on the specified server. This function returns true\\n * if any scripts were killed, and false otherwise. In other words, it will return\\n * true if there are any scripts running on the target server.\\n * If no host is defined, it will kill all scripts, where the script is running.\\n *\\n * @param host - IP or hostname of the server on which to kill all scripts.\\n * @param safetyguard - Skips the script that calls this function\\n * @returns True if any scripts were killed, and false otherwise.\\n */\\n killall(host?: string, safetyguard?: boolean): boolean;\\n\\n /**\\n * Terminates the current script immediately.\\n * @remarks\\n * RAM cost: 0 GB\\n */\\n exit(): never;\\n\\n /**\\n * Copy file between servers.\\n * @remarks\\n * RAM cost: 0.6 GB\\n *\\n * Copies a script or literature (.lit) file(s) to another server. The files argument can be either a string\\n * specifying a single file to copy, or an array of strings specifying multiple files to copy.\\n *\\n * @example\\n * ```js\\n * //Copies foo.lit from the helios server to the home computer:\\n * ns.scp(\\\"foo.lit\\\", \\\"home\\\", \\\"helios\\\" );\\n *\\n * //Tries to copy three files from rothman-uni to home computer:\\n * const files = [\\\"foo1.lit\\\", \\\"foo2.txt\\\", \\\"foo3.js\\\"];\\n * ns.scp(files, \\\"home\\\", \\\"rothman-uni\\\");\\n * ```\\n * @example\\n * ```js\\n * const server = ns.args[0];\\n * const files = [\\\"hack.js\\\", \\\"weaken.js\\\", \\\"grow.js\\\"];\\n * ns.scp(files, server, \\\"home\\\");\\n * ```\\n * @param files - Filename or an array of filenames of script/literature files to copy. Note that if a file is located in a subdirectory, the filename must include the leading `/`.\\n * @param destination - Hostname of the destination server, which is the server to which the file will be copied.\\n * @param source - Hostname of the source server, which is the server from which the file will be copied. This argument is optional and if it’s omitted the source will be the current server.\\n * @returns True if the file is successfully copied over and false otherwise. If the files argument is an array then this function will return false if any of the operations failed.\\n */\\n scp(files: string | string[], destination: string, source?: string): boolean;\\n\\n /**\\n * List files on a server.\\n * @remarks\\n * RAM cost: 0.2 GB\\n *\\n * Returns an array with the filenames of all files on the specified server\\n * (as strings). The returned array is sorted in alphabetic order.\\n *\\n * @param host - Hostname of the target server.\\n * @param substring - A substring to search for in the filename.\\n * @returns Array with the filenames of all files on the specified server.\\n */\\n ls(host: string, substring?: string): string[];\\n\\n /**\\n * List running scripts on a server.\\n * @remarks\\n * RAM cost: 0.2 GB\\n *\\n * Returns an array with general information about all scripts running on the specified target server.\\n *\\n * @example\\n * ```js\\n * const ps = ns.ps(\\\"home\\\");\\n * for (let script of ps) {\\n * ns.tprint(`${script.filename} ${script.threads}`);\\n * ns.tprint(script.args);\\n * }\\n * ```\\n * @param host - Host address of the target server. If not specified, it will be the current server’s IP by default.\\n * @returns Array with general information about all scripts running on the specified target server.\\n */\\n ps(host?: string): ProcessInfo[];\\n\\n /**\\n * Check if you have root access on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Returns a boolean indicating whether or not the player has root access to the specified target server.\\n *\\n * @example\\n * ```js\\n * if (!ns.hasRootAccess(\\\"foodnstuff\\\")) {\\n * ns.nuke(\\\"foodnstuff\\\");\\n * }\\n * ```\\n * @param host - Hostname of the target server.\\n * @returns True if player has root access to the specified target server, and false otherwise.\\n */\\n hasRootAccess(host: string): boolean;\\n\\n /**\\n * Returns a string with the hostname of the server that the script is running on.\\n *\\n * @remarks\\n * RAM cost: 0.05 GB\\n * @returns Hostname of the server that the script runs on.\\n */\\n getHostname(): string;\\n\\n /**\\n * Returns the player’s current hacking level.\\n *\\n * @remarks\\n * RAM cost: 0.05 GB\\n * @returns Player’s current hacking level\\n */\\n getHackingLevel(): number;\\n\\n /**\\n * Get hacking related multipliers.\\n * @remarks\\n * RAM cost: 0.25 GB\\n *\\n * Returns an object containing the Player’s hacking related multipliers.\\n * These multipliers are returned in fractional forms, not percentages\\n * (e.g. 1.5 instead of 150%).\\n *\\n * @example\\n * ```js\\n * const mults = ns.getHackingMultipliers();\\n * print(`chance: ${mults.chance}`);\\n * print(`growthL ${mults.growth}`);\\n * ```\\n * @returns Object containing the Player’s hacking related multipliers.\\n */\\n getHackingMultipliers(): HackingMultipliers;\\n\\n /**\\n * Get hacknet related multipliers.\\n * @remarks\\n * RAM cost: 0.25 GB\\n *\\n * Returns an object containing the Player’s hacknet related multipliers.\\n * These multipliers are returned in fractional forms, not percentages\\n * (e.g. 1.5 instead of 150%).\\n *\\n * @example\\n * ```js\\n * const mults = ns.getHacknetMultipliers();\\n * ns.tprint(`production: ${mults.production}`);\\n * ns.tprint(`purchaseCost: ${mults.purchaseCost}`);\\n * ```\\n * @returns Object containing the Player’s hacknet related multipliers.\\n */\\n getHacknetMultipliers(): HacknetMultipliers;\\n\\n /**\\n * Returns a server object for the given server. Defaults to the running script's server if host is not specified.\\n *\\n * @remarks\\n * RAM cost: 2 GB\\n * @param host - Optional. Hostname for the requested server object.\\n * @returns The requested server object.\\n */\\n getServer(host?: string): Server;\\n\\n /**\\n * Get money available on a server.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the amount of money available on a server.\\n * Running this function on the home computer will return the player’s money.\\n *\\n * @example\\n * ```js\\n * ns.getServerMoneyAvailable(\\\"foodnstuff\\\");\\n * ns.getServerMoneyAvailable(\\\"home\\\"); // Returns player's money\\n * ```\\n * @param host - Hostname of target server.\\n * @returns Amount of money available on the server.\\n */\\n getServerMoneyAvailable(host: string): number;\\n\\n /**\\n * Get the maximum money available on a server.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the maximum amount of money that can be available on a server.\\n *\\n * @param host - Hostname of target server.\\n * @returns Maximum amount of money available on the server.\\n */\\n getServerMaxMoney(host: string): number;\\n\\n /**\\n * Get a server growth parameter.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the server’s intrinsic “growth parameter”. This growth\\n * parameter is a number typically between 0 and 100 that represents\\n * how quickly the server’s money grows. This parameter affects the\\n * percentage by which the server’s money is increased when using the\\n * grow function. A higher growth parameter will result in a\\n * higher percentage increase from grow.\\n *\\n * @param host - Hostname of target server.\\n * @returns Parameter that affects the percentage by which the server’s money is increased when using the grow function.\\n */\\n getServerGrowth(host: string): number;\\n\\n /**\\n * Get server security level.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the security level of the target server. A server’s security\\n * level is denoted by a number, typically between 1 and 100\\n * (but it can go above 100).\\n *\\n * @param host - Hostname of target server.\\n * @returns Security level of the target server.\\n */\\n getServerSecurityLevel(host: string): number;\\n\\n /**\\n * Returns the minimum security level of the target server.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @param host - Hostname of target server.\\n * @returns Minimum security level of the target server.\\n */\\n getServerMinSecurityLevel(host: string): number;\\n\\n /**\\n * Get the base security level of a server.\\n * @remarks\\n * RAM cost: 0.1 GB\\n * Returns the base security level of the target server.\\n * For the server's actual security level, use {@link NS.getServerSecurityLevel | ns.getServerSecurityLevel}.\\n *\\n * @param host - Host of target server.\\n * @returns Base security level of the target server.\\n */\\n getServerBaseSecurityLevel(host: string): number;\\n\\n /**\\n * Get the maximum amount of RAM on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * @param host - Hostname of the target server.\\n * @returns The maximum amount of RAM (GB) a server can have.\\n */\\n getServerMaxRam(host: string): number;\\n /**\\n * Get the used RAM on a server.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * @param host - Hostname of the target server.\\n * @returns The amount of used RAM (GB) on the specified server.\\n */\\n getServerUsedRam(host: string): number;\\n\\n /**\\n * Returns the required hacking level of the target server.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @param host - Hostname of target server.\\n * @returns The required hacking level of the target server.\\n */\\n getServerRequiredHackingLevel(host: string): number;\\n\\n /**\\n * Returns the number of open ports required to successfully run NUKE.exe on the specified server.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @param host - Hostname of target server.\\n * @returns The number of open ports required to successfully run NUKE.exe on the specified server.\\n */\\n getServerNumPortsRequired(host: string): number;\\n\\n /**\\n * Returns a boolean denoting whether or not the specified server exists.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @param host - Hostname of target server.\\n * @returns True if the specified server exists, and false otherwise.\\n */\\n serverExists(host: string): boolean;\\n\\n /**\\n * Check if a file exists.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns a boolean indicating whether the specified file exists on the target server.\\n * The filename for programs is case insensitive, other file types are case sensitive.\\n * For example, fileExists(“brutessh.exe”) will work fine, even though the actual program\\n * is named 'BruteSSH.exe'.\\n *\\n * @example\\n * ```js\\n * // The function call will return true if the script named foo.js exists on the foodnstuff server, and false otherwise.\\n * ns.fileExists(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * // The function call will return true if the current server contains the FTPCrack.exe program, and false otherwise.\\n * ns.fileExists(\\\"ftpcrack.exe\\\");\\n * ```\\n * @param filename - Filename of file to check.\\n * @param host - Host of target server. Optional, defaults to the server the script is running on.\\n * @returns True if specified file exists, and false otherwise.\\n */\\n fileExists(filename: string, host?: string): boolean;\\n\\n /**\\n * Check if a script is running.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns a boolean indicating whether the specified script is running on the target server.\\n * If you use a PID instead of a filename, the hostname and args parameters are unnecessary.\\n * If hostname is omitted while filename is used as the first parameter, hostname defaults to the server the calling script is running on.\\n * Remember that a script is semi-uniquely identified by both its name and its arguments.\\n * (You can run multiple copies of scripts with the same arguments, but for the purposes of\\n * functions like this that check based on filename, the filename plus arguments forms the key.)\\n *\\n * @example\\n * ```js\\n * //The function call will return true if there is a script named foo.js with no arguments running on the foodnstuff server, and false otherwise:\\n * ns.isRunning(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * //The function call will return true if there is a script named foo.js with no arguments running on the current server, and false otherwise:\\n * ns.isRunning(\\\"foo.js\\\", ns.getHostname());\\n *\\n * //The function call will return true if there is a script named foo.js running with the arguments 1, 5, and “test” (in that order) on the joesguns server, and false otherwise:\\n * ns.isRunning(\\\"foo.js\\\", \\\"joesguns\\\", 1, 5, \\\"test\\\");\\n * ```\\n * @param script - Filename or PID of script to check. This is case-sensitive.\\n * @param host - Hostname of target server. Optional, defaults to the server the calling script is running on.\\n * @param args - Arguments to specify/identify the script. Optional, when looking for scripts run without arguments.\\n * @returns True if the specified script is running on the target server, and false otherwise.\\n */\\n isRunning(script: FilenameOrPID, host?: string, ...args: (string | number | boolean)[]): boolean;\\n\\n /**\\n * Get general info about a running script.\\n * @remarks\\n * RAM cost: 0.3 GB\\n *\\n * Running with no args returns current script.\\n * If you use a PID as the first parameter, the hostname and args parameters are unnecessary.\\n * If hostname is omitted while filename is used as the first parameter, hostname defaults to the server the calling script is running on.\\n * Remember that a script is semi-uniquely identified by both its name and its arguments.\\n * (You can run multiple copies of scripts with the same arguments, but for the purposes of\\n * functions like this that check based on filename, the filename plus arguments forms the key.)\\n *\\n * @param filename - Optional. Filename or PID of the script.\\n * @param hostname - Hostname of target server. Optional, defaults to the server the calling script is running on.\\n * @param args - Arguments to specify/identify the script. Optional, when looking for scripts run without arguments.\\n * @returns The info about the running script if found, and null otherwise.\\n */\\n getRunningScript(\\n filename?: FilenameOrPID,\\n hostname?: string,\\n ...args: (string | number | boolean)[]\\n ): RunningScript | null;\\n\\n /**\\n * Get cost of purchasing a server.\\n * @remarks\\n * RAM cost: 0.25 GB\\n *\\n * Returns the cost to purchase a server with the specified amount of ram.\\n *\\n * @example\\n * ```js\\n * const ram = 2 ** 20;\\n * const cost = ns.getPurchasedServerCost(ram);\\n * ns.tprint(`A purchased server with ${ns.formatRam(ram)} costs ${ns.formatMoney(cost)}`);\\n * ```\\n * @param ram - Amount of RAM of a potential purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\\n * @returns The cost to purchase a server with the specified amount of ram.\\n */\\n getPurchasedServerCost(ram: number): number;\\n\\n /**\\n * Purchase a server.\\n * @remarks\\n * 2.25 GB\\n *\\n * Purchase a server with the specified hostname and amount of RAM.\\n *\\n * The hostname argument can be any data type, but it will be converted to a string\\n * and have whitespace removed. Anything that resolves to an empty string will cause\\n * the function to fail. If there is already a server with the specified hostname,\\n * then the function will automatically append a number at the end of the hostname\\n * argument value until it finds a unique hostname. For example, if the script calls\\n * `purchaseServer(“foo”, 4)` but a server named “foo” already exists, then it will\\n * automatically change the hostname to `foo-0`. If there is already a server with the\\n * hostname `foo-0`, then it will change the hostname to `foo-1`, and so on.\\n *\\n * Note that there is a maximum limit to the amount of servers you can purchase.\\n *\\n * Returns the hostname of the newly purchased server as a string. If the function\\n * fails to purchase a server, then it will return an empty string. The function will\\n * fail if the arguments passed in are invalid, if the player does not have enough\\n * money to purchase the specified server, or if the player has exceeded the maximum\\n * amount of servers.\\n *\\n * @example\\n * ```js\\n * // Attempt to purchase 5 servers with 64GB of ram each\\n * const ram = 64;\\n * const prefix = \\\"pserv-\\\";\\n * for (i = 0; i < 5; ++i) {\\n * ns.purchaseServer(prefix + i, ram);\\n * }\\n * ```\\n * @param hostname - Hostname of the purchased server.\\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\\n * @returns The hostname of the newly purchased server.\\n */\\n purchaseServer(hostname: string, ram: number): string;\\n\\n /**\\n * Get cost of upgrading a purchased server to the given ram.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * @param hostname - Hostname of the server to upgrade.\\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\\n * @returns The price to upgrade.\\n */\\n getPurchasedServerUpgradeCost(hostname: string, ram: number): number;\\n\\n /**\\n * Upgrade a purchased server's RAM.\\n * @remarks\\n * RAM cost: 0.25 GB\\n *\\n * @param hostname - Hostname of the server to upgrade.\\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\\n * @returns True if the upgrade succeeded, and false otherwise.\\n */\\n upgradePurchasedServer(hostname: string, ram: number): boolean;\\n\\n /**\\n * Rename a purchased server.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param hostname - Current server hostname.\\n * @param newName - New server hostname.\\n * @returns True if successful, and false otherwise.\\n */\\n renamePurchasedServer(hostname: string, newName: string): boolean;\\n\\n /**\\n * Delete a purchased server.\\n * @remarks\\n * 2.25 GB\\n *\\n * Deletes one of your purchased servers, which is specified by its hostname.\\n *\\n * The hostname argument can be any data type, but it will be converted to a string.\\n * Whitespace is automatically removed from the string. This function will not delete a\\n * server that still has scripts running on it.\\n *\\n * @param host - Hostname of the server to delete.\\n * @returns True if successful, and false otherwise.\\n */\\n deleteServer(host: string): boolean;\\n\\n /**\\n * Returns an array with the hostnames of all of the servers you have purchased.\\n *\\n * @remarks 2.25 GB\\n * @returns Returns an array with the hostnames of all of the servers you have purchased.\\n */\\n getPurchasedServers(): string[];\\n\\n /**\\n * Returns the maximum number of servers you can purchase.\\n *\\n * @remarks RAM cost: 0.05 GB\\n * @returns Returns the maximum number of servers you can purchase.\\n */\\n getPurchasedServerLimit(): number;\\n\\n /**\\n * Returns the maximum RAM that a purchased server can have.\\n *\\n * @remarks RAM cost: 0.05 GB\\n * @returns Returns the maximum RAM (in GB) that a purchased server can have.\\n */\\n getPurchasedServerMaxRam(): number;\\n\\n /**\\n * Write data to a file.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function can be used to write data to a text file (.txt) or a script (.js or .script).\\n *\\n * This function will write data to that file. If the specified file does not exist,\\n * then it will be created. The third argument mode defines how the data will be written to\\n * the file. If mode is set to “w”, then the data is written in “write” mode which means\\n * that it will overwrite all existing data on the file. If mode is set to any other value\\n * then the data will be written in “append” mode which means that the data will be added at the\\n * end of the file.\\n *\\n * @param filename - Name of the file to be written to.\\n * @param data - Data to write.\\n * @param mode - Defines the write mode.\\n */\\n write(filename: string, data?: string, mode?: \\\"w\\\" | \\\"a\\\"): void;\\n\\n /**\\n * Attempt to write to a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Attempts to write data to the specified Netscript port.\\n * If the port is full, the data will not be written.\\n * Otherwise, the data will be written normally.\\n *\\n * @param portNumber - Port to attempt to write to to. Must be a positive integer.\\n * @param data - Data to write.\\n * @returns True if the data is successfully written to the port, and false otherwise.\\n */\\n tryWritePort(portNumber: number, data: string | number): boolean;\\n\\n /**\\n * Read content of a file.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is used to read data from a text file (.txt) or script (.js or .script).\\n *\\n * This function will return the data in the specified file.\\n * If the file does not exist, an empty string will be returned.\\n *\\n * @param filename - Name of the file to be read.\\n * @returns Data in the specified text file.\\n */\\n read(filename: string): string;\\n\\n /**\\n * Get a copy of the data from a port without popping it.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * This function is used to peek at the data from a port. It returns the\\n * first element in the specified port without removing that element. If\\n * the port is empty, the string “NULL PORT DATA” will be returned.\\n *\\n * @param portNumber - Port to peek. Must be a positive integer.\\n * @returns Data in the specified port.\\n */\\n peek(portNumber: number): PortData;\\n\\n /**\\n * Clear data from a file.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Delete all data from that text file.\\n *\\n * @param handle - Text file to clear.\\n */\\n clear(handle: string): void;\\n\\n /**\\n * Clear data from a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Delete all data from the underlying queue.\\n *\\n * @param portNumber - Port to clear data from. Must be a positive integer.\\n */\\n clearPort(portNumber: number): void;\\n\\n /**\\n * Write data to a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Write data to the given Netscript port.\\n * @param portNumber - Port to write to. Must be a positive integer.\\n * @returns The data popped off the queue if it was full, or null if it was not full.\\n */\\n writePort(portNumber: number, data: string | number): PortData | null;\\n /**\\n * Read data from a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Read data from that port. A port is a serialized queue.\\n * This function will remove the first element from that queue and return it.\\n * If the queue is empty, then the string “NULL PORT DATA” will be returned.\\n * @param portNumber - Port to read from. Must be a positive integer.\\n * @returns The data read.\\n */\\n readPort(portNumber: number): PortData;\\n\\n /**\\n * Get all data on a port.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Get a handle to a Netscript Port.\\n *\\n * WARNING: Port Handles only work in NetscriptJS (Netscript 2.0). They will not work in Netscript 1.0.\\n *\\n * @param portNumber - Port number. Must be a positive integer.\\n */\\n getPortHandle(portNumber: number): NetscriptPort;\\n\\n /**\\n * Delete a file.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Removes the specified file from the current server. This function works for every file\\n * type except message (.msg) files.\\n *\\n * @param name - Filename of file to remove. Must include the extension.\\n * @param host - Hostname of the server on which to delete the file. Optional. Defaults to current server.\\n * @returns True if it successfully deletes the file, and false otherwise.\\n */\\n rm(name: string, host?: string): boolean;\\n\\n /**\\n * Check if any script with a filename is running.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Returns a boolean indicating whether any instance of the specified script is running\\n * on the target server, regardless of its arguments.\\n *\\n * This is different than the {@link NS.isRunning | isRunning} function because it does not try to\\n * identify a specific instance of a running script by its arguments.\\n *\\n * @example\\n * ```js\\n * //The function call will return true if there is any script named foo.js running on the foodnstuff server, and false otherwise:\\n * ns.scriptRunning(\\\"foo.js\\\", \\\"foodnstuff\\\");\\n *\\n * //The function call will return true if there is any script named “foo.js” running on the current server, and false otherwise:\\n * ns.scriptRunning(\\\"foo.js\\\", ns.getHostname());\\n * ```\\n * @param script - Filename of script to check. This is case-sensitive.\\n * @param host - Hostname of target server.\\n * @returns True if the specified script is running, and false otherwise.\\n */\\n scriptRunning(script: string, host: string): boolean;\\n\\n /**\\n * Kill all scripts with a filename.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * Kills all scripts with the specified filename on the target server specified by hostname,\\n * regardless of arguments.\\n *\\n * @param script - Filename of script to kill. This is case-sensitive.\\n * @param host - Hostname of target server.\\n * @returns True if one or more scripts were successfully killed, and false if none were.\\n */\\n scriptKill(script: string, host: string): boolean;\\n\\n /**\\n * Returns the current script name.\\n *\\n * @remarks RAM cost: 0 GB\\n * @returns Current script name.\\n */\\n getScriptName(): string;\\n\\n /**\\n * Get the ram cost of a script.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the amount of RAM required to run the specified script on the target server.\\n * Returns 0 if the script does not exist.\\n *\\n * @param script - Filename of script. This is case-sensitive.\\n * @param host - Hostname of target server the script is located on. This is optional. If it is not specified then the function will use the current server as the target server.\\n * @returns Amount of RAM (in GB) required to run the specified script on the target server, and 0 if the script does not exist.\\n */\\n getScriptRam(script: string, host?: string): number;\\n\\n /**\\n * Get the execution time of a hack() call.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * When `hack` completes an amount of money is stolen depending on the player's skills.\\n * Returns the amount of time in milliseconds it takes to execute the {@link NS.hack | hack} Netscript function on the target server.\\n * The required time is increased by the security level of the target server and decreased by the player's hacking level.\\n *\\n * @param host - Hostname of target server.\\n * @returns Returns the amount of time in milliseconds it takes to execute the {@link NS.hack | hack} Netscript function.\\n */\\n getHackTime(host: string): number;\\n\\n /**\\n * Get the execution time of a grow() call.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Returns the amount of time in milliseconds it takes to execute the grow Netscript function on the target server.\\n * The required time is increased by the security level of the target server and decreased by the player's hacking level.\\n *\\n * @param host - Hostname of target server.\\n * @returns Returns the amount of time in milliseconds it takes to execute the grow Netscript function.\\n */\\n getGrowTime(host: string): number;\\n\\n /**\\n * Get the execution time of a weaken() call.\\n * @remarks\\n * RAM cost: 0.05 GB\\n *\\n * Returns the amount of time in milliseconds it takes to execute the {@link NS.weaken | weaken} Netscript function on the target server.\\n * The required time is increased by the security level of the target server and decreased by the player's hacking level.\\n *\\n * @param host - Hostname of target server.\\n * @returns Returns the amount of time in milliseconds it takes to execute the {@link NS.weaken | weaken} Netscript function.\\n */\\n getWeakenTime(host: string): number;\\n\\n /**\\n * Get the income of all scripts.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * @returns An array of two values.\\n * The first value is the total income (dollar / second) of all of your active scripts\\n * (scripts that are currently running on any server).\\n * The second value is the total income (dollar / second) that you’ve earned from scripts\\n * since you last installed Augmentations.\\n */\\n getTotalScriptIncome(): [number, number];\\n\\n /**\\n * Get the income of a script.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the amount of income the specified script generates while online\\n * (when the game is open, does not apply for offline income). Remember that\\n * a script is uniquely identified by both its name and its arguments. So for\\n * example if you ran a script with the arguments “foodnstuff” and “5” then\\n * in order to use this function to get that script’s income you must specify\\n * those same arguments in the same order in this function call.\\n *\\n * @param script - Filename of script.\\n * @param host - Server on which script is running.\\n * @param args - Arguments that the script is running with.\\n * @returns Amount of income the specified script generates while online.\\n */\\n getScriptIncome(script: string, host: string, ...args: (string | number | boolean)[]): number;\\n\\n /**\\n * Get the exp gain of all scripts.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * @returns Total experience gain rate of all of your active scripts.\\n */\\n getTotalScriptExpGain(): number;\\n\\n /**\\n * Get the exp gain of a script.\\n * @remarks\\n * RAM cost: 0.1 GB\\n *\\n * Returns the amount of hacking experience the specified script generates while online\\n * (when the game is open, does not apply for offline experience gains). Remember that a\\n * script is uniquely identified by both its name and its arguments.\\n *\\n * This function can also return the total experience gain rate of all of your active\\n * scripts by running the function with no arguments.\\n *\\n * @param script - Filename of script.\\n * @param host - Server on which script is running.\\n * @param args - Arguments that the script is running with.\\n * @returns Amount of hacking experience the specified script generates while online.\\n */\\n getScriptExpGain(script: string, host: string, ...args: (string | number | boolean)[]): number;\\n\\n /**\\n * Returns the amount of time in milliseconds that have passed since you last installed Augmentations.\\n *\\n * @remarks RAM cost: 0.05 GB\\n * @returns Time in milliseconds that have passed since you last installed Augmentations.\\n */\\n getTimeSinceLastAug(): number;\\n\\n /**\\n * Format a string.\\n *\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * see: https://github.com/alexei/sprintf.js\\n * @param format - String to format.\\n * @param args - Formatting arguments.\\n * @returns Formatted text.\\n */\\n sprintf(format: string, ...args: any[]): string;\\n\\n /**\\n * Format a string with an array of arguments.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * see: https://github.com/alexei/sprintf.js\\n * @param format - String to format.\\n * @param args - Formatting arguments.\\n * @returns Formatted text.\\n */\\n vsprintf(format: string, args: any[]): string;\\n\\n /**\\n * Format a number.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Converts a number into a numeric string with the specified format options.\\n * This is the same function that the game itself uses to display numbers. The format also depends on the Numeric\\n * Display settings (all options on the \\\"Numeric Display\\\" options page)\\n * To format ram or percentages, see {@link NS.formatRam | formatRam} and {@link NS.formatPercent | formatPercent}\\n *\\n * @param n - Number to format.\\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 3.\\n * @param suffixStart - How high a number must be before a suffix will be added. Optional, defaults to 1000.\\n * @param isInteger - Whether the number represents an integer. Integers do not display fractional digits until a suffix is present. Optional, defaults to false.\\n * @returns Formatted number.\\n */\\n formatNumber(n: number, fractionalDigits?: number, suffixStart?: number, isInteger?: boolean): string;\\n\\n /**\\n * Format a number as an amount of ram.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Converts a number into a ram string with the specified number of fractional digits.\\n * This is the same function that the game itself uses to display ram. The format also depends on the Numeric Display\\n * settings (all options on the \\\"Numeric Display\\\" options page)\\n * To format plain numbers or percentages, see {@link NS.formatNumber | formatNumber} and {@link NS.formatPercent | formatPercent}\\n *\\n * @param n - Number to format as an amount of ram, in base units of GB (or GiB if that Numeric Display option is set).\\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 2.\\n * @returns Formatted ram amount.\\n */\\n formatRam(n: number, fractionalDigits?: number): string;\\n\\n /**\\n * Format a number as a percentage.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Converts a number into a percentage string with the specified number of fractional digits.\\n * This is the same function that the game itself uses to display percentages. The format also depends on the Numeric\\n * Display settings (all options on the \\\"Numeric Display\\\" options page)\\n * To format plain numbers or ram, see {@link NS.formatNumber | formatNumber} and {@link NS.formatRam | formatRam}\\n *\\n * @param n - Number to format as a percentage.\\n * @param fractionalDigits - Number of digits to show in the fractional part of the decimal number. Optional, defaults to 2.\\n * @param suffixStart - When to switch the percentage to a multiplier. Default is 1e6 or x1.00m.\\n * @returns Formatted percentage.\\n */\\n formatPercent(n: number, fractionalDigits?: number, multStart?: number): string;\\n\\n /**\\n * Format a number using the numeral library. This function is deprecated and will be removed in 2.4.\\n * @deprecated Use ns.formatNumber, formatRam, or formatPercent instead. Will be removed in 2.4.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Converts a number into a string with the specified format options.\\n * See http://numeraljs.com/#format for documentation on format strings supported.\\n *\\n * This function is deprecated and will be removed in 2.3.\\n *\\n * @param n - Number to format.\\n * @param format - Formatting options. See http://numeraljs.com/#format for valid formats.\\n * @returns Formatted number.\\n */\\n nFormat(n: number, format: string): string;\\n\\n /**\\n * Format time to a readable string.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param milliseconds - Number of millisecond to format.\\n * @param milliPrecision - Format time with subsecond precision. Defaults to false.\\n * @returns The formatted time.\\n */\\n tFormat(milliseconds: number, milliPrecision?: boolean): string;\\n\\n /**\\n * Prompt the player with an input modal.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Prompts the player with a dialog box. Here is an explanation of the various options.\\n *\\n * - `options.type` is not provided to the function. If `options.type` is left out and\\n * only a string is passed to the function, then the default behavior is to create a\\n * boolean dialog box.\\n *\\n * - `options.type` has value `undefined` or `\\\"boolean\\\"`. A boolean dialog box is\\n * created. The player is shown \\\"Yes\\\" and \\\"No\\\" prompts, which return true and false\\n * respectively. The script's execution is halted until the player presses either the\\n * \\\"Yes\\\" or \\\"No\\\" button.\\n *\\n * - `options.type` has value `\\\"text\\\"`. The player is given a text field to enter\\n * free-form text. The script's execution is halted until the player enters some text\\n * and/or presses the \\\"Confirm\\\" button.\\n *\\n * - `options.type` has value `\\\"select\\\"`. The player is shown a drop-down field.\\n * Choosing type `\\\"select\\\"` will require an array to be passed via the\\n * `options.choices` property. The array can be an array of strings, an array of\\n * numbers (not BigInt numbers), or a mixture of both numbers and strings. Any other\\n * types of array elements will result in an error or an undefined/unexpected\\n * behavior. The `options.choices` property will be ignored if `options.type` has a\\n * value other than `\\\"select\\\"`. The script's execution is halted until the player\\n * chooses one of the provided options and presses the \\\"Confirm\\\" button.\\n *\\n * @example\\n * ```js\\n * // A Yes/No question. The default is to create a boolean dialog box.\\n * const queryA = \\\"Do you enjoy Bitburner?\\\";\\n * const resultA = await ns.prompt(queryA);\\n * ns.tprint(`${queryA} ${resultA}`);\\n *\\n * // Another Yes/No question. Can also create a boolean dialog box by explicitly\\n * // passing the option {\\\"type\\\": \\\"boolean\\\"}.\\n * const queryB = \\\"Is programming fun?\\\";\\n * const resultB = await ns.prompt(queryB, { type: \\\"boolean\\\" });\\n * ns.tprint(`${queryB} ${resultB}`);\\n *\\n * // Free-form text box.\\n * const resultC = await ns.prompt(\\\"Please enter your name.\\\", { type: \\\"text\\\" });\\n * ns.tprint(`Hello, ${resultC}.`);\\n *\\n * // A drop-down list.\\n * const resultD = await ns.prompt(\\\"Please select your favorite fruit.\\\", {\\n * type: \\\"select\\\",\\n * choices: [\\\"Apple\\\", \\\"Banana\\\", \\\"Orange\\\", \\\"Pear\\\", \\\"Strawberry\\\"]\\n * });\\n * ns.tprint(`Your favorite fruit is ${resultD.toLowerCase()}.`);\\n * ```\\n *\\n * @param txt - Text to appear in the prompt dialog box.\\n * @param options - Options to modify the prompt the player is shown.\\n * @returns True if the player clicks “Yes”; false if the player clicks “No”; or the value entered by the player.\\n */\\n prompt(\\n txt: string,\\n options?: { type?: \\\"boolean\\\" | \\\"text\\\" | \\\"select\\\"; choices?: string[] },\\n ): Promise;\\n\\n /**\\n * Open up a message box.\\n * @param msg - Message to alert.\\n */\\n alert(msg: string): void;\\n\\n /**\\n * Queue a toast (bottom-right notification).\\n * @param msg - Message in the toast.\\n * @param variant - Type of toast. Must be one of success, info, warning, error. Defaults to success.\\n * @param duration - Duration of toast in ms. Can also be `null` to create a persistent toast. Defaults to 2000.\\n */\\n toast(msg: string, variant?: ToastVariant | `${ToastVariant}`, duration?: number | null): void;\\n\\n /**\\n * Download a file from the internet.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Retrieves data from a URL and downloads it to a file on the specified server.\\n * The data can only be downloaded to a script (.js or .script) or a text file (.txt).\\n * If the file already exists, it will be overwritten by this command.\\n * Note that it will not be possible to download data from many websites because they\\n * do not allow cross-origin resource sharing (CORS).\\n *\\n * IMPORTANT: This is an asynchronous function that returns a Promise.\\n * The Promise’s resolved value will be a boolean indicating whether or not the data was\\n * successfully retrieved from the URL. Because the function is async and returns a Promise,\\n * it is recommended you use wget in NetscriptJS (Netscript 2.0).\\n *\\n * In NetscriptJS, you must preface any call to wget with the await keyword (like you would {@link NS.hack | hack} or {@link NS.sleep | sleep}).\\n * wget will still work in Netscript 1.0, but the function's execution will not be synchronous\\n * (i.e. it may not execute when you expect/want it to).\\n * Furthermore, since Promises are not supported in ES5,\\n * you will not be able to process the returned value of wget in Netscript 1.0.\\n *\\n * @example\\n * ```js\\n * await ns.wget(\\\"https://raw.githubusercontent.com/bitburner-official/bitburner-src/master/README.md\\\", \\\"game_readme.txt\\\");\\n * ```\\n * @param url - URL to pull data from.\\n * @param target - Filename to write data to. Must be script or text file.\\n * @param host - Optional hostname/ip of server for target file.\\n * @returns True if the data was successfully retrieved from the URL, false otherwise.\\n */\\n wget(url: string, target: string, host?: string): Promise;\\n\\n /**\\n * Returns the amount of Faction favor required to be able to donate to a faction.\\n *\\n * @remarks RAM cost: 0.1 GB\\n * @returns Amount of Faction favor required to be able to donate to a faction.\\n */\\n getFavorToDonate(): number;\\n\\n /**\\n * Get the current Bitnode multipliers.\\n * @remarks\\n * RAM cost: 4 GB\\n *\\n * Returns an object containing the current (or supplied) BitNode multipliers.\\n * This function requires you to be in Bitnode 5 or have Source-File 5 in order to run.\\n * The multipliers are returned in decimal forms (e.g. 1.5 instead of 150%).\\n * The multipliers represent the difference between the current BitNode and\\n * the original BitNode (BitNode-1).\\n *\\n * For example, if the CrimeMoney multiplier has a value of 0.1, then that means\\n * that committing crimes in the current BitNode will only give 10% of the money\\n * you would have received in BitNode-1.\\n *\\n * @example\\n * ```js\\n * const mults = ns.getBitNodeMultipliers();\\n * ns.tprint(`ServerMaxMoney: ${mults.ServerMaxMoney}`);\\n * ns.tprint(`HackExpGain: ${mults.HackExpGain}`);\\n * ```\\n * @returns Object containing the current BitNode multipliers.\\n */\\n getBitNodeMultipliers(n?: number, lvl?: number): BitNodeMultipliers;\\n\\n /**\\n * Get information about the player.\\n * @remarks\\n * RAM cost: 0.5 GB\\n *\\n * Returns an object with information on the current player.\\n *\\n * @returns Player info\\n */\\n getPlayer(): Player;\\n\\n /**\\n * Get information about the sources of income for this run.\\n * @remarks\\n * RAM cost: 1.0 GB\\n *\\n * Returns an object with information on the income sources for this run\\n *\\n * @returns Money sources\\n */\\n getMoneySources(): MoneySources;\\n\\n /**\\n * Add callback function when the script dies\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * NS2 exclusive\\n *\\n * Add callback to be executed when the script dies.\\n */\\n atExit(f: () => void): void;\\n\\n /**\\n * Move a file on the target server.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Move the source file to the specified destination on the target server.\\n *\\n * This command only works for scripts and text files (.txt). It cannot, however, be used\\n * to convert from script to text file, or vice versa.\\n *\\n * This function can also be used to rename files.\\n *\\n * @param host - Hostname of target server.\\n * @param source - Filename of the source file.\\n * @param destination - Filename of the destination file.\\n */\\n mv(host: string, source: string, destination: string): void;\\n\\n /** Get information about resets.\\n * @remarks\\n * RAM cost: 1 GB\\n *\\n * @example\\n * ```js\\n * const resetInfo = ns.getResetInfo();\\n * const lastAugReset = resetInfo.lastAugReset;\\n * ns.tprint(`The last augmentation reset was: ${new Date(lastAugReset)}`);\\n * ns.tprint(`It has been ${Date.now() - lastAugReset}ms since the last augmentation reset.`);\\n * ```\\n * */\\n getResetInfo(): ResetInfo;\\n\\n /**\\n * Get the ram cost of a netscript function.\\n *\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * @param name - The fully-qualified function name, without the leading `ns`. Example inputs: `hack`, `tprint`, `stock.getPosition`.\\n */\\n getFunctionRamCost(name: string): number;\\n\\n /**\\n * Parse command line flags.\\n * @remarks\\n * RAM cost: 0 GB\\n *\\n * Allows Unix-like flag parsing.\\n * @example\\n * ```js\\n * export async function main(ns) {\\n * const data = ns.flags([\\n * ['delay', 0], // a default number means this flag is a number\\n * ['server', 'foodnstuff'], // a default string means this flag is a string\\n * ['exclude', []], // a default array means this flag is a default array of string\\n * ['help', false], // a default boolean means this flag is a boolean\\n * ]);\\n * ns.tprint(data);\\n * }\\n *\\n * // [home ~/]> run example.js\\n * // {\\\"_\\\":[],\\\"delay\\\":0,\\\"server\\\":\\\"foodnstuff\\\",\\\"exclude\\\":[],\\\"help\\\":false}\\n * // [home ~/]> run example.js --delay 3000\\n * // {\\\"_\\\":[],\\\"server\\\":\\\"foodnstuff\\\",\\\"exclude\\\":[],\\\"help\\\":false,\\\"delay\\\":3000}\\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi\\n * // {\\\"_\\\":[],\\\"exclude\\\":[],\\\"help\\\":false,\\\"delay\\\":3000,\\\"server\\\":\\\"harakiri-sushi\\\"}\\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi hello world\\n * // {\\\"_\\\":[\\\"hello\\\",\\\"world\\\"],\\\"exclude\\\":[],\\\"help\\\":false,\\\"delay\\\":3000,\\\"server\\\":\\\"harakiri-sushi\\\"}\\n * // [home ~/]> run example.js --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b\\n * // {\\\"_\\\":[\\\"hello\\\",\\\"world\\\"],\\\"help\\\":false,\\\"delay\\\":3000,\\\"server\\\":\\\"harakiri-sushi\\\",\\\"exclude\\\":[\\\"a\\\",\\\"b\\\"]}\\n * // [home ~/]> run example.script --help\\n * // {\\\"_\\\":[],\\\"delay\\\":0,\\\"server\\\":\\\"foodnstuff\\\",\\\"exclude\\\":[],\\\"help\\\":true}\\n * ```\\n */\\n flags(schema: [string, string | number | boolean | string[]][]): { [key: string]: ScriptArg | string[] };\\n\\n /**\\n * Share the server's ram with your factions.\\n * @remarks\\n * RAM cost: 2.4 GB\\n *\\n * Increases rep/second for all faction work while share is running. Each cycle of ns.share() is 10 seconds.\\n * Scales with thread count, but at a sharply decreasing rate.\\n */\\n share(): Promise;\\n\\n /**\\n * Share Power has a multiplicative effect on rep/second while doing work for a faction.\\n * Share Power increases incrementally for every thread of share running on your server network, but at a sharply decreasing rate.\\n * @remarks\\n * RAM cost: 0.2 GB\\n */\\n getSharePower(): number;\\n\\n enums: NSEnums;\\n}\\n\\n// BASE ENUMS\\n/** @public */\\ndeclare enum ToastVariant {\\n SUCCESS = \\\"success\\\",\\n WARNING = \\\"warning\\\",\\n ERROR = \\\"error\\\",\\n INFO = \\\"info\\\",\\n}\\n\\n/** @public */\\ndeclare enum CrimeType {\\n shoplift = \\\"Shoplift\\\",\\n robStore = \\\"Rob Store\\\",\\n mug = \\\"Mug\\\",\\n larceny = \\\"Larceny\\\",\\n dealDrugs = \\\"Deal Drugs\\\",\\n bondForgery = \\\"Bond Forgery\\\",\\n traffickArms = \\\"Traffick Arms\\\",\\n homicide = \\\"Homicide\\\",\\n grandTheftAuto = \\\"Grand Theft Auto\\\",\\n kidnap = \\\"Kidnap\\\",\\n assassination = \\\"Assassination\\\",\\n heist = \\\"Heist\\\",\\n}\\n\\n/** @public */\\ndeclare enum FactionWorkType {\\n hacking = \\\"hacking\\\",\\n field = \\\"field\\\",\\n security = \\\"security\\\",\\n}\\n\\n/** @public */\\ndeclare enum UniversityClassType {\\n computerScience = \\\"Computer Science\\\",\\n dataStructures = \\\"Data Structures\\\",\\n networks = \\\"Networks\\\",\\n algorithms = \\\"Algorithms\\\",\\n management = \\\"Management\\\",\\n leadership = \\\"Leadership\\\",\\n}\\n\\n/** @public */\\ndeclare enum GymType {\\n strength = \\\"str\\\",\\n defense = \\\"def\\\",\\n dexterity = \\\"dex\\\",\\n agility = \\\"agi\\\",\\n}\\n\\n/** @public */\\ndeclare enum JobName {\\n software0 = \\\"Software Engineering Intern\\\",\\n software1 = \\\"Junior Software Engineer\\\",\\n software2 = \\\"Senior Software Engineer\\\",\\n software3 = \\\"Lead Software Developer\\\",\\n software4 = \\\"Head of Software\\\",\\n software5 = \\\"Head of Engineering\\\",\\n software6 = \\\"Vice President of Technology\\\",\\n software7 = \\\"Chief Technology Officer\\\",\\n IT0 = \\\"IT Intern\\\",\\n IT1 = \\\"IT Analyst\\\",\\n IT2 = \\\"IT Manager\\\",\\n IT3 = \\\"Systems Administrator\\\",\\n securityEng = \\\"Security Engineer\\\",\\n networkEng0 = \\\"Network Engineer\\\",\\n networkEng1 = \\\"Network Administrator\\\",\\n business0 = \\\"Business Intern\\\",\\n business1 = \\\"Business Analyst\\\",\\n business2 = \\\"Business Manager\\\",\\n business3 = \\\"Operations Manager\\\",\\n business4 = \\\"Chief Financial Officer\\\",\\n business5 = \\\"Chief Executive Officer\\\",\\n security0 = \\\"Security Guard\\\",\\n security1 = \\\"Security Officer\\\",\\n security2 = \\\"Security Supervisor\\\",\\n security3 = \\\"Head of Security\\\",\\n agent0 = \\\"Field Agent\\\",\\n agent1 = \\\"Secret Agent\\\",\\n agent2 = \\\"Special Operative\\\",\\n waiter = \\\"Waiter\\\",\\n employee = \\\"Employee\\\",\\n softwareConsult0 = \\\"Software Consultant\\\",\\n softwareConsult1 = \\\"Senior Software Consultant\\\",\\n businessConsult0 = \\\"Business Consultant\\\",\\n businessConsult1 = \\\"Senior Business Consultant\\\",\\n waiterPT = \\\"Part-time Waiter\\\",\\n employeePT = \\\"Part-time Employee\\\",\\n}\\n\\n// CORP ENUMS - Changed to types\\n/** @public */\\ntype CorpEmployeePosition =\\n | \\\"Operations\\\"\\n | \\\"Engineer\\\"\\n | \\\"Business\\\"\\n | \\\"Management\\\"\\n | \\\"Research & Development\\\"\\n | \\\"Intern\\\"\\n | \\\"Unassigned\\\";\\n\\n/** @public */\\ntype CorpIndustryName =\\n | \\\"Spring Water\\\"\\n | \\\"Water Utilities\\\"\\n | \\\"Agriculture\\\"\\n | \\\"Fishing\\\"\\n | \\\"Mining\\\"\\n | \\\"Refinery\\\"\\n | \\\"Restaurant\\\"\\n | \\\"Tobacco\\\"\\n | \\\"Chemical\\\"\\n | \\\"Pharmaceutical\\\"\\n | \\\"Computer Hardware\\\"\\n | \\\"Robotics\\\"\\n | \\\"Software\\\"\\n | \\\"Healthcare\\\"\\n | \\\"Real Estate\\\";\\n\\n/** @public */\\ntype CorpSmartSupplyOption = \\\"leftovers\\\" | \\\"imports\\\" | \\\"none\\\";\\n\\n/** Names of all cities\\n * @public */\\ndeclare enum CityName {\\n Aevum = \\\"Aevum\\\",\\n Chongqing = \\\"Chongqing\\\",\\n Sector12 = \\\"Sector-12\\\",\\n NewTokyo = \\\"New Tokyo\\\",\\n Ishima = \\\"Ishima\\\",\\n Volhaven = \\\"Volhaven\\\",\\n}\\n\\n/** Names of all locations\\n * @public */\\ndeclare enum LocationName {\\n AevumAeroCorp = \\\"AeroCorp\\\",\\n AevumBachmanAndAssociates = \\\"Bachman & Associates\\\",\\n AevumClarkeIncorporated = \\\"Clarke Incorporated\\\",\\n AevumCrushFitnessGym = \\\"Crush Fitness Gym\\\",\\n AevumECorp = \\\"ECorp\\\",\\n AevumFulcrumTechnologies = \\\"Fulcrum Technologies\\\",\\n AevumGalacticCybersystems = \\\"Galactic Cybersystems\\\",\\n AevumNetLinkTechnologies = \\\"NetLink Technologies\\\",\\n AevumPolice = \\\"Aevum Police Headquarters\\\",\\n AevumRhoConstruction = \\\"Rho Construction\\\",\\n AevumSnapFitnessGym = \\\"Snap Fitness Gym\\\",\\n AevumSummitUniversity = \\\"Summit University\\\",\\n AevumWatchdogSecurity = \\\"Watchdog Security\\\",\\n AevumCasino = \\\"Iker Molina Casino\\\",\\n\\n ChongqingKuaiGongInternational = \\\"KuaiGong International\\\",\\n ChongqingSolarisSpaceSystems = \\\"Solaris Space Systems\\\",\\n ChongqingChurchOfTheMachineGod = \\\"Church of the Machine God\\\",\\n\\n Sector12AlphaEnterprises = \\\"Alpha Enterprises\\\",\\n Sector12BladeIndustries = \\\"Blade Industries\\\",\\n Sector12CIA = \\\"Central Intelligence Agency\\\",\\n Sector12CarmichaelSecurity = \\\"Carmichael Security\\\",\\n Sector12CityHall = \\\"Sector-12 City Hall\\\",\\n Sector12DeltaOne = \\\"DeltaOne\\\",\\n Sector12FoodNStuff = \\\"FoodNStuff\\\",\\n Sector12FourSigma = \\\"Four Sigma\\\",\\n Sector12IcarusMicrosystems = \\\"Icarus Microsystems\\\",\\n Sector12IronGym = \\\"Iron Gym\\\",\\n Sector12JoesGuns = \\\"Joe's Guns\\\",\\n Sector12MegaCorp = \\\"MegaCorp\\\",\\n Sector12NSA = \\\"National Security Agency\\\",\\n Sector12PowerhouseGym = \\\"Powerhouse Gym\\\",\\n Sector12RothmanUniversity = \\\"Rothman University\\\",\\n Sector12UniversalEnergy = \\\"Universal Energy\\\",\\n\\n NewTokyoDefComm = \\\"DefComm\\\",\\n NewTokyoGlobalPharmaceuticals = \\\"Global Pharmaceuticals\\\",\\n NewTokyoNoodleBar = \\\"Noodle Bar\\\",\\n NewTokyoVitaLife = \\\"VitaLife\\\",\\n NewTokyoArcade = \\\"Arcade\\\",\\n\\n IshimaNovaMedical = \\\"Nova Medical\\\",\\n IshimaOmegaSoftware = \\\"Omega Software\\\",\\n IshimaStormTechnologies = \\\"Storm Technologies\\\",\\n IshimaGlitch = \\\"0x6C1\\\",\\n\\n VolhavenCompuTek = \\\"CompuTek\\\",\\n VolhavenHeliosLabs = \\\"Helios Labs\\\",\\n VolhavenLexoCorp = \\\"LexoCorp\\\",\\n VolhavenMilleniumFitnessGym = \\\"Millenium Fitness Gym\\\",\\n VolhavenNWO = \\\"NWO\\\",\\n VolhavenOmniTekIncorporated = \\\"OmniTek Incorporated\\\",\\n VolhavenOmniaCybersystems = \\\"Omnia Cybersystems\\\",\\n VolhavenSysCoreSecurities = \\\"SysCore Securities\\\",\\n VolhavenZBInstituteOfTechnology = \\\"ZB Institute of Technology\\\",\\n\\n Hospital = \\\"Hospital\\\",\\n Slums = \\\"The Slums\\\",\\n TravelAgency = \\\"Travel Agency\\\",\\n WorldStockExchange = \\\"World Stock Exchange\\\",\\n\\n Void = \\\"The Void\\\",\\n}\\n\\n/** Names of all companies\\n * @public */\\ndeclare enum CompanyName {\\n ECorp = \\\"ECorp\\\",\\n MegaCorp = \\\"MegaCorp\\\",\\n BachmanAndAssociates = \\\"Bachman & Associates\\\",\\n BladeIndustries = \\\"Blade Industries\\\",\\n NWO = \\\"NWO\\\",\\n ClarkeIncorporated = \\\"Clarke Incorporated\\\",\\n OmniTekIncorporated = \\\"OmniTek Incorporated\\\",\\n FourSigma = \\\"Four Sigma\\\",\\n KuaiGongInternational = \\\"KuaiGong International\\\",\\n FulcrumTechnologies = \\\"Fulcrum Technologies\\\",\\n StormTechnologies = \\\"Storm Technologies\\\",\\n DefComm = \\\"DefComm\\\",\\n HeliosLabs = \\\"Helios Labs\\\",\\n VitaLife = \\\"VitaLife\\\",\\n IcarusMicrosystems = \\\"Icarus Microsystems\\\",\\n UniversalEnergy = \\\"Universal Energy\\\",\\n GalacticCybersystems = \\\"Galactic Cybersystems\\\",\\n AeroCorp = \\\"AeroCorp\\\",\\n OmniaCybersystems = \\\"Omnia Cybersystems\\\",\\n SolarisSpaceSystems = \\\"Solaris Space Systems\\\",\\n DeltaOne = \\\"DeltaOne\\\",\\n GlobalPharmaceuticals = \\\"Global Pharmaceuticals\\\",\\n NovaMedical = \\\"Nova Medical\\\",\\n CIA = \\\"Central Intelligence Agency\\\",\\n NSA = \\\"National Security Agency\\\",\\n WatchdogSecurity = \\\"Watchdog Security\\\",\\n LexoCorp = \\\"LexoCorp\\\",\\n RhoConstruction = \\\"Rho Construction\\\",\\n AlphaEnterprises = \\\"Alpha Enterprises\\\",\\n Police = \\\"Aevum Police Headquarters\\\",\\n SysCoreSecurities = \\\"SysCore Securities\\\",\\n CompuTek = \\\"CompuTek\\\",\\n NetLinkTechnologies = \\\"NetLink Technologies\\\",\\n CarmichaelSecurity = \\\"Carmichael Security\\\",\\n FoodNStuff = \\\"FoodNStuff\\\",\\n JoesGuns = \\\"Joe's Guns\\\",\\n OmegaSoftware = \\\"Omega Software\\\",\\n NoodleBar = \\\"Noodle Bar\\\",\\n}\\n\\n/** @public */\\nexport type NSEnums = {\\n CityName: typeof CityName;\\n CrimeType: typeof CrimeType;\\n FactionWorkType: typeof FactionWorkType;\\n GymType: typeof GymType;\\n JobName: typeof JobName;\\n LocationName: typeof LocationName;\\n ToastVariant: typeof ToastVariant;\\n UniversityClassType: typeof UniversityClassType;\\n CompanyName: typeof CompanyName;\\n};\\n\\n/**\\n * Corporation Office API\\n * @remarks\\n * requires the Office API upgrade from your corporation.\\n * @public\\n */\\n\\nexport interface OfficeAPI {\\n /**\\n * Hire an employee.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param employeePosition - Position to place into. Defaults to \\\"Unassigned\\\".\\n * @returns True if an employee was hired, false otherwise\\n */\\n hireEmployee(divisionName: string, city: CityName | `${CityName}`, employeePosition?: CorpEmployeePosition): boolean;\\n /**\\n * Upgrade office size.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param size - Amount of positions to open\\n */\\n upgradeOfficeSize(divisionName: string, city: CityName | `${CityName}`, size: number): void;\\n /**\\n * Throw a party for your employees\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param costPerEmployee - Amount to spend per employee.\\n * @returns Multiplier for morale, or zero on failure\\n */\\n throwParty(divisionName: string, city: CityName | `${CityName}`, costPerEmployee: number): number;\\n /**\\n * Buy tea for your employees\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @returns true if buying tea was successful, false otherwise\\n */\\n buyTea(divisionName: string, city: CityName | `${CityName}`): boolean;\\n /**\\n * Hire AdVert.\\n * @param divisionName - Name of the division\\n */\\n hireAdVert(divisionName: string): void;\\n /**\\n * Purchase a research\\n * @param divisionName - Name of the division\\n * @param researchName - Name of the research\\n */\\n research(divisionName: string, researchName: string): void;\\n /**\\n * Get data about an office\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @returns Office data\\n */\\n getOffice(divisionName: string, city: CityName | `${CityName}`): Office;\\n /**\\n * Get the cost to hire AdVert.\\n * @param divisionName - Name of the division.\\n * @returns The cost to hire AdVert.\\n */\\n getHireAdVertCost(divisionName: string): number;\\n /**\\n * Get the number of times you have hired AdVert.\\n * @param divisionName - Name of the division.\\n * @returns Number of times you have hired AdVert.\\n */\\n getHireAdVertCount(divisionName: string): number;\\n /**\\n * Get the cost to unlock research\\n * @param divisionName - Name of the division\\n * @param researchName - Name of the research\\n * @returns cost\\n */\\n getResearchCost(divisionName: string, researchName: string): number;\\n /**\\n * Gets if you have unlocked a research\\n * @param divisionName - Name of the division\\n * @param researchName - Name of the research\\n * @returns true is unlocked, false if not\\n */\\n hasResearched(divisionName: string, researchName: string): boolean;\\n /**\\n * Set the auto job assignment for a job\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param job - Name of the job\\n * @param amount - Number of employees to assign to that job\\n * @returns true if the employee count reached the target amount, false if not\\n */\\n setAutoJobAssignment(divisionName: string, city: CityName | `${CityName}`, job: string, amount: number): boolean;\\n /**\\n * Cost to Upgrade office size.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param size - Amount of positions to open\\n * @returns Cost of upgrading the office\\n */\\n getOfficeSizeUpgradeCost(divisionName: string, city: CityName | `${CityName}`, asize: number): number;\\n}\\n\\n/**\\n * Corporation Warehouse API\\n * @remarks\\n * Requires the Warehouse API upgrade from your corporation.\\n * @public\\n */\\nexport interface WarehouseAPI {\\n /**\\n * Set material sell data.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param amt - Amount to sell, can be \\\"MAX\\\"\\n * @param price - Price to sell, can be \\\"MP\\\"\\n */\\n sellMaterial(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n materialName: string,\\n amt: string,\\n price: string,\\n ): void;\\n /**\\n * Set product sell data.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param productName - Name of the product\\n * @param amt - Amount to sell, can be \\\"MAX\\\"\\n * @param price - Price to sell, can be \\\"MP\\\"\\n * @param all - Set sell amount and price in all cities\\n */\\n sellProduct(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n productName: string,\\n amt: string,\\n price: string,\\n all: boolean,\\n ): void;\\n /**\\n * Discontinue a product.\\n * @param divisionName - Name of the division\\n * @param productName - Name of the product\\n */\\n discontinueProduct(divisionName: string, productName: string): void;\\n /**\\n * Set smart supply\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param enabled - smart supply enabled\\n */\\n setSmartSupply(divisionName: string, city: CityName | `${CityName}`, enabled: boolean): void;\\n /**\\n * Set whether smart supply uses leftovers before buying\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param option - smart supply option, \\\"leftovers\\\" to use leftovers, \\\"imports\\\" to use only imported materials, \\\"none\\\" to not use materials from store\\n */\\n setSmartSupplyOption(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n materialName: string,\\n option: CorpSmartSupplyOption,\\n ): void;\\n /**\\n * Set material buy data\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param amt - Amount of material to buy\\n */\\n buyMaterial(divisionName: string, city: CityName | `${CityName}`, materialName: string, amt: number): void;\\n /**\\n * Set material to bulk buy\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param amt - Amount of material to buy\\n */\\n bulkPurchase(divisionName: string, city: CityName | `${CityName}`, materialName: string, amt: number): void;\\n\\n /** Get warehouse data\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @returns warehouse data */\\n getWarehouse(divisionName: string, city: CityName | `${CityName}`): Warehouse;\\n\\n /** Get product data\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param productName - Name of the product\\n * @returns product data */\\n getProduct(divisionName: string, cityName: CityName | `${CityName}`, productName: string): Product;\\n /**\\n * Get material data\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @returns material data\\n */\\n getMaterial(divisionName: string, city: CityName | `${CityName}`, materialName: string): Material;\\n /**\\n * Set market TA 1 for a material.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param on - market ta enabled\\n */\\n setMaterialMarketTA1(divisionName: string, city: CityName | `${CityName}`, materialName: string, on: boolean): void;\\n /**\\n * Set market TA 2 for a material.\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param materialName - Name of the material\\n * @param on - market ta enabled\\n */\\n setMaterialMarketTA2(divisionName: string, city: CityName | `${CityName}`, materialName: string, on: boolean): void;\\n\\n /** * Set market TA 1 for a product.\\n * @param divisionName - Name of the division\\n * @param productName - Name of the product\\n * @param on - market ta enabled */\\n setProductMarketTA1(divisionName: string, productName: string, on: boolean): void;\\n\\n /** Set market TA 2 for a product.\\n * @param divisionName - Name of the division\\n * @param productName - Name of the product\\n * @param on - market ta enabled */\\n setProductMarketTA2(divisionName: string, productName: string, on: boolean): void;\\n /**\\n * Set material export data\\n * @param sourceDivision - Source division\\n * @param sourceCity - Source city\\n * @param targetDivision - Target division\\n * @param targetCity - Target city\\n * @param materialName - Name of the material\\n * @param amt - Amount of material to export.\\n */\\n exportMaterial(\\n sourceDivision: string,\\n sourceCity: CityName | `${CityName}`,\\n targetDivision: string,\\n targetCity: CityName | `${CityName}`,\\n materialName: string,\\n amt: number | string,\\n ): void;\\n /**\\n * Cancel material export\\n * @param sourceDivision - Source division\\n * @param sourceCity - Source city\\n * @param targetDivision - Target division\\n * @param targetCity - Target city\\n * @param materialName - Name of the material\\n */\\n cancelExportMaterial(\\n sourceDivision: string,\\n sourceCity: CityName | `${CityName}`,\\n targetDivision: string,\\n targetCity: CityName | `${CityName}`,\\n materialName: string,\\n ): void;\\n /**\\n * Purchase warehouse for a new city\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n */\\n purchaseWarehouse(divisionName: string, city: CityName | `${CityName}`): void;\\n /**\\n * Upgrade warehouse\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param amt - amount of upgrades defaults to 1\\n */\\n upgradeWarehouse(divisionName: string, city: CityName | `${CityName}`, amt?: number): void;\\n /**\\n * Create a new product\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param productName - Name of the product\\n * @param designInvest - Amount to invest for the design of the product.\\n * @param marketingInvest - Amount to invest for the marketing of the product.\\n */\\n makeProduct(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n productName: string,\\n designInvest: number,\\n marketingInvest: number,\\n ): void;\\n /**\\n * Limit Material Production.\\n * @param divisionName - Name of the division.\\n * @param city - Name of the city.\\n * @param materialName - Name of the material.\\n * @param qty - Amount to limit to. Pass a negative value to remove the limit instead.\\n */\\n limitMaterialProduction(\\n divisionName: string,\\n city: CityName | `${CityName}`,\\n materialName: string,\\n qty: number,\\n ): void;\\n /**\\n * Limit Product Production.\\n * @param divisionName - Name of the division.\\n * @param city - Name of the city.\\n * @param productName - Name of the product.\\n * @param qty - Amount to limit to. Pass a negative value to remove the limit instead.\\n */\\n limitProductProduction(divisionName: string, city: CityName | `${CityName}`, productName: string, qty: number): void;\\n /**\\n * Gets the cost to upgrade a warehouse to the next level\\n * @param divisionName - Name of the division\\n * @param city - Name of the city\\n * @param amt - amount of upgrades. Optional, defaults to 1\\n * @returns cost to upgrade\\n */\\n getUpgradeWarehouseCost(divisionName: string, city: CityName | `${CityName}`, amt?: number): number;\\n /**\\n * Check if you have a warehouse in city\\n * @returns true if warehouse is present, false if not\\n */\\n hasWarehouse(divisionName: string, city: CityName | `${CityName}`): boolean;\\n}\\n\\n/**\\n * Corporation API\\n * @public\\n */\\nexport interface Corporation extends WarehouseAPI, OfficeAPI {\\n /** Returns whether the player has a corporation. Does not require API access.\\n * @returns whether the player has a corporation */\\n hasCorporation(): boolean;\\n\\n /** Create a Corporation\\n * @param corporationName - Name of the corporation\\n * @param selfFund - If you should self fund, defaults to true, false will only work on Bitnode 3\\n * @returns true if created and false if not */\\n createCorporation(corporationName: string, selfFund: boolean): boolean;\\n\\n /** Check if you have a one time unlockable upgrade\\n * @param upgradeName - Name of the upgrade\\n * @returns true if unlocked and false if not */\\n hasUnlock(upgradeName: string): boolean;\\n\\n /** Gets the cost to unlock a one time unlockable upgrade\\n * @param upgradeName - Name of the upgrade\\n * @returns cost of the upgrade */\\n getUnlockCost(upgradeName: string): number;\\n\\n /** Get the level of a levelable upgrade\\n * @param upgradeName - Name of the upgrade\\n * @returns the level of the upgrade */\\n getUpgradeLevel(upgradeName: string): number;\\n\\n /** Gets the cost to unlock the next level of a levelable upgrade\\n * @param upgradeName - Name of the upgrade\\n * @returns cost of the upgrade */\\n getUpgradeLevelCost(upgradeName: string): number;\\n\\n /** Get an offer for investment based on you companies current valuation\\n * @returns An offer of investment */\\n getInvestmentOffer(): InvestmentOffer;\\n\\n /** Get corporation related constants\\n * @returns corporation related constants */\\n getConstants(): CorpConstants;\\n\\n /** Get constant industry definition data for a specific industry */\\n getIndustryData(industryName: CorpIndustryName): CorpIndustryData;\\n\\n /** Get constant data for a specific material */\\n getMaterialData(materialName: CorpMaterialName): CorpMaterialConstantData;\\n\\n /** Accept investment based on you companies current valuation\\n * @remarks\\n * Is based on current valuation and will not honer a specific Offer\\n * @returns An offer of investment */\\n acceptInvestmentOffer(): boolean;\\n\\n /** Go public\\n * @param numShares - number of shares you would like to issue for your IPO\\n * @returns true if you successfully go public, false if not */\\n goPublic(numShares: number): boolean;\\n\\n /** Bribe a faction\\n * @param factionName - Faction name\\n * @param amountCash - Amount of money to bribe\\n * @returns True if successful, false if not */\\n bribe(factionName: string, amountCash: number): boolean;\\n\\n /** Get corporation data\\n * @returns Corporation data */\\n getCorporation(): CorporationInfo;\\n\\n /** Get division data\\n * @param divisionName - Name of the division\\n * @returns Division data */\\n getDivision(divisionName: string): Division;\\n\\n /** Expand to a new industry\\n * @param industryType - Name of the industry\\n * @param divisionName - Name of the division */\\n expandIndustry(industryType: CorpIndustryName, divisionName: string): void;\\n\\n /** Expand to a new city\\n * @param divisionName - Name of the division\\n * @param city - Name of the city */\\n expandCity(divisionName: string, city: CityName | `${CityName}`): void;\\n\\n /** Unlock an upgrade\\n * @param upgradeName - Name of the upgrade */\\n purchaseUnlock(upgradeName: string): void;\\n\\n /** Level an upgrade.\\n * @param upgradeName - Name of the upgrade */\\n levelUpgrade(upgradeName: string): void;\\n\\n /** Issue dividends\\n * @param rate - Fraction of profit to issue as dividends. */\\n issueDividends(rate: number): void;\\n\\n /** Issue new shares\\n * @param amount - Number of new shares to issue, will be rounded to nearest 10m. Defaults to max amount.\\n * @returns Amount of funds generated for the corporation. */\\n issueNewShares(amount?: number): number;\\n\\n /** Buyback Shares.\\n * Spend money from the player's wallet to transfer shares from public traders to the CEO.\\n * @param amount - Amount of shares to buy back, must be integer and larger than 0 */\\n buyBackShares(amount: number): void;\\n\\n /** Sell Shares.\\n * Transfer shares from the CEO to public traders to receive money in the player's wallet.\\n * @param amount - Amount of shares to sell, must be integer between 1 and 100t */\\n sellShares(amount: number): void;\\n\\n /** Get bonus time.\\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\\n * “Bonus time” makes the game progress faster.\\n * @returns Bonus time for the Corporation mechanic in milliseconds. */\\n getBonusTime(): number;\\n}\\n\\n/** Product rating information\\n * @public */\\ninterface CorpProductData {\\n /** Name of the product */\\n name: string;\\n /** Verb used to describe creation of the product */\\n verb: string;\\n /** Description of product creation */\\n desc: string;\\n /** Weighting factors for product */\\n ratingWeights: {\\n aesthetics?: number;\\n durability?: number;\\n features?: number;\\n quality?: number;\\n performance?: number;\\n reliability?: number;\\n };\\n}\\n\\n/** Data for an individual industry\\n * @public */\\ninterface CorpIndustryData {\\n startingCost: number;\\n description: string;\\n product?: CorpProductData;\\n recommendStarting: boolean;\\n requiredMaterials: Partial>;\\n /** Real estate factor */\\n realEstateFactor?: number;\\n /** Scientific research factor (affects quality) */\\n scienceFactor?: number;\\n /** Hardware factor */\\n hardwareFactor?: number;\\n /** Robots factor */\\n robotFactor?: number;\\n /** AI Cores factor */\\n aiCoreFactor?: number;\\n /** Advertising factor (affects sales) */\\n advertisingFactor?: number;\\n /** Array of Materials produced */\\n producedMaterials?: CorpMaterialName[];\\n /** Whether the industry of this division is capable of producing materials */\\n makesMaterials: boolean;\\n /** Whether the industry of this division is capable of developing and producing products */\\n makesProducts: boolean;\\n}\\n\\n/**\\n * General info about a corporation\\n * @public\\n */\\ninterface CorporationInfo {\\n /** Name of the corporation */\\n name: string;\\n /** Funds available */\\n funds: number;\\n /** Revenue per second this cycle */\\n revenue: number;\\n /** Expenses per second this cycle */\\n expenses: number;\\n /** Indicating if the company is public */\\n public: boolean;\\n /** Total number of shares issued by this corporation. */\\n totalShares: number;\\n /** Amount of shares owned by the CEO. */\\n numShares: number;\\n /** Cooldown until shares can be sold again */\\n shareSaleCooldown: number;\\n /** Amount of shares owned by private investors. Not available for public sale or CEO buyback. */\\n investorShares: number;\\n /** Amount of shares owned by public traders. Available for CEO buyback. */\\n issuedShares: number;\\n /** Cooldown until new shares can be issued */\\n issueNewSharesCooldown: number;\\n /** Price of the shares */\\n sharePrice: number;\\n /** Fraction of profits issued as dividends */\\n dividendRate: number;\\n /** Tax applied on your earnings as a shareholder */\\n dividendTax: number;\\n /** Your earnings as a shareholder per second this cycle */\\n dividendEarnings: number;\\n /** The next state to be processed.\\n *\\n * I.e. when the state is PURCHASE, it means purchasing will occur during the next state transition.\\n *\\n * Possible states are START, PURCHASE, PRODUCTION, EXPORT, SALE. */\\n state: string;\\n /** Array of all division names */\\n divisions: string[];\\n}\\n\\n/**\\n * Corporation related constants\\n * @public\\n */\\ninterface CorpConstants {\\n /** Names of all corporation game states */\\n stateNames: CorpStateName[];\\n /** Names of all employee positions */\\n employeePositions: CorpEmployeePosition[];\\n /** Names of all industries */\\n industryNames: CorpIndustryName[];\\n /** Names of all materials */\\n materialNames: CorpMaterialName[];\\n /** Names of all one-time corporation-wide unlocks */\\n unlockNames: CorpUnlockName[];\\n /** Names of all corporation-wide upgrades */\\n upgradeNames: CorpUpgradeName[];\\n /** Names of all researches common to all industries */\\n researchNamesBase: CorpResearchName[];\\n /** Names of all researches only available to product industries */\\n researchNamesProductOnly: CorpResearchName[];\\n /** Names of all researches */\\n researchNames: CorpResearchName[];\\n initialShares: number;\\n /** When selling large number of shares, price is dynamically updated for every batch of this amount */\\n sharesPerPriceUpdate: number;\\n /** Cooldown for issue new shares cooldown in game cycles (1 game cycle = 200ms) */\\n issueNewSharesCooldown: number;\\n /** Cooldown for selling shares in game cycles (1 game cycle = 200ms) */\\n sellSharesCooldown: number;\\n teaCostPerEmployee: number;\\n gameCyclesPerMarketCycle: number;\\n gameCyclesPerCorpStateCycle: number;\\n secondsPerMarketCycle: number;\\n warehouseInitialCost: number;\\n warehouseInitialSize: number;\\n warehouseSizeUpgradeCostBase: number;\\n officeInitialCost: number;\\n officeInitialSize: number;\\n officeSizeUpgradeCostBase: number;\\n bribeThreshold: number;\\n bribeAmountPerReputation: number;\\n baseProductProfitMult: number;\\n dividendMaxRate: number;\\n /** Conversion factor for employee stats to initial salary */\\n employeeSalaryMultiplier: number;\\n marketCyclesPerEmployeeRaise: number;\\n employeeRaiseAmount: number;\\n /** Max products for a division without upgrades */\\n maxProductsBase: number;\\n /** The minimum decay value for morale/energy */\\n minEmployeeDecay: number;\\n smartSupplyOptions: CorpSmartSupplyOption[];\\n}\\n/** @public */\\ntype CorpStateName = \\\"START\\\" | \\\"PURCHASE\\\" | \\\"PRODUCTION\\\" | \\\"EXPORT\\\" | \\\"SALE\\\";\\n\\n/** @public */\\ntype CorpMaterialName =\\n | \\\"Minerals\\\"\\n | \\\"Ore\\\"\\n | \\\"Water\\\"\\n | \\\"Food\\\"\\n | \\\"Plants\\\"\\n | \\\"Metal\\\"\\n | \\\"Hardware\\\"\\n | \\\"Chemicals\\\"\\n | \\\"Drugs\\\"\\n | \\\"Robots\\\"\\n | \\\"AI Cores\\\"\\n | \\\"Real Estate\\\";\\n\\n/** @public */\\ntype CorpUnlockName =\\n | \\\"Export\\\"\\n | \\\"Smart Supply\\\"\\n | \\\"Market Research - Demand\\\"\\n | \\\"Market Data - Competition\\\"\\n | \\\"VeChain\\\"\\n | \\\"Shady Accounting\\\"\\n | \\\"Government Partnership\\\"\\n | \\\"Warehouse API\\\"\\n | \\\"Office API\\\";\\n\\n/** @public */\\ntype CorpUpgradeName =\\n | \\\"Smart Factories\\\"\\n | \\\"Smart Storage\\\"\\n | \\\"DreamSense\\\"\\n | \\\"Wilson Analytics\\\"\\n | \\\"Nuoptimal Nootropic Injector Implants\\\"\\n | \\\"Speech Processor Implants\\\"\\n | \\\"Neural Accelerators\\\"\\n | \\\"FocusWires\\\"\\n | \\\"ABC SalesBots\\\"\\n | \\\"Project Insight\\\";\\n\\n/** @public */\\ntype CorpResearchName =\\n | \\\"Hi-Tech R&D Laboratory\\\"\\n | \\\"AutoBrew\\\"\\n | \\\"AutoPartyManager\\\"\\n | \\\"Automatic Drug Administration\\\"\\n | \\\"CPH4 Injections\\\"\\n | \\\"Drones\\\"\\n | \\\"Drones - Assembly\\\"\\n | \\\"Drones - Transport\\\"\\n | \\\"Go-Juice\\\"\\n | \\\"HRBuddy-Recruitment\\\"\\n | \\\"HRBuddy-Training\\\"\\n | \\\"Market-TA.I\\\"\\n | \\\"Market-TA.II\\\"\\n | \\\"Overclock\\\"\\n | \\\"Self-Correcting Assemblers\\\"\\n | \\\"Sti.mu\\\"\\n | \\\"uPgrade: Capacity.I\\\"\\n | \\\"uPgrade: Capacity.II\\\"\\n | \\\"uPgrade: Dashboard\\\"\\n | \\\"uPgrade: Fulcrum\\\"\\n | \\\"sudo.Assist\\\";\\n\\n/**\\n * Corporation material information\\n * @public\\n */\\ninterface CorpMaterialConstantData {\\n /** Name of the material */\\n name: string;\\n /** Size of the material */\\n size: number;\\n demandBase: number;\\n /** Min and max demand */\\n demandRange: [min: number, max: number];\\n competitionBase: number;\\n competitionRange: [min: number, max: number];\\n baseCost: number;\\n maxVolatility: number;\\n baseMarkup: number;\\n}\\n\\n/**\\n * Corporation industry information\\n * @public\\n */\\ninterface IndustryData {\\n /** Industry type */\\n type: CorpIndustryName;\\n /** Cost to make a new division of this industry type */\\n cost: number;\\n /** Materials required for production and their amounts */\\n requiredMaterials: Record;\\n /** Materials produced */\\n producedMaterials?: string[];\\n /** Whether the division makes materials */\\n makesMaterials: boolean;\\n /** Whether the division makes products */\\n makesProducts: boolean;\\n /** Product type */\\n productType?: string;\\n}\\n\\n/**\\n * Product in a warehouse\\n * @public\\n */\\ninterface Product {\\n /** Name of the product */\\n name: string;\\n /** Demand for the product, only present if \\\"Market Research - Demand\\\" unlocked */\\n demand: number | undefined;\\n /** Competition for the product, only present if \\\"Market Research - Competition\\\" unlocked */\\n competition: number | undefined;\\n /** Rating based on stats */\\n rating: number;\\n /** Effective rating in the specific city */\\n effectiveRating: number;\\n /** Product stats */\\n stats: {\\n quality: number;\\n performance: number;\\n durability: number;\\n reliability: number;\\n aesthetics: number;\\n features: number;\\n };\\n /** Production cost */\\n productionCost: number;\\n /** Desired sell price, can be \\\"MP+5\\\" */\\n desiredSellPrice: string | number;\\n /** Desired sell amount, e.g. \\\"PROD/2\\\" */\\n desiredSellAmount: string | number;\\n /** Amount of product stored in warehouse*/\\n stored: number;\\n /** Amount of product produced last cycle */\\n productionAmount: number;\\n /** Amount of product sold last cycle */\\n actualSellAmount: number;\\n /** A number between 0-100 representing percentage completion */\\n developmentProgress: number;\\n /** Funds that were spent on advertising the product */\\n advertisingInvestment: number;\\n /** Funds that were spent on designing the product */\\n designInvestment: number;\\n}\\n\\n/**\\n * Material in a warehouse\\n * @public\\n */\\ninterface Material {\\n /** Name of the material */\\n name: CorpMaterialName;\\n /** Amount of material */\\n stored: number;\\n /** Quality of the material */\\n quality: number;\\n /** Demand for the material, only present if \\\"Market Research - Demand\\\" unlocked */\\n demand: number | undefined;\\n /** Competition for the material, only present if \\\"Market Research - Competition\\\" unlocked */\\n competition: number | undefined;\\n /** Amount of material produced last cycle */\\n productionAmount: number;\\n /** Amount of material sold last cycle */\\n actualSellAmount: number;\\n /** Cost to buy material */\\n marketPrice: number;\\n /** Sell cost, can be \\\"MP+5\\\" */\\n desiredSellPrice: string | number;\\n /** Sell amount, can be \\\"PROD/2\\\" */\\n desiredSellAmount: string | number;\\n /** Export orders */\\n exports: Export[];\\n}\\n\\n/**\\n * Export order for a material\\n * @public\\n */\\ninterface Export {\\n /** Division the material is being exported to */\\n division: string;\\n /** City the material is being exported to */\\n city: CityName;\\n /** Amount of material exported */\\n amount: string;\\n}\\n\\n/**\\n * Warehouse for a division in a city\\n * @public\\n */\\ninterface Warehouse {\\n /** Amount of size upgrade bought */\\n level: number;\\n /** City in which the warehouse is located */\\n city: CityName;\\n /** Total space in the warehouse */\\n size: number;\\n /** Used space in the warehouse */\\n sizeUsed: number;\\n /** Smart Supply status in the warehouse */\\n smartSupplyEnabled: boolean;\\n}\\n\\n/**\\n * Office for a division in a city.\\n * @public\\n */\\nexport interface Office {\\n /** City of the office */\\n city: CityName;\\n /** Maximum number of employee */\\n size: number;\\n /** Maximum amount of energy of the employees */\\n maxEnergy: number;\\n /** Maximum morale of the employees */\\n maxMorale: number;\\n /** Amount of employees */\\n numEmployees: number;\\n /** Average energy of the employees */\\n avgEnergy: number;\\n /** Average morale of the employees */\\n avgMorale: number;\\n /** Total experience of all employees */\\n totalExperience: number;\\n /** Production of the employees */\\n employeeProductionByJob: Record;\\n /** Positions of the employees */\\n employeeJobs: Record;\\n}\\n\\n/**\\n * Corporation division\\n * @public\\n */\\ninterface Division {\\n /** Name of the division */\\n name: string;\\n /** Type of division, like Agriculture */\\n type: CorpIndustryName;\\n /** Awareness of the division */\\n awareness: number;\\n /** Popularity of the division */\\n popularity: number;\\n /** Production multiplier */\\n productionMult: number;\\n /** Amount of research in that division */\\n researchPoints: number;\\n /** Revenue last cycle */\\n lastCycleRevenue: number;\\n /** Expenses last cycle */\\n lastCycleExpenses: number;\\n /** Revenue this cycle */\\n thisCycleRevenue: number;\\n /** Expenses this cycle */\\n thisCycleExpenses: number;\\n /** Number of times AdVert has been bought */\\n numAdVerts: number;\\n /** Cities in which this division has expanded */\\n cities: CityName[];\\n /** Names of Products developed by this division */\\n products: string[];\\n /** Whether the industry of this division is capable of developing and producing products */\\n makesProducts: boolean;\\n /** How many products this division can support */\\n maxProducts: number;\\n}\\n\\n/**\\n * Corporation investment offer\\n * @public\\n */\\ninterface InvestmentOffer {\\n /** Amount of funds you will get from this investment */\\n funds: number;\\n /** Amount of share you will give in exchange for this investment */\\n shares: number;\\n /** Current round of funding (max 4) */\\n round: number;\\n}\\n\\n/**\\n * Interface Theme\\n * @public\\n */\\ninterface UserInterfaceTheme {\\n [key: string]: string | undefined;\\n primarylight: string;\\n primary: string;\\n primarydark: string;\\n successlight: string;\\n success: string;\\n successdark: string;\\n errorlight: string;\\n error: string;\\n errordark: string;\\n secondarylight: string;\\n secondary: string;\\n secondarydark: string;\\n warninglight: string;\\n warning: string;\\n warningdark: string;\\n infolight: string;\\n info: string;\\n infodark: string;\\n welllight: string;\\n well: string;\\n white: string;\\n black: string;\\n hp: string;\\n money: string;\\n hack: string;\\n combat: string;\\n cha: string;\\n int: string;\\n rep: string;\\n disabled: string;\\n backgroundprimary: string;\\n backgroundsecondary: string;\\n button: string;\\n}\\n\\n/**\\n * Interface Styles\\n * @public\\n */\\ninterface IStyleSettings {\\n fontFamily: string;\\n lineHeight: number;\\n}\\n\\n/**\\n * Game Information\\n * @public\\n */\\ninterface GameInfo {\\n version: string;\\n commit: string;\\n platform: string;\\n}\\n\\n/**\\n * Used for autocompletion\\n * @public\\n */\\ninterface AutocompleteData {\\n servers: string[];\\n scripts: string[];\\n txts: string[];\\n flags(schema: [string, string | number | boolean | string[]][]): { [key: string]: ScriptArg | string[] };\\n}\\n\";","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbitburner\"] = self[\"webpackChunkbitburner\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [736], () => (__webpack_require__(73681)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["AchievementEntry","achievement","unlockedOn","cssFiltersUnlocked","cssFiltersLocked","isUnlocked","mainColor","Settings","achievedOn","Date","toLocaleString","sx","border","mb","display","flexDirection","flexWrap","unlocked","size","colorFilters","justifyContent","px","variant","color","Name","maxWidth","Description","fontSize","AchievementIcon","imgLoaded","setImgLoaded","useState","Icon","width","height","m","visibility","src","encodeURI","style","filter","onLoad","alt","AchievementList","achievements","playerAchievements","cssPrimary","getFiltersFromHex","cssSecondary","data","map","find","playerAchievement","ID","sort","a","b","entry","secret","Secret","unavailable","Visible","locked","u","includes","pr","my","length","defaultExpanded","disableGutters","square","pt","item","key","mt","content","achievementData","bitNodeFinishedState","wd","GetServer","SpecialServers","Server","backdoorInstalled","Player","BlackOperationName","hasAccessToSF","bn","knowsAboutBitverse","FactionName","Condition","THE_BLACK_HAND","THE_COVENANT","replace","programs","CompletedProgramName","achs","i","sfAchievements","MONEY_1Q","MONEY_M1B","INSTALL_1","INSTALL_100","QUEUE_40","HACKING_100000","COMBAT_3000","NEUROFLUX_255","name","AugmentationName","level","NS2","scripts","values","some","s","filename","endsWith","FROZE","location","href","RUNNING_SCRIPTS_1000","workerScripts","DRAIN_SERVER","GetAllServers","moneyMax","moneyAvailable","MAX_RAM","maxRam","CONSTANTS","MAX_CORES","cpuCores","SCRIPTS_30","KARMA_1000000","STOCK_1q","DISCOUNT","p","SCRIPT_32GB","ramUsage","FIRST_HACKNET_NODE","hasHacknetServers","MAX_HACKNET_NODE","h","HacknetNode","ram","HacknetNodeConstants","cores","HACKNET_NODE_10M","REPUTATION_10M","Object","Factions","f","playerReputation","DONATION","favor","Math","floor","currentNodeMults","TRAVEL","CityName","WORKOUT","isClassWork","TOR","HOSPITALIZED","GANG","FULL_GANG","GangConstants","GANG_TERRITORY","AllGangs","territory","GANG_MEMBER_POWER","hack","str","def","dex","agi","cha","CORPORATION","CORPORATION_BRIBE","CorpUnlockName","CORPORATION_PROD_1000","division","productionMult","CORPORATION_EMPLOYEE_3000","getRecordValues","offices","reduce","numEmployees","CORPORATION_REAL_ESTATE","type","IndustryType","INTELLIGENCE_255","BLADEBURNER_DIVISION","BLADEBURNER_OVERCLOCK","SkillNames","Skills","maxLvl","BLADEBURNER_UNSPENT_100000","FIRST_HACKNET_SERVER","AdditionalUnlock","ALL_HACKNET_SERVER","HacknetServerConstants","MAX_HACKNET_SERVER","hs","HacknetServer","cache","HACKNET_SERVER_1B","MAX_CACHE","SLEEVE_8","INDECISIVE","c","setInterval","Router","Page","FAST_BN","CHALLENGE_BN1","CHALLENGE_BN2","CHALLENGE_BN3","CHALLENGE_BN6","CHALLENGE_BN7","CHALLENGE_BN8","CHALLENGE_BN9","CHALLENGE_BN10","augmentations","exp","hacking","strength","defense","agility","dexterity","charisma","CHALLENGE_BN12","BYPASS","Exploit","PROTOTYPETAMPERING","UNCLICKABLE","UNDOCUMENTEDFUNCTIONCALL","TIMECOMPRESSION","REALITYALTERATION","N00DLES","EDITSAVEFILE","UNACHIEVABLE","CHALLENGE_BN13","DEVMENU","RAINBOW","TRUE_RECURSION","calculateAchievements","missingAchievements","flatMap","id","document","useStyles","makeStyles","theme","createStyles","root","padding","spacing","userSelect","AchievementsRoot","classes","className","Aliases","Map","GlobalAliases","loadAliases","saveString","clear","parsedAliases","JSON","parse","alias","entries","set","loadGlobalAliases","printAliases","Terminal","parseAliasDeclaration","dec","global","re","matches","match","trimQuotes","addGlobalAlias","addAlias","value","delete","trim","removeAlias","hadAlias","has","substituteAliases","origCommand","applyAliases","depth","currentlyProcessingAliases","commandArray","split","join","localAlias","get","appliedAlias","splice","processedCommands","resolvedCommandArray","command","globalAlias","push","ArcadeRoot","page","setPage","None","onClick","AlertEvents","Megabyteburner2000","currentGame","BBCabinetRoot","useEffect","window","addEventListener","ev","isTrusted","origin","joystick","lineHeight","whiteSpace","overflow","borderColor","borderStyle","borderWidth","Augmentation","baseCost","baseRepRequirement","isSpecial","prereqs","mults","defaultMultipliers","factions","constructor","params","this","info","repCost","freeze","moneyCost","multName","getRecordKeys","mult","undefined","stats","startingMoney","x","formatPercent","desc","hacking_exp","strength_exp","defense_exp","dexterity_exp","agility_exp","charisma_exp","hacking_speed","hacking_chance","hacking_money","hacking_grow","faction_rep","company_rep","crime_money","crime_success","work_money","hacknet_node_money","hacknet_node_purchase_cost","hacknet_node_level_cost","bladeburner_max_stamina","bladeburner_stamina_gain","bladeburner_analysis","bladeburner_success_chance","generateStatsDescription","getLevel","aug","getNextLevel","getBaseAugmentationPriceMultiplier","getGenericAugmentationPriceMultiplier","pow","applyAugmentation","reapply","staticAugmentation","Augmentations","mergeMultipliers","ownedNfg","pAug","ownedAug","PlayerOwnedAugmentation","installAugmentations","force","dialogBoxCreate","augmentationList","nfgIndex","console","error","prestigeAugmentation","isRepeatableAug","getAugCost","multiplier","soaAugCount","augName","donationBonus","metadata","Infinity","hacknet_node_ram_cost","hacknet_node_core_cost","toFixed","factionName","getUnstableCircadianModulatorParams","createEnumKeyedRecord","initCircadianModulator","randomBonuses","bonuses","description","randomNumber","WHRNG","now","step","random","getRandomBonus","UnstableCircadianModulatorParams","forEach","NeuroFluxDisplay","e","EntropyDisplay","formatNumberNoSuffix","AugmentationsRoot","props","installOpen","setInstallOpen","rerender","useRerender","mx","alignItems","title","ml","open","onClose","onConfirm","installAugmentationsFn","confirmationText","gridTemplateColumns","disabled","exportGameFn","canGetBonus","gap","InstalledAugmentations","sourceAugs","selectedAug","setSelectedAug","OwnedAugmentationsOrderSetting","aug1","aug2","localeCompare","overflowY","borderRight","k","selected","maxHeight","BitNodeModifiedStats","base","opacity","MultiplierList","listItems","rows","current","augmented","bnMult","isNaN","py","primary","secondary","disableTypography","disablePadding","PlayerMultipliers","augP","augObj","calculateAugmentedStats","leftColData","defineProperty","rightColData","PreReqs","ownedPreReqs","hasPreReqs","preAug","Requirement","fulfilled","gridArea","mr","Exclusive","transform","PurchasableAugmentations","augNames","PurchasableAugmentation","parent","owned","ownedAugNames","setOpen","interval","clearInterval","augLevel","augCosts","cost","sleeveAugs","minWidth","purchaseAugmentation","canPurchase","float","gridTemplateAreas","textOverflow","formatMoney","rep","formatReputation","faction","PurchaseAugmentationModal","money","autoFocus","PurchasedAugmentations","augs","displayName","enterNextDelay","safeGetSf","sfNum","ExploitName","lvl","n","srcFileKey","sfObj","SourceFiles","getMaxLevel","maxLevel","keys","SourceFilesElement","sourceFilesCopy","exploits","sfList","n1","__lvl1","n2","__lvl2","selectedSf","setSelectedSf","BitNode","difficulty","number","BitNodes","initBitNodes","BitNode1","BitNode2","BitNode3","BitNode4","BitNode5","BitNode6","BitNode7","BitNode8","BitNode9","BitNode10","BitNode11","BitNode12","BitNode13","BitNodeMultipliers","getBitNodeMultipliers","HackingLevelMultiplier","ServerGrowthRate","ServerMaxMoney","ServerStartingMoney","PurchasedServerSoftcap","CrimeMoney","FactionPassiveRepGain","FactionWorkRepGain","CorporationSoftcap","CorporationDivisions","InfiltrationMoney","StaneksGiftPowerMultiplier","StaneksGiftExtraSize","WorldDaemonDifficulty","HomeComputerRamCost","PurchasedServerCost","CompanyWorkMoney","HacknetNodeMoney","ScriptHackMoney","RepToDonateToFaction","AugmentationMoneyCost","AugmentationRepCost","GangSoftcap","GangUniqueAugs","ClassGymExpGain","CompanyWorkExpGain","CrimeExpGain","FactionWorkExpGain","HackExpGain","ServerStartingSecurity","InfiltrationRep","CorporationValuation","DaedalusAugsRequirement","FourSigmaMarketDataCost","FourSigmaMarketDataApiCost","BladeburnerRank","BladeburnerSkillCost","ManualHackMoney","ScriptHackMoneyGain","CodingContractMoney","StrengthLevelMultiplier","DefenseLevelMultiplier","DexterityLevelMultiplier","AgilityLevelMultiplier","CharismaLevelMultiplier","PurchasedServerLimit","PurchasedServerMaxRam","ServerWeakenRate","inc","min","Error","initBitNodeMultipliers","replaceCurrentNodeMults","getRecordEntries","BitFlumeEvent","EventEmitter","BitFlumeModal","subscribe","flume","quick","BitnodeMultiplierDescription","React","component","Paper","old","in","BitNodeMultipliersDisplay","maxSfLevel","columnCount","columnGap","GeneralMults","SkillMults","FactionMults","AugmentationMults","HackingMults","PurchasedServersMults","StockMults","CrimeMults","InfiltrationMults","CompanyMults","GangMults","CorporationMults","BladeburnerMults","StanekMults","BNMultTable","rowsArray","rowData","uniqueId","marginBottom","sectionName","String","extraSize","portal","cursor","fontFamily","fontWeight","level0","level1","level2","level3","BitNodePortal","portalOpen","setPortalOpen","bitNode","cssClass","toString","destroyedBitNode","BitverseRoot","destroyed","destroySequence","setDestroySequence","lines","onDone","auto","nextSourceFileLvl","max","Number","node","PortalModal","bitNodeKey","maxSourceFileLevel","newLevel","B","enterBitNode","Action","autoLevel","baseDifficulty","difficultyFac","rewardFac","successes","failures","rankGain","rankLoss","hpLoss","hpLost","isStealth","isKill","count","getRandomInt","weights","int","decays","teamCount","addOffset","sum","weight","hasOwn","EPSILON","decay","getDifficulty","attempt","inst","person","getSuccessChance","getActionTimePenalty","getActionTime","baseTime","BladeburnerConstants","skillFac","skillMultipliers","actionTime","effAgility","skills","effAgi","effDexterity","effDex","statFac","ceil","getTeamSuccessBonus","__inst","getActionTypeSkillSuccessBonus","getChaosCompetencePenalty","city","getCurrentCity","est","popEst","pop","getChaosDifficultyBonus","chaos","diff","getEstSuccessChance","clamp","real","abs","low","high","r","competence","stat","playerStatLvl","queryStatFromString","charAt","toUpperCase","slice","effMultiplier","calculateIntelligenceBonus","intelligence","calculateStaminaPenalty","comms","successChanceAll","successChanceStealth","successChanceKill","getSuccessesNeededForNextLevel","baseSuccessesPerLevel","setMaxLevel","toJSON","Generic_toJSON","static","Generic_fromJSON","constructorsForReviver","ActionIdentifier","BlackOperation","Operation","super","BlackOperations","reqdRank","Bladeburner","numHosp","moneyLost","rank","maxRank","skillPoints","totalSkillPoints","teamSize","sleeveSize","teamLost","storedCycles","randomEventCounter","actionTimeToComplete","actionTimeCurrent","actionTimeOverflow","action","ActionTypes","cities","City","staminaBonus","maxStamina","stamina","contracts","operations","blackops","logging","general","ops","events","automateEnabled","automateActionHigh","automateThreshHigh","automateActionLow","automateThreshLow","consoleHistory","consoleLogs","updateSkillMultipliers","calculateMaxStamina","create","canAttemptBlackOp","actionId","getActionObject","nm","indexOf","isAvailable","startAction","resetAction","exceptionAlert","testBlackOp","log","getRecruitmentTime","upgradeSkill","skill","skillName","executeConsoleCommands","commands","arrayOfCommands","executeConsoleCommand","postToConsole","input","shift","getTimestamp","clearConsole","prestige","bladeburnerFac","joinFaction","storeCycles","numCycles","getActionIdFromTypeAndName","convertedType","toLowerCase","convertedName","startsWith","executeStartConsoleCommand","args","GeneralActions","executeSkillConsoleCommand","skillNames","multKeys","warn","currentLevel","pointCost","calculateCost","executeLogConsoleCommand","flag","executeHelpConsoleCommand","line","ConsoleHelpText","helpText","executeAutomateConsoleCommand","variable","val","highLow","parseFloat","parseCommandArguments","start","endQuote","KEY","substr","triggerMigration","sourceCityName","cityHelper","getEnumHelper","destCityName","destCity","sourceCity","rand","percentage","round","triggerPotentialMigration","chance","randomEvent","getActionStats","success","difficultyMult","time","successMult","unweightedGain","unweightedIntGain","skillMult","expGain","hackExp","strExp","defExp","dexExp","agiExp","chaExp","intExp","reputation","getDiplomacyEffectiveness","getRecruitmentSuccessChance","effCharisma","effCha","charismaFactor","sleeveSupport","joining","resetSkillMultipliers","successChanceContract","successChanceOperation","successChanceEstimate","effHack","effStr","effDef","effInt","multiplierNames","multiplierName","getMultiplier","multiplierValue","completeOperation","losses","sup","isSleeveSupportWork","currentWork","takeDamage","hp","improvePopulationEstimateByPercentage","changePopulationByPercentage","changeEstEqually","nonZero","changeChaosByCount","change","changeChaosByPercentage","changePopulationByCount","estChange","estOffset","completeContract","actionIdent","improvePopulationEstimateByCount","completeAction","isPlayer","retValue","newWorkStats","isOperation","difficultyMultiplier","rewardMultiplier","moneyGain","gain","changeRank","whoAmI","formatBigNumber","loss","damage","calculateHospitalizationCost","logLossText","teamLossMax","strExpGain","defExpGain","dexExpGain","agiExpGain","staminaGain","formatExp","eff","hackingExpGain","charismaExpGain","successChance","recruitTime","regenerateHp","formatStamina","contract","growthF","Growths","operation","cityName","infiltrateSynthoidCommunities","infilSleeves","isSleeveInfiltrateWork","amt","bladeburnersFactionName","isMember","favorBonus","rankNeededForSp","gainedSkillPoints","processAction","seconds","calculateStaminaGainPerSecond","maxStaminaBonus","oldMax","Tracking","Contract","Retirement","Investigation","Raid","Assassination","process","msg","op","getTypeAndNameFromActionId","res","types","getContractNamesNetscriptFn","getOperationNamesNetscriptFn","getBlackOpNamesNetscriptFn","getGeneralActionNamesNetscriptFn","getSkillNamesNetscriptFn","startActionNetscriptFn","workerScript","errorLogText","canRunOp","getActionTimeNetscriptFn","actionObj","getActionEstimatedSuccessChanceNetscriptFn","recChance","getActionCountRemainingNetscriptFn","getSkillLevelNetscriptFn","getSkillUpgradeCostNetscriptFn","upgradeSkillNetscriptFn","getTeamSizeNetscriptFn","setTeamSizeNetscriptFn","sanitizedSize","joinBladeburnerFactionNetscriptFn","actionNames","actionName","Skill","costInc","thisUpgrade","recursiveMode","unFloored","Idle","BlackOp","Training","Recruitment","FieldAnalysis","Diplomacy","CyclesPerSecond","StaminaGainPerSecond","BaseStaminaLoss","MaxStaminaToGainFactor","DifficultyToTimeFactor","DiffMultExponentialFactor","DiffMultLinearFactor","EffAgiLinearFactor","EffDexLinearFactor","EffAgiExponentialFactor","EffDexExponentialFactor","BaseRecruitmentTimeNeeded","PopulationThreshold","PopulationExponent","ChaosThreshold","BaseStatGain","BaseIntGain","ActionCountGrowthPeriod","RankToFactionRepFactor","RankNeededForFaction","ContractSuccessesPerLevel","OperationSuccessesPerLevel","RanksPerSkillPoint","ContractBaseMoneyGain","HrcHpGain","HrcStaminaGain","Contracts","helpList","automate","cls","help","stop","stealthIcon","xmlns","viewBox","fill","d","killIcon","Operations","BladesIntuition","Cloak","Marksman","WeaponProficiency","ShortCircuit","DigitalObserver","Tracer","Overclock","Reaper","EvasiveSystem","Datamancer","CybersEdge","HandsOfMidas","Hyperdrive","ActionLevel","isActive","bladeburner","canIncrease","canDecrease","AllPages","setValue","onChange","event","tab","label","Autolevel","checked","target","BlackOpElem","hasReqdRank","computedActionTimeCurrent","actionData","createProgressBarText","progress","convertTimeMsToTimeElapsedString","BlackOpList","blackopName","blackop","reverse","BlackOpPage","BladeburnerCinematic","BladeburnerRoot","textfield","margin","backgroundColor","colors","backgroundsecondary","nopadding","preformatted","list","Line","Console","setCommand","consoleInput","useRef","consoleHistoryIndex","setConsoleHistoryIndex","paddingBottom","focus","Logs","tabIndex","inputRef","onKeyDown","preventDefault","len","prevCommand","currentTarget","InputProps","startAdornment","spellCheck","scrollHook","scrollTop","scrollHeight","ref","ContractElem","ContractList","names","C","ContractPage","GeneralActionElem","GeneralActionList","actions","GeneralActionPage","KillIcon","OperationElem","OperationList","OperationPage","SkillElem","canLevel","onUpgrade","SkillList","SkillPage","setRerender","valid","StartButton","Stats","travelOpen","setTravelOpen","inFaction","overflowX","wordBreak","alignSelf","formatPopulation","StealthIcon","SuccessChance","estimatedSuccessChance","TeamSizeButton","TeamSizeModal","setTeamSize","placeholder","num","TravelModal","travel","currentCity","onTravel","MAX_BET","DECK_COUNT","Result","Blackjack","deck","Deck","initialBet","state","playerHand","Hand","dealerHand","bet","betInput","gameInProgress","result","Pending","gains","wagerInvalid","wagerInvalidHelperText","canStartGame","startGame","reachedLimit","win","safeDrawCard","setState","getTrueHandValue","finishGame","Tie","PlayerWonByBlackjack","DealerWon","getHandValue","hand","cards","handValues","valuesUnder21","getHandDisplayValues","isHandBusted","Set","playerHit","newHand","addCards","playerStay","newDealerHand","dealerHandValue","PlayerWon","playerHandValue","wagerOnChange","wager","startOnClick","render","playerHandValues","dealerHandValues","helperText","position","elevation","card","prev","curr","hidden","Suit","Card","suit","formatValue","isRedSuit","Hearts","Diamonds","getStringRepresentation","numDecks","reset","shuffle","drawCard","j","isEmpty","removeByIndex","borderRadius","textAlign","red","black","ReactCard","CoinFlip","investment","setInvestment","setResult","status","setStatus","playLock","setPlayLock","play","guess","letter","BadRNG","correct","setTimeout","parseInt","endAdornment","trusted","reached","getTime","s1","s2","s3","totalPlaytime","v","SFC32RNG","seed","imul","charCodeAt","genSeed","t","maxPlay","redNumbers","strategies","Red","payout","Black","Odd","Even","High","Low","Third1","Third2","Third3","Single","Roulette","rng","canPlay","setCanPlay","setN","lock","setLock","strategy","playerWin","isRed","currentNumber","colSpan","symbols","getPayout","payLines","SlotMachine","index","setIndex","locks","setLocks","stoppedOne","copy","every","getPaylineData","payline","point","countSequence","checkWinnings","getTable","generateRandomContract","problemType","getRandomProblemType","reward","getRandomReward","randServer","getRandomServer","contractFn","getRandomFilename","CodingContract","addContract","generateRandomContractOnHome","serv","generateDummyContract","CodingContractTypes","generateContract","problemTypes","server","fn","rewardType","factionsThatAllowHacking","fac","getInfo","offerHackingWork","CodingContractRewardType","sanitizeRewardType","numFactions","allJobs","servers","serversOnNetwork","randIndex","purchasedByPlayer","hostname","validatedPath","resolveContractFilePath","CodingContractType","gen","solver","numTries","generate","md","codingContractTypesMetadata","CodingContractResult","tries","path","getData","getDescription","getMaxNumTries","getType","isSolution","solution","async","Promise","resolve","CodingContractEvent","Cancelled","onAttempt","Success","Failure","Companies","getCompaniesMetadata","CompanyName","Company","loadCompanies","loadedCompanies","Reviver","loadedCompanyName","loadedCompany","company","assertLoadingType","loadedRep","loadedFavor","hasFaction","companyPositions","expMultiplier","salaryMultiplier","jobStatReqOffset","jobName","add","hasPosition","pos","hasAgentPositions","JobName","hasBusinessConsultantPositions","hasBusinessPositions","hasEmployeePositions","hasITPositions","hasSecurityPositions","hasSoftwareConsultantPositions","hasSoftwarePositions","hasWaiterPositions","getFavorGain","prestigeSourceFile","totalRep","favorToRep","repToFavor","includedKeys","CompanyPosition","nextPosition","baseSalary","repMultiplier","requiredHacking","reqdHacking","requiredStrength","reqdStrength","requiredDefense","reqdDefense","requiredDexterity","reqdDexterity","requiredAgility","reqdAgility","requiredCharisma","reqdCharisma","requiredReputation","reqdReputation","hackingEffectiveness","strengthEffectiveness","defenseEffectiveness","dexterityEffectiveness","agilityEffectiveness","charismaEffectiveness","strengthExpGain","defenseExpGain","dexterityExpGain","agilityExpGain","calculateJobPerformance","worker","hackRatio","strRatio","defRatio","dexRatio","agiRatio","chaRatio","reputationGain","isSoftwareJob","softwareJobs","isITJob","itJobs","isSecurityEngineerJob","isNetworkEngineerJob","netEngJobs","isBusinessJob","businessJobs","isSecurityJob","securityJobs","isAgentJob","agentJobs","isSoftwareConsultantJob","softwareConsultJobs","isBusinessConsultantJob","businessConsultJobs","isPartTimeJob","CompanyPositions","getCompanyPositionMetadata","getJobRequirementText","tooltiptext","reqText","offset","reqHacking","reqStrength","reqDefense","reqDexterity","reqAgility","reqCharisma","reqRep","substring","getNextCompanyPositionHelper","currPos","nextPosName","allTechJobs","softwareJobsToHeadOfEng","softwareJobsToLeadDev","businessJobToOpsManager","QuitJobModal","companyName","onQuit","companyNameAsLocationName","VersionString","isDevBranch","VersionNumber","MaxSkillLevel","MilliPerCycle","CorpFactionRepRequirement","BaseCostFor1GBOfRamHome","BaseCostFor1GBOfRamServer","TravelCost","BaseFavorToDonate","DonateMoneyToRepDivisor","FactionReputationToFavorBase","FactionReputationToFavorMult","CompanyReputationToFavorBase","CompanyReputationToFavorMult","NeuroFluxGovernorLevelMult","NumNetscriptPorts","MAX_SAFE_INTEGER","HomeComputerMaxRam","ServerBaseGrowthRate","ServerMaxGrowthRate","ServerFortifyAmount","ServerWeakenAmount","MultipleAugMultiplier","TorRouterCost","HospitalCostPerHp","IntelligenceCrimeWeight","IntelligenceInfiltrationWeight","IntelligenceCrimeBaseExpGain","IntelligenceProgramBaseExpGain","IntelligenceGraftBaseExpGain","IntelligenceTerminalHackBaseExpGain","IntelligenceSingFnBaseExpGain","IntelligenceClassBaseExpGain","MillisecondsPer20Hours","GameCyclesPer20Hours","MillisecondsPer10Hours","GameCyclesPer10Hours","MillisecondsPer8Hours","GameCyclesPer8Hours","MillisecondsPer4Hours","GameCyclesPer4Hours","MillisecondsPer2Hours","GameCyclesPer2Hours","MillisecondsPerHour","GameCyclesPerHour","MillisecondsPerHalfHour","GameCyclesPerHalfHour","MillisecondsPerQuarterHour","GameCyclesPerQuarterHour","MillisecondsPerFiveMinutes","GameCyclesPerFiveMinutes","BaseFocusBonus","ClassDataStructuresBaseCost","ClassNetworksBaseCost","ClassAlgorithmsBaseCost","ClassManagementBaseCost","ClassLeadershipBaseCost","ClassGymBaseCost","ClassStudyComputerScienceBaseExp","ClassDataStructuresBaseExp","ClassNetworksBaseExp","ClassAlgorithmsBaseExp","ClassManagementBaseExp","ClassLeadershipBaseExp","CodingContractBaseFactionRepGain","CodingContractBaseCompanyRepGain","CodingContractBaseMoneyGain","AugmentationGraftingCostMult","AugmentationGraftingTimeBase","SoACostMult","SoARepMult","EntropyEffect","TotalNumBitNodes","InfiniteLoopLimit","Donations","LatestUpdate","NewDivision","corporation","industry","divisions","maxDivisions","IndustriesData","startingCost","funds","Division","corp","removeDivision","otherDivision","warehouse","warehouses","material","materials","exports","purchaseOffice","corpConstants","addNonIncomeFunds","OfficeSpace","IssueDividends","rate","dividendRate","GoPublic","numShares","ceoOwnership","totalShares","initialSharePrice","getTargetSharePrice","public","sharePrice","issuedShares","IssueNewShares","amount","failureReason","issueNewSharesFailureReason","newSharePrice","profit","cooldownMultiplier","issueNewSharesCooldown","privateOwnedRatio","investorShares","maxPrivateShares","privateShares","AcceptInvestmentOffer","fundingRound","valuation","percShares","funding","investShares","SellMaterial","price","temp","eval","desiredSellPrice","q","tempQty","maxSellPerCycle","productionAmount","desiredSellAmount","SellProduct","product","all","newPrice","cityData","newAmount","qty","maxSellAmount","stored","SetSmartSupply","smartSupply","smartSupplyEnabled","SetSmartSupplyOption","useOption","smartSupplyOptions","BuyMaterial","isRelevantMaterial","buyAmount","BulkPurchase","matSize","MaterialInfo","maxAmount","sizeUsed","marketPrice","SellShares","sellSharesFailureReason","newSharesUntilUpdate","calculateShareSale","shareSalesUntilPriceUpdate","shareSaleCooldown","BuyBackShares","buybackSharesFailureReason","calculateShareBuyback","UpgradeOfficeSize","office","initialPriceMult","BuyTea","getTeaCost","setTea","ThrowParty","costPerEmployee","setParty","purchaseWarehouse","Warehouse","loc","UpgradeWarehouseCost","Array","from","acc","UpgradeWarehouse","sizeUpgradeCost","updateSize","HireAdVert","getAdVertCost","applyAdVert","MakeProduct","productName","designInvest","marketingInvest","makesProducts","products","maxProducts","Product","createCity","designInvestment","advertisingInvestment","Research","researchingDivision","researchName","researchTree","IndustryResearchTrees","research","ResearchMap","researched","researchPoints","ExportMaterial","targetDivision","targetCity","existingExport","sanitizedAmt","testReplacement","replaced","evaluated","exportObj","CancelExportMaterial","divisionName","findIndex","LimitProductProduction","quantity","productionLimit","LimitMaterialProduction","SetMaterialMarketTA1","on","marketTa1","SetMaterialMarketTA2","marketTa2","SetProductMarketTA1","SetProductMarketTA2","Corporation","JSONMap","revenue","expenses","dividendTax","unlocks","JSONSet","upgrades","CorpUpgradeName","previousTotalAssets","totalAssets","cycleValuation","valuationsList","CorporationState","seedFunded","addFunds","isFinite","getState","marketCycles","gameCycles","ind","resetImports","lastCycleRevenue","lastCycleExpenses","cycleProfit","retainedEarnings","getCycleDividends","updateTotalAssets","determineCycleValuation","determineValuation","updateSharePrice","nextState","dividendsPerShare","dividends","assetDelta","assets","mat","averagePrice","prod","productionCost","ceoConfidence","sqrt","targetPrice","calculateMaxNewShares","maxNewSharesUnrounded","sharesRemaining","sharesUntilUpdate","sharesSold","sharesPerStep","sign","maxIterations","getInvestmentOffer","shares","convertCooldownToString","cd","purchaseUnlock","unlockName","CorpUnlocks","purchaseUpgrade","upgradeName","isPositiveInteger","upgrade","CorpUpgrades","totalCost","calculateUpgradeCost","benefit","getProductionMultiplier","getStorageMultiplier","getDreamSenseGain","getAdvertisingMultiplier","getEmployeeCreMultiplier","getEmployeeChaMult","getEmployeeIntMult","getEmployeeEffMult","getSalesMult","getScientificResearchMult","getStarterGuide","homeComp","handbook","LiteratureName","messages","showLiterature","stateNames","requiredMaterials","treeInitialized","producedMaterials","additional","hasResearch","awareness","popularity","realEstateFactor","researchFactor","hardwareFactor","robotFactor","aiCoreFactor","advertisingFactor","thisCycleRevenue","thisCycleExpenses","newInd","numAdVerts","scienceFactor","hasMaximumNumberProducts","calculateProductionFactors","multSum","cityMult","Hardware","Robots","updateWarehouseSizeUsed","updateMaterialSizeUsed","employeeSalary","officeLoc","processMaterialMarket","processProductMarket","popularityGain","awarenessGain","MAX_VALUE","processMaterials","isArray","processProducts","reqMats","prodMats","wh","processMarket","matName","demand","competition","employeeProductionByJob","CorpEmployeeJob","getScientificResearchMultiplier","totalSalary","smartBuy","reqMat","smartSupplyStore","buyAmt","maxAmt","quality","worseAmt","buyArray","totalSize","freeSpace","buyMult","importAmount","maxProd","getOfficeProductivity","totalMatSize","tmp","reqMatName","reqQty","producableFrac","req","requiredMatsEntries","avgQlt","divider","reqMatQtyNeeded","tempQlt","logQlt","materialProduction","prodMatName","actualSellAmount","businessFactor","getBusinessFactor","getAdvertisingFactors","marketFactor","getMarketFactor","sellAmt","adjustedQty","isString","markupLimit","getMarkupLimit","sCost","numerator","sqrtNumerator","sqrtDenominator","getSalesMultiplier","denominator","optimalPrice","uiMarketPrice","markup","exportedLastCycle","expI","expIndustry","expWarehouse","tempMaterial","amtStr","finished","creationCity","createProduct","developmentProgress","finishProduct","processProduct","totalProfit","forProduct","getProductProductionMultiplier","netStorageSize","tempEffRat","rating","effectiveRating","sellPrice","sCostString","discontinueProduct","advMult","opProd","engrProd","mgmtProd","total","mgmtFactor","businessProd","calculateEffectWithFactors","awarenessFac","popularityFac","ratioFac","updateResearchTree","getEmployeeChaMultiplier","getEmployeeEffMultiplier","getEmployeeIntMultiplier","getKeyList","removedKeys","CorpMaterialName","Water","Ore","Minerals","Food","Plants","Metal","Chemicals","Drugs","AiCores","RealEstate","SmartSupplyOption","leftovers","imports","none","CorpBaseResearchName","Lab","AutoBrew","AutoParty","AutoDrug","CPH4Inject","Drones","DronesAssembly","DronesTransport","GoJuice","RecruitHR","TrainingHR","MarketTa1","MarketTa2","SelfCorrectAssemblers","Stimu","CorpProductResearchName","Capacity1","Capacity2","Dashboard","Fulcrum","CorpResearchName","Material","demandRange","competitionRange","maxVolatility","materialNames","demandBase","competitionBase","baseMarkup","priceChange","compChange","dmdChange","maxEnergy","maxMorale","avgEnergy","avgMorale","avgIntelligence","avgCharisma","avgCreativity","avgEfficiency","totalExperience","autoTea","autoParty","teaPending","partyMult","employeeJobs","employeeNextJobs","atCapacity","hireRandomEmployee","jobCount","perfMult","Intern","reduction","increase","calculateEmployeeProductivity","effCre","effEff","prodBase","prodMult","getElementById","autoAssignJob","job","creationJobFactors","performance","durability","reliability","aesthetics","features","employeeProd","totalProd","engrRatio","mgmtRatio","rndRatio","opsRatio","busRatio","totalMult","calculateRating","busmgtgRatio","ratingWeights","statName","advertisingMult","employeeChaMult","employeeCreMult","employeeEffMult","employeeIntMult","productProductionMult","salesMult","sciResearchMult","storageMult","AutoPartyManager","Node","children","addChild","findNode","setParent","ResearchTree","getAllNodes","queue","getMultiplierHelper","propName","setRoot","createFullRecordFromEntries","makeNode","createBaseResearchTreeNodes","rootNode","autoBrew","autoDrugs","cph4","drones","dronesAssembly","dronesTransport","goJuice","hrRecruitment","hrTraining","marketta1","marketta2","overclock","scAssemblers","stimu","getBaseResearchTreeCopy","baseResearchTree","getProductIndustryResearchTreeCopy","upgradeFulcrum","upgradeCapacity1","upgradeCapacity2","upgradeDashboard","employeePositions","industryNames","unlockNames","upgradeNames","researchNamesBase","researchNamesProductOnly","researchNames","initialShares","sharesPerPriceUpdate","sellSharesCooldown","teaCostPerEmployee","gameCyclesPerMarketCycle","gameCyclesPerCorpStateCycle","secondsPerMarketCycle","warehouseInitialCost","warehouseInitialSize","warehouseSizeUpgradeCostBase","officeInitialCost","officeInitialSize","officeSizeUpgradeCostBase","bribeThreshold","bribeAmountPerReputation","baseProductProfitMult","dividendMaxRate","employeeSalaryMultiplier","marketCyclesPerEmployeeRaise","employeeRaiseAmount","maxProductsBase","fundingRoundShares","fundingRoundMultiplier","valuationLength","minEmployeeDecay","PurchaseMultipliers","x1","x5","x10","x50","x100","MAX","basePrice","priceMult","recommendStarting","makesMaterials","verb","industryType","resetIndustryResearchTrees","calculateMaxAffordableUpgrade","Lvl","Multi","Base","maxAffordableUpgrades","formatShares","maxNewShares","cooldown","CityTabs","useDivision","setCity","mainContent","cityStateSetter","canExpand","Context","useCorporation","useContext","CorporationRoot","setDivisionName","_event","scrollButtons","div","EmployeeCount","next","AutoAssignJob","currJob","nextJob","nextUna","AutoManagement","currUna","align","formatCorpStat","DivisionOffice","upgradeOfficeSizeOpen","setUpgradeOfficeSizeOpen","throwPartyOpen","setThrowPartyOpen","hireEmployeeDisabledText","teaDisabledText","partyPending","partyDisabledText","disabledTooltip","normalTooltip","MakeProductButton","makeOpen","setMakeOpen","hasMaxProducts","createProductButtonText","disabledText","buttonProps","DivisionOverview","helpOpen","setHelpOpen","researchOpen","setResearchOpen","advertisingInfo","advertisingFactors","totalAdvertisingFac","convertEffectFacToGraphic","totalTicks","retainHeight","minHeight","WarehouseRoot","smartSupplyOpen","setSmartSupplyOpen","canAffordUpgrade","stateText","mats","isInStock","isRelevant","productElements","breakdownItems","formatMaterialSize","prodName","breakdown","DivisionWarehouse","EmptyWarehouse","ExpandNewCity","possibleCities","err","IndustryDescription","IndustryProductEquation","reqs","reqAmt","raw","LevelableUpgrade","tooltip","xs","message","MainPanel","MaterialElem","purchaseMaterialOpen","setPurchaseMaterialOpen","exportOpen","setExportOpen","sellMaterialOpen","setSellMaterialOpen","limitProductionOpen","setLimitProductionOpen","totalGain","tutorial","purchaseButtonText","sellButtonText","limitMaterialButtonText","toExponential","formatQuality","disablePurchaseLimit","unbuyable","palette","MoneyCost","MultiplierButtons","selectedMultiplier","setMultiplier","text","NewDivisionTab","allIndustries","setIndustry","setName","newDivision","Overview","multRows","appendMult","DividendsStats","BonusTime","BribeButton","SellDivisionButton","RestartButton","PublicButtons","PrivateButtons","Upgrades","findInvestorsopen","setFindInvestorsopen","goPublicopen","setGoPublicopen","fundingAvailable","findInvestorsTooltip","purchaseMultiplier","setPurchaseMultiplier","unlocksNotOwned","unlock","container","sellSharesOpen","setSellSharesOpen","buybackSharesOpen","setBuybackSharesOpen","issueNewSharesOpen","setIssueNewSharesOpen","issueDividendsOpen","setIssueDividendsOpen","sellSharesOnCd","issueNewSharesOnCd","canBribe","offersWork","totalDividends","playerEarnings","storedTime","ProductElem","sellOpen","setSellOpen","limitOpen","setLimitOpen","discontinueOpen","setDiscontinueOpen","cancelOpen","setCancelOpen","hasUpgradeDashboard","limitProductionButtonText","Unlock","BribeFactionModal","setMoney","NaN","selectedFaction","setSelectedFaction","repGain","getRepText","bribe","BuybackSharesModal","setShares","buy","defaultValue","forPurchase","CancelProductModal","CreateCorporationModal","canSelfFund","disabledTextForNoName","DiscontinueProductModal","ExportModal","exportAmount","setExportAmount","possibleDivisions","defaultDivision","setTargetDivision","defaultCity","setTargetCity","removeExport","FindInvestorsModal","GoPublicModal","goPublic","IssueDividendsModal","percent","setPercent","canIssue","issueDividends","IssueNewSharesModal","newShares","issueNewShares","nextCooldown","LimitMaterialProductionModal","limit","setLimit","limitMaterialProduction","LimitProductProductionModal","limitProductProduction","MakeProductModal","availableCities","design","setDesign","marketing","setMarketing","makeProduct","BulkPurchaseSection","setBuyAmt","setDisabled","BulkPurchaseText","parsedAmt","formatMatPurchaseAmount","bulkPurchase","PurchaseMaterialModal","purchaseMaterial","Upgrade","wrapInTooltip","ele","but","unmountOnExit","ResearchModal","SellCorporationModal","SellDivisionModal","allDivisions","divisionToSell","setDivisionToSell","calculatePrice","SellMaterialModal","setAmt","setPrice","sellMaterial","marginLeft","marginRight","control","SellProductModal","setChecked","iQty","setQty","setPx","sellProduct","SellSharesModal","sell","SSoption","newValue","SmartSupplyModal","ThrowPartyModal","setCost","canParty","throwParty","formatMultiplier","EffectText","UpgradeSizeButton","upgradeSize","UpgradeOfficeSizeModal","costMultiplier","upgradeCost","upgradeCost15","maxMult","maxNum","multIncrease","upgradeCostMax","ActiveFragment","fragment","y","highestCharge","numCharge","rotation","collide","other","thisFragment","otherFragment","dx","dy","fragSize","shape","fullAt","FragmentById","worldX","worldY","neighbors","cell","assign","BaseGift","fragments","_width","_height","fragmentAt","aFrag","Fragments","Fragment","power","sy","qx","qy","candidates","coord","cells","candidate","_","X","Shapes","FragmentType","NoneFragment","DeleteFragment","Effect","tpe","HackingChance","HackingSpeed","HackingMoney","HackingGrow","Hacking","Strength","Defense","Dexterity","Agility","Charisma","HacknetMoney","HacknetCost","Rep","WorkMoney","Crime","staneksGift","StaneksGift","loadStaneksGift","zeros","array","calculateGrid","gift","newgrid","isBonusCharging","justCharged","baseSize","StanekConstants","charge","af","threads","cotmg","inBonus","usedCycles","updateMults","StaneksGiftEvents","effect","boost","neighboor","CalculateEffect","canPlace","rootX","rootY","newFrag","place","findFragment","clearCharge","calculateMults","zoeAmt","sleeve","hasAugmentation","scaling","sleeveMults","scaleMultipliers","resetMultipliers","updateSkillLevels","includedProperties","RAMBonus","BaseSize","MaxSize","O","I","L","J","S","Z","T","ActiveFragmentSummary","summary","coordinate","borderBottom","perc","formatEffect","TableCell","Cell","cellProps","onMouseEnter","DummyGrid","ghostGrid","enter","click","FragmentInspector","setC","flexGrow","formatStaneksGiftCharge","effectAmt","formatStaneksGiftPower","FragmentPreview","elems","colorAt","FragmentOption","left","remaining","FragmentSelector","selectFragment","Grid","activeGrid","randomColor","MainBoard","setGhostGrid","setPos","setRotation","selectedFragment","setSelectedFragment","moveGhost","doRotate","removeEventListener","deleteAt","clickAt","StaneksGiftRoot","fontStyle","hacking_success_weight","strength_success_weight","defense_success_weight","dexterity_success_weight","agility_success_weight","charisma_success_weight","intelligence_exp","workName","tooltipText","karma","kills","commit","CrimeWork","crimeType","singularity","successRate","determineCrimeSuccess","Crimes","findCrime","roughName","fuzzMatch","fuzzyGetMember","CrimeType","checkIfConnectedToDarkweb","listAllDarkwebItems","DarkWebItems","program","buyDarkwebItem","itemName","pushProgram","isCreateProgramWork","buyAllDarkwebItems","itemsToBuy","DarkWebItem","BruteSSHProgram","FTPCrackProgram","RelaySMTPProgram","HTTPWormProgram","SQLInjectProgram","ServerProfiler","DeepscanV1","DeepscanV2","AutolinkProgram","FormulasProgram","DevMenuRoot","AchievementsDev","setPlayerAchievements","TransitionProps","expandIcon","Engine","achieved","grantAchievement","removeAchievement","Adjuster","subtract","tons","AugmentationsDev","augmentation","setAugmentation","bigNumber","BladeburnerDev","modifyBladeburnerRank","modify","modifyBladeburnerSP","modifyBladeburnerCycles","cycles","addAllChaos","setSkill","modifySkill","modifier","levelchange","AllSkills","resetSkill","AllContracts","contractTarget","setContract","modifyContractLevel","modifyContractCount","countchange","modifyContractSuccesses","successeschange","AllOperations","operationTarget","setOperation","modifyOperationLevel","modifyOperationCount","modifyOperationSuccesses","labelId","CodingContractsDev","codingcontract","setCodingcontract","cc","CompaniesDev","setCompanyName","modifyCompanyRep","modifyCompanyFavor","CorporationDev","modifyCorporationFunds","modifyCorporationCycles","EntropyDev","FactionsDev","setFactionName","modifyFactionRep","modifyFactionFavor","GangDev","modifyGangCycles","General","setError","corporationName","setCorporationName","gangFaction","setGangFaction","devMoney","setDevMoney","addMoney","ReferenceError","ThemeEvents","isHacking","checkForMessagesToSend","ProgramsDev","setProgram","SaveFileDev","importInput","saveFile","setSaveFile","restoreScripts","setRestoreScripts","restoreAugs","setRestoreAugs","restoreSFs","setRestoreSFs","File","FileReader","FileList","Blob","ii","startIcon","base64Save","saveObject","files","save","atob","SnackbarEvents","ToastVariant","ServersDev","setServer","hasAdminRights","sshPortOpen","ftpPortOpen","smtpPortOpen","httpPortOpen","sqlPortOpen","openPortCount","hackDifficulty","minDifficulty","SleevesDev","sleeveSetStoredCycles","shock","sync","validSFN","SourceFilesDev","setSF","sfN","sfLvl","setAllSF","StanekDev","modCycles","modCharge","StatsDev","modifyExp","modifyKarma","resetExperience","StockMarketDev","stockPrice","setStockPrice","stockSymbol","setStockSymbol","processStocks","sub","inputSymbols","symbol","SM","stock","Stock","stocks","cap","TimeSkip","timeskip","reload","ServerAccordion","file","allContentFiles","scope","FileDiagnosticModal","file0","file1","file2","file3","file4","file5","file6","file7","file8","file9","file10","file11","file12","file13","file14","file15","file16","file17","file18","file19","file20","file21","file22","file23","file24","file25","file26","file27","file28","file29","file30","file31","file32","file33","file34","file35","file36","file37","file38","Root","getPage","DocumentationRoot","history","useHistory","navigator","navigate","relPath","external","newPath","resolveFilePath","url","scrollTo","home","MD","initElectron","userAgent","getFiles","script","code","deleteFile","removeFile","hasScriptExtension","Buffer","overwritten","writeToScriptFile","getRamUsage","funcs","terminal","typesFn","bind","toast","duration","appNotifier","initAppNotifier","triggerSave","triggerGameExport","triggerScriptsExport","exportScripts","getSaveData","fileName","getSaveInfo","playerData","pushSaveData","automatic","appSaveFns","initSaveFunctions","bridge","electronBridge","receive","send","then","catch","initElectronBridge","pushGameSaved","pushGameReady","player","identifier","playtime","lastSave","game","version","hash","pushImportResult","wasImported","pushDisableRestore","Bypass","EditSaveFile","PrototypeTampering","TimeCompression","Unclickable","UndocumentedFunctionCall","RealityAlteration","N00dles","YoureNotMeantToAccessThis","TrueRecursion","INeedARainbow","exploit","sanitizeExploits","getComputedStyle","Element","applyExploit","startExploits","last","minute","timeCompression","LastExportBonus","onExport","facName","setLastExportBonus","unixTime","Faction","alreadyInvited","isBanned","FactionInfos","savedKeys","inviteToFaction","InvitationEvent","factionIndexes","__","factionInfo","enemy","enemies","hasAugmentationPrereqs","sing","hasPrereqs","txt","queuedAugmentation","processPassiveFactionRepGain","isFactionWork","favorMult","hRep","getHackingWorkRepGain","sRep","getFactionSecurityWorkRepGain","fRep","getFactionFieldWorkRepGain","getFactionAugmentationsFiltered","uniqueFilter","FactionInfo","infoText","offerFieldWork","offerSecurityWork","keep","keepOnInstall","special","assignment","buttonText","loadFactions","loadedFactions","loadedFactionName","loadedFaction","repFromDonation","repNeededToDonate","canDonate","donate","AugmentationsPage","filterText","setFilterText","factionAugs","useMemo","filteredFactionAugs","getAugs","switchSortOrder","newOrder","PurchaseAugmentationsOrderSetting","augName1","augName2","getAugsSortedByCost","getAugsSortedByReputation","canBuy","hasReq","hasRep","cantBuy","concat","getAugsSortedByPurchasable","getAugsSorted","purchasable","multiplierComponent","augmentationName","justifyItems","costs","showModal","CreateGangModal","combatGangText","hackingGangText","createGang","onKeyUp","DonateOption","favorToDonate","donateAmt","setDonateAmt","digits","Status","MainPage","onAugmentations","sleevesOpen","setSleevesOpen","startWork","isPlayersGang","canPurchaseSleeves","FactionWork","factionWorkType","FactionWorkType","startHackingContracts","startFieldWork","startSecurityWork","FactionRoot","InvitationsSeen","WorkTypesOffered","FactionElement","facInfo","augsLeft","joined","openFaction","openFactionAugPage","acceptInvitation","gridAutoFlow","formatFavor","FactionsRoot","useTheme","allFactions","allJoinedFactions","invitations","breakpoints","down","order","gridTemplateRows","gridAutoRows","GangButton","gangOpen","setGangOpen","enabled","noformat","DefaultAssignment","Info","Assignment","favorGain","InvitationModal","setFaction","Option","AutoexecInput","autoexec","setAutoexec","fullWidth","parseCommand","cmd","scriptPath","resolveScriptFilePath","minRam","formatRam","createTooltip","ConnectionBauble","connection","setConnection","isConnected","timer","GameOptionsPage","tabs","System","Interface","Gameplay","Misc","GameOptionsRoot","currentTab","setCurrentTab","setTab","export","forceKill","softReset","reactivateTutorial","SideBarTab","sideBarProps","tabName","GameOptionsSidebar","diagnosticOpen","setDiagnosticOpen","importSaveOpen","setImportSaveOpen","importData","setImportData","confirmResetOpen","setConfirmResetOpen","base64","confirmedImportGame","additionalButton","onTriggered","GameplayPage","InterfacePage","timestampFormat","setTimestampFormat","formatTime","MiscPage","NumericDisplayPage","locale","setLocale","FormatsNeedToChange","OptionsSlider","initialValue","_evt","onChangeCommitted","callback","valueLabelDisplay","marks","RemoteAPIPage","remoteFileApiPort","setRemoteFileApiPort","isRemoteFileApiConnectionLive","newRemoteFileApiConnection","SystemPage","execTime","setExecTime","recentScriptsSize","setRecentScriptsSize","logSize","setLogSize","portSize","setPortSize","terminalSize","setTerminalSize","autosaveInterval","setAutosaveInterval","resetGangs","loadAllGangs","Gang","members","wanted","respect","isHackingGang","respectGainRate","wantedGainRate","moneyGainRate","storedTerritoryAndPowerCycles","territoryClashChance","territoryWarfareEngaged","notifyMemberDeath","getPower","getTerritory","processGains","processExperienceGains","processTerritoryAndPowerGains","moneyGainPerCycle","wantedLevelGainPerCycle","respectGainsTotal","justice","member","earnRespect","calculateMoneyGain","calculateWantedLevelGain","getTask","baseWanted","oldWanted","newWanted","calculateTerritoryGain","winGang","loseGang","powerBonus","gangName","calculatePower","gainRoll","multiplicativeGain","powerMult","PowerMultiplier","additiveGain","gangs","g","others","thisGang","otherGang","thisPwr","thisChance","territoryGain","clash","gainExperience","baseDeathChance","task","modifiedDeathChance","killMember","canRecruitMember","respectForNextRecruit","exponent","getRecruitsAvailable","recruitMember","GangMember","getWantedPenalty","memberTotal","totalRespect","lostRespect","earnedRespect","ascendMember","ascend","getDiscount","discount","getAllTaskNames","GangMemberTasks","taskName","isCombat","getUpgradeCost","upg","hack_exp","str_exp","def_exp","dex_exp","agi_exp","cha_exp","hack_mult","str_mult","def_mult","dex_mult","agi_mult","cha_mult","hack_asc_points","str_asc_points","def_asc_points","dex_asc_points","agi_asc_points","cha_asc_points","calculateSkill","calculateAscensionMult","points","assignToTask","unassignFromTask","GangMemberTask","calculateRespectGain","gang","wantedLevel","expMult","difficultyPerCycles","weightDivisor","hackWeight","strWeight","defWeight","dexWeight","agiWeight","chaWeight","getGainedAscensionPoints","calculateAscensionPointsGain","canAscend","getCurrentAscensionMults","getAscensionMultsAfterAscend","getAscensionResults","postAscend","preAscend","GangMemberUpgrades","applyUpgrade","respectToDeduct","buyUpgrade","baseRespect","baseMoney","gangMemberTasksMetadata","GangMemberUpgrade","UpgradeType","FormatsHaveChanged","createDescription","gangMemberUpgradesMetadata","upgType","numFreeMembers","recruitThresholdBase","GangRespectToReputationRatio","MaximumGangMembers","CyclesPerTerritoryAndPowerUpdate","AscensionMultiplierRatio","Names","GangKarmaRequirement","minCyclesToProcess","maxCyclesToProcess","Weapon","Armor","Vehicle","Rootkit","calculateWantedPenalty","statWeight","territoryMult","territoryPenalty","respectMult","calc","AscensionModal","onAscend","useGang","formatRespect","formatPreciseMultiplier","CyclerPerSecond","bonusMillis","NextReveal","upgName","PurchasedUpgrade","dangerouslySetInnerHTML","__html","UpgradeButton","GangMemberUpgradePanel","currentCategory","setCurrentCategory","filterUpgrades","weaponUpgrades","armorUpgrades","vehicleUpgrades","rootkitUpgrades","augUpgrades","categories","Weapons","Vehicles","Rootkits","asc","EquipmentsSubpage","setFilter","GangMemberCard","GangMemberCardContent","openHelpModal","off","closeHelpModal","useBoolean","ascendOpen","openAscensionModal","closeAscensionModal","borderRightWidth","borderLeftWidth","onTaskChange","GangMemberList","ascendOnly","setAscendOnly","onRecruit","GangMemberStats","formatWanted","cellNone","GangRoot","GangStats","territoryStr","ManagementSubpage","RecruitButton","recruitsAvailable","respectNeeded","RecruitModal","recruit","TaskDescription","TaskSelector","currentTask","setCurrentTask","contextMember","tasks","TerritoryInfoModal","TerritorySubpage","gangNames","infoOpen","setInfoOpen","formatTerritory","OtherGangTerritory","playerPower","clashVictoryChance","calculateHackingChance","requiredHackingSkill","calculateHackingExpGain","calculatePercentMoneyHacked","percentMoneyHacked","calculateHackingTime","skillFactor","calculateGrowTime","calculateWeakenTime","baseCheck","fnName","netscriptCanHack","initialCheck","netscriptCanGrow","netscriptCanWeaken","purchaseHacknet","ITutorial","iTutorialSteps","iTutorialNextStep","numOwned","getCostOfNextHacknetServer","updateHashManagerCapacity","getCostOfNextHacknetNode","hasMaxNumberHacknetServers","calculateNodeCost","calculateServerCost","getMaxNumberLevelUpgrades","nodeObj","calculateLevelUpgradeCost","levelsToMax","getMaxNumberRamUpgrades","calculateRamUpgradeCost","log2","getMaxNumberCoreUpgrades","calculateCoreUpgradeCost","getMaxNumberCacheUpgrades","calculateCacheUpgradeCost","purchaseLevelUpgrade","levels","sanitizedLevels","isServer","upgradeLevel","purchaseRamUpgrade","upgradeRam","purchaseCoreUpgrade","upgradeCore","purchaseCacheUpgrade","upgradeCache","processHacknetEarnings","HashManager","hashes","ip","hserver","updateHashRate","wastedHashes","HashUpgrades","processAllHacknetServerEarnings","processSingleHacknetNodeEarnings","processAllHacknetNodeEarnings","totalEarnings","nodes","hashCapacity","purchaseHashUpgrade","upgTarget","changeMinimumSecurity","changeMaximumMoney","minMax","onlineTimeSeconds","totalMoneyGenerated","moneyGainRatePerSecond","updateMoneyGainRate","costMult","calculateMoneyGainRate","BaseServer","hashRate","totalHashesGenerated","createRandomIp","updateHashCapacity","updateRamUsed","calculateHashGainRate","ramUsed","toJSONBase","capacity","getMult","currLevel","getStudyMult","getTrainingMult","getUpgrade","getCost","updateCapacity","refundUpgrade","storeHashes","numHashes","newCap","HashUpgrade","costPerLevel","hasTargetServer","hasTargetCompany","effectText","collapsedSum","HashUpgradesMetadata","MoneyGainPerLevel","BaseCost","LevelBaseCost","RamBaseCost","CoreBaseCost","PurchaseNextMult","UpgradeLevelMult","UpgradeRamMult","UpgradeCoreMult","MaxLevel","MaxRam","MaxCores","HashesPerLevel","CacheBaseCost","PurchaseMult","UpgradeCacheMult","MaxServers","MaxCache","formatInt","startingLevel","extraLevels","totalMultiplier","startingRam","numUpgrades","currentRam","startingCore","sanitizedCores","coreBaseCost","currentCores","startingCores","startingCache","currentCache","GeneralInfo","HacknetNodeElem","purchaseMult","upgradeLevelButton","upgradeRAMButton","upgradeCoresButton","upgradeLevelCost","upgradeRamCost","upgradeCoreCost","HacknetRoot","purchaseCost","totalProduction","purchaseMultiplierOnClicks","H","onClicks","HacknetServerElem","upgradeRamButton","upgradeCacheButton","base_increase","modded_increase","upgradeCacheCost","serversMap","companiesMap","HacknetUpgradeElem","selectedServer","setSelectedServer","selectedCompany","setSelectedCompany","purchase","hashManager","serverType","ServerType","HashUpgradeModal","MultiplierButton","buttons","btnProps","PlayerInfo","hasServers","PurchaseButton","getHospitalizationCost","oldhp","calculateRawDiff","startingDifficulty","calculateDifficulty","startingSecurityLevel","calculateReward","xpMult","calculateSellInformationCashReward","levelBonus","calculateTradeInformationRepReward","calculateInfiltratorsRepReward","LocationsMetadata","infiltrationData","difficulties","Trivial","Normal","Hard","Impossible","BackwardGame","interpolate","answer","words","makeAnswer","setGuess","hasAugment","millis","onExpire","onFailure","pb","shiftKey","ctrlKey","altKey","ignorableKeyboardEvent","nextGuess","onSuccess","BlinkingCursor","setOn","BracketGame","right","setRight","options","generateLeftSide","char","getChar","BribeGame","choices","positive","option","negative","shuffleArray","makeChoices","correctIndex","setCorrectIndex","currentChoice","choice","defaultColor","disabledColor","upColor","downColor","choiceColor","upIndex","upDistance","downIndex","downDistance","onCorrectIndex","newIndex","upArrowSymbol","downArrowSymbol","CheatCodeGame","arrows","leftArrowSymbol","rightArrowSymbol","arrow","generateCode","getArrow","getInverseArrow","Countdown","setX","onFinish","Cyberpunk2077Game","grid","puzzle","randChar","generatePuzzle","answers","generateAnswers","currentAnswerIndex","setCurrentAnswerIndex","flatGrid","isCorrectAnswer","optionColor","idx","move","settings","out","lerpD","lerp","Stage","minigames","SlashGame","MinesweeperGame","WireCuttingGame","Game","setLevel","stage","setStage","results","setResults","gameIds","setGameIds","lastGames","setupNextGame","useCallback","ids","nextGameId","pushResult","Sell","automated","StartingDifficulty","stageComponent","Minigame","MiniGame","Difficulty","Reward","Progress","GameTimer","noPaper","ignoreAugment_WKSharmonizer","setV","totalMillis","intervalId","InfiltrationRoot","setStart","maxClearanceLevel","Location","cancel","arrowPart","repeat","Intro","KeyHandler","press","mines","minefield","field","generateEmptyField","generateMinefield","setAnswer","memoryPhase","setMemoryPhase","flagged","Boolean","marked","icon","flat","fieldEquals","phase","setPhase","setHasAugment","guardingTime","setGuardingTime","newDifficulty","timePreparing","timeGuarding","clearTimeout","Victory","quitInfiltration","isMemberOfInfiltrators","soa","infiltrationRepGain","wiresmin","wiresmax","rules","colorNames","blue","white","questions","setQuestions","wires","setWires","setTimer","cutWires","setCutWires","wiresToCut","setWiresToCut","gameDifficulty","gameWires","numWires","wireColors","wireType","generateWires","gameQuestions","numQuestions","questionGenerators","randomPositionQuestion","randomColorQuestion","generateQuestion","gameWiresToCut","wire","question","shouldCut","isCorrectWire","wireColor","wireNum","wireIndex","newWiresToCut","newCutWires","cutColor","currStep","Start","isRunning","stepIsDone","GoToCharacterPage","CharacterPage","CharacterGoToTerminalPage","TerminalIntro","TerminalHelp","TerminalLs","TerminalScan","TerminalScanAnalyze1","TerminalScanAnalyze2","TerminalConnect","TerminalAnalyze","TerminalNuke","TerminalManualHack","TerminalHackingMechanics","TerminalGoHome","TerminalCreateScript","TerminalTypeScript","TerminalFree","TerminalRunScript","TerminalGoToActiveScriptsPage","ActiveScriptsPage","ActiveScriptsToTerminal","TerminalTailScript","GoToHacknetNodesPage","HacknetNodesIntroduction","HacknetNodesGoToWorldPage","WorldDescription","DocumentationPageInfo","End","iTutorialStart","iTutorialEnd","ITutorialEvents","iTutorialPrevStep","Literature","asFilePath","litObj","Literatures","Cities","locations","asciiArt","addLocation","LocationName","LocationType","techVendorMaxRam","techVendorMinRam","Locations","constructLocation","ApplyToJobButton","entryPosType","getJobRequirementTooltip","GameType","CasinoLocation","setGame","updateGame","Coin","Slots","toLocation","LocationLetter","ASCIICity","locationLettersRegex","letterMap","A","D","E","F","G","K","M","N","P","Q","R","U","V","W","Y","lineElems","exec","startI","endI","locationI","ListCity","locationButtons","locName","LocationCity","CompanyLocation","quitOpen","setQuitOpen","jobTitle","companyPosition","isEmployedHere","CompanyWork","CoresButton","homeComputer","maxCores","GenericLocation","locContent","getLocationSpecificContent","serverMeta","serverMetadata","specialName","isBackdoorInstalled","GymLocation","train","ClassWork","classType","Classes","GymType","HospitalLocation","PurchaseServerModal","setHostname","tryToPurchaseServer","purchaseServer","RamButton","purchaseRamForHomeComputer","SlumsLocation","crimes","crime","doCrime","SpecialLocation","handleBladeburner","worldHeader","HTMLElement","CreateCorporation","handleCotMG","renderBladeburner","toStanek","renderCotMG","ServerButton","getPurchaseServerCost","TechVendorLocation","purchaseServerButtons","TorButton","darkweb","purchaseTorRouter","to","TravelAgencyRoot","destination","setDestination","startTravel","TravelConfirmationModal","UniversityLocation","take","dataStructuresCost","UniversityClassType","networksCost","algorithmsCost","managementCost","leadershipCost","earnHackingExpTooltip","earnCharismaExpTooltip","MessageFilename","Message","sendMessage","forced","showMessage","addMessageToServer","Messages","recvd","worldDaemon","allFactionAugs","factionAugName","Milestones","MilestonesRoot","milestones","highestMilestone","milestone","NSProxyHandler","memoed","ws","ns","tree","additionalData","__target","Reflect","ownKeys","getOwnPropertyDescriptor","__key","__attrs","TypeError","__receiver","ours","descriptor","arrayPath","functionPath","ctx","function","func","wrappedFunction","helpers","getRamCost","NSProxy","handler","Proxy","setRemovedFunctions","api","infos","replacement","replaceMsg","configurable","enumerable","Environment","stopFlag","runningFn","vars","string","positiveInteger","scriptArgs","runOptions","spawnOptions","threadOrOption","spawnDelay","argsToString","arg","nativeArg","toNative","stringify","makeBasicErrorMsg","makeRuntimeErrorMsg","resolveNetscriptRequestedThreads","requestedThreads","scriptRef","requestedThreadsAsInt","checkEnvFlags","env","ScriptDeath","killWorkerScript","checkSingularityAccess","netscriptDelay","reject","delay","delayReject","updateDynamicRam","ramCost","dynamicLoadedFns","dynamicRamUsage","RamCostConstants","getServer","scriptIdentifier","scriptID","_hostname","_args","pid","scriptname","manual","additionalMsec","requestedSec","hackingTime","canHack","formatThreads","hackChance","expGainedOnSuccess","expGainedOnFailure","percentHacked","maxThreadNeeded","moneyDrained","moneyGained","onlineMoneyMade","recordHack","onlineExpGained","fortify","influenceStockThroughServerHack","portNumber","_n","missingKey","isConnectedTo","organizationName","gangMember","gangTask","filePath","getRunningScript","ident","runningScript","findRunningScriptByPid","getRunningScriptByPid","getRunningScriptsByArgs","getCannotFindRunningScriptErrorMessage","arrayToString","createPublicRunningScript","logProps","tailProps","logs","offlineExpGained","offlineMoneyMade","offlineRunningTime","onlineRunningTime","tailProperties","isVisible","temporary","failOnHacknetServer","assertString","argName","debugType","assertObjectType","obj","desiredObject","objVal","clip","json","userFriendlyString","isScriptArgs","preventDuplicates","checkThreads","ramOverride","WorkerScript","scriptUrl","dependencies","RegExp","errstack","stack","caller","userstack","stackline","call","chromeCall","parseChromeStackline","firefoxCall","parseFirefoxStackline","rejectMsg","lineMatch","funcMatch","lio","lastIndexOf","expect","actual","findRunningScripts","handleUnknownError","initialText","errorMessage","headerText","SyntaxError","customElementKey","wrapUserNode","pidCounter","generateNextPid","tempCounter","found","resetPidCounter","Dom","CorporationInfo","CorporationAction","Max","Hack","HackAnalyze","Grow","GrowthAnalyze","Weaken","WeakenAnalyze","Scan","RecentScripts","PortProgram","Run","Exec","Spawn","Scp","Kill","HasRootAccess","GetHostname","GetHackingLevel","GetServerMaxRam","GetServerUsedRam","FileExists","IsRunning","HacknetNodes","HNUpgLevel","HNUpgRam","HNUpgCore","GetStock","BuySellStock","GetPurchaseServer","PurchaseServer","GetPurchasedServerLimit","GetPurchasedServerMaxRam","Round","ReadWrite","ArbScript","GetScript","GetRunningScript","GetHackTime","GetFavorToDonate","CodingContractBase","SleeveBase","ClearTerminalCost","GetMoneySourcesCost","SingularityFn1","SingularityFn2","SingularityFn3","GangApiBase","BladeburnerApiBase","StanekWidth","StanekHeight","StanekCharge","StanekFragmentDefinitions","StanekPlacedFragments","StanekClear","StanekCanPlace","StanekPlace","StanekFragmentAt","StanekDeleteAt","InfiltrationCalculateDifficulty","InfiltrationCalculateRewards","InfiltrationGetLocations","InfiltrationGetInfiltrations","StanekAcceptGift","SF4Cost","sf4","getConstants","hasWSEAccount","hasTIXAPIAccess","has4SData","has4SDataTIXAPI","getSymbols","getPrice","getOrganization","getAskPrice","getBidPrice","getPosition","getMaxShares","getPurchaseCost","getSaleGain","buyStock","sellStock","buyShort","sellShort","placeOrder","cancelOrder","getOrders","getVolatility","getForecast","purchase4SMarketData","purchase4SMarketDataTixApi","purchaseWseAccount","purchaseTixApi","universityCourse","gymWorkout","travelToCity","goToLocation","purchaseTor","purchaseProgram","getCurrentServer","getCompanyPositionInfo","getCompanyPositions","connect","manualHack","installBackdoor","getDarkwebProgramCost","getDarkwebPrograms","hospitalize","isBusy","stopAction","upgradeHomeRam","upgradeHomeCores","getUpgradeHomeRamCost","getUpgradeHomeCoresCost","workForCompany","applyToCompany","quitJob","getCompanyRep","getCompanyFavor","getCompanyFavorGain","checkFactionInvitations","workForFaction","getFactionRep","getFactionFavor","getFactionFavorGain","donateToFaction","createProgram","commitCrime","getCrimeChance","getCrimeStats","getOwnedAugmentations","getOwnedSourceFiles","getAugmentationFactions","getAugmentationsFromFaction","getAugmentationPrereq","getAugmentationPrice","getAugmentationBasePrice","getAugmentationRepReq","getAugmentationStats","isFocused","setFocus","exportGame","exportGameBonus","b1tflum3","destroyW0r1dD43m0n","getCurrentWork","inGang","getMemberNames","renameMember","getGangInformation","getOtherGangInformation","getMemberInformation","getTaskNames","getTaskStats","setMemberTask","getEquipmentNames","getEquipmentCost","getEquipmentType","getEquipmentStats","purchaseEquipment","getAscensionResult","setTerritoryWarfare","getChanceToWinClash","getBonusTime","inBladeburner","getContractNames","getOperationNames","getBlackOpNames","getBlackOpRank","getGeneralActionNames","getSkillNames","stopBladeburnerAction","getCurrentAction","getActionCurrentTime","getActionEstimatedSuccessChance","getActionRepGain","getActionCountRemaining","getActionMaxLevel","getActionCurrentLevel","getActionAutolevel","getActionSuccesses","setActionAutolevel","setActionLevel","getRank","getSkillPoints","getSkillLevel","getSkillUpgradeCost","getTeamSize","getCityEstimatedPopulation","getCityCommunities","getCityChaos","getCity","switchCity","getStamina","joinBladeburnerFaction","joinBladeburnerDivision","infiltration","getPossibleLocations","getInfiltration","getContractType","getNumTriesRemaining","createDummyContract","getContractTypes","getNumSleeves","setToIdle","setToShockRecovery","setToSynchronize","setToCommitCrime","setToUniversityCourse","setToCompanyWork","setToFactionWork","setToGymWorkout","getSleeve","getSleeveAugmentations","getSleevePurchasableAugs","purchaseSleeveAug","setToBladeburnerAction","getSleeveAugmentationPrice","getSleeveAugmentationRepReq","stanek","giftWidth","giftHeight","chargeFragment","fragmentDefinitions","activeFragments","clearGift","canPlaceFragment","placeFragment","getFragment","removeFragment","acceptGift","RamCosts","hasCorporation","getIndustryData","getMaterialData","createCorporation","hasUnlock","getUnlockCost","getUpgradeLevel","getUpgradeLevelCost","acceptInvestmentOffer","getCorporation","getDivision","expandIndustry","expandCity","levelUpgrade","buyBackShares","sellShares","setSmartSupply","setSmartSupplyOption","buyMaterial","getWarehouse","getProduct","getMaterial","setMaterialMarketTA1","setMaterialMarketTA2","setProductMarketTA1","setProductMarketTA2","exportMaterial","cancelExportMaterial","upgradeWarehouse","getUpgradeWarehouseCost","hasWarehouse","hireEmployee","upgradeOfficeSize","buyTea","hireAdVert","getOffice","getHireAdVertCost","getHireAdVertCount","getResearchCost","hasResearched","setAutoJobAssignment","getOfficeSizeUpgradeCost","hacknet","numNodes","purchaseNode","getPurchaseNodeCost","getNodeStats","getLevelUpgradeCost","getRamUpgradeCost","getCoreUpgradeCost","getCacheUpgradeCost","hashCost","spendHashes","maxNumNodes","getHashUpgrades","getHashUpgradeLevel","ui","getTheme","setTheme","resetTheme","getStyles","setStyles","resetStyles","getGameInfo","clearTerminal","windowSize","grafting","getAugmentationGraftPrice","getAugmentationGraftTime","getGraftableAugmentations","graftAugmentation","sprintf","vsprintf","scan","hackAnalyzeThreads","hackAnalyze","hackAnalyzeSecurity","hackAnalyzeChance","sleep","asleep","share","getSharePower","grow","growthAnalyze","growthAnalyzeSecurity","weaken","weakenAnalyze","print","printf","tprint","tprintf","clearLog","disableLog","enableLog","isLogEnabled","getScriptLogs","hasTorRouter","nuke","brutessh","ftpcrack","relaysmtp","httpworm","sqlinject","run","spawn","kill","killall","exit","atExit","scp","ls","ps","getRecentScripts","hasRootAccess","getHostname","getHackingLevel","getHackingMultipliers","getHacknetMultipliers","getServerMoneyAvailable","getServerSecurityLevel","getServerBaseSecurityLevel","getServerMinSecurityLevel","getServerRequiredHackingLevel","getServerMaxMoney","getServerGrowth","getServerNumPortsRequired","getServerMaxRam","getServerUsedRam","serverExists","fileExists","getPurchasedServerLimit","getPurchasedServerMaxRam","getPurchasedServerCost","getPurchasedServerUpgradeCost","upgradePurchasedServer","renamePurchasedServer","deleteServer","getPurchasedServers","write","tryWritePort","read","peek","writePort","readPort","getPortHandle","rm","scriptRunning","scriptKill","getScriptName","getScriptRam","getHackTime","getGrowTime","getWeakenTime","getTotalScriptIncome","getScriptIncome","getTotalScriptExpGain","getScriptExpGain","formatNumber","nFormat","tFormat","getTimeSinceLastAug","prompt","wget","getFavorToDonate","getPlayer","getMoneySources","mv","getResetInfo","getFunctionRamCost","tail","moveTail","resizeTail","closeTail","setTitle","clearPort","openDevMenu","alert","flags","bypass","alterReality","rainbow","heart","break","tprintRaw","printRaw","formulas","mockServer","mockPlayer","mockPerson","calculateFavorToRep","calculateRepToFavor","calculateExp","hackPercent","growPercent","growThreads","hackTime","growTime","weakenTime","hacknetNodes","levelUpgradeCost","ramUpgradeCost","coreUpgradeCost","hacknetNodeCost","constants","hacknetServers","hashGainRate","cacheUpgradeCost","hashUpgradeCost","hacknetServerCost","wantedPenalty","respectGain","wantedLevelGain","ascensionPointsGain","ascensionMultiplier","work","crimeSuccessChance","crimeGains","gymGains","universityGains","factionGains","companyGains","throwOnUndefined","branch","errorText","recentScripts","AddRecentScript","killedTime","unshift","timeOfDeath","prototype","disableLogs","loadedFns","output","runningScriptObj","nsFuncsGenerator","sanitizedPid","getScript","shouldLog","stopAndCleanUpWorkerScript","killWorkerScriptByPid","rs","byPid","runningScriptMap","scriptKey","roundToTwo","removeWorkerScript","enums","NetscriptSingularity","NetscriptGang","NetscriptBladeburner","NetscriptCodingContract","NetscriptSleeve","NetscriptCorporation","NetscriptStanek","NetscriptInfiltration","NetscriptUserInterface","NetscriptFormulas","NetscriptStockMarket","NetscriptGrafting","NetscriptHacknet","getServerOnNetwork","opts","optsValidator","_hackAmount","hackAmount","_threads","_time","host","moneyBefore","processSingleServerGrowth","moneyAfter","recordGrow","logGrowPercent","influenceStockThroughServerGrow","_host","_multiplier","_cores","isInteger","numCycleForGrowth","maxThreadsNeeded","numCycleForGrowthCorrected","coreBonus","weakenAmt","recordWeaken","end","StartSharing","finally","CalculateShareMult","_format","format","_fn","possibleLogs","LogBoxEvents","_x","_y","_pid","setPosition","_w","_h","w","setSize","LogBoxCloserEvents","numOpenPortsRequired","_scriptname","_thread_or_opt","runOpts","scriptServer","runScriptFromScript","killByPid","_safetyguard","safetyguard","scriptsKilled","_files","_destination","_source","source","destServer","sourceServer","lits","contentFiles","hasTextExtension","noFailures","contentFilePath","sourceContentFile","getContentFile","writeToContentFile","litFilePath","_substring","allFilenames","textFiles","processes","speed","growth","production","coreCost","levelCost","_lvl","serverGrowth","formatSecurity","_filename","hasContractExtension","lowerPath","programName","getPurchaseServerLimit","getPurchaseServerMaxRam","_ram","_name","hostnameStr","newServ","safelyCreateUniqueServer","createUniqueRandomIp","adminRights","AddToAllServers","_newName","newName","DeleteServer","_portNumber","_data","_mode","filepath","mode","existingScript","existingCode","writeToTextFile","existingTextFile","existingText","peekPort","_file","portHandle","suc","pattern","matchScriptPathExact","escapeRegExp","test","_fractionalDigits","_suffixStart","fractionalDigits","suffixStart","_multStart","multStart","deprecationWarning","numeral","_milliseconds","_milliPrecision","milliseconds","milliPrecision","_message","_variant","_duration","nsGetMember","_txt","_options","assert","objectAssert","stringAssert","validTypes","arrayAssert","PromptEvent","_url","_target","$","fail","cloneDeep","numPeopleKilled","jobs","entropy","properties","setDeprecatedProperties","playtimeSinceLastAug","playtimeSinceLastBitnode","bitNodeN","sinceInstall","sinceStart","sourcePath","destinationPath","deleteFromServer","lastAugReset","lastNodeReset","currentNode","ownedAugs","ownedSF","Flags","NetscriptExtra","NetscriptFunctions","getServerRam","fromEntries","getFunctionNames","prefix","functionNames","deprecatedWarningsGiven","checkBladeburnerAccess","getBladeburner","getBladeburnerActionObject","_blackOpName","blackOpName","_type","_level","_autoLevel","_skillName","_count","_size","_cityName","getCodingContract","getContract","answerStr","creward","removeContract","selfFund","materialName","checkAccess","warehouseAPI","_divisionName","_amt","_materialName","_productName","_price","_all","_enabled","_option","_designInvest","_marketingInvest","_qty","_sourceDivision","_sourceCity","_targetDivision","_targetCity","sourceDivision","_on","corpFunctions","_researchName","_job","_amount","totalNewEmployees","_position","_costPerEmployee","omit","_industryName","industryName","_unlockName","_upgradeName","_rate","getSafeDivision","dividendEarnings","_corporationName","_selfFund","_numShares","_factionName","_amountCash","amountCash","assignJob","getEmployee","getExpandCityCost","getExpandIndustryCost","getIndustryTypes","getMaterialNames","getPurchaseWarehouseCost","getResearchNames","getUnlockables","getUpgradeNames","devMenu","doc","completely_unused_field","real_document","recur","_guess","bcrypt","vargs","schema","numDashes","ret","libarg","argv","checkFormulasAccess","formulasFunctions","_favor","_rep","_player","_exp","_mult","_skill","_server","calculateServerGrowth","_targetMoney","targetMoney","startMoney","_startingLevel","_extraLevels","_costMult","_startingRam","_startingCore","_extraCores","extraCores","_ramUsed","_maxRam","HScalculateHashGainRate","HScalculateLevelUpgradeCost","HScalculateRamUpgradeCost","HScalculateCoreUpgradeCost","_startingCache","_extraCache","extraCache","HScalculateCacheUpgradeCost","_upgName","HScalculateServerCost","_gang","_member","_task","_points","_person","_crimeType","calculateCrimeWorkStats","_classType","_locationName","findEnumMember","locationName","calculateClassEarnings","_workType","workType","calculateFactionExp","calculateFactionRep","_companyName","_positionName","positionName","calculateCompanyWorkStats","classGains","getGang","getGangMember","_faction","_memberName","memberName","wantedLevelGainRate","cpy","hack_asc_mult","str_asc_mult","def_asc_mult","dex_asc_mult","agi_asc_mult","cha_asc_mult","recruited","_taskName","getGangTask","_equipName","equipName","equipment","typecheck","_engage","engage","_otherGang","checkGraftingAPIAccess","isValidGraftingAugName","getGraftingAvailableAugs","_augName","GraftableAugmentation","graftableAug","calculateGraftingTimeWithBonus","_focus","wasFocusing","craftableAug","GraftingWork","getHacknetNode","hi","_i","hasUpgraded","timeOnline","_upgTarget","getLocationsWithInfiltrations","filterTruthy","l","tradeRep","sellCash","SoARep","calculateInfiltrationData","runAfterReset","cbScript","RunningScript","startWorkerScript","singularityAPI","_purchased","purchased","_facName","_cbScript","_universityName","_className","universityName","_gymName","_stat","gymName","_programName","baseserver","installTime","wasWorking","salary","requiredSkills","wasFocused","_field","Programs","CreateProgramWork","crimeTime","crimeStatsWithMultipliers","_nextBN","nextBN","getAugmentationCost","checkSleeveAPIAccess","checkSleeveNumber","sleeveNumber","sleeveFunctions","_sleeveNumber","stopWork","shockRecovery","synchronize","takeUniversityCourse","isSleeveCompanyWork","isSleeveFactionWork","workoutAtGym","sl","APICopy","memory","purchasableAugs","findPurchasableAugs","tryBuyAugmentation","_action","_contract","isSleeveBladeburnerWork","getSleeveStats","getInformation","checkStanekAPIAccess","_rootX","_rootY","_rotation","_fragmentId","fragmentId","checkTixApiAccess","getStockFromSymbol","SymbolToStockMap","StockMarketConstants","StockSymbol","_symbol","playerShares","playerAvgPx","playerShortShares","playerAvgShortPx","maxShares","_shares","_posType","posType","sanitizedPosType","PositionType","getBuyTransactionCost","getSellTransactionGain","shortStock","_pos","orderType","orderPos","ltype","OrderType","lpos","orders","stockMarketOrders","StockMarket","orderBook","forecast","otlkMag","getStockMarket4SDataCost","getStockMarket4STixApiCost","getStockMarketWseCost","initStockMarket","getStockMarketTixApiCost","innerWidth","innerHeight","newTheme","hex","currentTheme","errors","newStyles","currentStyles","defaultTheme","defaultStyles","platform","defaultInterpreter","Interpreter","pseudoObj","class","arr","getProperty","hasProperty","config","import","moduleCache","cleanup","FinalizationRegistry","mapKey","deref","compile","mod","generateLoadedModule","module","addDependencyInfo","seenStack","dependents","dependent","ast","sourceType","ecmaVersion","ranges","importNodes","walk","ImportDeclaration","range","ExportNamedDeclaration","ExportAllDeclaration","newCode","importedScript","cachedMod","adjustedCode","URL","createObjectURL","invalidateModule","revokeObjectURL","LoadedModule","WeakRef","register","emptyPortData","getPort","port","NetscriptPorts","Port","resolvers","tryWrite","nextWrite","nextWritePort","full","isFullPort","empty","isEmptyPort","returnVal","prestigeWorkerScripts","startNetscript2Script","loadedModule","main","startNetscript1Script","errorToThrow","codeWithImports","codeLineOffset","importProcessingRes","allowReserved","generatedCode","hasImports","walksimple","scriptName","scriptAst","specifiers","namespace","local","fnNames","fnDeclarations","FunctionDeclaration","fnsToImport","lineOffset","linesRemoved","body","processNetscript1Imports","wrappedNS","interpreter","wrapNS1Layer","intLayer","nsLayer","wrapper","pseudoToNative","nativeToPseudo","setProperty","createAsyncFunction","more","ramAvailable","deferredError","createAndAddWorkerScript","runScript","updateOnlineScriptTimes","createAutoexec","loadAllRunningScripts","skipScriptLoad","rsList","savedScripts","scriptCalculateOfflineProduction","singleRamUsage","sharePower","CSM","oneValidCharacter","directoryRegexString","basicDirectoryRegex","isDirectoryPath","relativeRegex","isAbsolutePath","resolveDirectory","resolveValidatedDirectory","relative","absolute","relativeArray","absoluteArray","nextDir","directoryExistsOnServer","directory","scriptFilePath","textFilePath","getFirstDirectoryInPath","firstSlashIndex","getAllDirectories","dirSet","peel","lastSlashIndex","newDir","filenameRegexString","basicFilePathRegex","isFilePath","getFilenameOnly","getFileParts","groups","getBaseDirectory","pathParts","combinePath","removeDirectoryFromPath","getGlobbedFileMap","currentDir","charsToEscape","regex","hasProgramExtension","extension","asProgramFilePath","validScriptExtensions","extensionToAdd","resolveTextFilePath","calculateEntropy","stacks","nerf","antiLog","graftingIntBonus","GraftableAugmentations","gAugs","canGraft","AugPreReqsChecklist","GraftingRoot","graftableAugmentations","graftOpen","setGraftOpen","selectedAugmentation","m0","m1","Person","queuedAugmentations","gainHackingExp","personMethods","gainStrengthExp","gainDefenseExp","gainDexterityExp","gainAgilityExp","gainCharismaExp","gainIntelligenceExp","gainStats","ratio","tempStr","ignoreQueued","PlayerObject","currentServer","factionInvitations","has4SDataTixApi","hasTixApiAccess","hasWseAccount","moneySourceA","MoneySourceTracker","moneySourceB","purchasedServers","scriptProdSinceLastAug","sleeves","sleevesFromCovenant","sourceFiles","terminalCommandHistory","lastUpdate","init","generalMethods","workMethods","processWork","finishWork","applyForSoftwareJob","applyForSoftwareConsultantJob","applyForItJob","applyForSecurityEngineerJob","applyForNetworkEngineerJob","applyForBusinessJob","applyForBusinessConsultantJob","applyForSecurityJob","applyForAgentJob","applyForEmployeeJob","applyForPartTimeEmployeeJob","applyForWaiterJob","applyForPartTimeWaiterJob","applyForJob","canAccessBladeburner","bladeburnerMethods","canAccessCorporation","corporationMethods","canAccessGang","gangMethods","canAccessGrafting","canAfford","gainMoney","serverMethods","getGangFaction","getGangName","getHomeComputer","getNextCompanyPosition","gotoLocation","hasGangWith","hasProgram","isAwareOfGang","isQualified","loseMoney","reapplyAllAugmentations","reapplyAllSourceFiles","recordMoneySource","startBladeburner","startCorporation","startFocusing","startGang","giveExploit","giveAchievement","getCasinoWinnings","hasJob","createHacknetServer","queueAugmentation","receiveInvite","gainCodingContractReward","stopFocusing","calculateSkillProgress","checkForFactionInvitations","setBitNodeNumber","canAccessCotMG","sourceFileLvl","applyEntropy","augmentationMethods","focusPenalty","cyrb53","loadedJobName","setPlayer","corpName","t_homeComp","numSleeves","Sleeve","calculateSkillProgressF","record","getMember","nextPos","currCompany","currentPositionName","currentPosition","isCompanyWork","playerAug","applySourceFile","invitedFactions","numAugmentations","allCompanies","allPositions","checkMegacorpRequirements","bonus","illuminatiFac","daedalusFac","covenantFac","ecorpFac","megacorpFac","bachmanandassociatesFac","bladeindustriesFac","nwoFac","clarkeincorporatedFac","omnitekincorporatedFac","foursigmaFac","kuaigonginternationalFac","fulcrumsecrettechonologiesFac","fulcrumSecretServer","bitrunnersFac","bitrunnersServer","theblackhandFac","blackhandServer","nitesecFac","nitesecServer","chongqingFac","sector12Fac","newtokyoFac","aevumFac","ishimaFac","volhavenFac","speakersforthedeadFac","thedarkarmyFac","thesyndicateFac","silhouetteFac","tetradsFac","slumsnakesFac","netburnersFac","totalHacknetRam","totalHacknetCores","totalHacknetLevels","tiandihuiFac","cybersecFac","cybersecServer","specialFactions","gainPerFaction","achievementId","casino","finish","cancelled","suppressDialog","sleeveMethods","shockBonus","syncBonus","SleeveCrimeWork","getMemoryUpgradeCost","currCost","currMemory","installAugmentation","cyclesUsed","SleeveRecoveryWork","SleeveSynchroWork","ClassType","SleeveClassWork","newCity","upgradeMemory","SleeveCompanyWork","workTypeConversion","SleeveFactionWork","sanitizedStat","SleeveBladeburnerWork","SleeveInfiltrateWork","SleeveSupportWork","recruitmentSuccessChance","contractSuccessChance","bb","chances","MaxSleevesFromCovenant","BaseCostPerSleeve","availableAugs","isAvailableForSleeve","validMults","gangAugs","SleeveWorkType","SleeveWorkClass","cyclesWorked","actionType","cyclesNeeded","applySleeveGains","scaleWorkStats","isSleeveClassWork","calculateRates","isGym","getCompany","getGainRates","influenceStockThroughCompanyWork","invalidWork","isSleeveCrimeWork","getCrime","getExp","crimeWork","getExpRates","getReputationRate","getFaction","factionWork","infiltrateCycles","shockedStats","applyWorkStatsExp","CovenantPurchasesRoot","purchaseDisabled","upgradePanels","CovenantSleeveMemoryUpgrade","maxMemory","purchaseBtnDisabled","purchaseBtnContent","formatSleeveMemory","FAQModal","MoreStatsModal","SleeveAugmentationsModal","SleeveElem","statsOpen","setStatsOpen","augmentationsOpen","setAugmentationsOpen","abc","setABC","percentBar","getWorkDescription","SleeveRoot","FAQOpen","setFAQOpen","CYCLES_PER_SEC","StatsElement","formatHp","formatSleeveShock","formatSleeveSynchro","EarningsElement","rates","companyWork","universitySelectorOptions","gymSelectorOptions","bladeburnerSelectorOptions","possibleJobs","forbiddenCompanies","otherSleeve","possibleFactions","forbiddenFactions","factionObj","first","second","universities","gyms","possibleContracts","Synchronize","canDo","workNames","getABC","s0","setS0","setS1","setS2","validActions","detailsF","details","details2","detail","currentSkill","nextSkill","baseExperience","nextExperience","normalize","currentExperience","remainingExperience","experience","playerObj","loadPlayer","BitNode8StartingMoney","delayedDialog","maintainMembership","prestigeAllServers","prestigeHomeComputer","initForeignServers","LogBoxClearEvents","penalty","WorldDaemon","DaedalusServer","ProgramsSeen","isFlume","setMaxRam","deleteStockMarket","Program","getAvailableCreatePrograms","requireHackingLevel","targetServer","numAugReq","ProgramsRoot","prog","getHackingLevelRemaining","curCompletion","programFile","percComplete","getProgCompletion","newBitNode","bitNodeNumber","sourceFileKey","sourceFile","giveSourceFile","RFAMessage","jsonrpc","method","isFileData","pf","isFileLocation","isFileServer","errorMsg","RFARequestHandler","pushFile","fileData","getFile","getFileNames","fileNameList","getAllFiles","fileList","calculateRam","getDefinitionFile","libSource","Remote","ipaddr","stopConnection","close","startConnection","address","protocol","WebSocket","handleMessageEvent","response","readyState","BitburnerSaveObject","PlayerSave","AllServersSave","CompaniesSave","FactionsSave","AliasesSave","GlobalAliasesSave","StockMarketSave","SettingsSave","VersionSave","AllGangsSave","StaneksGiftSave","getSaveString","forceExcludeRunningScripts","originalExcludeSetting","saveAllServers","ExportBonus","btoa","unescape","encodeURIComponent","saveGame","emitToastEvent","savedOn","saveData","playerIdentifier","getSaveFileName","isRecovery","epochTime","download","importGame","getImportStringFromFile","reader","promise","onload","readAsText","newSave","parsedSave","ctor","importedPlayer","bitNodeLevel","__bn","convert","changes","loadGame","decodeURIComponent","escape","saveObj","loadAllServers","loadStockMarket","ver","anyPlayer","v1APIBreak","AwardNFG","resleeves","defaultMonacoTheme","v22PlayerBreak","ownedNFGs","newNFG","nfg","createProgramName","graft","graftAugmentationName","v2APIBreak","removePlayerFields","removeSleeveFields","anySleeve","lastNodeRest","oldCorp","anyExportsFailed","originalExports","originalExport","evaluateVersionCompatibility","createNewUpdateText","createElement","appendChild","removeChild","RamCalculationErrorCode","specialReferenceWHILE","memCheckGlobalKey","checkInfiniteLoop","missingAwaitLine","WhileStatement","st","walkDeeper","nodeHasTrueTest","hasAwait","AwaitExpression","calculateRamUsage","otherScripts","ns1","dependencyMap","completedParses","parseQueue","parseCode","moduleName","currentModule","globalKey","internalToExternal","additionalModules","addRef","objectPrototypeProperties","getOwnPropertyNames","commonVisitors","Identifier","DoWhileStatement","ForStatement","update","IfStatement","consequent","alternate","MemberExpression","object","property","importModuleName","spec","imported","declaration","specifier","exportedDepName","exported","parseOnlyCalculateDeps","initialModule","nextModule","errorCode","detailedCosts","unresolvedRefs","resolvedRefs","dep","findFunc","elem","refDetail","fnRam","parseOnlyRamCalculate","dataMap","logUpd","logEntry","displayLog","includedPropsNoTitle","Script","ramUsageEntries","ramCalculationError","updateRamUsage","ramCalc","timePassed","confidence","timesGrown","timesWeakened","CursorPositions","positions","saveCursor","getCursor","row","column","Editor","beforeMount","onMount","containerDiv","editorRef","subscription","useScriptEditorContext","monaco","automaticLayout","language","glyphMargin","onDidChangeModelContent","getValue","dispose","getModel","NoOpenScripts","OpenScript","lastPosition","model","isTxt","CURSOR_STYLES","CURSOR_BLINKING_MODES","OptionsModal","themeEditorOpen","openThemeEditor","closeThemeEditor","onThemeChange","onOptionChange","insertSpaces","tabSize","detectIndentation","wordWrap","vim","fontLigatures","cursorStyle","cursorBlinking","ScriptEditorContext","ScriptEditorContextProvider","setRAM","ramEntries","setRamEntries","isUpdatingRAM","startUpdatingRAM","finishUpdatingRAM","setOptions","Provider","updateRAM","entriesDisp","saveOptions","symbolsLoaded","apiKeys","SetupTextEditor","hiddenAPI","populate","apiLayer","apiKey","apiValue","openScripts","currentScript","decorations","regenerateModel","keydown","metaKey","stopPropagation","debouncedCodeParsing","debounce","createDecorationsCollection","awaitWarning","startLineNumber","startColumn","endLineNumber","endColumn","isWholeLine","glyphMarginClassName","glyphMarginHoverMessage","infLoop","saveScript","scriptToSave","cleanCode","ns2","currentTabIndex","openScript","onTabClick","curIndex","isDisposed","setModel","revealLineInCenter","lineNumber","VimStatus","useVimEditor","editor","onSave","onOpenNextTab","currIndex","onOpenPreviousTab","nextIndex","onTabClose","closingScript","savedScriptCode","wasCurrentScript","dirty","indexOffset","onTabUpdate","serverScriptCode","getServerCode","flex","jsLanguage","loader","tokenizer","token","loadThemes","sanitizeTheme","makeTheme","newScript","newPos","ScriptEditorRoot","tabIconHeight","Tab","provided","isExternal","onUpdate","colorProps","background","iconButtonStyle","tabRef","scrollIntoView","element","innerRef","draggableProps","dragHandleProps","flexShrink","onMouseDown","button","direction","Tabs","isSearchTooltipOpen","openSearchTooltip","closeSearchTooltip","searchExpanded","setSearchExpanded","filteredScripts","originalIndex","toggleSearch","handleScroll","scrollLeft","deltaY","onOpen","onDragEnd","reorder","droppableId","snapshot","droppableProps","isDraggingOver","onWheel","draggableId","disableInteractiveElementBlocking","ColorEditor","themePath","onColorChange","readOnly","hideTextfield","deferred","newColor","disableAlpha","ThemeEditorModal","onThemePropChange","prop","columns","multiline","maxRows","importedTheme","Toolbar","ramInfoOpen","openRAMInfo","closeRAMInfo","optionsOpen","openOptions","closeOptions","getAction","newOptions","updateOptions","inherit","common","accent","bg","fg","syntax","tag","entity","regexp","keyword","comment","constant","panel","selection","colorRegExp","themeKey","block","repairBlock","blockKey","blockValue","themeRules","foreground","themeColors","defineTheme","vimEditor","setVimEditor","vimStatusRef","actionsRef","openNextTab","openPreviousTab","MonacoVim","saveNQuit","_cm","context","serverData","startIndex","endIndex","removed","AllServers","isIPAddress","GetServerByHostname","ipserver","GetServerByIP","serverkey","ipExists","hostName","renameServer","networkLayers","toNumber","serverParams","maxRamExponent","literature","networkLayer","linkNetworkLayers","network1","selectServer","server1","server2","getRandomArrayItem","contractName","lodash","programIndex","litIndex","lit","contractIndex","existingPartialExeIndex","textPath","existingFile","newFile","TextFile","ctorName","runningScripts","rsArray","newDirectory","invalidScriptCount","oldScripts","newFilePath","invalidTextCount","oldTextFiles","textFile","oldName","createRandomString","realDifficulty","capDifficulty","softCap","aboveCap","ajdGrowthRate","serverGrowthPercentage","adjGrowthRate","exponentialBase","coreMultiplier","threadMultiplier","ey","bt","corr","bct","opc","fca","cca","oldMoneyAvailable","isValidNumber","hasBitflume","byPidMap","sanitizedRam","isPowerOfTwo","clz32","Home","FulcrumSecretTechnologies","CyberSecServer","NiteSecServer","TheBlackHandServer","BitRunnersServer","TheDarkArmyServer","DarkWeb","numServerGrowthCycles","growthRate","numServerGrowthCyclesAdjusted","ActiveScriptsServerPageSize","ActiveScriptsScriptPageSize","AutoexecScript","AutosaveInterval","CodeInstructionRunTime","DisableASCIIArt","DisableHotkeys","DisableTextEffects","DisableOverviewProgressBars","EnableBashHotkeys","EnableHistorySearch","TimestampsFormat","Locale","MaxRecentScriptsCapacity","MaxLogCapacity","MaxPortCapacity","MaxTerminalCapacity","RemoteFileApiPort","SaveGameOnFileSave","SuppressBuyAugmentationConfirmation","SuppressFactionInvites","SuppressMessages","SuppressTravelConfirmation","SuppressBladeburnerPopup","SuppressTIXPopup","SuppressSavedGameToast","SuppressAutosaveDisabledWarnings","UseIEC60027_2","ShowMiddleNullTimeUnit","ExcludeRunningScriptsFromSave","IsSidebarOpened","styles","overview","opened","EditorTheme","OwnedAugmentationsOrder","PurchaseAugmentationsOrder","MonacoTheme","MonacoInsertSpaces","MonacoTabSize","MonacoDetectIndentation","MonacoFontFamily","MonacoFontSize","MonacoFontLigatures","MonacoWordWrap","MonacoCursorStyle","MonacoCursorBlinking","hideTrailingDecimalZeros","hideThousandsSeparator","useEngineeringNotation","disableSuffixes","load","clickFnCache","WeakMap","getClickFn","toWrap","SidebarAccordion","sidebarOpen","key_","items","clickPage","flash","li_classes","listitem","timeout","active","clickFn","SidebarItem","memo","badgeContent","RotatedDoubleArrowIcon","__ref","openedMixin","transition","transitions","easing","sharp","enteringScreen","closedMixin","leavingScreen","up","Drawer","styled","MuiDrawer","shouldForwardProp","boxSizing","borderLeft","SidebarRoot","augmentationCount","invitationsCount","programCount","canOpenFactions","canOpenAugmentations","canOpenSleeves","canCorporation","canGang","canJob","canStockMarket","canBladeburner","canStaneksGift","isSimplePage","handleShortcuts","KEYCODE","toggleDrawer","ChevronOpenClose","ChevronLeftIcon","ChevronRightIcon","anchor","ComputerIcon","LastPageIcon","CreateIcon","StorageIcon","BugReportIcon","DeveloperBoardIcon","AccountBoxIcon","EqualizerIcon","ContactsIcon","AccountTreeIcon","PeopleAltIcon","PublicIcon","LocationCityIcon","AirplanemodeActiveIcon","WorkIcon","TrendingUpIcon","FormatBoldIcon","BusinessIcon","SportsMmaIcon","LiveHelpIcon","CheckIcon","HelpIcon","EmojiEventsIcon","SettingsIcon","SourceFile","bitnodeKey","bitnode","initSourceFiles","SourceFile1","SourceFile2","SourceFile3","SourceFile4","SourceFile5","SourceFile6","SourceFile7","SourceFile8","SourceFile9","SourceFile10","SourceFile11","SourceFile12","SourceFile13","sourceFileObject","incMult","decMult","totalPrice","origTotal","newTotal","processTransactionForecastMovement","rerenderFn","resultTxt","netProfit","origCost","Order","typ","invalidArgs","processOrders","refs","stockMarket","Orders","stockOrders","executeOrder","symbolToStockMap","isBuy","moneyHacked","orgName","percTotalMoneyHacked","changeForecastForecast","otlkMagForecast","moneyGrown","percTotalMoneyGrown","performanceMult","cyclesOfWork","compName","defaultConstructorParams","initPrice","marketCap","spreadPerc","shareTxForMovement","divisor","lastPrice","getAbsoluteForecast","shareTxUntilMovement","totalSharesUnrounded","newff","changePrice","cycleForecast","changeAmt","increaseChance","getForecastIncreaseChance","cycleForecastForecast","flipForecastForecast","influenceForecast","influenceForecastForecast","ticksUntilCycle","stk","processOrderRefs","orderTxt","stockName","InitStockMetadata","initSymbolToStockMap","stockMarketCycle","cyclesPerStockUpdate","processStockPrices","timeNow","av","chc","otlkMagChange","forecastChangePerPriceMovement","firstShares","remainingShares","numIterations","forecastChange","forecastForecastChange","calculateBuyMaxAmount","isLong","remainingMoney","currPrice","msPerStockUpdate","msPerStockUpdateMin","TicksPerCycle","WSEAccountCost","TIXAPICost","MarketData4SCost","MarketDataTixApi4SCost","StockMarketCommission","TickerHeaderFormatData","longestName","longestSymbol","Purchase4SMarketDataTixApiAccessButton","PurchaseWseAccountButton","PurchaseTixApiAccessButton","Purchase4SMarketDataButton","InfoAndPurchases","PlaceOrderModal","placeText","StockMarketRoot","SelectorOrderType","StockTicker","setOrderType","Market","tickerOpen","setTicketOpen","modalProps","setModalProps","getQuantity","hasOrderAccess","Limit","Stop","rerenderAllTickers","getBuyTransactionCostContent","getSellTransactionCostContent","playerMoney","localesWithLongPriceFormat","StockTickerHeaderText","stockPriceFormat","spacesAllottedForStockPrice","spacesAfterStockName","spacesBeforePrice","hdrText","plusOrMinus","StockTickerOrder","posTxt","StockTickerOrderList","o","LongPosition","percentageGains","ShortPosition","StockTickerPositionText","StockTickerTxButton","StockTickers","tickerDisplayMode","setTickerDisplayMode","TickerDisplayMode","watchlistSymbols","setWatchlistSymbols","tickers","stockMarketProp","changeDisplayMode","changeWatchlistFilter","sanitizedWatchlist","DisplayModeButton","Portfolio","StockTickersConfig","TTerminal","TerminalHelpText","TemplatedHelpTexts","HelpTexts","analyze","backdoor","cat","check","cp","expr","free","lscpu","mem","nano","sudov","top","unalias","Output","RawOutput","Link","dashes","TTimer","timeLeft","parseArg","argAsNumber","splitCommands","commandsText","parseCommands","commandArgs","commandHistory","commandHistoryIndex","outputHistory","contractOpen","currDir","finishAction","append","TerminalEvents","startHack","startGrow","startWeaken","startBackdoor","startAnalyze","finishHack","oldSec","newSec","finishGrow","finishWeaken","finishBackdoor","finishAnalyze","currServ","isHacknet","org","canRunScripts","hackingSkill","security","hackingChance","numPort","getProgressText","getTextFile","getLitFile","getFilepath","useAbsolute","getDirectory","cwd","setcwd","dir","contractPath","executeScanAnalyzeCommand","ignoreServer","printOutput","titlePrefix","infoPrefix","hasRoot","connectToServer","executeCommands","allCommands","executeCommand","TerminalClearEvents","n00dlesServ","commandName","scananalyze","changelog","apr1","Apr1Events","normalServer","relative_filename","userInput","targetDir","newNs2Template","commonEditor","sourceFilePath","destinationInput","destFilePath","destDirectory","zip","JSZip","zipFn","generateAsync","FileSaver","sanitizedExpr","used","avail","maxLength","usedPercent","padStart","killed","incorrectUsage","baseDirectory","allPrograms","allScripts","allTextFiles","allContracts","allMessages","folders","handlePath","dest","parsedPath","firstParentDir","scriptFilename","txtFilename","msgOrLit","SegmentGrid","segmentGrid","colSize","ClickableScriptLink","link","textDecorationLine","warning","fullPath","ClickableMessageLink","FileType","postSegments","segmentElements","segments","segment","Folder","group","numThreads","verboseEntries","matchScriptPathUnanchored","rsObj","delTarget","runProgram","programLowered","realProgramName","runArgs","permissive","tailFlag","maxHostname","maxIP","destHostname","filenames","rawName","scriptTxt","threadsTxt","headers","currRunningScripts","numSpacesScript","spacesScript","numSpacesPid","spacesPid","numSpacesThread","spacesThread","gameCommands","getTabCompletionPossibilities","terminalText","baseDir","currentText","valueWithoutCurrent","commandLength","requiredMatch","pathingRequiredMatch","relativeDir","slashIndex","possibilities","addGeneric","iterable","usePathing","ignoreCurrent","requiredStart","addAliases","addGlobalAliases","addCommands","addDarkwebItems","addServerNames","addScripts","addTextFiles","addCodingContracts","addLiterature","addMessages","addReachableServerNames","addPrograms","addDirectories","onCommand","onFirstCommandArg","scriptAutocomplete","inputCopy","autocomplete","flagFunc","autocompleteData","txts","pos2","TerminalActionTimer","backgroundprimary","bottom","pointerEvents","TerminalInput","terminalInput","postUpdateValue","setPostUpdateValue","setPossibilities","searchResults","setSearchResults","searchResultsIndex","setSearchResultsIndex","autofilledValue","setAutofilledValue","saveValue","postUpdate","resetSearch","isAutofilled","modifyInput","inputLength","selectionStart","inputText","delStart","setSelectionRange","moveTextCursor","keyDown","autoComplete","onBlur","longestMatch","longestCommonStart","newResults","selectionEnd","anchorEl","placement","paragraph","prefixLength","getSearchSuggestionPrespace","overflowWrap","TerminalRoot","setKey","doScroll","hook","debounced","maxWait","unsubscribe","scrollId","show","predefined","getPredefinedThemes","Theme","credit","reference","screenshot","primarylight","primarydark","successlight","successdark","errorlight","errordark","secondarylight","secondarydark","warninglight","warningdark","infolight","infodark","welllight","well","combat","StyleEditorButton","styleEditorOpen","setStyleEditorOpen","FontFamilyField","setErrorText","setFontFamily","LineHeightField","setLineHeight","StyleEditorModal","customStyle","setCustomStyle","persistToSettings","endIcon","refreshTheme","createTheme","light","dark","default","paper","typography","textTransform","components","MuiInputBase","styleOverrides","MuiInput","borderBottomColor","underline","MuiInputLabel","MuiButtonGroup","MuiButton","MuiSelect","defaultProps","MuiTextField","MuiTypography","MuiMenu","MuiMenuItem","MuiAccordionSummary","MuiAccordionDetails","MuiIconButton","MuiTooltip","disableInteractive","MuiSlider","valueLabel","scrollbarWidth","paperAnchorDockedLeft","MuiDivider","MuiFormControlLabel","MuiSwitch","switchBase","track","MuiPaper","MuiTablePagination","select","selectLabel","displayedRows","MuiTab","textColorPrimary","MuiTabs","TabIndicatorProps","MuiAlert","standardSuccess","standardError","standardWarning","standardInfo","TTheme","injectFirst","previousScrollY","ThemeBrowser","modalOpen","setModalOpen","modalImageSrc","setModalImageSrc","predefinedThemes","themes","templateTheme","onActivated","scrollY","previousColors","onImageClick","handleZoom","requestAnimationFrame","ThemeCollaborate","ThemeEditorButton","setThemeEditorOpen","customTheme","setCustomTheme","ThemeEntry","subheader","image","borderTop","opt_initFunc","sourceCode","sourceCodeLineOffset","acorn","PARSE_OPTIONS","initFunc_","paused_","polyfills_","functionCounter_","stepFunctions_","stepMatch","methodName","createScope","stripLocations_","State","done","stateStack","nodeConstructor","READONLY_DESCRIPTOR","writable","NONENUMERABLE_DESCRIPTOR","READONLY_NONENUMERABLE_DESCRIPTOR","VARIABLE_DESCRIPTOR","STEP_ERROR","SCOPE_REFERENCE","VALUE_IN_DESCRIPTOR","toStringCycles_","getErrorLineNumber","getErrorLineNumberMessage","appendCode","populateScope_","initGlobalScope","OBJECT_PROTO","FUNCTION_PROTO","initFunction","initObject","proto","OBJECT","initArray","initString","initBoolean","initNumber","initDate","initRegExp","initError","initMath","initJSON","thisInterpreter","createNativeFunction","EvalError","strFunctions","decodeURI","nativeFunc","throwException","URI_ERROR","FUNCTION","ARRAY","ARRAY_PROTO","REGEXP","REGEXP_PROTO","DATE","DATE_PROTO","identifierRegexp","var_args","calledWithNew","newFunc","createObjectProto","arguments","argsStr","SYNTAX_ERROR","parentScope","boxThis","isObject","getScope","strict","box","getPrototype","thisArg","func_","funcThis_","arguments_","arrayPseudoToNative","TYPE_ERROR","doneExec_","setNativeFunctionPrototype","valueOf","throwIfNullUndefined","arrayNativeToPseudo","preventExtensions","getter","setter","hasValue","pseudoDescriptor","hasOwnProperty","propertyIsEnumerable","newArray","legalArrayLength","RANGE_ERROR","apply","howmany","opt_begin","opt_end","opt_separator","iLength","isa","jLength","searchElement","opt_fromIndex","STRING","fromCharCode","functions","compareString","locales","separator","jsList","search","newSubstr","BOOLEAN","NUMBER","numConsts","fractionDigits","ERROR","precision","toPrecision","radix","Function","UTC","rgx","populateRegExp","lastIndex","opt_message","newError","createObject","createErrorSubclass","EVAL_ERROR","REFERENCE_ERROR","myMath","mathConsts","numFunctions","myJSON","nativeObj","child","legalArrayIndex","Value","strs","pseudoRegexp","nativeRegexp","ignoreCase","createFunction","opt_constructor","illegalConstructor","asyncFunc","pseudoDate","opt_cycles","pseudo","native","nativeArray","pseudoArray","lineNum","isGetter","opt_descriptor","defObj","firstNode","expression","createSpecialScope","opt_scope","getValueFromScope","prevNode","setValueToScope","nodeClass","isConstructor","Completion","NORMAL","BREAK","CONTINUE","RETURN","THROW","errorClass","lineNumErrorMsg","unwind","lineNumberMsg","cv","labels","isLoop","isSwitch","realError","errorTable","RangeError","URIError","createGetter_","funcThis","doneCallee_","doneArgs_","createSetter_","elements","n_","array_","doneLeft_","doneRight_","leftReference_","doneGetter_","leftValue_","leftValue","doneSetter_","setterValue_","rightValue","directEval_","funcNode","paramName","paramValue","argsList","evalNode","argsWithCallback","done_","throwValue","mode_","test_","doneInit_","doneObject_","variable_","object_","visited_","name_","gotPropName","props_","doneVariable_","doneProperty_","properties_","kinds","switchValue_","defaultCase_","index_","switchCase","matched_","tested_","doneBlock_","doneHandler_","doneFinalizer_","leftSide_","changeValue","returnValue","declarations","declarationNode","init_","doneBody_","Color","hueRotate","angle","PI","sin","cos","multiply","grayscale","sepia","saturate","matrix","newR","newG","newB","brightness","linear","contrast","slope","intercept","invert","hsl","Solver","targetHSL","reusedColor","solve","solveNarrow","solveWide","css","best","initial","spsa","wide","A1","iters","bestLoss","deltas","highArgs","lowArgs","ck","lossDiff","ak","fix","filters","colorHSL","fmt","rgb","hexToRgb","enumObj","valueFunction","setupUncaughtPromiseHandler","reason","youAreCurrently","earnings","WorkType","Work","getClass","calculateClassEarningsRate","applyWorkStats","sumWorkStats","classWork","focusBonus","unitCompleted","unitNeeded","getProgram","reqLvl","incompleteName","isCrimeWork","gameCPS","FactionWorkStats","multWorkStats","classs","hashMult","bn11Mult","jobPerformance","isGraftingWork","w0","w1","scaleMoney","workStats","expStats","moneyMult","repMult","removeBracketsFromArrayString","strCpy","removeQuotesFromString","convert2DArrayToString","ans","nums","ways","maxLen","spiral","col","playerAns","_arr","reach","jumps","lastJump","jumpedFrom","intervals","numIntervals","sanitizedResult","sanitizedAns","ansArr","ipInAns","maxCur","maxSoFar","hold1","MIN_SAFE_INTEGER","hold2","release1","release2","prices","hold","rele","cur","createTriangleRecurse","numLevels","numSpaces","triangle","dp","numRows","numColumns","currentRow","gridString","obstacleGrid","dstY","dstX","minPathLength","distanceFactor","distance","MinHeap","validPosition","yN","xN","changeWeight","yQ","xQ","ansX","ansY","chars","roll","dfs","pair","sanitizedPlayerAnsArr","resultInAnswer","numDigits","digitsArray","sanitizedPlayerAns","helper","multed","HammingEncode","_alteredBit","_buildArray","HammingEncodeProperly","_randomIndex","HammingDecode","edges","vertexShuffler","neighbourhood","vertex","adjLeft","adjRight","coloring","initialVertex","frontier","validColors","aColor","bColor","plaintext","plain","comprGenChar","ans_plain","run_length","compressed","comprLZEncode","comprLZGenerate","compr","comprLZDecode","getDB","indexedDB","indexedDbRequest","onupgradeneeded","createObjectStore","onerror","onsuccess","db","transaction","objectStore","request","put","deleteGame","_lastUpdate","decrementAllCounters","checkCounters","Counters","autoSaveCounter","updateSkillLevelsCounter","updateDisplays","updateDisplaysLong","updateActiveScriptsDisplay","createProgramNotifications","augmentationsNotifications","passiveFactionGrowth","mechanicProcess","contractGeneration","achievementsCounter","counterName","counter","warningToast","warnAutosaveDisabled","randFaction","adjustedCycles","timeOffline","numCyclesOffline","contractChancesWhileOffline","numContracts","offlineReputation","offlineHackingIncome","offlineProductionFromHacknetNodes","hacknetProdInfo","timeOfflineString","_thisUpdate","__COMMIT_HASH__","globalThis","ReactDOM","onbeforeunload","ActiveScriptsRoot","noborder","RecentScriptAccordion","recentScript","onlineMps","onlineEps","RecentScriptsPage","ScriptProduction","prodRateSinceLastAug","paddedName","barOptions","headerTxt","ServerAccordionContent","rowsPerPage","setRowsPerPage","rowsPerPageOptions","onPageChange","newPage","onRowsPerPageChange","ActionsComponent","TablePaginationActionsAll","dense","ServerAccordions","serverToScriptMap","filtered","paddingTop","WorkerScriptAccordion","killScript","frames","Apr1","getMonth","getDate","isApr1","allow","EmployersModal","MultiplierTable","noMargin","effValue","CurrentBitNode","MoneyModal","convertMoneySourceTrackerToString","parts","hacknet_expenses","hospitalization","CharacterStats","moneyOpen","setMoneyOpen","employersOpen","setEmployersOpen","timeRows","showBitNodeMults","ButtonWithTooltip","tooltipProps","CustomBoundary","componentDidCatch","ErrorBoundary","hasError","errorInfo","errorData","getErrorForDisplay","ex","resetError","htmlLocation","isInitialized","allowRouting","toPage","back","GameRoot","pages","setPages","RecoveryMode","pageWithContext","errorBoundaryKey","setErrorBoundaryKey","allowRoutingCalls","setAllowRoutingCalls","killAllScripts","attemptedForbiddenRouting","setNextPage","mainPage","withSidebar","withPopups","bypassGame","importString","parentOpen","killScripts","InteractiveTutorialRoot","tutorialScriptName","contents","canNext","LoadingScreen","setShow","loaded","setLoaded","ActivateRecoveryMode","doLoad","h1","h2","h3","h4","h5","h6","pre","Pre","li","th","Th","td","Td","table","thead","TableHead","tr","blockquote","Blockquote","remarkPlugins","remarkGfm","useNavigator","rel","textDecoration","paddingLeft","paddingRight","InlineCode","BigCode","inline","borderLeftColor","borderLeftStyle","ordered","fixAlign","ANSI_ESCAPE","lineClass","ANSIITypography","matchAll","stopIndex","partText","part","ansiCodeStyle","COLOR_MAP_BRIGHT","COLOR_MAP_DARK","ansi2rgb","codeParts","startIdx","ir","ig","ib","grey","codePart","extra","colorString","AlertManager","alerts","setAlerts","sha256","getMessageHash","handle","BypassWrapper","OverviewEventEmitter","valUpdaters","HP","Money","Str","Def","Dex","Agi","Cha","Int","formattedVals","formatSkill","skillMultUpdaters","skillNameMap","SkillBar","setProgress","Val","setVal","DataRow","showBar","cellType","skillBar","CharacterOverview","killOpen","setKillOpen","hasIntelligence","setHasIntelligence","showBars","setShowBars","emit","BladeburnerText","ActionText","onClickFocusWork","WorkInProgressOverview","header","workCell","workHeader","workSubtitles","innerText","CinematicLine","setLength","setDone","newLength","advance","CinematicText","setI","newI","CodingContractModal","contractType","sortedCompanies","CompanyDropdown","companies","ConfirmationModal","CopyableText","copyText","execCommand","CorruptableText","setContent","timers","randFrom","randomize","timerId","DeleteGameButton","modalOpened","setModalOpened","html","Navigator","defaultPage","HistoryContext","HistoryProvider","setHistory","onPush","onPop","onHome","Favor","HashRate","formatHashes","Hashes","ComparisonIcon","isBetter","skillTitle","playerSkills","initialAutosave","ImportSave","currentData","setCurrentData","isImportModalOpen","openImportModal","closeImportModal","isSkillsExpanded","toggle","toggleSkillsExpand","headback","setHeadback","dataBeingImported","dataCurrentlyInGame","fetchData","importSkill","KillScriptsModal","layerCounter","LogBoxProperties","rootRef","updateDOM","LogBoxManager","closePid","LogWindow","titleButton","logBoxBaseZIndex","draggableRef","textArea","propsRef","minimized","setMinimized","updateLayer","zIndex","baseScript","minimize","onWindowResize","isOnScreen","bounds","getBoundingClientRect","outerWidth","minConstraints","onDrag","MouseEvent","clientX","clientY","flexFlow","ResizableBox","onResize","title_str","onTouchEnd","Range","setStartBefore","setEndAfter","getSelection","removeAllRanges","addRange","modal","boxShadow","closeButton","Modal","disableRestoreFocus","disableScrollLock","disableEnforceFocus","disableAutoFocus","closeAfterTransition","inert","MoneyRate","NumberInput","textProps","parseBigNumber","OptionSwitch","overviewContainer","visibilityToggle","collapse","setY","CurrentIcon","KeyboardArrowUpIcon","KeyboardArrowDownIcon","LeftIcon","SchoolIcon","fakeDrag","triggerMouseEvent","eventType","clickEvent","createEvent","initEvent","dispatchEvent","onStop","defaultPosition","onDoubleClick","ProgressBar","withStyles","bar","LinearProgress","PromptManager","setPrompt","PromptMenuText","PromptMenuSelect","PromptContent","PromptMenuBoolean","submit","onInput","getItems","RecoveryRoot","issueUrl","newIssueUrl","Reputation","ReputationRate","All","Foreign","Owned","Purchased","ServerDropdown","isValidServer","snackbar","SnackbarProvider","maxSnack","anchorOrigin","horizontal","vertical","autoHideDuration","containerRoot","Snackbar","enqueueSnackbar","closeSnackbar","useSnackbar","severity","SoftResetButton","noConfirmation","StaticModal","StatsProgressBar","StatsProgressOverviewCell","StatsRow","StatsTable","MuiTable","Table","noWrap","small","WorldMap","autoRerenderTime","intervalID","SimplePage","ComplexPage","simplePages","ExpRows","WorkInProgressRoot","workInfo","stopText","completion","unfocus","elapsed","stopTooltip","graftWork","comp","companyRep","tooltipInfo","numberSuffixList","numberExpList","ramLog1000Suffixes","ramLog1024Suffixes","basicFormatter","exponentialFormatter","ramSuffixList","ramExpList","ramLogFn","ramLogDivisor","digitFormats","percentFormats","makeFormatter","otherOptions","useGrouping","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","getFormatter","formatList","nAbs","at","suffixIndex","formatExponential","toLocaleLowerCase","log10","notation","cur_state","new_state","new_offset","tmp_state","literal_length","backref_length","backref_offset","EnumHelper","defaultArgName","valueArray","valueSet","fuzzMap","toValidate","allowableValues","alwaysMatch","enumHelpers","allEnums","enumName","GameEnv","Platform","isElectron","Production","toDisplay","cookiesEnabled","cookieEnabled","doNotTrack","indexedDb","Steam","Browser","environment","getErrorMetadata","Development","componentStack","uuidv4","subscribers","uuid","enc","data_bits","parity","bits","bit","BinHeap","heapifyUp","heapifyDown","predicate","heapOrderABeforeB","toSwap","weightA","weightB","getRandomByte","_key","isReviverValue","fromJSON","validationData","validateObject","showMilli","negFlag","millisecondsPerSecond","secondPerMinute","minutesPerHours","secondPerHours","hoursPerDays","secondPerDay","totalSeconds","days","secTruncDays","hours","secTruncHours","minutes","secTruncMinutes","milliTruncSec","strings","a1","a2","ch","v2ModalOpen","openV2Modal","V2Modal","validator","paramValidator","expFac","linearFac","vals","n00dlePower","midpoint","derived","bars","lowerValue","modifications","newObj","keySet","addedKeys","upper","lower","formattedHours","getHours","formattedMinutes","getMinutes","formattedSeconds","getSeconds","decimal","assertFn","msgFn","getFriendlyType","detect","hasChanges","orig","nf","fl","oldFilename","getPlayerFields","matchJS","matchScript","offenders","processScript","formatRules","formatOffenders","fileline","rule","__webpack_module_cache__","leafPrototypes","getProto","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","chunkIds","priority","notFulfilled","__esModule","getPrototypeOf","definition","Symbol","toStringTag","nmd","paths","importScripts","getElementsByTagName","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file